@chainlink/ccip-sdk 0.96.0 → 1.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 (247) hide show
  1. package/README.md +12 -9
  2. package/dist/api/index.d.ts +21 -8
  3. package/dist/api/index.d.ts.map +1 -1
  4. package/dist/api/index.js +42 -13
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/api/types.d.ts +0 -2
  7. package/dist/api/types.d.ts.map +1 -1
  8. package/dist/aptos/exec.d.ts +2 -2
  9. package/dist/aptos/exec.d.ts.map +1 -1
  10. package/dist/aptos/exec.js.map +1 -1
  11. package/dist/aptos/hasher.d.ts.map +1 -1
  12. package/dist/aptos/hasher.js +1 -1
  13. package/dist/aptos/hasher.js.map +1 -1
  14. package/dist/aptos/index.d.ts +17 -16
  15. package/dist/aptos/index.d.ts.map +1 -1
  16. package/dist/aptos/index.js +42 -73
  17. package/dist/aptos/index.js.map +1 -1
  18. package/dist/aptos/logs.d.ts +2 -2
  19. package/dist/aptos/logs.d.ts.map +1 -1
  20. package/dist/aptos/types.d.ts +2 -19
  21. package/dist/aptos/types.d.ts.map +1 -1
  22. package/dist/aptos/types.js +0 -11
  23. package/dist/aptos/types.js.map +1 -1
  24. package/dist/chain.d.ts +538 -158
  25. package/dist/chain.d.ts.map +1 -1
  26. package/dist/chain.js +132 -19
  27. package/dist/chain.js.map +1 -1
  28. package/dist/commits.d.ts +4 -6
  29. package/dist/commits.d.ts.map +1 -1
  30. package/dist/commits.js +4 -4
  31. package/dist/commits.js.map +1 -1
  32. package/dist/errors/CCIPError.d.ts +33 -4
  33. package/dist/errors/CCIPError.d.ts.map +1 -1
  34. package/dist/errors/CCIPError.js +33 -4
  35. package/dist/errors/CCIPError.js.map +1 -1
  36. package/dist/errors/codes.d.ts +3 -0
  37. package/dist/errors/codes.d.ts.map +1 -1
  38. package/dist/errors/codes.js +3 -1
  39. package/dist/errors/codes.js.map +1 -1
  40. package/dist/errors/index.d.ts +4 -4
  41. package/dist/errors/index.d.ts.map +1 -1
  42. package/dist/errors/index.js +4 -4
  43. package/dist/errors/index.js.map +1 -1
  44. package/dist/errors/recovery.d.ts.map +1 -1
  45. package/dist/errors/recovery.js +4 -1
  46. package/dist/errors/recovery.js.map +1 -1
  47. package/dist/errors/specialized.d.ts +1695 -120
  48. package/dist/errors/specialized.d.ts.map +1 -1
  49. package/dist/errors/specialized.js +1715 -123
  50. package/dist/errors/specialized.js.map +1 -1
  51. package/dist/errors/utils.d.ts.map +1 -1
  52. package/dist/errors/utils.js +0 -1
  53. package/dist/errors/utils.js.map +1 -1
  54. package/dist/evm/abi/OffRamp_2_0.d.ts +764 -0
  55. package/dist/evm/abi/OffRamp_2_0.d.ts.map +1 -0
  56. package/dist/evm/abi/OffRamp_2_0.js +744 -0
  57. package/dist/evm/abi/OffRamp_2_0.js.map +1 -0
  58. package/dist/evm/abi/OnRamp_2_0.d.ts +925 -0
  59. package/dist/evm/abi/OnRamp_2_0.d.ts.map +1 -0
  60. package/dist/evm/abi/OnRamp_2_0.js +992 -0
  61. package/dist/evm/abi/OnRamp_2_0.js.map +1 -0
  62. package/dist/evm/const.d.ts +12 -2
  63. package/dist/evm/const.d.ts.map +1 -1
  64. package/dist/evm/const.js +8 -2
  65. package/dist/evm/const.js.map +1 -1
  66. package/dist/evm/errors.d.ts.map +1 -1
  67. package/dist/evm/errors.js +7 -2
  68. package/dist/evm/errors.js.map +1 -1
  69. package/dist/evm/extra-args.d.ts.map +1 -1
  70. package/dist/evm/extra-args.js +5 -24
  71. package/dist/evm/extra-args.js.map +1 -1
  72. package/dist/evm/hasher.d.ts.map +1 -1
  73. package/dist/evm/hasher.js +23 -13
  74. package/dist/evm/hasher.js.map +1 -1
  75. package/dist/evm/index.d.ts +73 -16
  76. package/dist/evm/index.d.ts.map +1 -1
  77. package/dist/evm/index.js +241 -146
  78. package/dist/evm/index.js.map +1 -1
  79. package/dist/evm/logs.d.ts +1 -1
  80. package/dist/evm/logs.js +1 -1
  81. package/dist/evm/messages.d.ts +59 -5
  82. package/dist/evm/messages.d.ts.map +1 -1
  83. package/dist/evm/messages.js +210 -0
  84. package/dist/evm/messages.js.map +1 -1
  85. package/dist/evm/offchain.d.ts +1 -14
  86. package/dist/evm/offchain.d.ts.map +1 -1
  87. package/dist/evm/offchain.js +1 -133
  88. package/dist/evm/offchain.js.map +1 -1
  89. package/dist/evm/types.d.ts +7 -2
  90. package/dist/evm/types.d.ts.map +1 -1
  91. package/dist/evm/types.js +22 -1
  92. package/dist/evm/types.js.map +1 -1
  93. package/dist/execution.d.ts +62 -22
  94. package/dist/execution.d.ts.map +1 -1
  95. package/dist/execution.js +98 -61
  96. package/dist/execution.js.map +1 -1
  97. package/dist/extra-args.d.ts +13 -3
  98. package/dist/extra-args.d.ts.map +1 -1
  99. package/dist/extra-args.js +13 -3
  100. package/dist/extra-args.js.map +1 -1
  101. package/dist/gas.d.ts +25 -2
  102. package/dist/gas.d.ts.map +1 -1
  103. package/dist/gas.js +30 -4
  104. package/dist/gas.js.map +1 -1
  105. package/dist/index.d.ts +3 -2
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +2 -1
  108. package/dist/index.js.map +1 -1
  109. package/dist/offchain.d.ts +23 -6
  110. package/dist/offchain.d.ts.map +1 -1
  111. package/dist/offchain.js +92 -17
  112. package/dist/offchain.js.map +1 -1
  113. package/dist/requests.d.ts +85 -14
  114. package/dist/requests.d.ts.map +1 -1
  115. package/dist/requests.js +99 -17
  116. package/dist/requests.js.map +1 -1
  117. package/dist/selectors.d.ts.map +1 -1
  118. package/dist/selectors.js +12 -0
  119. package/dist/selectors.js.map +1 -1
  120. package/dist/shared/bcs-codecs.d.ts +61 -0
  121. package/dist/shared/bcs-codecs.d.ts.map +1 -0
  122. package/dist/shared/bcs-codecs.js +102 -0
  123. package/dist/shared/bcs-codecs.js.map +1 -0
  124. package/dist/shared/constants.d.ts +3 -0
  125. package/dist/shared/constants.d.ts.map +1 -0
  126. package/dist/shared/constants.js +3 -0
  127. package/dist/shared/constants.js.map +1 -0
  128. package/dist/solana/exec.d.ts +2 -2
  129. package/dist/solana/exec.d.ts.map +1 -1
  130. package/dist/solana/exec.js.map +1 -1
  131. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.d.ts +1 -1
  132. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.js +1 -1
  133. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.d.ts +1 -1
  134. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.js +1 -1
  135. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.d.ts +1 -1
  136. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.js +1 -1
  137. package/dist/solana/idl/1.6.0/CCIP_COMMON.d.ts +16 -1
  138. package/dist/solana/idl/1.6.0/CCIP_COMMON.d.ts.map +1 -1
  139. package/dist/solana/idl/1.6.0/CCIP_COMMON.js +16 -1
  140. package/dist/solana/idl/1.6.0/CCIP_COMMON.js.map +1 -1
  141. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.d.ts +1 -1
  142. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.js +1 -1
  143. package/dist/solana/idl/1.6.0/CCIP_ROUTER.d.ts +1 -1
  144. package/dist/solana/idl/1.6.0/CCIP_ROUTER.js +1 -1
  145. package/dist/solana/index.d.ts +85 -24
  146. package/dist/solana/index.d.ts.map +1 -1
  147. package/dist/solana/index.js +69 -37
  148. package/dist/solana/index.js.map +1 -1
  149. package/dist/solana/offchain.d.ts +1 -13
  150. package/dist/solana/offchain.d.ts.map +1 -1
  151. package/dist/solana/offchain.js +1 -66
  152. package/dist/solana/offchain.js.map +1 -1
  153. package/dist/solana/utils.d.ts +4 -4
  154. package/dist/solana/utils.d.ts.map +1 -1
  155. package/dist/solana/utils.js +1 -1
  156. package/dist/solana/utils.js.map +1 -1
  157. package/dist/sui/hasher.d.ts.map +1 -1
  158. package/dist/sui/hasher.js +1 -1
  159. package/dist/sui/hasher.js.map +1 -1
  160. package/dist/sui/index.d.ts +18 -18
  161. package/dist/sui/index.d.ts.map +1 -1
  162. package/dist/sui/index.js +38 -39
  163. package/dist/sui/index.js.map +1 -1
  164. package/dist/sui/manuallyExec/encoder.d.ts +2 -2
  165. package/dist/sui/manuallyExec/encoder.d.ts.map +1 -1
  166. package/dist/sui/manuallyExec/encoder.js.map +1 -1
  167. package/dist/sui/manuallyExec/index.d.ts +2 -2
  168. package/dist/sui/manuallyExec/index.d.ts.map +1 -1
  169. package/dist/ton/exec.d.ts +3 -3
  170. package/dist/ton/exec.d.ts.map +1 -1
  171. package/dist/ton/exec.js +1 -1
  172. package/dist/ton/exec.js.map +1 -1
  173. package/dist/ton/index.d.ts +14 -22
  174. package/dist/ton/index.d.ts.map +1 -1
  175. package/dist/ton/index.js +26 -35
  176. package/dist/ton/index.js.map +1 -1
  177. package/dist/ton/types.d.ts +3 -5
  178. package/dist/ton/types.d.ts.map +1 -1
  179. package/dist/ton/types.js.map +1 -1
  180. package/dist/types.d.ts +55 -20
  181. package/dist/types.d.ts.map +1 -1
  182. package/dist/types.js +6 -1
  183. package/dist/types.js.map +1 -1
  184. package/dist/utils.d.ts +65 -2
  185. package/dist/utils.d.ts.map +1 -1
  186. package/dist/utils.js +74 -2
  187. package/dist/utils.js.map +1 -1
  188. package/package.json +14 -10
  189. package/src/api/index.ts +53 -17
  190. package/src/api/types.ts +0 -2
  191. package/src/aptos/exec.ts +2 -2
  192. package/src/aptos/hasher.ts +1 -1
  193. package/src/aptos/index.ts +55 -100
  194. package/src/aptos/logs.ts +2 -2
  195. package/src/aptos/types.ts +2 -15
  196. package/src/chain.ts +594 -171
  197. package/src/commits.ts +9 -9
  198. package/src/errors/CCIPError.ts +33 -4
  199. package/src/errors/codes.ts +3 -1
  200. package/src/errors/index.ts +4 -0
  201. package/src/errors/recovery.ts +7 -1
  202. package/src/errors/specialized.ts +1726 -130
  203. package/src/errors/utils.ts +0 -1
  204. package/src/evm/abi/OffRamp_2_0.ts +743 -0
  205. package/src/evm/abi/OnRamp_2_0.ts +991 -0
  206. package/src/evm/const.ts +10 -3
  207. package/src/evm/errors.ts +6 -2
  208. package/src/evm/extra-args.ts +4 -21
  209. package/src/evm/hasher.ts +30 -18
  210. package/src/evm/index.ts +314 -176
  211. package/src/evm/logs.ts +1 -1
  212. package/src/evm/messages.ts +323 -11
  213. package/src/evm/offchain.ts +2 -191
  214. package/src/evm/types.ts +20 -2
  215. package/src/execution.ts +125 -86
  216. package/src/extra-args.ts +13 -3
  217. package/src/gas.ts +29 -3
  218. package/src/index.ts +10 -3
  219. package/src/offchain.ts +125 -28
  220. package/src/requests.ts +114 -19
  221. package/src/selectors.ts +12 -0
  222. package/src/shared/bcs-codecs.ts +132 -0
  223. package/src/shared/constants.ts +2 -0
  224. package/src/solana/exec.ts +4 -4
  225. package/src/solana/idl/1.6.0/BASE_TOKEN_POOL.ts +2 -2
  226. package/src/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.ts +2 -2
  227. package/src/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.ts +2 -2
  228. package/src/solana/idl/1.6.0/CCIP_COMMON.ts +32 -2
  229. package/src/solana/idl/1.6.0/CCIP_OFFRAMP.ts +2 -2
  230. package/src/solana/idl/1.6.0/CCIP_ROUTER.ts +2 -2
  231. package/src/solana/index.ts +110 -85
  232. package/src/solana/offchain.ts +3 -100
  233. package/src/solana/utils.ts +8 -5
  234. package/src/sui/hasher.ts +1 -1
  235. package/src/sui/index.ts +55 -59
  236. package/src/sui/manuallyExec/encoder.ts +2 -2
  237. package/src/sui/manuallyExec/index.ts +2 -2
  238. package/src/ton/exec.ts +4 -7
  239. package/src/ton/index.ts +45 -53
  240. package/src/ton/types.ts +4 -7
  241. package/src/types.ts +81 -37
  242. package/src/utils.ts +73 -2
  243. package/dist/aptos/utils.d.ts +0 -12
  244. package/dist/aptos/utils.d.ts.map +0 -1
  245. package/dist/aptos/utils.js +0 -15
  246. package/dist/aptos/utils.js.map +0 -1
  247. package/src/aptos/utils.ts +0 -24
@@ -7,7 +7,7 @@ export const EVMExtraArgsV1Tag = id('CCIP EVMExtraArgsV1').substring(0, 10);
7
7
  /** Tag identifier for EVMExtraArgsV2 encoding. */
8
8
  export const EVMExtraArgsV2Tag = id('CCIP EVMExtraArgsV2').substring(0, 10);
9
9
  /** Tag identifier for GenericExtraArgsV3 encoding (tightly packed binary format). */
10
- export const GenericExtraArgsV3Tag = '0x302326cb';
10
+ export const GenericExtraArgsV3Tag = id('CCIP GenericExtraArgsV3').substring(0, 10);
11
11
  /** Tag identifier for SVMExtraArgsV1 encoding. */
12
12
  export const SVMExtraArgsV1Tag = id('CCIP SVMExtraArgsV1').substring(0, 10);
13
13
  /** Tag identifier for SuiExtraArgsV1 encoding. */
@@ -16,6 +16,7 @@ export const SuiExtraArgsV1Tag = id('CCIP SuiExtraArgsV1').substring(0, 10);
16
16
  * Encodes extra arguments for CCIP messages.
17
17
  * The args are *to* a dest network, but are encoded as a message *from* this source chain.
18
18
  * E.g. Solana uses Borsh to encode extraArgs in its produced requests, even those targeting EVM.
19
+ *
19
20
  * @param args - Extra arguments to encode
20
21
  * @param from - Source chain family for encoding format (defaults to EVM)
21
22
  * @returns Encoded extra arguments as hex string
@@ -23,12 +24,16 @@ export const SuiExtraArgsV1Tag = id('CCIP SuiExtraArgsV1').substring(0, 10);
23
24
  *
24
25
  * @example
25
26
  * ```typescript
27
+ * import { encodeExtraArgs } from '@chainlink/ccip-sdk'
28
+ *
26
29
  * const encoded = encodeExtraArgs({
27
30
  * gasLimit: 200_000n,
28
31
  * allowOutOfOrderExecution: true,
29
32
  * })
30
- * // Returns: '0x181dcf10...'
33
+ * console.log('Encoded:', encoded) // '0x181dcf10...'
31
34
  * ```
35
+ *
36
+ * @see {@link decodeExtraArgs} - Decode extra arguments from bytes
32
37
  */
33
38
  export function encodeExtraArgs(args, from = ChainFamily.EVM) {
34
39
  const chain = supportedChains[from];
@@ -46,11 +51,16 @@ export function encodeExtraArgs(args, from = ChainFamily.EVM) {
46
51
  *
47
52
  * @example
48
53
  * ```typescript
54
+ * import { decodeExtraArgs } from '@chainlink/ccip-sdk'
55
+ *
49
56
  * const decoded = decodeExtraArgs('0x181dcf10...')
50
57
  * if (decoded?._tag === 'EVMExtraArgsV2') {
51
- * console.log(decoded.gasLimit, decoded.allowOutOfOrderExecution)
58
+ * console.log('Gas limit:', decoded.gasLimit)
59
+ * console.log('Out of order:', decoded.allowOutOfOrderExecution)
52
60
  * }
53
61
  * ```
62
+ *
63
+ * @see {@link encodeExtraArgs} - Encode extra arguments to bytes
54
64
  */
55
65
  export function decodeExtraArgs(data, from) {
56
66
  if (!data || data === '')
@@ -1 +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,+BAA+B,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAqB,CAAA;AAC1D,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAgI3F;;;;;;;;;;;;;;;;;GAiBG;AACH,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,+BAA+B,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAe,EACf,IAAkB;IAQlB,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,+BAA+B,CAAC,IAAI,CAAC,CAAA;QAC3D,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,uBAAuB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAA;AACzD,CAAC"}
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,+BAA+B,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AACnG,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAC3F,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAiB,CAAA;AAgI3F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,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,+BAA+B,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAe,EACf,IAAkB;IAQlB,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,+BAA+B,CAAC,IAAI,CAAC,CAAA;QAC3D,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,uBAAuB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAA;AACzD,CAAC"}
package/dist/gas.d.ts CHANGED
@@ -42,11 +42,34 @@ export type EstimateReceiveExecutionOpts = {
42
42
  };
43
43
  /**
44
44
  * Estimate CCIP gasLimit needed to execute a request on a contract receiver.
45
- * @param opts - Options for estimation: source and dest chains, router or ramp address, and message
46
- * @returns Estimated gasLimit.
45
+ *
46
+ * @param opts - {@link EstimateReceiveExecutionOpts} for estimation
47
+ * @returns Estimated gasLimit
48
+ *
47
49
  * @throws {@link CCIPMethodUnsupportedError} if dest chain doesn't support estimation
48
50
  * @throws {@link CCIPContractTypeInvalidError} if routerOrRamp is not a valid contract type
49
51
  * @throws {@link CCIPTokenDecimalsInsufficientError} if dest token has insufficient decimals
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * import { estimateReceiveExecution, EVMChain } from '@chainlink/ccip-sdk'
56
+ *
57
+ * const source = await EVMChain.fromUrl('https://rpc.sepolia.org')
58
+ * const dest = await EVMChain.fromUrl('https://rpc.fuji.avax.network')
59
+ *
60
+ * const gasLimit = await estimateReceiveExecution({
61
+ * source,
62
+ * dest,
63
+ * routerOrRamp: '0xRouter...',
64
+ * message: {
65
+ * sender: '0x...',
66
+ * receiver: '0x...',
67
+ * data: '0x...',
68
+ * tokenAmounts: [],
69
+ * },
70
+ * })
71
+ * console.log('Estimated gas:', gasLimit)
72
+ * ```
50
73
  */
51
74
  export declare function estimateReceiveExecution({ source, dest, routerOrRamp, message, }: EstimateReceiveExecutionOpts): Promise<number>;
52
75
  //# sourceMappingURL=gas.d.ts.map
package/dist/gas.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqC,MAAM,QAAQ,CAAA;AAE1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AASvC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;QACvB,MAAM,EAAE,MAAM,CAAA;KACf,GAAG,CACA;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GACjB;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CACvF,CAAC,EAAE,CAAA;CACL,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,uDAAuD;IACvD,MAAM,EAAE,KAAK,CAAA;IACb,+DAA+D;IAC/D,IAAI,EAAE,KAAK,CAAA;IACX,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,OAAO,EAAE,oBAAoB,CAAA;CAC9B,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,OAAO,GACR,EAAE,4BAA4B,mBA8D9B"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqC,MAAM,QAAQ,CAAA;AAE1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;QACvB,MAAM,EAAE,MAAM,CAAA;KACf,GAAG,CACA;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GACjB;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CACvF,CAAC,EAAE,CAAA;CACL,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,uDAAuD;IACvD,MAAM,EAAE,KAAK,CAAA;IACb,+DAA+D;IAC/D,IAAI,EAAE,KAAK,CAAA;IACX,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,OAAO,EAAE,oBAAoB,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,OAAO,GACR,EAAE,4BAA4B,mBAgE9B"}
package/dist/gas.js CHANGED
@@ -1,14 +1,37 @@
1
1
  import { formatUnits, hexlify, randomBytes } from 'ethers';
2
- import { CCIPContractTypeInvalidError, CCIPMethodUnsupportedError, CCIPTokenDecimalsInsufficientError, } from "./errors/index.js";
2
+ import { CCIPContractTypeInvalidError, CCIPMethodUnsupportedError, CCIPOnRampRequiredError, CCIPTokenDecimalsInsufficientError, } from "./errors/index.js";
3
3
  import { discoverOffRamp } from "./execution.js";
4
4
  import { sourceToDestTokenAddresses } from "./requests.js";
5
5
  /**
6
6
  * Estimate CCIP gasLimit needed to execute a request on a contract receiver.
7
- * @param opts - Options for estimation: source and dest chains, router or ramp address, and message
8
- * @returns Estimated gasLimit.
7
+ *
8
+ * @param opts - {@link EstimateReceiveExecutionOpts} for estimation
9
+ * @returns Estimated gasLimit
10
+ *
9
11
  * @throws {@link CCIPMethodUnsupportedError} if dest chain doesn't support estimation
10
12
  * @throws {@link CCIPContractTypeInvalidError} if routerOrRamp is not a valid contract type
11
13
  * @throws {@link CCIPTokenDecimalsInsufficientError} if dest token has insufficient decimals
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { estimateReceiveExecution, EVMChain } from '@chainlink/ccip-sdk'
18
+ *
19
+ * const source = await EVMChain.fromUrl('https://rpc.sepolia.org')
20
+ * const dest = await EVMChain.fromUrl('https://rpc.fuji.avax.network')
21
+ *
22
+ * const gasLimit = await estimateReceiveExecution({
23
+ * source,
24
+ * dest,
25
+ * routerOrRamp: '0xRouter...',
26
+ * message: {
27
+ * sender: '0x...',
28
+ * receiver: '0x...',
29
+ * data: '0x...',
30
+ * tokenAmounts: [],
31
+ * },
32
+ * })
33
+ * console.log('Estimated gas:', gasLimit)
34
+ * ```
12
35
  */
13
36
  export async function estimateReceiveExecution({ source, dest, routerOrRamp, message, }) {
14
37
  if (!dest.estimateReceiveExecution)
@@ -28,7 +51,10 @@ export async function estimateReceiveExecution({ source, dest, routerOrRamp, mes
28
51
  if (!tnv[0].includes('OffRamp'))
29
52
  throw new CCIPContractTypeInvalidError(routerOrRamp, tnv[2], ['OffRamp']);
30
53
  offRamp = routerOrRamp;
31
- onRamp = await dest.getOnRampForOffRamp(offRamp, source.network.chainSelector);
54
+ const onRamps = await dest.getOnRampsForOffRamp(offRamp, source.network.chainSelector);
55
+ if (!onRamps.length)
56
+ throw new CCIPOnRampRequiredError();
57
+ onRamp = onRamps[onRamps.length - 1];
32
58
  }
33
59
  catch {
34
60
  throw sourceErr; // re-throw original error
package/dist/gas.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gas.js","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gas.js","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,14 +7,15 @@
7
7
  * @packageDocumentation
8
8
  */
9
9
  export type { APICCIPRequestMetadata, APIErrorResponse, CCIPAPIClientContext, LaneLatencyResponse, } from './api/index.ts';
10
- export { CCIPAPIClient, DEFAULT_API_BASE_URL } from './api/index.ts';
10
+ export { CCIPAPIClient, DEFAULT_API_BASE_URL, SDK_VERSION, SDK_VERSION_HEADER, } from './api/index.ts';
11
11
  export type { ApiRetryConfig, Chain, ChainContext, ChainGetter, ChainStatic, GetBalanceOpts, LogFilter, RateLimiterState, RegistryTokenConfig, TokenInfo, TokenPoolConfig, TokenPoolRemote, } from './chain.ts';
12
12
  export { DEFAULT_API_RETRY_CONFIG } from './chain.ts';
13
13
  export { calculateManualExecProof, discoverOffRamp } from './execution.ts';
14
14
  export { type EVMExtraArgsV1, type EVMExtraArgsV2, type ExtraArgs, type SVMExtraArgsV1, type SuiExtraArgsV1, decodeExtraArgs, encodeExtraArgs, } from './extra-args.ts';
15
15
  export { estimateReceiveExecution } from './gas.ts';
16
+ export { getOffchainTokenData } from './offchain.ts';
16
17
  export { decodeMessage, getMessagesForSender, sourceToDestTokenAddresses } from './requests.ts';
17
- export { type CCIPCommit, type CCIPExecution, type CCIPMessage, type CCIPRequest, type ChainTransaction, type CommitReport, type ExecutionReceipt, type ExecutionReport, type Lane, type Logger, type MessageInput, type NetworkInfo, type OffchainTokenData, type WithLogger, CCIPVersion, ExecutionState, IntentStatus, MessageStatus, } from './types.ts';
18
+ export { type CCIPExecution, type CCIPMessage, type CCIPRequest, type CCIPVerifications, type ChainLog, type ChainTransaction, type CommitReport, type ExecutionInput, type ExecutionReceipt, type Lane, type Logger, type MessageInput, type NetworkInfo, type OffchainTokenData, type WithLogger, CCIPVersion, ExecutionState, IntentStatus, MessageStatus, } from './types.ts';
18
19
  export type { WithRetryConfig } from './utils.ts';
19
20
  export { bigIntReplacer, bigIntReviver, bytesToBuffer, decodeAddress, getDataBytes, isSupportedTxHash, networkInfo, withRetry, } from './utils.ts';
20
21
  export { type CCIPExplorerLinks, type ExplorerLinkType, CCIP_EXPLORER_BASE_URL, getCCIPExplorerLinks, getCCIPExplorerUrl, } from './explorer.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,YAAY,EACV,cAAc,EACd,KAAK,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAGtB,cAAc,mBAAmB,CAAA;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAE1F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,cAAc,EACd,KAAK,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAGtB,cAAc,mBAAmB,CAAA;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAE1F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -6,11 +6,12 @@
6
6
  *
7
7
  * @packageDocumentation
8
8
  */
9
- export { CCIPAPIClient, DEFAULT_API_BASE_URL } from "./api/index.js";
9
+ export { CCIPAPIClient, DEFAULT_API_BASE_URL, SDK_VERSION, SDK_VERSION_HEADER, } from "./api/index.js";
10
10
  export { DEFAULT_API_RETRY_CONFIG } from "./chain.js";
11
11
  export { calculateManualExecProof, discoverOffRamp } from "./execution.js";
12
12
  export { decodeExtraArgs, encodeExtraArgs, } from "./extra-args.js";
13
13
  export { estimateReceiveExecution } from "./gas.js";
14
+ export { getOffchainTokenData } from "./offchain.js";
14
15
  export { decodeMessage, getMessagesForSender, sourceToDestTokenAddresses } from "./requests.js";
15
16
  export { CCIPVersion, ExecutionState, IntentStatus, MessageStatus, } from "./types.js";
16
17
  export { bigIntReplacer, bigIntReviver, bytesToBuffer, decodeAddress, getDataBytes, isSupportedTxHash, networkInfo, withRetry, } from "./utils.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAgBpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAML,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EAeL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAGL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAEtB,SAAS;AACT,cAAc,mBAAmB,CAAA;AAEjC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC1F,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAgBvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAML,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EAgBL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAGL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAEtB,SAAS;AACT,cAAc,mBAAmB,CAAA;AAEjC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC1F,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
@@ -1,13 +1,24 @@
1
- import { NetworkType } from './types.ts';
1
+ import type { PickDeep } from 'type-fest';
2
+ import { type CCIPRequest, type OffchainTokenData, type WithLogger, NetworkType } from './types.ts';
2
3
  /**
3
- * Returns the USDC attestation for a given MessageSent Log
4
- * https://developers.circle.com/stablecoins/reference/getattestation
4
+ * Returns the USDC attestation for a given tokenAmount.extraData and txHash
5
+ * https://developers.circle.com/cctp/quickstarts/transfer-usdc-ethereum-to-arc#3-3-retrieve-attestation
5
6
  *
6
- * @param message - payload of USDC MessageSent(bytes message) event
7
+ * @param opts - CCTPv2 options
7
8
  * @param networkType - network type (mainnet or testnet)
8
- * @returns USDC/CCTP attestation bytes
9
+ * @returns USDC/CCTP attestation and message
9
10
  */
10
- export declare function getUsdcAttestation(message: string, networkType: NetworkType): Promise<string>;
11
+ export declare function getUsdcAttestation(opts: {
12
+ /** CCTP sourceDomain */
13
+ sourceDomain: number;
14
+ /** CCTP burn eventNonce */
15
+ nonce: number;
16
+ /** burn txHash, same as CCIP request */
17
+ txHash: string;
18
+ }, networkType: NetworkType): Promise<{
19
+ attestation: string;
20
+ message: string;
21
+ }>;
11
22
  /**
12
23
  * Returns the LBTC attestation for a given payload hash
13
24
  *
@@ -18,4 +29,10 @@ export declare function getUsdcAttestation(message: string, networkType: Network
18
29
  export declare function getLbtcAttestation(payloadHash: string, networkType: NetworkType): Promise<{
19
30
  attestation: string;
20
31
  }>;
32
+ /**
33
+ * Fetch CCIPv1 offchain token data for USDC and LBTC tokenAmounts
34
+ * @param request - CCIPRequest containing tx.hash and message
35
+ * @returns Promise resolving to an OffchainTokenData for each tokenAmount
36
+ */
37
+ export declare function getOffchainTokenData(request: PickDeep<CCIPRequest, 'tx.hash' | `message`>, { logger }?: WithLogger): Promise<OffchainTokenData[]>;
21
38
  //# sourceMappingURL=offchain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"offchain.d.ts","sourceRoot":"","sources":["../src/offchain.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAsBxC;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAsBD"}
1
+ {"version":3,"file":"offchain.d.ts","sourceRoot":"","sources":["../src/offchain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQzC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAmBnG;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IACJ,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAA;CACf,EACD,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAcnD;AAgBD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAsBD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC,EACrD,EAAE,MAAgB,EAAE,GAAE,UAAe,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgE9B"}
package/dist/offchain.js CHANGED
@@ -1,32 +1,37 @@
1
- import { keccak256 } from 'ethers';
1
+ import { dataLength, dataSlice, getBytes, toNumber } from 'ethers';
2
2
  import { CCIPLbtcAttestationNotApprovedError, CCIPLbtcAttestationNotFoundError, CCIPUsdcAttestationError, } from "./errors/index.js";
3
+ import { parseSourceTokenData } from "./evm/messages.js";
3
4
  import { NetworkType } from "./types.js";
5
+ import { networkInfo } from "./utils.js";
4
6
  const CIRCLE_API_URL = {
5
- mainnet: 'https://iris-api.circle.com/v1',
6
- testnet: 'https://iris-api-sandbox.circle.com/v1',
7
- };
8
- const LOMBARD_API_URL = {
9
- mainnet: 'https://mainnet.prod.lombard.finance',
10
- testnet: 'https://gastald-testnet.prod.lombard.finance',
7
+ mainnet: 'https://iris-api.circle.com',
8
+ testnet: 'https://iris-api-sandbox.circle.com',
11
9
  };
12
10
  /**
13
- * Returns the USDC attestation for a given MessageSent Log
14
- * https://developers.circle.com/stablecoins/reference/getattestation
11
+ * Returns the USDC attestation for a given tokenAmount.extraData and txHash
12
+ * https://developers.circle.com/cctp/quickstarts/transfer-usdc-ethereum-to-arc#3-3-retrieve-attestation
15
13
  *
16
- * @param message - payload of USDC MessageSent(bytes message) event
14
+ * @param opts - CCTPv2 options
17
15
  * @param networkType - network type (mainnet or testnet)
18
- * @returns USDC/CCTP attestation bytes
16
+ * @returns USDC/CCTP attestation and message
19
17
  */
20
- export async function getUsdcAttestation(message, networkType) {
21
- const msgHash = keccak256(message);
18
+ export async function getUsdcAttestation(opts, networkType) {
19
+ const { sourceDomain, nonce, txHash } = opts;
22
20
  const circleApiBaseUrl = networkType === NetworkType.Mainnet ? CIRCLE_API_URL.mainnet : CIRCLE_API_URL.testnet;
23
- const res = await fetch(`${circleApiBaseUrl}/attestations/${msgHash}`);
21
+ const res = await fetch(`${circleApiBaseUrl}/v2/messages/${sourceDomain}?transactionHash=${txHash}`);
24
22
  const json = (await res.json());
25
- if (!('status' in json) || json.status !== 'complete' || !json.attestation) {
26
- throw new CCIPUsdcAttestationError(msgHash, json);
23
+ let att;
24
+ if ('messages' in json) {
25
+ att = json.messages.find((m) => m.status === 'complete' && m.eventNonce === nonce.toString());
27
26
  }
28
- return json.attestation;
27
+ if (!att?.message)
28
+ throw new CCIPUsdcAttestationError(txHash, json, { context: opts });
29
+ return att;
29
30
  }
31
+ const LOMBARD_API_URL = {
32
+ mainnet: 'https://mainnet.prod.lombard.finance',
33
+ testnet: 'https://gastald-testnet.prod.lombard.finance',
34
+ };
30
35
  /**
31
36
  * Returns the LBTC attestation for a given payload hash
32
37
  *
@@ -54,4 +59,74 @@ export async function getLbtcAttestation(payloadHash, networkType) {
54
59
  }
55
60
  return attestation;
56
61
  }
62
+ /**
63
+ * Fetch CCIPv1 offchain token data for USDC and LBTC tokenAmounts
64
+ * @param request - CCIPRequest containing tx.hash and message
65
+ * @returns Promise resolving to an OffchainTokenData for each tokenAmount
66
+ */
67
+ export async function getOffchainTokenData(request, { logger = console } = {}) {
68
+ const { networkType } = networkInfo(request.message.sourceChainSelector);
69
+ function looksUsdcData(extraData) {
70
+ if (dataLength(extraData) !== 64)
71
+ return;
72
+ // USDCTokenPool's extraData is a packed `SourceTokenDataPayloadV1{uint64 nonce, uint32 sourceDomain}`,
73
+ // which we need to query CCTPv2 (by sourceDomain and txHash) and to filter by nonce among messages,
74
+ // if more than one in tx
75
+ let nonce, sourceDomain;
76
+ try {
77
+ // those toNumber conversions throw early in case the bytearray don't look like small numbers
78
+ nonce = toNumber(dataSlice(extraData, 0, 32));
79
+ sourceDomain = toNumber(dataSlice(extraData, 32, 32 + 32));
80
+ return { nonce, sourceDomain }; // maybe USDC
81
+ }
82
+ catch {
83
+ // not USDC
84
+ }
85
+ }
86
+ function looksLbtcData(extraData) {
87
+ // LBTC returns `message_hash`/`payloadHash` directly as `bytes32 extraData`
88
+ if (dataLength(extraData) === 32 &&
89
+ getBytes(extraData, 'extraData').filter(Boolean).length > 20 // looks like a hash
90
+ )
91
+ return true;
92
+ }
93
+ return Promise.all(request.message.tokenAmounts.map(async (tokenAmount, i) => {
94
+ let extraData;
95
+ if ('extraData' in tokenAmount) {
96
+ extraData = tokenAmount.extraData;
97
+ }
98
+ else if ('sourceTokenData' in request.message) {
99
+ // v1.2..v1.5
100
+ if (dataLength(request.message.sourceTokenData[i]) === 64) {
101
+ extraData = request.message.sourceTokenData[i];
102
+ }
103
+ else {
104
+ ;
105
+ ({ extraData } = parseSourceTokenData(request.message.sourceTokenData[i]));
106
+ }
107
+ }
108
+ if (!extraData)
109
+ return;
110
+ const usdcOpts = looksUsdcData(extraData);
111
+ if (usdcOpts) {
112
+ try {
113
+ const usdcAttestation = await getUsdcAttestation({ ...usdcOpts, txHash: request.tx.hash }, networkType);
114
+ return { _tag: 'usdc', extraData, ...usdcAttestation };
115
+ }
116
+ catch (err) {
117
+ // maybe not a USDC transfer, or not ready
118
+ logger.warn(`❌ CCTP: Failed to fetch attestation for message:`, request.message, err);
119
+ }
120
+ }
121
+ else if (looksLbtcData(extraData)) {
122
+ try {
123
+ const lbtcAttestation = await getLbtcAttestation(extraData, networkType);
124
+ return { _tag: 'lbtc', extraData, ...lbtcAttestation };
125
+ }
126
+ catch (err) {
127
+ logger.warn(`❌ LBTC: Failed to fetch attestation for message:`, extraData, err);
128
+ }
129
+ }
130
+ }));
131
+ }
57
132
  //# sourceMappingURL=offchain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offchain.js","sourceRoot":"","sources":["../src/offchain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EACL,mCAAmC,EACnC,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,gCAAgC;IACzC,OAAO,EAAE,wCAAwC;CAClD,CAAA;AAOD,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,sCAAsC;IAC/C,OAAO,EAAE,8CAA8C;CACxD,CAAA;AAOD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,WAAwB;IAExB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAElC,MAAM,gBAAgB,GACpB,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAA;IACvF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,iBAAiB,OAAO,EAAE,CAAC,CAAA;IACtE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC1D,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3E,MAAM,IAAI,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,CAAA;AACzB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,WAAwB;IAIxB,MAAM,cAAc,GAClB,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAA;IACzF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,mCAAmC,EAAE;QAC5E,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;KACrD,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuC,CAAA;IACzE,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,cAAc,IAAI,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,gCAAgC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IACnE,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,KAAK,WAAW,CAAC,CAAA;IACzF,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,gCAAgC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IACnE,CAAC;IACD,IACE,WAAW,CAAC,MAAM,KAAK,sCAAsC;QAC7D,CAAC,CAAC,aAAa,IAAI,WAAW,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,mCAAmC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"offchain.js","sourceRoot":"","sources":["../src/offchain.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,24 @@ import { type AnyMessage, type CCIPMessage, type CCIPRequest, type ChainTransact
4
4
  /**
5
5
  * Decodes hex strings, bytearrays, JSON strings and raw objects as CCIPMessages.
6
6
  * Does minimal validation, but converts objects in the format expected by ccip-tools-ts.
7
+ *
7
8
  * @param data - Data to decode (hex string, Uint8Array, JSON string, or object)
8
9
  * @returns Decoded CCIPMessage
9
10
  * @throws {@link CCIPMessageDecodeError} if data cannot be decoded as a valid message
11
+ * @throws {@link CCIPMessageInvalidError} if message structure is invalid or missing required fields
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { decodeMessage } from '@chainlink/ccip-sdk'
16
+ *
17
+ * // Decode from JSON string
18
+ * const message = decodeMessage('{"header":{"sourceChainSelector":"123",...}')
19
+ *
20
+ * // Decode from hex-encoded bytes
21
+ * const message = decodeMessage('0x...')
22
+ *
23
+ * console.log('Message ID:', message.messageId)
24
+ * ```
10
25
  */
11
26
  export declare function decodeMessage(data: string | Uint8Array | Record<string, unknown>): CCIPMessage;
12
27
  /**
@@ -23,15 +38,35 @@ export declare function buildMessageForDest(message: MessageInput, dest: ChainFa
23
38
  * @returns CCIP requests (messages) in the transaction (at least one)
24
39
  * @throws {@link CCIPChainFamilyUnsupportedError} if chain family not supported for legacy messages
25
40
  * @throws {@link CCIPMessageNotFoundInTxError} if no CCIP messages found in transaction
41
+ *
42
+ * @see {@link getMessageById} - Search by messageId when tx hash unknown
26
43
  */
27
44
  export declare function getMessagesInTx(source: Chain, tx: ChainTransaction): Promise<CCIPRequest[]>;
28
45
  /**
29
- * Fetch a CCIP message by its messageId from RPC (slow).
30
- * Should be called *after* generic Chain implementation, which fetches from API if available.
31
- * @param source - Provider to fetch logs from.
32
- * @param messageId - MessageId to search for.
33
- * @param opts - Optional hints for pagination (e.g., `address` for onRamp, `page` for pagination size).
34
- * @returns CCIPRequest with given messageId.
46
+ * Fetch a CCIP message by messageId from RPC logs (slow scan).
47
+ *
48
+ * This is the fallback implementation called by {@link Chain.getMessageById}
49
+ * when the API client is unavailable or fails.
50
+ *
51
+ * @param source - Source chain to scan logs from
52
+ * @param messageId - Message ID to search for
53
+ * @param opts - Optional hints (onRamp address narrows search, page controls batch size)
54
+ * @returns CCIPRequest matching the messageId
55
+ *
56
+ * @throws {@link CCIPMessageIdNotFoundError} if message not found after scanning all logs
57
+ *
58
+ * @example
59
+ *
60
+ * ```typescript
61
+ * import { getMessageById, EVMChain } from '@chainlink/ccip-sdk'
62
+ *
63
+ * const source = await EVMChain.fromUrl('https://rpc.sepolia.org')
64
+ * const request = await getMessageById(source, '0xabc123...', {
65
+ * onRamp: '0xOnRampAddress...',
66
+ * })
67
+ * console.log(`Found: seqNr=${request.message.sequenceNumber}`)
68
+ * ```
69
+ *
35
70
  * @internal
36
71
  */
37
72
  export declare function getMessageById(source: Chain, messageId: string, opts?: {
@@ -42,9 +77,10 @@ export declare function getMessageById(source: Chain, messageId: string, opts?:
42
77
  * Fetches all CCIP messages contained in a given commit batch.
43
78
  * @param source - The source chain.
44
79
  * @param request - The CCIP request containing lane and message info.
45
- * @param seqNrRange - Object containing minSeqNr and maxSeqNr for the batch range.
80
+ * @param range - Object containing minSeqNr and maxSeqNr for the batch range.
46
81
  * @param opts - Optional log filtering parameters.
47
82
  * @returns Array of messages in the batch.
83
+ * @see {@link getVerifications} - Get commit report to determine batch range
48
84
  */
49
85
  export declare function getMessagesInBatch<C extends Chain, R extends PickDeep<CCIPRequest, 'lane' | `log.${'topics' | 'address' | 'blockNumber'}` | 'message.sequenceNumber'>>(source: C, request: R, { minSeqNr, maxSeqNr }: {
50
86
  minSeqNr: bigint;
@@ -57,16 +93,51 @@ export declare function getMessagesInBatch<C extends Chain, R extends PickDeep<C
57
93
  * @param filter - Log filter options.
58
94
  * @returns Async generator of CCIP requests.
59
95
  * @throws {@link CCIPChainFamilyUnsupportedError} if chain family not supported for legacy messages
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * import { getMessagesForSender, EVMChain } from '@chainlink/ccip-sdk'
100
+ *
101
+ * const chain = await EVMChain.fromUrl('https://rpc.sepolia.org')
102
+ *
103
+ * for await (const request of getMessagesForSender(chain, '0xSenderAddress', {})) {
104
+ * console.log('Message ID:', request.message.messageId)
105
+ * console.log('Destination:', request.lane.destChainSelector)
106
+ * }
107
+ * ```
108
+ *
109
+ * @see {@link getMessagesInTx} - Fetch from specific transaction
110
+ * @see {@link getMessageById} - Search by messageId
60
111
  */
61
112
  export declare function getMessagesForSender(source: Chain, sender: string, filter: Pick<LogFilter, 'address' | 'startBlock' | 'startTime' | 'endBlock'>): AsyncGenerator<Omit<CCIPRequest, 'tx' | 'timestamp'>, void, unknown>;
62
113
  /**
63
- * Map source `token` to `sourcePoolAddress + destTokenAddress`.
64
- * @param source - Source chain.
65
- * @param destChainSelector - Destination network selector.
66
- * @param onRamp - Contract address.
67
- * @param sourceTokenAmount - tokenAmount object, usually containing `token` and `amount` properties.
68
- * @returns tokenAmount object with `sourcePoolAddress`, `sourceTokenAddress`, `destTokenAddress`, and remaining properties.
69
- * @throws {@link CCIPTokenNotInRegistryError} if token not found in registry
114
+ * Map source token to its pool address and destination token address.
115
+ *
116
+ * Resolves token routing by querying the TokenAdminRegistry and TokenPool
117
+ * to find the corresponding destination chain token.
118
+ *
119
+ * @param source - Source chain instance
120
+ * @param destChainSelector - Destination chain selector
121
+ * @param onRamp - OnRamp contract address
122
+ * @param sourceTokenAmount - Token amount object containing `token` and `amount`
123
+ * @returns Extended token amount with `sourcePoolAddress`, `sourceTokenAddress`, and `destTokenAddress`
124
+ *
125
+ * @throws {@link CCIPTokenNotInRegistryError} if token is not registered in TokenAdminRegistry
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * import { sourceToDestTokenAddresses, EVMChain } from '@chainlink/ccip-sdk'
130
+ *
131
+ * const source = await EVMChain.fromUrl('https://rpc.sepolia.org')
132
+ * const tokenAmount = await sourceToDestTokenAddresses(
133
+ * source,
134
+ * destChainSelector,
135
+ * '0xOnRamp...',
136
+ * { token: '0xLINK...', amount: 1000000000000000000n }
137
+ * )
138
+ * console.log(`Pool: ${tokenAmount.sourcePoolAddress}`)
139
+ * console.log(`Dest token: ${tokenAmount.destTokenAddress}`)
140
+ * ```
70
141
  */
71
142
  export declare function sourceToDestTokenAddresses<S extends {
72
143
  token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAapE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EACjB,WAAW,EACZ,MAAM,YAAY,CAAA;AAsGnB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAmB9F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAGxF;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAwBjG;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,WAAW,CAAC,CA6BtB;AAKD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,CAAC,SAAS,KAAK,EACf,CAAC,SAAS,QAAQ,CAChB,WAAW,EACX,MAAM,GAAG,OAAO,QAAQ,GAAG,SAAS,GAAG,aAAa,EAAE,GAAG,wBAAwB,CAClF,EAED,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC9D,IAAI,GAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAmC,GAClE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAkEzB;AAED;;;;;;;GAOG;AACH,wBAAuB,oBAAoB,CACzC,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC,GAC3E,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CA6BtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC1E,MAAM,EAAE,KAAK,EACb,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,CAAC,GACnB,OAAO,CACR,CAAC,GAAG;IACF,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;CACzB,CACF,CAgBA"}
1
+ {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAapE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAGhB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,WAAW,EACZ,MAAM,YAAY,CAAA;AA2HnB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAmB9F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAGxF;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAyBjG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,WAAW,CAAC,CA6BtB;AAKD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,CAAC,SAAS,KAAK,EACf,CAAC,SAAS,QAAQ,CAChB,WAAW,EACX,MAAM,GAAG,OAAO,QAAQ,GAAG,SAAS,GAAG,aAAa,EAAE,GAAG,wBAAwB,CAClF,EAED,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC9D,IAAI,GAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAmC,GAClE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAoEzB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAuB,oBAAoB,CACzC,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC,GAC3E,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CA6BtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC1E,MAAM,EAAE,KAAK,EACb,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,CAAC,GACnB,OAAO,CACR,CAAC,GAAG;IACF,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;CACzB,CACF,CAgBA"}