UNPKG

@xlink-network/xlink-sdk

Version:
135 lines (133 loc) 3.88 kB
import { transformToPublicTransferProphet, transformToPublicTransferProphetAggregated } from "./chunk-6SXUQECQ.mjs"; import { supportedRoutes } from "./chunk-OFD4B57V.mjs"; import { getBtc2StacksFeeInfo } from "./chunk-UDAD5DCH.mjs"; import { getStacks2EvmFeeInfo } from "./chunk-D2X23GOD.mjs"; import { UnsupportedBridgeRouteError } from "./chunk-KTUPNUM5.mjs"; import { KnownChainId, KnownTokenId } from "./chunk-GZDQGY7B.mjs"; import { assertExclude, checkNever } from "./chunk-E5Y3FGR6.mjs"; import { BigNumber } from "./chunk-KHTJNOQE.mjs"; // src/xlinkSdkUtils/bridgeInfoFromBitcoin.ts var bridgeInfoFromBitcoin = async (ctx, info) => { const route = await supportedRoutes.checkRouteValid(ctx, info); if (KnownChainId.isBitcoinChain(route.fromChain)) { if (KnownChainId.isStacksChain(route.toChain)) { if (KnownTokenId.isBitcoinToken(route.fromToken) && KnownTokenId.isStacksToken(route.toToken)) { return bridgeInfoFromBitcoin_toStacks({ ...info, fromChain: route.fromChain, toChain: route.toChain, fromToken: route.fromToken, toToken: route.toToken }); } } else if (KnownChainId.isEVMChain(route.toChain)) { if (KnownTokenId.isBitcoinToken(route.fromToken) && KnownTokenId.isEVMToken(route.toToken)) { return bridgeInfoFromBitcoin_toEVM({ ...info, fromChain: route.fromChain, toChain: route.toChain, fromToken: route.fromToken, toToken: route.toToken }); } } else if (KnownChainId.isBRC20Chain(route.toChain) || KnownChainId.isRunesChain(route.toChain)) { assertExclude(route.toChain, assertExclude.i()); assertExclude(route.toChain, assertExclude.i()); } else { assertExclude(route.toChain, assertExclude.i()); checkNever(route); } } else { assertExclude(route.fromChain, assertExclude.i()); assertExclude(route.fromChain, assertExclude.i()); checkNever(route); } throw new UnsupportedBridgeRouteError( info.fromChain, info.toChain, info.fromToken, info.toToken ); }; async function bridgeInfoFromBitcoin_toStacks(info) { const step1 = await getBtc2StacksFeeInfo(info); if (step1 == null) { throw new UnsupportedBridgeRouteError( info.fromChain, info.toChain, info.fromToken, info.toToken ); } return { ...transformToPublicTransferProphet(info, info.amount, step1), transferProphets: [] }; } async function bridgeInfoFromBitcoin_toEVM(info) { const transitStacksChainId = info.fromChain === KnownChainId.Bitcoin.Mainnet ? KnownChainId.Stacks.Mainnet : KnownChainId.Stacks.Testnet; const step1Route = { fromChain: info.fromChain, fromToken: KnownTokenId.Bitcoin.BTC, toChain: transitStacksChainId, toToken: KnownTokenId.Stacks.aBTC }; const step2Route = { fromChain: transitStacksChainId, fromToken: KnownTokenId.Stacks.aBTC, toChain: info.toChain, toToken: info.toToken }; const [step1, step2] = await Promise.all([ getBtc2StacksFeeInfo(step1Route), getStacks2EvmFeeInfo(step2Route) ]); if (step1 == null || step2 == null) { throw new UnsupportedBridgeRouteError( info.fromChain, info.toChain, info.fromToken, info.toToken ); } const step1TransferProphet = transformToPublicTransferProphet( step1Route, info.amount, step1 ); const step2TransferProphet = transformToPublicTransferProphet( step2Route, step1TransferProphet.toAmount, step2 ); return { ...transformToPublicTransferProphetAggregated( [step1TransferProphet, step2TransferProphet], [BigNumber.ONE] ), transferProphets: [step1TransferProphet, step2TransferProphet] }; } export { bridgeInfoFromBitcoin }; //# sourceMappingURL=chunk-XYKMWLV6.mjs.map