@chainlink/ccip-sdk 1.1.1 → 1.2.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 (85) hide show
  1. package/dist/api/index.d.ts +165 -15
  2. package/dist/api/index.d.ts.map +1 -1
  3. package/dist/api/index.js +236 -61
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/types.d.ts +119 -1
  6. package/dist/api/types.d.ts.map +1 -1
  7. package/dist/chain.d.ts +53 -27
  8. package/dist/chain.d.ts.map +1 -1
  9. package/dist/chain.js +71 -16
  10. package/dist/chain.js.map +1 -1
  11. package/dist/errors/codes.d.ts +1 -0
  12. package/dist/errors/codes.d.ts.map +1 -1
  13. package/dist/errors/codes.js +1 -0
  14. package/dist/errors/codes.js.map +1 -1
  15. package/dist/errors/index.d.ts +1 -1
  16. package/dist/errors/index.d.ts.map +1 -1
  17. package/dist/errors/index.js +1 -1
  18. package/dist/errors/index.js.map +1 -1
  19. package/dist/errors/recovery.d.ts.map +1 -1
  20. package/dist/errors/recovery.js +1 -0
  21. package/dist/errors/recovery.js.map +1 -1
  22. package/dist/errors/specialized.d.ts +21 -0
  23. package/dist/errors/specialized.d.ts.map +1 -1
  24. package/dist/errors/specialized.js +31 -1
  25. package/dist/errors/specialized.js.map +1 -1
  26. package/dist/evm/abi/OffRamp_2_0.d.ts +18 -17
  27. package/dist/evm/abi/OffRamp_2_0.d.ts.map +1 -1
  28. package/dist/evm/abi/OffRamp_2_0.js +19 -21
  29. package/dist/evm/abi/OffRamp_2_0.js.map +1 -1
  30. package/dist/evm/abi/TokenPool_2_0.d.ts +0 -4
  31. package/dist/evm/abi/TokenPool_2_0.d.ts.map +1 -1
  32. package/dist/evm/abi/TokenPool_2_0.js +0 -1
  33. package/dist/evm/abi/TokenPool_2_0.js.map +1 -1
  34. package/dist/evm/gas.d.ts +14 -4
  35. package/dist/evm/gas.d.ts.map +1 -1
  36. package/dist/evm/gas.js +7 -6
  37. package/dist/evm/gas.js.map +1 -1
  38. package/dist/evm/index.d.ts +39 -8
  39. package/dist/evm/index.d.ts.map +1 -1
  40. package/dist/evm/index.js +106 -27
  41. package/dist/evm/index.js.map +1 -1
  42. package/dist/extra-args.d.ts +18 -8
  43. package/dist/extra-args.d.ts.map +1 -1
  44. package/dist/extra-args.js +6 -6
  45. package/dist/extra-args.js.map +1 -1
  46. package/dist/gas.d.ts +1 -1
  47. package/dist/gas.d.ts.map +1 -1
  48. package/dist/gas.js +7 -2
  49. package/dist/gas.js.map +1 -1
  50. package/dist/index.d.ts +2 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/requests.d.ts +11 -5
  54. package/dist/requests.d.ts.map +1 -1
  55. package/dist/requests.js +4 -7
  56. package/dist/requests.js.map +1 -1
  57. package/dist/solana/index.d.ts +2 -2
  58. package/dist/solana/utils.js +2 -2
  59. package/dist/solana/utils.js.map +1 -1
  60. package/dist/ton/index.d.ts.map +1 -1
  61. package/dist/ton/index.js +34 -26
  62. package/dist/ton/index.js.map +1 -1
  63. package/dist/utils.d.ts +10 -4
  64. package/dist/utils.d.ts.map +1 -1
  65. package/dist/utils.js +10 -4
  66. package/dist/utils.js.map +1 -1
  67. package/package.json +7 -7
  68. package/src/api/index.ts +271 -59
  69. package/src/api/types.ts +126 -1
  70. package/src/chain.ts +120 -42
  71. package/src/errors/codes.ts +1 -0
  72. package/src/errors/index.ts +1 -0
  73. package/src/errors/recovery.ts +2 -0
  74. package/src/errors/specialized.ts +33 -1
  75. package/src/evm/abi/OffRamp_2_0.ts +19 -21
  76. package/src/evm/abi/TokenPool_2_0.ts +0 -1
  77. package/src/evm/gas.ts +18 -20
  78. package/src/evm/index.ts +126 -26
  79. package/src/extra-args.ts +18 -8
  80. package/src/gas.ts +8 -3
  81. package/src/index.ts +4 -0
  82. package/src/requests.ts +18 -12
  83. package/src/solana/utils.ts +2 -2
  84. package/src/ton/index.ts +47 -26
  85. package/src/utils.ts +10 -4
@@ -1,13 +1,13 @@
1
1
  import type { SetRequired } from 'type-fest';
2
2
  import { type CCIPRequest, type ExecutionInput, type Lane, type Logger, type WithLogger } from '../types.ts';
3
- import type { LaneLatencyResponse } from './types.ts';
4
- export type { APICCIPRequestMetadata, APIErrorResponse, LaneLatencyResponse } from './types.ts';
3
+ import type { LaneLatencyResponse, MessageSearchFilters, MessageSearchPage, MessageSearchResult } from './types.ts';
4
+ export type { APICCIPRequestMetadata, APIErrorResponse, LaneLatencyResponse, MessageSearchFilters, MessageSearchPage, MessageSearchResult, } from './types.ts';
5
5
  /** Default CCIP API base URL */
6
6
  export declare const DEFAULT_API_BASE_URL = "https://api.ccip.chain.link";
7
7
  /** Default timeout for API requests in milliseconds */
8
8
  export declare const DEFAULT_TIMEOUT_MS = 30000;
9
9
  /** SDK version string for telemetry header */
10
- export declare const SDK_VERSION = "1.1.1-593a607";
10
+ export declare const SDK_VERSION = "1.2.0-7dcdd16";
11
11
  /** SDK telemetry header name */
12
12
  export declare const SDK_VERSION_HEADER = "X-SDK-Version";
13
13
  /**
@@ -91,10 +91,15 @@ export declare class CCIPAPIClient {
91
91
  *
92
92
  * @param sourceChainSelector - Source chain selector (bigint)
93
93
  * @param destChainSelector - Destination chain selector (bigint)
94
+ * @param numberOfBlocks - Optional number of block confirmations for latency calculation.
95
+ * When omitted or 0, uses the lane's default finality. When provided as a positive
96
+ * integer, the API returns latency for that custom finality value (sent as `numOfBlocks`
97
+ * query parameter).
94
98
  * @returns Promise resolving to {@link LaneLatencyResponse} with totalMs
95
99
  *
96
100
  * @throws {@link CCIPLaneNotFoundError} when lane not found (404)
97
101
  * @throws {@link CCIPTimeoutError} if request times out
102
+ * @throws {@link CCIPAbortError} if request is aborted via signal
98
103
  * @throws {@link CCIPHttpError} on other HTTP errors with context:
99
104
  * - `status` - HTTP status code (e.g., 500)
100
105
  * - `statusText` - HTTP status message
@@ -110,6 +115,15 @@ export declare class CCIPAPIClient {
110
115
  * console.log(`Estimated delivery: ${Math.round(latency.totalMs / 60000)} minutes`)
111
116
  * ```
112
117
  *
118
+ * @example Custom block confirmations
119
+ * ```typescript
120
+ * const latency = await api.getLaneLatency(
121
+ * 5009297550715157269n, // Ethereum mainnet
122
+ * 4949039107694359620n, // Arbitrum mainnet
123
+ * 10, // 10 block confirmations
124
+ * )
125
+ * ```
126
+ *
113
127
  * @example Handling specific API errors
114
128
  * ```typescript
115
129
  * try {
@@ -121,7 +135,9 @@ export declare class CCIPAPIClient {
121
135
  * }
122
136
  * ```
123
137
  */
124
- getLaneLatency(sourceChainSelector: bigint, destChainSelector: bigint): Promise<LaneLatencyResponse>;
138
+ getLaneLatency(sourceChainSelector: bigint, destChainSelector: bigint, numberOfBlocks?: number, options?: {
139
+ signal?: AbortSignal;
140
+ }): Promise<LaneLatencyResponse>;
125
141
  /**
126
142
  * Fetches a CCIP message by its unique message ID.
127
143
  *
@@ -130,6 +146,7 @@ export declare class CCIPAPIClient {
130
146
  *
131
147
  * @throws {@link CCIPMessageIdNotFoundError} when message not found (404)
132
148
  * @throws {@link CCIPTimeoutError} if request times out
149
+ * @throws {@link CCIPAbortError} if request is aborted via signal
133
150
  * @throws {@link CCIPHttpError} on HTTP errors with context:
134
151
  * - `status` - HTTP status code
135
152
  * - `statusText` - HTTP status message
@@ -156,17 +173,119 @@ export declare class CCIPAPIClient {
156
173
  * }
157
174
  * ```
158
175
  */
159
- getMessageById(messageId: string): Promise<SetRequired<CCIPRequest, 'metadata'>>;
176
+ getMessageById(messageId: string, options?: {
177
+ signal?: AbortSignal;
178
+ }): Promise<SetRequired<CCIPRequest, 'metadata'>>;
179
+ /**
180
+ * Searches CCIP messages using filters with cursor-based pagination.
181
+ *
182
+ * @param filters - Optional search filters. Ignored when `options.cursor` is provided
183
+ * (the cursor already encodes the original filters).
184
+ * @param options - Optional pagination options: `limit` (max results per page) and
185
+ * `cursor` (opaque token from a previous {@link MessageSearchPage} for the next page).
186
+ * @returns Promise resolving to a {@link MessageSearchPage} with results and pagination info.
187
+ *
188
+ * @remarks
189
+ * A 404 response is treated as "no results found" and returns an empty page,
190
+ * unlike {@link CCIPAPIClient.getMessageById} which throws on 404.
191
+ * When paginating with a cursor, the `filters` parameter is ignored because
192
+ * the cursor encodes the original filters.
193
+ *
194
+ * @throws {@link CCIPTimeoutError} if request times out.
195
+ * @throws {@link CCIPAbortError} if request is aborted via signal.
196
+ * @throws {@link CCIPHttpError} on HTTP errors (4xx/5xx, except 404 which returns empty).
197
+ *
198
+ * @see {@link MessageSearchFilters} — available filter fields
199
+ * @see {@link MessageSearchPage} — return type with pagination
200
+ * @see {@link CCIPAPIClient.searchAllMessages} — async generator that handles pagination automatically
201
+ * @see {@link CCIPAPIClient.getMessageById} — fetch full message details for a search result
202
+ * @see {@link CCIPAPIClient.getMessageIdsInTx} — convenience wrapper using `sourceTransactionHash`
203
+ *
204
+ * @example Search by sender
205
+ * ```typescript
206
+ * const page = await api.searchMessages({
207
+ * sender: '0x9d087fC03ae39b088326b67fA3C788236645b717',
208
+ * })
209
+ * for (const msg of page.data) {
210
+ * console.log(`${msg.messageId}: ${msg.status}`)
211
+ * }
212
+ * ```
213
+ *
214
+ * @example Paginate through all results
215
+ * ```typescript
216
+ * let page = await api.searchMessages({ sender: '0x...' }, { limit: 10 })
217
+ * const all = [...page.data]
218
+ * while (page.hasNextPage) {
219
+ * page = await api.searchMessages(undefined, { cursor: page.cursor! })
220
+ * all.push(...page.data)
221
+ * }
222
+ * ```
223
+ *
224
+ * @example Filter by lane and sender
225
+ * ```typescript
226
+ * const page = await api.searchMessages({
227
+ * sender: '0x9d087fC03ae39b088326b67fA3C788236645b717',
228
+ * sourceChainSelector: 16015286601757825753n,
229
+ * destChainSelector: 14767482510784806043n,
230
+ * })
231
+ * ```
232
+ */
233
+ searchMessages(filters?: MessageSearchFilters, options?: {
234
+ limit?: number;
235
+ cursor?: string;
236
+ signal?: AbortSignal;
237
+ }): Promise<MessageSearchPage>;
238
+ /**
239
+ * Async generator that streams all messages matching the given filters,
240
+ * handling cursor-based pagination automatically.
241
+ *
242
+ * @param filters - Optional search filters (same as {@link CCIPAPIClient.searchMessages}).
243
+ * @param options - Optional `limit` controlling the per-page fetch size (number of
244
+ * results fetched per API call). The total number of results is controlled by the
245
+ * consumer — break out of the loop to stop early.
246
+ * @returns AsyncGenerator yielding {@link MessageSearchResult} one at a time, across all pages.
247
+ *
248
+ * @throws {@link CCIPTimeoutError} if a page request times out.
249
+ * @throws {@link CCIPAbortError} if a page request is aborted via signal.
250
+ * @throws {@link CCIPHttpError} on HTTP errors (4xx/5xx, except 404 which yields nothing).
251
+ *
252
+ * @see {@link CCIPAPIClient.searchMessages} — for page-level control and explicit cursor handling
253
+ * @see {@link CCIPAPIClient.getMessageById} — fetch full message details for a search result
254
+ *
255
+ * @example Iterate all messages for a sender
256
+ * ```typescript
257
+ * for await (const msg of api.searchAllMessages({ sender: '0x...' })) {
258
+ * console.log(`${msg.messageId}: ${msg.status}`)
259
+ * }
260
+ * ```
261
+ *
262
+ * @example Stop after collecting 5 results
263
+ * ```typescript
264
+ * const results: MessageSearchResult[] = []
265
+ * for await (const msg of api.searchAllMessages({ sender: '0x...' })) {
266
+ * results.push(msg)
267
+ * if (results.length >= 5) break
268
+ * }
269
+ * ```
270
+ */
271
+ searchAllMessages(filters?: MessageSearchFilters, options?: {
272
+ limit?: number;
273
+ signal?: AbortSignal;
274
+ }): AsyncGenerator<MessageSearchResult>;
160
275
  /**
161
276
  * Fetches message IDs from a source transaction hash.
162
277
  *
163
- * @param txHash - Source transaction hash (EVM hex or Solana Base58)
164
- * @returns Promise resolving to array of message IDs
278
+ * @remarks
279
+ * Uses {@link CCIPAPIClient.searchMessages} internally with `sourceTransactionHash` filter and `limit: 100`.
165
280
  *
166
- * @throws {@link CCIPMessageNotFoundInTxError} when no messages found (404 or empty)
167
- * @throws {@link CCIPUnexpectedPaginationError} when hasNextPage is true
168
- * @throws {@link CCIPTimeoutError} if request times out
169
- * @throws {@link CCIPHttpError} on HTTP errors
281
+ * @param txHash - Source transaction hash.
282
+ * @returns Promise resolving to array of message IDs.
283
+ *
284
+ * @throws {@link CCIPMessageNotFoundInTxError} when no messages found (404 or empty).
285
+ * @throws {@link CCIPUnexpectedPaginationError} when hasNextPage is true.
286
+ * @throws {@link CCIPTimeoutError} if request times out.
287
+ * @throws {@link CCIPAbortError} if request is aborted via signal.
288
+ * @throws {@link CCIPHttpError} on HTTP errors.
170
289
  *
171
290
  * @example Basic usage
172
291
  * ```typescript
@@ -175,14 +294,45 @@ export declare class CCIPAPIClient {
175
294
  * )
176
295
  * console.log(`Found ${messageIds.length} messages`)
177
296
  * ```
297
+ *
298
+ * @example Fetch full details for each message
299
+ * ```typescript
300
+ * const api = CCIPAPIClient.fromUrl()
301
+ * const messageIds = await api.getMessageIdsInTx(txHash)
302
+ * for (const id of messageIds) {
303
+ * const request = await api.getMessageById(id)
304
+ * console.log(`${id}: ${request.metadata.status}`)
305
+ * }
306
+ * ```
178
307
  */
179
- getMessageIdsInTx(txHash: string): Promise<string[]>;
308
+ getMessageIdsInTx(txHash: string, options?: {
309
+ signal?: AbortSignal;
310
+ }): Promise<string[]>;
180
311
  /**
181
312
  * Fetches the execution input for a given message by id.
182
- * @param messageId - The ID of the message to fetch the execution input for.
183
- * @returns Either `{ encodedMessage, verifications }` or `{ message, offchainTokenData, ...proof }`, offRamp and lane
313
+ * For v2.0 messages, returns `{ encodedMessage, verifications }`.
314
+ * For pre-v2 messages, returns `{ message, offchainTokenData, proofs, ... }` with merkle proof.
315
+ *
316
+ * @param messageId - The CCIP message ID (32-byte hex string)
317
+ * @returns Execution input with offRamp address and lane info
318
+ *
319
+ * @throws {@link CCIPMessageIdNotFoundError} when message not found (404)
320
+ * @throws {@link CCIPTimeoutError} if request times out
321
+ * @throws {@link CCIPAbortError} if request is aborted via signal
322
+ * @throws {@link CCIPHttpError} on other HTTP errors
323
+ *
324
+ * @example
325
+ * ```typescript
326
+ * const api = CCIPAPIClient.fromUrl()
327
+ * const execInput = await api.getExecutionInput('0x1234...')
328
+ * // Use with dest.execute():
329
+ * const { offRamp, ...input } = execInput
330
+ * await dest.execute({ offRamp, input, wallet })
331
+ * ```
184
332
  */
185
- getExecutionInput(messageId: string): Promise<ExecutionInput & Lane & {
333
+ getExecutionInput(messageId: string, options?: {
334
+ signal?: AbortSignal;
335
+ }): Promise<ExecutionInput & Lane & {
186
336
  offRamp: string;
187
337
  }>;
188
338
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAc5C,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,KAAK,MAAM,EAGX,KAAK,UAAU,EAKhB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAEV,mBAAmB,EAMpB,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAE/F,gCAAgC;AAChC,eAAO,MAAM,oBAAoB,gCAAgC,CAAA;AAEjE,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,QAAQ,CAAA;AAEvC,8CAA8C;AAG9C,eAAO,MAAM,WAAW,kBAAkB,CAAA;AAG1C,gCAAgC;AAChC,eAAO,MAAM,kBAAkB,kBAAkB,CAAA;AAEjD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG;IAC9C,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AA2BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,aAAa;IACxB,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IASrC;;;;OAIG;gBACS,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,oBAAoB;IAuBxD;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,aAAa;IAI3E;;;;;;;OAOG;YACW,iBAAiB;IAsB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,cAAc,CAClB,mBAAmB,EAAE,MAAM,EAC3B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAiD/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IA4CtF;;;;;;;;;;;;;;;;;;OAkBG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0D1D;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAuGhG;;;;OAIG;IACH,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;CAkF9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}