@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,344 @@
1
+ import util from 'util';
2
+ import type { BytesLike } from 'ethers';
3
+ import type { EVMExtraArgsV1, EVMExtraArgsV2, ExtraArgs, SVMExtraArgsV1, SuiExtraArgsV1 } from './extra-args.ts';
4
+ import type { LeafHasher } from './hasher/common.ts';
5
+ import type { AnyMessage, CCIPCommit, CCIPExecution, CCIPMessage, CCIPRequest, CommitReport, ExecutionReceipt, ExecutionReport, Lane, Log_, NetworkInfo, OffchainTokenData } from './types.ts';
6
+ export declare const ChainFamily: {
7
+ readonly EVM: "evm";
8
+ readonly Solana: "solana";
9
+ readonly Aptos: "aptos";
10
+ readonly Sui: "sui";
11
+ };
12
+ export type ChainFamily = (typeof ChainFamily)[keyof typeof ChainFamily];
13
+ export type LogFilter = {
14
+ startBlock?: number;
15
+ startTime?: number;
16
+ endBlock?: number;
17
+ endBefore?: string;
18
+ address?: string;
19
+ topics?: string[] | string[][];
20
+ page?: number;
21
+ };
22
+ export type ChainTransaction = {
23
+ chain: Chain;
24
+ hash: string;
25
+ logs: readonly Log_[];
26
+ blockNumber: number;
27
+ timestamp: number;
28
+ from: string;
29
+ error?: unknown;
30
+ };
31
+ export type TokenInfo = {
32
+ readonly symbol: string;
33
+ readonly decimals: number;
34
+ readonly name?: string;
35
+ };
36
+ export type RateLimiterState = {
37
+ tokens: bigint;
38
+ capacity: bigint;
39
+ rate: bigint;
40
+ } | null;
41
+ export type TokenPoolRemote = {
42
+ remoteToken: string;
43
+ remotePools: string[];
44
+ inboundRateLimiterState: RateLimiterState;
45
+ outboundRateLimiterState: RateLimiterState;
46
+ };
47
+ /**
48
+ * Works like an interface for a base Chain class, but provides implementation (which can be
49
+ * specialized) for some basic methods
50
+ */
51
+ export declare abstract class Chain<F extends ChainFamily = ChainFamily> {
52
+ abstract readonly network: NetworkInfo<F>;
53
+ abstract destroy?(): Promise<void>;
54
+ [util.inspect.custom](): string;
55
+ /**
56
+ * Fetch the timestamp of a given block
57
+ * @param block - block number or 'finalized'
58
+ * @returns timestamp of the block, in seconds
59
+ */
60
+ abstract getBlockTimestamp(block: number | 'finalized'): Promise<number>;
61
+ /**
62
+ * Fetch a transaction by its hash
63
+ * @param hash - transaction hash
64
+ * @returns generic transaction details
65
+ */
66
+ abstract getTransaction(hash: string): Promise<ChainTransaction>;
67
+ /**
68
+ * An async generator that yields logs based on the provided options.
69
+ * @param opts - options object
70
+ * @param opts.startBlock - if provided, fetch and generate logs forward starting from this block;
71
+ * otherwise, returns logs backwards in time from endBlock;
72
+ * optionally, startTime may be provided to fetch logs forward starting from this time;
73
+ * @param opts.endBlock - if omitted, use latest block
74
+ * @param opts.endBefore - optional hint signature for end of iteration, instead of endBlock
75
+ * @param opts.address - if provided, fetch logs for this address only (may be required in some
76
+ * networks/implementations)
77
+ * @param opts.topics - if provided, fetch logs for these topics only;
78
+ * if string[], it's assumed to be a list of topic0s (i.e. string[] or string[][0], event_ids);
79
+ * some networks/implementations may not be able to filter topics other than topic0s, so one may
80
+ * want to assume those are optimization hints, instead of hard filters, and verify results
81
+ * @param opts.page - if provided, try to use this page/range for batches
82
+ * @returns an async iterable iterator of logs
83
+ */
84
+ abstract getLogs(opts: LogFilter): AsyncIterableIterator<Log_>;
85
+ /**
86
+ * Fetch the typeAndVersion tag of a given CCIP contract
87
+ * @param address - CCIP contract address
88
+ * @returns typeAndVersion tag, validated and split
89
+ */
90
+ abstract typeAndVersion(address: string): Promise<[type_: string, version: string, typeAndVersion: string] | [type_: string, version: string, typeAndVersion: string, suffix: string]>;
91
+ /**
92
+ * Fetch the Router address set in OnRamp config
93
+ * Used to discover OffRamp connected to OnRamp
94
+ * @param onRamp - OnRamp contract address
95
+ * @param destChainSelector - destination chain selector
96
+ * @returns Router address
97
+ */
98
+ abstract getRouterForOnRamp(onRamp: string, destChainSelector: bigint): Promise<string>;
99
+ /**
100
+ * Fetch the Router address set in OffRamp config
101
+ * @param offRamp - OffRamp contract address
102
+ * @param sourceChainSelector - source chain selector
103
+ * @returns Router address
104
+ */
105
+ abstract getRouterForOffRamp(offRamp: string, sourceChainSelector: bigint): Promise<string>;
106
+ /**
107
+ * Get the native token address for a Router
108
+ * @param router - router contract address
109
+ * @returns native token address (usually wrapped)
110
+ */
111
+ abstract getNativeTokenForRouter(router: string): Promise<string>;
112
+ /**
113
+ * Fetch the OffRamps allowlisted in a Router
114
+ * Used to discover OffRamp connected to an OnRamp
115
+ * @param router - Router contract address
116
+ * @param sourceChainSelector - source chain selector
117
+ * @returns array of OffRamp addresses
118
+ */
119
+ abstract getOffRampsForRouter(router: string, sourceChainSelector: bigint): Promise<string[]>;
120
+ /**
121
+ * Fetch the OnRamp registered in a Router for a destination chain
122
+ * @param router - Router contract address
123
+ * @param destChainSelector - destination chain selector
124
+ * @returns OnRamp addresses
125
+ */
126
+ abstract getOnRampForRouter(router: string, destChainSelector: bigint): Promise<string>;
127
+ /**
128
+ * Fetch the OnRamp address set in OffRamp config
129
+ * Used to discover OffRamp connected to an OnRamp
130
+ * @param offRamp - OffRamp contract address
131
+ * @param sourceChainSelector - source chain selector
132
+ * @returns OnRamp address
133
+ */
134
+ abstract getOnRampForOffRamp(offRamp: string, sourceChainSelector: bigint): Promise<string>;
135
+ /**
136
+ * Fetch the CommitStore set in OffRamp config (CCIP<=v1.5)
137
+ * For CCIP>=v1.6, it should return the offRamp address
138
+ * @param offRamp - OffRamp contract address
139
+ * @returns CommitStore address
140
+ */
141
+ abstract getCommitStoreForOffRamp(offRamp: string): Promise<string>;
142
+ /**
143
+ * Fetch the TokenPool's token/mint
144
+ * @param tokenPool - TokenPool address
145
+ * @returns Token or mint address
146
+ */
147
+ abstract getTokenForTokenPool(tokenPool: string): Promise<string>;
148
+ /**
149
+ * Fetch token metadata
150
+ * @param token - Token address
151
+ * @returns Token symbol and decimals, and optionally name
152
+ */
153
+ abstract getTokenInfo(token: string): Promise<TokenInfo>;
154
+ /**
155
+ * Fetch TokenAdminRegistry configured in a given OnRamp, Router, etc
156
+ * Needed to map a source token to its dest counterparts
157
+ * @param onRamp - Some contract for which we can fetch a TokenAdminRegistry
158
+ */
159
+ abstract getTokenAdminRegistryFor(address: string): Promise<string>;
160
+ /**
161
+ * Build, derive, load or fetch a wallet for this instance which will be used in any tx send operation
162
+ * @param opts.wallet - cli or environmental parameters to help pick a wallet
163
+ * @returns address of fetched (and stored internally) account
164
+ */
165
+ abstract getWalletAddress(opts?: {
166
+ wallet?: unknown;
167
+ }): Promise<string>;
168
+ /**
169
+ * Fetch the current fee for a given intended message
170
+ * @param router - router address on this chain
171
+ * @param destChainSelector - dest network selector
172
+ * @param message - message to send
173
+ */
174
+ abstract getFee(router: string, destChainSelector: bigint, message: AnyMessage): Promise<bigint>;
175
+ /**
176
+ * Send a CCIP message through a router using loaded wallet
177
+ * @param router - router address on this chain
178
+ * @param destChainSelector - dest network selector
179
+ * @param message - message to send
180
+ * @param opts.wallet - cli or environmental parameters to help pick a wallet
181
+ * @param opts.approveMax - approve the maximum amount of tokens to transfer
182
+ */
183
+ abstract sendMessage(router: string, destChainSelector: bigint, message: AnyMessage & {
184
+ fee: bigint;
185
+ }, opts?: {
186
+ wallet?: unknown;
187
+ approveMax?: boolean;
188
+ }): Promise<ChainTransaction>;
189
+ /**
190
+ * Fetch supported offchain token data for a request from this network
191
+ * @param request - CCIP request, with tx, logs and message
192
+ * @returns array with one offchain token data for each token transfer in request
193
+ */
194
+ abstract fetchOffchainTokenData(request: CCIPRequest): Promise<OffchainTokenData[]>;
195
+ /**
196
+ * Execute messages in report in an offRamp
197
+ * @param offRamp - offRamp address on this dest chain
198
+ * @param execReport - execution report containing messages to execute, proofs and offchainTokenData
199
+ * @param opts - general options for execution
200
+ * @returns transaction hash of the execution
201
+ */
202
+ abstract executeReport(offRamp: string, execReport: ExecutionReport, opts?: Record<string, unknown>): Promise<ChainTransaction>;
203
+ /**
204
+ * Look for a CommitReport at dest for given CCIP request
205
+ * May be specialized by some subclasses
206
+ *
207
+ * @param dest - Destination network provider
208
+ * @param request - CCIP request info
209
+ * @param hints - Additional filtering hints
210
+ * @returns CCIP commit info
211
+ **/
212
+ fetchCommitReport(commitStore: string, request: {
213
+ lane: Lane;
214
+ message: {
215
+ header: {
216
+ sequenceNumber: bigint;
217
+ };
218
+ };
219
+ timestamp?: number;
220
+ }, hints?: {
221
+ startBlock?: number;
222
+ page?: number;
223
+ }): Promise<CCIPCommit>;
224
+ /**
225
+ * Default/generic implementation of fetchExecutionReceipts
226
+ * @param offRamp - Off-ramp address
227
+ * @param messageIds - Set of message IDs to fetch receipts for
228
+ * @param hints - Additional filtering hints
229
+ * @returns Async generator of CCIP execution receipts
230
+ */
231
+ fetchExecutionReceipts(offRamp: string, messageIds: Set<string>, hints?: {
232
+ startBlock?: number;
233
+ startTime?: number;
234
+ page?: number;
235
+ commit?: CommitReport;
236
+ }): AsyncGenerator<CCIPExecution>;
237
+ /**
238
+ * List tokens supported by given TokenAdminRegistry contract
239
+ * @param address - Usually TokenAdminRegistry, but chain may support receiving Router, OnRamp, etc
240
+ * @param opts.page - Page range, if needed
241
+ * @retursn array of supported token addresses
242
+ */
243
+ abstract getSupportedTokens(address: string, opts?: {
244
+ page?: number;
245
+ }): Promise<string[]>;
246
+ /**
247
+ * Get TokenConfig for a given token address in a TokenAdminRegistry
248
+ * @param address - TokenAdminRegistry contract address
249
+ * @param token - Token address
250
+ */
251
+ abstract getRegistryTokenConfig(registry: string, token: string): Promise<{
252
+ administrator: string;
253
+ pendingAdministrator?: string;
254
+ tokenPool?: string;
255
+ }>;
256
+ /**
257
+ * Get TokenPool state and configurations
258
+ * @param tokenPool - Token pool address
259
+ */
260
+ abstract getTokenPoolConfigs(tokenPool: string): Promise<{
261
+ token: string;
262
+ router: string;
263
+ typeAndVersion?: string;
264
+ }>;
265
+ /**
266
+ * Get TokenPool remote configurations
267
+ * @param tokenPool - Token pool address
268
+ * @param remoteChainSelector - If provided, only return remotes for the specified chain (may error if remote not supported)
269
+ * @param Record of network *names* and remote configurations (remoteToken, remotePools, rateLimitStates)
270
+ */
271
+ abstract getTokenPoolRemotes(tokenPool: string, remoteChainSelector?: bigint): Promise<Record<string, TokenPoolRemote>>;
272
+ /**
273
+ * Fetch list and info of supported feeTokens
274
+ * @param router address on this chain
275
+ * @returns mapping of token addresses to respective TokenInfo objects
276
+ */
277
+ abstract listFeeTokens(router: string): Promise<Record<string, TokenInfo>>;
278
+ }
279
+ export type ChainStatic<F extends ChainFamily = ChainFamily> = Function & {
280
+ readonly family: F;
281
+ readonly decimals: number;
282
+ /**
283
+ * async constructor: builds a Chain from a rpc endpoint url
284
+ * @param url - rpc endpoint url
285
+ */
286
+ fromUrl(url: string): Promise<Chain<F>>;
287
+ /**
288
+ * Try to decode a CCIP message *from* a log/event *originated* from this *source* chain,
289
+ * but which may *target* other dest chain families
290
+ * iow: the parsing is specific to this chain family, but content may be intended to alien chains
291
+ * e.g: EVM-born (abi.encoded) bytearray may output message.computeUnits for Solana
292
+ * @param log - Chain generic log
293
+ * @returns decoded CCIP message with merged extraArgs
294
+ */
295
+ decodeMessage(log: Pick<Log_, 'data'>): CCIPMessage | undefined;
296
+ /**
297
+ * Try to decode an extraArgs array serialized for this chain family
298
+ * @param extraArgs - extra args bytes (Uint8Array, HexString or base64)
299
+ * @returns object containing decoded extraArgs and their tags
300
+ */
301
+ decodeExtraArgs(extraArgs: BytesLike): (EVMExtraArgsV1 & {
302
+ _tag: 'EVMExtraArgsV1';
303
+ }) | (EVMExtraArgsV2 & {
304
+ _tag: 'EVMExtraArgsV2';
305
+ }) | (SVMExtraArgsV1 & {
306
+ _tag: 'SVMExtraArgsV1';
307
+ }) | (SuiExtraArgsV1 & {
308
+ _tag: 'SuiExtraArgsV1';
309
+ }) | undefined;
310
+ encodeExtraArgs(extraArgs: ExtraArgs): string;
311
+ /**
312
+ * Decode a commit (CommitReportAccepted) event
313
+ * @param log - Chain generic log
314
+ * @param lane - if passed, filter or validate reports by lane
315
+ * @returns Array of commit reports contained in the log
316
+ */
317
+ decodeCommits(log: Pick<Log_, 'data'>, lane?: Lane): CommitReport[] | undefined;
318
+ /**
319
+ * Decode a receipt (ExecutioStateChanged) event
320
+ * @param log - Chain generic log
321
+ * @returns ExecutionReceipt or undefined if not a recognized receipt
322
+ */
323
+ decodeReceipt(log: Pick<Log_, 'data'>): ExecutionReceipt | undefined;
324
+ /**
325
+ * Receive a bytes array and try to decode and normalize it as an address of this chain family
326
+ * @param bytes - Bytes array (Uint8Array, HexString or Base64)
327
+ * @returns Address in this chain family's format
328
+ */
329
+ getAddress(bytes: BytesLike): string;
330
+ /**
331
+ * Create a leaf hasher for this dest chain and lane
332
+ * @param lane - source, dest and onramp lane info
333
+ * @returns LeafHasher is a function that takes a message and returns a hash of it
334
+ */
335
+ getDestLeafHasher(lane: Lane): LeafHasher;
336
+ /**
337
+ * Try to parse an error or bytearray generated by this chain family
338
+ * @param error - catched object, string or bytearray
339
+ * @returns Ordered record with messages/properties, or undefined if not a recognized error
340
+ */
341
+ parse?(data: unknown): Record<string, unknown> | undefined | null;
342
+ };
343
+ export type ChainGetter = (idOrSelectorOrName: number | string | bigint) => Promise<Chain>;
344
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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"}
package/dist/chain.js ADDED
@@ -0,0 +1,41 @@
1
+ import util from 'util';
2
+ import { fetchCommitReport } from "./commits.js";
3
+ import { fetchExecutionReceipts } from "./execution.js";
4
+ export const ChainFamily = {
5
+ EVM: 'evm',
6
+ Solana: 'solana',
7
+ Aptos: 'aptos',
8
+ Sui: 'sui',
9
+ };
10
+ /**
11
+ * Works like an interface for a base Chain class, but provides implementation (which can be
12
+ * specialized) for some basic methods
13
+ */
14
+ export class Chain {
15
+ [util.inspect.custom]() {
16
+ return `${this.constructor.name} { ${this.network.name} }`;
17
+ }
18
+ /**
19
+ * Look for a CommitReport at dest for given CCIP request
20
+ * May be specialized by some subclasses
21
+ *
22
+ * @param dest - Destination network provider
23
+ * @param request - CCIP request info
24
+ * @param hints - Additional filtering hints
25
+ * @returns CCIP commit info
26
+ **/
27
+ async fetchCommitReport(commitStore, request, hints) {
28
+ return fetchCommitReport(this, commitStore, request, hints);
29
+ }
30
+ /**
31
+ * Default/generic implementation of fetchExecutionReceipts
32
+ * @param offRamp - Off-ramp address
33
+ * @param messageIds - Set of message IDs to fetch receipts for
34
+ * @param hints - Additional filtering hints
35
+ * @returns Async generator of CCIP execution receipts
36
+ */
37
+ async *fetchExecutionReceipts(offRamp, messageIds, hints) {
38
+ yield* fetchExecutionReceipts(this, offRamp, messageIds, hints);
39
+ }
40
+ }
41
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAIvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAwBvD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACF,CAAA;AA0CV;;;GAGG;AACH,MAAM,OAAgB,KAAK;IAIzB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnB,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;IAC5D,CAAC;IA+JD;;;;;;;;QAQI;IACJ,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,OAIC,EACD,KAA8C;QAE9C,OAAO,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAC7D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,sBAAsB,CAC3B,OAAe,EACf,UAAuB,EACvB,KAAyF;QAEzF,KAAK,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IACjE,CAAC;CAmDF"}
@@ -0,0 +1,25 @@
1
+ import type { Chain } from './chain.ts';
2
+ import { type CCIPCommit, type Lane } from './types.ts';
3
+ /**
4
+ * Look for a CommitReport at dest for given CCIPRequest
5
+ * Provides a basic/generic implementation, but subclasses of Chain may override with more specific
6
+ * logic in Chain.fetchCommitReport method
7
+ *
8
+ * @param dest - Destination network provider
9
+ * @param request - CCIP request info
10
+ * @param hints - Additional filtering hints
11
+ * @returns CCIP commit info
12
+ **/
13
+ export declare function fetchCommitReport(dest: Chain, commitStore: string, { lane, message: { header }, timestamp: requestTimestamp, }: {
14
+ lane: Lane;
15
+ message: {
16
+ header: {
17
+ sequenceNumber: bigint;
18
+ };
19
+ };
20
+ timestamp?: number;
21
+ }, hints?: {
22
+ startBlock?: number;
23
+ page?: number;
24
+ }): Promise<CCIPCommit>;
25
+ //# sourceMappingURL=commits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,EAAe,MAAM,YAAY,CAAA;AAEpE;;;;;;;;;IASI;AACJ,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,MAAM,EACnB,EACE,IAAI,EACJ,OAAO,EAAE,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,gBAAgB,GAC5B,EAAE;IACD,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE;QAAE,MAAM,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,EACD,KAAK,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
@@ -0,0 +1,29 @@
1
+ import { CCIPVersion } from "./types.js";
2
+ /**
3
+ * Look for a CommitReport at dest for given CCIPRequest
4
+ * Provides a basic/generic implementation, but subclasses of Chain may override with more specific
5
+ * logic in Chain.fetchCommitReport method
6
+ *
7
+ * @param dest - Destination network provider
8
+ * @param request - CCIP request info
9
+ * @param hints - Additional filtering hints
10
+ * @returns CCIP commit info
11
+ **/
12
+ export async function fetchCommitReport(dest, commitStore, { lane, message: { header }, timestamp: requestTimestamp, }, hints) {
13
+ for await (const log of dest.getLogs({
14
+ ...hints,
15
+ ...(!hints?.startBlock ? { startTime: requestTimestamp } : { startBlock: hints.startBlock }),
16
+ address: commitStore,
17
+ topics: [lane.version < CCIPVersion.V1_6 ? 'ReportAccepted' : 'CommitReportAccepted'],
18
+ })) {
19
+ const report = dest.constructor.decodeCommits(log, lane)?.[0];
20
+ if (!report || report.maxSeqNr < header.sequenceNumber)
21
+ continue;
22
+ // since we walk forward from some startBlock/startTime, give up if we find a newer report
23
+ if (report.minSeqNr > header.sequenceNumber)
24
+ break;
25
+ return { report, log };
26
+ }
27
+ throw new Error(`Could not find commit after ${hints?.startBlock ?? requestTimestamp} for sequenceNumber=${header.sequenceNumber}`);
28
+ }
29
+ //# sourceMappingURL=commits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commits.js","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,WAAW,EAAE,MAAM,YAAY,CAAA;AAEpE;;;;;;;;;IASI;AACJ,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAW,EACX,WAAmB,EACnB,EACE,IAAI,EACJ,OAAO,EAAE,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,gBAAgB,GAK5B,EACD,KAA8C;IAE9C,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QACnC,GAAG,KAAK;QACR,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC5F,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC;KACtF,CAAC,EAAE,CAAC;QACH,MAAM,MAAM,GAAI,IAAI,CAAC,WAA2B,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;YAAE,SAAQ;QAChE,0FAA0F;QAC1F,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;YAAE,MAAK;QAClD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,EAAE,UAAU,IAAI,gBAAgB,uBAAuB,MAAM,CAAC,cAAc,EAAE,CACnH,CAAA;AACH,CAAC"}