@wormhole-labs/cctp-executor-route 0.0.1-beta.10

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 (148) hide show
  1. package/README.md +68 -0
  2. package/dist/cjs/aptos/executor.d.ts +18 -0
  3. package/dist/cjs/aptos/executor.d.ts.map +1 -0
  4. package/dist/cjs/aptos/executor.js +73 -0
  5. package/dist/cjs/aptos/executor.js.map +1 -0
  6. package/dist/cjs/aptos/index.d.ts +2 -0
  7. package/dist/cjs/aptos/index.d.ts.map +1 -0
  8. package/dist/cjs/aptos/index.js +22 -0
  9. package/dist/cjs/aptos/index.js.map +1 -0
  10. package/dist/cjs/consts.d.ts +13 -0
  11. package/dist/cjs/consts.d.ts.map +1 -0
  12. package/dist/cjs/consts.js +94 -0
  13. package/dist/cjs/consts.js.map +1 -0
  14. package/dist/cjs/evm/executor.d.ts +19 -0
  15. package/dist/cjs/evm/executor.d.ts.map +1 -0
  16. package/dist/cjs/evm/executor.js +69 -0
  17. package/dist/cjs/evm/executor.js.map +1 -0
  18. package/dist/cjs/evm/index.d.ts +2 -0
  19. package/dist/cjs/evm/index.d.ts.map +1 -0
  20. package/dist/cjs/evm/index.js +22 -0
  21. package/dist/cjs/evm/index.js.map +1 -0
  22. package/dist/cjs/index.d.ts +96 -0
  23. package/dist/cjs/index.d.ts.map +1 -0
  24. package/dist/cjs/index.js +321 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/layouts/conversions.d.ts +5 -0
  27. package/dist/cjs/layouts/conversions.d.ts.map +1 -0
  28. package/dist/cjs/layouts/conversions.js +8 -0
  29. package/dist/cjs/layouts/conversions.js.map +1 -0
  30. package/dist/cjs/layouts/index.d.ts +4 -0
  31. package/dist/cjs/layouts/index.d.ts.map +1 -0
  32. package/dist/cjs/layouts/index.js +20 -0
  33. package/dist/cjs/layouts/index.js.map +1 -0
  34. package/dist/cjs/layouts/relayInstruction.d.ts +86 -0
  35. package/dist/cjs/layouts/relayInstruction.d.ts.map +1 -0
  36. package/dist/cjs/layouts/relayInstruction.js +32 -0
  37. package/dist/cjs/layouts/relayInstruction.js.map +1 -0
  38. package/dist/cjs/layouts/requestForExecution.d.ts +18 -0
  39. package/dist/cjs/layouts/requestForExecution.d.ts.map +1 -0
  40. package/dist/cjs/layouts/requestForExecution.js +15 -0
  41. package/dist/cjs/layouts/requestForExecution.js.map +1 -0
  42. package/dist/cjs/layouts/signedQuote.d.ts +102 -0
  43. package/dist/cjs/layouts/signedQuote.d.ts.map +1 -0
  44. package/dist/cjs/layouts/signedQuote.js +46 -0
  45. package/dist/cjs/layouts/signedQuote.js.map +1 -0
  46. package/dist/cjs/sui/executor.d.ts +24 -0
  47. package/dist/cjs/sui/executor.d.ts.map +1 -0
  48. package/dist/cjs/sui/executor.js +129 -0
  49. package/dist/cjs/sui/executor.js.map +1 -0
  50. package/dist/cjs/sui/index.d.ts +2 -0
  51. package/dist/cjs/sui/index.d.ts.map +1 -0
  52. package/dist/cjs/sui/index.js +22 -0
  53. package/dist/cjs/sui/index.js.map +1 -0
  54. package/dist/cjs/svm/executor.d.ts +21 -0
  55. package/dist/cjs/svm/executor.d.ts.map +1 -0
  56. package/dist/cjs/svm/executor.js +89 -0
  57. package/dist/cjs/svm/executor.js.map +1 -0
  58. package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts +72 -0
  59. package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts.map +1 -0
  60. package/dist/cjs/svm/idl/example_cctp_with_executor.js +74 -0
  61. package/dist/cjs/svm/idl/example_cctp_with_executor.js.map +1 -0
  62. package/dist/cjs/svm/index.d.ts +2 -0
  63. package/dist/cjs/svm/index.d.ts.map +1 -0
  64. package/dist/cjs/svm/index.js +22 -0
  65. package/dist/cjs/svm/index.js.map +1 -0
  66. package/dist/cjs/types.d.ts +6 -0
  67. package/dist/cjs/types.d.ts.map +1 -0
  68. package/dist/cjs/types.js +3 -0
  69. package/dist/cjs/types.js.map +1 -0
  70. package/dist/cjs/utils.d.ts +64 -0
  71. package/dist/cjs/utils.d.ts.map +1 -0
  72. package/dist/cjs/utils.js +74 -0
  73. package/dist/cjs/utils.js.map +1 -0
  74. package/dist/esm/aptos/executor.d.ts +18 -0
  75. package/dist/esm/aptos/executor.d.ts.map +1 -0
  76. package/dist/esm/aptos/executor.js +69 -0
  77. package/dist/esm/aptos/executor.js.map +1 -0
  78. package/dist/esm/aptos/index.d.ts +2 -0
  79. package/dist/esm/aptos/index.d.ts.map +1 -0
  80. package/dist/esm/aptos/index.js +6 -0
  81. package/dist/esm/aptos/index.js.map +1 -0
  82. package/dist/esm/consts.d.ts +13 -0
  83. package/dist/esm/consts.d.ts.map +1 -0
  84. package/dist/esm/consts.js +91 -0
  85. package/dist/esm/consts.js.map +1 -0
  86. package/dist/esm/evm/executor.d.ts +19 -0
  87. package/dist/esm/evm/executor.d.ts.map +1 -0
  88. package/dist/esm/evm/executor.js +65 -0
  89. package/dist/esm/evm/executor.js.map +1 -0
  90. package/dist/esm/evm/index.d.ts +2 -0
  91. package/dist/esm/evm/index.d.ts.map +1 -0
  92. package/dist/esm/evm/index.js +6 -0
  93. package/dist/esm/evm/index.js.map +1 -0
  94. package/dist/esm/index.d.ts +96 -0
  95. package/dist/esm/index.d.ts.map +1 -0
  96. package/dist/esm/index.js +316 -0
  97. package/dist/esm/index.js.map +1 -0
  98. package/dist/esm/layouts/conversions.d.ts +5 -0
  99. package/dist/esm/layouts/conversions.d.ts.map +1 -0
  100. package/dist/esm/layouts/conversions.js +5 -0
  101. package/dist/esm/layouts/conversions.js.map +1 -0
  102. package/dist/esm/layouts/index.d.ts +4 -0
  103. package/dist/esm/layouts/index.d.ts.map +1 -0
  104. package/dist/esm/layouts/index.js +4 -0
  105. package/dist/esm/layouts/index.js.map +1 -0
  106. package/dist/esm/layouts/relayInstruction.d.ts +86 -0
  107. package/dist/esm/layouts/relayInstruction.d.ts.map +1 -0
  108. package/dist/esm/layouts/relayInstruction.js +29 -0
  109. package/dist/esm/layouts/relayInstruction.js.map +1 -0
  110. package/dist/esm/layouts/requestForExecution.d.ts +18 -0
  111. package/dist/esm/layouts/requestForExecution.d.ts.map +1 -0
  112. package/dist/esm/layouts/requestForExecution.js +12 -0
  113. package/dist/esm/layouts/requestForExecution.js.map +1 -0
  114. package/dist/esm/layouts/signedQuote.d.ts +102 -0
  115. package/dist/esm/layouts/signedQuote.d.ts.map +1 -0
  116. package/dist/esm/layouts/signedQuote.js +43 -0
  117. package/dist/esm/layouts/signedQuote.js.map +1 -0
  118. package/dist/esm/sui/executor.d.ts +24 -0
  119. package/dist/esm/sui/executor.d.ts.map +1 -0
  120. package/dist/esm/sui/executor.js +125 -0
  121. package/dist/esm/sui/executor.js.map +1 -0
  122. package/dist/esm/sui/index.d.ts +2 -0
  123. package/dist/esm/sui/index.d.ts.map +1 -0
  124. package/dist/esm/sui/index.js +6 -0
  125. package/dist/esm/sui/index.js.map +1 -0
  126. package/dist/esm/svm/executor.d.ts +21 -0
  127. package/dist/esm/svm/executor.d.ts.map +1 -0
  128. package/dist/esm/svm/executor.js +85 -0
  129. package/dist/esm/svm/executor.js.map +1 -0
  130. package/dist/esm/svm/idl/example_cctp_with_executor.d.ts +72 -0
  131. package/dist/esm/svm/idl/example_cctp_with_executor.d.ts.map +1 -0
  132. package/dist/esm/svm/idl/example_cctp_with_executor.js +71 -0
  133. package/dist/esm/svm/idl/example_cctp_with_executor.js.map +1 -0
  134. package/dist/esm/svm/index.d.ts +2 -0
  135. package/dist/esm/svm/index.d.ts.map +1 -0
  136. package/dist/esm/svm/index.js +6 -0
  137. package/dist/esm/svm/index.js.map +1 -0
  138. package/dist/esm/types.d.ts +6 -0
  139. package/dist/esm/types.d.ts.map +1 -0
  140. package/dist/esm/types.js +2 -0
  141. package/dist/esm/types.js.map +1 -0
  142. package/dist/esm/utils.d.ts +64 -0
  143. package/dist/esm/utils.d.ts.map +1 -0
  144. package/dist/esm/utils.js +64 -0
  145. package/dist/esm/utils.js.map +1 -0
  146. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  147. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  148. package/package.json +52 -0
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CCTPW7ExecutorRoute = void 0;
4
+ exports.cctpW7ExecutorRoute = cctpW7ExecutorRoute;
5
+ const sdk_base_1 = require("@wormhole-foundation/sdk-base");
6
+ const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
7
+ const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
8
+ const utils_1 = require("./utils");
9
+ const layouts_1 = require("./layouts");
10
+ const consts_1 = require("./consts");
11
+ const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
12
+ // IMPORTANT: register the platform specific implementations of the protocol
13
+ require("./aptos/index.js");
14
+ require("./evm/index.js");
15
+ require("./sui/index.js");
16
+ require("./svm/index.js");
17
+ // The minimum rent exemption amount for a 165 byte account (e.g. an ATA)
18
+ // cache it here to avoid fetching it from the Solana RPC
19
+ let ataMinRentAmount = undefined;
20
+ // Use this function to create a new CCTPW7ExecutorRoute with custom config
21
+ function cctpW7ExecutorRoute(config) {
22
+ if (config.referrerFeeDbps < 0 || config.referrerFeeDbps > 65535n) {
23
+ throw new Error("Referrer fee must be between 0 and 65535");
24
+ }
25
+ class CCTPW7ExecutorRouteImpl extends CCTPW7ExecutorRoute {
26
+ static config = config;
27
+ }
28
+ return CCTPW7ExecutorRouteImpl;
29
+ }
30
+ class CCTPW7ExecutorRoute extends sdk_connect_1.routes.AutomaticRoute {
31
+ static NATIVE_GAS_DROPOFF_SUPPORTED = true;
32
+ // @ts-ignore
33
+ // Since we set the config on the static class, access it with this param
34
+ // the CCTPW7ExecutorRoute.config will always be empty
35
+ staticConfig = this.constructor.config;
36
+ static config = { referrerFeeDbps: 0n };
37
+ static meta = {
38
+ name: "CCTPW7ExecutorRoute",
39
+ provider: "W7 Executor",
40
+ };
41
+ static supportedNetworks() {
42
+ return ["Mainnet", "Testnet"];
43
+ }
44
+ static supportedChains(network) {
45
+ if (sdk_base_1.contracts.circleContractChains.has(network)) {
46
+ return sdk_base_1.contracts.circleContractChains.get(network);
47
+ }
48
+ return [];
49
+ }
50
+ static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
51
+ // Ensure the source token is USDC
52
+ const sourceChainUsdcContract = sdk_base_1.circle.usdcContract.get(fromChain.network, fromChain.chain);
53
+ if (!(sourceChainUsdcContract &&
54
+ (0, sdk_definitions_1.isSameToken)(sourceToken, sdk_connect_1.Wormhole.tokenId(fromChain.chain, sourceChainUsdcContract)))) {
55
+ return [];
56
+ }
57
+ const { network, chain } = toChain;
58
+ if (!sdk_base_1.circle.usdcContract.has(network, chain))
59
+ return [];
60
+ return [
61
+ sdk_connect_1.Wormhole.chainAddress(chain, sdk_base_1.circle.usdcContract.get(network, chain)),
62
+ ];
63
+ }
64
+ getDefaultOptions() {
65
+ return {
66
+ nativeGas: 0,
67
+ };
68
+ }
69
+ async validate(request, params) {
70
+ if (params.options?.nativeGas &&
71
+ (params.options.nativeGas < 0 || params.options.nativeGas > 1)) {
72
+ return {
73
+ valid: false,
74
+ error: new Error("Invalid native gas percentage"),
75
+ params,
76
+ };
77
+ }
78
+ const validatedParams = {
79
+ normalizedParams: {
80
+ amount: request.parseAmount(params.amount),
81
+ },
82
+ options: params.options ?? this.getDefaultOptions(),
83
+ ...params,
84
+ };
85
+ return { valid: true, params: validatedParams };
86
+ }
87
+ async quote(request, params) {
88
+ const { fromChain, toChain } = request;
89
+ const srcUsdcAddress = sdk_base_1.circle.usdcContract.get(fromChain.network, fromChain.chain);
90
+ if (!srcUsdcAddress) {
91
+ throw new Error("Invalid transfer, no USDC contract on source");
92
+ }
93
+ const dstUsdcAddress = sdk_base_1.circle.usdcContract.get(toChain.network, toChain.chain);
94
+ if (!dstUsdcAddress) {
95
+ throw new Error("Invalid transfer, no USDC contract on destination");
96
+ }
97
+ const referrerAddress = consts_1.referrers[fromChain.network]?.[fromChain.chain];
98
+ if (!referrerAddress) {
99
+ return {
100
+ success: false,
101
+ error: new Error("No referrer address found"),
102
+ };
103
+ }
104
+ const referrer = sdk_connect_1.Wormhole.chainAddress(fromChain.chain, referrerAddress);
105
+ const referrerFeeDbps = this.staticConfig.referrerFeeDbps;
106
+ const { referrerFee, remainingAmount } = (0, utils_1.calculateReferrerFee)(sdk_base_1.amount.units(params.normalizedParams.amount), this.staticConfig.referrerFeeDbps);
107
+ if (remainingAmount <= 0n) {
108
+ return {
109
+ success: false,
110
+ error: new Error("Amount after fee <= 0"),
111
+ };
112
+ }
113
+ const gasLimit = consts_1.gasLimits[fromChain.network]?.[toChain.chain];
114
+ if (!gasLimit) {
115
+ return {
116
+ success: false,
117
+ error: new Error("Gas limit not found"),
118
+ };
119
+ }
120
+ const capabilities = await (0, utils_1.fetchCapabilities)(fromChain.network);
121
+ const srcCapabilities = capabilities[(0, sdk_base_1.toChainId)(fromChain.chain)];
122
+ if (!srcCapabilities) {
123
+ return {
124
+ success: false,
125
+ error: new Error("Unsupported source chain"),
126
+ };
127
+ }
128
+ const dstCapabilities = capabilities[(0, sdk_base_1.toChainId)(toChain.chain)];
129
+ if (!dstCapabilities || !dstCapabilities.requestPrefixes.includes("ERC1")) {
130
+ return {
131
+ success: false,
132
+ error: new Error("Unsupported destination chain"),
133
+ };
134
+ }
135
+ const { recipient } = request;
136
+ let tokenAccountExists = true;
137
+ // Check if the associated token account (ATA) exists on Solana.
138
+ // If it doesn't, include a gas drop-off instruction so the relayer can create it.
139
+ // Note: There's a potential race condition — the account might exist during this check,
140
+ // but could be closed before the transfer completes.
141
+ if (recipient && toChain.chain === "Solana") {
142
+ const usdcAddress = sdk_connect_1.Wormhole.parseAddress("Solana", dstUsdcAddress);
143
+ const ata = await toChain.getTokenAccount(recipient.address, usdcAddress);
144
+ const connection = await toChain.getRpc();
145
+ const ataAccount = await connection.getAccountInfo(new sdk_solana_1.SolanaAddress(ata.address).unwrap());
146
+ tokenAccountExists = ataAccount !== null;
147
+ if (!tokenAccountExists && !ataMinRentAmount) {
148
+ ataMinRentAmount = BigInt(await connection.getMinimumBalanceForRentExemption(165));
149
+ }
150
+ }
151
+ let msgValue = 0n;
152
+ if (toChain.chain === "Solana") {
153
+ msgValue += consts_1.SOLANA_MSG_VALUE_BASE_FEE;
154
+ if (!tokenAccountExists && ataMinRentAmount) {
155
+ msgValue += ataMinRentAmount;
156
+ }
157
+ }
158
+ const relayRequests = [];
159
+ // Add the gas instruction
160
+ relayRequests.push({
161
+ request: {
162
+ type: "GasInstruction",
163
+ gasLimit,
164
+ msgValue,
165
+ },
166
+ });
167
+ // Calculate the gas dropOff value
168
+ const gasDropOffLimit = BigInt(dstCapabilities.gasDropOffLimit);
169
+ const dropOff = params.options.nativeGas && gasDropOffLimit > 0n
170
+ ? (BigInt(Math.round(params.options.nativeGas * 100)) *
171
+ gasDropOffLimit) /
172
+ 100n
173
+ : 0n;
174
+ // Add the gas drop-off instruction if applicable
175
+ if (dropOff > 0n || !tokenAccountExists) {
176
+ relayRequests.push({
177
+ request: {
178
+ type: "GasDropOffInstruction",
179
+ dropOff,
180
+ // If the recipient is undefined (e.g. the user hasn’t connected their wallet yet),
181
+ // we temporarily use a dummy address to fetch a quote.
182
+ // The recipient address is validated later in the `initiate` method, which will throw if it's still missing.
183
+ recipient: recipient
184
+ ? recipient.address.toUniversalAddress()
185
+ : new sdk_definitions_1.UniversalAddress(new Uint8Array(32)),
186
+ },
187
+ });
188
+ }
189
+ const relayInstructions = (0, sdk_base_1.serializeLayout)(layouts_1.relayInstructionsLayout, {
190
+ requests: relayRequests,
191
+ });
192
+ const quote = await (0, utils_1.fetchSignedQuote)(fromChain.network, fromChain.chain, toChain.chain, sdk_base_1.encoding.hex.encode(relayInstructions, true));
193
+ if (!quote.estimatedCost) {
194
+ return {
195
+ success: false,
196
+ error: new Error("No estimated cost"),
197
+ };
198
+ }
199
+ const signedQuoteBytes = sdk_base_1.encoding.hex.decode(quote.signedQuote);
200
+ const signedQuote = (0, sdk_base_1.deserializeLayout)(layouts_1.signedQuoteLayout, signedQuoteBytes);
201
+ // https://developers.circle.com/stablecoins/docs/required-block-confirmations
202
+ const eta = fromChain.chain === "Polygon"
203
+ ? 2_000 * 200
204
+ : sdk_base_1.finality.estimateFinalityTime(fromChain.chain) + 1_000; // buffer for the relayer
205
+ const estimatedCost = BigInt(quote.estimatedCost);
206
+ const details = {
207
+ signedQuote: signedQuoteBytes,
208
+ relayInstructions: relayInstructions,
209
+ estimatedCost,
210
+ referrer,
211
+ referrerFee,
212
+ remainingAmount,
213
+ referrerFeeDbps,
214
+ };
215
+ const [srcNativeDecimals, dstNativeDecimals] = await Promise.all([
216
+ fromChain.getDecimals("native"),
217
+ toChain.getDecimals("native"),
218
+ ]);
219
+ return {
220
+ success: true,
221
+ params,
222
+ sourceToken: {
223
+ token: request.source.id,
224
+ amount: params.normalizedParams.amount,
225
+ },
226
+ destinationToken: {
227
+ token: request.destination.id,
228
+ amount: sdk_base_1.amount.fromBaseUnits(remainingAmount, request.destination.decimals),
229
+ },
230
+ relayFee: {
231
+ token: (0, sdk_definitions_1.nativeTokenId)(fromChain.chain),
232
+ amount: sdk_base_1.amount.fromBaseUnits(estimatedCost, srcNativeDecimals),
233
+ },
234
+ destinationNativeGas: sdk_base_1.amount.fromBaseUnits(dropOff, dstNativeDecimals),
235
+ eta,
236
+ expires: signedQuote.quote.expiryTime,
237
+ details,
238
+ };
239
+ }
240
+ async initiate(request, signer, quote, to) {
241
+ if (!quote.details) {
242
+ throw new Error("Missing quote details");
243
+ }
244
+ const relayInstructions = (0, sdk_base_1.deserializeLayout)(layouts_1.relayInstructionsLayout, quote.details.relayInstructions);
245
+ // Make sure that the gas drop-off recipient matches the actual recipient
246
+ relayInstructions.requests.forEach(({ request }) => {
247
+ if (request.type === "GasDropOffInstruction" &&
248
+ !request.recipient.equals(to.address.toUniversalAddress())) {
249
+ throw new Error("Gas drop-off recipient does not match");
250
+ }
251
+ });
252
+ const executor = await request.fromChain.getProtocol("CCTPW7Executor");
253
+ const sender = sdk_connect_1.Wormhole.parseAddress(signer.chain(), signer.address());
254
+ // When transferring to Solana, the recipient address is the ATA for CCTP transfers
255
+ let cctpRecipient = to;
256
+ if (to.chain === "Solana") {
257
+ const usdcAddress = sdk_connect_1.Wormhole.parseAddress("Solana", sdk_base_1.circle.usdcContract.get(request.toChain.network, request.toChain.chain));
258
+ cctpRecipient = await request.toChain.getTokenAccount(to.address, usdcAddress);
259
+ }
260
+ const xfer = await executor.transfer(sender, cctpRecipient, quote.details);
261
+ const txids = await (0, sdk_connect_1.signSendWait)(request.fromChain, xfer, signer);
262
+ return {
263
+ from: request.fromChain.chain,
264
+ to: request.toChain.chain,
265
+ state: sdk_connect_1.TransferState.SourceInitiated,
266
+ originTxs: txids,
267
+ };
268
+ }
269
+ async *track(receipt, timeout) {
270
+ if ((0, sdk_connect_1.isCompleted)(receipt) || (0, sdk_connect_1.isFailed)(receipt))
271
+ return receipt;
272
+ let leftover = timeout ? timeout : 60 * 60 * 1000;
273
+ while (leftover > 0) {
274
+ const start = Date.now();
275
+ if ((0, sdk_connect_1.isSourceInitiated)(receipt) ||
276
+ (0, sdk_connect_1.isSourceFinalized)(receipt) ||
277
+ (0, sdk_connect_1.isAttested)(receipt)) {
278
+ try {
279
+ const [txStatus] = await (0, utils_1.fetchStatus)(this.wh.network, receipt.originTxs.at(-1).txid, receipt.from);
280
+ if (!txStatus) {
281
+ throw new Error("No transaction status found");
282
+ }
283
+ const relayStatus = txStatus?.status;
284
+ if (relayStatus === utils_1.RelayStatus.Failed || // this could happen if simulation fails
285
+ relayStatus === utils_1.RelayStatus.Underpaid || // only happens if you don't pay at least the costEstimate
286
+ relayStatus === utils_1.RelayStatus.Unsupported || // capabilities check didn't pass
287
+ relayStatus === utils_1.RelayStatus.Aborted // An unrecoverable error indicating the attempt should stop (bad data, pre-flight checks failed, or chain-specific conditions)
288
+ ) {
289
+ receipt = {
290
+ ...receipt,
291
+ state: sdk_connect_1.TransferState.Failed,
292
+ error: new sdk_connect_1.routes.RelayFailedError(`Relay failed with status: ${relayStatus}`),
293
+ };
294
+ }
295
+ if (relayStatus === utils_1.RelayStatus.Submitted) {
296
+ receipt = {
297
+ ...receipt,
298
+ state: sdk_connect_1.TransferState.DestinationFinalized,
299
+ attestation: { id: txStatus.id, attestation: {} },
300
+ };
301
+ }
302
+ // Important to yield before checking for completion
303
+ // so the caller can update the receipt state
304
+ yield receipt;
305
+ if ((0, sdk_connect_1.isCompleted)(receipt) || (0, sdk_connect_1.isFailed)(receipt)) {
306
+ return receipt;
307
+ }
308
+ }
309
+ catch (error) {
310
+ console.error(`Error fetching transaction status: ${error.message || error}`);
311
+ }
312
+ }
313
+ // Sleep so we don't spam the endpoint
314
+ await new Promise((resolve) => setTimeout(resolve, 3000));
315
+ leftover -= Date.now() - start;
316
+ }
317
+ return receipt;
318
+ }
319
+ }
320
+ exports.CCTPW7ExecutorRoute = CCTPW7ExecutorRoute;
321
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const dateConversion: {
2
+ readonly to: (encoded: bigint) => Date;
3
+ readonly from: (decoded: Date) => bigint;
4
+ };
5
+ //# sourceMappingURL=conversions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../src/layouts/conversions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;2BACX,MAAM;6BACJ,IAAI;CAC6B,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dateConversion = void 0;
4
+ exports.dateConversion = {
5
+ to: (encoded) => new Date(Number(encoded * 1000n)),
6
+ from: (decoded) => BigInt(decoded.getTime()) / 1000n,
7
+ };
8
+ //# sourceMappingURL=conversions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../../src/layouts/conversions.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG;IAC5B,EAAE,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,OAAa,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;CACT,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./relayInstruction.js";
2
+ export * from "./requestForExecution.js";
3
+ export * from "./signedQuote.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./relayInstruction.js"), exports);
18
+ __exportStar(require("./requestForExecution.js"), exports);
19
+ __exportStar(require("./signedQuote.js"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layouts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC;AACzC,mDAAiC"}
@@ -0,0 +1,86 @@
1
+ import { DeriveType } from "binary-layout";
2
+ export declare const gasInstructionLayout: readonly [{
3
+ readonly name: "gasLimit";
4
+ readonly binary: "uint";
5
+ readonly size: 16;
6
+ }, {
7
+ readonly name: "msgValue";
8
+ readonly binary: "uint";
9
+ readonly size: 16;
10
+ }];
11
+ export type GasInstruction = DeriveType<typeof gasInstructionLayout>;
12
+ export declare const gasDropOffInstructionLayout: readonly [{
13
+ readonly name: "dropOff";
14
+ readonly binary: "uint";
15
+ readonly size: 16;
16
+ }, {
17
+ readonly binary: "bytes";
18
+ readonly size: 32;
19
+ readonly custom: {
20
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
21
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
22
+ };
23
+ readonly name: "recipient";
24
+ }];
25
+ export type GasDropOffInstruction = DeriveType<typeof gasDropOffInstructionLayout>;
26
+ export declare const relayInstructionLayout: readonly [{
27
+ readonly name: "request";
28
+ readonly binary: "switch";
29
+ readonly idSize: 1;
30
+ readonly idTag: "type";
31
+ readonly layouts: readonly [readonly [readonly [1, "GasInstruction"], readonly [{
32
+ readonly name: "gasLimit";
33
+ readonly binary: "uint";
34
+ readonly size: 16;
35
+ }, {
36
+ readonly name: "msgValue";
37
+ readonly binary: "uint";
38
+ readonly size: 16;
39
+ }]], readonly [readonly [2, "GasDropOffInstruction"], readonly [{
40
+ readonly name: "dropOff";
41
+ readonly binary: "uint";
42
+ readonly size: 16;
43
+ }, {
44
+ readonly binary: "bytes";
45
+ readonly size: 32;
46
+ readonly custom: {
47
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
48
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
49
+ };
50
+ readonly name: "recipient";
51
+ }]]];
52
+ }];
53
+ export type RelayInstruction = DeriveType<typeof relayInstructionLayout>;
54
+ export declare const relayInstructionsLayout: readonly [{
55
+ readonly name: "requests";
56
+ readonly binary: "array";
57
+ readonly layout: readonly [{
58
+ readonly name: "request";
59
+ readonly binary: "switch";
60
+ readonly idSize: 1;
61
+ readonly idTag: "type";
62
+ readonly layouts: readonly [readonly [readonly [1, "GasInstruction"], readonly [{
63
+ readonly name: "gasLimit";
64
+ readonly binary: "uint";
65
+ readonly size: 16;
66
+ }, {
67
+ readonly name: "msgValue";
68
+ readonly binary: "uint";
69
+ readonly size: 16;
70
+ }]], readonly [readonly [2, "GasDropOffInstruction"], readonly [{
71
+ readonly name: "dropOff";
72
+ readonly binary: "uint";
73
+ readonly size: 16;
74
+ }, {
75
+ readonly binary: "bytes";
76
+ readonly size: 32;
77
+ readonly custom: {
78
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
79
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
80
+ };
81
+ readonly name: "recipient";
82
+ }]]];
83
+ }];
84
+ }];
85
+ export type RelayInstructions = DeriveType<typeof relayInstructionsLayout>;
86
+ //# sourceMappingURL=relayInstruction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayInstruction.d.ts","sourceRoot":"","sources":["../../../src/layouts/relayInstruction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAU,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,oBAAoB;;;;;;;;EAGN,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAErE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;EAGb,CAAC;AAE5B,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAC5C,OAAO,2BAA2B,CACnC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;EAWR,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMT,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.relayInstructionsLayout = exports.relayInstructionLayout = exports.gasDropOffInstructionLayout = exports.gasInstructionLayout = void 0;
4
+ const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
+ exports.gasInstructionLayout = [
6
+ { name: "gasLimit", binary: "uint", size: 16 },
7
+ { name: "msgValue", binary: "uint", size: 16 },
8
+ ];
9
+ exports.gasDropOffInstructionLayout = [
10
+ { name: "dropOff", binary: "uint", size: 16 },
11
+ { name: "recipient", ...sdk_connect_1.layoutItems.universalAddressItem },
12
+ ];
13
+ exports.relayInstructionLayout = [
14
+ {
15
+ name: "request",
16
+ binary: "switch",
17
+ idSize: 1,
18
+ idTag: "type",
19
+ layouts: [
20
+ [[1, "GasInstruction"], exports.gasInstructionLayout],
21
+ [[2, "GasDropOffInstruction"], exports.gasDropOffInstructionLayout],
22
+ ],
23
+ },
24
+ ];
25
+ exports.relayInstructionsLayout = [
26
+ {
27
+ name: "requests",
28
+ binary: "array",
29
+ layout: exports.relayInstructionLayout,
30
+ },
31
+ ];
32
+ //# sourceMappingURL=relayInstruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayInstruction.js","sourceRoot":"","sources":["../../../src/layouts/relayInstruction.ts"],"names":[],"mappings":";;;AAAA,kEAA+D;AAGlD,QAAA,oBAAoB,GAAG;IAClC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IAC9C,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;CACrB,CAAC;AAIf,QAAA,2BAA2B,GAAG;IACzC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IAC7C,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,yBAAW,CAAC,oBAAoB,EAAE;CACjC,CAAC;AAMf,QAAA,sBAAsB,GAAG;IACpC;QACE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,MAAM;QACb,OAAO,EAAE;YACP,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,4BAAoB,CAAC;YAC7C,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAAE,mCAA2B,CAAC;SAC5D;KACF;CACwB,CAAC;AAIf,QAAA,uBAAuB,GAAG;IACrC;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,8BAAsB;KAC/B;CACwB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { DeriveType } from "binary-layout";
2
+ export declare enum RequestPrefix {
3
+ ERM1 = "ERM1",// MM
4
+ ERV1 = "ERV1",// VAA_V1
5
+ ERN1 = "ERN1",// NTT_V1
6
+ ERC1 = "ERC1"
7
+ }
8
+ export declare const cctpV1RequestLayout: readonly [{
9
+ readonly name: "sourceDomain";
10
+ readonly binary: "uint";
11
+ readonly size: 4;
12
+ }, {
13
+ readonly name: "nonce";
14
+ readonly binary: "uint";
15
+ readonly size: 8;
16
+ }];
17
+ export type CCTPv1Request = DeriveType<typeof cctpV1RequestLayout>;
18
+ //# sourceMappingURL=requestForExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestForExecution.d.ts","sourceRoot":"","sources":["../../../src/layouts/requestForExecution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,MAAM,eAAe,CAAC;AAEnD,oBAAY,aAAa;IACvB,IAAI,SAAS,CAAE,KAAK;IACpB,IAAI,SAAS,CAAE,SAAS;IACxB,IAAI,SAAS,CAAE,SAAS;IACxB,IAAI,SAAS;CACd;AAED,eAAO,MAAM,mBAAmB;;;;;;;;EAGL,CAAC;AAE5B,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cctpV1RequestLayout = exports.RequestPrefix = void 0;
4
+ var RequestPrefix;
5
+ (function (RequestPrefix) {
6
+ RequestPrefix["ERM1"] = "ERM1";
7
+ RequestPrefix["ERV1"] = "ERV1";
8
+ RequestPrefix["ERN1"] = "ERN1";
9
+ RequestPrefix["ERC1"] = "ERC1";
10
+ })(RequestPrefix || (exports.RequestPrefix = RequestPrefix = {}));
11
+ exports.cctpV1RequestLayout = [
12
+ { name: "sourceDomain", binary: "uint", size: 4 },
13
+ { name: "nonce", binary: "uint", size: 8 },
14
+ ];
15
+ //# sourceMappingURL=requestForExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestForExecution.js","sourceRoot":"","sources":["../../../src/layouts/requestForExecution.ts"],"names":[],"mappings":";;;AAEA,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,8BAAa,CAAA;AACf,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAEY,QAAA,mBAAmB,GAAG;IACjC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;CACjB,CAAC"}