@chainlink/ccip-sdk 0.90.2 → 0.91.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 (202) hide show
  1. package/README.md +35 -26
  2. package/dist/aptos/exec.d.ts +4 -5
  3. package/dist/aptos/exec.d.ts.map +1 -1
  4. package/dist/aptos/exec.js +5 -14
  5. package/dist/aptos/exec.js.map +1 -1
  6. package/dist/aptos/hasher.d.ts +18 -0
  7. package/dist/aptos/hasher.d.ts.map +1 -1
  8. package/dist/aptos/hasher.js +18 -0
  9. package/dist/aptos/hasher.js.map +1 -1
  10. package/dist/aptos/index.d.ts +127 -28
  11. package/dist/aptos/index.d.ts.map +1 -1
  12. package/dist/aptos/index.js +199 -70
  13. package/dist/aptos/index.js.map +1 -1
  14. package/dist/aptos/logs.d.ts +18 -0
  15. package/dist/aptos/logs.d.ts.map +1 -1
  16. package/dist/aptos/logs.js +21 -3
  17. package/dist/aptos/logs.js.map +1 -1
  18. package/dist/aptos/send.d.ts +22 -5
  19. package/dist/aptos/send.d.ts.map +1 -1
  20. package/dist/aptos/send.js +23 -15
  21. package/dist/aptos/send.js.map +1 -1
  22. package/dist/aptos/token.d.ts +6 -0
  23. package/dist/aptos/token.d.ts.map +1 -1
  24. package/dist/aptos/token.js +6 -0
  25. package/dist/aptos/token.js.map +1 -1
  26. package/dist/aptos/types.d.ts +16 -1
  27. package/dist/aptos/types.d.ts.map +1 -1
  28. package/dist/aptos/types.js +13 -0
  29. package/dist/aptos/types.js.map +1 -1
  30. package/dist/aptos/utils.d.ts +1 -1
  31. package/dist/aptos/utils.js +1 -1
  32. package/dist/chain.d.ts +185 -99
  33. package/dist/chain.d.ts.map +1 -1
  34. package/dist/chain.js +38 -15
  35. package/dist/chain.js.map +1 -1
  36. package/dist/commits.d.ts +4 -10
  37. package/dist/commits.d.ts.map +1 -1
  38. package/dist/commits.js +2 -1
  39. package/dist/commits.js.map +1 -1
  40. package/dist/evm/const.d.ts +5 -0
  41. package/dist/evm/const.d.ts.map +1 -1
  42. package/dist/evm/const.js +5 -0
  43. package/dist/evm/const.js.map +1 -1
  44. package/dist/evm/errors.d.ts +5 -0
  45. package/dist/evm/errors.d.ts.map +1 -1
  46. package/dist/evm/errors.js +6 -1
  47. package/dist/evm/errors.js.map +1 -1
  48. package/dist/evm/hasher.d.ts +16 -2
  49. package/dist/evm/hasher.d.ts.map +1 -1
  50. package/dist/evm/hasher.js +17 -3
  51. package/dist/evm/hasher.js.map +1 -1
  52. package/dist/evm/index.d.ts +176 -31
  53. package/dist/evm/index.d.ts.map +1 -1
  54. package/dist/evm/index.js +312 -154
  55. package/dist/evm/index.js.map +1 -1
  56. package/dist/evm/logs.d.ts +20 -0
  57. package/dist/evm/logs.d.ts.map +1 -0
  58. package/dist/evm/logs.js +194 -0
  59. package/dist/evm/logs.js.map +1 -0
  60. package/dist/evm/messages.d.ts +11 -2
  61. package/dist/evm/messages.d.ts.map +1 -1
  62. package/dist/evm/messages.js +4 -2
  63. package/dist/evm/messages.js.map +1 -1
  64. package/dist/evm/offchain.d.ts +7 -2
  65. package/dist/evm/offchain.d.ts.map +1 -1
  66. package/dist/evm/offchain.js +12 -7
  67. package/dist/evm/offchain.js.map +1 -1
  68. package/dist/execution.d.ts +19 -62
  69. package/dist/execution.d.ts.map +1 -1
  70. package/dist/execution.js +28 -31
  71. package/dist/execution.js.map +1 -1
  72. package/dist/extra-args.d.ts +35 -5
  73. package/dist/extra-args.d.ts.map +1 -1
  74. package/dist/extra-args.js +10 -5
  75. package/dist/extra-args.js.map +1 -1
  76. package/dist/gas.d.ts +6 -8
  77. package/dist/gas.d.ts.map +1 -1
  78. package/dist/gas.js +7 -9
  79. package/dist/gas.js.map +1 -1
  80. package/dist/hasher/common.d.ts +3 -2
  81. package/dist/hasher/common.d.ts.map +1 -1
  82. package/dist/hasher/common.js +2 -2
  83. package/dist/hasher/common.js.map +1 -1
  84. package/dist/hasher/hasher.d.ts +8 -2
  85. package/dist/hasher/hasher.d.ts.map +1 -1
  86. package/dist/hasher/hasher.js +8 -3
  87. package/dist/hasher/hasher.js.map +1 -1
  88. package/dist/hasher/merklemulti.d.ts +11 -9
  89. package/dist/hasher/merklemulti.d.ts.map +1 -1
  90. package/dist/hasher/merklemulti.js +17 -16
  91. package/dist/hasher/merklemulti.js.map +1 -1
  92. package/dist/index.d.ts +16 -8
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +17 -7
  95. package/dist/index.js.map +1 -1
  96. package/dist/requests.d.ts +39 -25
  97. package/dist/requests.d.ts.map +1 -1
  98. package/dist/requests.js +42 -35
  99. package/dist/requests.js.map +1 -1
  100. package/dist/selectors.d.ts +1 -1
  101. package/dist/solana/cleanup.d.ts +14 -10
  102. package/dist/solana/cleanup.d.ts.map +1 -1
  103. package/dist/solana/cleanup.js +35 -33
  104. package/dist/solana/cleanup.js.map +1 -1
  105. package/dist/solana/exec.d.ts +19 -11
  106. package/dist/solana/exec.d.ts.map +1 -1
  107. package/dist/solana/exec.js +86 -163
  108. package/dist/solana/exec.js.map +1 -1
  109. package/dist/solana/hasher.d.ts +7 -2
  110. package/dist/solana/hasher.d.ts.map +1 -1
  111. package/dist/solana/hasher.js +7 -2
  112. package/dist/solana/hasher.js.map +1 -1
  113. package/dist/solana/index.d.ts +202 -84
  114. package/dist/solana/index.d.ts.map +1 -1
  115. package/dist/solana/index.js +367 -252
  116. package/dist/solana/index.js.map +1 -1
  117. package/dist/solana/offchain.d.ts +8 -18
  118. package/dist/solana/offchain.d.ts.map +1 -1
  119. package/dist/solana/offchain.js +29 -83
  120. package/dist/solana/offchain.js.map +1 -1
  121. package/dist/solana/patchBorsh.d.ts +5 -1
  122. package/dist/solana/patchBorsh.d.ts.map +1 -1
  123. package/dist/solana/patchBorsh.js +57 -46
  124. package/dist/solana/patchBorsh.js.map +1 -1
  125. package/dist/solana/send.d.ts +28 -10
  126. package/dist/solana/send.d.ts.map +1 -1
  127. package/dist/solana/send.js +44 -77
  128. package/dist/solana/send.js.map +1 -1
  129. package/dist/solana/types.d.ts +22 -1
  130. package/dist/solana/types.d.ts.map +1 -1
  131. package/dist/solana/types.js +12 -1
  132. package/dist/solana/types.js.map +1 -1
  133. package/dist/solana/utils.d.ts +58 -4
  134. package/dist/solana/utils.d.ts.map +1 -1
  135. package/dist/solana/utils.js +110 -7
  136. package/dist/solana/utils.js.map +1 -1
  137. package/dist/sui/hasher.d.ts +18 -0
  138. package/dist/sui/hasher.d.ts.map +1 -1
  139. package/dist/sui/hasher.js +18 -0
  140. package/dist/sui/hasher.js.map +1 -1
  141. package/dist/sui/index.d.ts +99 -12
  142. package/dist/sui/index.d.ts.map +1 -1
  143. package/dist/sui/index.js +108 -19
  144. package/dist/sui/index.js.map +1 -1
  145. package/dist/sui/types.d.ts +6 -0
  146. package/dist/sui/types.d.ts.map +1 -1
  147. package/dist/sui/types.js +5 -0
  148. package/dist/sui/types.js.map +1 -1
  149. package/dist/supported-chains.d.ts +2 -1
  150. package/dist/supported-chains.d.ts.map +1 -1
  151. package/dist/supported-chains.js.map +1 -1
  152. package/dist/types.d.ts +127 -16
  153. package/dist/types.d.ts.map +1 -1
  154. package/dist/types.js +18 -0
  155. package/dist/types.js.map +1 -1
  156. package/dist/utils.d.ts +67 -46
  157. package/dist/utils.d.ts.map +1 -1
  158. package/dist/utils.js +143 -21
  159. package/dist/utils.js.map +1 -1
  160. package/package.json +13 -9
  161. package/src/aptos/exec.ts +7 -18
  162. package/src/aptos/hasher.ts +18 -0
  163. package/src/aptos/index.ts +288 -110
  164. package/src/aptos/logs.ts +21 -3
  165. package/src/aptos/send.ts +25 -22
  166. package/src/aptos/token.ts +6 -0
  167. package/src/aptos/types.ts +26 -2
  168. package/src/aptos/utils.ts +1 -1
  169. package/src/chain.ts +243 -108
  170. package/src/commits.ts +6 -7
  171. package/src/evm/const.ts +5 -0
  172. package/src/evm/errors.ts +6 -1
  173. package/src/evm/hasher.ts +20 -4
  174. package/src/evm/index.ts +416 -214
  175. package/src/evm/logs.ts +255 -0
  176. package/src/evm/messages.ts +11 -5
  177. package/src/evm/offchain.ts +13 -4
  178. package/src/execution.ts +40 -32
  179. package/src/extra-args.ts +38 -6
  180. package/src/gas.ts +7 -9
  181. package/src/hasher/common.ts +3 -2
  182. package/src/hasher/hasher.ts +12 -4
  183. package/src/hasher/merklemulti.ts +17 -16
  184. package/src/index.ts +29 -23
  185. package/src/requests.ts +64 -46
  186. package/src/selectors.ts +1 -1
  187. package/src/solana/cleanup.ts +49 -34
  188. package/src/solana/exec.ts +128 -272
  189. package/src/solana/hasher.ts +13 -4
  190. package/src/solana/index.ts +483 -356
  191. package/src/solana/offchain.ts +32 -102
  192. package/src/solana/patchBorsh.ts +65 -50
  193. package/src/solana/send.ts +52 -111
  194. package/src/solana/types.ts +44 -3
  195. package/src/solana/utils.ts +143 -19
  196. package/src/sui/hasher.ts +18 -0
  197. package/src/sui/index.ts +143 -31
  198. package/src/sui/types.ts +6 -0
  199. package/src/supported-chains.ts +2 -1
  200. package/src/types.ts +130 -18
  201. package/src/utils.ts +168 -26
  202. package/tsconfig.json +2 -1
package/dist/chain.d.ts CHANGED
@@ -1,57 +1,92 @@
1
- import util from 'util';
2
1
  import type { BytesLike } from 'ethers';
2
+ import type { PickDeep } from 'type-fest';
3
+ import type { UnsignedAptosTx } from './aptos/types.ts';
4
+ import type { UnsignedEVMTx } from './evm/index.ts';
3
5
  import type { EVMExtraArgsV1, EVMExtraArgsV2, ExtraArgs, SVMExtraArgsV1, SuiExtraArgsV1 } from './extra-args.ts';
4
6
  import type { LeafHasher } from './hasher/common.ts';
5
- import type { AnyMessage, CCIPCommit, CCIPExecution, CCIPMessage, CCIPRequest, CommitReport, ExecutionReceipt, ExecutionReport, Lane, Log_, NetworkInfo, OffchainTokenData } from './types.ts';
6
- export declare const ChainFamily: {
7
- readonly EVM: "evm";
8
- readonly Solana: "solana";
9
- readonly Aptos: "aptos";
10
- readonly Sui: "sui";
11
- };
12
- export type ChainFamily = (typeof ChainFamily)[keyof typeof ChainFamily];
7
+ import type { UnsignedSolanaTx } from './solana/types.ts';
8
+ import { type AnyMessage, type CCIPCommit, type CCIPExecution, type CCIPMessage, type CCIPRequest, type ChainFamily, type ChainTransaction, type CommitReport, type ExecutionReceipt, type ExecutionReport, type Lane, type Log_, type Logger, type NetworkInfo, type OffchainTokenData, type WithLogger } from './types.ts';
9
+ import { util } from './utils.ts';
10
+ /**
11
+ * Filter options for getLogs queries across chains.
12
+ */
13
13
  export type LogFilter = {
14
+ /** Starting block number (inclusive). */
14
15
  startBlock?: number;
16
+ /** Starting Unix timestamp (inclusive). */
15
17
  startTime?: number;
18
+ /** Ending block number (inclusive). */
16
19
  endBlock?: number;
20
+ /** Optional hint signature for end of iteration. */
17
21
  endBefore?: string;
22
+ /** Contract address to filter logs by. */
18
23
  address?: string;
19
- topics?: string[] | string[][];
24
+ /** Topics to filter logs by. */
25
+ topics?: (string | string[] | null)[];
26
+ /** Page size for pagination. */
20
27
  page?: number;
21
28
  };
22
- export type ChainTransaction = {
23
- chain: Chain;
24
- hash: string;
25
- logs: readonly Log_[];
26
- blockNumber: number;
27
- timestamp: number;
28
- from: string;
29
- error?: unknown;
30
- };
29
+ /**
30
+ * Token metadata information.
31
+ */
31
32
  export type TokenInfo = {
33
+ /** Token symbol (e.g., "LINK"). */
32
34
  readonly symbol: string;
35
+ /** Number of decimals for the token. */
33
36
  readonly decimals: number;
37
+ /** Optional human-readable token name. */
34
38
  readonly name?: string;
35
39
  };
40
+ /**
41
+ * Rate limiter state for token pool configurations.
42
+ * Null if rate limiting is disabled.
43
+ */
36
44
  export type RateLimiterState = {
45
+ /** Current token balance in the rate limiter bucket. */
37
46
  tokens: bigint;
47
+ /** Maximum capacity of the rate limiter bucket. */
38
48
  capacity: bigint;
49
+ /** Rate at which tokens are replenished. */
39
50
  rate: bigint;
40
51
  } | null;
52
+ /**
53
+ * Remote token pool configuration for a specific chain.
54
+ */
41
55
  export type TokenPoolRemote = {
56
+ /** Address of the remote token on the destination chain. */
42
57
  remoteToken: string;
58
+ /** Addresses of remote token pools. */
43
59
  remotePools: string[];
60
+ /** Inbound rate limiter state for tokens coming into this chain. */
44
61
  inboundRateLimiterState: RateLimiterState;
62
+ /** Outbound rate limiter state for tokens leaving this chain. */
45
63
  outboundRateLimiterState: RateLimiterState;
46
64
  };
65
+ /**
66
+ * Maps chain family to respective unsigned transaction type.
67
+ */
68
+ export type UnsignedTx = {
69
+ [ChainFamily.EVM]: UnsignedEVMTx;
70
+ [ChainFamily.Solana]: UnsignedSolanaTx;
71
+ [ChainFamily.Aptos]: UnsignedAptosTx;
72
+ [ChainFamily.Sui]: never;
73
+ };
47
74
  /**
48
75
  * Works like an interface for a base Chain class, but provides implementation (which can be
49
76
  * specialized) for some basic methods
50
77
  */
51
78
  export declare abstract class Chain<F extends ChainFamily = ChainFamily> {
52
- abstract readonly network: NetworkInfo<F>;
53
- abstract destroy?(): Promise<void>;
54
- [util.inspect.custom](): string;
79
+ /** Custom inspector for Node.js util.inspect. */
80
+ [util.inspect.custom]: () => string;
81
+ readonly network: NetworkInfo<F>;
82
+ logger: Logger;
83
+ /**
84
+ * Base constructor for Chain class.
85
+ * @param network - NetworkInfo object for the Chain instance
86
+ */
87
+ constructor(network: NetworkInfo, { logger }?: WithLogger);
88
+ /** Cleanup method to release resources (e.g., close connections). */
89
+ destroy?(): void | Promise<void>;
55
90
  /**
56
91
  * Fetch the timestamp of a given block
57
92
  * @param block - block number or 'finalized'
@@ -66,28 +101,55 @@ export declare abstract class Chain<F extends ChainFamily = ChainFamily> {
66
101
  abstract getTransaction(hash: string): Promise<ChainTransaction>;
67
102
  /**
68
103
  * An async generator that yields logs based on the provided options.
69
- * @param opts - options object
70
- * @param opts.startBlock - if provided, fetch and generate logs forward starting from this block;
71
- * otherwise, returns logs backwards in time from endBlock;
72
- * optionally, startTime may be provided to fetch logs forward starting from this time;
73
- * @param opts.endBlock - if omitted, use latest block
74
- * @param opts.endBefore - optional hint signature for end of iteration, instead of endBlock
75
- * @param opts.address - if provided, fetch logs for this address only (may be required in some
76
- * networks/implementations)
77
- * @param opts.topics - if provided, fetch logs for these topics only;
78
- * if string[], it's assumed to be a list of topic0s (i.e. string[] or string[][0], event_ids);
79
- * some networks/implementations may not be able to filter topics other than topic0s, so one may
80
- * want to assume those are optimization hints, instead of hard filters, and verify results
81
- * @param opts.page - if provided, try to use this page/range for batches
82
- * @returns an async iterable iterator of logs
104
+ * @param opts - Options object containing:
105
+ * - `startBlock`: if provided, fetch and generate logs forward starting from this block;
106
+ * otherwise, returns logs backwards in time from endBlock;
107
+ * optionally, startTime may be provided to fetch logs forward starting from this time
108
+ * - `endBlock`: if omitted, use latest block
109
+ * - `endBefore`: optional hint signature for end of iteration, instead of endBlock
110
+ * - `address`: if provided, fetch logs for this address only (may be required in some
111
+ * networks/implementations)
112
+ * - `topics`: if provided, fetch logs for these topics only;
113
+ * if string[], it's assumed to be a list of topic0s (i.e. string[] or string[][0], event_ids);
114
+ * some networks/implementations may not be able to filter topics other than topic0s, so one may
115
+ * want to assume those are optimization hints, instead of hard filters, and verify results
116
+ * - `page`: if provided, try to use this page/range for batches
117
+ * @returns An async iterable iterator of logs.
83
118
  */
84
119
  abstract getLogs(opts: LogFilter): AsyncIterableIterator<Log_>;
85
120
  /**
86
- * Fetch the typeAndVersion tag of a given CCIP contract
121
+ * Fetch all CCIP requests in a transaction
122
+ * @param tx - ChainTransaction or txHash to fetch requests from
123
+ * @returns CCIP messages in the transaction (at least one)
124
+ **/
125
+ abstract fetchRequestsInTx(tx: string | ChainTransaction): Promise<CCIPRequest[]>;
126
+ /**
127
+ * Scan for a CCIP request by message ID
128
+ * @param messageId - message ID to fetch request for
129
+ * @param onRamp - address may be required in some implementations, and throw if missing
130
+ * @returns CCIPRequest
131
+ **/
132
+ fetchRequestById?(messageId: string, onRamp?: string, opts?: {
133
+ page?: number;
134
+ }): Promise<CCIPRequest>;
135
+ /**
136
+ * Fetches all CCIP messages contained in a given commit batch.
137
+ * @param request - CCIPRequest to fetch batch for.
138
+ * @param commit - CommitReport range (min, max).
139
+ * @param opts - Optional parameters (e.g., `page` for pagination width).
140
+ */
141
+ abstract fetchAllMessagesInBatch<R extends PickDeep<CCIPRequest, 'lane' | `log.${'topics' | 'address' | 'blockNumber'}` | 'message.header.sequenceNumber'>>(request: R, commit: Pick<CommitReport, 'minSeqNr' | 'maxSeqNr'>, opts?: {
142
+ page?: number;
143
+ }): Promise<R['message'][]>;
144
+ /**
145
+ * Fetch typeAndVersion for a given CCIP contract address
87
146
  * @param address - CCIP contract address
88
- * @returns typeAndVersion tag, validated and split
147
+ * @returns type - parsed type of the contract, e.g. `OnRamp`
148
+ * @returns version - parsed version of the contract, e.g. `1.6.0`
149
+ * @returns typeAndVersion - original (unparsed) typeAndVersion() string
150
+ * @returns suffix - suffix of the version, if any (e.g. `-dev`)
89
151
  */
90
- abstract typeAndVersion(address: string): Promise<[type_: string, version: string, typeAndVersion: string] | [type_: string, version: string, typeAndVersion: string, suffix: string]>;
152
+ abstract typeAndVersion(address: string): Promise<[type: string, version: string, typeAndVersion: string, suffix?: string]>;
91
153
  /**
92
154
  * Fetch the Router address set in OnRamp config
93
155
  * Used to discover OffRamp connected to OnRamp
@@ -133,10 +195,10 @@ export declare abstract class Chain<F extends ChainFamily = ChainFamily> {
133
195
  */
134
196
  abstract getOnRampForOffRamp(offRamp: string, sourceChainSelector: bigint): Promise<string>;
135
197
  /**
136
- * Fetch the CommitStore set in OffRamp config (CCIP<=v1.5)
137
- * For CCIP>=v1.6, it should return the offRamp address
138
- * @param offRamp - OffRamp contract address
139
- * @returns CommitStore address
198
+ * Fetch the CommitStore set in OffRamp config (CCIP v1.5 and earlier).
199
+ * For CCIP v1.6 and later, it should return the offRamp address.
200
+ * @param offRamp - OffRamp contract address.
201
+ * @returns CommitStore address.
140
202
  */
141
203
  abstract getCommitStoreForOffRamp(offRamp: string): Promise<string>;
142
204
  /**
@@ -157,14 +219,6 @@ export declare abstract class Chain<F extends ChainFamily = ChainFamily> {
157
219
  * @param onRamp - Some contract for which we can fetch a TokenAdminRegistry
158
220
  */
159
221
  abstract getTokenAdminRegistryFor(address: string): Promise<string>;
160
- /**
161
- * Build, derive, load or fetch a wallet for this instance which will be used in any tx send operation
162
- * @param opts.wallet - cli or environmental parameters to help pick a wallet
163
- * @returns address of fetched (and stored internally) account
164
- */
165
- abstract getWalletAddress(opts?: {
166
- wallet?: unknown;
167
- }): Promise<string>;
168
222
  /**
169
223
  * Fetch the current fee for a given intended message
170
224
  * @param router - router address on this chain
@@ -173,72 +227,101 @@ export declare abstract class Chain<F extends ChainFamily = ChainFamily> {
173
227
  */
174
228
  abstract getFee(router: string, destChainSelector: bigint, message: AnyMessage): Promise<bigint>;
175
229
  /**
176
- * Send a CCIP message through a router using loaded wallet
177
- * @param router - router address on this chain
178
- * @param destChainSelector - dest network selector
179
- * @param message - message to send
180
- * @param opts.wallet - cli or environmental parameters to help pick a wallet
181
- * @param opts.approveMax - approve the maximum amount of tokens to transfer
230
+ * Generate unsigned txs for ccipSend'ing a message
231
+ * @param sender - sender address
232
+ * @param router - address of the Router contract
233
+ * @param destChainSelector - chainSelector of destination chain
234
+ * @param message - AnyMessage to send; if `fee` is not present, it'll be calculated
235
+ * @param approveMax - if tokens approvals are needed, opt into approving maximum allowance
236
+ * @returns chain-family specific unsigned txs
182
237
  */
183
- abstract sendMessage(router: string, destChainSelector: bigint, message: AnyMessage & {
184
- fee: bigint;
238
+ abstract generateUnsignedSendMessage(sender: string, router: string, destChainSelector: bigint, message: AnyMessage & {
239
+ fee?: bigint;
185
240
  }, opts?: {
186
- wallet?: unknown;
187
241
  approveMax?: boolean;
188
- }): Promise<ChainTransaction>;
242
+ }): Promise<UnsignedTx[F]>;
243
+ /**
244
+ * Send a CCIP message through a router using provided wallet.
245
+ * @param router - Router address on this chain.
246
+ * @param destChainSelector - Destination network selector.
247
+ * @param message - Message to send.
248
+ * @param opts - Optional parameters:
249
+ * - `wallet`: cli or environmental parameters to help pick a wallet
250
+ * - `approveMax`: approve the maximum amount of tokens to transfer
251
+ */
252
+ abstract sendMessage(router: string, destChainSelector: bigint, message: AnyMessage & {
253
+ fee?: bigint;
254
+ }, opts: {
255
+ wallet: unknown;
256
+ approveMax?: boolean;
257
+ }): Promise<CCIPRequest>;
189
258
  /**
190
259
  * Fetch supported offchain token data for a request from this network
191
260
  * @param request - CCIP request, with tx, logs and message
192
261
  * @returns array with one offchain token data for each token transfer in request
193
262
  */
194
263
  abstract fetchOffchainTokenData(request: CCIPRequest): Promise<OffchainTokenData[]>;
264
+ /**
265
+ * Generate unsigned tx to manuallyExecute a message
266
+ * @param payer - address which will be used to transmit the report tx
267
+ * @param offRamp - address of the OffRamp contract
268
+ * @param execReport - execution report
269
+ * @param gasLimit - gasLimit or computeUnits limit override for the ccipReceive call
270
+ * @param tokensGasLimit - For EVM, overrides gasLimit on tokenpPool call
271
+ * @param forceBuffer - For Solana, send report in chunks to OffRamp, to later execute
272
+ * @param forceLookupTable - For Solana, create and extend addresses in a lookup table before executing
273
+ * @returns chain-family specific unsigned txs
274
+ */
275
+ abstract generateUnsignedExecuteReport(payer: string, offRamp: string, execReport: ExecutionReport, opts: {
276
+ gasLimit?: number;
277
+ tokensGasLimit?: number;
278
+ forceBuffer?: boolean;
279
+ forceLookupTable?: boolean;
280
+ }): Promise<UnsignedTx[F]>;
195
281
  /**
196
282
  * Execute messages in report in an offRamp
197
283
  * @param offRamp - offRamp address on this dest chain
198
284
  * @param execReport - execution report containing messages to execute, proofs and offchainTokenData
199
- * @param opts - general options for execution
200
- * @returns transaction hash of the execution
201
- */
202
- abstract executeReport(offRamp: string, execReport: ExecutionReport, opts?: Record<string, unknown>): Promise<ChainTransaction>;
285
+ * @param opts - general options for execution (see [[generateUnsignedExecuteReport]])
286
+ * @param wallet - chain-specific wallet or signer instance, to sign transactions
287
+ * @returns transaction of the execution
288
+ */
289
+ abstract executeReport(offRamp: string, execReport: ExecutionReport, opts: {
290
+ wallet: unknown;
291
+ gasLimit?: number;
292
+ tokensGasLimit?: number;
293
+ forceBuffer?: boolean;
294
+ forceLookupTable?: boolean;
295
+ }): Promise<ChainTransaction>;
203
296
  /**
204
297
  * Look for a CommitReport at dest for given CCIP request
205
298
  * May be specialized by some subclasses
206
299
  *
207
- * @param dest - Destination network provider
208
- * @param request - CCIP request info
300
+ * @param commitStore - Commit store address
301
+ * @param request - CCIPRequest to get commit info for
209
302
  * @param hints - Additional filtering hints
210
- * @returns CCIP commit info
303
+ * @returns CCIPCommit info, or reject if none found
211
304
  **/
212
- fetchCommitReport(commitStore: string, request: {
213
- lane: Lane;
214
- message: {
215
- header: {
216
- sequenceNumber: bigint;
217
- };
218
- };
219
- timestamp?: number;
220
- }, hints?: {
305
+ fetchCommitReport(commitStore: string, request: PickDeep<CCIPRequest, 'lane' | 'message.header.sequenceNumber' | 'tx.timestamp'>, hints?: {
221
306
  startBlock?: number;
222
307
  page?: number;
223
308
  }): Promise<CCIPCommit>;
224
309
  /**
225
310
  * Default/generic implementation of fetchExecutionReceipts
226
311
  * @param offRamp - Off-ramp address
227
- * @param messageIds - Set of message IDs to fetch receipts for
312
+ * @param request - CCIPRequest to get execution receipts for
313
+ * @param commit - CCIPCommit info to help narrowing search for executions
228
314
  * @param hints - Additional filtering hints
229
- * @returns Async generator of CCIP execution receipts
315
+ * @returns Async generator of CCIPExecution receipts
230
316
  */
231
- fetchExecutionReceipts(offRamp: string, messageIds: Set<string>, hints?: {
232
- startBlock?: number;
233
- startTime?: number;
317
+ fetchExecutionReceipts(offRamp: string, request: PickDeep<CCIPRequest, 'lane' | 'message.header.messageId' | 'tx.timestamp'>, commit?: CCIPCommit, hints?: {
234
318
  page?: number;
235
- commit?: CommitReport;
236
- }): AsyncGenerator<CCIPExecution>;
319
+ }): AsyncIterableIterator<CCIPExecution>;
237
320
  /**
238
- * List tokens supported by given TokenAdminRegistry contract
239
- * @param address - Usually TokenAdminRegistry, but chain may support receiving Router, OnRamp, etc
240
- * @param opts.page - Page range, if needed
241
- * @retursn array of supported token addresses
321
+ * List tokens supported by given TokenAdminRegistry contract.
322
+ * @param address - Usually TokenAdminRegistry, but chain may support receiving Router, OnRamp, etc.
323
+ * @param opts - Optional parameters (e.g., `page` for pagination range).
324
+ * @returns Array of supported token addresses.
242
325
  */
243
326
  abstract getSupportedTokens(address: string, opts?: {
244
327
  page?: number;
@@ -263,19 +346,20 @@ export declare abstract class Chain<F extends ChainFamily = ChainFamily> {
263
346
  typeAndVersion?: string;
264
347
  }>;
265
348
  /**
266
- * Get TokenPool remote configurations
267
- * @param tokenPool - Token pool address
268
- * @param remoteChainSelector - If provided, only return remotes for the specified chain (may error if remote not supported)
269
- * @param Record of network *names* and remote configurations (remoteToken, remotePools, rateLimitStates)
349
+ * Get TokenPool remote configurations.
350
+ * @param tokenPool - Token pool address.
351
+ * @param remoteChainSelector - If provided, only return remotes for the specified chain (may error if remote not supported).
352
+ * @returns Record of network names and remote configurations (remoteToken, remotePools, rateLimitStates).
270
353
  */
271
354
  abstract getTokenPoolRemotes(tokenPool: string, remoteChainSelector?: bigint): Promise<Record<string, TokenPoolRemote>>;
272
355
  /**
273
- * Fetch list and info of supported feeTokens
274
- * @param router address on this chain
275
- * @returns mapping of token addresses to respective TokenInfo objects
356
+ * Fetch list and info of supported feeTokens.
357
+ * @param router - Router address on this chain.
358
+ * @returns Mapping of token addresses to respective TokenInfo objects.
276
359
  */
277
- abstract listFeeTokens(router: string): Promise<Record<string, TokenInfo>>;
360
+ abstract getFeeTokens(router: string): Promise<Record<string, TokenInfo>>;
278
361
  }
362
+ /** Static methods and properties available on Chain class constructors. */
279
363
  export type ChainStatic<F extends ChainFamily = ChainFamily> = Function & {
280
364
  readonly family: F;
281
365
  readonly decimals: number;
@@ -283,7 +367,7 @@ export type ChainStatic<F extends ChainFamily = ChainFamily> = Function & {
283
367
  * async constructor: builds a Chain from a rpc endpoint url
284
368
  * @param url - rpc endpoint url
285
369
  */
286
- fromUrl(url: string): Promise<Chain<F>>;
370
+ fromUrl(url: string, ctx?: WithLogger): Promise<Chain<F>>;
287
371
  /**
288
372
  * Try to decode a CCIP message *from* a log/event *originated* from this *source* chain,
289
373
  * but which may *target* other dest chain families
@@ -330,15 +414,17 @@ export type ChainStatic<F extends ChainFamily = ChainFamily> = Function & {
330
414
  /**
331
415
  * Create a leaf hasher for this dest chain and lane
332
416
  * @param lane - source, dest and onramp lane info
417
+ * @param ctx - context object containing logger
333
418
  * @returns LeafHasher is a function that takes a message and returns a hash of it
334
419
  */
335
- getDestLeafHasher(lane: Lane): LeafHasher;
420
+ getDestLeafHasher(lane: Lane, ctx?: WithLogger): LeafHasher;
336
421
  /**
337
422
  * Try to parse an error or bytearray generated by this chain family
338
- * @param error - catched object, string or bytearray
423
+ * @param data - Caught object, string or bytearray
339
424
  * @returns Ordered record with messages/properties, or undefined if not a recognized error
340
425
  */
341
426
  parse?(data: unknown): Record<string, unknown> | undefined | null;
342
427
  };
428
+ /** Function type for getting a Chain instance by ID, selector, or name. */
343
429
  export type ChainGetter = (idOrSelectorOrName: number | string | bigint) => Promise<Chain>;
344
430
  //# sourceMappingURL=chain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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"}
package/dist/chain.js CHANGED
@@ -1,17 +1,24 @@
1
- import util from 'util';
2
1
  import { fetchCommitReport } from "./commits.js";
3
- import { fetchExecutionReceipts } from "./execution.js";
4
- export const ChainFamily = {
5
- EVM: 'evm',
6
- Solana: 'solana',
7
- Aptos: 'aptos',
8
- Sui: 'sui',
9
- };
2
+ import { ExecutionState, } from "./types.js";
3
+ import { util } from "./utils.js";
10
4
  /**
11
5
  * Works like an interface for a base Chain class, but provides implementation (which can be
12
6
  * specialized) for some basic methods
13
7
  */
14
8
  export class Chain {
9
+ network;
10
+ logger;
11
+ /**
12
+ * Base constructor for Chain class.
13
+ * @param network - NetworkInfo object for the Chain instance
14
+ */
15
+ constructor(network, { logger = console } = {}) {
16
+ if (network.family !== this.constructor.family)
17
+ throw new Error(`Invalid network family for ${this.constructor.name}: ${network.family}`);
18
+ this.network = network;
19
+ this.logger = logger;
20
+ }
21
+ /** Custom inspector for Node.js util.inspect. */
15
22
  [util.inspect.custom]() {
16
23
  return `${this.constructor.name} { ${this.network.name} }`;
17
24
  }
@@ -19,10 +26,10 @@ export class Chain {
19
26
  * Look for a CommitReport at dest for given CCIP request
20
27
  * May be specialized by some subclasses
21
28
  *
22
- * @param dest - Destination network provider
23
- * @param request - CCIP request info
29
+ * @param commitStore - Commit store address
30
+ * @param request - CCIPRequest to get commit info for
24
31
  * @param hints - Additional filtering hints
25
- * @returns CCIP commit info
32
+ * @returns CCIPCommit info, or reject if none found
26
33
  **/
27
34
  async fetchCommitReport(commitStore, request, hints) {
28
35
  return fetchCommitReport(this, commitStore, request, hints);
@@ -30,12 +37,28 @@ export class Chain {
30
37
  /**
31
38
  * Default/generic implementation of fetchExecutionReceipts
32
39
  * @param offRamp - Off-ramp address
33
- * @param messageIds - Set of message IDs to fetch receipts for
40
+ * @param request - CCIPRequest to get execution receipts for
41
+ * @param commit - CCIPCommit info to help narrowing search for executions
34
42
  * @param hints - Additional filtering hints
35
- * @returns Async generator of CCIP execution receipts
43
+ * @returns Async generator of CCIPExecution receipts
36
44
  */
37
- async *fetchExecutionReceipts(offRamp, messageIds, hints) {
38
- yield* fetchExecutionReceipts(this, offRamp, messageIds, hints);
45
+ async *fetchExecutionReceipts(offRamp, request, commit, hints) {
46
+ const onlyLast = !commit?.log.blockNumber && !request.tx.timestamp; // backwards
47
+ for await (const log of this.getLogs({
48
+ startBlock: commit?.log.blockNumber,
49
+ startTime: request.tx.timestamp,
50
+ address: offRamp,
51
+ topics: ['ExecutionStateChanged'],
52
+ ...hints,
53
+ })) {
54
+ const receipt = this.constructor.decodeReceipt(log);
55
+ if (!receipt || receipt.messageId !== request.message.header.messageId)
56
+ continue;
57
+ const timestamp = log.tx?.timestamp ?? (await this.getBlockTimestamp(log.blockNumber));
58
+ yield { receipt, log, timestamp };
59
+ if (onlyLast || receipt.state === ExecutionState.Success)
60
+ break;
61
+ }
39
62
  }
40
63
  }
41
64
  //# sourceMappingURL=chain.js.map
package/dist/chain.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAIvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAwBvD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACF,CAAA;AA0CV;;;GAGG;AACH,MAAM,OAAgB,KAAK;IAIzB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnB,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;IAC5D,CAAC;IA+JD;;;;;;;;QAQI;IACJ,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,OAIC,EACD,KAA8C;QAE9C,OAAO,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAC7D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,sBAAsB,CAC3B,OAAe,EACf,UAAuB,EACvB,KAAyF;QAEzF,KAAK,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IACjE,CAAC;CAmDF"}
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAWhD,OAAO,EAiBL,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAuEjC;;;GAGG;AACH,MAAM,OAAgB,KAAK;IAChB,OAAO,CAAgB;IAChC,MAAM,CAAQ;IAEd;;;OAGG;IACH,YAAY,OAAoB,EAAE,EAAE,MAAM,GAAG,OAAO,KAAiB,EAAE;QACrE,IAAI,OAAO,CAAC,MAAM,KAAM,IAAI,CAAC,WAA2B,CAAC,MAAM;YAC7D,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3F,IAAI,CAAC,OAAO,GAAG,OAAyB,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAKD,iDAAiD;IACjD,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnB,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;IAC5D,CAAC;IA2OD;;;;;;;;QAQI;IACJ,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,OAAyF,EACzF,KAA8C;QAE9C,OAAO,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,sBAAsB,CAC3B,OAAe,EACf,OAAoF,EACpF,MAAmB,EACnB,KAAyB;QAEzB,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAA,CAAC,YAAY;QAC/E,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;YACnC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW;YACnC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS;YAC/B,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,CAAC,uBAAuB,CAAC;YACjC,GAAG,KAAK;SACT,CAAC,EAAE,CAAC;YACH,MAAM,OAAO,GAAI,IAAI,CAAC,WAA2B,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACpE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS;gBAAE,SAAQ;YAEhF,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;YACtF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA;YACjC,IAAI,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,cAAc,CAAC,OAAO;gBAAE,MAAK;QACjE,CAAC;IACH,CAAC;CAmDF"}
package/dist/commits.d.ts CHANGED
@@ -1,24 +1,18 @@
1
+ import type { PickDeep } from 'type-fest';
1
2
  import type { Chain } from './chain.ts';
2
- import { type CCIPCommit, type Lane } from './types.ts';
3
+ import { type CCIPCommit, type CCIPRequest } from './types.ts';
3
4
  /**
4
5
  * Look for a CommitReport at dest for given CCIPRequest
5
6
  * Provides a basic/generic implementation, but subclasses of Chain may override with more specific
6
7
  * logic in Chain.fetchCommitReport method
7
8
  *
8
9
  * @param dest - Destination network provider
10
+ * @param commitStore - Commit store address
9
11
  * @param request - CCIP request info
10
12
  * @param hints - Additional filtering hints
11
13
  * @returns CCIP commit info
12
14
  **/
13
- export declare function fetchCommitReport(dest: Chain, commitStore: string, { lane, message: { header }, timestamp: requestTimestamp, }: {
14
- lane: Lane;
15
- message: {
16
- header: {
17
- sequenceNumber: bigint;
18
- };
19
- };
20
- timestamp?: number;
21
- }, hints?: {
15
+ export declare function fetchCommitReport(dest: Chain, commitStore: string, { lane, message: { header }, tx: { timestamp: requestTimestamp }, }: PickDeep<CCIPRequest, 'lane' | 'message.header.sequenceNumber' | 'tx.timestamp'>, hints?: {
22
16
  startBlock?: number;
23
17
  page?: number;
24
18
  }): Promise<CCIPCommit>;
@@ -1 +1 @@
1
- {"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,EAAe,MAAM,YAAY,CAAA;AAEpE;;;;;;;;;IASI;AACJ,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,MAAM,EACnB,EACE,IAAI,EACJ,OAAO,EAAE,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,gBAAgB,GAC5B,EAAE;IACD,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE;QAAE,MAAM,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,EACD,KAAK,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
1
+ {"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAe,MAAM,YAAY,CAAA;AAE3E;;;;;;;;;;IAUI;AACJ,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,MAAM,EACnB,EACE,IAAI,EACJ,OAAO,EAAE,EAAE,MAAM,EAAE,EACnB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,GACpC,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,+BAA+B,GAAG,cAAc,CAAC,EACnF,KAAK,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
package/dist/commits.js CHANGED
@@ -5,11 +5,12 @@ import { CCIPVersion } from "./types.js";
5
5
  * logic in Chain.fetchCommitReport method
6
6
  *
7
7
  * @param dest - Destination network provider
8
+ * @param commitStore - Commit store address
8
9
  * @param request - CCIP request info
9
10
  * @param hints - Additional filtering hints
10
11
  * @returns CCIP commit info
11
12
  **/
12
- export async function fetchCommitReport(dest, commitStore, { lane, message: { header }, timestamp: requestTimestamp, }, hints) {
13
+ export async function fetchCommitReport(dest, commitStore, { lane, message: { header }, tx: { timestamp: requestTimestamp }, }, hints) {
13
14
  for await (const log of dest.getLogs({
14
15
  ...hints,
15
16
  ...(!hints?.startBlock ? { startTime: requestTimestamp } : { startBlock: hints.startBlock }),
@@ -1 +1 @@
1
- {"version":3,"file":"commits.js","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,WAAW,EAAE,MAAM,YAAY,CAAA;AAEpE;;;;;;;;;IASI;AACJ,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAW,EACX,WAAmB,EACnB,EACE,IAAI,EACJ,OAAO,EAAE,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,gBAAgB,GAK5B,EACD,KAA8C;IAE9C,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QACnC,GAAG,KAAK;QACR,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC5F,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC;KACtF,CAAC,EAAE,CAAC;QACH,MAAM,MAAM,GAAI,IAAI,CAAC,WAA2B,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;YAAE,SAAQ;QAChE,0FAA0F;QAC1F,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;YAAE,MAAK;QAClD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,EAAE,UAAU,IAAI,gBAAgB,uBAAuB,MAAM,CAAC,cAAc,EAAE,CACnH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"commits.js","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqC,WAAW,EAAE,MAAM,YAAY,CAAA;AAE3E;;;;;;;;;;IAUI;AACJ,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAW,EACX,WAAmB,EACnB,EACE,IAAI,EACJ,OAAO,EAAE,EAAE,MAAM,EAAE,EACnB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAC8C,EACnF,KAA8C;IAE9C,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QACnC,GAAG,KAAK;QACR,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC5F,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC;KACtF,CAAC,EAAE,CAAC;QACH,MAAM,MAAM,GAAI,IAAI,CAAC,WAA2B,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;YAAE,SAAQ;QAChE,0FAA0F;QAC1F,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc;YAAE,MAAK;QAClD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,EAAE,UAAU,IAAI,gBAAgB,uBAAuB,MAAM,CAAC,cAAc,EAAE,CACnH,CAAA;AACH,CAAC"}
@@ -20,6 +20,11 @@ export declare const interfaces: {
20
20
  readonly EVM2EVMOnRamp_v1_2: Interface;
21
21
  readonly Custom: Interface;
22
22
  };
23
+ /**
24
+ * Gets all event fragments matching the given event names.
25
+ * @param events - Event names to match.
26
+ * @returns Map of topic hash to event fragment.
27
+ */
23
28
  export declare function getAllFragmentsMatchingEvents(events: readonly string[]): Record<`0x${string}`, EventFragment>;
24
29
  export declare const requestsFragments: Record<`0x${string}`, EventFragment>;
25
30
  export declare const commitsFragments: Record<`0x${string}`, EventFragment>;
@@ -1 +1 @@
1
- {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/evm/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAkBhE,eAAO,MAAM,eAAe,UAA6B,CAAA;AAEzD,eAAO,MAAM,iBAAiB,UAAW,CAAA;AACzC,eAAO,MAAM,yBAAyB,UAAW,CAAA;AAQjD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CAiBb,CAAA;AAEV,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,aAAa,CAAC,CAStC;AACD,eAAO,MAAM,iBAAiB,sCAG5B,CAAA;AACF,eAAO,MAAM,gBAAgB,sCAG3B,CAAA;AACF,eAAO,MAAM,iBAAiB,sCAA2D,CAAA"}
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/evm/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAkBhE,eAAO,MAAM,eAAe,UAA6B,CAAA;AAEzD,eAAO,MAAM,iBAAiB,UAAW,CAAA;AACzC,eAAO,MAAM,yBAAyB,UAAW,CAAA;AAQjD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CAiBb,CAAA;AAEV;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,aAAa,CAAC,CAStC;AACD,eAAO,MAAM,iBAAiB,sCAG5B,CAAA;AACF,eAAO,MAAM,gBAAgB,sCAG3B,CAAA;AACF,eAAO,MAAM,iBAAiB,sCAA2D,CAAA"}