@xlink-network/xlink-sdk
Version:
1 lines • 4.15 kB
Source Map (JSON)
{"version":3,"sources":["../src/stacksUtils/peggingHelpers.ts"],"sourcesContent":["import { fromCorrespondingStacksToken } from \"../evmUtils/peggingHelpers\"\nimport { getEVMTokenContractInfo } from \"../evmUtils/xlinkContractHelpers\"\nimport {\n getBRC20SupportedRoutes,\n getRunesSupportedRoutes,\n} from \"../metaUtils/xlinkContractHelpers\"\nimport { hasAny } from \"../utils/arrayHelpers\"\nimport { IsSupportedFn } from \"../utils/buildSupportedRoutes\"\nimport { checkNever } from \"../utils/typeHelpers\"\nimport {\n _allNoLongerSupportedEVMChains,\n KnownChainId,\n KnownTokenId,\n} from \"../utils/types/knownIds\"\n\nexport const isSupportedStacksRoute: IsSupportedFn = async (ctx, route) => {\n const { fromChain, toChain, fromToken, toToken } = route\n\n if (fromChain === toChain && fromToken === toToken) {\n return false\n }\n\n if (\n KnownChainId.isEVMChain(fromChain) &&\n _allNoLongerSupportedEVMChains.includes(fromChain)\n ) {\n return false\n }\n if (\n KnownChainId.isEVMChain(toChain) &&\n _allNoLongerSupportedEVMChains.includes(toChain)\n ) {\n return false\n }\n\n if (\n !KnownChainId.isStacksChain(fromChain) ||\n !KnownTokenId.isStacksToken(fromToken)\n ) {\n return false\n }\n if (!KnownChainId.isKnownChain(toChain)) return false\n\n if (KnownChainId.isStacksChain(toChain)) {\n return false\n }\n\n if (KnownChainId.isBitcoinChain(toChain)) {\n if (!KnownTokenId.isBitcoinToken(toToken)) return false\n\n return (\n fromToken === KnownTokenId.Stacks.aBTC &&\n toToken === KnownTokenId.Bitcoin.BTC\n )\n }\n\n if (KnownChainId.isRunesChain(toChain)) {\n if (!KnownTokenId.isRunesToken(toToken)) return false\n\n const supportedRoutes = await getRunesSupportedRoutes(ctx, toChain)\n if (supportedRoutes == null || !hasAny(supportedRoutes)) return false\n\n return supportedRoutes.some(\n route => route.stacksToken === fromToken && route.runesToken === toToken,\n )\n }\n\n if (KnownChainId.isBRC20Chain(toChain)) {\n if (!KnownTokenId.isBRC20Token(toToken)) return false\n\n const supportedRoutes = await getBRC20SupportedRoutes(ctx, toChain)\n if (supportedRoutes == null || !hasAny(supportedRoutes)) return false\n\n return supportedRoutes.some(\n route => route.stacksToken === fromToken && route.brc20Token === toToken,\n )\n }\n\n if (KnownChainId.isEVMChain(toChain)) {\n if (!KnownTokenId.isEVMToken(toToken)) return false\n\n const info = await getEVMTokenContractInfo(ctx, toChain, toToken)\n if (info == null) return false\n\n const toEVMTokens = await fromCorrespondingStacksToken(toChain, fromToken)\n return toEVMTokens.includes(toToken)\n }\n\n checkNever(toChain)\n return false\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAeO,IAAM,yBAAwC,OAAO,KAAK,UAAU;AACzE,QAAM,EAAE,WAAW,SAAS,WAAW,QAAQ,IAAI;AAEnD,MAAI,cAAc,WAAW,cAAc,SAAS;AAClD,WAAO;AAAA,EACT;AAEA,MACE,aAAa,WAAW,SAAS,KACjC,+BAA+B,SAAS,SAAS,GACjD;AACA,WAAO;AAAA,EACT;AACA,MACE,aAAa,WAAW,OAAO,KAC/B,+BAA+B,SAAS,OAAO,GAC/C;AACA,WAAO;AAAA,EACT;AAEA,MACE,CAAC,aAAa,cAAc,SAAS,KACrC,CAAC,aAAa,cAAc,SAAS,GACrC;AACA,WAAO;AAAA,EACT;AACA,MAAI,CAAC,aAAa,aAAa,OAAO,EAAG,QAAO;AAEhD,MAAI,aAAa,cAAc,OAAO,GAAG;AACvC,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,eAAe,OAAO,GAAG;AACxC,QAAI,CAAC,aAAa,eAAe,OAAO,EAAG,QAAO;AAElD,WACE,cAAc,aAAa,OAAO,QAClC,YAAY,aAAa,QAAQ;AAAA,EAErC;AAEA,MAAI,aAAa,aAAa,OAAO,GAAG;AACtC,QAAI,CAAC,aAAa,aAAa,OAAO,EAAG,QAAO;AAEhD,UAAM,kBAAkB,MAAM,wBAAwB,KAAK,OAAO;AAClE,QAAI,mBAAmB,QAAQ,CAAC,OAAO,eAAe,EAAG,QAAO;AAEhE,WAAO,gBAAgB;AAAA,MACrB,CAAAA,WAASA,OAAM,gBAAgB,aAAaA,OAAM,eAAe;AAAA,IACnE;AAAA,EACF;AAEA,MAAI,aAAa,aAAa,OAAO,GAAG;AACtC,QAAI,CAAC,aAAa,aAAa,OAAO,EAAG,QAAO;AAEhD,UAAM,kBAAkB,MAAM,wBAAwB,KAAK,OAAO;AAClE,QAAI,mBAAmB,QAAQ,CAAC,OAAO,eAAe,EAAG,QAAO;AAEhE,WAAO,gBAAgB;AAAA,MACrB,CAAAA,WAASA,OAAM,gBAAgB,aAAaA,OAAM,eAAe;AAAA,IACnE;AAAA,EACF;AAEA,MAAI,aAAa,WAAW,OAAO,GAAG;AACpC,QAAI,CAAC,aAAa,WAAW,OAAO,EAAG,QAAO;AAE9C,UAAM,OAAO,MAAM,wBAAwB,KAAK,SAAS,OAAO;AAChE,QAAI,QAAQ,KAAM,QAAO;AAEzB,UAAM,cAAc,MAAM,6BAA6B,SAAS,SAAS;AACzE,WAAO,YAAY,SAAS,OAAO;AAAA,EACrC;AAEA,aAAW,OAAO;AAClB,SAAO;AACT;","names":["route"]}