@xlink-network/xlink-sdk
Version:
1 lines • 8.95 kB
Source Map (JSON)
{"version":3,"sources":["../src/metaUtils/xlinkContractHelpers.ts"],"sourcesContent":["import { getStacksToken } from \"../stacksUtils/xlinkContractHelpers\"\nimport { requestAPI } from \"../utils/apiHelpers\"\nimport { BigNumber } from \"../utils/BigNumber\"\nimport { isNotNull } from \"../utils/typeHelpers\"\nimport {\n createBRC20Token,\n createRunesToken,\n KnownChainId,\n KnownTokenId,\n} from \"../utils/types/knownIds\"\nimport { SDKGlobalContext } from \"../xlinkSdkUtils/types.internal\"\n\nexport interface BRC20SupportedRoute {\n brc20Tick: string\n brc20Token: KnownTokenId.BRC20Token\n stacksToken: KnownTokenId.StacksToken\n pegInPaused: boolean\n pegInFeeRate: BigNumber\n pegInFeeBitcoinAmount: null | BigNumber\n pegOutPaused: boolean\n pegOutFeeRate: BigNumber\n pegOutFeeBitcoinAmount: null | BigNumber\n}\nexport async function getBRC20SupportedRoutes(\n sdkContext: SDKGlobalContext,\n chainId: KnownChainId.BRC20Chain,\n): Promise<BRC20SupportedRoute[]> {\n if (\n sdkContext.brc20.routesConfigCache != null &&\n sdkContext.brc20.routesConfigCache.get(chainId) != null\n ) {\n return sdkContext.brc20.routesConfigCache.get(chainId)!\n }\n\n const promise = _getBRC20SupportedRoutes(sdkContext, chainId).catch(err => {\n const cachedPromise = sdkContext.brc20.routesConfigCache?.get(chainId)\n if (promise === cachedPromise) {\n sdkContext.brc20.routesConfigCache?.delete(chainId)\n }\n throw err\n })\n sdkContext.brc20.routesConfigCache?.set(chainId, promise)\n return promise\n}\nasync function _getBRC20SupportedRoutes(\n sdkContext: Pick<SDKGlobalContext, \"backendAPI\">,\n chainId: KnownChainId.BRC20Chain,\n): Promise<BRC20SupportedRoute[]> {\n const stacksChainId =\n chainId === KnownChainId.BRC20.Mainnet\n ? KnownChainId.Stacks.Mainnet\n : KnownChainId.Stacks.Testnet\n\n const resp = await requestAPI<{ routes: SupportedBRC20BridgeRoute[] }>(\n sdkContext,\n {\n method: \"GET\",\n path: \"/2024-10-01/brc20/supported-routes\",\n query: {\n network: chainId === KnownChainId.BRC20.Mainnet ? \"mainnet\" : \"testnet\",\n },\n },\n )\n\n const routes = await Promise.all(\n resp.routes.map(async (route): Promise<null | BRC20SupportedRoute> => {\n const stacksToken = await getStacksToken(\n stacksChainId,\n route.stacksTokenContractAddress,\n )\n\n if (stacksToken == null) return null\n\n return {\n brc20Tick: route.brc20Tick,\n brc20Token: createBRC20Token(route.brc20Tick),\n stacksToken,\n pegInPaused: route.pegInPaused,\n pegInFeeRate: BigNumber.from(route.pegInFeeRate),\n pegInFeeBitcoinAmount:\n route.pegInFeeBitcoinAmount == null\n ? null\n : BigNumber.from(route.pegInFeeBitcoinAmount),\n pegOutPaused: route.pegOutPaused,\n pegOutFeeRate: BigNumber.from(route.pegOutFeeRate),\n pegOutFeeBitcoinAmount:\n route.pegOutFeeBitcoinAmount == null\n ? null\n : BigNumber.from(route.pegOutFeeBitcoinAmount),\n }\n }),\n )\n\n return routes.filter(isNotNull)\n}\ninterface SupportedBRC20BridgeRoute {\n brc20Tick: string\n stacksTokenContractAddress: {\n deployerAddress: string\n contractName: string\n }\n pegInPaused: boolean\n pegInFeeRate: `${number}`\n pegInFeeBitcoinAmount: null | `${number}`\n pegOutPaused: boolean\n pegOutFeeRate: `${number}`\n pegOutFeeBitcoinAmount: null | `${number}`\n}\n\nexport interface RunesSupportedRoute {\n runesId: `${number}:${number}`\n runesToken: KnownTokenId.RunesToken\n stacksToken: KnownTokenId.StacksToken\n pegInPaused: boolean\n pegInFeeRate: BigNumber\n pegInFeeBitcoinAmount: null | BigNumber\n pegOutPaused: boolean\n pegOutFeeRate: BigNumber\n pegOutFeeBitcoinAmount: null | BigNumber\n}\n\nexport async function getRunesSupportedRoutes(\n sdkContext: SDKGlobalContext,\n chainId: KnownChainId.RunesChain,\n): Promise<RunesSupportedRoute[]> {\n if (\n sdkContext.runes.routesConfigCache != null &&\n sdkContext.runes.routesConfigCache.get(chainId) != null\n ) {\n return sdkContext.runes.routesConfigCache.get(chainId)!\n }\n\n const promise = _getRunesSupportedRoutes(sdkContext, chainId).catch(err => {\n const cachedPromise = sdkContext.runes.routesConfigCache?.get(chainId)\n if (promise === cachedPromise) {\n sdkContext.runes.routesConfigCache?.delete(chainId)\n }\n throw err\n })\n sdkContext.runes.routesConfigCache?.set(chainId, promise)\n return promise\n}\nasync function _getRunesSupportedRoutes(\n sdkContext: Pick<SDKGlobalContext, \"backendAPI\">,\n chainId: KnownChainId.RunesChain,\n): Promise<RunesSupportedRoute[]> {\n const stacksChainId =\n chainId === KnownChainId.Runes.Mainnet\n ? KnownChainId.Stacks.Mainnet\n : KnownChainId.Stacks.Testnet\n\n const resp = await requestAPI<{ routes: SupportedRunesBridgeRoute[] }>(\n sdkContext,\n {\n method: \"GET\",\n path: \"/2024-10-01/runes/supported-routes\",\n query: {\n network: chainId === KnownChainId.Runes.Mainnet ? \"mainnet\" : \"testnet\",\n },\n },\n )\n\n const routes = await Promise.all(\n resp.routes.map(async (route): Promise<null | RunesSupportedRoute> => {\n const stacksToken = await getStacksToken(\n stacksChainId,\n route.stacksTokenContractAddress,\n )\n\n if (stacksToken == null) return null\n\n return {\n runesId: route.runesId,\n runesToken: createRunesToken(route.runesId),\n stacksToken,\n pegInPaused: route.pegInPaused,\n pegInFeeRate: BigNumber.from(route.pegInFeeRate),\n pegInFeeBitcoinAmount:\n route.pegInFeeBitcoinAmount == null\n ? null\n : BigNumber.from(route.pegInFeeBitcoinAmount),\n pegOutPaused: route.pegOutPaused,\n pegOutFeeRate: BigNumber.from(route.pegOutFeeRate),\n pegOutFeeBitcoinAmount:\n route.pegOutFeeBitcoinAmount == null\n ? null\n : BigNumber.from(route.pegOutFeeBitcoinAmount),\n }\n }),\n )\n\n return routes.filter(isNotNull)\n}\ninterface SupportedRunesBridgeRoute {\n runesId: `${number}:${number}`\n stacksTokenContractAddress: {\n deployerAddress: string\n contractName: string\n }\n pegInPaused: boolean\n pegInFeeRate: `${number}`\n pegInFeeBitcoinAmount: null | `${number}`\n pegOutPaused: boolean\n pegOutFeeRate: `${number}`\n pegOutFeeBitcoinAmount: null | `${number}`\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAuBA,eAAsB,wBACpB,YACA,SACgC;AAChC,MACE,WAAW,MAAM,qBAAqB,QACtC,WAAW,MAAM,kBAAkB,IAAI,OAAO,KAAK,MACnD;AACA,WAAO,WAAW,MAAM,kBAAkB,IAAI,OAAO;AAAA,EACvD;AAEA,QAAM,UAAU,yBAAyB,YAAY,OAAO,EAAE,MAAM,SAAO;AACzE,UAAM,gBAAgB,WAAW,MAAM,mBAAmB,IAAI,OAAO;AACrE,QAAI,YAAY,eAAe;AAC7B,iBAAW,MAAM,mBAAmB,OAAO,OAAO;AAAA,IACpD;AACA,UAAM;AAAA,EACR,CAAC;AACD,aAAW,MAAM,mBAAmB,IAAI,SAAS,OAAO;AACxD,SAAO;AACT;AACA,eAAe,yBACb,YACA,SACgC;AAChC,QAAM,gBACJ,YAAY,aAAa,MAAM,UAC3B,aAAa,OAAO,UACpB,aAAa,OAAO;AAE1B,QAAM,OAAO,MAAM;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,QACL,SAAS,YAAY,aAAa,MAAM,UAAU,YAAY;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,QAAQ;AAAA,IAC3B,KAAK,OAAO,IAAI,OAAO,UAA+C;AACpE,YAAM,cAAc,MAAM;AAAA,QACxB;AAAA,QACA,MAAM;AAAA,MACR;AAEA,UAAI,eAAe,KAAM,QAAO;AAEhC,aAAO;AAAA,QACL,WAAW,MAAM;AAAA,QACjB,YAAY,iBAAiB,MAAM,SAAS;AAAA,QAC5C;AAAA,QACA,aAAa,MAAM;AAAA,QACnB,cAAc,UAAU,KAAK,MAAM,YAAY;AAAA,QAC/C,uBACE,MAAM,yBAAyB,OAC3B,OACA,UAAU,KAAK,MAAM,qBAAqB;AAAA,QAChD,cAAc,MAAM;AAAA,QACpB,eAAe,UAAU,KAAK,MAAM,aAAa;AAAA,QACjD,wBACE,MAAM,0BAA0B,OAC5B,OACA,UAAU,KAAK,MAAM,sBAAsB;AAAA,MACnD;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,OAAO,OAAO,SAAS;AAChC;AA2BA,eAAsB,wBACpB,YACA,SACgC;AAChC,MACE,WAAW,MAAM,qBAAqB,QACtC,WAAW,MAAM,kBAAkB,IAAI,OAAO,KAAK,MACnD;AACA,WAAO,WAAW,MAAM,kBAAkB,IAAI,OAAO;AAAA,EACvD;AAEA,QAAM,UAAU,yBAAyB,YAAY,OAAO,EAAE,MAAM,SAAO;AACzE,UAAM,gBAAgB,WAAW,MAAM,mBAAmB,IAAI,OAAO;AACrE,QAAI,YAAY,eAAe;AAC7B,iBAAW,MAAM,mBAAmB,OAAO,OAAO;AAAA,IACpD;AACA,UAAM;AAAA,EACR,CAAC;AACD,aAAW,MAAM,mBAAmB,IAAI,SAAS,OAAO;AACxD,SAAO;AACT;AACA,eAAe,yBACb,YACA,SACgC;AAChC,QAAM,gBACJ,YAAY,aAAa,MAAM,UAC3B,aAAa,OAAO,UACpB,aAAa,OAAO;AAE1B,QAAM,OAAO,MAAM;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,QACL,SAAS,YAAY,aAAa,MAAM,UAAU,YAAY;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,QAAQ;AAAA,IAC3B,KAAK,OAAO,IAAI,OAAO,UAA+C;AACpE,YAAM,cAAc,MAAM;AAAA,QACxB;AAAA,QACA,MAAM;AAAA,MACR;AAEA,UAAI,eAAe,KAAM,QAAO;AAEhC,aAAO;AAAA,QACL,SAAS,MAAM;AAAA,QACf,YAAY,iBAAiB,MAAM,OAAO;AAAA,QAC1C;AAAA,QACA,aAAa,MAAM;AAAA,QACnB,cAAc,UAAU,KAAK,MAAM,YAAY;AAAA,QAC/C,uBACE,MAAM,yBAAyB,OAC3B,OACA,UAAU,KAAK,MAAM,qBAAqB;AAAA,QAChD,cAAc,MAAM;AAAA,QACpB,eAAe,UAAU,KAAK,MAAM,aAAa;AAAA,QACjD,wBACE,MAAM,0BAA0B,OAC5B,OACA,UAAU,KAAK,MAAM,sBAAsB;AAAA,MACnD;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,OAAO,OAAO,SAAS;AAChC;","names":[]}