UNPKG

@xlink-network/xlink-sdk

Version:
1 lines 3.23 kB
{"version":3,"sources":["../src/stacksUtils/validateBridgeOrder.ts"],"sourcesContent":["import { callReadOnlyFunction } from \"@stacks/transactions\"\nimport { CallReadOnlyFunctionFn, Response } from \"clarity-codegen\"\nimport { hasLength } from \"../utils/arrayHelpers\"\nimport { checkNever } from \"../utils/typeHelpers\"\nimport { KnownChainId } from \"../utils/types/knownIds\"\nimport { StacksContractAddress } from \"../xlinkSdkUtils/types\"\nimport { BridgeSwapRoute_FromBitcoin } from \"./createBridgeOrder\"\nimport {\n executeReadonlyCallXLINK,\n getStacksContractCallInfo,\n} from \"./xlinkContractHelpers\"\n\nexport async function validateBridgeOrder(info: {\n chainId: KnownChainId.BitcoinChain\n commitTx: Uint8Array\n revealTx: Uint8Array\n terminatingStacksToken: StacksContractAddress\n swapRoute: BridgeSwapRoute_FromBitcoin\n}): Promise<void> {\n const contractCallInfo = getStacksContractCallInfo(\n info.chainId === KnownChainId.Bitcoin.Mainnet\n ? KnownChainId.Stacks.Mainnet\n : KnownChainId.Stacks.Testnet,\n \"btc-peg-in-endpoint-v2-05\",\n )\n if (contractCallInfo == null) {\n throw new Error(\n \"[validateBridgeOrder_BitcoinToEVM] stacks contract information not found\",\n )\n }\n\n const { commitTx, revealTx, swapRoute } = info\n const executeOptions = {\n deployerAddress: contractCallInfo.deployerAddress,\n callReadOnlyFunction: (callOptions =>\n callReadOnlyFunction({\n ...callOptions,\n network: contractCallInfo.network,\n })) satisfies CallReadOnlyFunctionFn,\n }\n\n let resp: Response<any>\n\n if (hasLength(swapRoute, 0)) {\n resp = await executeReadonlyCallXLINK(\n contractCallInfo.contractName,\n \"validate-tx-cross\",\n {\n \"commit-tx\": {\n tx: commitTx,\n \"output-idx\": 1n,\n },\n \"reveal-tx\": {\n tx: revealTx,\n \"order-idx\": 0n,\n },\n \"token-out-trait\": `${info.terminatingStacksToken.deployerAddress}.${info.terminatingStacksToken.contractName}`,\n },\n executeOptions,\n )\n } else {\n checkNever(swapRoute)\n throw new Error(\n `[validateBridgeOrder_BitcoinToEVM] unsupported swap route length: ${(swapRoute as any).length}`,\n )\n }\n\n if (resp.type === \"success\") return\n\n throw resp.error\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,4BAA4B;AAYrC,eAAsB,oBAAoB,MAMxB;AAChB,QAAM,mBAAmB;AAAA,IACvB,KAAK,YAAY,aAAa,QAAQ,UAClC,aAAa,OAAO,UACpB,aAAa,OAAO;AAAA,IACxB;AAAA,EACF;AACA,MAAI,oBAAoB,MAAM;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,EAAE,UAAU,UAAU,UAAU,IAAI;AAC1C,QAAM,iBAAiB;AAAA,IACrB,iBAAiB,iBAAiB;AAAA,IAClC,sBAAuB,iBACrB,qBAAqB;AAAA,MACnB,GAAG;AAAA,MACH,SAAS,iBAAiB;AAAA,IAC5B,CAAC;AAAA,EACL;AAEA,MAAI;AAEJ,MAAI,UAAU,WAAW,CAAC,GAAG;AAC3B,WAAO,MAAM;AAAA,MACX,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,QACE,aAAa;AAAA,UACX,IAAI;AAAA,UACJ,cAAc;AAAA,QAChB;AAAA,QACA,aAAa;AAAA,UACX,IAAI;AAAA,UACJ,aAAa;AAAA,QACf;AAAA,QACA,mBAAmB,GAAG,KAAK,uBAAuB,eAAe,IAAI,KAAK,uBAAuB,YAAY;AAAA,MAC/G;AAAA,MACA;AAAA,IACF;AAAA,EACF,OAAO;AACL,eAAW,SAAS;AACpB,UAAM,IAAI;AAAA,MACR,qEAAsE,UAAkB,MAAM;AAAA,IAChG;AAAA,EACF;AAEA,MAAI,KAAK,SAAS,UAAW;AAE7B,QAAM,KAAK;AACb;","names":[]}