{"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":[]}