@miradexio/client 0.1.0 → 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 +10 -13
  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 -5
  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,18 +1,13 @@
1
- // Terminal-status set and the narrow literal type used by client-side
2
- // reducers for terminal checks. SwapStatus itself now lives in
3
- // src/wire/server/swap.zod.ts as a zod-inferred type; consumers that
4
- // need SwapStatus / SwapProvider / RequiredAction / RequiredActionType /
5
- // ActionUrgency import them through the package barrel.
6
- // Accept any string because SwapStatus now includes a forward-compat
7
- // `unknown:${string}` tail; .has() just returns false for unknown values.
1
+ // Terminal-status literals + set for client-side reducers. SwapStatus and
2
+ // related wire types live in src/wire/server/swap.zod.ts as zod-inferred
3
+ // types; import them through the package barrel.
4
+ // Set<string> because SwapStatus has a forward-compat `unknown:${string}` tail.
8
5
  //
9
- // `punished` is intentionally NOT terminal: in atomicswap, when Alice
10
- // publishes TxPunish (Bob lost the refund window) the sidecar autonomously
11
- // runs the cooperative_xmr_redeem_after_punish libp2p protocol with Alice
12
- // to recover s_a, then surfaces it via `cooperative_redemption_data` and
13
- // flips the required action to `sweep`. The driver finishes the swap with
14
- // an XMR sweep that lands the row in `completed`. Treating `punished` as
15
- // terminal would make the driver bail mid-recovery.
6
+ // 'punished' is deliberately NOT terminal: when Alice broadcasts TxPunish
7
+ // (Bob missed the refund window) the sidecar runs
8
+ // cooperative_xmr_redeem_after_punish, recovers s_a, and flips
9
+ // requiredAction to 'sweep'. The driver finishes via XMR sweep into
10
+ // 'completed'. Marking 'punished' terminal would bail mid-recovery.
16
11
  export const TERMINAL_STATUSES = new Set([
17
12
  'completed',
18
13
  'failed',
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/types/status.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,+DAA+D;AAC/D,qEAAqE;AACrE,yEAAyE;AACzE,wDAAwD;AASxD,qEAAqE;AACrE,0EAA0E;AAC1E,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,yEAAyE;AACzE,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAS;IACpE,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;CACV,CAAC,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/types/status.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,yEAAyE;AACzE,iDAAiD;AASjD,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,kDAAkD;AAClD,+DAA+D;AAC/D,oEAAoE;AACpE,oEAAoE;AACpE,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAS;IACpE,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;CACV,CAAC,CAAC"}
@@ -10,16 +10,6 @@ export interface VerificationResult {
10
10
  readonly checks: readonly VerificationCheck[];
11
11
  readonly timestamp: number;
12
12
  }
13
- /**
14
- * Thrown when an independent cryptographic or protocol-safety check fails.
15
- * Always carries a stable `code` from `ERROR_CODES`.
16
- *
17
- * Carries `category: 'verification'` so {@link withRetry} fails immediately
18
- * — a failed independent invariant cannot be fixed by retrying the same call.
19
- *
20
- * @security Every loud failure of an independent invariant in the client
21
- * surfaces as this error; callers switch on `code` for UX.
22
- */
23
13
  import { MiradexError } from '../lib/errors.js';
24
14
  export declare class VerificationError extends MiradexError {
25
15
  readonly name = "VerificationError";
@@ -1 +1 @@
1
- {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAkB,IAAI,uBAAuB;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBACb,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAI7C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAGvB,CAAC;AAOX,eAAO,MAAM,sBAAsB,EAAE,aAA+C,CAAC;AAErF,eAAO,MAAM,mBAAmB,EAAE,UAGxB,CAAC"}
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAMD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAkB,IAAI,uBAAuB;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBACb,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAI7C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAGvB,CAAC;AAMX,eAAO,MAAM,sBAAsB,EAAE,aAA+C,CAAC;AAErF,eAAO,MAAM,mBAAmB,EAAE,UAGxB,CAAC"}
@@ -1,13 +1,6 @@
1
- /**
2
- * Thrown when an independent cryptographic or protocol-safety check fails.
3
- * Always carries a stable `code` from `ERROR_CODES`.
4
- *
5
- * Carries `category: 'verification'` so {@link withRetry} fails immediately
6
- * — a failed independent invariant cannot be fixed by retrying the same call.
7
- *
8
- * @security Every loud failure of an independent invariant in the client
9
- * surfaces as this error; callers switch on `code` for UX.
10
- */
1
+ // Independent crypto / safety check failure. Always carries a stable
2
+ // ERROR_CODES code; consumers switch on it for UX. Category 'verification'
3
+ // so withRetry fails immediately (re-running won't fix a broken invariant).
11
4
  import { MiradexError } from '../lib/errors.js';
12
5
  export class VerificationError extends MiradexError {
13
6
  name = 'VerificationError';
@@ -21,11 +14,10 @@ export const DEFAULT_FEE_POLICY = {
21
14
  minRelaySatsPerVbyte: 1n,
22
15
  maxSatsPerVbyte: 500n,
23
16
  };
24
- // Mirrors the Rust upstream's MAX_ANTI_SPAM_DEPOSIT_RATIO = 0.2 (20%) at
25
- // xmr-atomic-swap/core/swap-env/src/config.rs:226. The Rust ASB allows
26
- // makers to configure anti_spam_deposit_ratio anywhere in [0, 0.2]; if the
27
- // SDK cap were tighter (e.g. 0.1) we'd reject swaps from any maker
28
- // running at the Rust-permitted maximum. 2_000 bps == 20%.
17
+ // Mirrors Rust MAX_ANTI_SPAM_DEPOSIT_RATIO = 0.2 (20%) at
18
+ // xmr-atomic-swap/core/swap-env/src/config.rs:226. ASB makers may configure
19
+ // anti_spam_deposit_ratio anywhere in [0, 0.2]; a tighter SDK cap would
20
+ // reject swaps from makers running at the Rust-permitted max. 2_000 bps = 20%.
29
21
  export const DEFAULT_AMNESTY_POLICY = { maxRatioBps: 2_000 };
30
22
  export const DEFAULT_DUST_POLICY = {
31
23
  p2wpkhDustSats: 294n,
@@ -1 +1 @@
1
- {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAeA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAC/B,IAAI,GAAG,mBAAmB,CAAC;IACpC,IAAI,CAAY;IACzB,YAAY,IAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAsBD,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,oBAAoB,EAAE,EAAE;IACxB,eAAe,EAAE,IAAI;CACb,CAAC;AAEX,yEAAyE;AACzE,uEAAuE;AACvE,2EAA2E;AAC3E,mEAAmE;AACnE,2DAA2D;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAkB,EAAE,WAAW,EAAE,KAAK,EAAW,CAAC;AAErF,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACX,CAAC"}
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/types/verification.ts"],"names":[],"mappings":"AAeA,qEAAqE;AACrE,2EAA2E;AAC3E,4EAA4E;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAC/B,IAAI,GAAG,mBAAmB,CAAC;IACpC,IAAI,CAAY;IACzB,YAAY,IAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAsBD,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,oBAAoB,EAAE,EAAE;IACxB,eAAe,EAAE,IAAI;CACb,CAAC;AAEX,0DAA0D;AAC1D,4EAA4E;AAC5E,wEAAwE;AACxE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAkB,EAAE,WAAW,EAAE,KAAK,EAAW,CAAC;AAErF,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACX,CAAC"}
@@ -1,43 +1,10 @@
1
- /**
2
- * SDK-owned Chainflip verification endpoints. Hardcoded per network so the
3
- * SDK never trusts a server-supplied `verification.status_url`. The verifier
4
- * URL is a property of the SDK build, not of any swap response.
5
- *
6
- * Two distinct verification modes per network:
7
- *
8
- * - `'rest'` — single GET to Chainflip's hosted broker REST at
9
- * `${statusUrl}/<channelId>`. Used for mainnet and
10
- * testnet (testnet flag governs atomicswap only;
11
- * every other provider, including chainflip, runs on
12
- * the same mainnet infrastructure).
13
- * - `'jsonrpc'` — POST `cf_deposit_channel_info` to the localnet
14
- * private chainflip-broker. Used for regtest, where
15
- * the system-tests stack runs its own chainflip-node
16
- * exposing the legacy state-chain RPC method that the
17
- * hosted public broker does not.
18
- *
19
- * Single-source on REST: the only browser-reachable mainnet state-chain
20
- * RPC node we found (`mainnet-archive.chainflip.io`) does not expose a
21
- * single-channel lookup method — only "all open channels", which is
22
- * impractically large to fetch + filter on every swap. The hosted
23
- * broker is Chainflip's own infrastructure and shares the same trust
24
- * assumption a Chainflip-hosted UI makes; non-custodial guarantees are
25
- * unaffected because the broker cannot move user funds.
26
- *
27
- * Returns `undefined` for any network without a configured verifier — the
28
- * SDK fails closed in that case (no fallback to server-supplied URLs).
29
- */
30
1
  export type ChainflipNetwork = 'mainnet' | 'testnet' | 'regtest';
31
2
  export type ChainflipVerificationEndpoints = {
32
- /** Hosted broker REST. SDK appends `/<channelId>` to `statusUrl`. */
3
+ /** Hosted broker REST. SDK appends /<channelId> to statusUrl. */
33
4
  readonly mode: 'rest';
34
5
  readonly statusUrl: string;
35
6
  } | {
36
- /**
37
- * Localnet private chainflip-broker that exposes the legacy
38
- * `cf_deposit_channel_info` state-chain RPC. POST a JSON-RPC body
39
- * to `rpcUrl`.
40
- */
7
+ /** Regtest localnet broker exposing legacy cf_deposit_channel_info RPC. */
41
8
  readonly mode: 'jsonrpc';
42
9
  readonly rpcUrl: string;
43
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chainflip-networks.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,MAAM,8BAA8B,GACtC;IACE,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAUN,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC,CAclE,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,GACxB,8BAA8B,GAAG,SAAS,CAE5C"}
1
+ {"version":3,"file":"chainflip-networks.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,MAAM,8BAA8B,GACtC;IACE,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AASN,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC,CAclE,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,GACxB,8BAA8B,GAAG,SAAS,CAE5C"}
@@ -1,8 +1,16 @@
1
+ // Hardcoded per network so the SDK never trusts a server-supplied
2
+ // verification.status_url. Modes:
3
+ // rest - GET ${statusUrl}/<channelId> at the hosted broker
4
+ // (mainnet/testnet; the testnet flag only governs atomicswap)
5
+ // jsonrpc - POST cf_deposit_channel_info at the regtest localnet broker
6
+ // Single-source on REST is unavoidable: the public mainnet state-chain RPC
7
+ // (mainnet-archive.chainflip.io) only exposes "all open channels", not
8
+ // per-channel lookup. Returns undefined for unconfigured networks — SDK
9
+ // fails closed.
1
10
  const DEFAULT_REGTEST_VERIFIER_URL = 'http://127.0.0.1:9099';
2
- // Chainflip's mainnet hosted broker REST. The `/v2/swaps/<channelId>` path
3
- // is the documented public lookup. Mirror in any tooling that calls the
4
- // same endpoint (`apps/crypto-server/src/swap/services/swap.constants.ts:28`
5
- // holds the bare host as `CHAINFLIP_BACKEND_URL`).
11
+ // /v2/swaps/<channelId> is the documented public lookup. The bare host is
12
+ // also configured as CHAINFLIP_BACKEND_URL in
13
+ // apps/crypto-server/src/swap/services/swap.constants.ts:28.
6
14
  const CHAINFLIP_MAINNET_STATUS = 'https://chainflip-swap.chainflip.io/v2/swaps';
7
15
  export const CHAINFLIP_VERIFICATION_NETWORKS = {
8
16
  mainnet: {
@@ -1 +1 @@
1
- {"version":3,"file":"chainflip-networks.js","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AA+CA,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AAE7D,2EAA2E;AAC3E,wEAAwE;AACxE,6EAA6E;AAC7E,mDAAmD;AACnD,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEhF,MAAM,CAAC,MAAM,+BAA+B,GAExC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,wBAAwB;KACpC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,wBAAwB;KACpC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,4BAA4B;KACrC;CACF,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,OAAyB;IAEzB,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"chainflip-networks.js","sourceRoot":"","sources":["../../src/verification/chainflip-networks.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,kCAAkC;AAClC,iEAAiE;AACjE,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,uEAAuE;AACvE,wEAAwE;AACxE,gBAAgB;AAgBhB,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AAE7D,0EAA0E;AAC1E,8CAA8C;AAC9C,6DAA6D;AAC7D,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEhF,MAAM,CAAC,MAAM,+BAA+B,GAExC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,wBAAwB;KACpC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,wBAAwB;KACpC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,4BAA4B;KACrC;CACF,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,OAAyB;IAEzB,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC"}
@@ -1,33 +1,9 @@
1
1
  import type { ChainflipVerification, VerificationResult } from '../types/index.js';
2
2
  import { type VerifyParams } from './shared.js';
3
3
  import { type ChainflipNetwork, type ChainflipVerificationEndpoints } from './chainflip-networks.js';
4
- /**
5
- * Verify a Chainflip deposit address by reading the SDK-owned broker REST
6
- * endpoint and confirming the channel binding matches the user's expected
7
- * destination. The verifier URL comes from the SDK's hardcoded per-network
8
- * registry (`chainflip-networks.ts`) — `v.status_url` from the server is
9
- * intentionally ignored.
10
- *
11
- * Single-source design rationale: the only browser-reachable mainnet
12
- * state-chain RPC node (`mainnet-archive.chainflip.io`) does not expose a
13
- * single-channel lookup method, so a true two-source cross-check isn't
14
- * feasible without proxying or fetching the entire open-channel set.
15
- * Trust posture: the broker is Chainflip's own infrastructure (same
16
- * trust assumption a Chainflip-hosted UI makes); a misreport cannot move
17
- * funds because the user's wallet still holds them.
18
- *
19
- * Fails closed when the network has no configured verifier endpoint.
20
- */
21
4
  export declare function verifyChainflip(depositAddress: string, v: ChainflipVerification, params: VerifyParams, fetchFn: typeof globalThis.fetch, network: ChainflipNetwork, signal?: AbortSignal): Promise<VerificationResult>;
22
5
  export interface VerifyChainflipChannelInput {
23
6
  readonly channelId: string;
24
- /**
25
- * Per-network endpoint config. Discriminated on `mode`:
26
- * - `'rest'`: GET `${statusUrl}/<channelId>` against the hosted
27
- * broker (mainnet/testnet).
28
- * - `'jsonrpc'`: POST `cf_deposit_channel_info` against a localnet
29
- * private chainflip-broker (regtest only).
30
- */
31
7
  readonly endpoints: ChainflipVerificationEndpoints;
32
8
  readonly expected: {
33
9
  readonly destAddress: string;
@@ -39,23 +15,7 @@ export interface VerifyChainflipChannelInput {
39
15
  readonly depositAmountSats?: string;
40
16
  readonly fetchFn: typeof globalThis.fetch;
41
17
  readonly timeoutMs?: number;
42
- /**
43
- * Optional external abort signal. When this fires the retry loop bails
44
- * immediately instead of running through its full
45
- * CHAINFLIP_REST_RETRY_TOTAL_MS budget.
46
- */
47
18
  readonly signal?: AbortSignal;
48
19
  }
49
- /**
50
- * Read a Chainflip deposit channel from the appropriate verifier and
51
- * confirm it binds to the caller's expected destination/refund address.
52
- *
53
- * @throws {VerificationError} `E_CHAINFLIP_CHANNEL_MISBINDING` when the
54
- * broker disagrees with the caller's expected destination/refund.
55
- * @throws {VerificationError} `E_CHAINFLIP_CHANNEL_EXPIRING` when the
56
- * channel expires within the safety margin.
57
- * @throws {VerificationError} `E_CHAINFLIP_AMOUNT_BELOW_MIN` /
58
- * `E_CHAINFLIP_AMOUNT_ABOVE_MAX` when `depositAmountSats` is out of band.
59
- */
60
20
  export declare function verifyChainflipChannel(input: VerifyChainflipChannelInput): Promise<void>;
61
21
  //# sourceMappingURL=chainflip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainflip.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAqB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAWjF,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,8BAA8B,EACpC,MAAM,yBAAyB,CAAC;AAIjC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,EACtB,CAAC,EAAE,qBAAqB,EACxB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,EAChC,OAAO,EAAE,gBAAgB,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAkD7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,8BAA8B,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
1
+ {"version":3,"file":"chainflip.d.ts","sourceRoot":"","sources":["../../src/verification/chainflip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAqB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAWjF,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,8BAA8B,EACpC,MAAM,yBAAyB,CAAC;AAUjC,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,EACtB,CAAC,EAAE,qBAAqB,EACxB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,EAChC,OAAO,EAAE,gBAAgB,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAkD7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAI3B,QAAQ,CAAC,SAAS,EAAE,8BAA8B,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAG5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAKD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
@@ -4,23 +4,12 @@ import { VerificationError } from '../types/index.js';
4
4
  import { ChainflipDepositChannelSchema, } from '../wire/chainflip.zod.js';
5
5
  import { chainflipEndpointsForNetwork, } from './chainflip-networks.js';
6
6
  const CHANNEL_SAFETY_MARGIN_MS = 90 * 60 * 1000;
7
- /**
8
- * Verify a Chainflip deposit address by reading the SDK-owned broker REST
9
- * endpoint and confirming the channel binding matches the user's expected
10
- * destination. The verifier URL comes from the SDK's hardcoded per-network
11
- * registry (`chainflip-networks.ts`) `v.status_url` from the server is
12
- * intentionally ignored.
13
- *
14
- * Single-source design rationale: the only browser-reachable mainnet
15
- * state-chain RPC node (`mainnet-archive.chainflip.io`) does not expose a
16
- * single-channel lookup method, so a true two-source cross-check isn't
17
- * feasible without proxying or fetching the entire open-channel set.
18
- * Trust posture: the broker is Chainflip's own infrastructure (same
19
- * trust assumption a Chainflip-hosted UI makes); a misreport cannot move
20
- * funds because the user's wallet still holds them.
21
- *
22
- * Fails closed when the network has no configured verifier endpoint.
23
- */
7
+ // Reads the SDK-owned broker REST endpoint (hardcoded per network in
8
+ // chainflip-networks.ts; v.status_url from the server is ignored).
9
+ // Single-source by necessity: the only browser-reachable mainnet
10
+ // state-chain RPC has no per-channel lookup. Trust posture: the broker is
11
+ // Chainflip's own infra; a misreport can't move funds because the user's
12
+ // wallet still holds them. Fails closed when no verifier is configured.
24
13
  export async function verifyChainflip(depositAddress, v, params, fetchFn, network, signal) {
25
14
  const endpoints = chainflipEndpointsForNetwork(network);
26
15
  if (!endpoints) {
@@ -57,17 +46,9 @@ export async function verifyChainflip(depositAddress, v, params, fetchFn, networ
57
46
  }
58
47
  return resultOf('chainflip', checks);
59
48
  }
60
- /**
61
- * Read a Chainflip deposit channel from the appropriate verifier and
62
- * confirm it binds to the caller's expected destination/refund address.
63
- *
64
- * @throws {VerificationError} `E_CHAINFLIP_CHANNEL_MISBINDING` when the
65
- * broker disagrees with the caller's expected destination/refund.
66
- * @throws {VerificationError} `E_CHAINFLIP_CHANNEL_EXPIRING` when the
67
- * channel expires within the safety margin.
68
- * @throws {VerificationError} `E_CHAINFLIP_AMOUNT_BELOW_MIN` /
69
- * `E_CHAINFLIP_AMOUNT_ABOVE_MAX` when `depositAmountSats` is out of band.
70
- */
49
+ // Throws E_CHAINFLIP_CHANNEL_MISBINDING on dest/refund mismatch,
50
+ // E_CHAINFLIP_CHANNEL_EXPIRING within the safety margin,
51
+ // E_CHAINFLIP_AMOUNT_BELOW_MIN / _ABOVE_MAX out of band.
71
52
  export async function verifyChainflipChannel(input) {
72
53
  const timeoutMs = input.timeoutMs ?? VERIFY_FETCH_TIMEOUT_MS;
73
54
  const channel = input.endpoints.mode === 'rest'
@@ -81,21 +62,12 @@ export async function verifyChainflipChannel(input) {
81
62
  requireExpiryMargin(channel.expiryTime);
82
63
  }
83
64
  }
84
- /**
85
- * Coerce a Chainflip broker REST response into a `ChainflipDepositChannel`.
86
- *
87
- * The v2 hosted-broker endpoint (`/v2/swaps/<id>`) returns the swap status
88
- * with a nested `depositChannel` carrying just the addressing primitives
89
- * the binding fields the verifier checks (`srcChain`, `destChain`,
90
- * `destAsset`, `destAddress`, `refundAddress`) live at the wrapper top
91
- * level. Localnet / older brokers still emit the flat shape with
92
- * everything on the channel itself. Both are accepted: parser tries flat
93
- * first, then merges nested-channel + wrapper, with the wrapper taking
94
- * priority for any field the channel omits.
95
- *
96
- * Tolerates unknown / extra fields and unknown `state` values — Chainflip's
97
- * v2 surface evolves faster than any enum we'd hardcode.
98
- */
65
+ // v2 hosted broker returns a status wrapper with a nested depositChannel and
66
+ // the binding fields (srcChain, destChain, destAsset, destAddress,
67
+ // refundAddress) at the wrapper top level. Localnet / older brokers still
68
+ // emit the flat channel shape. Try flat first, then merge nested + wrapper
69
+ // with wrapper winning for fields the channel omits. Tolerates unknown
70
+ // fields / unknown state values; v2 evolves faster than we'd hardcode.
99
71
  function parseBrokerResponse(raw) {
100
72
  const flat = ChainflipDepositChannelSchema.safeParse(raw);
101
73
  if (flat.success && flat.data.srcChain && flat.data.destChain) {
@@ -110,15 +82,11 @@ function parseBrokerResponse(raw) {
110
82
  throw flat.error;
111
83
  }
112
84
  const channel = ChainflipDepositChannelSchema.parse(nestedRaw);
113
- // Hoist the binding fields the verifier checks. The wrapper's value
114
- // wins when the nested channel doesn't carry it (typical for
115
- // chainflip's v2 response), but we never overwrite a non-null channel
116
- // value with the wrapper. `refundAddress` sits inside one of several
117
- // nested params objects depending on the Chainflip API revision —
118
- // historically `fillOrKillParams.refundAddress` or
119
- // `refundParameters.refundAddress`, sometimes at the wrapper level
120
- // and sometimes under `depositChannel`. Walk every known path before
121
- // declaring it missing.
85
+ // Hoist the binding fields. Wrapper wins when the channel omits them
86
+ // (typical on v2). refundAddress lives at several nested paths depending
87
+ // on the Chainflip API revision (fillOrKillParams.refundAddress,
88
+ // refundParameters.refundAddress, top-level, under depositChannel).
89
+ // Walk all known paths before declaring it missing.
122
90
  return {
123
91
  ...channel,
124
92
  srcChain: channel.srcChain ?? readPath(wrapper, [['srcChain']]),
@@ -140,10 +108,7 @@ function parseBrokerResponse(raw) {
140
108
  ]),
141
109
  };
142
110
  }
143
- /**
144
- * Walk a list of dotted paths against `obj`, returning the first string
145
- * value found. Returns undefined if no path resolves to a string.
146
- */
111
+ // Returns the first non-empty string found at any of the listed paths.
147
112
  function readPath(obj, paths) {
148
113
  for (const path of paths) {
149
114
  let cur = obj;
@@ -160,16 +125,9 @@ function readPath(obj, paths) {
160
125
  return undefined;
161
126
  }
162
127
  async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, externalSignal) {
163
- // Path-based lookup: GET ${baseUrl}/${channelId}. Trim a trailing
164
- // slash so callers may pass `https://host/v2/swaps` or
165
- // `https://host/v2/swaps/` interchangeably.
166
- //
167
- // `cache: 'no-store'` short-circuits the browser HTTP cache. Without it,
168
- // a page reload re-issues the request with `If-None-Match` /
169
- // `If-Modified-Since` from a previous successful fetch, the broker
170
- // returns **304 Not Modified** with an empty body, and we have nothing
171
- // to parse. (`res.ok` is false for 304 — only 200-299 qualify.) We need
172
- // a parseable body every time, so always force a fresh round-trip.
128
+ // GET ${baseUrl}/${channelId}; trim trailing slash so callers can pass
129
+ // either form. cache:'no-store' avoids a 304 Not Modified with empty body
130
+ // on page reload (the conditional request would have nothing to parse).
173
131
  const url = `${baseUrl.replace(/\/+$/, '')}/${encodeURIComponent(channelId)}`;
174
132
  const start = Date.now();
175
133
  let attempt = 0;
@@ -179,12 +137,9 @@ async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, ex
179
137
  throw new VerificationError('E_CHAINFLIP_HTTP', 'verification aborted by caller');
180
138
  }
181
139
  try {
182
- // `cache` is part of the standard fetch RequestInit but absent from
183
- // the Node-only types this package compiles against (lib: ES2022).
184
- // Cast through the broader browser shape — the option is a no-op in
185
- // Node where it isn't supported, and exactly what we need in browsers.
186
- // Combine the per-fetch timeout with the caller's abort signal so
187
- // either path cancels the in-flight request.
140
+ // `cache` is browser-only; no-op in Node where ES2022 lib types
141
+ // omit it. Combined signal so either timeout or external abort
142
+ // cancels the in-flight request.
188
143
  const init = {
189
144
  signal: combineSignals(AbortSignal.timeout(timeoutMs), externalSignal),
190
145
  cache: 'no-store',
@@ -192,40 +147,29 @@ async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, ex
192
147
  const res = await fetchFn(url, init);
193
148
  if (res.ok) {
194
149
  const raw = await res.json();
195
- // Chainflip's `/v2/swaps/<composite>` returns the swap **status**
196
- // wrapper — a top-level object with `state` and a NESTED
197
- // `depositChannel`. The legacy `/v0/deposit_channels/<id>` endpoint
198
- // returned the channel flat; both shapes are still seen in the wild.
199
- // Try the status shape first (the v2 path we actually call), unwrap
200
- // its `depositChannel`, and fall back to the flat shape so the
201
- // verifier survives both response styles without touching the rest
202
- // of the pipeline.
150
+ // parseBrokerResponse handles both v2 (nested) and legacy (flat).
203
151
  return parseBrokerResponse(raw);
204
152
  }
205
- // 304 only happens if the cache directive above is somehow ignored
206
- // (older browsers, service workers, intermediary proxies). Treat it
207
- // as a directive to retry without conditional headers — but, since
208
- // the body is empty, we cannot proceed without a fresh fetch.
209
- // Falling through to the retry loop is the right move: the next
210
- // attempt will be a fresh request.
153
+ // 304 only happens if the no-store directive is bypassed
154
+ // (older browsers, service workers, intermediary proxies). Body
155
+ // is empty, fall through to a fresh retry.
211
156
  if (res.status === 304) {
212
157
  lastError = new VerificationError('E_CHAINFLIP_HTTP', 'broker returned 304 — cache directive bypassed, retrying');
213
158
  }
214
159
  else if (res.status >= 400 && res.status < 500 && res.status !== 404) {
215
- // 4xx other than 404 means a real misconfiguration (bad path,
216
- // malformed id) — retrying won't help; bail out immediately.
160
+ // 4xx (excluding 404) means bad path / malformed id; retrying won't help.
217
161
  throw new VerificationError('E_CHAINFLIP_HTTP', `broker HTTP ${String(res.status)}`);
218
162
  }
219
163
  else {
220
164
  // 404 (channel not yet ingested by REST) and 5xx (gateway / state
221
- // chain RPC blip) are expected transient outcomes worth retrying.
165
+ // chain RPC blip) are transient keep retrying.
222
166
  lastError = new VerificationError('E_CHAINFLIP_HTTP', `broker HTTP ${String(res.status)}`);
223
167
  }
224
168
  }
225
169
  catch (err) {
226
170
  if (err instanceof VerificationError)
227
171
  throw err;
228
- // Network error, timeout, or zod parse failure — treat as transient.
172
+ // Network / timeout / zod parse — treat as transient.
229
173
  lastError = new VerificationError('E_CHAINFLIP_HTTP', err instanceof Error ? err.message : String(err));
230
174
  }
231
175
  const backoffMs = CHAINFLIP_REST_RETRY_BACKOFF_MS[attempt] ??
@@ -241,23 +185,17 @@ async function fetchBrokerChannelRest(baseUrl, channelId, fetchFn, timeoutMs, ex
241
185
  }
242
186
  throw lastError;
243
187
  }
244
- /**
245
- * Combine a per-fetch timeout signal with an optional external abort signal.
246
- * If only one is provided, return it directly so consumers without
247
- * `AbortSignal.any` support (older runtimes) still work in the common case.
248
- */
188
+ // Returns the timeout signal alone if no external is provided so older
189
+ // runtimes without AbortSignal.any still work in the common case.
249
190
  function combineSignals(timeout, external) {
250
191
  if (external === undefined)
251
192
  return timeout;
252
- // `AbortSignal.any` is in Node 20+ and all modern browsers the same
253
- // baseline `AbortSignal.timeout` already requires.
193
+ // AbortSignal.any is in Node 20+ and all modern browsers (same baseline
194
+ // as AbortSignal.timeout above).
254
195
  return AbortSignal.any([timeout, external]);
255
196
  }
256
- /**
257
- * Like `setTimeout` as a promise, but resolves early when the optional
258
- * external signal aborts. Intentionally does NOT throw on abort — the
259
- * caller checks `signal.aborted` after the await and decides how to fail.
260
- */
197
+ // Resolves early on abort. Does NOT throw — caller checks signal.aborted
198
+ // after the await and decides how to fail.
261
199
  function sleepAbortable(ms, signal) {
262
200
  if (signal === undefined) {
263
201
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -280,11 +218,8 @@ function sleepAbortable(ms, signal) {
280
218
  signal.addEventListener('abort', onAbort);
281
219
  });
282
220
  }
283
- /**
284
- * Regtest-only path. The localnet chainflip-broker exposes the legacy
285
- * `cf_deposit_channel_info` state-chain RPC method that the public
286
- * mainnet hosted broker does not.
287
- */
221
+ // Regtest only: the localnet broker exposes the legacy
222
+ // cf_deposit_channel_info state-chain RPC that the public broker doesn't.
288
223
  async function fetchBrokerChannelJsonRpc(rpcUrl, channelId, fetchFn, timeoutMs, externalSignal) {
289
224
  const body = {
290
225
  jsonrpc: '2.0',
@@ -304,25 +239,16 @@ async function fetchBrokerChannelJsonRpc(rpcUrl, channelId, fetchFn, timeoutMs,
304
239
  const raw = (await res.json());
305
240
  return ChainflipDepositChannelSchema.parse(raw.result);
306
241
  }
307
- /**
308
- * Canonicalise a chain identifier so the SDK can compare its caller-side
309
- * value (the public crypto-server API emits the base name `ethereum`)
310
- * against Chainflip's REST response (TitleCase like `Ethereum`). Just
311
- * lowercases — the server is responsible for stripping its internal
312
- * routing prefix, so we don't second-guess it here.
313
- */
242
+ // crypto-server emits 'ethereum'; Chainflip REST returns 'Ethereum'.
314
243
  function canonicalChain(chain) {
315
244
  return chain ? chain.toLowerCase() : undefined;
316
245
  }
317
- /** Canonicalise a token symbol Chainflip is consistent on uppercase but
318
- * callers occasionally pass mixed case. */
246
+ // Chainflip is uppercase but callers sometimes pass mixed case.
319
247
  function canonicalAsset(asset) {
320
248
  return asset ? asset.toLowerCase() : undefined;
321
249
  }
322
- /** Ethereum-style addresses come back in unspecified case from Chainflip;
323
- * the user always sends lowercase from the wallet. Compare case-insensitively
324
- * for hex addresses; Bitcoin/Polkadot/Solana addresses are case-sensitive
325
- * and pass through unchanged. */
250
+ // Hex addresses come back in unspecified case; compare case-insensitively.
251
+ // Bitcoin/Polkadot/Solana are case-sensitive and pass through unchanged.
326
252
  function canonicalAddress(addr) {
327
253
  if (!addr)
328
254
  return undefined;
@@ -341,15 +267,9 @@ function requireBindsExpected(channel, expected) {
341
267
  if (canonicalAsset(channel.destAsset) !== canonicalAsset(expected.destAsset)) {
342
268
  throw new VerificationError('E_CHAINFLIP_CHANNEL_MISBINDING', `channel destAsset ${String(channel.destAsset)} != expected ${expected.destAsset}`);
343
269
  }
344
- // Refund address is a soft check: Chainflip's `/v2/swaps/<id>` doesn't
345
- // always expose it (the field lives in the broker's deposit-channel
346
- // creation request, not necessarily in the status query). When the
347
- // channel object carries one, we strictly require it to match — that
348
- // catches a real attack where the broker rebinds the refund. When it
349
- // doesn't carry one, we skip silently rather than fail the whole
350
- // verification on a check we can't perform. The destination address
351
- // (the path funds actually flow through on success) is the strict
352
- // gate above; this one only matters on the refund-on-failure branch.
270
+ // Soft check: /v2/swaps/<id> doesn't always expose refundAddress. When
271
+ // present we strictly require a match (catches a broker rebind attack);
272
+ // when absent we skip rather than fail on a check we can't perform.
353
273
  if (expected.refundAddress !== undefined &&
354
274
  channel.refundAddress !== undefined &&
355
275
  canonicalAddress(channel.refundAddress) !== canonicalAddress(expected.refundAddress)) {
@@ -1 +1 @@
1
- {"version":3,"file":"chainflip.js","sourceRoot":"","sources":["../../src/verification/chainflip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAqB,MAAM,aAAa,CAAC;AACjF,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,6BAA6B,GAE9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4BAA4B,GAG7B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAAsB,EACtB,CAAwB,EACxB,MAAoB,EACpB,OAAgC,EAChC,OAAyB,EACzB,MAAoB;IAEpB,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,WAAW,EAAE;YACzB,KAAK,CACH,+BAA+B,EAC/B,KAAK,EACL,qDAAqD,OAAO,GAAG,CAChE;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC,WAAW,EAAE;YACzB,KAAK,CACH,+BAA+B,EAC/B,KAAK,EACL,wDAAwD,CACzD;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,sBAAsB,CAAC;YAC3B,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,SAAS;YACT,QAAQ,EAAE;gBACR,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;gBACjF,QAAQ,EAAE,MAAM,CAAC,SAAS;gBAC1B,SAAS,EAAE,MAAM,CAAC,OAAO;gBACzB,SAAS,EAAE,MAAM,CAAC,OAAO;aAC1B;YACD,OAAO;YACP,MAAM;SACP,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,EAAE,iCAAiC,CAAC,CAAC,CAAC;QAC1F,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CACT,KAAK,CACH,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CACnE,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AA8BD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAkC;IAElC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,uBAAuB,CAAC;IAC7D,MAAM,OAAO,GACX,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;QAC7B,CAAC,CAAC,MAAM,sBAAsB,CAC1B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,SAAS,EACT,KAAK,CAAC,MAAM,CACb;QACH,CAAC,CAAC,MAAM,yBAAyB,CAC7B,KAAK,CAAC,SAAS,CAAC,MAAM,EACtB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,SAAS,EACT,KAAK,CAAC,MAAM,CACb,CAAC;IACR,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC1C,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,IAAI,GAAG,6BAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,GAA8B,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,6BAA6B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE/D,oEAAoE;IACpE,6DAA6D;IAC7D,sEAAsE;IACtE,qEAAqE;IACrE,kEAAkE;IAClE,mDAAmD;IACnD,mEAAmE;IACnE,qEAAqE;IACrE,wBAAwB;IACxB,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/D,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/D,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACxE,aAAa,EACX,OAAO,CAAC,aAAa;YACrB,QAAQ,CAAC,OAAO,EAAE;gBAChB,CAAC,eAAe,CAAC;gBACjB,CAAC,kBAAkB,EAAE,eAAe,CAAC;gBACrC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;gBACtC,CAAC,kBAAkB,EAAE,eAAe,CAAC;gBACrC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;gBACtC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,CAAC;gBACvD,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;gBACxD,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,CAAC;gBACvD,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;aACzD,CAAC;KACL,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CACf,GAA4B,EAC5B,KAAqC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,GAAY,GAAG,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC5C,GAAG,GAAG,SAAS,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAAe,EACf,SAAiB,EACjB,OAAgC,EAChC,SAAiB,EACjB,cAA4B;IAE5B,kEAAkE;IAClE,uDAAuD;IACvD,4CAA4C;IAC5C,EAAE;IACF,yEAAyE;IACzE,6DAA6D;IAC7D,mEAAmE;IACnE,uEAAuE;IACvE,wEAAwE;IACxE,mEAAmE;IACnE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAsB,IAAI,iBAAiB,CACtD,kBAAkB,EAClB,kCAAkC,CACnC,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,6BAA6B,EAAE,CAAC;QAC1D,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,gCAAgC,CACjC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,oEAAoE;YACpE,mEAAmE;YACnE,oEAAoE;YACpE,uEAAuE;YACvE,kEAAkE;YAClE,6CAA6C;YAC7C,MAAM,IAAI,GAAkD;gBAC1D,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;gBACtE,KAAK,EAAE,UAAU;aAClB,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC7B,kEAAkE;gBAClE,yDAAyD;gBACzD,oEAAoE;gBACpE,qEAAqE;gBACrE,oEAAoE;gBACpE,+DAA+D;gBAC/D,mEAAmE;gBACnE,mBAAmB;gBACnB,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,mEAAmE;YACnE,oEAAoE;YACpE,mEAAmE;YACnE,8DAA8D;YAC9D,gEAAgE;YAChE,mCAAmC;YACnC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,SAAS,GAAG,IAAI,iBAAiB,CAC/B,kBAAkB,EAClB,0DAA0D,CAC3D,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvE,8DAA8D;gBAC9D,6DAA6D;gBAC7D,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,eAAe,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACpC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,kEAAkE;gBAClE,kEAAkE;gBAClE,SAAS,GAAG,IAAI,iBAAiB,CAC/B,kBAAkB,EAClB,eAAe,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,iBAAiB;gBAAE,MAAM,GAAG,CAAC;YAChD,qEAAqE;YACrE,SAAS,GAAG,IAAI,iBAAiB,CAC/B,kBAAkB,EAClB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GACb,+BAA+B,CAAC,OAAO,CAAC;YACxC,+BAA+B,CAAC,+BAA+B,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3E,MAAM,CAAC;QACT,OAAO,IAAI,CAAC,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,IAAI,6BAA6B;YAAE,MAAM;QAC3E,MAAM,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAChD,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,gCAAgC,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CACrB,OAAoB,EACpB,QAAsB;IAEtB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC3C,sEAAsE;IACtE,mDAAmD;IACnD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,EAAU,EAAE,MAAoB;IACtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,yBAAyB,CACtC,MAAc,EACd,SAAiB,EACjB,OAAgC,EAChC,SAAiB,EACjB,cAA4B;IAE5B,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;KAClC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;KACvE,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,oBAAoB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;IACvD,OAAO,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,KAAyB;IAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED;4CAC4C;AAC5C,SAAS,cAAc,CAAC,KAAyB;IAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED;;;kCAGkC;AAClC,SAAS,gBAAgB,CAAC,IAAwB;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAgC,EAChC,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,uBAAuB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,QAAQ,CAAC,WAAW,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,qBAAqB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,qBAAqB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,uEAAuE;IACvE,oEAAoE;IACpE,mEAAmE;IACnE,qEAAqE;IACrE,qEAAqE;IACrE,iEAAiE;IACjE,oEAAoE;IACpE,kEAAkE;IAClE,qEAAqE;IACrE,IACE,QAAQ,CAAC,aAAa,KAAK,SAAS;QACpC,OAAO,CAAC,aAAa,KAAK,SAAS;QACnC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,EACpF,CAAC;QACD,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,EAChC,yBAAyB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,QAAQ,CAAC,aAAa,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC,EAAE,UAAkB;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,EAC9B,WAAW,MAAM,CAAC,QAAQ,EAAE,sBAAsB,OAAO,CAAC,YAAY,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,EAC9B,WAAW,MAAM,CAAC,QAAQ,EAAE,sBAAsB,OAAO,CAAC,YAAY,EAAE,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IAChD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO;IACnC,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxC,IAAI,SAAS,GAAG,wBAAwB,EAAE,CAAC;QACzC,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,EAC9B,sBAAsB,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CACrF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"chainflip.js","sourceRoot":"","sources":["../../src/verification/chainflip.ts"],"names":[],"mappings":"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"}