From 3d15746c581147e92f0056e4253bce2767ed05d9 Mon Sep 17 00:00:00 2001 From: Jose Felix Date: Thu, 6 Jun 2024 13:44:24 -0500 Subject: [PATCH] feat: add skip, and squid external url generator --- packages/bridge/src/axelar/utils.ts | 17 +++++++++++++++++ packages/bridge/src/interface.ts | 23 +++++++++++++++++++++++ packages/bridge/src/skip/utils.ts | 16 ++++++++++++++++ packages/bridge/src/squid/utils.ts | 20 ++++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 packages/bridge/src/axelar/utils.ts create mode 100644 packages/bridge/src/skip/utils.ts create mode 100644 packages/bridge/src/squid/utils.ts diff --git a/packages/bridge/src/axelar/utils.ts b/packages/bridge/src/axelar/utils.ts new file mode 100644 index 00000000000..628f554bf24 --- /dev/null +++ b/packages/bridge/src/axelar/utils.ts @@ -0,0 +1,17 @@ +import { GetBridgeExternalUrlParams } from "../interface"; + +// https://satellite.money/?source=ethereum&destination=osmosis&asset_denom=uusdc +export function getAxelarExternalUrl({ + fromChain, + toChain, + fromAsset, + toAsset, +}: GetBridgeExternalUrlParams): string { + const url = new URL("https://satellite.money/"); + url.searchParams.set("src_chain", String(fromChain.chainId)); + url.searchParams.set("src_asset", fromAsset.address); + url.searchParams.set("dest_chain", String(toChain.chainId)); + url.searchParams.set("dest_asset", toAsset.address); + + return url.toString(); +} diff --git a/packages/bridge/src/interface.ts b/packages/bridge/src/interface.ts index bf30d3fa03e..1b40dd65604 100644 --- a/packages/bridge/src/interface.ts +++ b/packages/bridge/src/interface.ts @@ -140,6 +140,29 @@ export interface GetDepositAddressParams { autoUnwrapIntoNative?: boolean; } +export const getBridgeExternalUrlSchema = z.object({ + /** + * The originating chain information. + */ + fromChain: bridgeChainSchema, + /** + * The destination chain information. + */ + toChain: bridgeChainSchema, + /** + * The asset on the originating chain. + */ + fromAsset: bridgeAssetSchema, + /** + * The asset on the destination chain. + */ + toAsset: bridgeAssetSchema, +}); + +export type GetBridgeExternalUrlParams = z.infer< + typeof getBridgeExternalUrlSchema +>; + export const getBridgeQuoteSchema = z.object({ /** * The originating chain information. diff --git a/packages/bridge/src/skip/utils.ts b/packages/bridge/src/skip/utils.ts new file mode 100644 index 00000000000..22dc119702a --- /dev/null +++ b/packages/bridge/src/skip/utils.ts @@ -0,0 +1,16 @@ +import { GetBridgeExternalUrlParams } from "../interface"; + +export function getSkipExternalUrl({ + fromChain, + toChain, + fromAsset, + toAsset, +}: GetBridgeExternalUrlParams): string { + const url = new URL("https://ibc.fun/"); + url.searchParams.set("src_chain", String(fromChain.chainId)); + url.searchParams.set("src_asset", fromAsset.address); + url.searchParams.set("dest_chain", String(toChain.chainId)); + url.searchParams.set("dest_asset", toAsset.address); + + return url.toString(); +} diff --git a/packages/bridge/src/squid/utils.ts b/packages/bridge/src/squid/utils.ts new file mode 100644 index 00000000000..a7f78d1436d --- /dev/null +++ b/packages/bridge/src/squid/utils.ts @@ -0,0 +1,20 @@ +import { GetBridgeExternalUrlParams } from "../interface"; + +export function getSquidExternalUrl({ + fromChain, + toChain, + fromAsset, + toAsset, +}: GetBridgeExternalUrlParams): string { + const url = new URL("https://app.squidrouter.com/"); + url.searchParams.set( + "chains", + [fromChain.chainId, toChain.chainId].join(",") + ); + url.searchParams.set( + "tokens", + [fromAsset.address, toAsset.address].join(",") + ); + + return url.toString(); +}