{"version":3,"sources":["../src/xlinkSdkUtils/bridgeInfoFromStacks.ts"],"sourcesContent":["import { getStacks2BtcFeeInfo } from \"../bitcoinUtils/peggingHelpers\"\nimport { getStacks2EvmFeeInfo } from \"../evmUtils/peggingHelpers\"\nimport { getStacks2MetaFeeInfo } from \"../metaUtils/peggingHelpers\"\nimport {\n  KnownRoute_FromStacks_ToBitcoin,\n  KnownRoute_FromStacks_ToBRC20,\n  KnownRoute_FromStacks_ToEVM,\n  KnownRoute_FromStacks_ToRunes,\n} from \"../utils/buildSupportedRoutes\"\nimport { UnsupportedBridgeRouteError } from \"../utils/errors\"\nimport { assertExclude, checkNever } from \"../utils/typeHelpers\"\nimport {\n  PublicTransferProphetAggregated,\n  transformToPublicTransferProphet,\n} from \"../utils/types/TransferProphet\"\nimport { KnownChainId, KnownTokenId } from \"../utils/types/knownIds\"\nimport { supportedRoutes } from \"./bridgeFromStacks\"\nimport { ChainId, SDKNumber, TokenId } from \"./types\"\nimport { SDKGlobalContext } from \"./types.internal\"\n\nexport interface BridgeInfoFromStacksInput {\n  fromChain: ChainId\n  toChain: ChainId\n  fromToken: TokenId\n  toToken: TokenId\n  amount: SDKNumber\n}\n\nexport interface BridgeInfoFromStacksOutput\n  extends PublicTransferProphetAggregated {}\n\nexport async function bridgeInfoFromStacks(\n  ctx: SDKGlobalContext,\n  info: BridgeInfoFromStacksInput,\n): Promise<BridgeInfoFromStacksOutput> {\n  const route = await supportedRoutes.checkRouteValid(ctx, info)\n\n  if (KnownChainId.isStacksChain(route.fromChain)) {\n    if (KnownChainId.isBitcoinChain(route.toChain)) {\n      if (\n        KnownTokenId.isStacksToken(route.fromToken) &&\n        KnownTokenId.isBitcoinToken(route.toToken)\n      ) {\n        return bridgeInfoFromStacks_toBitcoin({\n          ...info,\n          fromChain: route.fromChain,\n          toChain: route.toChain,\n          fromToken: route.fromToken,\n          toToken: route.toToken,\n        })\n      }\n    } else if (KnownChainId.isEVMChain(route.toChain)) {\n      if (\n        KnownTokenId.isStacksToken(route.fromToken) &&\n        KnownTokenId.isEVMToken(route.toToken)\n      ) {\n        return bridgeInfoFromStacks_toEVM({\n          ...info,\n          fromChain: route.fromChain,\n          toChain: route.toChain,\n          fromToken: route.fromToken,\n          toToken: route.toToken,\n        })\n      }\n    } else if (KnownChainId.isBRC20Chain(route.toChain)) {\n      if (\n        KnownTokenId.isStacksToken(route.fromToken) &&\n        KnownTokenId.isBRC20Token(route.toToken)\n      ) {\n        return bridgeInfoFromStacks_toMeta(ctx, {\n          ...info,\n          fromChain: route.fromChain,\n          toChain: route.toChain,\n          fromToken: route.fromToken,\n          toToken: route.toToken,\n        })\n      }\n    } else if (KnownChainId.isRunesChain(route.toChain)) {\n      if (\n        KnownTokenId.isStacksToken(route.fromToken) &&\n        KnownTokenId.isRunesToken(route.toToken)\n      ) {\n        return bridgeInfoFromStacks_toMeta(ctx, {\n          ...info,\n          fromChain: route.fromChain,\n          toChain: route.toChain,\n          fromToken: route.fromToken,\n          toToken: route.toToken,\n        })\n      }\n    } else {\n      assertExclude(route.toChain, assertExclude.i<KnownChainId.StacksChain>())\n      checkNever(route)\n    }\n  } else {\n    assertExclude(route.fromChain, assertExclude.i<KnownChainId.EVMChain>())\n    assertExclude(route.fromChain, assertExclude.i<KnownChainId.BitcoinChain>())\n    checkNever(route)\n  }\n\n  throw new UnsupportedBridgeRouteError(\n    info.fromChain,\n    info.toChain,\n    info.fromToken,\n    info.toToken,\n  )\n}\n\nasync function bridgeInfoFromStacks_toBitcoin(\n  info: Omit<\n    BridgeInfoFromStacksInput,\n    \"fromChain\" | \"toChain\" | \"fromToken\" | \"toToken\"\n  > &\n    KnownRoute_FromStacks_ToBitcoin,\n): Promise<BridgeInfoFromStacksOutput> {\n  const step1 = await getStacks2BtcFeeInfo(info)\n  if (step1 == null) {\n    throw new UnsupportedBridgeRouteError(\n      info.fromChain,\n      info.toChain,\n      info.fromToken,\n      info.toToken,\n    )\n  }\n\n  return {\n    ...transformToPublicTransferProphet(info, info.amount, step1),\n    transferProphets: [],\n  }\n}\n\nasync function bridgeInfoFromStacks_toEVM(\n  info: Omit<\n    BridgeInfoFromStacksInput,\n    \"fromChain\" | \"toChain\" | \"fromToken\" | \"toToken\"\n  > &\n    KnownRoute_FromStacks_ToEVM,\n): Promise<BridgeInfoFromStacksOutput> {\n  const step1 = await getStacks2EvmFeeInfo(info)\n  if (step1 == null) {\n    throw new UnsupportedBridgeRouteError(\n      info.fromChain,\n      info.toChain,\n      info.fromToken,\n      info.toToken,\n    )\n  }\n\n  return {\n    ...transformToPublicTransferProphet(info, info.amount, step1),\n    transferProphets: [],\n  }\n}\n\nasync function bridgeInfoFromStacks_toMeta(\n  ctx: SDKGlobalContext,\n  info: Omit<\n    BridgeInfoFromStacksInput,\n    \"fromChain\" | \"toChain\" | \"fromToken\" | \"toToken\"\n  > &\n    (KnownRoute_FromStacks_ToBRC20 | KnownRoute_FromStacks_ToRunes),\n): Promise<BridgeInfoFromStacksOutput> {\n  const step1 = await getStacks2MetaFeeInfo(ctx, info)\n  if (step1 == null) {\n    throw new UnsupportedBridgeRouteError(\n      info.fromChain,\n      info.toChain,\n      info.fromToken,\n      info.toToken,\n    )\n  }\n\n  return {\n    ...transformToPublicTransferProphet(info, info.amount, step1),\n    transferProphets: [],\n  }\n}\n"],"mappings":"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","names":[]}