@lendasat/lendaswap-sdk-pure 0.2.41 → 0.2.43

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 (252) hide show
  1. package/dist/_esm-6K2AP5GG.js +3663 -0
  2. package/dist/_esm-6K2AP5GG.js.map +1 -0
  3. package/dist/_esm-UGRDSVEV.cjs +3662 -0
  4. package/dist/_esm-UGRDSVEV.cjs.map +1 -0
  5. package/dist/api/client.d.ts +0 -4
  6. package/dist/api/client.d.ts.map +1 -1
  7. package/dist/base-2KYNAFR3.cjs +109 -0
  8. package/dist/base-2KYNAFR3.cjs.map +1 -0
  9. package/dist/base-HMHH3XPM.js +9 -0
  10. package/dist/base-HMHH3XPM.js.map +1 -0
  11. package/dist/ccip-EBXWV2U3.js +8 -0
  12. package/dist/ccip-EBXWV2U3.js.map +1 -0
  13. package/dist/ccip-PD37NJHA.cjs +26 -0
  14. package/dist/ccip-PD37NJHA.cjs.map +1 -0
  15. package/dist/cctp-bridge/index.cjs +67 -0
  16. package/dist/cctp-bridge/index.cjs.map +1 -0
  17. package/dist/cctp-bridge/index.js +53 -15
  18. package/dist/cctp-bridge/index.js.map +1 -1
  19. package/dist/cctp-inbound/client.d.ts +21 -19
  20. package/dist/cctp-inbound/client.d.ts.map +1 -1
  21. package/dist/cctp-inbound/smartAccount.d.ts +21 -19
  22. package/dist/cctp-inbound/smartAccount.d.ts.map +1 -1
  23. package/dist/chunk-4JXN4UPB.js +554 -0
  24. package/dist/chunk-4JXN4UPB.js.map +1 -0
  25. package/dist/chunk-A4GKKURK.cjs +430 -0
  26. package/dist/chunk-A4GKKURK.cjs.map +1 -0
  27. package/dist/chunk-BZU3R5DJ.cjs +554 -0
  28. package/dist/chunk-BZU3R5DJ.cjs.map +1 -0
  29. package/dist/chunk-DBBCKPZ5.js +421 -0
  30. package/dist/chunk-DBBCKPZ5.js.map +1 -0
  31. package/dist/chunk-DNSJDKTP.cjs +96 -0
  32. package/dist/chunk-DNSJDKTP.cjs.map +1 -0
  33. package/dist/chunk-EIK6BZWG.js +90 -0
  34. package/dist/chunk-EIK6BZWG.js.map +1 -0
  35. package/dist/chunk-GVAPVS4Z.js +6144 -0
  36. package/dist/chunk-GVAPVS4Z.js.map +1 -0
  37. package/dist/chunk-I7TGLGN6.js +46 -0
  38. package/dist/chunk-I7TGLGN6.js.map +1 -0
  39. package/dist/chunk-JBVKWKD4.cjs +50 -0
  40. package/dist/chunk-JBVKWKD4.cjs.map +1 -0
  41. package/dist/chunk-LA3YX2HD.js +47096 -0
  42. package/dist/chunk-LA3YX2HD.js.map +1 -0
  43. package/dist/chunk-PKDJZJMV.cjs +2214 -0
  44. package/dist/chunk-PKDJZJMV.cjs.map +1 -0
  45. package/dist/chunk-PRN5VZOM.js +370 -0
  46. package/dist/chunk-PRN5VZOM.js.map +1 -0
  47. package/dist/chunk-RIOT5VOJ.cjs +47240 -0
  48. package/dist/chunk-RIOT5VOJ.cjs.map +1 -0
  49. package/dist/chunk-WVZSHRV7.cjs +431 -0
  50. package/dist/chunk-WVZSHRV7.cjs.map +1 -0
  51. package/dist/chunk-YLWPBHMV.cjs +6311 -0
  52. package/dist/chunk-YLWPBHMV.cjs.map +1 -0
  53. package/dist/chunk-Z2FCTNRC.js +2210 -0
  54. package/dist/chunk-Z2FCTNRC.js.map +1 -0
  55. package/dist/client.d.ts +68 -1
  56. package/dist/client.d.ts.map +1 -1
  57. package/dist/compose-quote.d.ts +77 -0
  58. package/dist/compose-quote.d.ts.map +1 -0
  59. package/dist/delegate.cjs +23 -0
  60. package/dist/delegate.cjs.map +1 -0
  61. package/dist/delegate.js +8 -269
  62. package/dist/delegate.js.map +1 -1
  63. package/dist/dist-PWXNFVDF.js +8 -0
  64. package/dist/dist-PWXNFVDF.js.map +1 -0
  65. package/dist/dist-VEHYC67F.cjs +550 -0
  66. package/dist/dist-VEHYC67F.cjs.map +1 -0
  67. package/dist/esplora.d.ts +14 -0
  68. package/dist/esplora.d.ts.map +1 -1
  69. package/dist/generated/api.d.ts +235 -38
  70. package/dist/generated/api.d.ts.map +1 -1
  71. package/dist/index.cjs +35461 -0
  72. package/dist/index.cjs.map +1 -0
  73. package/dist/index.d.ts +2 -1
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +35312 -32
  76. package/dist/index.js.map +1 -1
  77. package/dist/mine.wasm-LUTPOAD2.js +12 -0
  78. package/dist/mine.wasm-LUTPOAD2.js.map +1 -0
  79. package/dist/mine.wasm-Z3ORSBKN.cjs +12 -0
  80. package/dist/mine.wasm-Z3ORSBKN.cjs.map +1 -0
  81. package/dist/node.cjs +166 -0
  82. package/dist/node.cjs.map +1 -0
  83. package/dist/node.js +159 -18
  84. package/dist/node.js.map +1 -1
  85. package/dist/secp256k1-B6OW5ZCM.js +8 -0
  86. package/dist/secp256k1-B6OW5ZCM.js.map +1 -0
  87. package/dist/secp256k1-PJCSE4N6.cjs +30 -0
  88. package/dist/secp256k1-PJCSE4N6.cjs.map +1 -0
  89. package/dist/tokens.d.ts +2 -1
  90. package/dist/tokens.d.ts.map +1 -1
  91. package/dist/types/chain-config.d.ts +50 -0
  92. package/dist/types/chain-config.d.ts.map +1 -0
  93. package/dist/types/chain.d.ts +11 -0
  94. package/dist/types/chain.d.ts.map +1 -0
  95. package/dist/types/dex-quote.d.ts +85 -0
  96. package/dist/types/dex-quote.d.ts.map +1 -0
  97. package/dist/types/index.d.ts +15 -0
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/network-fees.d.ts +43 -0
  100. package/dist/types/network-fees.d.ts.map +1 -0
  101. package/dist/types/quote.d.ts +87 -0
  102. package/dist/types/quote.d.ts.map +1 -0
  103. package/dist/types/swap-pairs.d.ts +37 -0
  104. package/dist/types/swap-pairs.d.ts.map +1 -0
  105. package/dist/version.d.ts +2 -2
  106. package/dist/wallet-4YGTKWNZ.js +7 -0
  107. package/dist/wallet-4YGTKWNZ.js.map +1 -0
  108. package/dist/wallet-SZJDXAY7.cjs +45 -0
  109. package/dist/wallet-SZJDXAY7.cjs.map +1 -0
  110. package/package.json +23 -10
  111. package/dist/api/client.js +0 -13
  112. package/dist/api/client.js.map +0 -1
  113. package/dist/arkade-network.js +0 -40
  114. package/dist/arkade-network.js.map +0 -1
  115. package/dist/arkade.js +0 -61
  116. package/dist/arkade.js.map +0 -1
  117. package/dist/cctp/attestation.js +0 -149
  118. package/dist/cctp/attestation.js.map +0 -1
  119. package/dist/cctp/constants.js +0 -92
  120. package/dist/cctp/constants.js.map +0 -1
  121. package/dist/cctp/fee.js +0 -70
  122. package/dist/cctp/fee.js.map +0 -1
  123. package/dist/cctp/index.js +0 -13
  124. package/dist/cctp/index.js.map +0 -1
  125. package/dist/cctp/types.js +0 -5
  126. package/dist/cctp/types.js.map +0 -1
  127. package/dist/cctp/utils.js +0 -91
  128. package/dist/cctp/utils.js.map +0 -1
  129. package/dist/cctp-bridge/bridge.js +0 -74
  130. package/dist/cctp-bridge/bridge.js.map +0 -1
  131. package/dist/cctp-inbound/approveAndBurn.js +0 -95
  132. package/dist/cctp-inbound/approveAndBurn.js.map +0 -1
  133. package/dist/cctp-inbound/burn.js +0 -66
  134. package/dist/cctp-inbound/burn.js.map +0 -1
  135. package/dist/cctp-inbound/chainMap.js +0 -128
  136. package/dist/cctp-inbound/chainMap.js.map +0 -1
  137. package/dist/cctp-inbound/client.js +0 -125
  138. package/dist/cctp-inbound/client.js.map +0 -1
  139. package/dist/cctp-inbound/eip2612.js +0 -95
  140. package/dist/cctp-inbound/eip2612.js.map +0 -1
  141. package/dist/cctp-inbound/evmSignerAdapter.js +0 -82
  142. package/dist/cctp-inbound/evmSignerAdapter.js.map +0 -1
  143. package/dist/cctp-inbound/fundSwap.js +0 -95
  144. package/dist/cctp-inbound/fundSwap.js.map +0 -1
  145. package/dist/cctp-inbound/index.js +0 -34
  146. package/dist/cctp-inbound/index.js.map +0 -1
  147. package/dist/cctp-inbound/permit2.js +0 -32
  148. package/dist/cctp-inbound/permit2.js.map +0 -1
  149. package/dist/cctp-inbound/preflight.js +0 -84
  150. package/dist/cctp-inbound/preflight.js.map +0 -1
  151. package/dist/cctp-inbound/recover.js +0 -177
  152. package/dist/cctp-inbound/recover.js.map +0 -1
  153. package/dist/cctp-inbound/smartAccount.js +0 -117
  154. package/dist/cctp-inbound/smartAccount.js.map +0 -1
  155. package/dist/cctp-inbound/submit.js +0 -136
  156. package/dist/cctp-inbound/submit.js.map +0 -1
  157. package/dist/cctp-inbound/types.js +0 -5
  158. package/dist/cctp-inbound/types.js.map +0 -1
  159. package/dist/cctp-inbound/userOp.js +0 -151
  160. package/dist/cctp-inbound/userOp.js.map +0 -1
  161. package/dist/client.js +0 -4126
  162. package/dist/client.js.map +0 -1
  163. package/dist/create/arkade-to-lightning.js +0 -76
  164. package/dist/create/arkade-to-lightning.js.map +0 -1
  165. package/dist/create/arkade.js +0 -86
  166. package/dist/create/arkade.js.map +0 -1
  167. package/dist/create/bitcoin-to-arkade.js +0 -76
  168. package/dist/create/bitcoin-to-arkade.js.map +0 -1
  169. package/dist/create/bitcoin.js +0 -77
  170. package/dist/create/bitcoin.js.map +0 -1
  171. package/dist/create/evm-to-arkade.js +0 -80
  172. package/dist/create/evm-to-arkade.js.map +0 -1
  173. package/dist/create/evm-to-bitcoin.js +0 -82
  174. package/dist/create/evm-to-bitcoin.js.map +0 -1
  175. package/dist/create/evm-to-lightning.js +0 -89
  176. package/dist/create/evm-to-lightning.js.map +0 -1
  177. package/dist/create/index.js +0 -21
  178. package/dist/create/index.js.map +0 -1
  179. package/dist/create/lightning-to-arkade.js +0 -69
  180. package/dist/create/lightning-to-arkade.js.map +0 -1
  181. package/dist/create/lightning.js +0 -61
  182. package/dist/create/lightning.js.map +0 -1
  183. package/dist/create/retry.js +0 -71
  184. package/dist/create/retry.js.map +0 -1
  185. package/dist/create/types.js +0 -5
  186. package/dist/create/types.js.map +0 -1
  187. package/dist/escrow/index.js +0 -115
  188. package/dist/escrow/index.js.map +0 -1
  189. package/dist/esplora.js +0 -47
  190. package/dist/esplora.js.map +0 -1
  191. package/dist/evm/coordinator.js +0 -714
  192. package/dist/evm/coordinator.js.map +0 -1
  193. package/dist/evm/htlc.js +0 -278
  194. package/dist/evm/htlc.js.map +0 -1
  195. package/dist/evm/index.js +0 -10
  196. package/dist/evm/index.js.map +0 -1
  197. package/dist/evm/signing.js +0 -70
  198. package/dist/evm/signing.js.map +0 -1
  199. package/dist/evm/wallet.js +0 -133
  200. package/dist/evm/wallet.js.map +0 -1
  201. package/dist/generated/api.js +0 -6
  202. package/dist/generated/api.js.map +0 -1
  203. package/dist/logging.js +0 -130
  204. package/dist/logging.js.map +0 -1
  205. package/dist/price-calculations.js +0 -135
  206. package/dist/price-calculations.js.map +0 -1
  207. package/dist/redeem/arkade.js +0 -416
  208. package/dist/redeem/arkade.js.map +0 -1
  209. package/dist/redeem/ethereum.js +0 -206
  210. package/dist/redeem/ethereum.js.map +0 -1
  211. package/dist/redeem/gasless.js +0 -73
  212. package/dist/redeem/gasless.js.map +0 -1
  213. package/dist/redeem/index.js +0 -189
  214. package/dist/redeem/index.js.map +0 -1
  215. package/dist/redeem/types.js +0 -36
  216. package/dist/redeem/types.js.map +0 -1
  217. package/dist/refund/arkade.js +0 -200
  218. package/dist/refund/arkade.js.map +0 -1
  219. package/dist/refund/collab-arkade-evm.js +0 -307
  220. package/dist/refund/collab-arkade-evm.js.map +0 -1
  221. package/dist/refund/collab-arkade-lightning.js +0 -245
  222. package/dist/refund/collab-arkade-lightning.js.map +0 -1
  223. package/dist/refund/index.js +0 -12
  224. package/dist/refund/index.js.map +0 -1
  225. package/dist/refund/onchain.js +0 -366
  226. package/dist/refund/onchain.js.map +0 -1
  227. package/dist/signer/index.js +0 -249
  228. package/dist/signer/index.js.map +0 -1
  229. package/dist/storage/idb.js +0 -236
  230. package/dist/storage/idb.js.map +0 -1
  231. package/dist/storage/index.js +0 -98
  232. package/dist/storage/index.js.map +0 -1
  233. package/dist/storage/sqlite.js +0 -206
  234. package/dist/storage/sqlite.js.map +0 -1
  235. package/dist/storage/types.js +0 -9
  236. package/dist/storage/types.js.map +0 -1
  237. package/dist/tokens.js +0 -322
  238. package/dist/tokens.js.map +0 -1
  239. package/dist/usd-price.js +0 -96
  240. package/dist/usd-price.js.map +0 -1
  241. package/dist/usdt0-bridge/constants.js +0 -71
  242. package/dist/usdt0-bridge/constants.js.map +0 -1
  243. package/dist/usdt0-bridge/index.js +0 -11
  244. package/dist/usdt0-bridge/index.js.map +0 -1
  245. package/dist/usdt0-bridge/tracking.js +0 -123
  246. package/dist/usdt0-bridge/tracking.js.map +0 -1
  247. package/dist/usdt0-bridge/utils.js +0 -51
  248. package/dist/usdt0-bridge/utils.js.map +0 -1
  249. package/dist/version.js +0 -6
  250. package/dist/version.js.map +0 -1
  251. package/dist/ws.js +0 -145
  252. package/dist/ws.js.map +0 -1
@@ -0,0 +1,90 @@
1
+ import { createRequire } from 'module';
2
+
3
+ createRequire(import.meta.url);
4
+
5
+ // src/evm/wallet.ts
6
+ function padAddress(addr) {
7
+ return addr.replace(/^0x/i, "").toLowerCase().padStart(64, "0");
8
+ }
9
+ function encodeUint256(value) {
10
+ return value.toString(16).padStart(64, "0");
11
+ }
12
+ var ALLOWANCE_SELECTOR = "0xdd62ed3e";
13
+ var BALANCE_SELECTOR = "0x70a08231";
14
+ var APPROVE_SELECTOR = "0x095ea7b3";
15
+ var TRANSFER_SELECTOR = "0xa9059cbb";
16
+ var MAX_UINT256 = BigInt(
17
+ "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
18
+ );
19
+ function encodeAllowanceCall(tokenAddress, owner, spender) {
20
+ return {
21
+ to: tokenAddress,
22
+ data: `${ALLOWANCE_SELECTOR}${padAddress(owner)}${padAddress(spender)}`
23
+ };
24
+ }
25
+ function encodeBalanceOfCall(tokenAddress, account) {
26
+ return {
27
+ to: tokenAddress,
28
+ data: `${BALANCE_SELECTOR}${padAddress(account)}`
29
+ };
30
+ }
31
+ function encodeMaxApproveData(tokenAddress, spender) {
32
+ return {
33
+ to: tokenAddress,
34
+ data: `${APPROVE_SELECTOR}${padAddress(spender)}${encodeUint256(MAX_UINT256)}`
35
+ };
36
+ }
37
+ function encodeTransferCall(tokenAddress, to, amount) {
38
+ return {
39
+ to: tokenAddress,
40
+ data: `${TRANSFER_SELECTOR}${padAddress(to)}${encodeUint256(amount)}`
41
+ };
42
+ }
43
+ function decodeUint256(hex) {
44
+ const clean = hex.replace(/^0x/i, "");
45
+ if (clean.length === 0) return 0n;
46
+ return BigInt(`0x${clean}`);
47
+ }
48
+ async function simulateTransaction(signer, tx, label) {
49
+ try {
50
+ await signer.call({ to: tx.to, data: tx.data, from: signer.address });
51
+ } catch (err) {
52
+ const msg = err instanceof Error ? err.message : String(err);
53
+ const match = msg.match(/reverted with.*?:\s*(.+)/i) ?? msg.match(/reason:\s*(.+)/i);
54
+ const reason = match?.[1]?.trim() ?? msg;
55
+ throw new Error(`${label} would revert: ${reason}`);
56
+ }
57
+ }
58
+ async function getRevertReason(signer, txHash, blockNumber) {
59
+ try {
60
+ const tx = await signer.getTransaction(txHash);
61
+ if (!tx.to) return "Transaction reverted";
62
+ await signer.call({
63
+ to: tx.to,
64
+ data: tx.input,
65
+ from: tx.from,
66
+ blockNumber
67
+ });
68
+ return "Transaction reverted";
69
+ } catch (err) {
70
+ const msg = err instanceof Error ? err.message : String(err);
71
+ const match = msg.match(/reverted with.*?:\s*(.+)/i) ?? msg.match(/reason:\s*(.+)/i);
72
+ return match?.[1]?.trim() ?? msg;
73
+ }
74
+ }
75
+ function isUserRejection(error) {
76
+ const msg = error instanceof Error ? error.message : String(error);
77
+ return /user rejected|user denied|rejected the request/i.test(msg);
78
+ }
79
+ function parseSignature(signature) {
80
+ const hex = signature.replace(/^0x/, "");
81
+ return {
82
+ r: `0x${hex.slice(0, 64)}`,
83
+ s: `0x${hex.slice(64, 128)}`,
84
+ v: Number.parseInt(hex.slice(128, 130), 16)
85
+ };
86
+ }
87
+
88
+ export { decodeUint256, encodeAllowanceCall, encodeBalanceOfCall, encodeMaxApproveData, encodeTransferCall, getRevertReason, isUserRejection, parseSignature, simulateTransaction };
89
+ //# sourceMappingURL=chunk-EIK6BZWG.js.map
90
+ //# sourceMappingURL=chunk-EIK6BZWG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/evm/wallet.ts"],"names":[],"mappings":"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","file":"chunk-EIK6BZWG.js","sourcesContent":["/**\n * EVM wallet / signer abstraction.\n *\n * Consumers inject an implementation that wraps their wallet library\n * (wagmi, viem, ethers, etc.). The SDK uses this interface to sign\n * typed data and send transactions without depending on any specific\n * EVM library.\n */\n\n// ── EIP-712 typed data ───────────────────────────────────────────────────────\n\n/** Generic EIP-712 typed data that can be passed to a wallet for signing. */\nexport interface EIP712TypedData {\n domain: {\n name?: string;\n version?: string;\n chainId?: number;\n verifyingContract?: string;\n };\n types: Record<string, Array<{ name: string; type: string }>>;\n primaryType: string;\n message: Record<string, unknown>;\n}\n\n// ── Signer interface ─────────────────────────────────────────────────────────\n\n/**\n * Minimal EVM signer that the SDK needs to fund and refund swaps.\n *\n * Example implementation using wagmi/viem:\n * ```ts\n * const signer: EvmSigner = {\n * address: walletClient.account.address,\n * chainId: walletClient.chain.id,\n * signTypedData: (td) => walletClient.signTypedData({ ...td, account: walletClient.account }),\n * sendTransaction: (tx) => walletClient.sendTransaction({ to: tx.to, data: tx.data, chain, gas: tx.gas }),\n * waitForReceipt: (hash) => publicClient.waitForTransactionReceipt({ hash }),\n * getTransaction: (hash) => publicClient.getTransaction({ hash }),\n * call: (tx) => publicClient.call({ to: tx.to, data: tx.data, account: tx.from, blockNumber: tx.blockNumber }),\n * };\n * ```\n */\nexport interface EvmSigner {\n /** The connected wallet address (checksummed or lowercase hex). */\n address: string;\n /** Current chain ID the wallet is connected to. */\n chainId: number;\n\n /**\n * Sign EIP-712 typed data.\n * Must return the 65-byte hex signature (0x-prefixed).\n */\n signTypedData(typedData: EIP712TypedData): Promise<string>;\n\n /**\n * Sign a raw message hash (personal_sign style).\n *\n * **Required for the CCTP-inbound flow** — Kernel signs the UserOp\n * hash via `signMessage({ raw })` on the owner. The direct-Permit2\n * path does not call this, so existing consumers can leave it\n * unimplemented.\n *\n * For wagmi/Privy/viem consumers this is a one-liner:\n * `(m) => walletClient.signMessage({ account, message: m })`.\n *\n * Must return the 65-byte hex signature (0x-prefixed).\n */\n signMessage?(message: { raw: string }): Promise<string>;\n\n /**\n * Sign an EIP-7702 authorization tuple.\n *\n * **Required for the CCTP-inbound flow under 7702** — the user's EOA\n * delegates to a Kernel implementation on its first UserOp; the\n * signed authorization rides along with the UserOp and is installed\n * on-chain by the bundler. Subsequent UserOps from the same EOA\n * skip this once delegation exists.\n *\n * The signature is over `keccak256(0x05 || rlp([chainId, address,\n * nonce]))` with **no** EIP-191 prefix — getting this wrong silently\n * fails at submission. viem / wagmi / Privy walletClients implement\n * it correctly via `walletClient.signAuthorization(...)`.\n *\n * For viem consumers this is a one-liner:\n * `(a) => walletClient.signAuthorization({ account, ...a })`.\n */\n signAuthorization?(authorization: {\n chainId: number;\n contractAddress: string;\n nonce: number;\n }): Promise<{\n r: string;\n s: string;\n v?: number;\n yParity: number;\n chainId: number;\n address: string;\n nonce: number;\n }>;\n\n /**\n * Send a raw transaction and return the transaction hash (0x-prefixed).\n *\n * @param tx.to - Target contract address (0x-prefixed)\n * @param tx.data - ABI-encoded calldata (0x-prefixed)\n * @param tx.gas - Optional gas limit; the SDK provides sensible defaults\n */\n sendTransaction(tx: {\n to: string;\n data: string;\n gas?: bigint;\n }): Promise<string>;\n\n /**\n * Wait for a transaction to be mined and return the receipt.\n *\n * The implementation should handle transaction replacements (speed-up /\n * cancel) — e.g. viem's `waitForTransactionReceipt` and ethers'\n * `provider.waitForTransaction` both do this automatically.\n *\n * @param hash - Transaction hash to wait for (0x-prefixed)\n */\n waitForReceipt(hash: string): Promise<TxReceipt>;\n\n /**\n * Get a transaction by hash. Used internally to replay reverted\n * transactions and extract on-chain revert reasons.\n *\n * @param hash - Transaction hash (0x-prefixed)\n */\n getTransaction(hash: string): Promise<{\n /** Target address, or null for contract creation */\n to: string | null;\n /** ABI-encoded calldata (0x-prefixed) */\n input: string;\n /** Sender address */\n from: string;\n }>;\n\n /**\n * Simulate a call via `eth_call`. Used internally to dry-run\n * transactions before sending and to extract revert reasons.\n *\n * @param tx.to - Target contract address (0x-prefixed)\n * @param tx.data - ABI-encoded calldata (0x-prefixed)\n * @param tx.from - Optional sender address for simulation context\n * @param tx.blockNumber - Optional block number to simulate against\n */\n call(tx: {\n to: string;\n data: string;\n from?: string;\n blockNumber?: bigint;\n }): Promise<string>;\n}\n\n// ── Transaction receipt ──────────────────────────────────────────────────────\n\nexport interface TxReceipt {\n status: \"success\" | \"reverted\";\n blockNumber: bigint;\n transactionHash: string;\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n/**\n * Normalise a 20-byte address to a 32-byte ABI-encoded word (no 0x prefix).\n */\nfunction padAddress(addr: string): string {\n return addr.replace(/^0x/i, \"\").toLowerCase().padStart(64, \"0\");\n}\n\n/**\n * Encode a uint256 as a 32-byte ABI word (no 0x prefix).\n */\nfunction encodeUint256(value: bigint): string {\n return value.toString(16).padStart(64, \"0\");\n}\n\n// ERC-20 function selectors\nconst ALLOWANCE_SELECTOR = \"0xdd62ed3e\"; // allowance(address,address)\nconst BALANCE_SELECTOR = \"0x70a08231\"; // balanceOf(address)\nconst APPROVE_SELECTOR = \"0x095ea7b3\"; // approve(address,uint256)\nconst TRANSFER_SELECTOR = \"0xa9059cbb\"; // transfer(address,uint256)\n\nconst MAX_UINT256 = BigInt(\n \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n);\n\n/**\n * Encode an `allowance(owner, spender)` call.\n */\nexport function encodeAllowanceCall(\n tokenAddress: string,\n owner: string,\n spender: string,\n): { to: string; data: string } {\n return {\n to: tokenAddress,\n data: `${ALLOWANCE_SELECTOR}${padAddress(owner)}${padAddress(spender)}`,\n };\n}\n\n/**\n * Encode a `balanceOf(account)` call.\n */\nexport function encodeBalanceOfCall(\n tokenAddress: string,\n account: string,\n): { to: string; data: string } {\n return {\n to: tokenAddress,\n data: `${BALANCE_SELECTOR}${padAddress(account)}`,\n };\n}\n\n/**\n * Encode an `approve(spender, type(uint256).max)` transaction.\n */\nexport function encodeMaxApproveData(\n tokenAddress: string,\n spender: string,\n): { to: string; data: string } {\n return {\n to: tokenAddress,\n data: `${APPROVE_SELECTOR}${padAddress(spender)}${encodeUint256(MAX_UINT256)}`,\n };\n}\n\n/**\n * Encode a `transfer(to, amount)` transaction.\n */\nexport function encodeTransferCall(\n tokenAddress: string,\n to: string,\n amount: bigint,\n): { to: string; data: string } {\n return {\n to: tokenAddress,\n data: `${TRANSFER_SELECTOR}${padAddress(to)}${encodeUint256(amount)}`,\n };\n}\n\n/**\n * Decode a 32-byte ABI-encoded uint256 from a hex string.\n */\nexport function decodeUint256(hex: string): bigint {\n const clean = hex.replace(/^0x/i, \"\");\n if (clean.length === 0) return 0n;\n return BigInt(`0x${clean}`);\n}\n\n// ── Simulation ───────────────────────────────────────────────────────────────\n\n/**\n * Simulate a transaction via `eth_call`. Throws with the revert reason\n * if the call would fail, so callers don't burn gas on doomed transactions.\n */\nexport async function simulateTransaction(\n signer: EvmSigner,\n tx: { to: string; data: string },\n label: string,\n): Promise<void> {\n try {\n await signer.call({ to: tx.to, data: tx.data, from: signer.address });\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n const match =\n msg.match(/reverted with.*?:\\s*(.+)/i) ?? msg.match(/reason:\\s*(.+)/i);\n const reason = match?.[1]?.trim() ?? msg;\n throw new Error(`${label} would revert: ${reason}`);\n }\n}\n\n// ── Revert reason extraction ─────────────────────────────────────────────────\n\n/**\n * Replay a reverted transaction to extract the on-chain revert reason.\n */\nexport async function getRevertReason(\n signer: EvmSigner,\n txHash: string,\n blockNumber: bigint,\n): Promise<string> {\n try {\n const tx = await signer.getTransaction(txHash);\n if (!tx.to) return \"Transaction reverted\";\n await signer.call({\n to: tx.to,\n data: tx.input,\n from: tx.from,\n blockNumber,\n });\n return \"Transaction reverted\";\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n const match =\n msg.match(/reverted with.*?:\\s*(.+)/i) ?? msg.match(/reason:\\s*(.+)/i);\n return match?.[1]?.trim() ?? msg;\n }\n}\n\n// ── Error classification ─────────────────────────────────────────────────────\n\n/**\n * Returns true if the error message indicates the user rejected the\n * transaction in their wallet (MetaMask, etc.).\n */\nexport function isUserRejection(error: unknown): boolean {\n const msg = error instanceof Error ? error.message : String(error);\n return /user rejected|user denied|rejected the request/i.test(msg);\n}\n\n// ── Signature parsing ────────────────────────────────────────────────────────\n\n/**\n * Parse a 65-byte hex signature into its `v`, `r`, `s` components.\n */\nexport function parseSignature(signature: string): {\n v: number;\n r: string;\n s: string;\n} {\n const hex = signature.replace(/^0x/, \"\");\n return {\n r: `0x${hex.slice(0, 64)}`,\n s: `0x${hex.slice(64, 128)}`,\n v: Number.parseInt(hex.slice(128, 130), 16),\n };\n}\n"]}