agentwallet-sdk 5.1.1 → 6.0.0

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 (366) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +463 -24
  3. package/dist/bridge/__tests__/solana.test.d.ts +2 -0
  4. package/dist/bridge/__tests__/solana.test.d.ts.map +1 -0
  5. package/dist/bridge/__tests__/solana.test.js +106 -0
  6. package/dist/bridge/__tests__/solana.test.js.map +1 -0
  7. package/dist/bridge/client.d.ts +21 -7
  8. package/dist/bridge/client.d.ts.map +1 -1
  9. package/dist/bridge/client.js +16 -1
  10. package/dist/bridge/client.js.map +1 -1
  11. package/dist/bridge/index.d.ts +12 -1
  12. package/dist/bridge/index.d.ts.map +1 -1
  13. package/dist/bridge/index.js +11 -0
  14. package/dist/bridge/index.js.map +1 -1
  15. package/dist/bridge/solana.d.ts +132 -0
  16. package/dist/bridge/solana.d.ts.map +1 -0
  17. package/dist/bridge/solana.js +313 -0
  18. package/dist/bridge/solana.js.map +1 -0
  19. package/dist/bridge/types.d.ts +35 -10
  20. package/dist/bridge/types.d.ts.map +1 -1
  21. package/dist/bridge/types.js +16 -4
  22. package/dist/bridge/types.js.map +1 -1
  23. package/dist/escrow/MutualStakeEscrow.d.ts.map +1 -1
  24. package/dist/escrow/MutualStakeEscrow.js +3 -5
  25. package/dist/escrow/MutualStakeEscrow.js.map +1 -1
  26. package/dist/index.d.ts +192 -469
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +14 -8
  29. package/dist/index.js.map +1 -1
  30. package/dist/policy/SpendingPolicy.test.js.map +1 -1
  31. package/dist/swap/SwapModule.d.ts +17 -3
  32. package/dist/swap/SwapModule.d.ts.map +1 -1
  33. package/dist/swap/SwapModule.js +21 -5
  34. package/dist/swap/SwapModule.js.map +1 -1
  35. package/dist/swap/index.d.ts +9 -2
  36. package/dist/swap/index.d.ts.map +1 -1
  37. package/dist/swap/index.js +8 -1
  38. package/dist/swap/index.js.map +1 -1
  39. package/dist/swap/types.d.ts +58 -1
  40. package/dist/swap/types.d.ts.map +1 -1
  41. package/dist/swap/types.js +56 -1
  42. package/dist/swap/types.js.map +1 -1
  43. package/dist/tokens/__tests__/decimals.test.d.ts +2 -0
  44. package/dist/tokens/__tests__/decimals.test.d.ts.map +1 -0
  45. package/dist/tokens/__tests__/decimals.test.js +107 -0
  46. package/dist/tokens/__tests__/decimals.test.js.map +1 -0
  47. package/dist/tokens/__tests__/registry.test.d.ts +2 -0
  48. package/dist/tokens/__tests__/registry.test.d.ts.map +1 -0
  49. package/dist/tokens/__tests__/registry.test.js +191 -0
  50. package/dist/tokens/__tests__/registry.test.js.map +1 -0
  51. package/dist/tokens/__tests__/transfers.test.d.ts +2 -0
  52. package/dist/tokens/__tests__/transfers.test.d.ts.map +1 -0
  53. package/dist/tokens/__tests__/transfers.test.js +103 -0
  54. package/dist/tokens/__tests__/transfers.test.js.map +1 -0
  55. package/dist/tokens/decimals.d.ts +65 -0
  56. package/dist/tokens/decimals.d.ts.map +1 -0
  57. package/dist/tokens/decimals.js +112 -0
  58. package/dist/tokens/decimals.js.map +1 -0
  59. package/dist/tokens/index.d.ts +14 -0
  60. package/dist/tokens/index.d.ts.map +1 -0
  61. package/dist/tokens/index.js +14 -0
  62. package/dist/tokens/index.js.map +1 -0
  63. package/dist/tokens/registry.d.ts +82 -0
  64. package/dist/tokens/registry.d.ts.map +1 -0
  65. package/dist/tokens/registry.js +293 -0
  66. package/dist/tokens/registry.js.map +1 -0
  67. package/dist/tokens/solana.d.ts +108 -0
  68. package/dist/tokens/solana.d.ts.map +1 -0
  69. package/dist/tokens/solana.js +306 -0
  70. package/dist/tokens/solana.js.map +1 -0
  71. package/dist/tokens/transfers.d.ts +95 -0
  72. package/dist/tokens/transfers.d.ts.map +1 -0
  73. package/dist/tokens/transfers.js +196 -0
  74. package/dist/tokens/transfers.js.map +1 -0
  75. package/dist/types.d.ts +20 -1
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/types.js +6 -0
  78. package/dist/types.js.map +1 -1
  79. package/dist/x402/__tests__/client.test.js +77 -5
  80. package/dist/x402/__tests__/client.test.js.map +1 -1
  81. package/dist/x402/chains/abstract/index.d.ts.map +1 -1
  82. package/dist/x402/chains/abstract/index.js.map +1 -1
  83. package/dist/x402/chains/stellar/index.d.ts +149 -0
  84. package/dist/x402/chains/stellar/index.d.ts.map +1 -0
  85. package/dist/x402/chains/stellar/index.js +199 -0
  86. package/dist/x402/chains/stellar/index.js.map +1 -0
  87. package/dist/x402/client.d.ts +7 -1
  88. package/dist/x402/client.d.ts.map +1 -1
  89. package/dist/x402/client.js +24 -13
  90. package/dist/x402/client.js.map +1 -1
  91. package/dist/x402/index.d.ts +1 -0
  92. package/dist/x402/index.d.ts.map +1 -1
  93. package/dist/x402/index.js +2 -0
  94. package/dist/x402/index.js.map +1 -1
  95. package/dist/x402/middleware.d.ts.map +1 -1
  96. package/dist/x402/middleware.js +0 -3
  97. package/dist/x402/middleware.js.map +1 -1
  98. package/dist/x402/multi-asset.d.ts +54 -0
  99. package/dist/x402/multi-asset.d.ts.map +1 -0
  100. package/dist/x402/multi-asset.js +123 -0
  101. package/dist/x402/multi-asset.js.map +1 -0
  102. package/dist/x402/types.d.ts +22 -3
  103. package/dist/x402/types.d.ts.map +1 -1
  104. package/dist/x402/types.js +34 -4
  105. package/dist/x402/types.js.map +1 -1
  106. package/package.json +21 -6
  107. package/dist/ap2/index.d.ts +0 -185
  108. package/dist/ap2/index.d.ts.map +0 -1
  109. package/dist/ap2/index.js +0 -255
  110. package/dist/ap2/index.js.map +0 -1
  111. package/dist/bridge/unified.d.ts +0 -101
  112. package/dist/bridge/unified.d.ts.map +0 -1
  113. package/dist/bridge/unified.js +0 -284
  114. package/dist/bridge/unified.js.map +0 -1
  115. package/dist/chains.d.ts +0 -62
  116. package/dist/chains.d.ts.map +0 -1
  117. package/dist/chains.js +0 -108
  118. package/dist/chains.js.map +0 -1
  119. package/dist/fiat/index.d.ts +0 -10
  120. package/dist/fiat/index.d.ts.map +0 -1
  121. package/dist/fiat/index.js +0 -9
  122. package/dist/fiat/index.js.map +0 -1
  123. package/dist/fiat/onramp.d.ts +0 -101
  124. package/dist/fiat/onramp.d.ts.map +0 -1
  125. package/dist/fiat/onramp.js +0 -155
  126. package/dist/fiat/onramp.js.map +0 -1
  127. package/dist/fiat/providers/index.d.ts +0 -16
  128. package/dist/fiat/providers/index.d.ts.map +0 -1
  129. package/dist/fiat/providers/index.js +0 -30
  130. package/dist/fiat/providers/index.js.map +0 -1
  131. package/dist/fiat/providers/moonpay.d.ts +0 -22
  132. package/dist/fiat/providers/moonpay.d.ts.map +0 -1
  133. package/dist/fiat/providers/moonpay.js +0 -107
  134. package/dist/fiat/providers/moonpay.js.map +0 -1
  135. package/dist/fiat/providers/stripe.d.ts +0 -26
  136. package/dist/fiat/providers/stripe.d.ts.map +0 -1
  137. package/dist/fiat/providers/stripe.js +0 -135
  138. package/dist/fiat/providers/stripe.js.map +0 -1
  139. package/dist/fiat/providers/transak.d.ts +0 -26
  140. package/dist/fiat/providers/transak.d.ts.map +0 -1
  141. package/dist/fiat/providers/transak.js +0 -119
  142. package/dist/fiat/providers/transak.js.map +0 -1
  143. package/dist/fiat/types.d.ts +0 -106
  144. package/dist/fiat/types.d.ts.map +0 -1
  145. package/dist/fiat/types.js +0 -13
  146. package/dist/fiat/types.js.map +0 -1
  147. package/dist/flash/executor.d.ts +0 -119
  148. package/dist/flash/executor.d.ts.map +0 -1
  149. package/dist/flash/executor.js +0 -195
  150. package/dist/flash/executor.js.map +0 -1
  151. package/dist/flash/index.d.ts +0 -28
  152. package/dist/flash/index.d.ts.map +0 -1
  153. package/dist/flash/index.js +0 -29
  154. package/dist/flash/index.js.map +0 -1
  155. package/dist/flash/scanner.d.ts +0 -133
  156. package/dist/flash/scanner.d.ts.map +0 -1
  157. package/dist/flash/scanner.js +0 -212
  158. package/dist/flash/scanner.js.map +0 -1
  159. package/dist/flash/types.d.ts +0 -136
  160. package/dist/flash/types.d.ts.map +0 -1
  161. package/dist/flash/types.js +0 -23
  162. package/dist/flash/types.js.map +0 -1
  163. package/dist/gas/index.d.ts +0 -4
  164. package/dist/gas/index.d.ts.map +0 -1
  165. package/dist/gas/index.js +0 -3
  166. package/dist/gas/index.js.map +0 -1
  167. package/dist/gas/sponsor.d.ts +0 -70
  168. package/dist/gas/sponsor.d.ts.map +0 -1
  169. package/dist/gas/sponsor.js +0 -193
  170. package/dist/gas/sponsor.js.map +0 -1
  171. package/dist/gas/types.d.ts +0 -76
  172. package/dist/gas/types.d.ts.map +0 -1
  173. package/dist/gas/types.js +0 -21
  174. package/dist/gas/types.js.map +0 -1
  175. package/dist/identity/agent-identity.d.ts +0 -276
  176. package/dist/identity/agent-identity.d.ts.map +0 -1
  177. package/dist/identity/agent-identity.js +0 -300
  178. package/dist/identity/agent-identity.js.map +0 -1
  179. package/dist/identity/email-resolver.d.ts +0 -235
  180. package/dist/identity/email-resolver.js +0 -283
  181. package/dist/identity/erc6551.d.ts +0 -441
  182. package/dist/identity/erc6551.d.ts.map +0 -1
  183. package/dist/identity/erc6551.js +0 -517
  184. package/dist/identity/erc6551.js.map +0 -1
  185. package/dist/mev/index.d.ts +0 -4
  186. package/dist/mev/index.d.ts.map +0 -1
  187. package/dist/mev/index.js +0 -8
  188. package/dist/mev/index.js.map +0 -1
  189. package/dist/mev/protection.d.ts +0 -54
  190. package/dist/mev/protection.d.ts.map +0 -1
  191. package/dist/mev/protection.js +0 -185
  192. package/dist/mev/protection.js.map +0 -1
  193. package/dist/mev/risk.d.ts +0 -19
  194. package/dist/mev/risk.d.ts.map +0 -1
  195. package/dist/mev/risk.js +0 -95
  196. package/dist/mev/risk.js.map +0 -1
  197. package/dist/mev/types.d.ts +0 -49
  198. package/dist/mev/types.d.ts.map +0 -1
  199. package/dist/mev/types.js +0 -2
  200. package/dist/mev/types.js.map +0 -1
  201. package/dist/plugins/elizaos.d.ts +0 -52
  202. package/dist/plugins/elizaos.d.ts.map +0 -1
  203. package/dist/plugins/elizaos.js +0 -89
  204. package/dist/plugins/elizaos.js.map +0 -1
  205. package/dist/settlement/index.d.ts +0 -4
  206. package/dist/settlement/index.d.ts.map +0 -1
  207. package/dist/settlement/index.js +0 -3
  208. package/dist/settlement/index.js.map +0 -1
  209. package/dist/settlement/types.d.ts +0 -66
  210. package/dist/settlement/types.d.ts.map +0 -1
  211. package/dist/settlement/types.js +0 -37
  212. package/dist/settlement/types.js.map +0 -1
  213. package/dist/settlement/verifier.d.ts +0 -75
  214. package/dist/settlement/verifier.d.ts.map +0 -1
  215. package/dist/settlement/verifier.js +0 -354
  216. package/dist/settlement/verifier.js.map +0 -1
  217. package/dist/solana/bridge.d.ts +0 -144
  218. package/dist/solana/bridge.d.ts.map +0 -1
  219. package/dist/solana/bridge.js +0 -352
  220. package/dist/solana/bridge.js.map +0 -1
  221. package/dist/solana/index.d.ts +0 -8
  222. package/dist/solana/index.d.ts.map +0 -1
  223. package/dist/solana/index.js +0 -6
  224. package/dist/solana/index.js.map +0 -1
  225. package/dist/solana/swap.d.ts +0 -85
  226. package/dist/solana/swap.d.ts.map +0 -1
  227. package/dist/solana/swap.js +0 -173
  228. package/dist/solana/swap.js.map +0 -1
  229. package/dist/solana/types.d.ts +0 -126
  230. package/dist/solana/types.d.ts.map +0 -1
  231. package/dist/solana/types.js +0 -10
  232. package/dist/solana/types.js.map +0 -1
  233. package/dist/solana/wallet.d.ts +0 -83
  234. package/dist/solana/wallet.d.ts.map +0 -1
  235. package/dist/solana/wallet.js +0 -164
  236. package/dist/solana/wallet.js.map +0 -1
  237. package/dist/solana/x402.d.ts +0 -69
  238. package/dist/solana/x402.d.ts.map +0 -1
  239. package/dist/solana/x402.js +0 -154
  240. package/dist/solana/x402.js.map +0 -1
  241. package/dist/solver/adapter.d.ts +0 -47
  242. package/dist/solver/adapter.d.ts.map +0 -1
  243. package/dist/solver/adapter.js +0 -146
  244. package/dist/solver/adapter.js.map +0 -1
  245. package/dist/solver/analyzer.d.ts +0 -48
  246. package/dist/solver/analyzer.d.ts.map +0 -1
  247. package/dist/solver/analyzer.js +0 -171
  248. package/dist/solver/analyzer.js.map +0 -1
  249. package/dist/solver/builder.d.ts +0 -31
  250. package/dist/solver/builder.d.ts.map +0 -1
  251. package/dist/solver/builder.js +0 -60
  252. package/dist/solver/builder.js.map +0 -1
  253. package/dist/solver/index.d.ts +0 -22
  254. package/dist/solver/index.d.ts.map +0 -1
  255. package/dist/solver/index.js +0 -25
  256. package/dist/solver/index.js.map +0 -1
  257. package/dist/solver/types.d.ts +0 -115
  258. package/dist/solver/types.d.ts.map +0 -1
  259. package/dist/solver/types.js +0 -10
  260. package/dist/solver/types.js.map +0 -1
  261. package/dist/spend-guard/index.d.ts +0 -125
  262. package/dist/spend-guard/index.d.ts.map +0 -1
  263. package/dist/spend-guard/index.js +0 -150
  264. package/dist/spend-guard/index.js.map +0 -1
  265. package/dist/swap/router/cache.d.ts +0 -13
  266. package/dist/swap/router/cache.d.ts.map +0 -1
  267. package/dist/swap/router/cache.js +0 -30
  268. package/dist/swap/router/cache.js.map +0 -1
  269. package/dist/swap/router/flashbots.d.ts +0 -10
  270. package/dist/swap/router/flashbots.d.ts.map +0 -1
  271. package/dist/swap/router/flashbots.js +0 -43
  272. package/dist/swap/router/flashbots.js.map +0 -1
  273. package/dist/swap/router/health.d.ts +0 -17
  274. package/dist/swap/router/health.d.ts.map +0 -1
  275. package/dist/swap/router/health.js +0 -38
  276. package/dist/swap/router/health.js.map +0 -1
  277. package/dist/swap/router/index.d.ts +0 -10
  278. package/dist/swap/router/index.d.ts.map +0 -1
  279. package/dist/swap/router/index.js +0 -10
  280. package/dist/swap/router/index.js.map +0 -1
  281. package/dist/swap/router/providers/cowswap.d.ts +0 -11
  282. package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
  283. package/dist/swap/router/providers/cowswap.js +0 -79
  284. package/dist/swap/router/providers/cowswap.js.map +0 -1
  285. package/dist/swap/router/providers/index.d.ts +0 -20
  286. package/dist/swap/router/providers/index.d.ts.map +0 -1
  287. package/dist/swap/router/providers/index.js +0 -32
  288. package/dist/swap/router/providers/index.js.map +0 -1
  289. package/dist/swap/router/providers/jupiter.d.ts +0 -12
  290. package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
  291. package/dist/swap/router/providers/jupiter.js +0 -73
  292. package/dist/swap/router/providers/jupiter.js.map +0 -1
  293. package/dist/swap/router/providers/lifi.d.ts +0 -11
  294. package/dist/swap/router/providers/lifi.d.ts.map +0 -1
  295. package/dist/swap/router/providers/lifi.js +0 -123
  296. package/dist/swap/router/providers/lifi.js.map +0 -1
  297. package/dist/swap/router/providers/oneinch.d.ts +0 -13
  298. package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
  299. package/dist/swap/router/providers/oneinch.js +0 -71
  300. package/dist/swap/router/providers/oneinch.js.map +0 -1
  301. package/dist/swap/router/providers/paraswap.d.ts +0 -11
  302. package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
  303. package/dist/swap/router/providers/paraswap.js +0 -73
  304. package/dist/swap/router/providers/paraswap.js.map +0 -1
  305. package/dist/swap/router/providers/uniswap.d.ts +0 -31
  306. package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
  307. package/dist/swap/router/providers/uniswap.js +0 -237
  308. package/dist/swap/router/providers/uniswap.js.map +0 -1
  309. package/dist/swap/router/providers/zerox.d.ts +0 -13
  310. package/dist/swap/router/providers/zerox.d.ts.map +0 -1
  311. package/dist/swap/router/providers/zerox.js +0 -94
  312. package/dist/swap/router/providers/zerox.js.map +0 -1
  313. package/dist/swap/router/router.d.ts +0 -86
  314. package/dist/swap/router/router.d.ts.map +0 -1
  315. package/dist/swap/router/router.js +0 -224
  316. package/dist/swap/router/router.js.map +0 -1
  317. package/dist/swap/router/rsi/engine.d.ts +0 -60
  318. package/dist/swap/router/rsi/engine.d.ts.map +0 -1
  319. package/dist/swap/router/rsi/engine.js +0 -483
  320. package/dist/swap/router/rsi/engine.js.map +0 -1
  321. package/dist/swap/router/rsi/index.d.ts +0 -3
  322. package/dist/swap/router/rsi/index.d.ts.map +0 -1
  323. package/dist/swap/router/rsi/index.js +0 -3
  324. package/dist/swap/router/rsi/index.js.map +0 -1
  325. package/dist/swap/router/rsi/types.d.ts +0 -106
  326. package/dist/swap/router/rsi/types.d.ts.map +0 -1
  327. package/dist/swap/router/rsi/types.js +0 -3
  328. package/dist/swap/router/rsi/types.js.map +0 -1
  329. package/dist/swap/router/types.d.ts +0 -120
  330. package/dist/swap/router/types.d.ts.map +0 -1
  331. package/dist/swap/router/types.js +0 -16
  332. package/dist/swap/router/types.js.map +0 -1
  333. package/dist/tax/engine.d.ts +0 -131
  334. package/dist/tax/engine.d.ts.map +0 -1
  335. package/dist/tax/engine.js +0 -307
  336. package/dist/tax/engine.js.map +0 -1
  337. package/dist/tax/index.d.ts +0 -9
  338. package/dist/tax/index.d.ts.map +0 -1
  339. package/dist/tax/index.js +0 -12
  340. package/dist/tax/index.js.map +0 -1
  341. package/dist/tax/lots.d.ts +0 -60
  342. package/dist/tax/lots.d.ts.map +0 -1
  343. package/dist/tax/lots.js +0 -129
  344. package/dist/tax/lots.js.map +0 -1
  345. package/dist/tax/types.d.ts +0 -113
  346. package/dist/tax/types.d.ts.map +0 -1
  347. package/dist/tax/types.js +0 -18
  348. package/dist/tax/types.js.map +0 -1
  349. package/dist/verifiable-intent/index.d.ts +0 -84
  350. package/dist/verifiable-intent/index.js +0 -385
  351. package/dist/yield/index.d.ts +0 -26
  352. package/dist/yield/index.d.ts.map +0 -1
  353. package/dist/yield/index.js +0 -29
  354. package/dist/yield/index.js.map +0 -1
  355. package/dist/yield/rates.d.ts +0 -114
  356. package/dist/yield/rates.d.ts.map +0 -1
  357. package/dist/yield/rates.js +0 -351
  358. package/dist/yield/rates.js.map +0 -1
  359. package/dist/yield/types.d.ts +0 -134
  360. package/dist/yield/types.d.ts.map +0 -1
  361. package/dist/yield/types.js +0 -24
  362. package/dist/yield/types.js.map +0 -1
  363. package/dist/yield/vault.d.ts +0 -112
  364. package/dist/yield/vault.d.ts.map +0 -1
  365. package/dist/yield/vault.js +0 -264
  366. package/dist/yield/vault.js.map +0 -1
@@ -0,0 +1,313 @@
1
+ /**
2
+ * SolanaBridgeModule — CCTP V2 cross-chain USDC bridge between EVM chains and Solana.
3
+ *
4
+ * Uses Circle's Cross-Chain Transfer Protocol (CCTP) V2 for trustless USDC transfers.
5
+ * EVM side uses viem; Solana side uses @solana/web3.js as an optional peer dependency.
6
+ *
7
+ * Sources:
8
+ * - Circle CCTP Solana docs: https://developers.circle.com/cctp/docs/solana
9
+ * - Solana USDC mint: https://solana.com/ecosystem/usdc
10
+ * - CCTP domain IDs: https://developers.circle.com/cctp/references/contract-addresses
11
+ */
12
+ import { createPublicClient, http, keccak256, pad, getContract, } from 'viem';
13
+ import { base, mainnet, optimism, arbitrum, polygon, avalanche, linea } from 'viem/chains';
14
+ import { TokenMessengerV2Abi, MessageTransmitterV2Abi, ERC20BridgeAbi } from './abis.js';
15
+ import { CCTP_DOMAIN_IDS, USDC_CONTRACT, TOKEN_MESSENGER_V2, MESSAGE_TRANSMITTER_V2 as MESSAGE_TRANSMITTER_V2_MAP, CIRCLE_ATTESTATION_API, MAX_ATTESTATION_POLLS, ATTESTATION_POLL_INTERVAL_MS, FINALITY_THRESHOLD, } from './types.js';
16
+ // ─── Solana Constants ───
17
+ /** Solana CCTP domain ID */
18
+ export const SOLANA_CCTP_DOMAIN = 5;
19
+ /** Native USDC mint on Solana Mainnet */
20
+ export const SOLANA_USDC_MINT = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
21
+ /**
22
+ * Solana CCTP V2 TokenMessengerMinterV2 program address.
23
+ * This is the V2 program (not V1 CCTPiPYP...). The V2 program combines
24
+ * TokenMessengerV2 + TokenMinterV2 into a single program.
25
+ * Source: https://developers.circle.com/cctp/references/solana-programs
26
+ * Verified: https://github.com/circlefin/solana-cctp-contracts (programs/v2)
27
+ */
28
+ export const SOLANA_TOKEN_MESSENGER = 'CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe';
29
+ /**
30
+ * Solana CCTP V2 MessageTransmitterV2 program address.
31
+ * This is the V2 program (not V1 CCTPmbSD...).
32
+ * Source: https://developers.circle.com/cctp/references/solana-programs
33
+ * Verified: https://github.com/circlefin/solana-cctp-contracts (programs/v2)
34
+ */
35
+ export const SOLANA_MESSAGE_TRANSMITTER = 'CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC';
36
+ /** Default Solana Mainnet RPC endpoint */
37
+ export const SOLANA_DEFAULT_RPC = 'https://api.mainnet-beta.solana.com';
38
+ // ─── Viem chain definitions for EVM side ───
39
+ const VIEM_CHAINS = {
40
+ base,
41
+ ethereum: mainnet,
42
+ optimism,
43
+ arbitrum,
44
+ polygon,
45
+ avalanche,
46
+ linea,
47
+ unichain: { id: 130, name: 'Unichain', nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 }, rpcUrls: { default: { http: ['https://mainnet.unichain.org'] } } },
48
+ sonic: { id: 146, name: 'Sonic', nativeCurrency: { name: 'S', symbol: 'S', decimals: 18 }, rpcUrls: { default: { http: ['https://rpc.soniclabs.com'] } } },
49
+ worldchain: { id: 480, name: 'World Chain', nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 }, rpcUrls: { default: { http: ['https://worldchain-mainnet.g.alchemy.com/public'] } } },
50
+ };
51
+ // ─── Helpers ───
52
+ /**
53
+ * Encode a Solana base58 public key as a 32-byte hex buffer for CCTP.
54
+ * CCTP requires the mint recipient to be a 32-byte zero-padded value.
55
+ * For Solana, this is the base58-decoded public key (already 32 bytes).
56
+ */
57
+ function solanaPubkeyToBytes32(base58Address) {
58
+ // Dynamic import for optional @solana/web3.js
59
+ // We manually decode base58 here to avoid requiring the dependency at import time.
60
+ const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
61
+ const bytes = new Uint8Array(32);
62
+ let intVal = 0n;
63
+ for (const char of base58Address) {
64
+ const digit = BigInt(ALPHABET.indexOf(char));
65
+ if (digit < 0n)
66
+ throw new Error(`SolanaBridge: Invalid base58 character '${char}' in address.`);
67
+ intVal = intVal * 58n + digit;
68
+ }
69
+ // Write to 32-byte big-endian buffer
70
+ for (let i = 31; i >= 0; i--) {
71
+ bytes[i] = Number(intVal & 0xffn);
72
+ intVal >>= 8n;
73
+ }
74
+ if (intVal !== 0n)
75
+ throw new Error(`SolanaBridge: Address value overflows 32 bytes.`);
76
+ const hex = Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');
77
+ return `0x${hex}`;
78
+ }
79
+ /**
80
+ * Decode a 32-byte hex buffer back to a Solana base58 public key.
81
+ * Used when interpreting Solana→EVM message recipient fields.
82
+ */
83
+ export function bytes32ToSolanaPubkey(bytes32) {
84
+ const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
85
+ const hex = bytes32.startsWith('0x') ? bytes32.slice(2) : bytes32;
86
+ if (hex.length !== 64)
87
+ throw new Error(`SolanaBridge: Expected 32-byte hex (64 chars), got ${hex.length}.`);
88
+ let intVal = BigInt('0x' + hex);
89
+ let result = '';
90
+ while (intVal > 0n) {
91
+ const rem = Number(intVal % 58n);
92
+ intVal /= 58n;
93
+ result = ALPHABET[rem] + result;
94
+ }
95
+ return result || '1';
96
+ }
97
+ /**
98
+ * Bridge USDC from an EVM chain to Solana using CCTP V2.
99
+ *
100
+ * This function handles the EVM burn side and attestation polling.
101
+ * The Solana receive side must be completed by calling `receiveMessageOnSolana()`
102
+ * or by the Solana recipient manually submitting the message and attestation
103
+ * to the Solana MessageTransmitter program.
104
+ *
105
+ * @param walletClient - Viem WalletClient with a signer attached (for EVM)
106
+ * @param amount - Amount to bridge in USDC base units (6 decimals, e.g. 1_000_000n = 1 USDC)
107
+ * @param options - Bridge options including solanaRecipient (required)
108
+ * @returns Burn tx hash, attestation, and message bytes for Solana receive
109
+ */
110
+ export async function bridgeEVMToSolana(walletClient, amount, options) {
111
+ const startMs = Date.now();
112
+ const fromChain = options.fromChain ?? 'base';
113
+ const minFinalityThreshold = options.minFinalityThreshold ?? FINALITY_THRESHOLD.FAST;
114
+ const maxFee = options.maxFee ?? 0n;
115
+ const attestationApiUrl = options.attestationApiUrl ?? CIRCLE_ATTESTATION_API;
116
+ if (!walletClient.account) {
117
+ throw new SolanaBridgeError('NO_WALLET_CLIENT', 'WalletClient must have an account attached.');
118
+ }
119
+ if (amount <= 0n) {
120
+ throw new SolanaBridgeError('INVALID_AMOUNT', `Bridge amount must be > 0. Received: ${amount}.`);
121
+ }
122
+ if (!options.solanaRecipient) {
123
+ throw new SolanaBridgeError('INVALID_RECIPIENT', 'solanaRecipient (base58 Solana address) is required.');
124
+ }
125
+ // Encode Solana address as 32-byte CCTP mint recipient
126
+ const mintRecipient = solanaPubkeyToBytes32(options.solanaRecipient);
127
+ // Zero destinationCaller = any relayer can submit on Solana
128
+ const destinationCaller = pad('0x0', { size: 32 });
129
+ const publicClient = createPublicClient({
130
+ chain: VIEM_CHAINS[fromChain],
131
+ transport: http(options.evmRpcUrl),
132
+ });
133
+ const account = walletClient.account;
134
+ const usdcAddress = USDC_CONTRACT[fromChain];
135
+ const messengerAddress = TOKEN_MESSENGER_V2[fromChain];
136
+ // Approve USDC if needed
137
+ const usdcRead = getContract({ address: usdcAddress, abi: ERC20BridgeAbi, client: publicClient });
138
+ const currentAllowance = await usdcRead.read.allowance([account.address, messengerAddress]);
139
+ if (currentAllowance < amount) {
140
+ const usdcWrite = getContract({
141
+ address: usdcAddress,
142
+ abi: ERC20BridgeAbi,
143
+ client: { public: publicClient, wallet: walletClient },
144
+ });
145
+ const approveTxHash = await usdcWrite.write.approve([messengerAddress, amount], {
146
+ account,
147
+ chain: VIEM_CHAINS[fromChain],
148
+ });
149
+ const approveReceipt = await publicClient.waitForTransactionReceipt({ hash: approveTxHash });
150
+ if (approveReceipt.status !== 'success') {
151
+ throw new SolanaBridgeError('INSUFFICIENT_ALLOWANCE', `USDC approve failed (tx: ${approveTxHash}).`);
152
+ }
153
+ }
154
+ // Burn USDC via CCTP V2 depositForBurn targeting Solana domain
155
+ const messenger = getContract({
156
+ address: messengerAddress,
157
+ abi: TokenMessengerV2Abi,
158
+ client: { public: publicClient, wallet: walletClient },
159
+ });
160
+ let burnTxHash;
161
+ try {
162
+ burnTxHash = await messenger.write.depositForBurn([amount, SOLANA_CCTP_DOMAIN, mintRecipient, usdcAddress, destinationCaller, maxFee, minFinalityThreshold], { account, chain: VIEM_CHAINS[fromChain] });
163
+ }
164
+ catch (err) {
165
+ const msg = err instanceof Error ? err.message : String(err);
166
+ throw new SolanaBridgeError('BURN_FAILED', `CCTP depositForBurn to Solana failed: ${msg}.`);
167
+ }
168
+ const receipt = await publicClient.waitForTransactionReceipt({ hash: burnTxHash });
169
+ if (receipt.status !== 'success') {
170
+ throw new SolanaBridgeError('BURN_FAILED', `depositForBurn transaction reverted (tx: ${burnTxHash}).`);
171
+ }
172
+ // Extract message bytes from MessageSent event
173
+ const { messageBytes, messageHash } = extractMessageSent(receipt.logs);
174
+ // Poll Circle IRIS for attestation
175
+ const attestation = await pollForAttestation(messageHash, CCTP_DOMAIN_IDS[fromChain], attestationApiUrl);
176
+ return {
177
+ burnTxHash,
178
+ messageHash,
179
+ messageBytes,
180
+ attestation,
181
+ destinationDomain: SOLANA_CCTP_DOMAIN,
182
+ amount,
183
+ elapsedMs: Date.now() - startMs,
184
+ };
185
+ }
186
+ /**
187
+ * Complete the Solana→EVM bridge by polling for Circle's attestation and minting on EVM.
188
+ *
189
+ * The caller is responsible for initiating the Solana burn via the Solana
190
+ * CCTP MessageTransmitter and passing the resulting messageBytes + messageHash here.
191
+ *
192
+ * @param walletClient - Viem WalletClient (for EVM signing)
193
+ * @param burnParams - Message bytes and hash from the Solana burn transaction
194
+ * @param options - Destination chain and optional overrides
195
+ */
196
+ export async function receiveFromSolanaOnEVM(walletClient, burnParams, options) {
197
+ const startMs = Date.now();
198
+ const { toChain, evmRpcUrl } = options;
199
+ const attestationApiUrl = options.attestationApiUrl ?? CIRCLE_ATTESTATION_API;
200
+ if (!walletClient.account) {
201
+ throw new SolanaBridgeError('NO_WALLET_CLIENT', 'WalletClient must have an account attached.');
202
+ }
203
+ const account = walletClient.account;
204
+ const recipient = options.evmRecipient ?? account.address;
205
+ // Poll Circle IRIS for attestation
206
+ const attestation = await pollForAttestation(burnParams.messageHash, burnParams.sourceDomain, attestationApiUrl);
207
+ // Submit receiveMessage on EVM
208
+ const transmitterAddress = MESSAGE_TRANSMITTER_V2_MAP[toChain];
209
+ const destChain = VIEM_CHAINS[toChain];
210
+ const destPublicClient = createPublicClient({ chain: destChain, transport: http(evmRpcUrl) });
211
+ const transmitter = getContract({
212
+ address: transmitterAddress,
213
+ abi: MessageTransmitterV2Abi,
214
+ client: { public: destPublicClient, wallet: walletClient },
215
+ });
216
+ let mintTxHash;
217
+ try {
218
+ mintTxHash = await transmitter.write.receiveMessage([burnParams.messageBytes, attestation], { account, chain: destChain });
219
+ }
220
+ catch (err) {
221
+ const msg = err instanceof Error ? err.message : String(err);
222
+ throw new SolanaBridgeError('MINT_FAILED', `CCTP receiveMessage on ${toChain} failed: ${msg}.`);
223
+ }
224
+ const mintReceipt = await destPublicClient.waitForTransactionReceipt({ hash: mintTxHash });
225
+ if (mintReceipt.status !== 'success') {
226
+ throw new SolanaBridgeError('MINT_FAILED', `receiveMessage reverted on ${toChain} (tx: ${mintTxHash}).`);
227
+ }
228
+ // Parse amount from mint receipt logs (MintAndWithdraw event)
229
+ // Fallback: return 0n if event not found (amount can be retrieved from the original Solana tx)
230
+ const amount = parseMintAmount(mintReceipt.logs);
231
+ return { mintTxHash, amount, toChain, recipient, elapsedMs: Date.now() - startMs };
232
+ }
233
+ // ─── Shared helpers ───
234
+ /**
235
+ * Extract CCTP MessageSent event from EVM transaction logs.
236
+ * Event topic: keccak256("MessageSent(bytes)") = 0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036
237
+ */
238
+ function extractMessageSent(logs) {
239
+ const MESSAGE_SENT_TOPIC = '0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036';
240
+ for (const log of logs) {
241
+ if (log.topics[0]?.toLowerCase() === MESSAGE_SENT_TOPIC.toLowerCase()) {
242
+ const dataHex = log.data.slice(2);
243
+ if (dataHex.length < 128)
244
+ continue;
245
+ const lengthHex = dataHex.slice(64, 128);
246
+ const messageLength = parseInt(lengthHex, 16);
247
+ if (messageLength === 0)
248
+ continue;
249
+ const messageBytesHex = dataHex.slice(128, 128 + messageLength * 2);
250
+ const messageBytes = ('0x' + messageBytesHex);
251
+ const messageHash = keccak256(messageBytes);
252
+ return { messageBytes, messageHash };
253
+ }
254
+ }
255
+ throw new SolanaBridgeError('BURN_FAILED', 'Could not find MessageSent event in burn transaction receipt.');
256
+ }
257
+ /** Parse USDC amount from MintAndWithdraw event logs (best-effort). */
258
+ function parseMintAmount(logs) {
259
+ // MintAndWithdraw(address,uint256,address) — topic0 = keccak256("MintAndWithdraw(address,uint256,address)")
260
+ const MINT_AND_WITHDRAW_TOPIC = '0x1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e9';
261
+ for (const log of logs) {
262
+ if (log.topics[0]?.toLowerCase() === MINT_AND_WITHDRAW_TOPIC.toLowerCase()) {
263
+ // amount is the second indexed param OR first data word
264
+ if (log.data.length >= 66) {
265
+ return BigInt('0x' + log.data.slice(2, 66));
266
+ }
267
+ }
268
+ }
269
+ return 0n; // fallback: caller can determine amount from source transaction
270
+ }
271
+ /** Poll Circle IRIS attestation API. */
272
+ async function pollForAttestation(messageHash, sourceDomain, apiUrl) {
273
+ const url = `${apiUrl}/v2/messages/${sourceDomain}/${messageHash}`;
274
+ for (let attempt = 0; attempt < MAX_ATTESTATION_POLLS; attempt++) {
275
+ let response;
276
+ try {
277
+ const res = await fetch(url, { headers: { Accept: 'application/json' } });
278
+ if (!res.ok) {
279
+ if (res.status === 404) {
280
+ await sleep(ATTESTATION_POLL_INTERVAL_MS);
281
+ continue;
282
+ }
283
+ const body = await res.text().catch(() => '');
284
+ throw new SolanaBridgeError('ATTESTATION_ERROR', `Circle API returned HTTP ${res.status}: ${body}.`);
285
+ }
286
+ response = await res.json();
287
+ }
288
+ catch (err) {
289
+ if (err instanceof SolanaBridgeError)
290
+ throw err;
291
+ const msg = err instanceof Error ? err.message : String(err);
292
+ throw new SolanaBridgeError('ATTESTATION_ERROR', `Failed to reach Circle IRIS API: ${msg}.`);
293
+ }
294
+ if (response.status === 'complete' && response.attestation)
295
+ return response.attestation;
296
+ if (response.status === 'error') {
297
+ throw new SolanaBridgeError('ATTESTATION_ERROR', `Circle attestation failed: ${response.error ?? 'unknown error'}.`);
298
+ }
299
+ await sleep(ATTESTATION_POLL_INTERVAL_MS);
300
+ }
301
+ throw new SolanaBridgeError('ATTESTATION_TIMEOUT', `Attestation not received after ${MAX_ATTESTATION_POLLS} attempts. Message hash: ${messageHash}.`);
302
+ }
303
+ function sleep(ms) {
304
+ return new Promise(resolve => setTimeout(resolve, ms));
305
+ }
306
+ export class SolanaBridgeError extends Error {
307
+ constructor(code, message) {
308
+ super(`[SolanaBridge:${code}] ${message}`);
309
+ this.code = code;
310
+ this.name = 'SolanaBridgeError';
311
+ }
312
+ }
313
+ //# sourceMappingURL=solana.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/bridge/solana.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,42 @@
1
+ /**
2
+ * @module bridge/types
3
+ * Type definitions and constants for the CCTP V2 cross-chain USDC bridge.
4
+ *
5
+ * Supports 10 EVM chains + Solana via Circle's Cross-Chain Transfer Protocol V2.
6
+ * EVM chains: Ethereum, Avalanche, Optimism, Arbitrum, Base, Polygon,
7
+ * Unichain, Linea, Sonic, Worldchain.
8
+ * Non-EVM: Solana (via bridge/solana.ts — uses separate CCTP V2 programs).
9
+ *
10
+ * Contract addresses verified against:
11
+ * - CCTP V2 EVM: https://developers.circle.com/cctp/references/contract-addresses
12
+ * - Solana V2 programs: https://developers.circle.com/cctp/references/solana-programs
13
+ * - USDC addresses: https://developers.circle.com/stablecoins/usdc-contract-addresses
14
+ */
1
15
  import type { Address, Hash, Hex } from 'viem';
2
16
  /** Supported bridge destination chains */
3
- export type BridgeChain = 'ethereum' | 'avalanche' | 'optimism' | 'arbitrum' | 'base' | 'polygon' | 'unichain' | 'linea' | 'sonic' | 'worldchain';
17
+ export type BridgeChain = 'ethereum' | 'avalanche' | 'optimism' | 'arbitrum' | 'base' | 'polygon' | 'unichain' | 'linea' | 'sonic' | 'worldchain' | 'solana';
18
+ /** EVM-only bridge chains (excludes non-EVM like Solana) */
19
+ export type EVMBridgeChain = Exclude<BridgeChain, 'solana'>;
4
20
  /**
5
21
  * CCTP V2 domain IDs — official Circle domain identifiers.
6
22
  * Source: https://developers.circle.com/cctp/references/contract-addresses
23
+ * Solana domain: 5 — https://developers.circle.com/cctp/docs/solana
7
24
  */
8
25
  export declare const CCTP_DOMAIN_IDS: Record<BridgeChain, number>;
9
- /** EVM chain IDs for supported bridge chains */
10
- export declare const BRIDGE_CHAIN_IDS: Record<BridgeChain, number>;
11
- /** USDC contract addresses per chain (native Circle USDC, not bridged variants) */
12
- export declare const USDC_CONTRACT: Record<BridgeChain, Address>;
13
- export declare const TOKEN_MESSENGER_V2: Record<BridgeChain, Address>;
14
- export declare const MESSAGE_TRANSMITTER_V2: Record<BridgeChain, Address>;
26
+ /**
27
+ * EVM chain IDs for EVM-compatible bridge chains.
28
+ * Solana is excluded use solana.ts for Solana-specific operations.
29
+ */
30
+ export declare const BRIDGE_CHAIN_IDS: Record<EVMBridgeChain, number>;
31
+ /**
32
+ * USDC contract addresses per chain (native Circle USDC, not bridged variants).
33
+ * Solana USDC: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (stored as string, not Address/Hex)
34
+ */
35
+ export declare const USDC_CONTRACT: Record<EVMBridgeChain, Address>;
36
+ /** Solana USDC mint address */
37
+ export declare const SOLANA_USDC_MINT: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
38
+ export declare const TOKEN_MESSENGER_V2: Record<EVMBridgeChain, Address>;
39
+ export declare const MESSAGE_TRANSMITTER_V2: Record<EVMBridgeChain, Address>;
15
40
  /**
16
41
  * CCTP V2 minFinalityThreshold values.
17
42
  * - FAST (0): ~12 seconds. Circle fast attestation.
@@ -52,13 +77,13 @@ export interface AttestationResponse {
52
77
  attestation: Hex | null;
53
78
  error?: string;
54
79
  }
55
- /** Result of the full bridge() operation */
80
+ /** Result of the full EVM↔EVM bridge() operation */
56
81
  export interface BridgeResult {
57
82
  burnTxHash: Hash;
58
83
  mintTxHash: Hash;
59
84
  amount: bigint;
60
- fromChain: BridgeChain;
61
- toChain: BridgeChain;
85
+ fromChain: EVMBridgeChain;
86
+ toChain: EVMBridgeChain;
62
87
  recipient: Address;
63
88
  nonce: bigint;
64
89
  elapsedMs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GACnB,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAC3D,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAWvD,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAWxD,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAWtD,CAAC;AASF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAW3D,CAAC;AAQF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAW/D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AACpE,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,sDAAsD;AACtD,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,gCAAgC;AAChC,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/E,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,GAAG,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,aAAa,GACb,qBAAqB,GACrB,mBAAmB,GACnB,aAAa,GACb,gBAAgB,GAChB,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GACnB,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAC3D,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GACzD,QAAQ,CAAC;AAEb,4DAA4D;AAC5D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAYvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAW3D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAWzD,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,gBAAgB,gDAA0D,CAAC;AAUxF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAW9D,CAAC;AASF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAWlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AACpE,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,sDAAsD;AACtD,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,gCAAgC;AAChC,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/E,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,GAAG,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,aAAa,GACb,qBAAqB,GACrB,mBAAmB,GACnB,aAAa,GACb,gBAAgB,GAChB,kBAAkB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * CCTP V2 domain IDs — official Circle domain identifiers.
3
3
  * Source: https://developers.circle.com/cctp/references/contract-addresses
4
+ * Solana domain: 5 — https://developers.circle.com/cctp/docs/solana
4
5
  */
5
6
  export const CCTP_DOMAIN_IDS = {
6
7
  ethereum: 0,
@@ -13,8 +14,12 @@ export const CCTP_DOMAIN_IDS = {
13
14
  linea: 11,
14
15
  sonic: 13,
15
16
  worldchain: 14,
17
+ solana: 5,
16
18
  };
17
- /** EVM chain IDs for supported bridge chains */
19
+ /**
20
+ * EVM chain IDs for EVM-compatible bridge chains.
21
+ * Solana is excluded — use solana.ts for Solana-specific operations.
22
+ */
18
23
  export const BRIDGE_CHAIN_IDS = {
19
24
  ethereum: 1,
20
25
  avalanche: 43114,
@@ -27,7 +32,10 @@ export const BRIDGE_CHAIN_IDS = {
27
32
  sonic: 146,
28
33
  worldchain: 480,
29
34
  };
30
- /** USDC contract addresses per chain (native Circle USDC, not bridged variants) */
35
+ /**
36
+ * USDC contract addresses per chain (native Circle USDC, not bridged variants).
37
+ * Solana USDC: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (stored as string, not Address/Hex)
38
+ */
31
39
  export const USDC_CONTRACT = {
32
40
  ethereum: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
33
41
  avalanche: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E',
@@ -40,10 +48,13 @@ export const USDC_CONTRACT = {
40
48
  sonic: '0x29219dd400f2Bf60E5a23d13Be72B486D4038894',
41
49
  worldchain: '0x79A02482A880bCE3B13e09Da970dC34db4CD24d1',
42
50
  };
51
+ /** Solana USDC mint address */
52
+ export const SOLANA_USDC_MINT = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
43
53
  /**
44
- * CCTP V2 TokenMessengerV2 — deterministic CREATE2 deployment, same address on all chains.
54
+ * CCTP V2 TokenMessengerV2 — deterministic CREATE2 deployment, same address on all EVM chains.
45
55
  * Source: https://developers.circle.com/cctp/references/contract-addresses
46
56
  * Verified on-chain: BaseScan, Etherscan, Arbiscan (active transactions as of 2026-03-10)
57
+ * Solana uses a different program — see bridge/solana.ts
47
58
  */
48
59
  const CCTP_V2_TOKEN_MESSENGER = '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d';
49
60
  export const TOKEN_MESSENGER_V2 = {
@@ -59,8 +70,9 @@ export const TOKEN_MESSENGER_V2 = {
59
70
  worldchain: CCTP_V2_TOKEN_MESSENGER,
60
71
  };
61
72
  /**
62
- * CCTP V2 MessageTransmitterV2 — deterministic CREATE2 deployment, same address on all chains.
73
+ * CCTP V2 MessageTransmitterV2 — deterministic CREATE2 deployment, same address on all EVM chains.
63
74
  * Source: https://developers.circle.com/cctp/references/contract-addresses
75
+ * Solana uses a different program — see bridge/solana.ts
64
76
  */
65
77
  const CCTP_V2_MESSAGE_TRANSMITTER = '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64';
66
78
  export const MESSAGE_TRANSMITTER_V2 = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,UAAU,EAAE,EAAE;CACf,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAgC;IAC3D,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,QAAQ,EAAE,4CAA4C;IACtD,SAAS,EAAE,4CAA4C;IACvD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,IAAI,EAAE,4CAA4C;IAClD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,4CAA4C;IACtD,KAAK,EAAE,4CAA4C;IACnD,KAAK,EAAE,4CAA4C;IACnD,UAAU,EAAE,4CAA4C;CACzD,CAAC;AAEF;;;;GAIG;AACH,MAAM,uBAAuB,GAAY,4CAA4C,CAAC;AAEtF,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,QAAQ,EAAE,uBAAuB;IACjC,SAAS,EAAE,uBAAuB;IAClC,QAAQ,EAAE,uBAAuB;IACjC,QAAQ,EAAE,uBAAuB;IACjC,IAAI,EAAE,uBAAuB;IAC7B,OAAO,EAAE,uBAAuB;IAChC,QAAQ,EAAE,uBAAuB;IACjC,KAAK,EAAE,uBAAuB;IAC9B,KAAK,EAAE,uBAAuB;IAC9B,UAAU,EAAE,uBAAuB;CACpC,CAAC;AAEF;;;GAGG;AACH,MAAM,2BAA2B,GAAY,4CAA4C,CAAC;AAE1F,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE,QAAQ,EAAE,2BAA2B;IACrC,SAAS,EAAE,2BAA2B;IACtC,QAAQ,EAAE,2BAA2B;IACrC,QAAQ,EAAE,2BAA2B;IACrC,IAAI,EAAE,2BAA2B;IACjC,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE,2BAA2B;IACrC,KAAK,EAAE,2BAA2B;IAClC,KAAK,EAAE,2BAA2B;IAClC,UAAU,EAAE,2BAA2B;CACxC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,IAAI;CACP,CAAC;AAEX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AACpE,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,sDAAsD;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D,QAAQ,EAAI,CAAC;IACb,SAAS,EAAG,CAAC;IACb,QAAQ,EAAI,CAAC;IACb,QAAQ,EAAI,CAAC;IACb,IAAI,EAAQ,CAAC;IACb,OAAO,EAAK,CAAC;IACb,QAAQ,EAAI,EAAE;IACd,KAAK,EAAO,EAAE;IACd,KAAK,EAAO,EAAE;IACd,UAAU,EAAE,EAAE;IACd,MAAM,EAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAmC;IAC9D,QAAQ,EAAI,CAAC;IACb,SAAS,EAAG,KAAK;IACjB,QAAQ,EAAI,EAAE;IACd,QAAQ,EAAI,KAAK;IACjB,IAAI,EAAQ,IAAI;IAChB,OAAO,EAAK,GAAG;IACf,QAAQ,EAAI,GAAG;IACf,KAAK,EAAO,KAAK;IACjB,KAAK,EAAO,GAAG;IACf,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAoC;IAC5D,QAAQ,EAAI,4CAA4C;IACxD,SAAS,EAAG,4CAA4C;IACxD,QAAQ,EAAI,4CAA4C;IACxD,QAAQ,EAAI,4CAA4C;IACxD,IAAI,EAAQ,4CAA4C;IACxD,OAAO,EAAK,4CAA4C;IACxD,QAAQ,EAAI,4CAA4C;IACxD,KAAK,EAAO,4CAA4C;IACxD,KAAK,EAAO,4CAA4C;IACxD,UAAU,EAAE,4CAA4C;CACzD,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,gBAAgB,GAAG,8CAAuD,CAAC;AAExF;;;;;GAKG;AACH,MAAM,uBAAuB,GAAY,4CAA4C,CAAC;AAEtF,MAAM,CAAC,MAAM,kBAAkB,GAAoC;IACjE,QAAQ,EAAI,uBAAuB;IACnC,SAAS,EAAG,uBAAuB;IACnC,QAAQ,EAAI,uBAAuB;IACnC,QAAQ,EAAI,uBAAuB;IACnC,IAAI,EAAQ,uBAAuB;IACnC,OAAO,EAAK,uBAAuB;IACnC,QAAQ,EAAI,uBAAuB;IACnC,KAAK,EAAO,uBAAuB;IACnC,KAAK,EAAO,uBAAuB;IACnC,UAAU,EAAE,uBAAuB;CACpC,CAAC;AAEF;;;;GAIG;AACH,MAAM,2BAA2B,GAAY,4CAA4C,CAAC;AAE1F,MAAM,CAAC,MAAM,sBAAsB,GAAoC;IACrE,QAAQ,EAAI,2BAA2B;IACvC,SAAS,EAAG,2BAA2B;IACvC,QAAQ,EAAI,2BAA2B;IACvC,QAAQ,EAAI,2BAA2B;IACvC,IAAI,EAAQ,2BAA2B;IACvC,OAAO,EAAK,2BAA2B;IACvC,QAAQ,EAAI,2BAA2B;IACvC,KAAK,EAAO,2BAA2B;IACvC,KAAK,EAAO,2BAA2B;IACvC,UAAU,EAAE,2BAA2B;CACxC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,IAAI;CACP,CAAC;AAEX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AACpE,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,sDAAsD;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MutualStakeEscrow.d.ts","sourceRoot":"","sources":["../../src/escrow/MutualStakeEscrow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,YAAY,EAGlB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAwFpB;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE;QAClB,YAAY,EAAE,YAAY,CAAC;QAC3B,YAAY,EAAE,YAAY,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB;IAOD;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyDhE;;;;OAIG;IACG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4B3E;;;OAGG;IACG,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4BtD;;;;OAIG;IACG,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBnE;;;OAGG;IACG,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBtD;;;;OAIG;IACG,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBxE;;;OAGG;IACG,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBtD;;;OAGG;IACG,cAAc,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgB9D;;;OAGG;IACG,UAAU,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB/D;;;OAGG;IACG,SAAS,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;CAU5D"}
1
+ {"version":3,"file":"MutualStakeEscrow.d.ts","sourceRoot":"","sources":["../../src/escrow/MutualStakeEscrow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAwFpB;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE;QAClB,YAAY,EAAE,YAAY,CAAC;QAC3B,YAAY,EAAE,YAAY,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB;IAOD;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAqDhE;;;;OAIG;IACG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4B3E;;;OAGG;IACG,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4BtD;;;;OAIG;IACG,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBnE;;;OAGG;IACG,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBtD;;;;OAIG;IACG,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBxE;;;OAGG;IACG,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBtD;;;OAGG;IACG,cAAc,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgB9D;;;OAGG;IACG,UAAU,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB/D;;;OAGG;IACG,SAAS,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;CAU5D"}
@@ -123,11 +123,9 @@ export class MutualStakeEscrow {
123
123
  account,
124
124
  chain: this.walletClient.chain,
125
125
  });
126
- const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
127
- // Extract vault address from VaultCreated event
128
- const vaultCreatedLog = receipt.logs.find((log) => log.topics[0] === '0x' // Match VaultCreated event signature
129
- );
130
- // Fallback: read vault address from return data via simulation
126
+ await this.publicClient.waitForTransactionReceipt({ hash: txHash });
127
+ // Read vault address from return data via simulation
128
+ // (VaultCreated event parsing reserved for future use)
131
129
  const vaultAddress = await this.publicClient.readContract({
132
130
  address: this.factoryAddress,
133
131
  abi: StakeVaultFactoryAbi,
@@ -1 +1 @@
1
- {"version":3,"file":"MutualStakeEscrow.js","sourceRoot":"","sources":["../../src/escrow/MutualStakeEscrow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MutualStakeEscrow.js","sourceRoot":"","sources":["../../src/escrow/MutualStakeEscrow.ts"],"names":[],"mappings":"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"}