@chainlink/ccip-sdk 0.0.0 → 0.90.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 (319) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/dist/aptos/exec.d.ts +18 -0
  4. package/dist/aptos/exec.d.ts.map +1 -0
  5. package/dist/aptos/exec.js +55 -0
  6. package/dist/aptos/exec.js.map +1 -0
  7. package/dist/aptos/hasher.d.ts +11 -0
  8. package/dist/aptos/hasher.d.ts.map +1 -0
  9. package/dist/aptos/hasher.js +62 -0
  10. package/dist/aptos/hasher.js.map +1 -0
  11. package/dist/aptos/index.d.ts +92 -0
  12. package/dist/aptos/index.d.ts.map +1 -0
  13. package/dist/aptos/index.js +482 -0
  14. package/dist/aptos/index.js.map +1 -0
  15. package/dist/aptos/logs.d.ts +9 -0
  16. package/dist/aptos/logs.d.ts.map +1 -0
  17. package/dist/aptos/logs.js +167 -0
  18. package/dist/aptos/logs.js.map +1 -0
  19. package/dist/aptos/send.d.ts +11 -0
  20. package/dist/aptos/send.d.ts.map +1 -0
  21. package/dist/aptos/send.js +78 -0
  22. package/dist/aptos/send.js.map +1 -0
  23. package/dist/aptos/token.d.ts +4 -0
  24. package/dist/aptos/token.d.ts.map +1 -0
  25. package/dist/aptos/token.js +134 -0
  26. package/dist/aptos/token.js.map +1 -0
  27. package/dist/aptos/types.d.ts +78 -0
  28. package/dist/aptos/types.d.ts.map +1 -0
  29. package/dist/aptos/types.js +60 -0
  30. package/dist/aptos/types.js.map +1 -0
  31. package/dist/aptos/utils.d.ts +12 -0
  32. package/dist/aptos/utils.d.ts.map +1 -0
  33. package/dist/aptos/utils.js +15 -0
  34. package/dist/aptos/utils.js.map +1 -0
  35. package/dist/chain.d.ts +344 -0
  36. package/dist/chain.d.ts.map +1 -0
  37. package/dist/chain.js +41 -0
  38. package/dist/chain.js.map +1 -0
  39. package/dist/commits.d.ts +25 -0
  40. package/dist/commits.d.ts.map +1 -0
  41. package/dist/commits.js +29 -0
  42. package/dist/commits.js.map +1 -0
  43. package/dist/evm/abi/BurnMintERC677Token.d.ts +602 -0
  44. package/dist/evm/abi/BurnMintERC677Token.d.ts.map +1 -0
  45. package/dist/evm/abi/BurnMintERC677Token.js +488 -0
  46. package/dist/evm/abi/BurnMintERC677Token.js.map +1 -0
  47. package/dist/evm/abi/CommitStore_1_2.d.ts +688 -0
  48. package/dist/evm/abi/CommitStore_1_2.d.ts.map +1 -0
  49. package/dist/evm/abi/CommitStore_1_2.js +638 -0
  50. package/dist/evm/abi/CommitStore_1_2.js.map +1 -0
  51. package/dist/evm/abi/CommitStore_1_5.d.ts +708 -0
  52. package/dist/evm/abi/CommitStore_1_5.d.ts.map +1 -0
  53. package/dist/evm/abi/CommitStore_1_5.js +675 -0
  54. package/dist/evm/abi/CommitStore_1_5.js.map +1 -0
  55. package/dist/evm/abi/FeeQuoter_1_6.d.ts +1770 -0
  56. package/dist/evm/abi/FeeQuoter_1_6.d.ts.map +1 -0
  57. package/dist/evm/abi/FeeQuoter_1_6.js +1904 -0
  58. package/dist/evm/abi/FeeQuoter_1_6.js.map +1 -0
  59. package/dist/evm/abi/LockReleaseTokenPool_1_5.d.ts +1116 -0
  60. package/dist/evm/abi/LockReleaseTokenPool_1_5.d.ts.map +1 -0
  61. package/dist/evm/abi/LockReleaseTokenPool_1_5.js +1096 -0
  62. package/dist/evm/abi/LockReleaseTokenPool_1_5.js.map +1 -0
  63. package/dist/evm/abi/LockReleaseTokenPool_1_5_1.d.ts +1306 -0
  64. package/dist/evm/abi/LockReleaseTokenPool_1_5_1.d.ts.map +1 -0
  65. package/dist/evm/abi/LockReleaseTokenPool_1_5_1.js +1278 -0
  66. package/dist/evm/abi/LockReleaseTokenPool_1_5_1.js.map +1 -0
  67. package/dist/evm/abi/LockReleaseTokenPool_1_6_1.d.ts +1290 -0
  68. package/dist/evm/abi/LockReleaseTokenPool_1_6_1.d.ts.map +1 -0
  69. package/dist/evm/abi/LockReleaseTokenPool_1_6_1.js +1288 -0
  70. package/dist/evm/abi/LockReleaseTokenPool_1_6_1.js.map +1 -0
  71. package/dist/evm/abi/OffRamp_1_2.d.ts +1217 -0
  72. package/dist/evm/abi/OffRamp_1_2.d.ts.map +1 -0
  73. package/dist/evm/abi/OffRamp_1_2.js +1204 -0
  74. package/dist/evm/abi/OffRamp_1_2.js.map +1 -0
  75. package/dist/evm/abi/OffRamp_1_5.d.ts +1271 -0
  76. package/dist/evm/abi/OffRamp_1_5.d.ts.map +1 -0
  77. package/dist/evm/abi/OffRamp_1_5.js +1273 -0
  78. package/dist/evm/abi/OffRamp_1_5.js.map +1 -0
  79. package/dist/evm/abi/OffRamp_1_6.d.ts +1472 -0
  80. package/dist/evm/abi/OffRamp_1_6.d.ts.map +1 -0
  81. package/dist/evm/abi/OffRamp_1_6.js +1529 -0
  82. package/dist/evm/abi/OffRamp_1_6.js.map +1 -0
  83. package/dist/evm/abi/OnRamp_1_2.d.ts +1391 -0
  84. package/dist/evm/abi/OnRamp_1_2.d.ts.map +1 -0
  85. package/dist/evm/abi/OnRamp_1_2.js +1343 -0
  86. package/dist/evm/abi/OnRamp_1_2.js.map +1 -0
  87. package/dist/evm/abi/OnRamp_1_5.d.ts +1443 -0
  88. package/dist/evm/abi/OnRamp_1_5.d.ts.map +1 -0
  89. package/dist/evm/abi/OnRamp_1_5.js +1427 -0
  90. package/dist/evm/abi/OnRamp_1_5.js.map +1 -0
  91. package/dist/evm/abi/OnRamp_1_6.d.ts +796 -0
  92. package/dist/evm/abi/OnRamp_1_6.d.ts.map +1 -0
  93. package/dist/evm/abi/OnRamp_1_6.js +880 -0
  94. package/dist/evm/abi/OnRamp_1_6.js.map +1 -0
  95. package/dist/evm/abi/Router.d.ts +541 -0
  96. package/dist/evm/abi/Router.d.ts.map +1 -0
  97. package/dist/evm/abi/Router.js +508 -0
  98. package/dist/evm/abi/Router.js.map +1 -0
  99. package/dist/evm/abi/TokenAdminRegistry_1_5.d.ts +373 -0
  100. package/dist/evm/abi/TokenAdminRegistry_1_5.d.ts.map +1 -0
  101. package/dist/evm/abi/TokenAdminRegistry_1_5.js +333 -0
  102. package/dist/evm/abi/TokenAdminRegistry_1_5.js.map +1 -0
  103. package/dist/evm/const.d.ts +27 -0
  104. package/dist/evm/const.d.ts.map +1 -0
  105. package/dist/evm/const.js +63 -0
  106. package/dist/evm/const.js.map +1 -0
  107. package/dist/evm/errors.d.ts +36 -0
  108. package/dist/evm/errors.d.ts.map +1 -0
  109. package/dist/evm/errors.js +192 -0
  110. package/dist/evm/errors.js.map +1 -0
  111. package/dist/evm/hasher.d.ts +5 -0
  112. package/dist/evm/hasher.d.ts.map +1 -0
  113. package/dist/evm/hasher.js +116 -0
  114. package/dist/evm/hasher.js.map +1 -0
  115. package/dist/evm/index.d.ts +121 -0
  116. package/dist/evm/index.d.ts.map +1 -0
  117. package/dist/evm/index.js +904 -0
  118. package/dist/evm/index.js.map +1 -0
  119. package/dist/evm/messages.d.ts +35 -0
  120. package/dist/evm/messages.d.ts.map +1 -0
  121. package/dist/evm/messages.js +11 -0
  122. package/dist/evm/messages.js.map +1 -0
  123. package/dist/evm/offchain.d.ts +16 -0
  124. package/dist/evm/offchain.d.ts.map +1 -0
  125. package/dist/evm/offchain.js +142 -0
  126. package/dist/evm/offchain.js.map +1 -0
  127. package/dist/execution.d.ts +80 -0
  128. package/dist/execution.d.ts.map +1 -0
  129. package/dist/execution.js +91 -0
  130. package/dist/execution.js.map +1 -0
  131. package/dist/extra-args.d.ts +45 -0
  132. package/dist/extra-args.d.ts.map +1 -0
  133. package/dist/extra-args.js +44 -0
  134. package/dist/extra-args.js.map +1 -0
  135. package/dist/gas.d.ts +27 -0
  136. package/dist/gas.d.ts.map +1 -0
  137. package/dist/gas.js +80 -0
  138. package/dist/gas.js.map +1 -0
  139. package/dist/hasher/common.d.ts +12 -0
  140. package/dist/hasher/common.d.ts.map +1 -0
  141. package/dist/hasher/common.js +19 -0
  142. package/dist/hasher/common.js.map +1 -0
  143. package/dist/hasher/hasher.d.ts +4 -0
  144. package/dist/hasher/hasher.d.ts.map +1 -0
  145. package/dist/hasher/hasher.js +11 -0
  146. package/dist/hasher/hasher.js.map +1 -0
  147. package/dist/hasher/index.d.ts +4 -0
  148. package/dist/hasher/index.d.ts.map +1 -0
  149. package/dist/hasher/index.js +4 -0
  150. package/dist/hasher/index.js.map +1 -0
  151. package/dist/hasher/merklemulti.d.ts +58 -0
  152. package/dist/hasher/merklemulti.d.ts.map +1 -0
  153. package/dist/hasher/merklemulti.js +257 -0
  154. package/dist/hasher/merklemulti.js.map +1 -0
  155. package/dist/index.d.ts +13 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +13 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/offchain.d.ts +20 -0
  160. package/dist/offchain.d.ts.map +1 -0
  161. package/dist/offchain.js +59 -0
  162. package/dist/offchain.js.map +1 -0
  163. package/dist/requests.d.ts +48 -0
  164. package/dist/requests.d.ts.map +1 -0
  165. package/dist/requests.js +286 -0
  166. package/dist/requests.js.map +1 -0
  167. package/dist/selectors.d.ts +9 -0
  168. package/dist/selectors.d.ts.map +1 -0
  169. package/dist/selectors.js +1330 -0
  170. package/dist/selectors.js.map +1 -0
  171. package/dist/solana/cleanup.d.ts +15 -0
  172. package/dist/solana/cleanup.d.ts.map +1 -0
  173. package/dist/solana/cleanup.js +159 -0
  174. package/dist/solana/cleanup.js.map +1 -0
  175. package/dist/solana/exec.d.ts +15 -0
  176. package/dist/solana/exec.d.ts.map +1 -0
  177. package/dist/solana/exec.js +417 -0
  178. package/dist/solana/exec.js.map +1 -0
  179. package/dist/solana/hasher.d.ts +4 -0
  180. package/dist/solana/hasher.d.ts.map +1 -0
  181. package/dist/solana/hasher.js +81 -0
  182. package/dist/solana/hasher.js.map +1 -0
  183. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.d.ts +866 -0
  184. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.d.ts.map +1 -0
  185. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.js +866 -0
  186. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.js.map +1 -0
  187. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.d.ts +949 -0
  188. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.d.ts.map +1 -0
  189. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.js +949 -0
  190. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.js.map +1 -0
  191. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.d.ts +1374 -0
  192. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.d.ts.map +1 -0
  193. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.js +1374 -0
  194. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.js.map +1 -0
  195. package/dist/solana/idl/1.6.0/CCIP_COMMON.d.ts +104 -0
  196. package/dist/solana/idl/1.6.0/CCIP_COMMON.d.ts.map +1 -0
  197. package/dist/solana/idl/1.6.0/CCIP_COMMON.js +104 -0
  198. package/dist/solana/idl/1.6.0/CCIP_COMMON.js.map +1 -0
  199. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.d.ts +2746 -0
  200. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.d.ts.map +1 -0
  201. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.js +2746 -0
  202. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.js.map +1 -0
  203. package/dist/solana/idl/1.6.0/CCIP_ROUTER.d.ts +2332 -0
  204. package/dist/solana/idl/1.6.0/CCIP_ROUTER.d.ts.map +1 -0
  205. package/dist/solana/idl/1.6.0/CCIP_ROUTER.js +2332 -0
  206. package/dist/solana/idl/1.6.0/CCIP_ROUTER.js.map +1 -0
  207. package/dist/solana/index.d.ts +205 -0
  208. package/dist/solana/index.d.ts.map +1 -0
  209. package/dist/solana/index.js +1085 -0
  210. package/dist/solana/index.js.map +1 -0
  211. package/dist/solana/offchain.d.ts +31 -0
  212. package/dist/solana/offchain.d.ts.map +1 -0
  213. package/dist/solana/offchain.js +152 -0
  214. package/dist/solana/offchain.js.map +1 -0
  215. package/dist/solana/patchBorsh.d.ts +2 -0
  216. package/dist/solana/patchBorsh.d.ts.map +1 -0
  217. package/dist/solana/patchBorsh.js +60 -0
  218. package/dist/solana/patchBorsh.js.map +1 -0
  219. package/dist/solana/send.d.ts +14 -0
  220. package/dist/solana/send.d.ts.map +1 -0
  221. package/dist/solana/send.js +272 -0
  222. package/dist/solana/send.js.map +1 -0
  223. package/dist/solana/types.d.ts +4 -0
  224. package/dist/solana/types.d.ts.map +1 -0
  225. package/dist/solana/types.js +2 -0
  226. package/dist/solana/types.js.map +1 -0
  227. package/dist/solana/utils.d.ts +58 -0
  228. package/dist/solana/utils.d.ts.map +1 -0
  229. package/dist/solana/utils.js +211 -0
  230. package/dist/solana/utils.js.map +1 -0
  231. package/dist/sui/hasher.d.ts +12 -0
  232. package/dist/sui/hasher.d.ts.map +1 -0
  233. package/dist/sui/hasher.js +63 -0
  234. package/dist/sui/hasher.js.map +1 -0
  235. package/dist/sui/index.d.ts +72 -0
  236. package/dist/sui/index.d.ts.map +1 -0
  237. package/dist/sui/index.js +128 -0
  238. package/dist/sui/index.js.map +1 -0
  239. package/dist/sui/types.d.ts +17 -0
  240. package/dist/sui/types.d.ts.map +1 -0
  241. package/dist/sui/types.js +17 -0
  242. package/dist/sui/types.js.map +1 -0
  243. package/dist/supported-chains.d.ts +5 -0
  244. package/dist/supported-chains.d.ts.map +1 -0
  245. package/dist/supported-chains.js +3 -0
  246. package/dist/supported-chains.js.map +1 -0
  247. package/dist/types.d.ts +118 -0
  248. package/dist/types.d.ts.map +1 -0
  249. package/dist/types.js +11 -0
  250. package/dist/types.js.map +1 -0
  251. package/dist/utils.d.ts +117 -0
  252. package/dist/utils.d.ts.map +1 -0
  253. package/dist/utils.js +336 -0
  254. package/dist/utils.js.map +1 -0
  255. package/package.json +66 -8
  256. package/src/aptos/exec.ts +69 -0
  257. package/src/aptos/hasher.ts +92 -0
  258. package/src/aptos/index.ts +660 -0
  259. package/src/aptos/logs.ts +210 -0
  260. package/src/aptos/send.ts +120 -0
  261. package/src/aptos/token.ts +150 -0
  262. package/src/aptos/types.ts +85 -0
  263. package/src/aptos/utils.ts +24 -0
  264. package/src/chain.ts +398 -0
  265. package/src/commits.ts +44 -0
  266. package/src/evm/abi/BurnMintERC677Token.ts +487 -0
  267. package/src/evm/abi/CommitStore_1_2.ts +637 -0
  268. package/src/evm/abi/CommitStore_1_5.ts +674 -0
  269. package/src/evm/abi/FeeQuoter_1_6.ts +1903 -0
  270. package/src/evm/abi/LockReleaseTokenPool_1_5.ts +1095 -0
  271. package/src/evm/abi/LockReleaseTokenPool_1_5_1.ts +1277 -0
  272. package/src/evm/abi/LockReleaseTokenPool_1_6_1.ts +1287 -0
  273. package/src/evm/abi/OffRamp_1_2.ts +1203 -0
  274. package/src/evm/abi/OffRamp_1_5.ts +1272 -0
  275. package/src/evm/abi/OffRamp_1_6.ts +1528 -0
  276. package/src/evm/abi/OnRamp_1_2.ts +1342 -0
  277. package/src/evm/abi/OnRamp_1_5.ts +1426 -0
  278. package/src/evm/abi/OnRamp_1_6.ts +879 -0
  279. package/src/evm/abi/Router.ts +507 -0
  280. package/src/evm/abi/TokenAdminRegistry_1_5.ts +332 -0
  281. package/src/evm/const.ts +69 -0
  282. package/src/evm/errors.ts +212 -0
  283. package/src/evm/hasher.ts +166 -0
  284. package/src/evm/index.ts +1262 -0
  285. package/src/evm/messages.ts +73 -0
  286. package/src/evm/offchain.ts +189 -0
  287. package/src/execution.ts +131 -0
  288. package/src/extra-args.ts +71 -0
  289. package/src/gas.ts +135 -0
  290. package/src/hasher/common.ts +23 -0
  291. package/src/hasher/hasher.ts +12 -0
  292. package/src/hasher/index.ts +3 -0
  293. package/src/hasher/merklemulti.ts +309 -0
  294. package/src/index.ts +51 -0
  295. package/src/offchain.ts +86 -0
  296. package/src/requests.ts +339 -0
  297. package/src/selectors.ts +1340 -0
  298. package/src/solana/cleanup.ts +216 -0
  299. package/src/solana/exec.ts +645 -0
  300. package/src/solana/hasher.ts +104 -0
  301. package/src/solana/idl/1.6.0/BASE_TOKEN_POOL.ts +1734 -0
  302. package/src/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.ts +1900 -0
  303. package/src/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.ts +2750 -0
  304. package/src/solana/idl/1.6.0/CCIP_COMMON.ts +210 -0
  305. package/src/solana/idl/1.6.0/CCIP_OFFRAMP.ts +5494 -0
  306. package/src/solana/idl/1.6.0/CCIP_ROUTER.ts +4671 -0
  307. package/src/solana/index.ts +1454 -0
  308. package/src/solana/offchain.ts +209 -0
  309. package/src/solana/patchBorsh.ts +67 -0
  310. package/src/solana/send.ts +436 -0
  311. package/src/solana/types.ts +6 -0
  312. package/src/solana/utils.ts +272 -0
  313. package/src/sui/hasher.ts +90 -0
  314. package/src/sui/index.ts +198 -0
  315. package/src/sui/types.ts +22 -0
  316. package/src/supported-chains.ts +4 -0
  317. package/src/types.ts +153 -0
  318. package/src/utils.ts +405 -0
  319. package/tsconfig.json +18 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/evm/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { AbiParametersToPrimitiveTypes, ExtractAbiEvent } from 'abitype';
2
+ import type { Addressable } from 'ethers';
3
+ import type { EVMExtraArgsV2 } from '../extra-args.ts';
4
+ import type { CCIPVersion, MergeArrayElements } from '../types.ts';
5
+ import type EVM2EVMOnRamp_1_5_ABI from './abi/OnRamp_1_5.ts';
6
+ import type OnRamp_1_6_ABI from './abi/OnRamp_1_6.ts';
7
+ export type CleanAddressable<T> = T extends string | Addressable ? string : T extends Record<string, unknown> ? {
8
+ [K in keyof T]: CleanAddressable<T[K]>;
9
+ } : T extends readonly unknown[] ? readonly CleanAddressable<T[number]>[] : T;
10
+ type EVM2AnyMessageRequested = CleanAddressable<AbiParametersToPrimitiveTypes<ExtractAbiEvent<typeof EVM2EVMOnRamp_1_5_ABI, 'CCIPSendRequested'>['inputs']>[0]>;
11
+ export type CCIPMessage_V1_6 = MergeArrayElements<CleanAddressable<AbiParametersToPrimitiveTypes<ExtractAbiEvent<typeof OnRamp_1_6_ABI, 'CCIPMessageSent'>['inputs']>[2]>, {
12
+ tokenAmounts: readonly SourceTokenData[];
13
+ }>;
14
+ export type CCIPMessage_V1_5_EVM = MergeArrayElements<EVM2AnyMessageRequested, {
15
+ header: Omit<CCIPMessage_V1_6['header'], 'destChainSelector'>;
16
+ tokenAmounts: readonly SourceTokenData[];
17
+ }>;
18
+ export type CCIPMessage_V1_2_EVM = EVM2AnyMessageRequested & {
19
+ header: Omit<CCIPMessage_V1_6['header'], 'destChainSelector'>;
20
+ };
21
+ export type CCIPMessage_V1_6_EVM = CCIPMessage_V1_6 & EVMExtraArgsV2;
22
+ export type CCIPMessage_EVM<V extends CCIPVersion = CCIPVersion> = V extends typeof CCIPVersion.V1_2 ? CCIPMessage_V1_2_EVM : V extends typeof CCIPVersion.V1_5 ? CCIPMessage_V1_5_EVM : CCIPMessage_V1_6_EVM;
23
+ export type SourceTokenData = {
24
+ sourcePoolAddress: string;
25
+ destTokenAddress: string;
26
+ extraData: string;
27
+ destGasAmount: bigint;
28
+ };
29
+ /**
30
+ * parse <=v1.5 `message.sourceTokenData`;
31
+ * v1.6+ already contains this in `message.tokenAmounts`
32
+ */
33
+ export declare function parseSourceTokenData(data: string): SourceTokenData;
34
+ export {};
35
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/evm/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,QAAQ,CAAA;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,KAAK,qBAAqB,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAIrD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,WAAW,GAC5D,MAAM,GACN,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC1C,CAAC,SAAS,SAAS,OAAO,EAAE,GAC1B,SAAS,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GACtC,CAAC,CAAA;AAGT,KAAK,uBAAuB,GAAG,gBAAgB,CAC7C,6BAA6B,CAC3B,eAAe,CAAC,OAAO,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAC7E,CAAC,CAAC,CAAC,CACL,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAC/C,gBAAgB,CACd,6BAA6B,CAC3B,eAAe,CAAC,OAAO,cAAc,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CACpE,CAAC,CAAC,CAAC,CACL,EACD;IAAE,YAAY,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,CAC7C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CACnD,uBAAuB,EACvB;IACE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC7D,YAAY,EAAE,SAAS,eAAe,EAAE,CAAA;CACzC,CACF,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,GAAG;IAC3D,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAA;CAC9D,CAAA;AAGD,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,cAAc,CAAA;AAEpE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,CAAC,SAAS,OAAO,WAAW,CAAC,IAAI,GAChG,oBAAoB,GACpB,CAAC,SAAS,OAAO,WAAW,CAAC,IAAI,GAC/B,oBAAoB,GACpB,oBAAoB,CAAA;AAI1B,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAGlE"}
@@ -0,0 +1,11 @@
1
+ import { defaultAbiCoder } from "./const.js";
2
+ const SourceTokenData = 'tuple(bytes sourcePoolAddress, bytes destTokenAddress, bytes extraData, uint64 destGasAmount)';
3
+ /**
4
+ * parse <=v1.5 `message.sourceTokenData`;
5
+ * v1.6+ already contains this in `message.tokenAmounts`
6
+ */
7
+ export function parseSourceTokenData(data) {
8
+ const decoded = defaultAbiCoder.decode([SourceTokenData], data);
9
+ return decoded[0].toObject();
10
+ }
11
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/evm/messages.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAiD5C,MAAM,eAAe,GACnB,+FAA+F,CAAA;AAQjG;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAA;IAC/D,OAAQ,OAAO,CAAC,CAAC,CAAY,CAAC,QAAQ,EAAqB,CAAA;AAC7D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { EventFragment } from 'ethers';
2
+ import type { CCIPMessage, CCIPRequest, OffchainTokenData } from '../types.ts';
3
+ export declare const LBTC_EVENT: EventFragment;
4
+ export declare const LBTC_EVENT_V2: EventFragment;
5
+ /**
6
+ * Fetch offchain token data for all transfers in request
7
+ *
8
+ * @param request - Request (or subset of) to fetch offchainTokenData for
9
+ * @returns Array of byte arrays, one per transfer in request
10
+ */
11
+ export declare function fetchEVMOffchainTokenData(request: Pick<CCIPRequest, 'tx'> & {
12
+ message: CCIPMessage;
13
+ log: Pick<CCIPRequest['log'], 'index'>;
14
+ }): Promise<OffchainTokenData[]>;
15
+ export declare function encodeEVMOffchainTokenData(data: OffchainTokenData): string;
16
+ //# sourceMappingURL=offchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offchain.d.ts","sourceRoot":"","sources":["../../src/evm/offchain.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,EAAE,MAAM,QAAQ,CAAA;AAGlE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAY9E,eAAO,MAAM,UAAU,eAEtB,CAAA;AACD,eAAO,MAAM,aAAa,eAEzB,CAAA;AAGD;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;IACjC,OAAO,EAAE,WAAW,CAAA;IACpB,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;CACvC,GACA,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4C9B;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAO1E"}
@@ -0,0 +1,142 @@
1
+ import { EventFragment } from 'ethers';
2
+ import { getLbtcAttestation, getUsdcAttestation } from "../offchain.js";
3
+ import { networkInfo } from "../utils.js";
4
+ import { defaultAbiCoder, interfaces, requestsFragments } from "./const.js";
5
+ import { parseSourceTokenData } from "./messages.js";
6
+ const BURNED_EVENT_1_5 = interfaces.TokenPool_v1_5.getEvent('Burned');
7
+ const BURNED_EVENT_1_6 = interfaces.TokenPool_v1_6.getEvent('LockedOrBurned');
8
+ const BURNED_EVENT_TOPIC_HASHES = new Set([BURNED_EVENT_1_5.topicHash, BURNED_EVENT_1_6.topicHash]);
9
+ const USDC_EVENT = EventFragment.from('MessageSent(bytes message)');
10
+ const TRANSFER_EVENT = EventFragment.from('Transfer(address from, address to, uint256 value)');
11
+ export const LBTC_EVENT = EventFragment.from('DepositToBridge(address fromAddress, bytes32 toAddress, bytes32 payloadHash, bytes payload)');
12
+ export const LBTC_EVENT_V2 = EventFragment.from('DepositToBridge(address fromAddress, bytes32 toAddress, bytes32 payloadHash)');
13
+ const LBTC_EVENTS_HASHES = new Set([LBTC_EVENT.topicHash, LBTC_EVENT_V2.topicHash]);
14
+ /**
15
+ * Fetch offchain token data for all transfers in request
16
+ *
17
+ * @param request - Request (or subset of) to fetch offchainTokenData for
18
+ * @returns Array of byte arrays, one per transfer in request
19
+ */
20
+ export async function fetchEVMOffchainTokenData(request) {
21
+ const { isTestnet } = networkInfo(request.message.header.sourceChainSelector);
22
+ // there's a chance there are other CCIPSendRequested in same tx,
23
+ // and they may contain USDC transfers as well, so we select
24
+ // any USDC logs after that and before our CCIPSendRequested
25
+ const prevCcipRequestIdx = request.tx.logs.find(({ topics, index }) => topics[0] in requestsFragments && index < request.log.index)?.index ?? -1;
26
+ const usdcRequestLogs = request.tx.logs.filter(({ index }) => prevCcipRequestIdx < index && index < request.log.index);
27
+ const offchainTokenData = request.message.tokenAmounts.map(() => undefined);
28
+ const usdcTokenData = await getUsdcTokenData(request.message.tokenAmounts, usdcRequestLogs, isTestnet);
29
+ let lbtcTokenData = [];
30
+ try {
31
+ let tokenAmounts;
32
+ if ('sourceTokenData' in request.message) {
33
+ tokenAmounts = request.message.sourceTokenData.map(parseSourceTokenData);
34
+ }
35
+ else {
36
+ tokenAmounts = request.message.tokenAmounts;
37
+ }
38
+ //for lbtc we distinguish logs by hash in event, so we can pass all of them
39
+ lbtcTokenData = await getLbtcTokenData(tokenAmounts, request.tx.logs, isTestnet);
40
+ }
41
+ catch (_) {
42
+ // pass
43
+ }
44
+ for (let i = 0; i < offchainTokenData.length; i++) {
45
+ if (usdcTokenData[i]) {
46
+ offchainTokenData[i] = usdcTokenData[i];
47
+ }
48
+ else if (lbtcTokenData[i]) {
49
+ offchainTokenData[i] = lbtcTokenData[i];
50
+ }
51
+ }
52
+ return offchainTokenData;
53
+ }
54
+ export function encodeEVMOffchainTokenData(data) {
55
+ if (data?._tag === 'usdc') {
56
+ return defaultAbiCoder.encode(['tuple(bytes message, bytes attestation)'], [data]);
57
+ }
58
+ else if (data?._tag === 'lbtc') {
59
+ return data.attestation;
60
+ }
61
+ return '0x';
62
+ }
63
+ /**
64
+ * Try to fetch USDC attestations for transfers, return undefined in position if can't
65
+ *
66
+ * @param tokenAmounts - all tokenAmounts to try
67
+ * @param allLogsInRequest - all other logs in same tx as CCIPSendRequested
68
+ * @param isTestnet - use testnet CCTP API endpoint
69
+ * @returns array where each position is either the attestation for that transfer or undefined
70
+ **/
71
+ async function getUsdcTokenData(tokenAmounts, allLogsInRequest, isTestnet) {
72
+ const attestations = [];
73
+ const messageSentPerTokenAndPool = allLogsInRequest.reduce((acc, log, i, arr) => {
74
+ // for our MessageSent of interest (USDC-like), the token is the contract
75
+ // which emitted a (burn) Transfer immediately before this event, and the pool emitted a Burned
76
+ // event 2 events after
77
+ const transferLog = arr[i - 1];
78
+ const poolLog = arr[i + 2];
79
+ if (log.topics[0] !== USDC_EVENT.topicHash ||
80
+ transferLog?.topics?.[0] !== TRANSFER_EVENT.topicHash ||
81
+ !BURNED_EVENT_TOPIC_HASHES.has(poolLog?.topics?.[0])) {
82
+ return acc;
83
+ }
84
+ const token = transferLog.address;
85
+ const pool = poolLog.address;
86
+ acc.set(token, [...(acc.get(token) ?? []), log]);
87
+ acc.set(pool, [...(acc.get(pool) ?? []), log]);
88
+ return acc;
89
+ }, new Map());
90
+ for (const [i, tokenAmount] of tokenAmounts.entries()) {
91
+ const tokenOrPool = 'token' in tokenAmount ? tokenAmount.token : tokenAmount.sourcePoolAddress;
92
+ // what if there are more USDC transfers of this same token after this one?
93
+ const tokenTransfersCountAfter = tokenAmounts.filter((ta, j) => ('token' in ta ? ta.token : ta.sourcePoolAddress) === tokenOrPool && j > i).length;
94
+ let messageSentLog;
95
+ const messageSents = messageSentPerTokenAndPool.get(tokenOrPool);
96
+ if (messageSents) {
97
+ // look from the end (near our request), but skip MessageSents for further transfers
98
+ messageSentLog = messageSents[messageSents.length - 1 - tokenTransfersCountAfter];
99
+ }
100
+ let tokenData;
101
+ if (messageSentLog) {
102
+ let message;
103
+ try {
104
+ message = defaultAbiCoder.decode(USDC_EVENT.inputs, messageSentLog.data)[0];
105
+ const attestation = await getUsdcAttestation(message, isTestnet);
106
+ tokenData = {
107
+ _tag: 'usdc',
108
+ message,
109
+ attestation,
110
+ };
111
+ // encoding of OffchainTokenData to be done as part of Chain.executeReceipt
112
+ }
113
+ catch (err) {
114
+ // maybe not a USDC transfer, or not ready
115
+ console.warn(`❌ EVM CCTP: Failed to fetch attestation for message:`, message, err);
116
+ }
117
+ }
118
+ attestations.push(tokenData);
119
+ }
120
+ return attestations;
121
+ }
122
+ /**
123
+ * Try to fetch LBTC attestations for transfers, return undefined in position if can't or not required
124
+ **/
125
+ async function getLbtcTokenData(tokenAmounts, allLogsInRequest, isTestnet) {
126
+ const lbtcDepositHashes = new Set(allLogsInRequest
127
+ .filter(({ topics }) => LBTC_EVENTS_HASHES.has(topics[0]))
128
+ .map(({ topics }) => topics[3]));
129
+ return Promise.all(tokenAmounts.map(async ({ extraData }) => {
130
+ // Attestation is required when SourceTokenData.extraData is 32 bytes long ('0x' + 64 hex chars)
131
+ // otherwise attestation is not required
132
+ if (lbtcDepositHashes.has(extraData)) {
133
+ try {
134
+ return { _tag: 'lbtc', extraData, ...(await getLbtcAttestation(extraData, isTestnet)) };
135
+ }
136
+ catch (err) {
137
+ console.warn(`❌ EVM LBTC: Failed to fetch attestation for message:`, extraData, err);
138
+ }
139
+ }
140
+ }));
141
+ }
142
+ //# sourceMappingURL=offchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offchain.js","sourceRoot":"","sources":["../../src/evm/offchain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import moize from 'moize';
2
+ import type { Chain } from './chain.ts';
3
+ import { type CCIPExecution, type CCIPMessage, type CCIPVersion, type CommitReport, type ExecutionReport, type Lane } from './types.ts';
4
+ /**
5
+ * Pure/sync function to calculate/generate OffRamp.executeManually report for messageIds
6
+ *
7
+ * @param messagesInBatch - Array containing all messages in batch, ordered
8
+ * @param lane - Arguments for leafeHasher (lane info)
9
+ * @param messageIds - list of messages (from batch) to prove for manual execution
10
+ * @param merkleRoot - Optional merkleRoot of the CommitReport, for validation
11
+ * @returns ManualExec report arguments
12
+ **/
13
+ export declare function calculateManualExecProof<V extends CCIPVersion = CCIPVersion>(messagesInBatch: readonly CCIPMessage<V>[], lane: Lane<V>, messageId: string, merkleRoot?: string): Omit<ExecutionReport, 'offchainTokenData' | 'message'>;
14
+ export declare const discoverOffRamp: moize.Moized<(source: Chain, dest: Chain, onRamp: string) => Promise<string>, Partial<{
15
+ isDeepEqual: boolean;
16
+ isPromise: boolean;
17
+ isReact: boolean;
18
+ isSerialized: boolean;
19
+ isShallowEqual: boolean;
20
+ matchesArg: moize.IsEqual;
21
+ matchesKey: moize.IsMatchingKey;
22
+ maxAge: number;
23
+ maxArgs: number;
24
+ maxSize: number;
25
+ onCacheAdd: moize.OnCacheOperation<(source: Chain, dest: Chain, onRamp: string) => Promise<string>>;
26
+ onCacheChange: moize.OnCacheOperation<(source: Chain, dest: Chain, onRamp: string) => Promise<string>>;
27
+ onCacheHit: moize.OnCacheOperation<(source: Chain, dest: Chain, onRamp: string) => Promise<string>>;
28
+ onExpire: moize.OnExpire;
29
+ profileName: string;
30
+ serializer: moize.Serialize;
31
+ transformArgs: moize.TransformKey;
32
+ updateCacheForKey: moize.UpdateCacheForKey;
33
+ updateExpire: boolean;
34
+ }> & Partial<{
35
+ isDeepEqual: boolean;
36
+ isPromise: boolean;
37
+ isReact: boolean;
38
+ isSerialized: boolean;
39
+ isShallowEqual: boolean;
40
+ matchesArg: moize.IsEqual;
41
+ matchesKey: moize.IsMatchingKey;
42
+ maxAge: number;
43
+ maxArgs: number;
44
+ maxSize: number;
45
+ onCacheAdd: moize.OnCacheOperation<moize.Moizeable>;
46
+ onCacheChange: moize.OnCacheOperation<moize.Moizeable>;
47
+ onCacheHit: moize.OnCacheOperation<moize.Moizeable>;
48
+ onExpire: moize.OnExpire;
49
+ profileName: string;
50
+ serializer: moize.Serialize;
51
+ transformArgs: moize.TransformKey;
52
+ updateCacheForKey: moize.UpdateCacheForKey;
53
+ updateExpire: boolean;
54
+ }> & {
55
+ transformArgs: ([source, dest, onRamp]: moize.Key<any>) => (string | bigint)[];
56
+ }>;
57
+ /**
58
+ * Generic implementation for fetching ExecutionReceipts for given requests
59
+ * If more than one request is given, may yield them interleaved
60
+ * Completes as soon as there's no more work to be done
61
+ * 2 possible behaviors:
62
+ * - if `startBlock|startTime` is given, pages forward from that block up;
63
+ * completes when success (final) receipt is found for all requests (or reach latest block)
64
+ * - otherwise, pages backwards and returns only the most recent receipt per request;
65
+ * completes when receipts for all requests were seen
66
+ *
67
+ * @param dest - provider to page through
68
+ * @param requests - CCIP requests to search executions for
69
+ * @param hints.fromBlock - A block from where to start paging forward;
70
+ * otherwise, page backwards and completes on first (most recent) receipt
71
+ * @param hints.page - getLogs pagination range param
72
+ * @param hints.commit - Special param to help narrow down search on suppported chains (e.g. Solana)
73
+ **/
74
+ export declare function fetchExecutionReceipts(dest: Chain, offRamp: string, messageIds: Set<string>, hints?: {
75
+ startBlock?: number;
76
+ startTime?: number;
77
+ page?: number;
78
+ commit?: CommitReport;
79
+ }): AsyncGenerator<CCIPExecution>;
80
+ //# sourceMappingURL=execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,YAAY,CAAA;AAEpD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,IAAI,EAEV,MAAM,YAAY,CAAA;AAEnB;;;;;;;;IAQI;AACJ,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAC1E,eAAe,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,EAC1C,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAAC,eAAe,EAAE,mBAAmB,GAAG,SAAS,CAAC,CA4BxD;AAED,eAAO,MAAM,eAAe,wBACc,KAAK,QAAQ,KAAK,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;gDAApD,KAAK,QAAQ,KAAK,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;mDAApD,KAAK,QAAQ,KAAK,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;gDAApD,KAAK,QAAQ,KAAK,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC7F,CAAA;AAED;;;;;;;;;;;;;;;;IAgBI;AACJ,wBAAuB,sBAAsB,CAC3C,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,KAAK,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,GACxF,cAAc,CAAC,aAAa,CAAC,CAe/B"}
@@ -0,0 +1,91 @@
1
+ import moize from 'moize';
2
+ import { Tree, getLeafHasher, proofFlagsToBits } from "./hasher/index.js";
3
+ import { ExecutionState, } from "./types.js";
4
+ /**
5
+ * Pure/sync function to calculate/generate OffRamp.executeManually report for messageIds
6
+ *
7
+ * @param messagesInBatch - Array containing all messages in batch, ordered
8
+ * @param lane - Arguments for leafeHasher (lane info)
9
+ * @param messageIds - list of messages (from batch) to prove for manual execution
10
+ * @param merkleRoot - Optional merkleRoot of the CommitReport, for validation
11
+ * @returns ManualExec report arguments
12
+ **/
13
+ export function calculateManualExecProof(messagesInBatch, lane, messageId, merkleRoot) {
14
+ const hasher = getLeafHasher(lane);
15
+ const msgIdx = messagesInBatch.findIndex((message) => message.header.messageId === messageId);
16
+ if (msgIdx < 0) {
17
+ throw new Error(`Could not find ${messageId} in batch seqNums=[${Number(messagesInBatch[0].header.sequenceNumber)}..${Number(messagesInBatch[messagesInBatch.length - 1].header.sequenceNumber)}]`);
18
+ }
19
+ const leaves = messagesInBatch.map((message) => hasher(message));
20
+ // Create multi-merkle tree
21
+ const tree = new Tree(leaves);
22
+ if (merkleRoot && tree.root() !== merkleRoot) {
23
+ throw new Error(`Merkle root created from send events doesn't match ReportAccepted merkle root: expected=${merkleRoot}, got=${tree.root()}`);
24
+ }
25
+ // Generate proof from multi-merkle tree
26
+ const proof = tree.prove([msgIdx]);
27
+ return {
28
+ proofs: proof.hashes,
29
+ proofFlagBits: proofFlagsToBits(proof.sourceFlags),
30
+ merkleRoot: tree.root(),
31
+ };
32
+ }
33
+ export const discoverOffRamp = moize.default(async function discoverOffRamp_(source, dest, onRamp) {
34
+ const sourceRouter = await source.getRouterForOnRamp(onRamp, dest.network.chainSelector);
35
+ const sourceOffRamps = await source.getOffRampsForRouter(sourceRouter, dest.network.chainSelector);
36
+ for (const offRamp of sourceOffRamps) {
37
+ const destOnRamp = await source.getOnRampForOffRamp(offRamp, dest.network.chainSelector);
38
+ const destRouter = await dest.getRouterForOnRamp(destOnRamp, source.network.chainSelector);
39
+ const destOffRamps = await dest.getOffRampsForRouter(destRouter, source.network.chainSelector);
40
+ for (const offRamp of destOffRamps) {
41
+ const offRampsOnRamp = await dest.getOnRampForOffRamp(offRamp, source.network.chainSelector);
42
+ if (offRampsOnRamp === onRamp) {
43
+ console.debug('discoverOffRamp: found, from', { sourceRouter, sourceOffRamps, destOnRamp, destOffRamps, offRampsOnRamp }, '=', offRamp);
44
+ return offRamp;
45
+ }
46
+ }
47
+ }
48
+ throw new Error(`No matching offRamp found for "${onRamp}" on "${dest.network.name}"`);
49
+ }, {
50
+ transformArgs: ([source, dest, onRamp]) => [
51
+ source.network.chainSelector,
52
+ dest.network.chainSelector,
53
+ onRamp,
54
+ ],
55
+ });
56
+ /**
57
+ * Generic implementation for fetching ExecutionReceipts for given requests
58
+ * If more than one request is given, may yield them interleaved
59
+ * Completes as soon as there's no more work to be done
60
+ * 2 possible behaviors:
61
+ * - if `startBlock|startTime` is given, pages forward from that block up;
62
+ * completes when success (final) receipt is found for all requests (or reach latest block)
63
+ * - otherwise, pages backwards and returns only the most recent receipt per request;
64
+ * completes when receipts for all requests were seen
65
+ *
66
+ * @param dest - provider to page through
67
+ * @param requests - CCIP requests to search executions for
68
+ * @param hints.fromBlock - A block from where to start paging forward;
69
+ * otherwise, page backwards and completes on first (most recent) receipt
70
+ * @param hints.page - getLogs pagination range param
71
+ * @param hints.commit - Special param to help narrow down search on suppported chains (e.g. Solana)
72
+ **/
73
+ export async function* fetchExecutionReceipts(dest, offRamp, messageIds, hints) {
74
+ const onlyLast = !hints?.startBlock && !hints?.startTime; // backwards
75
+ for await (const log of dest.getLogs({
76
+ ...hints,
77
+ address: offRamp,
78
+ topics: ['ExecutionStateChanged'],
79
+ })) {
80
+ const receipt = dest.constructor.decodeReceipt(log);
81
+ if (!receipt || !messageIds.has(receipt.messageId))
82
+ continue;
83
+ if (onlyLast || receipt.state === ExecutionState.Success)
84
+ messageIds.delete(receipt.messageId);
85
+ const timestamp = await dest.getBlockTimestamp(log.blockNumber);
86
+ yield { receipt, log, timestamp };
87
+ if (!messageIds.size)
88
+ break;
89
+ }
90
+ }
91
+ //# sourceMappingURL=execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type BytesLike } from 'ethers';
2
+ import { ChainFamily } from './chain.ts';
3
+ export declare const EVMExtraArgsV1Tag: "0x97a657c9";
4
+ export declare const EVMExtraArgsV2Tag: "0x181dcf10";
5
+ export declare const SVMExtraArgsV1Tag: "0x1f3b3aba";
6
+ export declare const SuiExtraArgsV1Tag: "0x21ea4ca9";
7
+ export type EVMExtraArgsV1 = {
8
+ gasLimit: bigint;
9
+ };
10
+ export type EVMExtraArgsV2 = EVMExtraArgsV1 & {
11
+ allowOutOfOrderExecution: boolean;
12
+ };
13
+ export type SVMExtraArgsV1 = {
14
+ computeUnits: bigint;
15
+ accountIsWritableBitmap: bigint;
16
+ allowOutOfOrderExecution: boolean;
17
+ tokenReceiver: string;
18
+ accounts: string[];
19
+ };
20
+ export type SuiExtraArgsV1 = EVMExtraArgsV2 & {
21
+ tokenReceiver: string;
22
+ receiverObjectIds: string[];
23
+ };
24
+ export type ExtraArgs = EVMExtraArgsV1 | EVMExtraArgsV2 | SVMExtraArgsV1 | SuiExtraArgsV1;
25
+ /**
26
+ * Encodes extra arguments for CCIP messages.
27
+ * The args are *to* a dest network, but are encoded as a message *from* this source chain
28
+ * e.g. Solana uses Borsh to encode extraArgs in its produced requests, even those targetting EVM
29
+ **/
30
+ export declare function encodeExtraArgs(args: ExtraArgs, from?: ChainFamily): string;
31
+ /**
32
+ * Parses extra arguments from CCIP messages
33
+ * @param data - extra arguments bytearray data
34
+ * @returns extra arguments object if found
35
+ **/
36
+ export declare function decodeExtraArgs(data: BytesLike, from?: ChainFamily): (EVMExtraArgsV1 & {
37
+ _tag: 'EVMExtraArgsV1';
38
+ }) | (EVMExtraArgsV2 & {
39
+ _tag: 'EVMExtraArgsV2';
40
+ }) | (SVMExtraArgsV1 & {
41
+ _tag: 'SVMExtraArgsV1';
42
+ }) | (SuiExtraArgsV1 & {
43
+ _tag: 'SuiExtraArgsV1';
44
+ }) | undefined;
45
+ //# sourceMappingURL=extra-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extra-args.d.ts","sourceRoot":"","sources":["../src/extra-args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAM,MAAM,QAAQ,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxC,eAAO,MAAM,iBAAiB,EAAiD,YAAY,CAAA;AAC3F,eAAO,MAAM,iBAAiB,EAAiD,YAAY,CAAA;AAC3F,eAAO,MAAM,iBAAiB,EAAiD,YAAY,CAAA;AAC3F,eAAO,MAAM,iBAAiB,EAAiD,YAAY,CAAA;AAE3F,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,wBAAwB,EAAE,OAAO,CAAA;CAClC,CAAA;AACD,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,wBAAwB,EAAE,OAAO,CAAA;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,CAAA;AAEzF;;;;IAII;AACJ,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE,WAA6B,GAAG,MAAM,CAI5F;AAED;;;;IAII;AACJ,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,IAAI,CAAC,EAAE,WAAW,GAEhB,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAC7C,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAC7C,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAC7C,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAC7C,SAAS,CAeZ"}
@@ -0,0 +1,44 @@
1
+ import { id } from 'ethers';
2
+ import { ChainFamily } from "./chain.js";
3
+ import { supportedChains } from "./supported-chains.js";
4
+ export const EVMExtraArgsV1Tag = id('CCIP EVMExtraArgsV1').substring(0, 10);
5
+ export const EVMExtraArgsV2Tag = id('CCIP EVMExtraArgsV2').substring(0, 10);
6
+ export const SVMExtraArgsV1Tag = id('CCIP SVMExtraArgsV1').substring(0, 10);
7
+ export const SuiExtraArgsV1Tag = id('CCIP SuiExtraArgsV1').substring(0, 10);
8
+ /**
9
+ * Encodes extra arguments for CCIP messages.
10
+ * The args are *to* a dest network, but are encoded as a message *from* this source chain
11
+ * e.g. Solana uses Borsh to encode extraArgs in its produced requests, even those targetting EVM
12
+ **/
13
+ export function encodeExtraArgs(args, from = ChainFamily.EVM) {
14
+ const chain = supportedChains[from];
15
+ if (!chain)
16
+ throw new Error(`Unsupported chain family: ${from}`);
17
+ return chain.encodeExtraArgs(args);
18
+ }
19
+ /**
20
+ * Parses extra arguments from CCIP messages
21
+ * @param data - extra arguments bytearray data
22
+ * @returns extra arguments object if found
23
+ **/
24
+ export function decodeExtraArgs(data, from) {
25
+ if (!data || data === '')
26
+ return;
27
+ let chains;
28
+ if (from) {
29
+ const chain = supportedChains[from];
30
+ if (!chain)
31
+ throw new Error(`Unsupported chain family: ${from}`);
32
+ chains = [chain];
33
+ }
34
+ else {
35
+ chains = Object.values(supportedChains);
36
+ }
37
+ for (const chain of chains) {
38
+ const decoded = chain.decodeExtraArgs(data);
39
+ if (decoded)
40
+ return decoded;
41
+ }
42
+ throw new Error(`Could not parse extraArgs from "${from}"`);
43
+ }
44
+ //# sourceMappingURL=extra-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extra-args.js","sourceRoot":"","sources":["../src/extra-args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAuB3F;;;;IAII;AACJ,MAAM,UAAU,eAAe,CAAC,IAAe,EAAE,OAAoB,WAAW,CAAC,GAAG;IAClF,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAA;IAChE,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC;AAED;;;;IAII;AACJ,MAAM,UAAU,eAAe,CAC7B,IAAe,EACf,IAAkB;IAOlB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE;QAAE,OAAM;IAChC,IAAI,MAAM,CAAA;IACV,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAA;QAChE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAA;IAClB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;IAC7B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,GAAG,CAAC,CAAA;AAC7D,CAAC"}
package/dist/gas.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ import { type BytesLike } from 'ethers';
2
+ import type { Chain } from './chain.ts';
3
+ import type { EVMChain } from './evm/index.ts';
4
+ import type { Lane } from './types.ts';
5
+ /**
6
+ * Estimate CCIP gasLimit needed to execute a request on a contract receiver
7
+ *
8
+ * @param dest - Provider for the destination chain
9
+ * @param request - CCIP request info
10
+ * @param request.lane - Lane info
11
+ * @param request.message - Message info
12
+ * @returns estimated gasLimit as bigint
13
+ **/
14
+ export declare function estimateExecGasForRequest(source: Chain, dest: EVMChain, request: {
15
+ lane: Lane;
16
+ message: {
17
+ sender: string;
18
+ receiver: string;
19
+ data: BytesLike;
20
+ tokenAmounts: readonly {
21
+ sourcePoolAddress: string;
22
+ destTokenAddress: string;
23
+ amount: bigint;
24
+ }[];
25
+ };
26
+ }): Promise<number>;
27
+ //# sourceMappingURL=gas.d.ts.map