@miradexio/client 0.1.1 → 0.1.2

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 (306) hide show
  1. package/README.md +57 -292
  2. package/dist/address/base58.d.ts.map +1 -1
  3. package/dist/address/base58.js +1 -2
  4. package/dist/address/base58.js.map +1 -1
  5. package/dist/address/bech32.d.ts +0 -8
  6. package/dist/address/bech32.d.ts.map +1 -1
  7. package/dist/address/bech32.js +3 -9
  8. package/dist/address/bech32.js.map +1 -1
  9. package/dist/address/evm.d.ts.map +1 -1
  10. package/dist/address/evm.js +1 -2
  11. package/dist/address/evm.js.map +1 -1
  12. package/dist/address/index.d.ts +0 -6
  13. package/dist/address/index.d.ts.map +1 -1
  14. package/dist/address/index.js +6 -9
  15. package/dist/address/index.js.map +1 -1
  16. package/dist/address/monero.d.ts +0 -10
  17. package/dist/address/monero.d.ts.map +1 -1
  18. package/dist/address/monero.js +4 -10
  19. package/dist/address/monero.js.map +1 -1
  20. package/dist/address/polkadot.d.ts +0 -5
  21. package/dist/address/polkadot.d.ts.map +1 -1
  22. package/dist/address/polkadot.js +2 -6
  23. package/dist/address/polkadot.js.map +1 -1
  24. package/dist/address/ton.d.ts +0 -6
  25. package/dist/address/ton.d.ts.map +1 -1
  26. package/dist/address/ton.js +3 -8
  27. package/dist/address/ton.js.map +1 -1
  28. package/dist/api/index.d.ts +0 -19
  29. package/dist/api/index.d.ts.map +1 -1
  30. package/dist/api/index.js +18 -37
  31. package/dist/api/index.js.map +1 -1
  32. package/dist/atomic-swap/drive.d.ts +0 -13
  33. package/dist/atomic-swap/drive.d.ts.map +1 -1
  34. package/dist/atomic-swap/drive.js +66 -111
  35. package/dist/atomic-swap/drive.js.map +1 -1
  36. package/dist/atomic-swap/extract.d.ts +0 -23
  37. package/dist/atomic-swap/extract.d.ts.map +1 -1
  38. package/dist/atomic-swap/extract.js +6 -16
  39. package/dist/atomic-swap/extract.js.map +1 -1
  40. package/dist/atomic-swap/index.d.ts +0 -7
  41. package/dist/atomic-swap/index.d.ts.map +1 -1
  42. package/dist/atomic-swap/index.js +1 -7
  43. package/dist/atomic-swap/index.js.map +1 -1
  44. package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -1
  45. package/dist/atomic-swap/monero-sweep/errors.js +5 -20
  46. package/dist/atomic-swap/monero-sweep/errors.js.map +1 -1
  47. package/dist/atomic-swap/monero-sweep/index.d.ts +0 -13
  48. package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -1
  49. package/dist/atomic-swap/monero-sweep/index.js +30 -56
  50. package/dist/atomic-swap/monero-sweep/index.js.map +1 -1
  51. package/dist/atomic-swap/monero-sweep/ring-select.d.ts +0 -4
  52. package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -1
  53. package/dist/atomic-swap/monero-sweep/ring-select.js +9 -21
  54. package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -1
  55. package/dist/atomic-swap/presign.d.ts +0 -63
  56. package/dist/atomic-swap/presign.d.ts.map +1 -1
  57. package/dist/atomic-swap/presign.js +30 -90
  58. package/dist/atomic-swap/presign.js.map +1 -1
  59. package/dist/atomic-swap/refund.d.ts +0 -18
  60. package/dist/atomic-swap/refund.d.ts.map +1 -1
  61. package/dist/atomic-swap/refund.js +16 -32
  62. package/dist/atomic-swap/refund.js.map +1 -1
  63. package/dist/atomic-swap/run.d.ts +0 -17
  64. package/dist/atomic-swap/run.d.ts.map +1 -1
  65. package/dist/atomic-swap/run.js +11 -25
  66. package/dist/atomic-swap/run.js.map +1 -1
  67. package/dist/atomic-swap/snapshot.d.ts +0 -30
  68. package/dist/atomic-swap/snapshot.d.ts.map +1 -1
  69. package/dist/atomic-swap/snapshot.js +8 -23
  70. package/dist/atomic-swap/snapshot.js.map +1 -1
  71. package/dist/atomic-swap/submit-encsig.d.ts +0 -7
  72. package/dist/atomic-swap/submit-encsig.d.ts.map +1 -1
  73. package/dist/atomic-swap/submit-encsig.js +2 -11
  74. package/dist/atomic-swap/submit-encsig.js.map +1 -1
  75. package/dist/atomic-swap/types.d.ts +2 -55
  76. package/dist/atomic-swap/types.d.ts.map +1 -1
  77. package/dist/atomic-swap/types.js +2 -3
  78. package/dist/atomic-swap/types.js.map +1 -1
  79. package/dist/blockchain/quorum-provider.d.ts +0 -15
  80. package/dist/blockchain/quorum-provider.d.ts.map +1 -1
  81. package/dist/blockchain/quorum-provider.js +7 -9
  82. package/dist/blockchain/quorum-provider.js.map +1 -1
  83. package/dist/cooperative-redeem.d.ts +5 -14
  84. package/dist/cooperative-redeem.d.ts.map +1 -1
  85. package/dist/cooperative-redeem.js +3 -20
  86. package/dist/cooperative-redeem.js.map +1 -1
  87. package/dist/engine/blockchain-querier.d.ts +0 -22
  88. package/dist/engine/blockchain-querier.d.ts.map +1 -1
  89. package/dist/engine/engine-state.d.ts +0 -8
  90. package/dist/engine/engine-state.d.ts.map +1 -1
  91. package/dist/engine/engine-state.js.map +1 -1
  92. package/dist/engine/flow-context.d.ts +0 -20
  93. package/dist/engine/flow-context.d.ts.map +1 -1
  94. package/dist/engine/flow-context.js +17 -41
  95. package/dist/engine/flow-context.js.map +1 -1
  96. package/dist/engine/flows/atomic-flow.d.ts +0 -28
  97. package/dist/engine/flows/atomic-flow.d.ts.map +1 -1
  98. package/dist/engine/flows/atomic-flow.js +64 -121
  99. package/dist/engine/flows/atomic-flow.js.map +1 -1
  100. package/dist/engine/flows/swap-flow.d.ts +0 -19
  101. package/dist/engine/flows/swap-flow.d.ts.map +1 -1
  102. package/dist/engine/flows/swap-flow.js +41 -83
  103. package/dist/engine/flows/swap-flow.js.map +1 -1
  104. package/dist/engine/miradex-engine.d.ts +1 -62
  105. package/dist/engine/miradex-engine.d.ts.map +1 -1
  106. package/dist/engine/miradex-engine.js +18 -50
  107. package/dist/engine/miradex-engine.js.map +1 -1
  108. package/dist/engine/pipeline.d.ts +0 -11
  109. package/dist/engine/pipeline.d.ts.map +1 -1
  110. package/dist/engine/pipeline.js +9 -21
  111. package/dist/engine/pipeline.js.map +1 -1
  112. package/dist/engine/platform.d.ts +0 -160
  113. package/dist/engine/platform.d.ts.map +1 -1
  114. package/dist/engine/platform.js +2 -0
  115. package/dist/engine/platform.js.map +1 -1
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +7 -11
  118. package/dist/index.js.map +1 -1
  119. package/dist/interfaces/blockchain.d.ts +1 -13
  120. package/dist/interfaces/blockchain.d.ts.map +1 -1
  121. package/dist/interfaces/blockchain.js +1 -0
  122. package/dist/interfaces/blockchain.js.map +1 -1
  123. package/dist/interfaces/logger.d.ts +0 -6
  124. package/dist/interfaces/logger.d.ts.map +1 -1
  125. package/dist/interfaces/logger.js.map +1 -1
  126. package/dist/lib/bitcoin/deposit-watcher.d.ts +0 -23
  127. package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -1
  128. package/dist/lib/bitcoin/deposit-watcher.js +7 -31
  129. package/dist/lib/bitcoin/deposit-watcher.js.map +1 -1
  130. package/dist/lib/bitcoin/script-hash.d.ts.map +1 -1
  131. package/dist/lib/bitcoin/script-hash.js +2 -6
  132. package/dist/lib/bitcoin/script-hash.js.map +1 -1
  133. package/dist/lib/bitcoin/sweep.d.ts +0 -30
  134. package/dist/lib/bitcoin/sweep.d.ts.map +1 -1
  135. package/dist/lib/bitcoin/sweep.js +11 -40
  136. package/dist/lib/bitcoin/sweep.js.map +1 -1
  137. package/dist/lib/bitcoin/tx-verify.d.ts +0 -28
  138. package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -1
  139. package/dist/lib/bitcoin/tx-verify.js +20 -61
  140. package/dist/lib/bitcoin/tx-verify.js.map +1 -1
  141. package/dist/lib/bitcoin/wallet.d.ts +0 -38
  142. package/dist/lib/bitcoin/wallet.d.ts.map +1 -1
  143. package/dist/lib/bitcoin/wallet.js +13 -38
  144. package/dist/lib/bitcoin/wallet.js.map +1 -1
  145. package/dist/lib/crypto/bytes.d.ts +0 -14
  146. package/dist/lib/crypto/bytes.d.ts.map +1 -1
  147. package/dist/lib/crypto/bytes.js +5 -14
  148. package/dist/lib/crypto/bytes.js.map +1 -1
  149. package/dist/lib/crypto/errors.d.ts +0 -5
  150. package/dist/lib/crypto/errors.d.ts.map +1 -1
  151. package/dist/lib/crypto/errors.js +2 -5
  152. package/dist/lib/crypto/errors.js.map +1 -1
  153. package/dist/lib/crypto/libp2p-identity.d.ts +0 -15
  154. package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -1
  155. package/dist/lib/crypto/libp2p-identity.js +16 -28
  156. package/dist/lib/crypto/libp2p-identity.js.map +1 -1
  157. package/dist/lib/crypto/mnemonic.d.ts +0 -9
  158. package/dist/lib/crypto/mnemonic.d.ts.map +1 -1
  159. package/dist/lib/crypto/mnemonic.js +11 -27
  160. package/dist/lib/crypto/mnemonic.js.map +1 -1
  161. package/dist/lib/crypto/platform.d.ts +0 -6
  162. package/dist/lib/crypto/platform.d.ts.map +1 -1
  163. package/dist/lib/crypto/platform.js +2 -6
  164. package/dist/lib/crypto/platform.js.map +1 -1
  165. package/dist/lib/crypto/scalars.d.ts +0 -23
  166. package/dist/lib/crypto/scalars.d.ts.map +1 -1
  167. package/dist/lib/crypto/scalars.js +10 -23
  168. package/dist/lib/crypto/scalars.js.map +1 -1
  169. package/dist/lib/crypto/types.d.ts +0 -4
  170. package/dist/lib/crypto/types.d.ts.map +1 -1
  171. package/dist/lib/crypto/wasm.d.ts +0 -23
  172. package/dist/lib/crypto/wasm.d.ts.map +1 -1
  173. package/dist/lib/crypto/wasm.js +9 -16
  174. package/dist/lib/crypto/wasm.js.map +1 -1
  175. package/dist/lib/default-config.d.ts +1 -59
  176. package/dist/lib/default-config.d.ts.map +1 -1
  177. package/dist/lib/default-config.js +22 -61
  178. package/dist/lib/default-config.js.map +1 -1
  179. package/dist/lib/errors.d.ts +0 -54
  180. package/dist/lib/errors.d.ts.map +1 -1
  181. package/dist/lib/errors.js +12 -35
  182. package/dist/lib/errors.js.map +1 -1
  183. package/dist/lib/keystore.d.ts +0 -24
  184. package/dist/lib/keystore.d.ts.map +1 -1
  185. package/dist/lib/keystore.js +3 -10
  186. package/dist/lib/keystore.js.map +1 -1
  187. package/dist/lib/monero/output-scanner.d.ts +0 -18
  188. package/dist/lib/monero/output-scanner.d.ts.map +1 -1
  189. package/dist/lib/monero/output-scanner.js +17 -40
  190. package/dist/lib/monero/output-scanner.js.map +1 -1
  191. package/dist/lib/monero/rpc.d.ts +0 -64
  192. package/dist/lib/monero/rpc.d.ts.map +1 -1
  193. package/dist/lib/monero/rpc.js +17 -59
  194. package/dist/lib/monero/rpc.js.map +1 -1
  195. package/dist/lib/monero/verify-lock.d.ts +0 -12
  196. package/dist/lib/monero/verify-lock.d.ts.map +1 -1
  197. package/dist/lib/monero/verify-lock.js +9 -24
  198. package/dist/lib/monero/verify-lock.js.map +1 -1
  199. package/dist/lib/monero/verify-sweep.d.ts +0 -20
  200. package/dist/lib/monero/verify-sweep.d.ts.map +1 -1
  201. package/dist/lib/monero/verify-sweep.js +7 -25
  202. package/dist/lib/monero/verify-sweep.js.map +1 -1
  203. package/dist/lib/pow-solver.d.ts.map +1 -1
  204. package/dist/lib/pow-solver.js +3 -8
  205. package/dist/lib/pow-solver.js.map +1 -1
  206. package/dist/lib/retry.d.ts +7 -64
  207. package/dist/lib/retry.d.ts.map +1 -1
  208. package/dist/lib/retry.js +13 -13
  209. package/dist/lib/retry.js.map +1 -1
  210. package/dist/portable.d.ts.map +1 -1
  211. package/dist/portable.js +3 -4
  212. package/dist/portable.js.map +1 -1
  213. package/dist/quote-binding.d.ts +0 -13
  214. package/dist/quote-binding.d.ts.map +1 -1
  215. package/dist/quote-binding.js +3 -18
  216. package/dist/quote-binding.js.map +1 -1
  217. package/dist/swap-executor.d.ts +1 -5
  218. package/dist/swap-executor.d.ts.map +1 -1
  219. package/dist/swap-executor.js +1 -1
  220. package/dist/swap-executor.js.map +1 -1
  221. package/dist/types/api.d.ts +0 -6
  222. package/dist/types/api.d.ts.map +1 -1
  223. package/dist/types/api.js +6 -9
  224. package/dist/types/api.js.map +1 -1
  225. package/dist/types/errors.d.ts +0 -7
  226. package/dist/types/errors.d.ts.map +1 -1
  227. package/dist/types/errors.js +2 -7
  228. package/dist/types/errors.js.map +1 -1
  229. package/dist/types/index.js +1 -1
  230. package/dist/types/index.js.map +1 -1
  231. package/dist/types/keys.d.ts +0 -15
  232. package/dist/types/keys.d.ts.map +1 -1
  233. package/dist/types/protocol.d.ts +0 -51
  234. package/dist/types/protocol.d.ts.map +1 -1
  235. package/dist/types/protocol.js +3 -8
  236. package/dist/types/protocol.js.map +1 -1
  237. package/dist/types/status.d.ts.map +1 -1
  238. package/dist/types/status.js +9 -14
  239. package/dist/types/status.js.map +1 -1
  240. package/dist/types/verification.d.ts +0 -10
  241. package/dist/types/verification.d.ts.map +1 -1
  242. package/dist/types/verification.js +7 -15
  243. package/dist/types/verification.js.map +1 -1
  244. package/dist/verification/chainflip-networks.d.ts +2 -35
  245. package/dist/verification/chainflip-networks.d.ts.map +1 -1
  246. package/dist/verification/chainflip-networks.js +12 -4
  247. package/dist/verification/chainflip-networks.js.map +1 -1
  248. package/dist/verification/chainflip.d.ts +0 -40
  249. package/dist/verification/chainflip.d.ts.map +1 -1
  250. package/dist/verification/chainflip.js +49 -129
  251. package/dist/verification/chainflip.js.map +1 -1
  252. package/dist/verification/constants.d.ts +0 -40
  253. package/dist/verification/constants.d.ts.map +1 -1
  254. package/dist/verification/constants.js +14 -40
  255. package/dist/verification/constants.js.map +1 -1
  256. package/dist/verification/index.d.ts +0 -26
  257. package/dist/verification/index.d.ts.map +1 -1
  258. package/dist/verification/index.js +8 -12
  259. package/dist/verification/index.js.map +1 -1
  260. package/dist/verification/memo.d.ts +0 -15
  261. package/dist/verification/memo.d.ts.map +1 -1
  262. package/dist/verification/memo.js +9 -27
  263. package/dist/verification/memo.js.map +1 -1
  264. package/dist/verification/near-intents.d.ts +0 -63
  265. package/dist/verification/near-intents.d.ts.map +1 -1
  266. package/dist/verification/near-intents.js +25 -67
  267. package/dist/verification/near-intents.js.map +1 -1
  268. package/dist/verification/rate-oracle.d.ts +0 -22
  269. package/dist/verification/rate-oracle.d.ts.map +1 -1
  270. package/dist/verification/rate-oracle.js +6 -11
  271. package/dist/verification/rate-oracle.js.map +1 -1
  272. package/dist/verification/thorchain-networks.d.ts +0 -27
  273. package/dist/verification/thorchain-networks.d.ts.map +1 -1
  274. package/dist/verification/thorchain-networks.js +13 -15
  275. package/dist/verification/thorchain-networks.js.map +1 -1
  276. package/dist/verification/thorchain.d.ts +0 -30
  277. package/dist/verification/thorchain.d.ts.map +1 -1
  278. package/dist/verification/thorchain.js +24 -47
  279. package/dist/verification/thorchain.js.map +1 -1
  280. package/dist/wasm-pins.d.ts +3 -3
  281. package/dist/wasm-pins.js +1 -1
  282. package/dist/wire/near-intents.zod.d.ts +0 -27
  283. package/dist/wire/near-intents.zod.d.ts.map +1 -1
  284. package/dist/wire/near-intents.zod.js +15 -23
  285. package/dist/wire/near-intents.zod.js.map +1 -1
  286. package/dist/wire/server/action.zod.d.ts +0 -10
  287. package/dist/wire/server/action.zod.d.ts.map +1 -1
  288. package/dist/wire/server/action.zod.js +8 -14
  289. package/dist/wire/server/action.zod.js.map +1 -1
  290. package/dist/wire/server/common.zod.d.ts +0 -13
  291. package/dist/wire/server/common.zod.d.ts.map +1 -1
  292. package/dist/wire/server/common.zod.js +6 -14
  293. package/dist/wire/server/common.zod.js.map +1 -1
  294. package/dist/wire/server/swap.zod.d.ts +0 -42
  295. package/dist/wire/server/swap.zod.d.ts.map +1 -1
  296. package/dist/wire/server/swap.zod.js +12 -26
  297. package/dist/wire/server/swap.zod.js.map +1 -1
  298. package/dist/wire/thorchain.zod.d.ts +0 -8
  299. package/dist/wire/thorchain.zod.d.ts.map +1 -1
  300. package/dist/wire/thorchain.zod.js +3 -8
  301. package/dist/wire/thorchain.zod.js.map +1 -1
  302. package/package.json +4 -4
  303. package/wasm/miradex-rust/README.md +3 -4
  304. package/wasm/miradex-rust/miradex_rust.d.ts +4 -6
  305. package/wasm/miradex-rust/miradex_rust.js +4 -6
  306. package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
@@ -1,52 +1,12 @@
1
1
  export declare const VERIFY_MAX_ATTEMPTS = 12;
2
2
  export declare const VERIFY_RETRY_DELAY_MS = 5000;
3
3
  export declare const VERIFY_FETCH_TIMEOUT_MS = 10000;
4
- /**
5
- * Chainflip's hosted broker REST `/v2/swaps/<composite>` lags channel
6
- * creation by ~30-60s — the broker creates the on-chain channel via
7
- * `broker_request_swap_deposit_address` immediately, but the REST
8
- * indexer ingests it on its own cadence. A first-attempt 404 is normal.
9
- *
10
- * Total retry budget covers the typical worst-case ingest delay; the
11
- * backoff schedule starts tight (so the common case clears in seconds)
12
- * and lengthens to avoid hammering the gateway during real outages.
13
- */
14
4
  export declare const CHAINFLIP_REST_RETRY_TOTAL_MS = 120000;
15
5
  export declare const CHAINFLIP_REST_RETRY_BACKOFF_MS: readonly number[];
16
6
  export declare const ATOMICSWAP_TIMELOCK_MIN_BLOCKS = 5;
17
7
  export declare const ATOMICSWAP_TIMELOCK_MAX_BLOCKS = 288;
18
- /**
19
- * Bounds for the BIP68 sequence applied to TxPunish — the relative timelock
20
- * Alice must wait after TxCancel confirms before she can broadcast TxPunish.
21
- *
22
- * The minimum is the size of the refund window Bob is guaranteed: between
23
- * TxCancel confirming and TxPunish becoming spendable, Bob must have time to
24
- * notice, decrypt the encsig, and broadcast TxFullRefund/TxPartialRefund. A
25
- * sub-block window degenerates into a fee race that Alice can win by
26
- * out-of-band miner submission.
27
- *
28
- * Production deployments should configure ASB with the documented mainnet
29
- * defaults (≥72). This lower bound (5) is the smallest positive integer that
30
- * still rejects the degenerate `0` case the V-1 fix guards against, and exists
31
- * to allow regtest tier2/system-test fixtures (which use 50) to run without
32
- * patching every consumer of these constants.
33
- *
34
- * @security Closes V-1 — the Rust core enforces real production bounds via the
35
- * env config (e.g. `bitcoin_punish_timelock` defaults).
36
- */
37
8
  export declare const ATOMICSWAP_PUNISH_TIMELOCK_MIN_BLOCKS = 5;
38
9
  export declare const ATOMICSWAP_PUNISH_TIMELOCK_MAX_BLOCKS = 288;
39
- /**
40
- * Bounds for the BIP68 sequence applied to TxReclaim — the additional wait
41
- * after TxPartialRefund confirms before Bob can pull the amnesty back.
42
- *
43
- * Min is 1 — only the degenerate `0` case is rejected. Matches the Rust
44
- * source (xmr-atomic-swap/core/swap-env/src/env.rs:65,88) which sets
45
- * `bitcoin_remaining_refund_timelock = 2` for both mainnet and testnet;
46
- * a stricter floor here would reject the Rust-shipped defaults.
47
- *
48
- * @security Closes V-1 (amnesty-path variant) — only `0` is unsafe.
49
- */
50
10
  export declare const ATOMICSWAP_REMAINING_REFUND_TIMELOCK_MIN_BLOCKS = 1;
51
11
  export declare const ATOMICSWAP_REMAINING_REFUND_TIMELOCK_MAX_BLOCKS = 288;
52
12
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/verification/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,SAAU,CAAC;AACrD,eAAO,MAAM,+BAA+B,EAAE,SAAS,MAAM,EAE5D,CAAC;AACF,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qCAAqC,IAAI,CAAC;AACvD,eAAO,MAAM,qCAAqC,MAAM,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+CAA+C,IAAI,CAAC;AACjE,eAAO,MAAM,+CAA+C,MAAM,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/verification/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAO9C,eAAO,MAAM,6BAA6B,SAAU,CAAC;AACrD,eAAO,MAAM,+BAA+B,EAAE,SAAS,MAAM,EAE5D,CAAC;AACF,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAOlD,eAAO,MAAM,qCAAqC,IAAI,CAAC;AACvD,eAAO,MAAM,qCAAqC,MAAM,CAAC;AAMzD,eAAO,MAAM,+CAA+C,IAAI,CAAC;AACjE,eAAO,MAAM,+CAA+C,MAAM,CAAC"}
@@ -1,54 +1,28 @@
1
1
  export const VERIFY_MAX_ATTEMPTS = 12;
2
2
  export const VERIFY_RETRY_DELAY_MS = 5_000;
3
3
  export const VERIFY_FETCH_TIMEOUT_MS = 10_000;
4
- /**
5
- * Chainflip's hosted broker REST `/v2/swaps/<composite>` lags channel
6
- * creation by ~30-60s the broker creates the on-chain channel via
7
- * `broker_request_swap_deposit_address` immediately, but the REST
8
- * indexer ingests it on its own cadence. A first-attempt 404 is normal.
9
- *
10
- * Total retry budget covers the typical worst-case ingest delay; the
11
- * backoff schedule starts tight (so the common case clears in seconds)
12
- * and lengthens to avoid hammering the gateway during real outages.
13
- */
4
+ // Chainflip's broker REST /v2/swaps/<composite> lags channel creation by
5
+ // ~30-60s (the on-chain channel exists immediately, the REST indexer
6
+ // catches up on its own cadence). First-attempt 404 is normal.
7
+ // Backoff starts tight so the common case clears in seconds, then
8
+ // lengthens so we don't hammer the gateway during real outages.
14
9
  export const CHAINFLIP_REST_RETRY_TOTAL_MS = 120_000;
15
10
  export const CHAINFLIP_REST_RETRY_BACKOFF_MS = [
16
11
  1_000, 2_000, 4_000, 8_000, 16_000, 30_000, 30_000, 30_000,
17
12
  ];
18
13
  export const ATOMICSWAP_TIMELOCK_MIN_BLOCKS = 5;
19
14
  export const ATOMICSWAP_TIMELOCK_MAX_BLOCKS = 288;
20
- /**
21
- * Bounds for the BIP68 sequence applied to TxPunish the relative timelock
22
- * Alice must wait after TxCancel confirms before she can broadcast TxPunish.
23
- *
24
- * The minimum is the size of the refund window Bob is guaranteed: between
25
- * TxCancel confirming and TxPunish becoming spendable, Bob must have time to
26
- * notice, decrypt the encsig, and broadcast TxFullRefund/TxPartialRefund. A
27
- * sub-block window degenerates into a fee race that Alice can win by
28
- * out-of-band miner submission.
29
- *
30
- * Production deployments should configure ASB with the documented mainnet
31
- * defaults (≥72). This lower bound (5) is the smallest positive integer that
32
- * still rejects the degenerate `0` case the V-1 fix guards against, and exists
33
- * to allow regtest tier2/system-test fixtures (which use 50) to run without
34
- * patching every consumer of these constants.
35
- *
36
- * @security Closes V-1 — the Rust core enforces real production bounds via the
37
- * env config (e.g. `bitcoin_punish_timelock` defaults).
38
- */
15
+ // V-1: BIP68 bounds for TxPunish (relative timelock Alice waits after
16
+ // TxCancel confirms). Floor is 5 the smallest positive integer that
17
+ // rejects the degenerate 0 case while still admitting regtest fixtures
18
+ // that use 50. Real production bounds (>=72 mainnet) are enforced in the
19
+ // Rust core via env config.
39
20
  export const ATOMICSWAP_PUNISH_TIMELOCK_MIN_BLOCKS = 5;
40
21
  export const ATOMICSWAP_PUNISH_TIMELOCK_MAX_BLOCKS = 288;
41
- /**
42
- * Bounds for the BIP68 sequence applied to TxReclaim — the additional wait
43
- * after TxPartialRefund confirms before Bob can pull the amnesty back.
44
- *
45
- * Min is 1 — only the degenerate `0` case is rejected. Matches the Rust
46
- * source (xmr-atomic-swap/core/swap-env/src/env.rs:65,88) which sets
47
- * `bitcoin_remaining_refund_timelock = 2` for both mainnet and testnet;
48
- * a stricter floor here would reject the Rust-shipped defaults.
49
- *
50
- * @security Closes V-1 (amnesty-path variant) — only `0` is unsafe.
51
- */
22
+ // V-1 amnesty variant: BIP68 bounds for TxReclaim. Min is 1 — only the
23
+ // degenerate 0 is unsafe. Matches the Rust default
24
+ // bitcoin_remaining_refund_timelock = 2 (xmr-atomic-swap/core/swap-env/
25
+ // src/env.rs:65,88).
52
26
  export const ATOMICSWAP_REMAINING_REFUND_TIMELOCK_MIN_BLOCKS = 1;
53
27
  export const ATOMICSWAP_REMAINING_REFUND_TIMELOCK_MAX_BLOCKS = 288;
54
28
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/verification/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,CAAC;AACrD,MAAM,CAAC,MAAM,+BAA+B,GAAsB;IAChE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAC3D,CAAC;AACF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,+CAA+C,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/verification/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,yEAAyE;AACzE,qEAAqE;AACrE,+DAA+D;AAC/D,kEAAkE;AAClE,gEAAgE;AAChE,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,CAAC;AACrD,MAAM,CAAC,MAAM,+BAA+B,GAAsB;IAChE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAC3D,CAAC;AACF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,sEAAsE;AACtE,sEAAsE;AACtE,uEAAuE;AACvE,yEAAyE;AACzE,4BAA4B;AAC5B,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAEzD,uEAAuE;AACvE,mDAAmD;AACnD,wEAAwE;AACxE,qBAAqB;AACrB,MAAM,CAAC,MAAM,+CAA+C,GAAG,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,+CAA+C,GAAG,GAAG,CAAC"}
@@ -1,12 +1,3 @@
1
- /**
2
- * Deposit-address verification dispatcher.
3
- *
4
- * Each provider has a dedicated verification path that validates the deposit
5
- * address against the provider's own infrastructure (THORNode vaults,
6
- * Chainflip channels, NEAR intent registry, atomic-swap lock script). Common
7
- * client-side checks (address presence, output amount, destination match) run
8
- * for every provider.
9
- */
10
1
  import type { Logger } from '../interfaces/logger.js';
11
2
  import type { SwapVerification, VerificationResult } from '../types/index.js';
12
3
  import { verifyAtomicSwap } from './atomic-swap.js';
@@ -48,24 +39,7 @@ export interface VerifyDepositParams {
48
39
  readonly fetchFn?: typeof globalThis.fetch;
49
40
  readonly resume?: boolean;
50
41
  readonly logger?: Logger;
51
- /**
52
- * External abort signal. Wired from the engine's AbortController so a
53
- * caller-side `engine.destroy()` actually stops verification mid-flight.
54
- * Without this, the chainflip REST retry loop alone can keep polling
55
- * for up to CHAINFLIP_REST_RETRY_TOTAL_MS (120 s) after the engine has
56
- * been told to stop — burning user bandwidth and racing whatever the
57
- * caller spun up to replace it.
58
- */
59
42
  readonly signal?: AbortSignal;
60
43
  }
61
- /**
62
- * Verify a deposit address against the authoritative infrastructure for its
63
- * provider. Common client-side checks (address presence, output amount,
64
- * destination match) run for every provider.
65
- *
66
- * @throws {VerificationError} `E_PROVIDER_UNKNOWN` for an unrecognised
67
- * provider; `E_UNEXPECTED_TIMELOCK` when `timelock_blocks` is set for a
68
- * non-atomicswap provider.
69
- */
70
44
  export declare function verifyDepositAddress(params: VerifyDepositParams): Promise<VerificationResult>;
71
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ // Per-provider verification dispatcher. Each path validates against the
2
+ // provider's own infrastructure (THORNode vaults, Chainflip channels,
3
+ // 1Click intent registry, atomic-swap lock script). Common client-side
4
+ // checks (address presence, output amount, destination match) run for all.
1
5
  import { noopLogger } from '../interfaces/logger.js';
2
6
  import { VerificationError } from '../types/index.js';
3
7
  import { verifyAtomicSwap } from './atomic-swap.js';
@@ -14,15 +18,8 @@ export { THORCHAIN_VERIFICATION_NETWORKS, thorchainEndpointsForNetwork, } from '
14
18
  export { fetchNearIntentStatus, requireIntentBinds, requireIntentDeadlineMargin, verifyNearIntentOnChain, } from './near-intents.js';
15
19
  export { fetchConsensusRate } from './rate-oracle.js';
16
20
  export { VERIFY_FETCH_TIMEOUT_MS, VERIFY_MAX_ATTEMPTS, VERIFY_RETRY_DELAY_MS } from './constants.js';
17
- /**
18
- * Verify a deposit address against the authoritative infrastructure for its
19
- * provider. Common client-side checks (address presence, output amount,
20
- * destination match) run for every provider.
21
- *
22
- * @throws {VerificationError} `E_PROVIDER_UNKNOWN` for an unrecognised
23
- * provider; `E_UNEXPECTED_TIMELOCK` when `timelock_blocks` is set for a
24
- * non-atomicswap provider.
25
- */
21
+ // Throws E_PROVIDER_UNKNOWN for an unknown provider, E_UNEXPECTED_TIMELOCK
22
+ // when timelock_blocks is set on a non-atomicswap provider.
26
23
  export async function verifyDepositAddress(params) {
27
24
  const { depositAddress, verification, destAddress, refundAddress, toToken, amount, fromChain, toChain, fromToken, network = 'mainnet', protocol, expectedAmountOut, expectedDestAddress, fetchFn = globalThis.fetch, resume, logger = noopLogger, signal, } = params;
28
25
  const verifyParams = {
@@ -34,9 +31,8 @@ export async function verifyDepositAddress(params) {
34
31
  toChain,
35
32
  fromToken,
36
33
  };
37
- // AV-A.13 scope: timelock_blocks is only meaningful for atomicswap. If
38
- // any other provider carries one, it's a client-side bug or a server
39
- // confusion attempt — reject loudly.
34
+ // AV-A.13: timelock_blocks is only meaningful for atomicswap. Anything
35
+ // else is a client bug or a server confusion attempt; fail loud.
40
36
  if (verification.provider !== 'atomicswap' && protocol?.timelock_blocks !== undefined) {
41
37
  throw new VerificationError('E_UNEXPECTED_TIMELOCK', `timelock_blocks is set for non-atomicswap provider ${verification.provider}`);
42
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"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"}
@@ -7,21 +7,6 @@ export interface ParsedThorchainMemo {
7
7
  readonly affiliate?: string;
8
8
  readonly affiliateFeeBps?: number;
9
9
  }
10
- /**
11
- * Parse a THORChain memo string. Accepts `SWAP:`, `=:`, and `s:` prefixes
12
- * followed by asset, destination, optional min-out (either a plain integer
13
- * or the streaming form `LIMIT/INTERVAL/QUANTITY`), optional affiliate,
14
- * optional affiliate fee in bps.
15
- *
16
- * @throws {VerificationError} `E_MEMO_MALFORMED` when the memo does not
17
- * match the canonical ABI.
18
- */
19
10
  export declare function parseThorchainMemo(memo: string): ParsedThorchainMemo;
20
- /**
21
- * Assert the parsed memo's destination field equals the expected address.
22
- *
23
- * @throws {VerificationError} `E_MEMO_DEST_MISMATCH` on mismatch.
24
- * @throws {VerificationError} `E_MEMO_MALFORMED` if the memo fails to parse.
25
- */
26
11
  export declare function requireMemoBindsDestination(memo: string, expectedDestAddress: string): void;
27
12
  //# sourceMappingURL=memo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/verification/memo.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAepE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAQ3F"}
1
+ {"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/verification/memo.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAepE;AAGD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAQ3F"}
@@ -1,26 +1,13 @@
1
- /**
2
- * THORChain memo parsing and strict binding.
3
- *
4
- * Old code used `memo.includes(destAddress)` which matches any memo where the
5
- * destination address is a substring. An attacker-controlled memo of the form
6
- * `SWAP:ETH.ETH:0xATTACKER:0:affid_<USER_ADDR>:10` would pass that check.
7
- *
8
- * The strict parser matches the THORChain memo ABI and compares the
9
- * destination field only.
10
- *
11
- * @security Closes AV-A.14 variant / AV-K.6.
12
- */
1
+ // AV-A.14 / AV-K.6: strict THORChain memo parser.
2
+ // memo.includes(destAddress) was vulnerable: a memo like
3
+ // SWAP:ETH.ETH:0xATTACKER:0:affid_<USER_ADDR>:10 passes a substring check.
4
+ // The parser here matches the memo ABI and compares the destination field only.
13
5
  import { VerificationError } from '../types/index.js';
14
6
  const THORCHAIN_MEMO_RE = /^(?:SWAP|=|s):([A-Z0-9./-]+):([A-Za-z0-9_./]+)(?::(\d+)(?:\/(\d+)\/(\d+))?)?(?::([A-Za-z0-9]+))?(?::(\d+))?$/;
15
- /**
16
- * Parse a THORChain memo string. Accepts `SWAP:`, `=:`, and `s:` prefixes
17
- * followed by asset, destination, optional min-out (either a plain integer
18
- * or the streaming form `LIMIT/INTERVAL/QUANTITY`), optional affiliate,
19
- * optional affiliate fee in bps.
20
- *
21
- * @throws {VerificationError} `E_MEMO_MALFORMED` when the memo does not
22
- * match the canonical ABI.
23
- */
7
+ // Accepts SWAP:, =:, and s: prefixes plus asset, destination, optional
8
+ // min-out (integer or streaming LIMIT/INTERVAL/QUANTITY), optional
9
+ // affiliate, optional affiliate fee bps. Throws E_MEMO_MALFORMED on a
10
+ // memo that doesn't match the canonical ABI.
24
11
  export function parseThorchainMemo(memo) {
25
12
  const match = memo.trim().match(THORCHAIN_MEMO_RE);
26
13
  if (!match) {
@@ -37,12 +24,7 @@ export function parseThorchainMemo(memo) {
37
24
  affiliateFeeBps: feeBps !== undefined ? Number(feeBps) : undefined,
38
25
  };
39
26
  }
40
- /**
41
- * Assert the parsed memo's destination field equals the expected address.
42
- *
43
- * @throws {VerificationError} `E_MEMO_DEST_MISMATCH` on mismatch.
44
- * @throws {VerificationError} `E_MEMO_MALFORMED` if the memo fails to parse.
45
- */
27
+ // Throws E_MEMO_DEST_MISMATCH on mismatch, E_MEMO_MALFORMED if memo doesn't parse.
46
28
  export function requireMemoBindsDestination(memo, expectedDestAddress) {
47
29
  const parsed = parseThorchainMemo(memo);
48
30
  if (parsed.destAddress !== expectedDestAddress) {
@@ -1 +1 @@
1
- {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/verification/memo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,iBAAiB,GACrB,8GAA8G,CAAC;AAYjH;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAChH,OAAO;QACL,KAAK;QACL,WAAW;QACX,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACzD,iBAAiB,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1F,iBAAiB,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1F,SAAS;QACT,eAAe,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KACnE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,mBAA2B;IACnF,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;QAC/C,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,oBAAoB,MAAM,CAAC,WAAW,0BAA0B,mBAAmB,EAAE,CACtF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/verification/memo.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,yDAAyD;AACzD,2EAA2E;AAC3E,gFAAgF;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,iBAAiB,GACrB,8GAA8G,CAAC;AAYjH,uEAAuE;AACvE,mEAAmE;AACnE,sEAAsE;AACtE,6CAA6C;AAC7C,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAChH,OAAO;QACL,KAAK;QACL,WAAW;QACX,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACzD,iBAAiB,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1F,iBAAiB,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1F,SAAS;QACT,eAAe,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KACnE,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,mBAA2B;IACnF,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;QAC/C,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,oBAAoB,MAAM,CAAC,WAAW,0BAA0B,mBAAmB,EAAE,CACtF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,64 +1,18 @@
1
1
  import type { NearIntentsVerification, VerificationResult } from '../types/index.js';
2
2
  import { type NearIntentStatusResponse } from '../wire/near-intents.zod.js';
3
- /**
4
- * Verify a NEAR-Intents deposit address against the 1Click status endpoint.
5
- * Uses an explicit status enum switch (no `!== 'NOT_FOUND'` substring).
6
- */
7
3
  export declare function verifyNearIntents(v: NearIntentsVerification, fetchFn: typeof globalThis.fetch, externalSignal?: AbortSignal): Promise<VerificationResult>;
8
4
  export interface FetchNearIntentStatusInput {
9
5
  readonly statusUrl: string;
10
6
  readonly fetchFn: typeof globalThis.fetch;
11
7
  readonly timeoutMs?: number;
12
8
  }
13
- /**
14
- * Fetch 1Click `/v0/status` and return a flattened intent view. Performs an
15
- * exhaustive enum switch over the 7 real status values.
16
- *
17
- * Mapping of HTTP / status to error codes:
18
- * - HTTP 404 → `E_NEAR_INTENT_NOT_REGISTERED` (deposit address unknown to 1Click)
19
- * - HTTP non-2xx (non-404) → `E_NEAR_INTENT_FAILED` (network / server error)
20
- * - status === 'FAILED' → `E_NEAR_INTENT_FAILED`
21
- * - status in {PENDING_DEPOSIT, KNOWN_DEPOSIT_TX, INCOMPLETE_DEPOSIT,
22
- * PROCESSING, SUCCESS, REFUNDED} → returns the flattened response.
23
- *
24
- * 1Click does not surface an "EXPIRED" status. Past-deadline detection is
25
- * performed via `requireIntentDeadlineMargin` against `quote.deadline`.
26
- *
27
- * @throws {VerificationError} `E_NEAR_INTENT_NOT_REGISTERED` on HTTP 404.
28
- * @throws {VerificationError} `E_NEAR_INTENT_FAILED` on HTTP error or
29
- * `status === 'FAILED'`.
30
- */
31
9
  export declare function fetchNearIntentStatus(input: FetchNearIntentStatusInput): Promise<NearIntentStatusResponse>;
32
10
  export interface RequireIntentBindsInput {
33
11
  readonly destinationAddress: string;
34
- /**
35
- * Optional 1Click destination-asset ID (e.g.
36
- * `nep141:eth-0xa0b8…omft.near`). Pass it to assert the intent really
37
- * targets the destination chain you expect — 1Click's `/v0/status`
38
- * exposes the chain only inside this asset ID, not as a separate field.
39
- */
40
12
  readonly destinationAssetId?: string;
41
13
  readonly refundAddress?: string;
42
14
  }
43
- /**
44
- * Assert the returned intent binds the caller's expected destination address,
45
- * destination asset, and (optional) refund address.
46
- *
47
- * @throws {VerificationError} `E_NEAR_INTENT_MISBINDING` on any mismatch.
48
- */
49
15
  export declare function requireIntentBinds(intent: NearIntentStatusResponse, expected: RequireIntentBindsInput): void;
50
- /**
51
- * Enforce the quote deadline has at least the safety margin (90 min) before
52
- * it expires relative to `Date.now()`. The deadline lives at
53
- * `quoteResponse.quote.deadline` in the raw 1Click response and is surfaced
54
- * as `intent.deadline` after flattening.
55
- *
56
- * Returns silently if `intent.deadline` is null (1Click's dry-run quotes
57
- * omit the deadline; we cannot enforce expiry against an absent value).
58
- *
59
- * @throws {VerificationError} `E_NEAR_INTENT_EXPIRING` when the deadline is
60
- * sooner than the safety margin.
61
- */
62
16
  export declare function requireIntentDeadlineMargin(intent: NearIntentStatusResponse): void;
63
17
  export interface VerifyNearIntentOnChainInput {
64
18
  readonly intentHash: string;
@@ -70,22 +24,5 @@ export interface VerifyNearIntentOnChainInput {
70
24
  readonly fetchFn: typeof globalThis.fetch;
71
25
  readonly timeoutMs?: number;
72
26
  }
73
- /**
74
- * **Direct-blockchain near-intents only — NOT for 1Click swaps.**
75
- *
76
- * Queries the NEAR contract `intents.near` via JSON-RPC `get_intent` and
77
- * cross-checks that an intent hash binds the expected destination + amount.
78
- * This is the verification path for swaps that go through the solver-relay
79
- * directly. 1Click swaps do not surface usable on-chain intent hashes
80
- * suitable for this query — for 1Click, use `fetchNearIntentStatus` +
81
- * `requireIntentBinds` against the `/v0/status` URL instead.
82
- *
83
- * Kept available for a future direct-blockchain near_intents provider
84
- * (`packages/miradex-client/src/...` / `daemons/near/`).
85
- *
86
- * @throws {VerificationError} `E_NEAR_INTENT_FAILED` on RPC error.
87
- * @throws {VerificationError} `E_NEAR_INTENT_CHAIN_DEST` on destination mismatch.
88
- * @throws {VerificationError} `E_NEAR_INTENT_CHAIN_AMOUNT` on amount mismatch.
89
- */
90
27
  export declare function verifyNearIntentOnChain(input: VerifyNearIntentOnChainInput): Promise<void>;
91
28
  //# sourceMappingURL=near-intents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"near-intents.d.ts","sourceRoot":"","sources":["../../src/verification/near-intents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAqB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGxG,OAAO,EAIL,KAAK,wBAAwB,EAC9B,MAAM,6BAA6B,CAAC;AAkBrC;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,uBAAuB,EAC1B,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,EAChC,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA2C7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,wBAAwB,CAAC,CAoDnC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,uBAAuB,GAChC,IAAI,CAyBN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,wBAAwB,GAC/B,IAAI,CAWN;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
1
+ {"version":3,"file":"near-intents.d.ts","sourceRoot":"","sources":["../../src/verification/near-intents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAqB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGxG,OAAO,EAIL,KAAK,wBAAwB,EAC9B,MAAM,6BAA6B,CAAC;AAkBrC,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,uBAAuB,EAC1B,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,EAChC,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAyC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AASD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,wBAAwB,CAAC,CAoDnC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAIpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAGD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,uBAAuB,GAChC,IAAI,CAyBN;AAKD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,wBAAwB,GAC/B,IAAI,CAWN;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAQD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
@@ -2,10 +2,9 @@ import { check, errMsg, failOf, resultOf } from './shared.js';
2
2
  import { VerificationError } from '../types/index.js';
3
3
  import { NearIntentRawStatusSchema, NearIntentOnChainSchema, NearRpcResponseSchema, } from '../wire/near-intents.zod.js';
4
4
  import { VERIFY_FETCH_TIMEOUT_MS } from './constants.js';
5
- // Mirrors the canonical 1Click status enum (7 values). INCOMPLETE_DEPOSIT
6
- // means "deposit observed but below bridge minimum"; from a verification
7
- // standpoint the intent is registered and the address is real, so it counts
8
- // as active. Source: 1Click OpenAPI v0.1.10 + live captures.
5
+ // 1Click status enum (7 values). INCOMPLETE_DEPOSIT means "deposit observed
6
+ // but below bridge minimum" intent is registered and the address is real,
7
+ // so it counts as active here. Source: 1Click OpenAPI v0.1.10.
9
8
  const ACTIVE_STATUSES = [
10
9
  'PENDING_DEPOSIT',
11
10
  'KNOWN_DEPOSIT_TX',
@@ -15,15 +14,10 @@ const ACTIVE_STATUSES = [
15
14
  'REFUNDED',
16
15
  ];
17
16
  const INTENT_DEADLINE_MARGIN_MS = 90 * 60 * 1000;
18
- /**
19
- * Verify a NEAR-Intents deposit address against the 1Click status endpoint.
20
- * Uses an explicit status enum switch (no `!== 'NOT_FOUND'` substring).
21
- */
17
+ // Explicit status enum switch (no '!== NOT_FOUND' substring matching).
22
18
  export async function verifyNearIntents(v, fetchFn, externalSignal) {
23
19
  const checks = [];
24
- // Server schema permits a null status_url (e.g. when the engine declines to
25
- // emit a public-clickable URL). Without one we cannot run the live check —
26
- // surface that explicitly rather than calling fetch() on null.
20
+ // Schema permits null status_url; surface explicitly rather than fetch(null).
27
21
  if (!v.status_url) {
28
22
  return failOf('near_intents', [
29
23
  check('NEAR reachable', false, 'No public status URL available'),
@@ -53,24 +47,13 @@ export async function verifyNearIntents(v, fetchFn, externalSignal) {
53
47
  }
54
48
  return resultOf('near_intents', checks);
55
49
  }
56
- /**
57
- * Fetch 1Click `/v0/status` and return a flattened intent view. Performs an
58
- * exhaustive enum switch over the 7 real status values.
59
- *
60
- * Mapping of HTTP / status to error codes:
61
- * - HTTP 404 `E_NEAR_INTENT_NOT_REGISTERED` (deposit address unknown to 1Click)
62
- * - HTTP non-2xx (non-404) → `E_NEAR_INTENT_FAILED` (network / server error)
63
- * - status === 'FAILED' → `E_NEAR_INTENT_FAILED`
64
- * - status in {PENDING_DEPOSIT, KNOWN_DEPOSIT_TX, INCOMPLETE_DEPOSIT,
65
- * PROCESSING, SUCCESS, REFUNDED} → returns the flattened response.
66
- *
67
- * 1Click does not surface an "EXPIRED" status. Past-deadline detection is
68
- * performed via `requireIntentDeadlineMargin` against `quote.deadline`.
69
- *
70
- * @throws {VerificationError} `E_NEAR_INTENT_NOT_REGISTERED` on HTTP 404.
71
- * @throws {VerificationError} `E_NEAR_INTENT_FAILED` on HTTP error or
72
- * `status === 'FAILED'`.
73
- */
50
+ // HTTP/status -> error code:
51
+ // 404 -> E_NEAR_INTENT_NOT_REGISTERED
52
+ // non-2xx (non-404) -> E_NEAR_INTENT_FAILED
53
+ // status === FAILED -> E_NEAR_INTENT_FAILED
54
+ // PENDING_DEPOSIT/PROCESSING/SUCCESS/REFUNDED/... -> flattened response
55
+ // 1Click has no EXPIRED status; past-deadline is detected via
56
+ // requireIntentDeadlineMargin against quote.deadline.
74
57
  export async function fetchNearIntentStatus(input) {
75
58
  const timeoutMs = input.timeoutMs ?? VERIFY_FETCH_TIMEOUT_MS;
76
59
  const res = await input.fetchFn(input.statusUrl, { signal: AbortSignal.timeout(timeoutMs) });
@@ -85,9 +68,9 @@ export async function fetchNearIntentStatus(input) {
85
68
  if (parsed.status === 'FAILED') {
86
69
  throw new VerificationError('E_NEAR_INTENT_FAILED', `intent failed on 1Click${parsed.swapDetails.refundReason ? ` (${parsed.swapDetails.refundReason})` : ''}`);
87
70
  }
88
- // Flatten the nested response. The user-visible binding fields live under
89
- // `quoteResponse.quoteRequest` (recipient, refundTo, originAsset, …) and
90
- // `quoteResponse.quote` (depositAddress, depositMemo, deadline, amounts).
71
+ // Binding fields live under quoteResponse.quoteRequest (recipient, refundTo,
72
+ // originAsset, ...) and quoteResponse.quote (depositAddress, depositMemo,
73
+ // deadline, amounts).
91
74
  const qr = parsed.quoteResponse;
92
75
  const request = qr?.quoteRequest ?? {};
93
76
  const quote = qr?.quote;
@@ -112,12 +95,7 @@ export async function fetchNearIntentStatus(input) {
112
95
  refundReason: parsed.swapDetails.refundReason ?? null,
113
96
  };
114
97
  }
115
- /**
116
- * Assert the returned intent binds the caller's expected destination address,
117
- * destination asset, and (optional) refund address.
118
- *
119
- * @throws {VerificationError} `E_NEAR_INTENT_MISBINDING` on any mismatch.
120
- */
98
+ // Throws E_NEAR_INTENT_MISBINDING on any mismatch.
121
99
  export function requireIntentBinds(intent, expected) {
122
100
  if (intent.destinationAddress !== expected.destinationAddress) {
123
101
  throw new VerificationError('E_NEAR_INTENT_MISBINDING', `intent destination ${String(intent.destinationAddress)} != expected ${expected.destinationAddress}`);
@@ -131,18 +109,9 @@ export function requireIntentBinds(intent, expected) {
131
109
  throw new VerificationError('E_NEAR_INTENT_MISBINDING', `intent refund ${String(intent.refundAddress)} != expected ${expected.refundAddress}`);
132
110
  }
133
111
  }
134
- /**
135
- * Enforce the quote deadline has at least the safety margin (90 min) before
136
- * it expires relative to `Date.now()`. The deadline lives at
137
- * `quoteResponse.quote.deadline` in the raw 1Click response and is surfaced
138
- * as `intent.deadline` after flattening.
139
- *
140
- * Returns silently if `intent.deadline` is null (1Click's dry-run quotes
141
- * omit the deadline; we cannot enforce expiry against an absent value).
142
- *
143
- * @throws {VerificationError} `E_NEAR_INTENT_EXPIRING` when the deadline is
144
- * sooner than the safety margin.
145
- */
112
+ // 90-minute safety margin against intent.deadline. Silent no-op when
113
+ // deadline is null (1Click dry-run quotes). Throws E_NEAR_INTENT_EXPIRING
114
+ // when remaining < margin.
146
115
  export function requireIntentDeadlineMargin(intent) {
147
116
  if (intent.deadline === null)
148
117
  return;
@@ -154,23 +123,12 @@ export function requireIntentDeadlineMargin(intent) {
154
123
  throw new VerificationError('E_NEAR_INTENT_EXPIRING', `intent deadline in ${(remaining / 60_000).toFixed(1)} minutes, below safety margin`);
155
124
  }
156
125
  }
157
- /**
158
- * **Direct-blockchain near-intents only NOT for 1Click swaps.**
159
- *
160
- * Queries the NEAR contract `intents.near` via JSON-RPC `get_intent` and
161
- * cross-checks that an intent hash binds the expected destination + amount.
162
- * This is the verification path for swaps that go through the solver-relay
163
- * directly. 1Click swaps do not surface usable on-chain intent hashes
164
- * suitable for this query — for 1Click, use `fetchNearIntentStatus` +
165
- * `requireIntentBinds` against the `/v0/status` URL instead.
166
- *
167
- * Kept available for a future direct-blockchain near_intents provider
168
- * (`packages/miradex-client/src/...` / `daemons/near/`).
169
- *
170
- * @throws {VerificationError} `E_NEAR_INTENT_FAILED` on RPC error.
171
- * @throws {VerificationError} `E_NEAR_INTENT_CHAIN_DEST` on destination mismatch.
172
- * @throws {VerificationError} `E_NEAR_INTENT_CHAIN_AMOUNT` on amount mismatch.
173
- */
126
+ // Direct-blockchain near-intents only, NOT for 1Click. Queries
127
+ // intents.near via JSON-RPC get_intent and confirms the intent hash binds
128
+ // the expected destination + amount. Kept around for a future
129
+ // direct-blockchain provider; 1Click swaps use fetchNearIntentStatus +
130
+ // requireIntentBinds against /v0/status instead.
131
+ // Throws E_NEAR_INTENT_FAILED (RPC), E_NEAR_INTENT_CHAIN_DEST, E_NEAR_INTENT_CHAIN_AMOUNT.
174
132
  export async function verifyNearIntentOnChain(input) {
175
133
  const timeoutMs = input.timeoutMs ?? VERIFY_FETCH_TIMEOUT_MS;
176
134
  const body = {
@@ -1 +1 @@
1
- {"version":3,"file":"near-intents.js","sourceRoot":"","sources":["../../src/verification/near-intents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"near-intents.js","sourceRoot":"","sources":["../../src/verification/near-intents.ts"],"names":[],"mappings":"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"}