@chainlink/ccip-sdk 0.95.0 → 0.96.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 (115) hide show
  1. package/README.md +2 -2
  2. package/dist/all-chains.d.ts +23 -0
  3. package/dist/all-chains.d.ts.map +1 -0
  4. package/dist/all-chains.js +24 -0
  5. package/dist/all-chains.js.map +1 -0
  6. package/dist/api/index.d.ts +15 -12
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/index.js +20 -16
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/types.d.ts +25 -29
  11. package/dist/api/types.d.ts.map +1 -1
  12. package/dist/aptos/index.d.ts +33 -8
  13. package/dist/aptos/index.d.ts.map +1 -1
  14. package/dist/aptos/index.js +74 -41
  15. package/dist/aptos/index.js.map +1 -1
  16. package/dist/chain.d.ts +220 -41
  17. package/dist/chain.d.ts.map +1 -1
  18. package/dist/chain.js +105 -15
  19. package/dist/chain.js.map +1 -1
  20. package/dist/errors/codes.d.ts +2 -0
  21. package/dist/errors/codes.d.ts.map +1 -1
  22. package/dist/errors/codes.js +2 -0
  23. package/dist/errors/codes.js.map +1 -1
  24. package/dist/errors/index.d.ts +1 -1
  25. package/dist/errors/index.d.ts.map +1 -1
  26. package/dist/errors/index.js +1 -1
  27. package/dist/errors/index.js.map +1 -1
  28. package/dist/errors/recovery.d.ts.map +1 -1
  29. package/dist/errors/recovery.js +2 -0
  30. package/dist/errors/recovery.js.map +1 -1
  31. package/dist/errors/specialized.d.ts +12 -6
  32. package/dist/errors/specialized.d.ts.map +1 -1
  33. package/dist/errors/specialized.js +19 -7
  34. package/dist/errors/specialized.js.map +1 -1
  35. package/dist/evm/extra-args.d.ts +25 -0
  36. package/dist/evm/extra-args.d.ts.map +1 -0
  37. package/dist/evm/extra-args.js +328 -0
  38. package/dist/evm/extra-args.js.map +1 -0
  39. package/dist/evm/gas.d.ts.map +1 -1
  40. package/dist/evm/gas.js +7 -12
  41. package/dist/evm/gas.js.map +1 -1
  42. package/dist/evm/index.d.ts +70 -24
  43. package/dist/evm/index.d.ts.map +1 -1
  44. package/dist/evm/index.js +72 -91
  45. package/dist/evm/index.js.map +1 -1
  46. package/dist/execution.d.ts.map +1 -1
  47. package/dist/execution.js +16 -2
  48. package/dist/execution.js.map +1 -1
  49. package/dist/extra-args.d.ts +103 -4
  50. package/dist/extra-args.d.ts.map +1 -1
  51. package/dist/extra-args.js +28 -3
  52. package/dist/extra-args.js.map +1 -1
  53. package/dist/gas.d.ts +6 -3
  54. package/dist/gas.d.ts.map +1 -1
  55. package/dist/gas.js +14 -6
  56. package/dist/gas.js.map +1 -1
  57. package/dist/index.d.ts +10 -9
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +8 -8
  60. package/dist/index.js.map +1 -1
  61. package/dist/requests.d.ts +17 -9
  62. package/dist/requests.d.ts.map +1 -1
  63. package/dist/requests.js +17 -9
  64. package/dist/requests.js.map +1 -1
  65. package/dist/selectors.d.ts.map +1 -1
  66. package/dist/selectors.js +12 -0
  67. package/dist/selectors.js.map +1 -1
  68. package/dist/solana/index.d.ts +70 -15
  69. package/dist/solana/index.d.ts.map +1 -1
  70. package/dist/solana/index.js +72 -16
  71. package/dist/solana/index.js.map +1 -1
  72. package/dist/sui/index.d.ts +37 -9
  73. package/dist/sui/index.d.ts.map +1 -1
  74. package/dist/sui/index.js +40 -11
  75. package/dist/sui/index.js.map +1 -1
  76. package/dist/ton/index.d.ts +65 -19
  77. package/dist/ton/index.d.ts.map +1 -1
  78. package/dist/ton/index.js +155 -25
  79. package/dist/ton/index.js.map +1 -1
  80. package/dist/ton/send.d.ts +52 -0
  81. package/dist/ton/send.d.ts.map +1 -0
  82. package/dist/ton/send.js +166 -0
  83. package/dist/ton/send.js.map +1 -0
  84. package/dist/types.d.ts +102 -1
  85. package/dist/types.d.ts.map +1 -1
  86. package/dist/types.js.map +1 -1
  87. package/dist/utils.d.ts +15 -3
  88. package/dist/utils.d.ts.map +1 -1
  89. package/dist/utils.js +19 -6
  90. package/dist/utils.js.map +1 -1
  91. package/package.json +12 -7
  92. package/src/all-chains.ts +26 -0
  93. package/src/api/index.ts +26 -25
  94. package/src/api/types.ts +25 -30
  95. package/src/aptos/index.ts +79 -43
  96. package/src/chain.ts +274 -46
  97. package/src/errors/codes.ts +2 -0
  98. package/src/errors/index.ts +1 -1
  99. package/src/errors/recovery.ts +2 -0
  100. package/src/errors/specialized.ts +24 -7
  101. package/src/evm/extra-args.ts +377 -0
  102. package/src/evm/gas.ts +14 -13
  103. package/src/evm/index.ts +76 -125
  104. package/src/execution.ts +18 -2
  105. package/src/extra-args.ts +108 -4
  106. package/src/gas.ts +16 -9
  107. package/src/index.ts +12 -9
  108. package/src/requests.ts +17 -9
  109. package/src/selectors.ts +12 -0
  110. package/src/solana/index.ts +72 -16
  111. package/src/sui/index.ts +40 -11
  112. package/src/ton/index.ts +192 -27
  113. package/src/ton/send.ts +222 -0
  114. package/src/types.ts +103 -1
  115. package/src/utils.ts +19 -6
@@ -0,0 +1,328 @@
1
+ import { Result, concat, dataSlice, encodeBase58, getAddress, hexlify, toBeHex, toBigInt, toNumber, zeroPadValue, } from 'ethers';
2
+ import { EVMExtraArgsV1Tag, EVMExtraArgsV2Tag, GenericExtraArgsV3Tag, SVMExtraArgsV1Tag, SuiExtraArgsV1Tag, } from "../extra-args.js";
3
+ import { getAddressBytes, getDataBytes } from "../utils.js";
4
+ import { DEFAULT_GAS_LIMIT, defaultAbiCoder } from "./const.js";
5
+ // ABI type strings for extra args encoding
6
+ const EVMExtraArgsV1ABI = 'tuple(uint256 gasLimit)';
7
+ const EVMExtraArgsV2ABI = 'tuple(uint256 gasLimit, bool allowOutOfOrderExecution)';
8
+ const SVMExtraArgsV1ABI = 'tuple(uint32 computeUnits, uint64 accountIsWritableBitmap, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] accounts)';
9
+ const SuiExtraArgsV1ABI = 'tuple(uint256 gasLimit, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] receiverObjectIds)';
10
+ /**
11
+ * Converts an ethers Result to a plain object.
12
+ * @internal
13
+ */
14
+ function resultToObject(o) {
15
+ if (o instanceof Promise)
16
+ return o.then(resultToObject);
17
+ if (!(o instanceof Result))
18
+ return o;
19
+ if (o.length === 0)
20
+ return o.toArray();
21
+ try {
22
+ const obj = o.toObject();
23
+ if (!Object.keys(obj).every((k) => /^_+\d*$/.test(k)))
24
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, resultToObject(v)]));
25
+ }
26
+ catch (_) {
27
+ // fallthrough
28
+ }
29
+ return o.toArray().map(resultToObject);
30
+ }
31
+ /**
32
+ * Encodes GenericExtraArgsV3 using tightly packed binary format.
33
+ *
34
+ * Binary format:
35
+ * - tag (4 bytes): 0x302326cb
36
+ * - gasLimit (4 bytes): uint32 big-endian
37
+ * - blockConfirmations (2 bytes): uint16 big-endian
38
+ * - ccvsLength (1 byte): uint8
39
+ * - For each CCV:
40
+ * - ccvAddressLength (1 byte): 0 or 20
41
+ * - ccvAddress (0 or 20 bytes)
42
+ * - ccvArgsLength (2 bytes): uint16 big-endian
43
+ * - ccvArgs (variable)
44
+ * - executorLength (1 byte): 0 or 20
45
+ * - executor (0 or 20 bytes)
46
+ * - executorArgsLength (2 bytes): uint16 big-endian
47
+ * - executorArgs (variable)
48
+ * - tokenReceiverLength (1 byte): uint8
49
+ * - tokenReceiver (variable)
50
+ * - tokenArgsLength (2 bytes): uint16 big-endian
51
+ * - tokenArgs (variable)
52
+ */
53
+ function encodeExtraArgsV3(args) {
54
+ const parts = [];
55
+ // Tag (4 bytes)
56
+ parts.push(getDataBytes(GenericExtraArgsV3Tag));
57
+ // gasLimit (4 bytes, uint32 big-endian)
58
+ parts.push(getDataBytes(toBeHex(args.gasLimit, 4)));
59
+ // blockConfirmations (2 bytes, uint16 big-endian)
60
+ parts.push(getDataBytes(toBeHex(args.blockConfirmations, 2)));
61
+ // ccvsLength (1 byte)
62
+ parts.push(new Uint8Array([args.ccvs.length]));
63
+ // For each CCV
64
+ for (let i = 0; i < args.ccvs.length; i++) {
65
+ const ccvAddress = args.ccvs[i];
66
+ const ccvArgsBytes = getDataBytes(args.ccvArgs[i] ?? '0x');
67
+ if (ccvAddress && ccvAddress !== '' && ccvAddress !== '0x') {
68
+ // ccvAddressLength = 20
69
+ parts.push(new Uint8Array([20]));
70
+ // ccvAddress (20 bytes)
71
+ parts.push(getDataBytes(ccvAddress));
72
+ }
73
+ else {
74
+ // ccvAddressLength = 0
75
+ parts.push(new Uint8Array([0]));
76
+ }
77
+ // ccvArgsLength (2 bytes, uint16 big-endian)
78
+ parts.push(getDataBytes(toBeHex(ccvArgsBytes.length, 2)));
79
+ // ccvArgs (variable)
80
+ if (ccvArgsBytes.length > 0) {
81
+ parts.push(ccvArgsBytes);
82
+ }
83
+ }
84
+ // executorLength (1 byte)
85
+ if (args.executor && args.executor !== '' && args.executor !== '0x') {
86
+ parts.push(new Uint8Array([20]));
87
+ parts.push(getDataBytes(args.executor));
88
+ }
89
+ else {
90
+ parts.push(new Uint8Array([0]));
91
+ }
92
+ // Convert BytesLike fields to Uint8Array
93
+ const executorArgsBytes = getDataBytes(args.executorArgs);
94
+ const tokenReceiverBytes = getDataBytes(args.tokenReceiver);
95
+ const tokenArgsBytes = getDataBytes(args.tokenArgs);
96
+ // executorArgsLength (2 bytes, uint16 big-endian)
97
+ parts.push(getDataBytes(toBeHex(executorArgsBytes.length, 2)));
98
+ // executorArgs (variable)
99
+ if (executorArgsBytes.length > 0) {
100
+ parts.push(executorArgsBytes);
101
+ }
102
+ // tokenReceiverLength (1 byte)
103
+ parts.push(new Uint8Array([tokenReceiverBytes.length]));
104
+ // tokenReceiver (variable)
105
+ if (tokenReceiverBytes.length > 0) {
106
+ parts.push(tokenReceiverBytes);
107
+ }
108
+ // tokenArgsLength (2 bytes, uint16 big-endian)
109
+ parts.push(getDataBytes(toBeHex(tokenArgsBytes.length, 2)));
110
+ // tokenArgs (variable)
111
+ if (tokenArgsBytes.length > 0) {
112
+ parts.push(tokenArgsBytes);
113
+ }
114
+ return hexlify(concat(parts));
115
+ }
116
+ /**
117
+ * Decodes GenericExtraArgsV3 from tightly packed binary format.
118
+ * @param data - Bytes to decode (without the tag prefix).
119
+ * @returns Decoded GenericExtraArgsV3 or undefined if parsing fails.
120
+ */
121
+ function decodeExtraArgsV3(data) {
122
+ let offset = 0;
123
+ // gasLimit (4 bytes, uint32 big-endian)
124
+ if (offset + 4 > data.length)
125
+ return undefined;
126
+ const gasLimit = toBigInt(data.subarray(offset, offset + 4));
127
+ offset += 4;
128
+ // blockConfirmations (2 bytes, uint16 big-endian)
129
+ if (offset + 2 > data.length)
130
+ return undefined;
131
+ const blockConfirmations = toNumber(data.subarray(offset, offset + 2));
132
+ offset += 2;
133
+ // ccvsLength (1 byte)
134
+ if (offset + 1 > data.length)
135
+ return undefined;
136
+ const ccvsLength = data[offset];
137
+ offset += 1;
138
+ const ccvs = [];
139
+ const ccvArgs = [];
140
+ // For each CCV
141
+ for (let i = 0; i < ccvsLength; i++) {
142
+ // ccvAddressLength (1 byte)
143
+ if (offset + 1 > data.length)
144
+ return undefined;
145
+ const ccvAddrLen = data[offset];
146
+ offset += 1;
147
+ // ccvAddress (0 or 20 bytes)
148
+ if (ccvAddrLen === 20) {
149
+ if (offset + 20 > data.length)
150
+ return undefined;
151
+ ccvs.push(getAddress(hexlify(data.slice(offset, offset + 20))));
152
+ offset += 20;
153
+ }
154
+ else if (ccvAddrLen === 0) {
155
+ ccvs.push('');
156
+ }
157
+ else {
158
+ return undefined; // Invalid address length
159
+ }
160
+ // ccvArgsLength (2 bytes, uint16 big-endian)
161
+ if (offset + 2 > data.length)
162
+ return undefined;
163
+ const ccvArgsLen = toNumber(data.subarray(offset, offset + 2));
164
+ offset += 2;
165
+ // ccvArgs (variable)
166
+ if (offset + ccvArgsLen > data.length)
167
+ return undefined;
168
+ ccvArgs.push(hexlify(data.slice(offset, offset + ccvArgsLen)));
169
+ offset += ccvArgsLen;
170
+ }
171
+ // executorLength (1 byte)
172
+ if (offset + 1 > data.length)
173
+ return undefined;
174
+ const executorLen = data[offset];
175
+ offset += 1;
176
+ // executor (0 or 20 bytes)
177
+ let executor = '';
178
+ if (executorLen === 20) {
179
+ if (offset + 20 > data.length)
180
+ return undefined;
181
+ executor = getAddress(hexlify(data.slice(offset, offset + 20)));
182
+ offset += 20;
183
+ }
184
+ else if (executorLen !== 0) {
185
+ return undefined; // Invalid executor length
186
+ }
187
+ // executorArgsLength (2 bytes, uint16 big-endian)
188
+ if (offset + 2 > data.length)
189
+ return undefined;
190
+ const executorArgsLen = toNumber(data.subarray(offset, offset + 2));
191
+ offset += 2;
192
+ // executorArgs (variable)
193
+ if (offset + executorArgsLen > data.length)
194
+ return undefined;
195
+ const executorArgs = hexlify(data.slice(offset, offset + executorArgsLen));
196
+ offset += executorArgsLen;
197
+ // tokenReceiverLength (1 byte)
198
+ if (offset + 1 > data.length)
199
+ return undefined;
200
+ const tokenReceiverLen = data[offset];
201
+ offset += 1;
202
+ // tokenReceiver (variable)
203
+ if (offset + tokenReceiverLen > data.length)
204
+ return undefined;
205
+ const tokenReceiverBytes = data.slice(offset, offset + tokenReceiverLen);
206
+ offset += tokenReceiverLen;
207
+ // Convert tokenReceiver bytes to string
208
+ let tokenReceiver;
209
+ if (tokenReceiverLen === 0) {
210
+ tokenReceiver = '';
211
+ }
212
+ else if (tokenReceiverLen === 20) {
213
+ // 20 bytes = EVM address, return checksummed
214
+ tokenReceiver = getAddress(hexlify(tokenReceiverBytes));
215
+ }
216
+ else {
217
+ // Other lengths: return as hex string
218
+ tokenReceiver = hexlify(tokenReceiverBytes);
219
+ }
220
+ // tokenArgsLength (2 bytes, uint16 big-endian)
221
+ if (offset + 2 > data.length)
222
+ return undefined;
223
+ const tokenArgsLen = toNumber(data.subarray(offset, offset + 2));
224
+ offset += 2;
225
+ // tokenArgs (variable)
226
+ if (offset + tokenArgsLen > data.length)
227
+ return undefined;
228
+ const tokenArgs = hexlify(data.slice(offset, offset + tokenArgsLen));
229
+ offset += tokenArgsLen;
230
+ return {
231
+ gasLimit,
232
+ blockConfirmations,
233
+ ccvs,
234
+ ccvArgs,
235
+ executor,
236
+ executorArgs,
237
+ tokenReceiver,
238
+ tokenArgs,
239
+ };
240
+ }
241
+ /**
242
+ * Decodes extra arguments from a CCIP message.
243
+ * @param extraArgs - Encoded extra arguments bytes.
244
+ * @returns Decoded extra arguments with tag, or undefined if unknown format.
245
+ */
246
+ export function decodeExtraArgs(extraArgs) {
247
+ const data = getDataBytes(extraArgs), tag = dataSlice(data, 0, 4);
248
+ switch (tag) {
249
+ case EVMExtraArgsV1Tag: {
250
+ const args = defaultAbiCoder.decode([EVMExtraArgsV1ABI], dataSlice(data, 4));
251
+ return { ...resultToObject(args[0]), _tag: 'EVMExtraArgsV1' };
252
+ }
253
+ case EVMExtraArgsV2Tag: {
254
+ const args = defaultAbiCoder.decode([EVMExtraArgsV2ABI], dataSlice(data, 4));
255
+ return { ...resultToObject(args[0]), _tag: 'EVMExtraArgsV2' };
256
+ }
257
+ case GenericExtraArgsV3Tag: {
258
+ const parsed = decodeExtraArgsV3(data.slice(4));
259
+ if (!parsed)
260
+ return undefined;
261
+ return { ...parsed, _tag: 'GenericExtraArgsV3' };
262
+ }
263
+ case SVMExtraArgsV1Tag: {
264
+ const args = defaultAbiCoder.decode([SVMExtraArgsV1ABI], dataSlice(data, 4));
265
+ const parsed = resultToObject(args[0]);
266
+ parsed.tokenReceiver = encodeBase58(parsed.tokenReceiver);
267
+ parsed.accounts = parsed.accounts.map((a) => encodeBase58(a));
268
+ return { ...parsed, _tag: 'SVMExtraArgsV1' };
269
+ }
270
+ case SuiExtraArgsV1Tag: {
271
+ const args = defaultAbiCoder.decode([SuiExtraArgsV1ABI], dataSlice(data, 4));
272
+ const parsed = resultToObject(args[0]);
273
+ return {
274
+ ...parsed,
275
+ _tag: 'SuiExtraArgsV1',
276
+ };
277
+ }
278
+ default:
279
+ return undefined;
280
+ }
281
+ }
282
+ /**
283
+ * Encodes extra arguments for a CCIP message.
284
+ * @param args - Extra arguments to encode.
285
+ * @returns Encoded extra arguments as hex string.
286
+ */
287
+ export function encodeExtraArgs(args) {
288
+ if (!args)
289
+ return '0x';
290
+ if ('blockConfirmations' in args) {
291
+ // GenericExtraArgsV3 - tightly packed binary encoding
292
+ return encodeExtraArgsV3(args);
293
+ }
294
+ else if ('computeUnits' in args) {
295
+ return concat([
296
+ SVMExtraArgsV1Tag,
297
+ defaultAbiCoder.encode([SVMExtraArgsV1ABI], [
298
+ {
299
+ ...args,
300
+ tokenReceiver: getAddressBytes(args.tokenReceiver),
301
+ accounts: args.accounts.map((a) => getAddressBytes(a)),
302
+ },
303
+ ]),
304
+ ]);
305
+ }
306
+ else if ('receiverObjectIds' in args) {
307
+ return concat([
308
+ SuiExtraArgsV1Tag,
309
+ defaultAbiCoder.encode([SuiExtraArgsV1ABI], [
310
+ {
311
+ ...args,
312
+ tokenReceiver: zeroPadValue(getAddressBytes(args.tokenReceiver), 32),
313
+ receiverObjectIds: args.receiverObjectIds.map((a) => getDataBytes(a)),
314
+ },
315
+ ]),
316
+ ]);
317
+ }
318
+ else if ('allowOutOfOrderExecution' in args) {
319
+ if (args.gasLimit == null)
320
+ args.gasLimit = DEFAULT_GAS_LIMIT;
321
+ return concat([EVMExtraArgsV2Tag, defaultAbiCoder.encode([EVMExtraArgsV2ABI], [args])]);
322
+ }
323
+ else if (args.gasLimit != null) {
324
+ return concat([EVMExtraArgsV1Tag, defaultAbiCoder.encode([EVMExtraArgsV1ABI], [args])]);
325
+ }
326
+ return '0x';
327
+ }
328
+ //# sourceMappingURL=extra-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extra-args.js","sourceRoot":"","sources":["../../src/evm/extra-args.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAWxB,MAAM,QAAQ,CAAA;AAIf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AA8DxC,KAAK,mBAAmB,GAAG,IAAI,CAC7B,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7D,SAAS,GAAG,UAAU,CACvB,GAAG;IAEF,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,EACpC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,OAAO,GACR,EAAE,mBAAmB,mBAmDrB"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAWxB,MAAM,QAAQ,CAAA;AAIf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AA+DxC,KAAK,mBAAmB,GAAG,IAAI,CAC7B,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7D,SAAS,GAAG,UAAU,CACvB,GAAG;IAEF,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,EACpC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,OAAO,GACR,EAAE,mBAAmB,mBAmDrB"}
package/dist/evm/gas.js CHANGED
@@ -11,30 +11,25 @@ const ccipReceive = FunctionFragment.from({
11
11
  inputs: RouterABI.find((v) => v.type === 'function' && v.name === 'routeMessage').inputs.slice(0, 1),
12
12
  outputs: [],
13
13
  });
14
- const transferFragment = interfaces.Token.getFunction('transfer');
15
14
  /**
16
15
  * Finds suitable token balance slot by simulating a fake transfer between 2 non-existent accounts,
17
16
  * with state overrides for the holders' balance, which reverts if override slot is wrong
18
17
  */
19
- const findBalancesSlot = memoize(async function findBalancesSlot_(token, provider) {
20
- const fakeHolder = getAddress(hexlify(randomBytes(20)));
21
- const fakeRecipient = getAddress(hexlify(randomBytes(20)));
22
- const fakeAmount = 1e7;
23
- const calldata = concat([
24
- transferFragment.selector,
25
- defaultAbiCoder.encode(transferFragment.inputs, [fakeRecipient, fakeAmount]),
26
- ]);
18
+ const findBalancesSlot = memoize(async function findBalancesSlot_(token, provider, holder = getAddress(hexlify(randomBytes(20))), recipient = getAddress(hexlify(randomBytes(20)))) {
19
+ const contract = new Contract(token, interfaces.Token, provider);
20
+ const fakeAmount = (await contract.totalSupply()) + 1n;
21
+ const calldata = interfaces.Token.encodeFunctionData('transfer', [recipient, fakeAmount]);
27
22
  let firstErr;
28
23
  // try range(0..15), but start with most probable 0 (common ERC20) and 9 (USDC)
29
24
  for (const slot of [0, 9, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15]) {
30
25
  try {
31
26
  await provider.send('eth_estimateGas', [
32
- { from: fakeHolder, to: token, data: calldata },
27
+ { from: holder, to: token, data: calldata },
33
28
  'latest',
34
29
  {
35
30
  [token]: {
36
31
  stateDiff: {
37
- [solidityPackedKeccak256(['uint256', 'uint256'], [fakeHolder, slot])]: toBeHex(fakeAmount, 32),
32
+ [solidityPackedKeccak256(['uint256', 'uint256'], [holder, slot])]: toBeHex(fakeAmount, 32),
38
33
  },
39
34
  },
40
35
  },
@@ -64,7 +59,7 @@ export async function estimateExecGas({ provider, router, receiver, message, })
64
59
  destAmounts[token] = currentBalance;
65
60
  }
66
61
  destAmounts[token] += amount;
67
- const balancesSlot = await findBalancesSlot(token, provider);
62
+ const balancesSlot = await findBalancesSlot(token, provider, receiver, router);
68
63
  stateOverrides[token] = {
69
64
  stateDiff: {
70
65
  [solidityPackedKeccak256(['uint256', 'uint256'], [receiver, balancesSlot])]: toBeHex(destAmounts[token], 32),
@@ -1 +1 @@
1
- {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,11 @@
1
1
  import { type BytesLike, type JsonRpcApiProvider, type Log, type TransactionReceipt } from 'ethers';
2
2
  import type { PickDeep } from 'type-fest';
3
3
  import { type ChainContext, type GetBalanceOpts, type LogFilter, type TokenPoolRemote, Chain } from '../chain.ts';
4
- import { type EVMExtraArgsV1, type EVMExtraArgsV2, type ExtraArgs, type SVMExtraArgsV1, type SuiExtraArgsV1 } from '../extra-args.ts';
4
+ import type { ExtraArgs } from '../extra-args.ts';
5
5
  import type { LeafHasher } from '../hasher/common.ts';
6
6
  import { type CCIPExecution, type CCIPMessage, type CCIPRequest, type ChainTransaction, type CommitReport, type ExecutionReceipt, type Lane, type NetworkInfo, type OffchainTokenData, type WithLogger, ChainFamily } from '../types.ts';
7
7
  import type { UnsignedEVMTx } from './types.ts';
8
8
  export type { UnsignedEVMTx };
9
- declare const EVMExtraArgsV1 = "tuple(uint256 gasLimit)";
10
- declare const EVMExtraArgsV2 = "tuple(uint256 gasLimit, bool allowOutOfOrderExecution)";
11
- declare const SVMExtraArgsV1 = "tuple(uint32 computeUnits, uint64 accountIsWritableBitmap, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] accounts)";
12
- declare const SuiExtraArgsV1 = "tuple(uint256 gasLimit, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] receiverObjectIds)";
13
9
  /**
14
10
  * EVM chain implementation supporting Ethereum-compatible networks.
15
11
  */
@@ -66,6 +62,8 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
66
62
  * Decodes a CCIP message from a log event.
67
63
  * @param log - Log event with topics and data.
68
64
  * @returns Decoded CCIPMessage or undefined if not a valid CCIP message.
65
+ * @throws {@link CCIPLogDataInvalidError} if log data is not valid bytes
66
+ * @throws {@link CCIPMessageDecodeError} if message cannot be decoded
69
67
  */
70
68
  static decodeMessage(log: {
71
69
  topics?: readonly string[];
@@ -76,6 +74,8 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
76
74
  * @param log - Log event with topics and data.
77
75
  * @param lane - Lane info (required for CCIP v1.5 and earlier).
78
76
  * @returns Array of CommitReport or undefined if not a valid commit event.
77
+ * @throws {@link CCIPLogDataInvalidError} if log data is not valid bytes
78
+ * @throws {@link CCIPVersionRequiresLaneError} if CCIP v1.5 event but no lane provided
79
79
  */
80
80
  static decodeCommits(log: {
81
81
  topics?: readonly string[];
@@ -85,6 +85,7 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
85
85
  * Decodes an execution receipt from a log event.
86
86
  * @param log - Log event with topics and data.
87
87
  * @returns ExecutionReceipt or undefined if not a valid execution event.
88
+ * @throws {@link CCIPLogDataInvalidError} if log data is not valid bytes
88
89
  */
89
90
  static decodeReceipt(log: {
90
91
  topics?: readonly string[];
@@ -95,14 +96,23 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
95
96
  * @param extraArgs - Encoded extra arguments bytes.
96
97
  * @returns Decoded extra arguments with tag, or undefined if unknown format.
97
98
  */
98
- static decodeExtraArgs(extraArgs: BytesLike): (EVMExtraArgsV1 & {
99
- _tag: 'EVMExtraArgsV1';
100
- }) | (EVMExtraArgsV2 & {
101
- _tag: 'EVMExtraArgsV2';
102
- }) | (SVMExtraArgsV1 & {
103
- _tag: 'SVMExtraArgsV1';
104
- }) | (SuiExtraArgsV1 & {
105
- _tag: 'SuiExtraArgsV1';
99
+ static decodeExtraArgs(extraArgs: BytesLike): (import("../extra-args.ts").EVMExtraArgsV1 & {
100
+ _tag: "EVMExtraArgsV1";
101
+ }) | (import("../extra-args.ts").EVMExtraArgsV1 & {
102
+ allowOutOfOrderExecution: boolean;
103
+ } & {
104
+ _tag: "EVMExtraArgsV2";
105
+ }) | (import("../extra-args.ts").GenericExtraArgsV3 & {
106
+ _tag: "GenericExtraArgsV3";
107
+ }) | (import("../extra-args.ts").SVMExtraArgsV1 & {
108
+ _tag: "SVMExtraArgsV1";
109
+ }) | (import("../extra-args.ts").EVMExtraArgsV1 & {
110
+ allowOutOfOrderExecution: boolean;
111
+ } & {
112
+ tokenReceiver: string;
113
+ receiverObjectIds: string[];
114
+ } & {
115
+ _tag: "SuiExtraArgsV1";
106
116
  }) | undefined;
107
117
  /**
108
118
  * Encodes extra arguments for a CCIP message.
@@ -114,6 +124,7 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
114
124
  * Converts bytes to a checksummed EVM address.
115
125
  * @param bytes - Bytes to convert (must be 20 bytes or 32 bytes with leading zeros).
116
126
  * @returns Checksummed EVM address.
127
+ * @throws {@link CCIPAddressInvalidEvmError} if bytes cannot be converted to a valid EVM address
117
128
  */
118
129
  static getAddress(bytes: BytesLike): string;
119
130
  /**
@@ -124,11 +135,18 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
124
135
  * Gets lane configuration from an OnRamp contract.
125
136
  * @param onRamp - OnRamp contract address.
126
137
  * @returns Lane configuration.
138
+ * @throws {@link CCIPContractTypeInvalidError} if contract doesn't have destChainSelector
127
139
  */
128
140
  getLaneForOnRamp(onRamp: string): Promise<Lane>;
129
- /** {@inheritDoc Chain.getRouterForOnRamp} */
141
+ /**
142
+ * {@inheritDoc Chain.getRouterForOnRamp}
143
+ * @throws {@link CCIPVersionUnsupportedError} if OnRamp version is not supported
144
+ */
130
145
  getRouterForOnRamp(onRamp: string, destChainSelector: bigint): Promise<string>;
131
- /** {@inheritDoc Chain.getRouterForOffRamp} */
146
+ /**
147
+ * {@inheritDoc Chain.getRouterForOffRamp}
148
+ * @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
149
+ */
132
150
  getRouterForOffRamp(offRamp: string, sourceChainSelector: bigint): Promise<string>;
133
151
  /** {@inheritDoc Chain.getNativeTokenForRouter} */
134
152
  getNativeTokenForRouter(router: string): Promise<string>;
@@ -136,9 +154,15 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
136
154
  getOffRampsForRouter(router: string, sourceChainSelector: bigint): Promise<string[]>;
137
155
  /** {@inheritDoc Chain.getOnRampForRouter} */
138
156
  getOnRampForRouter(router: string, destChainSelector: bigint): Promise<string>;
139
- /** {@inheritDoc Chain.getOnRampForOffRamp} */
157
+ /**
158
+ * {@inheritDoc Chain.getOnRampForOffRamp}
159
+ * @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
160
+ */
140
161
  getOnRampForOffRamp(offRamp: string, sourceChainSelector: bigint): Promise<string>;
141
- /** {@inheritDoc Chain.getCommitStoreForOffRamp} */
162
+ /**
163
+ * {@inheritDoc Chain.getCommitStoreForOffRamp}
164
+ * @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
165
+ */
142
166
  getCommitStoreForOffRamp(offRamp: string): Promise<string>;
143
167
  /** {@inheritDoc Chain.getTokenForTokenPool} */
144
168
  getTokenForTokenPool(tokenPool: string): Promise<string>;
@@ -155,6 +179,8 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
155
179
  * @param lane - Lane configuration.
156
180
  * @param ctx - Context object containing logger.
157
181
  * @returns Leaf hasher function.
182
+ * @throws {@link CCIPSourceChainUnsupportedError} if source chain is not EVM for v1.2/v1.5
183
+ * @throws {@link CCIPHasherVersionUnsupportedError} if lane version is not supported
158
184
  */
159
185
  static getDestLeafHasher({ sourceChainSelector, destChainSelector, onRamp, version }: Lane, ctx?: WithLogger): LeafHasher;
160
186
  /**
@@ -163,13 +189,18 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
163
189
  * @returns OnRamp contract address.
164
190
  */
165
191
  _getSomeOnRampFor(router: string): Promise<string>;
166
- /** {@inheritDoc Chain.getTokenAdminRegistryFor} */
192
+ /**
193
+ * {@inheritDoc Chain.getTokenAdminRegistryFor}
194
+ * @throws {@link CCIPContractNotRouterError} if address is not a Router, OnRamp, or OffRamp
195
+ */
167
196
  getTokenAdminRegistryFor(address: string): Promise<string>;
168
197
  /**
169
198
  * Gets the FeeQuoter contract address for a given Router or Ramp.
170
199
  * @internal
171
200
  * @param address - Router or Ramp contract address.
172
201
  * @returns FeeQuoter contract address.
202
+ * @throws {@link CCIPContractNotRouterError} if address is not a Router, OnRamp, or OffRamp
203
+ * @throws {@link CCIPVersionFeatureUnavailableError} if contract version is below v1.6
173
204
  */
174
205
  getFeeQuoterFor(address: string): Promise<string>;
175
206
  /** {@inheritDoc Chain.getFee} */
@@ -180,16 +211,25 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
180
211
  * generation), followed by a ccipSend TransactionRequest
181
212
  */
182
213
  generateUnsignedSendMessage(opts: Parameters<Chain['generateUnsignedSendMessage']>[0]): Promise<UnsignedEVMTx>;
183
- /** {@inheritDoc Chain.sendMessage} */
214
+ /**
215
+ * {@inheritDoc Chain.sendMessage}
216
+ * @throws {@link CCIPWalletInvalidError} if wallet is not a valid Signer
217
+ */
184
218
  sendMessage(opts: Parameters<Chain['sendMessage']>[0]): Promise<CCIPRequest>;
185
219
  /** {@inheritDoc Chain.getOffchainTokenData} */
186
220
  getOffchainTokenData(request: CCIPRequest): Promise<OffchainTokenData[]>;
187
221
  /**
188
222
  * {@inheritDoc Chain.generateUnsignedExecuteReport}
189
223
  * @returns array containing one unsigned `manuallyExecute` TransactionRequest object
224
+ * @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
190
225
  */
191
226
  generateUnsignedExecuteReport({ offRamp, execReport, ...opts }: Parameters<Chain['generateUnsignedExecuteReport']>[0]): Promise<UnsignedEVMTx>;
192
- /** {@inheritDoc Chain.executeReport} */
227
+ /**
228
+ * {@inheritDoc Chain.executeReport}
229
+ * @throws {@link CCIPWalletInvalidError} if wallet is not a valid Signer
230
+ * @throws {@link CCIPExecTxNotConfirmedError} if execution transaction fails to confirm
231
+ * @throws {@link CCIPExecTxRevertedError} if execution transaction reverts
232
+ */
193
233
  executeReport(opts: Parameters<Chain['executeReport']>[0]): Promise<CCIPExecution>;
194
234
  /**
195
235
  * Parses raw data into typed structures.
@@ -206,21 +246,27 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
206
246
  getSupportedTokens(registry: string, opts?: {
207
247
  page?: number;
208
248
  }): Promise<string[]>;
209
- /** {@inheritDoc Chain.getRegistryTokenConfig} */
249
+ /**
250
+ * {@inheritDoc Chain.getRegistryTokenConfig}
251
+ * @throws {@link CCIPTokenNotConfiguredError} if token is not configured in registry
252
+ */
210
253
  getRegistryTokenConfig(registry: string, token: string): Promise<{
211
254
  administrator: string;
212
255
  pendingAdministrator?: string;
213
256
  tokenPool?: string;
214
257
  }>;
215
- /** {@inheritDoc Chain.getTokenPoolConfigs} */
216
- getTokenPoolConfigs(tokenPool: string): Promise<{
258
+ /** {@inheritDoc Chain.getTokenPoolConfig} */
259
+ getTokenPoolConfig(tokenPool: string): Promise<{
217
260
  token: string;
218
261
  router: string;
219
262
  typeAndVersion: string;
220
263
  }>;
221
264
  /** {@inheritDoc Chain.getTokenPoolRemotes} */
222
265
  getTokenPoolRemotes(tokenPool: string, remoteChainSelector?: bigint): Promise<Record<string, TokenPoolRemote>>;
223
- /** {@inheritDoc Chain.getFeeTokens} */
266
+ /**
267
+ * {@inheritDoc Chain.getFeeTokens}
268
+ * @throws {@link CCIPVersionUnsupportedError} if OnRamp version is not supported
269
+ */
224
270
  getFeeTokens(router: string): Promise<{
225
271
  [k: string]: {
226
272
  decimals: number;