@chainlink/ccip-sdk 0.91.0 → 0.92.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 (273) hide show
  1. package/README.md +127 -80
  2. package/dist/aptos/hasher.d.ts.map +1 -1
  3. package/dist/aptos/hasher.js +7 -6
  4. package/dist/aptos/hasher.js.map +1 -1
  5. package/dist/aptos/index.d.ts +7 -2
  6. package/dist/aptos/index.d.ts.map +1 -1
  7. package/dist/aptos/index.js +29 -20
  8. package/dist/aptos/index.js.map +1 -1
  9. package/dist/aptos/logs.d.ts +5 -3
  10. package/dist/aptos/logs.d.ts.map +1 -1
  11. package/dist/aptos/logs.js +64 -27
  12. package/dist/aptos/logs.js.map +1 -1
  13. package/dist/aptos/token.d.ts.map +1 -1
  14. package/dist/aptos/token.js +2 -1
  15. package/dist/aptos/token.js.map +1 -1
  16. package/dist/aptos/types.js +6 -6
  17. package/dist/aptos/types.js.map +1 -1
  18. package/dist/chain.d.ts +36 -11
  19. package/dist/chain.d.ts.map +1 -1
  20. package/dist/chain.js +34 -2
  21. package/dist/chain.js.map +1 -1
  22. package/dist/commits.d.ts +2 -3
  23. package/dist/commits.d.ts.map +1 -1
  24. package/dist/commits.js +19 -8
  25. package/dist/commits.js.map +1 -1
  26. package/dist/errors/CCIPError.d.ts +48 -0
  27. package/dist/errors/CCIPError.d.ts.map +1 -0
  28. package/dist/errors/CCIPError.js +65 -0
  29. package/dist/errors/CCIPError.js.map +1 -0
  30. package/dist/errors/codes.d.ts +120 -0
  31. package/dist/errors/codes.d.ts.map +1 -0
  32. package/dist/errors/codes.js +156 -0
  33. package/dist/errors/codes.js.map +1 -0
  34. package/dist/errors/index.d.ts +26 -0
  35. package/dist/errors/index.d.ts.map +1 -0
  36. package/dist/errors/index.js +51 -0
  37. package/dist/errors/index.js.map +1 -0
  38. package/dist/errors/recovery.d.ts +6 -0
  39. package/dist/errors/recovery.d.ts.map +1 -0
  40. package/dist/errors/recovery.js +118 -0
  41. package/dist/errors/recovery.js.map +1 -0
  42. package/dist/errors/specialized.d.ts +637 -0
  43. package/dist/errors/specialized.d.ts.map +1 -0
  44. package/dist/errors/specialized.js +1298 -0
  45. package/dist/errors/specialized.js.map +1 -0
  46. package/dist/errors/utils.d.ts +11 -0
  47. package/dist/errors/utils.d.ts.map +1 -0
  48. package/dist/errors/utils.js +61 -0
  49. package/dist/errors/utils.js.map +1 -0
  50. package/dist/evm/abi/CommitStore_1_5.js +1 -1
  51. package/dist/evm/abi/LockReleaseTokenPool_1_5.js +1 -1
  52. package/dist/evm/abi/OffRamp_1_5.js +1 -1
  53. package/dist/evm/abi/OnRamp_1_5.js +1 -1
  54. package/dist/evm/abi/PriceRegistry_1_2.d.ts +443 -0
  55. package/dist/evm/abi/PriceRegistry_1_2.d.ts.map +1 -0
  56. package/dist/evm/abi/PriceRegistry_1_2.js +439 -0
  57. package/dist/evm/abi/PriceRegistry_1_2.js.map +1 -0
  58. package/dist/evm/const.d.ts +1 -0
  59. package/dist/evm/const.d.ts.map +1 -1
  60. package/dist/evm/const.js +2 -0
  61. package/dist/evm/const.js.map +1 -1
  62. package/dist/evm/hasher.d.ts.map +1 -1
  63. package/dist/evm/hasher.js +7 -6
  64. package/dist/evm/hasher.js.map +1 -1
  65. package/dist/evm/index.d.ts +9 -13
  66. package/dist/evm/index.d.ts.map +1 -1
  67. package/dist/evm/index.js +85 -68
  68. package/dist/evm/index.js.map +1 -1
  69. package/dist/evm/logs.d.ts.map +1 -1
  70. package/dist/evm/logs.js +47 -16
  71. package/dist/evm/logs.js.map +1 -1
  72. package/dist/evm/messages.d.ts +7 -6
  73. package/dist/evm/messages.d.ts.map +1 -1
  74. package/dist/evm/offchain.js +1 -1
  75. package/dist/evm/offchain.js.map +1 -1
  76. package/dist/evm/types.d.ts +10 -0
  77. package/dist/evm/types.d.ts.map +1 -0
  78. package/dist/evm/types.js +2 -0
  79. package/dist/evm/types.js.map +1 -0
  80. package/dist/execution.d.ts.map +1 -1
  81. package/dist/execution.js +9 -5
  82. package/dist/execution.js.map +1 -1
  83. package/dist/extra-args.d.ts.map +1 -1
  84. package/dist/extra-args.js +4 -3
  85. package/dist/extra-args.js.map +1 -1
  86. package/dist/gas.d.ts.map +1 -1
  87. package/dist/gas.js +3 -2
  88. package/dist/gas.js.map +1 -1
  89. package/dist/hasher/hasher.d.ts.map +1 -1
  90. package/dist/hasher/hasher.js +2 -1
  91. package/dist/hasher/hasher.js.map +1 -1
  92. package/dist/hasher/merklemulti.d.ts.map +1 -1
  93. package/dist/hasher/merklemulti.js +9 -8
  94. package/dist/hasher/merklemulti.js.map +1 -1
  95. package/dist/index.d.ts +5 -2
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +6 -2
  98. package/dist/index.js.map +1 -1
  99. package/dist/offchain.d.ts.map +1 -1
  100. package/dist/offchain.js +5 -8
  101. package/dist/offchain.js.map +1 -1
  102. package/dist/requests.d.ts +1 -1
  103. package/dist/requests.d.ts.map +1 -1
  104. package/dist/requests.js +37 -43
  105. package/dist/requests.js.map +1 -1
  106. package/dist/selectors.d.ts.map +1 -1
  107. package/dist/selectors.js +22 -0
  108. package/dist/selectors.js.map +1 -1
  109. package/dist/solana/cleanup.d.ts +2 -2
  110. package/dist/solana/cleanup.d.ts.map +1 -1
  111. package/dist/solana/cleanup.js +2 -3
  112. package/dist/solana/cleanup.js.map +1 -1
  113. package/dist/solana/exec.d.ts.map +1 -1
  114. package/dist/solana/exec.js +12 -12
  115. package/dist/solana/exec.js.map +1 -1
  116. package/dist/solana/hasher.d.ts.map +1 -1
  117. package/dist/solana/hasher.js +6 -5
  118. package/dist/solana/hasher.js.map +1 -1
  119. package/dist/solana/index.d.ts +30 -13
  120. package/dist/solana/index.d.ts.map +1 -1
  121. package/dist/solana/index.js +96 -143
  122. package/dist/solana/index.js.map +1 -1
  123. package/dist/solana/logs.d.ts +15 -0
  124. package/dist/solana/logs.d.ts.map +1 -0
  125. package/dist/solana/logs.js +106 -0
  126. package/dist/solana/logs.js.map +1 -0
  127. package/dist/solana/offchain.d.ts.map +1 -1
  128. package/dist/solana/offchain.js +6 -5
  129. package/dist/solana/offchain.js.map +1 -1
  130. package/dist/solana/patchBorsh.d.ts.map +1 -1
  131. package/dist/solana/patchBorsh.js +3 -2
  132. package/dist/solana/patchBorsh.js.map +1 -1
  133. package/dist/solana/send.d.ts.map +1 -1
  134. package/dist/solana/send.js +8 -7
  135. package/dist/solana/send.js.map +1 -1
  136. package/dist/solana/utils.d.ts +7 -8
  137. package/dist/solana/utils.d.ts.map +1 -1
  138. package/dist/solana/utils.js +23 -11
  139. package/dist/solana/utils.js.map +1 -1
  140. package/dist/sui/discovery.d.ts +18 -0
  141. package/dist/sui/discovery.d.ts.map +1 -0
  142. package/dist/sui/discovery.js +116 -0
  143. package/dist/sui/discovery.js.map +1 -0
  144. package/dist/sui/events.d.ts +36 -0
  145. package/dist/sui/events.d.ts.map +1 -0
  146. package/dist/sui/events.js +179 -0
  147. package/dist/sui/events.js.map +1 -0
  148. package/dist/sui/hasher.d.ts.map +1 -1
  149. package/dist/sui/hasher.js +6 -5
  150. package/dist/sui/hasher.js.map +1 -1
  151. package/dist/sui/index.d.ts +69 -41
  152. package/dist/sui/index.d.ts.map +1 -1
  153. package/dist/sui/index.js +402 -65
  154. package/dist/sui/index.js.map +1 -1
  155. package/dist/sui/manuallyExec/encoder.d.ts +8 -0
  156. package/dist/sui/manuallyExec/encoder.d.ts.map +1 -0
  157. package/dist/sui/manuallyExec/encoder.js +76 -0
  158. package/dist/sui/manuallyExec/encoder.js.map +1 -0
  159. package/dist/sui/manuallyExec/index.d.ts +37 -0
  160. package/dist/sui/manuallyExec/index.d.ts.map +1 -0
  161. package/dist/sui/manuallyExec/index.js +81 -0
  162. package/dist/sui/manuallyExec/index.js.map +1 -0
  163. package/dist/sui/objects.d.ts +46 -0
  164. package/dist/sui/objects.d.ts.map +1 -0
  165. package/dist/sui/objects.js +259 -0
  166. package/dist/sui/objects.js.map +1 -0
  167. package/dist/ton/bindings/offramp.d.ts +48 -0
  168. package/dist/ton/bindings/offramp.d.ts.map +1 -0
  169. package/dist/ton/bindings/offramp.js +63 -0
  170. package/dist/ton/bindings/offramp.js.map +1 -0
  171. package/dist/ton/bindings/onramp.d.ts +40 -0
  172. package/dist/ton/bindings/onramp.d.ts.map +1 -0
  173. package/dist/ton/bindings/onramp.js +51 -0
  174. package/dist/ton/bindings/onramp.js.map +1 -0
  175. package/dist/ton/bindings/router.d.ts +47 -0
  176. package/dist/ton/bindings/router.d.ts.map +1 -0
  177. package/dist/ton/bindings/router.js +51 -0
  178. package/dist/ton/bindings/router.js.map +1 -0
  179. package/dist/ton/exec.d.ts +18 -0
  180. package/dist/ton/exec.d.ts.map +1 -0
  181. package/dist/ton/exec.js +28 -0
  182. package/dist/ton/exec.js.map +1 -0
  183. package/dist/ton/hasher.d.ts +27 -0
  184. package/dist/ton/hasher.d.ts.map +1 -0
  185. package/dist/ton/hasher.js +134 -0
  186. package/dist/ton/hasher.js.map +1 -0
  187. package/dist/ton/index.d.ts +247 -0
  188. package/dist/ton/index.d.ts.map +1 -0
  189. package/dist/ton/index.js +781 -0
  190. package/dist/ton/index.js.map +1 -0
  191. package/dist/ton/logs.d.ts +26 -0
  192. package/dist/ton/logs.d.ts.map +1 -0
  193. package/dist/ton/logs.js +126 -0
  194. package/dist/ton/logs.js.map +1 -0
  195. package/dist/ton/types.d.ts +37 -0
  196. package/dist/ton/types.d.ts.map +1 -0
  197. package/dist/ton/types.js +92 -0
  198. package/dist/ton/types.js.map +1 -0
  199. package/dist/ton/utils.d.ts +67 -0
  200. package/dist/ton/utils.d.ts.map +1 -0
  201. package/dist/ton/utils.js +425 -0
  202. package/dist/ton/utils.js.map +1 -0
  203. package/dist/types.d.ts +4 -2
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js +1 -0
  206. package/dist/types.js.map +1 -1
  207. package/dist/utils.d.ts +10 -0
  208. package/dist/utils.d.ts.map +1 -1
  209. package/dist/utils.js +52 -17
  210. package/dist/utils.js.map +1 -1
  211. package/package.json +12 -10
  212. package/src/aptos/hasher.ts +10 -6
  213. package/src/aptos/index.ts +50 -31
  214. package/src/aptos/logs.ts +85 -29
  215. package/src/aptos/token.ts +5 -1
  216. package/src/aptos/types.ts +6 -6
  217. package/src/chain.ts +83 -12
  218. package/src/commits.ts +23 -11
  219. package/src/errors/CCIPError.ts +86 -0
  220. package/src/errors/codes.ts +179 -0
  221. package/src/errors/index.ts +175 -0
  222. package/src/errors/recovery.ts +170 -0
  223. package/src/errors/specialized.ts +1655 -0
  224. package/src/errors/utils.ts +73 -0
  225. package/src/evm/abi/CommitStore_1_5.ts +1 -1
  226. package/src/evm/abi/LockReleaseTokenPool_1_5.ts +1 -1
  227. package/src/evm/abi/OffRamp_1_5.ts +1 -1
  228. package/src/evm/abi/OnRamp_1_5.ts +1 -1
  229. package/src/evm/abi/PriceRegistry_1_2.ts +438 -0
  230. package/src/evm/const.ts +2 -0
  231. package/src/evm/hasher.ts +7 -6
  232. package/src/evm/index.ts +104 -86
  233. package/src/evm/logs.ts +64 -16
  234. package/src/evm/messages.ts +14 -14
  235. package/src/evm/offchain.ts +1 -1
  236. package/src/evm/types.ts +11 -0
  237. package/src/execution.ts +13 -9
  238. package/src/extra-args.ts +4 -3
  239. package/src/gas.ts +10 -3
  240. package/src/hasher/hasher.ts +2 -1
  241. package/src/hasher/merklemulti.ts +18 -8
  242. package/src/index.ts +14 -2
  243. package/src/offchain.ts +10 -14
  244. package/src/requests.ts +51 -53
  245. package/src/selectors.ts +23 -0
  246. package/src/solana/cleanup.ts +2 -4
  247. package/src/solana/exec.ts +13 -13
  248. package/src/solana/hasher.ts +9 -5
  249. package/src/solana/index.ts +126 -200
  250. package/src/solana/logs.ts +155 -0
  251. package/src/solana/offchain.ts +10 -7
  252. package/src/solana/patchBorsh.ts +3 -2
  253. package/src/solana/send.ts +14 -7
  254. package/src/solana/utils.ts +31 -17
  255. package/src/sui/discovery.ts +163 -0
  256. package/src/sui/events.ts +328 -0
  257. package/src/sui/hasher.ts +6 -5
  258. package/src/sui/index.ts +528 -80
  259. package/src/sui/manuallyExec/encoder.ts +88 -0
  260. package/src/sui/manuallyExec/index.ts +137 -0
  261. package/src/sui/objects.ts +358 -0
  262. package/src/ton/bindings/offramp.ts +96 -0
  263. package/src/ton/bindings/onramp.ts +72 -0
  264. package/src/ton/bindings/router.ts +65 -0
  265. package/src/ton/exec.ts +44 -0
  266. package/src/ton/hasher.ts +184 -0
  267. package/src/ton/index.ts +989 -0
  268. package/src/ton/logs.ts +157 -0
  269. package/src/ton/types.ts +143 -0
  270. package/src/ton/utils.ts +514 -0
  271. package/src/types.ts +6 -2
  272. package/src/utils.ts +58 -23
  273. package/tsconfig.json +2 -1
package/dist/utils.js CHANGED
@@ -1,7 +1,7 @@
1
- import { Buffer } from 'buffer';
2
1
  import bs58 from 'bs58';
3
2
  import { decodeBase64, getBytes, isBytesLike, toBeArray, toBigInt, } from 'ethers';
4
3
  import { memoize } from 'micro-memoize';
4
+ import { CCIPBlockBeforeTimestampNotFoundError, CCIPChainFamilyUnsupportedError, CCIPChainNotFoundError, CCIPDataFormatUnsupportedError, CCIPError, CCIPHttpError, CCIPTypeVersionInvalidError, } from "./errors/index.js";
5
5
  import SELECTORS from "./selectors.js";
6
6
  import { supportedChains } from "./supported-chains.js";
7
7
  import { ChainFamily } from "./types.js";
@@ -29,7 +29,7 @@ export async function getSomeBlockNumberBefore(getBlockTimestamp, recentBlockNum
29
29
  estimatedBlockTime = (now - beforeTimestamp) / (recentBlockNumber - beforeBlockNumber);
30
30
  }
31
31
  if (beforeTimestamp > timestamp) {
32
- throw new Error(`Could not find a block prior to timestamp=${timestamp}`);
32
+ throw new CCIPBlockBeforeTimestampNotFoundError(timestamp);
33
33
  }
34
34
  // now, bin-search based on timestamp proportions, looking for
35
35
  // a block at most N estimated blockTimes from our target timestamp
@@ -69,7 +69,7 @@ export async function getSomeBlockNumberBefore(getBlockTimestamp, recentBlockNum
69
69
  const networkInfoFromChainId = memoize((chainId) => {
70
70
  const sel = SELECTORS[chainId];
71
71
  if (!sel?.name)
72
- throw new Error(`Chain not found: ${chainId}`);
72
+ throw new CCIPChainNotFoundError(chainId);
73
73
  return {
74
74
  chainId: isNaN(+chainId) ? chainId : +chainId,
75
75
  chainSelector: sel.selector,
@@ -88,15 +88,16 @@ const networkInfoFromChainId = memoize((chainId) => {
88
88
  * @returns Complete NetworkInfo object
89
89
  */
90
90
  export const networkInfo = memoize(function networkInfo_(selectorOrIdOrName) {
91
- let chainId;
91
+ let chainId, match;
92
92
  if (typeof selectorOrIdOrName === 'number') {
93
93
  chainId = selectorOrIdOrName;
94
94
  }
95
- else if (typeof selectorOrIdOrName === 'string' && selectorOrIdOrName.match(/^\d+$/)) {
96
- selectorOrIdOrName = BigInt(selectorOrIdOrName);
95
+ else if (typeof selectorOrIdOrName === 'string' &&
96
+ (match = selectorOrIdOrName.match(/^(-?\d+)n?$/))) {
97
+ selectorOrIdOrName = BigInt(match[1]);
97
98
  }
98
99
  if (typeof selectorOrIdOrName === 'bigint') {
99
- // maybe we got a number deserialized as bigint
100
+ // maybe we got a chainId deserialized as bigint
100
101
  if (selectorOrIdOrName.toString() in SELECTORS) {
101
102
  chainId = Number(selectorOrIdOrName);
102
103
  }
@@ -108,11 +109,11 @@ export const networkInfo = memoize(function networkInfo_(selectorOrIdOrName) {
108
109
  }
109
110
  }
110
111
  if (!chainId)
111
- throw new Error(`Selector not found: ${selectorOrIdOrName}`);
112
+ throw new CCIPChainNotFoundError(selectorOrIdOrName);
112
113
  }
113
114
  }
114
115
  else if (typeof selectorOrIdOrName === 'string') {
115
- if (selectorOrIdOrName.includes('-')) {
116
+ if (selectorOrIdOrName.includes('-', 1)) {
116
117
  for (const id in SELECTORS) {
117
118
  if (SELECTORS[id].name === selectorOrIdOrName) {
118
119
  chainId = id;
@@ -183,9 +184,31 @@ export function bigIntReviver(_key, value) {
183
184
  export function decodeAddress(address, family = ChainFamily.EVM) {
184
185
  const chain = supportedChains[family];
185
186
  if (!chain)
186
- throw new Error(`Unsupported chain family: ${family}`);
187
+ throw new CCIPChainFamilyUnsupportedError(family);
187
188
  return chain.getAddress(getAddressBytes(address));
188
189
  }
190
+ /**
191
+ * Validate a value is a txHash string in some supported chain family
192
+ **/
193
+ export function isSupportedTxHash(txHash, family) {
194
+ let chains;
195
+ if (!family)
196
+ chains = Object.values(supportedChains);
197
+ else if (family in supportedChains)
198
+ chains = [supportedChains[family]];
199
+ else
200
+ throw new CCIPChainFamilyUnsupportedError(family);
201
+ for (const C of chains) {
202
+ try {
203
+ if (C.isTxHash(txHash))
204
+ return true;
205
+ }
206
+ catch (_) {
207
+ // continue
208
+ }
209
+ }
210
+ return false;
211
+ }
189
212
  /**
190
213
  * Version of decodeAddress which is aware of custom cross-chain OnRamp formats
191
214
  **/
@@ -239,9 +262,17 @@ export function getDataBytes(data) {
239
262
  return decodeBase64(data);
240
263
  }
241
264
  else {
242
- throw new Error(`Unsupported data format: ${util.inspect(data)}`);
265
+ throw new CCIPDataFormatUnsupportedError(util.inspect(data));
243
266
  }
244
267
  }
268
+ /**
269
+ * Converts bytes to a Node.js Buffer.
270
+ * @param bytes - Bytes to convert (hex string, Uint8Array, Base64, etc).
271
+ * @returns Node.js Buffer.
272
+ */
273
+ export function bytesToBuffer(bytes) {
274
+ return Buffer.from(getDataBytes(bytes));
275
+ }
245
276
  /**
246
277
  * Extracts address bytes, handling both hex and Base58 formats.
247
278
  * @param address - Address in hex or Base58 format.
@@ -301,7 +332,7 @@ export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms).un
301
332
  export function parseTypeAndVersion(typeAndVersion) {
302
333
  const match = typeAndVersion.match(/^(\w.+\S)\s+v?(\d+\.\d+(?:\.\d+)?)([^\d.].*)?$/);
303
334
  if (!match)
304
- throw new Error(`Invalid typeAndVersion: "${typeAndVersion}", len=${typeAndVersion.length}, hex=0x${Buffer.from(typeAndVersion).toString('hex')}`);
335
+ throw new CCIPTypeVersionInvalidError(typeAndVersion);
305
336
  const [, typeRaw, version] = match;
306
337
  // some string normalization
307
338
  const type = typeRaw
@@ -347,6 +378,8 @@ export function createRateLimitedFetch({ maxRequests = 40, windowMs = 11e3, maxR
347
378
  if (method && methodRateLimits[method]) {
348
379
  while (isMethodRateLimited(method)) {
349
380
  const oldestRequest = methodRateLimits[method].queue[0];
381
+ if (!oldestRequest)
382
+ break; // Queue was cleaned, no longer rate limited
350
383
  const waitTime = windowMs - (Date.now() - oldestRequest.timestamp);
351
384
  if (waitTime > 0) {
352
385
  await sleep(waitTime + 100); // Add small buffer
@@ -356,6 +389,8 @@ export function createRateLimitedFetch({ maxRequests = 40, windowMs = 11e3, maxR
356
389
  // Wait for global rate limit
357
390
  while (isRateLimited()) {
358
391
  const oldestRequest = requestQueue[0];
392
+ if (!oldestRequest)
393
+ break; // Queue was cleaned, no longer rate limited
359
394
  const waitTime = windowMs - (Date.now() - oldestRequest.timestamp);
360
395
  if (waitTime > 0) {
361
396
  await sleep(waitTime + 100); // Add small buffer
@@ -411,7 +446,7 @@ export function createRateLimitedFetch({ maxRequests = 40, windowMs = 11e3, maxR
411
446
  await waitForRateLimit(method);
412
447
  recordRequest(method);
413
448
  // logger.debug('__fetching', input, init?.body)
414
- const response = await fetch(input, init);
449
+ const response = await globalThis.fetch(input, init);
415
450
  // Update method rate limits from response headers
416
451
  updateMethodRateLimits(response, method);
417
452
  // If response is successful, return it
@@ -421,15 +456,15 @@ export function createRateLimitedFetch({ maxRequests = 40, windowMs = 11e3, maxR
421
456
  }
422
457
  // For 429 responses, throw an error to trigger retry
423
458
  if (response.status === 429) {
424
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
459
+ throw new CCIPHttpError(response.status, response.statusText);
425
460
  }
426
461
  // For other non-2xx responses, don't retry
427
462
  logger.debug('fetch non-retryable error', input, response.status, init?.body);
428
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
463
+ throw new CCIPHttpError(response.status, response.statusText);
429
464
  }
430
465
  catch (error) {
431
466
  logger.debug('fetch errored', attempt, error, input, init?.body);
432
- lastError = error instanceof Error ? error : new Error(String(error));
467
+ lastError = error instanceof Error ? error : CCIPError.from(error, 'HTTP_ERROR');
433
468
  // Only retry on rate limit errors
434
469
  if (!isRateLimitError(lastError)) {
435
470
  throw lastError;
@@ -440,7 +475,7 @@ export function createRateLimitedFetch({ maxRequests = 40, windowMs = 11e3, maxR
440
475
  }
441
476
  }
442
477
  }
443
- throw lastError || new Error('Request failed after all retries');
478
+ throw lastError || CCIPError.from('Request failed after all retries', 'HTTP_ERROR');
444
479
  };
445
480
  }
446
481
  // barebones `node:util` backfill, if needed
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainlink/ccip-sdk",
3
- "version": "0.91.0",
3
+ "version": "0.92.0",
4
4
  "description": "SDK/Library to interact with CCIP",
5
5
  "author": "Chainlink devs",
6
6
  "license": "MIT",
@@ -32,40 +32,42 @@
32
32
  "!**/__mocks__"
33
33
  ],
34
34
  "devDependencies": {
35
- "@eslint/js": "^9.39.1",
35
+ "@eslint/js": "^9.39.2",
36
36
  "@types/bn.js": "^5.2.0",
37
- "@types/node": "24.10.1",
37
+ "@types/node": "25.0.3",
38
38
  "@types/yargs": "17.0.35",
39
- "eslint": "^9.39.1",
39
+ "eslint": "^9.39.2",
40
40
  "eslint-config-prettier": "10.1.8",
41
41
  "eslint-import-resolver-typescript": "4.4.4",
42
42
  "eslint-plugin-import": "^2.32.0",
43
- "eslint-plugin-jsdoc": "^61.4.2",
43
+ "eslint-plugin-jsdoc": "^61.5.0",
44
44
  "eslint-plugin-prettier": "^5.5.4",
45
45
  "eslint-plugin-tsdoc": "^0.5.0",
46
46
  "ethers-abitype": "1.0.3",
47
47
  "prettier": "^3.7.4",
48
48
  "typescript": "5.9.3",
49
- "typescript-eslint": "8.48.1"
49
+ "typescript-eslint": "8.50.0"
50
50
  },
51
51
  "dependencies": {
52
- "@aptos-labs/ts-sdk": "^5.1.6",
52
+ "@aptos-labs/ts-sdk": "^5.2.0",
53
53
  "@coral-xyz/anchor": "^0.29.0",
54
54
  "@mysten/bcs": "^1.9.2",
55
55
  "@mysten/sui": "^1.45.2",
56
56
  "@solana/spl-token": "0.4.14",
57
57
  "@solana/web3.js": "^1.98.4",
58
- "abitype": "1.2.1",
58
+ "@ton/core": "0.62.0",
59
+ "@ton/ton": "^16.1.0",
60
+ "abitype": "1.2.3",
59
61
  "bn.js": "^5.2.2",
60
62
  "borsh": "^2.0.0",
61
63
  "bs58": "^6.0.0",
62
64
  "ethers": "6.16.0",
63
65
  "micro-memoize": "^5.1.1",
64
- "type-fest": "^5.3.0",
66
+ "type-fest": "^5.3.1",
65
67
  "yaml": "2.8.2"
66
68
  },
67
69
  "overrides": {
68
70
  "bigint-buffer": "npm:@trufflesuite/bigint-buffer@1.1.10",
69
71
  "axios": "^1.13.2"
70
72
  }
71
- }
73
+ }
@@ -1,5 +1,9 @@
1
1
  import { concat, id, keccak256, zeroPadValue } from 'ethers'
2
2
 
3
+ import {
4
+ CCIPAptosHasherVersionUnsupportedError,
5
+ CCIPExtraArgsInvalidError,
6
+ } from '../errors/index.ts'
3
7
  import { decodeExtraArgs } from '../extra-args.ts'
4
8
  import { type LeafHasher, LEAF_DOMAIN_SEPARATOR } from '../hasher/common.ts'
5
9
  import { type CCIPMessage, type CCIPMessage_V1_6, CCIPVersion } from '../types.ts'
@@ -29,7 +33,7 @@ export function getAptosLeafHasher<V extends CCIPVersion = CCIPVersion>({
29
33
  return ((message: CCIPMessage<typeof CCIPVersion.V1_6>): string =>
30
34
  hashV16AptosMessage(message, metadataHash)) as LeafHasher<V>
31
35
  default:
32
- throw new Error(`Unsupported hasher version for Aptos: ${version as string}`)
36
+ throw new CCIPAptosHasherVersionUnsupportedError(version as string)
33
37
  }
34
38
  }
35
39
 
@@ -47,21 +51,21 @@ export function hashV16AptosMessage(
47
51
  if (!('gasLimit' in message)) {
48
52
  const parsedArgs = decodeExtraArgs(
49
53
  message.extraArgs,
50
- networkInfo(message.header.sourceChainSelector).family,
54
+ networkInfo(message.sourceChainSelector).family,
51
55
  )
52
56
  if (!parsedArgs || !('gasLimit' in parsedArgs))
53
- throw new Error('Invalid extraArgs, not EVMExtraArgsV1|2')
57
+ throw new CCIPExtraArgsInvalidError('Aptos', message.extraArgs)
54
58
  gasLimit = parsedArgs.gasLimit
55
59
  } else {
56
60
  gasLimit = message.gasLimit
57
61
  }
58
62
 
59
63
  const innerHash = concat([
60
- message.header.messageId,
64
+ message.messageId,
61
65
  zeroPadValue(message.receiver, 32),
62
- encodeNumber(message.header.sequenceNumber),
66
+ encodeNumber(message.sequenceNumber),
63
67
  encodeNumber(gasLimit), // Aptos as dest uses EVMExtraArgs
64
- encodeNumber(message.header.nonce),
68
+ encodeNumber(message.nonce),
65
69
  ])
66
70
 
67
71
  const tokenHash = concat([
@@ -21,8 +21,22 @@ import {
21
21
  import { memoize } from 'micro-memoize'
22
22
  import type { PickDeep, SetRequired } from 'type-fest'
23
23
 
24
- import { generateUnsignedCcipSend, getFee } from './send.ts'
25
24
  import { type LogFilter, type TokenInfo, type TokenPoolRemote, Chain } from '../chain.ts'
25
+ import { generateUnsignedCcipSend, getFee } from './send.ts'
26
+ import {
27
+ CCIPAptosAddressInvalidError,
28
+ CCIPAptosExtraArgsEncodingError,
29
+ CCIPAptosExtraArgsV2RequiredError,
30
+ CCIPAptosLogInvalidError,
31
+ CCIPAptosNetworkUnknownError,
32
+ CCIPAptosRegistryTypeInvalidError,
33
+ CCIPAptosTokenNotRegisteredError,
34
+ CCIPAptosTransactionInvalidError,
35
+ CCIPAptosTransactionTypeInvalidError,
36
+ CCIPAptosWalletInvalidError,
37
+ CCIPError,
38
+ CCIPOnRampRequiredError,
39
+ } from '../errors/index.ts'
26
40
  import {
27
41
  type EVMExtraArgsV2,
28
42
  type ExtraArgs,
@@ -30,6 +44,12 @@ import {
30
44
  EVMExtraArgsV2Tag,
31
45
  SVMExtraArgsV1Tag,
32
46
  } from '../extra-args.ts'
47
+ import {
48
+ type UnsignedAptosTx,
49
+ EVMExtraArgsV2Codec,
50
+ SVMExtraArgsV1Codec,
51
+ isAptosAccount,
52
+ } from './types.ts'
33
53
  import type { LeafHasher } from '../hasher/common.ts'
34
54
  import { supportedChains } from '../supported-chains.ts'
35
55
  import {
@@ -61,12 +81,6 @@ import { generateUnsignedExecuteReport } from './exec.ts'
61
81
  import { getAptosLeafHasher } from './hasher.ts'
62
82
  import { getUserTxByVersion, getVersionTimestamp, streamAptosLogs } from './logs.ts'
63
83
  import { getTokenInfo } from './token.ts'
64
- import {
65
- type UnsignedAptosTx,
66
- EVMExtraArgsV2Codec,
67
- SVMExtraArgsV1Codec,
68
- isAptosAccount,
69
- } from './types.ts'
70
84
  import type { CCIPMessage_V1_6_EVM } from '../evm/messages.ts'
71
85
  import {
72
86
  decodeMessage,
@@ -85,6 +99,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
85
99
  static readonly family = ChainFamily.Aptos
86
100
  static readonly decimals = 8
87
101
 
102
+ readonly destroy$: Promise<void>
88
103
  provider: Aptos
89
104
 
90
105
  getTokenInfo: (token: string) => Promise<TokenInfo>
@@ -98,7 +113,9 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
98
113
  constructor(provider: Aptos, network: NetworkInfo, ctx?: WithLogger) {
99
114
  super(network, ctx)
100
115
 
116
+ this.destroy$ = new Promise<void>((resolve) => (this.destroy = resolve))
101
117
  this.provider = provider
118
+
102
119
  this.typeAndVersion = memoize(this.typeAndVersion.bind(this), {
103
120
  maxSize: 100,
104
121
  maxArgs: 1,
@@ -172,7 +189,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
172
189
  else if (url.includes('mainnet')) network = Network.MAINNET
173
190
  else if (url.includes('testnet')) network = Network.TESTNET
174
191
  else if (url.includes('local')) network = Network.LOCAL
175
- else throw new Error(`Unknown Aptos network: ${util.inspect(url)}`)
192
+ else throw new CCIPAptosNetworkUnknownError(util.inspect(url))
176
193
  const config: AptosConfig = new AptosConfig({
177
194
  network,
178
195
  fullnode: typeof url === 'string' && url.includes('://') ? url : undefined,
@@ -196,9 +213,9 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
196
213
  } else if (!isNaN(+hashOrVersion)) {
197
214
  tx = await getUserTxByVersion(this.provider, +hashOrVersion)
198
215
  } else {
199
- throw new Error(`Invalid transaction hash or version: ${hashOrVersion}`)
216
+ throw new CCIPAptosTransactionInvalidError(hashOrVersion)
200
217
  }
201
- if (tx.type !== TransactionResponseType.User) throw new Error('Invalid transaction type')
218
+ if (tx.type !== TransactionResponseType.User) throw new CCIPAptosTransactionTypeInvalidError()
202
219
 
203
220
  return {
204
221
  hash: tx.hash,
@@ -218,7 +235,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
218
235
 
219
236
  /** {@inheritDoc Chain.getLogs} */
220
237
  async *getLogs(opts: LogFilter & { versionAsHash?: boolean }): AsyncIterableIterator<Log_> {
221
- yield* streamAptosLogs(this.provider, opts)
238
+ yield* streamAptosLogs(this, opts)
222
239
  }
223
240
 
224
241
  /** {@inheritDoc Chain.fetchRequestsInTx} */
@@ -232,7 +249,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
232
249
  onRamp?: string,
233
250
  opts?: { page?: number },
234
251
  ): Promise<CCIPRequest> {
235
- if (!onRamp) throw new Error('onRamp is required')
252
+ if (!onRamp) throw new CCIPOnRampRequiredError()
236
253
  return fetchCCIPRequestById(this, messageId, {
237
254
  address: await this.getOnRampForRouter(onRamp, 0n),
238
255
  ...opts,
@@ -243,7 +260,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
243
260
  async fetchAllMessagesInBatch<
244
261
  R extends PickDeep<
245
262
  CCIPRequest,
246
- 'lane' | `log.${'topics' | 'address' | 'blockNumber'}` | 'message.header.sequenceNumber'
263
+ 'lane' | `log.${'topics' | 'address' | 'blockNumber'}` | 'message.sequenceNumber'
247
264
  >,
248
265
  >(
249
266
  request: R,
@@ -325,7 +342,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
325
342
  firstErr ??= err as Error
326
343
  }
327
344
  }
328
- throw firstErr ?? new Error(`Could not view 'get_token' in ${tokenPool}`)
345
+ throw CCIPError.from(firstErr ?? `Could not view 'get_token' in ${tokenPool}`, 'UNKNOWN')
329
346
  }
330
347
 
331
348
  /** {@inheritDoc Chain.getTokenAdminRegistryFor} */
@@ -333,7 +350,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
333
350
  const registry = address.split('::')[0] + '::token_admin_registry'
334
351
  const [type] = await this.typeAndVersion(registry)
335
352
  if (type !== 'TokenAdminRegistry') {
336
- throw new Error(`Expected ${registry} to have TokenAdminRegistry type, got=${type}`)
353
+ throw new CCIPAptosRegistryTypeInvalidError(registry, type)
337
354
  }
338
355
  return registry
339
356
  }
@@ -351,7 +368,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
351
368
  (typeof data !== 'string' || !data.startsWith('{')) &&
352
369
  (typeof data !== 'object' || data == null || isBytesLike(data))
353
370
  )
354
- throw new Error(`invalid log data: ${util.inspect(log)}`)
371
+ throw new CCIPAptosLogInvalidError(util.inspect(log))
355
372
  // offload massaging to generic decodeJsonMessage
356
373
  try {
357
374
  return decodeMessage(data)
@@ -418,7 +435,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
418
435
  accounts: extraArgs.accounts.map(getAddressBytes),
419
436
  }).toBytes(),
420
437
  ])
421
- throw new Error('Aptos can only encode EVMExtraArgsV2 & SVMExtraArgsV1')
438
+ throw new CCIPAptosExtraArgsEncodingError()
422
439
  }
423
440
 
424
441
  /**
@@ -428,7 +445,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
428
445
  * @returns Array of CommitReport or undefined if not valid.
429
446
  */
430
447
  static decodeCommits({ data }: Pick<Log_, 'data'>, lane?: Lane): CommitReport[] | undefined {
431
- if (!data || typeof data != 'object') throw new Error('invalid aptos log')
448
+ if (!data || typeof data != 'object') throw new CCIPAptosLogInvalidError(data)
432
449
  const data_ = data as { blessed_merkle_roots: unknown[]; unblessed_merkle_roots: unknown[] }
433
450
  if (!data_.blessed_merkle_roots) return
434
451
  let commits = (
@@ -458,7 +475,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
458
475
  * @returns ExecutionReceipt or undefined if not valid.
459
476
  */
460
477
  static decodeReceipt({ data }: Pick<Log_, 'data'>): ExecutionReceipt | undefined {
461
- if (!data || typeof data != 'object') throw new Error('invalid aptos log')
478
+ if (!data || typeof data != 'object') throw new CCIPAptosLogInvalidError(data)
462
479
  const data_ = data as { message_id: string; state: number }
463
480
  if (!data_.message_id || !data_.state) return
464
481
  return convertKeysToCamelCase(data_, (v) =>
@@ -482,10 +499,17 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
482
499
  bytes = bytes.slice(0, idx)
483
500
  }
484
501
  }
485
- if (dataLength(bytes) > 32) throw new Error(`Invalid aptos address: "${hexlify(bytes)}"`)
502
+ if (dataLength(bytes) > 32) throw new CCIPAptosAddressInvalidError(hexlify(bytes))
486
503
  return zeroPadValue(bytes, 32) + suffix
487
504
  }
488
505
 
506
+ /**
507
+ * Validates a transaction hash format for Aptos
508
+ */
509
+ static isTxHash(v: unknown): v is `0x${string}` {
510
+ return typeof v === 'string' && /^0x[0-9a-fA-F]{64}$/.test(v)
511
+ }
512
+
489
513
  /**
490
514
  * Gets the leaf hasher for Aptos destination chains.
491
515
  * @param lane - Lane configuration.
@@ -532,9 +556,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
532
556
  ): Promise<CCIPRequest> {
533
557
  const account = opts.wallet
534
558
  if (!isAptosAccount(account)) {
535
- throw new Error(
536
- `${this.constructor.name}.sendMessage requires an Aptos account wallet, got=${util.inspect(opts.wallet)}`,
537
- )
559
+ throw new CCIPAptosWalletInvalidError(this.constructor.name, util.inspect(opts.wallet))
538
560
  }
539
561
 
540
562
  const unsignedTx = await this.generateUnsignedSendMessage(
@@ -576,7 +598,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
576
598
  opts: { gasLimit?: number },
577
599
  ): Promise<UnsignedAptosTx> {
578
600
  if (!('allowOutOfOrderExecution' in execReport.message && 'gasLimit' in execReport.message)) {
579
- throw new Error('Aptos expects EVMExtraArgsV2 reports')
601
+ throw new CCIPAptosExtraArgsV2RequiredError()
580
602
  }
581
603
 
582
604
  const tx = await generateUnsignedExecuteReport(
@@ -600,9 +622,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
600
622
  ): Promise<ChainTransaction> {
601
623
  const account = opts.wallet
602
624
  if (!isAptosAccount(account)) {
603
- throw new Error(
604
- `${this.constructor.name}.sendMessage requires an Aptos account wallet, got=${util.inspect(opts.wallet)}`,
605
- )
625
+ throw new CCIPAptosWalletInvalidError(this.constructor.name, util.inspect(opts.wallet))
606
626
  }
607
627
 
608
628
  const unsignedTx = await this.generateUnsignedExecuteReport(
@@ -676,8 +696,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
676
696
  functionArguments: [token],
677
697
  },
678
698
  })
679
- if (administrator.match(/^0x0*$/))
680
- throw new Error(`Token=${token} not registered in registry=${registry}`)
699
+ if (administrator.match(/^0x0*$/)) throw new CCIPAptosTokenNotRegisteredError(token, registry)
681
700
  return {
682
701
  administrator,
683
702
  ...(!pendingAdministrator.match(/^0x0*$/) && { pendingAdministrator }),
@@ -721,7 +740,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
721
740
  firstErr ??= err as Error
722
741
  }
723
742
  }
724
- throw firstErr ?? new Error(`Could not get tokenPool configs from ${tokenPool}`)
743
+ throw CCIPError.from(firstErr ?? `Could not get tokenPool configs from ${tokenPool}`, 'UNKNOWN')
725
744
  }
726
745
 
727
746
  /** {@inheritDoc Chain.getTokenPoolRemotes} */
@@ -818,7 +837,7 @@ export class AptosChain extends Chain<typeof ChainFamily.Aptos> {
818
837
  firstErr ??= err as Error
819
838
  }
820
839
  }
821
- throw firstErr ?? new Error(`Could not view 'get_remote_token' in ${tokenPool}`)
840
+ throw CCIPError.from(firstErr ?? `Could not view 'get_remote_token' in ${tokenPool}`, 'UNKNOWN')
822
841
  }
823
842
 
824
843
  /** {@inheritDoc Chain.getFeeTokens} */