@lendasat/lendaswap-sdk-pure 0.2.24 → 0.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/arkade-network.d.ts +8 -0
  2. package/dist/arkade-network.d.ts.map +1 -0
  3. package/dist/arkade-network.js +40 -0
  4. package/dist/arkade-network.js.map +1 -0
  5. package/dist/arkade.d.ts.map +1 -1
  6. package/dist/arkade.js +2 -9
  7. package/dist/arkade.js.map +1 -1
  8. package/dist/cctp/constants.d.ts.map +1 -1
  9. package/dist/cctp/constants.js +4 -0
  10. package/dist/cctp/constants.js.map +1 -1
  11. package/dist/cctp/fee.d.ts +49 -0
  12. package/dist/cctp/fee.d.ts.map +1 -0
  13. package/dist/cctp/fee.js +70 -0
  14. package/dist/cctp/fee.js.map +1 -0
  15. package/dist/cctp/index.d.ts +2 -1
  16. package/dist/cctp/index.d.ts.map +1 -1
  17. package/dist/cctp/index.js +2 -1
  18. package/dist/cctp/index.js.map +1 -1
  19. package/dist/cctp/utils.d.ts +15 -0
  20. package/dist/cctp/utils.d.ts.map +1 -1
  21. package/dist/cctp/utils.js +41 -0
  22. package/dist/cctp/utils.js.map +1 -1
  23. package/dist/cctp-bridge/bridge.d.ts +62 -0
  24. package/dist/cctp-bridge/bridge.d.ts.map +1 -0
  25. package/dist/cctp-bridge/bridge.js +74 -0
  26. package/dist/cctp-bridge/bridge.js.map +1 -0
  27. package/dist/cctp-bridge/index.d.ts +17 -0
  28. package/dist/cctp-bridge/index.d.ts.map +1 -0
  29. package/dist/cctp-bridge/index.js +16 -0
  30. package/dist/cctp-bridge/index.js.map +1 -0
  31. package/dist/cctp-inbound/approveAndBurn.d.ts +68 -0
  32. package/dist/cctp-inbound/approveAndBurn.d.ts.map +1 -0
  33. package/dist/cctp-inbound/approveAndBurn.js +95 -0
  34. package/dist/cctp-inbound/approveAndBurn.js.map +1 -0
  35. package/dist/cctp-inbound/burn.d.ts +51 -0
  36. package/dist/cctp-inbound/burn.d.ts.map +1 -0
  37. package/dist/cctp-inbound/burn.js +66 -0
  38. package/dist/cctp-inbound/burn.js.map +1 -0
  39. package/dist/cctp-inbound/chainMap.d.ts +48 -0
  40. package/dist/cctp-inbound/chainMap.d.ts.map +1 -0
  41. package/dist/cctp-inbound/chainMap.js +103 -0
  42. package/dist/cctp-inbound/chainMap.js.map +1 -0
  43. package/dist/cctp-inbound/client.d.ts +1573 -0
  44. package/dist/cctp-inbound/client.d.ts.map +1 -0
  45. package/dist/cctp-inbound/client.js +117 -0
  46. package/dist/cctp-inbound/client.js.map +1 -0
  47. package/dist/cctp-inbound/eip2612.d.ts +77 -0
  48. package/dist/cctp-inbound/eip2612.d.ts.map +1 -0
  49. package/dist/cctp-inbound/eip2612.js +95 -0
  50. package/dist/cctp-inbound/eip2612.js.map +1 -0
  51. package/dist/cctp-inbound/evmSignerAdapter.d.ts +25 -0
  52. package/dist/cctp-inbound/evmSignerAdapter.d.ts.map +1 -0
  53. package/dist/cctp-inbound/evmSignerAdapter.js +50 -0
  54. package/dist/cctp-inbound/evmSignerAdapter.js.map +1 -0
  55. package/dist/cctp-inbound/fundSwap.d.ts +94 -0
  56. package/dist/cctp-inbound/fundSwap.d.ts.map +1 -0
  57. package/dist/cctp-inbound/fundSwap.js +90 -0
  58. package/dist/cctp-inbound/fundSwap.js.map +1 -0
  59. package/dist/cctp-inbound/index.d.ts +35 -0
  60. package/dist/cctp-inbound/index.d.ts.map +1 -0
  61. package/dist/cctp-inbound/index.js +33 -0
  62. package/dist/cctp-inbound/index.js.map +1 -0
  63. package/dist/cctp-inbound/permit2.d.ts +33 -0
  64. package/dist/cctp-inbound/permit2.d.ts.map +1 -0
  65. package/dist/cctp-inbound/permit2.js +32 -0
  66. package/dist/cctp-inbound/permit2.js.map +1 -0
  67. package/dist/cctp-inbound/preflight.d.ts +36 -0
  68. package/dist/cctp-inbound/preflight.d.ts.map +1 -0
  69. package/dist/cctp-inbound/preflight.js +67 -0
  70. package/dist/cctp-inbound/preflight.js.map +1 -0
  71. package/dist/cctp-inbound/smartAccount.d.ts +1518 -0
  72. package/dist/cctp-inbound/smartAccount.d.ts.map +1 -0
  73. package/dist/cctp-inbound/smartAccount.js +117 -0
  74. package/dist/cctp-inbound/smartAccount.js.map +1 -0
  75. package/dist/cctp-inbound/submit.d.ts +75 -0
  76. package/dist/cctp-inbound/submit.d.ts.map +1 -0
  77. package/dist/cctp-inbound/submit.js +126 -0
  78. package/dist/cctp-inbound/submit.js.map +1 -0
  79. package/dist/cctp-inbound/types.d.ts +30 -0
  80. package/dist/cctp-inbound/types.d.ts.map +1 -0
  81. package/dist/cctp-inbound/types.js +5 -0
  82. package/dist/cctp-inbound/types.js.map +1 -0
  83. package/dist/cctp-inbound/userOp.d.ts +93 -0
  84. package/dist/cctp-inbound/userOp.d.ts.map +1 -0
  85. package/dist/cctp-inbound/userOp.js +151 -0
  86. package/dist/cctp-inbound/userOp.js.map +1 -0
  87. package/dist/client.d.ts +166 -6
  88. package/dist/client.d.ts.map +1 -1
  89. package/dist/client.js +565 -32
  90. package/dist/client.js.map +1 -1
  91. package/dist/create/arkade.d.ts.map +1 -1
  92. package/dist/create/arkade.js +21 -19
  93. package/dist/create/arkade.js.map +1 -1
  94. package/dist/create/bitcoin.d.ts.map +1 -1
  95. package/dist/create/bitcoin.js +17 -15
  96. package/dist/create/bitcoin.js.map +1 -1
  97. package/dist/create/evm-to-arkade.d.ts.map +1 -1
  98. package/dist/create/evm-to-arkade.js +2 -0
  99. package/dist/create/evm-to-arkade.js.map +1 -1
  100. package/dist/create/evm-to-bitcoin.d.ts.map +1 -1
  101. package/dist/create/evm-to-bitcoin.js +2 -0
  102. package/dist/create/evm-to-bitcoin.js.map +1 -1
  103. package/dist/create/evm-to-lightning.d.ts.map +1 -1
  104. package/dist/create/evm-to-lightning.js +6 -3
  105. package/dist/create/evm-to-lightning.js.map +1 -1
  106. package/dist/create/lightning.d.ts.map +1 -1
  107. package/dist/create/lightning.js +17 -15
  108. package/dist/create/lightning.js.map +1 -1
  109. package/dist/create/types.d.ts +40 -0
  110. package/dist/create/types.d.ts.map +1 -1
  111. package/dist/delegate.d.ts.map +1 -1
  112. package/dist/delegate.js +2 -31
  113. package/dist/delegate.js.map +1 -1
  114. package/dist/evm/wallet.d.ts +16 -0
  115. package/dist/evm/wallet.d.ts.map +1 -1
  116. package/dist/evm/wallet.js.map +1 -1
  117. package/dist/generated/api.d.ts +408 -2
  118. package/dist/generated/api.d.ts.map +1 -1
  119. package/dist/index.d.ts +3 -2
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +4 -2
  122. package/dist/index.js.map +1 -1
  123. package/dist/redeem/arkade.d.ts.map +1 -1
  124. package/dist/redeem/arkade.js +4 -43
  125. package/dist/redeem/arkade.js.map +1 -1
  126. package/dist/redeem/gasless.d.ts +16 -0
  127. package/dist/redeem/gasless.d.ts.map +1 -1
  128. package/dist/redeem/gasless.js +3 -1
  129. package/dist/redeem/gasless.js.map +1 -1
  130. package/dist/refund/arkade.d.ts.map +1 -1
  131. package/dist/refund/arkade.js +3 -39
  132. package/dist/refund/arkade.js.map +1 -1
  133. package/dist/refund/{collab.d.ts → collab-arkade-evm.d.ts} +6 -6
  134. package/dist/refund/collab-arkade-evm.d.ts.map +1 -0
  135. package/dist/refund/{collab.js → collab-arkade-evm.js} +6 -38
  136. package/dist/refund/collab-arkade-evm.js.map +1 -0
  137. package/dist/refund/collab-arkade-lightning.d.ts +59 -0
  138. package/dist/refund/collab-arkade-lightning.d.ts.map +1 -0
  139. package/dist/refund/collab-arkade-lightning.js +208 -0
  140. package/dist/refund/collab-arkade-lightning.js.map +1 -0
  141. package/dist/refund/index.d.ts +3 -2
  142. package/dist/refund/index.d.ts.map +1 -1
  143. package/dist/refund/index.js +3 -2
  144. package/dist/refund/index.js.map +1 -1
  145. package/dist/tokens.d.ts +18 -0
  146. package/dist/tokens.d.ts.map +1 -1
  147. package/dist/tokens.js +43 -7
  148. package/dist/tokens.js.map +1 -1
  149. package/dist/version.d.ts +2 -2
  150. package/dist/version.js +1 -1
  151. package/package.json +27 -2
  152. package/dist/refund/collab.d.ts.map +0 -1
  153. package/dist/refund/collab.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ /**
2
+ * CCTP-inbound flow — "any CCTPv2 chain → Arbitrum USDC → BTC" swaps.
3
+ *
4
+ * The SDK orchestrates:
5
+ * 1. Source-chain USDC burn via `TokenMessenger.depositForBurn`
6
+ * (`destinationCaller` pinned to the user's Kernel smart account).
7
+ * 2. IRIS attestation polling.
8
+ * 3. Settlement-chain UserOp via the user's Kernel smart account
9
+ * (atomic `receiveMessage` + `USDC.approve(Permit2)` +
10
+ * `executeAndCreateWithPermit2`), paymaster-sponsored so the user
11
+ * needs no ETH on Arbitrum.
12
+ *
13
+ * The Kernel smart account is owned by the user's connected wallet
14
+ * (viem `Account` / Privy / wagmi / raw key) — no SDK-derived key
15
+ * material. Consumer-side wallet prompts cover Permit2 typed data and
16
+ * the UserOp signature.
17
+ *
18
+ * Public API:
19
+ * - `client.cctpInbound.*` — step-by-step primitives (for custom UX)
20
+ * - `client.fundSwap(swapId, signer)` — one-shot wrapper built on top
21
+ */
22
+ export { approveAndBurn, } from "./approveAndBurn.js";
23
+ export { encodeDepositForBurn, } from "./burn.js";
24
+ export { CCTP_VIEM_CHAINS, CHAIN_ID_TO_CCTP_NAME, cctpMetaForChainId, DIRECT_SOURCE_CHAIN_IDS, getCctpViemChain, getCctpViemChainByName, isCctpOnlySource, } from "./chainMap.js";
25
+ export { CctpInboundClient } from "./client.js";
26
+ export { buildDomainSeparator, MAX_UINT256, signEip2612Permit, USDC_DOMAIN_FIELDS, } from "./eip2612.js";
27
+ export { cctpFundSwap, } from "./fundSwap.js";
28
+ export { signPermit2Witness, } from "./permit2.js";
29
+ export { extractRevertData, simulateBatchCalls, } from "./preflight.js";
30
+ export { createSwapSmartAccountClient, } from "./smartAccount.js";
31
+ export { submitCctpInboundUserOp, } from "./submit.js";
32
+ export { addressToBytes32Hex, buildCctpInboundBatch, } from "./userOp.js";
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cctp-inbound/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAGL,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,WAAW,EAGX,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAKL,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EAInB,qBAAqB,GAGtB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Permit2 signing for `executeAndCreateWithPermit2` using the SDK's
3
+ * HD-derived EVM key.
4
+ *
5
+ * Wraps the existing `buildPermit2FundingDigest` + `signEvmDigest` and
6
+ * returns the compact 65-byte signature format (`r ‖ s ‖ v`) that
7
+ * `HTLCCoordinator.executeAndCreateWithPermit2` expects, ready to POST
8
+ * to the backend's gasless-funding endpoint.
9
+ */
10
+ import { type Permit2FundingParams } from "../evm/coordinator.js";
11
+ /** Parameters for signing a Permit2 witness with the SDK's HD key. */
12
+ export interface SignPermit2Params {
13
+ /** Signer's secp256k1 private key. */
14
+ secretKey: Uint8Array | string;
15
+ /** All fields of the Permit2 witness + TokenPermissions. */
16
+ funding: Permit2FundingParams;
17
+ }
18
+ /** Signed Permit2 witness in the shape the backend's gasless endpoint expects. */
19
+ export interface SignedPermit2Witness {
20
+ /** Random Permit2 nonce (stringified for API transport). */
21
+ nonce: string;
22
+ /** Signature deadline (unix seconds). */
23
+ deadline: number;
24
+ /** Compact signature: `0x` + r(32) + s(32) + v(1), 65 bytes. */
25
+ signature: string;
26
+ }
27
+ /**
28
+ * Signs the Permit2 EIP-712 digest using the SDK's derived key and packs
29
+ * the signature in the compact `r ‖ s ‖ v` form the backend submitter
30
+ * forwards to Permit2 on-chain.
31
+ */
32
+ export declare function signPermit2Witness(params: SignPermit2Params): SignedPermit2Witness;
33
+ //# sourceMappingURL=permit2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permit2.d.ts","sourceRoot":"","sources":["../../src/cctp-inbound/permit2.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAG/B,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC;IAC/B,4DAA4D;IAC5D,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,GACxB,oBAAoB,CAkBtB"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Permit2 signing for `executeAndCreateWithPermit2` using the SDK's
3
+ * HD-derived EVM key.
4
+ *
5
+ * Wraps the existing `buildPermit2FundingDigest` + `signEvmDigest` and
6
+ * returns the compact 65-byte signature format (`r ‖ s ‖ v`) that
7
+ * `HTLCCoordinator.executeAndCreateWithPermit2` expects, ready to POST
8
+ * to the backend's gasless-funding endpoint.
9
+ */
10
+ import { buildPermit2FundingDigest, } from "../evm/coordinator.js";
11
+ import { signEvmDigest } from "../evm/signing.js";
12
+ /**
13
+ * Signs the Permit2 EIP-712 digest using the SDK's derived key and packs
14
+ * the signature in the compact `r ‖ s ‖ v` form the backend submitter
15
+ * forwards to Permit2 on-chain.
16
+ */
17
+ export function signPermit2Witness(params) {
18
+ const digest = buildPermit2FundingDigest(params.funding);
19
+ const sig = signEvmDigest(params.secretKey, digest);
20
+ const r = sig.r.replace(/^0x/, "");
21
+ const s = sig.s.replace(/^0x/, "");
22
+ const v = sig.v.toString(16).padStart(2, "0");
23
+ if (r.length !== 64 || s.length !== 64) {
24
+ throw new Error(`Malformed signature scalars: r=${r.length}, s=${s.length}`);
25
+ }
26
+ return {
27
+ nonce: params.funding.nonce.toString(),
28
+ deadline: Number(params.funding.deadline),
29
+ signature: `0x${r}${s}${v}`,
30
+ };
31
+ }
32
+ //# sourceMappingURL=permit2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permit2.js","sourceRoot":"","sources":["../../src/cctp-inbound/permit2.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,yBAAyB,GAE1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAoBlD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAyB;IAEzB,MAAM,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEpD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,kCAAkC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;QACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Optional per-call pre-flight for the CCTP-inbound UserOp batch.
3
+ *
4
+ * The bundler simulates the whole UserOp and returns a single
5
+ * "execution reverted" if any inner call fails — useless for
6
+ * iterating. This helper runs each call individually via `eth_call`
7
+ * with the smart account as `from`, surfacing the per-call revert
8
+ * data before we even talk to the bundler.
9
+ *
10
+ * Limitation: any call that re-enters the smart account (e.g. Permit2
11
+ * invoking `IERC1271.isValidSignature`) reverts here because the
12
+ * account isn't deployed at simulation time but WILL be in the real
13
+ * UserOp via factoryData. Treat these reverts as informational — the
14
+ * bundler's full-simulation is the authoritative check.
15
+ */
16
+ import type { Address, PublicClient } from "viem";
17
+ import type { BatchCall } from "./userOp.js";
18
+ /**
19
+ * Walk a viem error chain and surface any RPC-level revert data
20
+ * (selector + encoded args). viem buries these under `cause` /
21
+ * `data` / nested `data.data`.
22
+ */
23
+ export declare function extractRevertData(err: unknown): string | undefined;
24
+ export interface SimulateBatchCallsArgs {
25
+ calls: BatchCall[];
26
+ smartAccount: Address;
27
+ publicClient: PublicClient;
28
+ }
29
+ /**
30
+ * Run `eth_call` once per batch call with the smart account as
31
+ * `from`. Logs per-call status via `console.log` / `console.warn` so
32
+ * failures are visible in devtools. Never throws — pre-flight reverts
33
+ * for calls that re-enter the smart account are expected.
34
+ */
35
+ export declare function simulateBatchCalls(args: SimulateBatchCallsArgs): Promise<void>;
36
+ //# sourceMappingURL=preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/cctp-inbound/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgBlE;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Optional per-call pre-flight for the CCTP-inbound UserOp batch.
3
+ *
4
+ * The bundler simulates the whole UserOp and returns a single
5
+ * "execution reverted" if any inner call fails — useless for
6
+ * iterating. This helper runs each call individually via `eth_call`
7
+ * with the smart account as `from`, surfacing the per-call revert
8
+ * data before we even talk to the bundler.
9
+ *
10
+ * Limitation: any call that re-enters the smart account (e.g. Permit2
11
+ * invoking `IERC1271.isValidSignature`) reverts here because the
12
+ * account isn't deployed at simulation time but WILL be in the real
13
+ * UserOp via factoryData. Treat these reverts as informational — the
14
+ * bundler's full-simulation is the authoritative check.
15
+ */
16
+ /**
17
+ * Walk a viem error chain and surface any RPC-level revert data
18
+ * (selector + encoded args). viem buries these under `cause` /
19
+ * `data` / nested `data.data`.
20
+ */
21
+ export function extractRevertData(err) {
22
+ let cur = err;
23
+ for (let depth = 0; depth < 10 && cur; depth++) {
24
+ const node = cur;
25
+ if (typeof node.data === "string" && node.data.startsWith("0x")) {
26
+ return node.data;
27
+ }
28
+ if (typeof node.data === "object" && node.data !== null) {
29
+ const nested = node.data.data;
30
+ if (typeof nested === "string" && nested.startsWith("0x")) {
31
+ return nested;
32
+ }
33
+ }
34
+ cur = node.cause;
35
+ }
36
+ return undefined;
37
+ }
38
+ /**
39
+ * Run `eth_call` once per batch call with the smart account as
40
+ * `from`. Logs per-call status via `console.log` / `console.warn` so
41
+ * failures are visible in devtools. Never throws — pre-flight reverts
42
+ * for calls that re-enter the smart account are expected.
43
+ */
44
+ export async function simulateBatchCalls(args) {
45
+ const { calls, smartAccount, publicClient } = args;
46
+ for (let i = 0; i < calls.length; i++) {
47
+ const call = calls[i];
48
+ const label = `[cctp-inbound/preflight] call ${i + 1}/${calls.length} to ${call.to}`;
49
+ try {
50
+ await publicClient.call({
51
+ account: smartAccount,
52
+ to: call.to,
53
+ data: call.data,
54
+ value: call.value,
55
+ });
56
+ console.log(`${label} OK`);
57
+ }
58
+ catch (err) {
59
+ const revertData = extractRevertData(err);
60
+ console.warn(`${label} reverted in pre-flight (may be OK at send)`, {
61
+ revertData: revertData ?? "(none)",
62
+ error: err,
63
+ });
64
+ }
65
+ }
66
+ }
67
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/cctp-inbound/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,GAA0C,CAAC;QACxD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,MAAM,GAAI,IAAI,CAAC,IAA0B,CAAC,IAAI,CAAC;YACrD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,iCAAiC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACrF,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,IAAI,CAAC;gBACtB,OAAO,EAAE,YAAY;gBACrB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,6CAA6C,EAAE;gBAClE,UAAU,EAAE,UAAU,IAAI,QAAQ;gBAClC,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}