@wormhole-labs/cctp-executor-route 1.0.3 → 2.0.0-beta.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 (127) hide show
  1. package/dist/esm/layouts/relayInstruction.d.ts +6 -6
  2. package/dist/esm/routes/cctpV2Fast.d.ts +1 -1
  3. package/dist/esm/routes/cctpV2Standard.d.ts +1 -1
  4. package/dist/esm/sui/executor.d.ts +4 -4
  5. package/dist/esm/sui/executor.d.ts.map +1 -1
  6. package/dist/esm/sui/executor.js.map +1 -1
  7. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  8. package/package.json +28 -29
  9. package/dist/cjs/aptos/executor.d.ts +0 -18
  10. package/dist/cjs/aptos/executor.d.ts.map +0 -1
  11. package/dist/cjs/aptos/executor.js +0 -73
  12. package/dist/cjs/aptos/executor.js.map +0 -1
  13. package/dist/cjs/aptos/index.d.ts +0 -4
  14. package/dist/cjs/aptos/index.d.ts.map +0 -1
  15. package/dist/cjs/aptos/index.js +0 -28
  16. package/dist/cjs/aptos/index.js.map +0 -1
  17. package/dist/cjs/consts.d.ts +0 -34
  18. package/dist/cjs/consts.d.ts.map +0 -1
  19. package/dist/cjs/consts.js +0 -347
  20. package/dist/cjs/consts.js.map +0 -1
  21. package/dist/cjs/evm/executor.d.ts +0 -19
  22. package/dist/cjs/evm/executor.d.ts.map +0 -1
  23. package/dist/cjs/evm/executor.js +0 -71
  24. package/dist/cjs/evm/executor.js.map +0 -1
  25. package/dist/cjs/evm/executorV2.d.ts +0 -25
  26. package/dist/cjs/evm/executorV2.d.ts.map +0 -1
  27. package/dist/cjs/evm/executorV2.js +0 -102
  28. package/dist/cjs/evm/executorV2.js.map +0 -1
  29. package/dist/cjs/evm/index.d.ts +0 -5
  30. package/dist/cjs/evm/index.d.ts.map +0 -1
  31. package/dist/cjs/evm/index.js +0 -33
  32. package/dist/cjs/evm/index.js.map +0 -1
  33. package/dist/cjs/index.d.ts +0 -4
  34. package/dist/cjs/index.d.ts.map +0 -1
  35. package/dist/cjs/index.js +0 -31
  36. package/dist/cjs/index.js.map +0 -1
  37. package/dist/cjs/layouts/circle.d.ts +0 -161
  38. package/dist/cjs/layouts/circle.d.ts.map +0 -1
  39. package/dist/cjs/layouts/circle.js +0 -48
  40. package/dist/cjs/layouts/circle.js.map +0 -1
  41. package/dist/cjs/layouts/conversions.d.ts +0 -5
  42. package/dist/cjs/layouts/conversions.d.ts.map +0 -1
  43. package/dist/cjs/layouts/conversions.js +0 -8
  44. package/dist/cjs/layouts/conversions.js.map +0 -1
  45. package/dist/cjs/layouts/index.d.ts +0 -4
  46. package/dist/cjs/layouts/index.d.ts.map +0 -1
  47. package/dist/cjs/layouts/index.js +0 -20
  48. package/dist/cjs/layouts/index.js.map +0 -1
  49. package/dist/cjs/layouts/relayInstruction.d.ts +0 -86
  50. package/dist/cjs/layouts/relayInstruction.d.ts.map +0 -1
  51. package/dist/cjs/layouts/relayInstruction.js +0 -32
  52. package/dist/cjs/layouts/relayInstruction.js.map +0 -1
  53. package/dist/cjs/layouts/signedQuote.d.ts +0 -102
  54. package/dist/cjs/layouts/signedQuote.d.ts.map +0 -1
  55. package/dist/cjs/layouts/signedQuote.js +0 -46
  56. package/dist/cjs/layouts/signedQuote.js.map +0 -1
  57. package/dist/cjs/routes/cctpV1.d.ts +0 -101
  58. package/dist/cjs/routes/cctpV1.d.ts.map +0 -1
  59. package/dist/cjs/routes/cctpV1.js +0 -228
  60. package/dist/cjs/routes/cctpV1.js.map +0 -1
  61. package/dist/cjs/routes/cctpV2Base.d.ts +0 -68
  62. package/dist/cjs/routes/cctpV2Base.d.ts.map +0 -1
  63. package/dist/cjs/routes/cctpV2Base.js +0 -231
  64. package/dist/cjs/routes/cctpV2Base.js.map +0 -1
  65. package/dist/cjs/routes/cctpV2Fast.d.ts +0 -45
  66. package/dist/cjs/routes/cctpV2Fast.d.ts.map +0 -1
  67. package/dist/cjs/routes/cctpV2Fast.js +0 -124
  68. package/dist/cjs/routes/cctpV2Fast.js.map +0 -1
  69. package/dist/cjs/routes/cctpV2Standard.d.ts +0 -45
  70. package/dist/cjs/routes/cctpV2Standard.d.ts.map +0 -1
  71. package/dist/cjs/routes/cctpV2Standard.js +0 -114
  72. package/dist/cjs/routes/cctpV2Standard.js.map +0 -1
  73. package/dist/cjs/routes/helpers.d.ts +0 -29
  74. package/dist/cjs/routes/helpers.d.ts.map +0 -1
  75. package/dist/cjs/routes/helpers.js +0 -232
  76. package/dist/cjs/routes/helpers.js.map +0 -1
  77. package/dist/cjs/routes/index.d.ts +0 -5
  78. package/dist/cjs/routes/index.d.ts.map +0 -1
  79. package/dist/cjs/routes/index.js +0 -21
  80. package/dist/cjs/routes/index.js.map +0 -1
  81. package/dist/cjs/sui/executor.d.ts +0 -24
  82. package/dist/cjs/sui/executor.d.ts.map +0 -1
  83. package/dist/cjs/sui/executor.js +0 -135
  84. package/dist/cjs/sui/executor.js.map +0 -1
  85. package/dist/cjs/sui/index.d.ts +0 -4
  86. package/dist/cjs/sui/index.d.ts.map +0 -1
  87. package/dist/cjs/sui/index.js +0 -28
  88. package/dist/cjs/sui/index.js.map +0 -1
  89. package/dist/cjs/svm/executor.d.ts +0 -21
  90. package/dist/cjs/svm/executor.d.ts.map +0 -1
  91. package/dist/cjs/svm/executor.js +0 -98
  92. package/dist/cjs/svm/executor.js.map +0 -1
  93. package/dist/cjs/svm/executorV2.d.ts +0 -28
  94. package/dist/cjs/svm/executorV2.d.ts.map +0 -1
  95. package/dist/cjs/svm/executorV2.js +0 -351
  96. package/dist/cjs/svm/executorV2.js.map +0 -1
  97. package/dist/cjs/svm/idl/CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC-idl.d.ts +0 -1316
  98. package/dist/cjs/svm/idl/CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC-idl.d.ts.map +0 -1
  99. package/dist/cjs/svm/idl/CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC-idl.js +0 -3
  100. package/dist/cjs/svm/idl/CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC-idl.js.map +0 -1
  101. package/dist/cjs/svm/idl/CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC-idl.json +0 -1315
  102. package/dist/cjs/svm/idl/CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe-id.d.ts +0 -2198
  103. package/dist/cjs/svm/idl/CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe-id.d.ts.map +0 -1
  104. package/dist/cjs/svm/idl/CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe-id.js +0 -3
  105. package/dist/cjs/svm/idl/CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe-id.js.map +0 -1
  106. package/dist/cjs/svm/idl/CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe-id.json +0 -2197
  107. package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts +0 -72
  108. package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts.map +0 -1
  109. package/dist/cjs/svm/idl/example_cctp_with_executor.js +0 -74
  110. package/dist/cjs/svm/idl/example_cctp_with_executor.js.map +0 -1
  111. package/dist/cjs/svm/idl/executor.d.ts +0 -103
  112. package/dist/cjs/svm/idl/executor.d.ts.map +0 -1
  113. package/dist/cjs/svm/idl/executor.js +0 -105
  114. package/dist/cjs/svm/idl/executor.js.map +0 -1
  115. package/dist/cjs/svm/index.d.ts +0 -5
  116. package/dist/cjs/svm/index.d.ts.map +0 -1
  117. package/dist/cjs/svm/index.js +0 -33
  118. package/dist/cjs/svm/index.js.map +0 -1
  119. package/dist/cjs/types.d.ts +0 -13
  120. package/dist/cjs/types.d.ts.map +0 -1
  121. package/dist/cjs/types.js +0 -3
  122. package/dist/cjs/types.js.map +0 -1
  123. package/dist/cjs/utils.d.ts +0 -30
  124. package/dist/cjs/utils.d.ts.map +0 -1
  125. package/dist/cjs/utils.js +0 -166
  126. package/dist/cjs/utils.js.map +0 -1
  127. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
@@ -1,232 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateFeeConfig = validateFeeConfig;
4
- exports.fetchExecutorQuote = fetchExecutorQuote;
5
- exports.collectTransactions = collectTransactions;
6
- exports.buildInitiateXfer = buildInitiateXfer;
7
- exports.buildInitiateTransactions = buildInitiateTransactions;
8
- exports.initiateTransfer = initiateTransfer;
9
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
10
- const consts_1 = require("../consts");
11
- const utils_1 = require("../utils");
12
- const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
13
- const layouts_1 = require("../layouts");
14
- function validateFeeConfig(config) {
15
- if (typeof config.transferTokenFee === "bigint" && config.transferTokenFee < 0n) {
16
- throw new Error("transferTokenFee must be non-negative");
17
- }
18
- if (typeof config.nativeTokenFee === "bigint" && config.nativeTokenFee < 0n) {
19
- throw new Error("nativeTokenFee must be non-negative");
20
- }
21
- const hasFee = typeof config.transferTokenFee === "function" || (config.transferTokenFee ?? 0n) > 0n ||
22
- typeof config.nativeTokenFee === "function" || (config.nativeTokenFee ?? 0n) > 0n;
23
- if (hasFee && !config.referrerAddresses) {
24
- throw new Error("referrerAddresses must be provided when fees are configured");
25
- }
26
- }
27
- // The minimum rent exemption amount for a 165 byte account (e.g. an ATA)
28
- // cache it here to avoid fetching it from the Solana RPC
29
- let ataMinRentAmount = undefined;
30
- async function fetchExecutorQuote(request, params, config, capability) {
31
- const { fromChain, toChain } = request;
32
- const srcUsdcAddress = sdk_connect_1.circle.usdcContract.get(fromChain.network, fromChain.chain);
33
- if (!srcUsdcAddress) {
34
- throw new Error("Invalid transfer, no USDC contract on source");
35
- }
36
- const dstUsdcAddress = sdk_connect_1.circle.usdcContract.get(toChain.network, toChain.chain);
37
- if (!dstUsdcAddress) {
38
- throw new Error("Invalid transfer, no USDC contract on destination");
39
- }
40
- const transferAmount = sdk_connect_1.amount.units(params.normalizedParams.amount);
41
- let referrerAddress = undefined;
42
- const transferTokenFee = typeof config.transferTokenFee === "function"
43
- ? config.transferTokenFee(transferAmount, fromChain.chain)
44
- : (config.transferTokenFee ?? 0n);
45
- const nativeTokenFee = typeof config.nativeTokenFee === "function"
46
- ? config.nativeTokenFee(transferAmount, fromChain.chain)
47
- : (config.nativeTokenFee ?? 0n);
48
- if (transferTokenFee > 0n || nativeTokenFee > 0n) {
49
- referrerAddress =
50
- config.referrerAddresses?.[fromChain.network]?.[fromChain.chain];
51
- if (!referrerAddress) {
52
- throw new Error(`Referrer address not configured for ${fromChain.chain}`);
53
- }
54
- }
55
- const remainingAmount = transferAmount - transferTokenFee;
56
- const referrer = referrerAddress
57
- ? sdk_connect_1.Wormhole.chainAddress(fromChain.chain, referrerAddress)
58
- : undefined;
59
- if (remainingAmount <= 0n) {
60
- throw new Error(`Transfer token fee (${transferTokenFee}) exceeds transfer amount (${transferAmount})`);
61
- }
62
- const gasLimit = consts_1.gasLimits[toChain.network]?.[toChain.chain];
63
- if (!gasLimit) {
64
- throw new Error("Gas limit not found");
65
- }
66
- const capabilities = config.executor?.getCapabilities
67
- ? await config.executor.getCapabilities(fromChain.network)
68
- : await (0, utils_1.fetchCapabilities)(fromChain.network);
69
- const srcCapabilities = capabilities[(0, sdk_connect_1.toChainId)(fromChain.chain)];
70
- if (!srcCapabilities) {
71
- throw new Error("Unsupported source chain");
72
- }
73
- const dstCapabilities = capabilities[(0, sdk_connect_1.toChainId)(toChain.chain)];
74
- if (!dstCapabilities ||
75
- !dstCapabilities.requestPrefixes.includes(capability)) {
76
- throw new Error("Unsupported destination chain");
77
- }
78
- const { recipient } = request;
79
- let tokenAccountExists = true;
80
- // Check if the associated token account (ATA) exists on Solana.
81
- // If it doesn't, include a gas drop-off instruction so the relayer can create it.
82
- // Note: There's a potential race condition — the account might exist during this check,
83
- // but could be closed before the transfer completes.
84
- if (recipient && toChain.chain === "Solana") {
85
- const usdcAddress = sdk_connect_1.Wormhole.parseAddress("Solana", dstUsdcAddress);
86
- const ata = await toChain.getTokenAccount(recipient.address, usdcAddress);
87
- const connection = await toChain.getRpc();
88
- const ataAccount = await connection.getAccountInfo(new sdk_solana_1.SolanaAddress(ata.address).unwrap());
89
- tokenAccountExists = ataAccount !== null;
90
- if (!tokenAccountExists && !ataMinRentAmount) {
91
- ataMinRentAmount = BigInt(await connection.getMinimumBalanceForRentExemption(165));
92
- }
93
- }
94
- let msgValue = 0n;
95
- if (toChain.chain === "Solana") {
96
- msgValue += consts_1.SOLANA_MSG_VALUE_BASE_FEE;
97
- if (!tokenAccountExists && ataMinRentAmount) {
98
- msgValue += ataMinRentAmount;
99
- }
100
- // Add extra for CCTP v2 operations
101
- if (capability === "ERC2") {
102
- msgValue += 1200000n;
103
- }
104
- }
105
- const relayRequests = [];
106
- // Add the gas instruction
107
- relayRequests.push({
108
- request: {
109
- type: "GasInstruction",
110
- gasLimit,
111
- msgValue,
112
- },
113
- });
114
- // Calculate the gas dropOff value
115
- const gasDropOffLimit = BigInt(dstCapabilities.gasDropOffLimit);
116
- const dropOff = params.options.nativeGas && gasDropOffLimit > 0n
117
- ? (BigInt(Math.round(params.options.nativeGas * 100)) * gasDropOffLimit) /
118
- 100n
119
- : 0n;
120
- // Add the gas drop-off instruction if applicable
121
- if (dropOff > 0n || !tokenAccountExists) {
122
- relayRequests.push({
123
- request: {
124
- type: "GasDropOffInstruction",
125
- dropOff,
126
- // If the recipient is undefined (e.g. the user hasn’t connected their wallet yet),
127
- // we temporarily use a dummy address to fetch a quote.
128
- // The recipient address is validated later in the `initiate` method, which will throw if it's still missing.
129
- recipient: recipient
130
- ? recipient.address.toUniversalAddress()
131
- : new sdk_connect_1.UniversalAddress(new Uint8Array(32)),
132
- },
133
- });
134
- }
135
- const relayInstructions = (0, sdk_connect_1.serializeLayout)(layouts_1.relayInstructionsLayout, {
136
- requests: relayRequests,
137
- });
138
- const quote = await (0, utils_1.fetchSignedQuote)(fromChain.network, fromChain.chain, toChain.chain, sdk_connect_1.encoding.hex.encode(relayInstructions, true));
139
- if (!quote.estimatedCost) {
140
- throw new Error("No estimated cost");
141
- }
142
- const signedQuoteBytes = sdk_connect_1.encoding.hex.decode(quote.signedQuote);
143
- const signedQuote = (0, sdk_connect_1.deserializeLayout)(layouts_1.signedQuoteLayout, signedQuoteBytes);
144
- const estimatedCost = BigInt(quote.estimatedCost);
145
- const details = {
146
- signedQuote: signedQuoteBytes,
147
- relayInstructions: relayInstructions,
148
- estimatedCost,
149
- referrer,
150
- transferTokenFee,
151
- remainingAmount,
152
- expiryTime: signedQuote.quote.expiryTime,
153
- gasDropOff: dropOff,
154
- nativeTokenFee,
155
- };
156
- return details;
157
- }
158
- // TODO: remove when wormhole-sdk-ts exports this
159
- async function collectTransactions(xfer) {
160
- const transactions = [];
161
- for await (const tx of xfer) {
162
- transactions.push(tx);
163
- }
164
- return transactions;
165
- }
166
- async function buildInitiateXfer(request, sender, to, params) {
167
- const relayInstructions = (0, sdk_connect_1.deserializeLayout)(layouts_1.relayInstructionsLayout, params.details.relayInstructions);
168
- // Make sure that the gas drop-off recipient matches the actual recipient
169
- relayInstructions.requests.forEach(({ request }) => {
170
- if (request.type === "GasDropOffInstruction" &&
171
- !request.recipient.equals(to.address.toUniversalAddress())) {
172
- throw new Error("Gas drop-off recipient does not match");
173
- }
174
- });
175
- const senderAddress = sdk_connect_1.Wormhole.parseAddress(sender.chain, sender.address.toString());
176
- const recipient = await resolveRecipient(to, request);
177
- if (params.protocol === "CCTPExecutor") {
178
- const executor = await request.fromChain.getProtocol(params.protocol);
179
- return executor.transfer(senderAddress, recipient, params.details);
180
- }
181
- else {
182
- const executor = await request.fromChain.getProtocol(params.protocol);
183
- return executor.transfer(senderAddress, recipient, params.details);
184
- }
185
- }
186
- async function buildInitiateTransactions(request, sender, to, params) {
187
- const xfer = await buildInitiateXfer(request, sender, to, params);
188
- return collectTransactions(xfer);
189
- }
190
- async function initiateTransfer(request, signer, to, params) {
191
- const sender = sdk_connect_1.Wormhole.chainAddress(signer.chain(), signer.address());
192
- const xfer = await buildInitiateXfer(request, sender, to, params);
193
- const txids = await (0, sdk_connect_1.signSendWait)(request.fromChain, xfer, signer);
194
- // Status the transfer immediately before returning
195
- let statusAttempts = 0;
196
- const statusTransferImmediately = async () => {
197
- while (statusAttempts < 20) {
198
- try {
199
- const [txStatus] = await (0, utils_1.fetchStatus)(request.fromChain.network, txids.at(-1).txid, request.fromChain.chain);
200
- if (txStatus) {
201
- break;
202
- }
203
- }
204
- catch (_) {
205
- // is ok we just try again!
206
- }
207
- statusAttempts++;
208
- await (0, utils_1.sleep)(2_000);
209
- }
210
- };
211
- // Spawn a loop in the background that will status this transfer until
212
- // the API gives a successful response. We don't await the result
213
- // here because we don't need it for the return value.
214
- statusTransferImmediately();
215
- return {
216
- from: request.fromChain.chain,
217
- to: request.toChain.chain,
218
- state: sdk_connect_1.TransferState.SourceInitiated,
219
- originTxs: txids,
220
- };
221
- }
222
- async function resolveRecipient(to, request) {
223
- if (to.chain !== "Solana")
224
- return to;
225
- // When transferring to Solana, the recipient address is the ATA
226
- const solanaUsdc = sdk_connect_1.circle.usdcContract.get(request.toChain.network, request.toChain.chain);
227
- if (!solanaUsdc)
228
- throw new Error("No USDC contract found for Solana");
229
- const usdcAddress = sdk_connect_1.Wormhole.parseAddress("Solana", solanaUsdc);
230
- return request.toChain.getTokenAccount(to.address, usdcAddress);
231
- }
232
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/routes/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export * from "./cctpV1";
2
- export * from "./cctpV2Base";
3
- export * from "./cctpV2Fast";
4
- export * from "./cctpV2Standard";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
@@ -1,21 +0,0 @@
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("./cctpV1"), exports);
18
- __exportStar(require("./cctpV2Base"), exports);
19
- __exportStar(require("./cctpV2Fast"), exports);
20
- __exportStar(require("./cctpV2Standard"), exports);
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,+CAA6B;AAC7B,mDAAiC"}
@@ -1,24 +0,0 @@
1
- import type { SuiClient } from "@mysten/sui/client";
2
- import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type Network, type Platform } from "@wormhole-foundation/sdk-connect";
3
- import { SuiChains, SuiUnsignedTransaction } from "@wormhole-foundation/sdk-sui";
4
- import { CCTPExecutor } from "../types";
5
- import { QuoteDetails } from "../routes/cctpV1";
6
- export declare class SuiCCTPExecutor<N extends Network, C extends SuiChains> implements CCTPExecutor<N, C> {
7
- readonly network: N;
8
- readonly chain: C;
9
- readonly provider: SuiClient;
10
- readonly contracts: Contracts;
11
- readonly usdcId: string;
12
- readonly usdcTreasuryId: string;
13
- readonly tokenMessengerId: string;
14
- readonly tokenMessengerStateId: string;
15
- readonly messageTransmitterId: string;
16
- readonly messageTransmitterStateId: string;
17
- readonly executorId: string;
18
- readonly executorRequestsId: string;
19
- constructor(network: N, chain: C, provider: SuiClient, contracts: Contracts);
20
- static fromRpc<N extends Network>(provider: SuiClient, config: ChainsConfig<N, Platform>): Promise<SuiCCTPExecutor<N, SuiChains>>;
21
- transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<SuiUnsignedTransaction<N, C>>;
22
- private createUnsignedTx;
23
- }
24
- //# sourceMappingURL=executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/sui/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,SAAS,EACT,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACjE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAa3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,SAAS;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAd/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAE3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS;WAiDlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQlC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAyG/C,OAAO,CAAC,gBAAgB;CAazB"}
@@ -1,135 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuiCCTPExecutor = void 0;
4
- const utils_1 = require("@mysten/sui/utils");
5
- const transactions_1 = require("@mysten/sui/transactions");
6
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
7
- const sdk_sui_1 = require("@wormhole-foundation/sdk-sui");
8
- const sdk_sui_2 = require("@wormhole-foundation/sdk-sui");
9
- const consts_1 = require("../consts");
10
- const sdk_sui_cctp_1 = require("@wormhole-foundation/sdk-sui-cctp");
11
- class SuiCCTPExecutor {
12
- network;
13
- chain;
14
- provider;
15
- contracts;
16
- usdcId;
17
- usdcTreasuryId;
18
- tokenMessengerId;
19
- tokenMessengerStateId;
20
- messageTransmitterId;
21
- messageTransmitterStateId;
22
- executorId;
23
- executorRequestsId;
24
- constructor(network, chain, provider, contracts) {
25
- this.network = network;
26
- this.chain = chain;
27
- this.provider = provider;
28
- this.contracts = contracts;
29
- if (network === "Devnet")
30
- throw new Error("CCTPExecutor not supported on Devnet");
31
- const getContractAddress = (contract, errorMessage) => {
32
- if (!contract) {
33
- throw new Error(errorMessage);
34
- }
35
- return contract;
36
- };
37
- this.usdcId = getContractAddress(sdk_connect_1.circle.usdcContract.get(this.network, this.chain), `No USDC contract configured for network=${this.network} chain=${this.chain}`);
38
- const { tokenMessengerState, messageTransmitterState, usdcTreasury } = (0, sdk_sui_cctp_1.suiCircleObjects)(network);
39
- this.usdcTreasuryId = usdcTreasury;
40
- this.tokenMessengerId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
41
- this.messageTransmitterId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
42
- this.tokenMessengerStateId = tokenMessengerState;
43
- this.messageTransmitterStateId = messageTransmitterState;
44
- this.executorId = getContractAddress(consts_1.suiExecutorIds[network]?.executorId, `Executor contract for ${network} not found`);
45
- this.executorRequestsId = getContractAddress(consts_1.suiExecutorIds[network]?.executorRequestsId, `Executor requests contract for ${network} not found`);
46
- }
47
- static async fromRpc(provider, config) {
48
- const [network, chain] = await sdk_sui_2.SuiPlatform.chainFromRpc(provider);
49
- const conf = config[chain];
50
- if (conf.network !== network)
51
- throw new Error(`Network mismatch: ${conf.network} != ${network}`);
52
- return new SuiCCTPExecutor(network, chain, provider, conf.contracts);
53
- }
54
- async *transfer(sender, recipient, details) {
55
- const tx = new transactions_1.Transaction();
56
- const senderAddress = new sdk_sui_1.SuiAddress(sender).unwrap();
57
- const destinationDomain = sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain);
58
- const [primaryCoin, ...mergeCoins] = await sdk_sui_2.SuiPlatform.getCoins(this.provider, sender, this.usdcId);
59
- if (primaryCoin === undefined) {
60
- throw new Error("No USDC in wallet");
61
- }
62
- const primaryCoinInput = tx.object(primaryCoin.coinObjectId);
63
- if (mergeCoins.length > 0) {
64
- tx.mergeCoins(primaryCoinInput, mergeCoins.map((coin) => tx.object(coin.coinObjectId)));
65
- }
66
- let coin;
67
- if (details.transferTokenFee > 0n) {
68
- const [txCoin, transferFeeCoin] = tx.splitCoins(primaryCoinInput, [
69
- details.remainingAmount,
70
- details.transferTokenFee,
71
- ]);
72
- coin = txCoin;
73
- tx.transferObjects([transferFeeCoin], details.referrer ? (0, sdk_connect_1.canonicalAddress)(details.referrer) : senderAddress);
74
- }
75
- else {
76
- const [txCoin] = tx.splitCoins(primaryCoinInput, [
77
- details.remainingAmount,
78
- ]);
79
- coin = txCoin;
80
- }
81
- if (details.nativeTokenFee > 0n) {
82
- const [nativeFeeCoin] = tx.splitCoins(tx.gas, [
83
- tx.pure.u64(details.nativeTokenFee),
84
- ]);
85
- tx.transferObjects([nativeFeeCoin], details.referrer ? (0, sdk_connect_1.canonicalAddress)(details.referrer) : senderAddress);
86
- }
87
- const [_, message] = tx.moveCall({
88
- target: `${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,
89
- arguments: [
90
- coin,
91
- tx.pure.u32(destinationDomain), // destination_domain
92
- tx.pure.address(recipient.address.toUniversalAddress().toString()), // mint_recipient
93
- tx.object(this.tokenMessengerStateId), // token_messenger_minter state
94
- tx.object(this.messageTransmitterStateId), // message_transmitter state
95
- tx.object("0x403"), // deny_list id, fixed address
96
- tx.object(this.usdcTreasuryId), // treasury object Treasury<USDC>
97
- ],
98
- typeArguments: [this.usdcId],
99
- });
100
- const [source_domain] = tx.moveCall({
101
- target: `${this.messageTransmitterId}::message::source_domain`,
102
- arguments: [message],
103
- });
104
- const [nonce] = tx.moveCall({
105
- target: `${this.messageTransmitterId}::message::nonce`,
106
- arguments: [message],
107
- });
108
- const [requestBytes] = tx.moveCall({
109
- target: `${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,
110
- arguments: [source_domain, nonce],
111
- });
112
- const [executorCoin] = tx.splitCoins(tx.gas, [
113
- tx.pure.u64(details.estimatedCost),
114
- ]);
115
- tx.moveCall({
116
- target: `${this.executorId}::executor::request_execution`,
117
- arguments: [
118
- executorCoin,
119
- tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
120
- tx.pure.u16((0, sdk_connect_1.toChainId)(recipient.chain)),
121
- tx.pure.address("0x0"),
122
- tx.pure.address(senderAddress),
123
- tx.pure.vector("u8", details.signedQuote),
124
- requestBytes,
125
- tx.pure.vector("u8", details.relayInstructions),
126
- ],
127
- });
128
- yield this.createUnsignedTx(tx, "SuiCCTPExecutor.Transfer");
129
- }
130
- createUnsignedTx(txReq, description, parallelizable = false) {
131
- return new sdk_sui_1.SuiUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
132
- }
133
- }
134
- exports.SuiCCTPExecutor = SuiCCTPExecutor;
135
- //# sourceMappingURL=executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/sui/executor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export * from "./executor";
2
- /** Explicitly register Sui CCTP executor protocol. Idempotent. */
3
- export declare function register(): void;
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sui/index.ts"],"names":[],"mappings":"AAOA,cAAc,YAAY,CAAC;AAE3B,kEAAkE;AAClE,wBAAgB,QAAQ,IAAI,IAAI,CAI/B"}
@@ -1,28 +0,0 @@
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
- exports.register = register;
18
- const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
19
- const sdk_sui_1 = require("@wormhole-foundation/sdk-sui");
20
- const executor_1 = require("./executor");
21
- __exportStar(require("./executor"), exports);
22
- /** Explicitly register Sui CCTP executor protocol. Idempotent. */
23
- function register() {
24
- if (!(0, sdk_definitions_1.protocolIsRegistered)(sdk_sui_1._platform, "CCTPExecutor")) {
25
- (0, sdk_definitions_1.registerProtocol)(sdk_sui_1._platform, "CCTPExecutor", executor_1.SuiCCTPExecutor);
26
- }
27
- }
28
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sui/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAUA,4BAIC;AAdD,0EAG8C;AAC9C,0DAAyD;AACzD,yCAA6C;AAE7C,6CAA2B;AAE3B,kEAAkE;AAClE,SAAgB,QAAQ;IACtB,IAAI,CAAC,IAAA,sCAAoB,EAAC,mBAAS,EAAE,cAAc,CAAC,EAAE,CAAC;QACrD,IAAA,kCAAgB,EAAC,mBAAS,EAAE,cAAc,EAAE,0BAAe,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
@@ -1,21 +0,0 @@
1
- import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type Network, type Platform } from "@wormhole-foundation/sdk-connect";
2
- import type { SolanaChains } from "@wormhole-foundation/sdk-solana";
3
- import { SolanaUnsignedTransaction } from "@wormhole-foundation/sdk-solana";
4
- import { CCTPExecutor } from "../types";
5
- import { Connection, PublicKey } from "@solana/web3.js";
6
- import { QuoteDetails } from "../routes/cctpV1";
7
- export declare class SvmCCTPExecutor<N extends Network, C extends SolanaChains> implements CCTPExecutor<N, C> {
8
- readonly network: N;
9
- readonly chain: C;
10
- readonly connection: Connection;
11
- readonly contracts: Contracts;
12
- readonly tokenMessengerProgramId: PublicKey;
13
- readonly messageTransmitterProgramId: PublicKey;
14
- readonly shimProgramId: PublicKey;
15
- readonly executorProgramId: PublicKey;
16
- constructor(network: N, chain: C, connection: Connection, contracts: Contracts);
17
- static fromRpc<N extends Network>(provider: Connection, config: ChainsConfig<N, Platform>): Promise<SvmCCTPExecutor<N, SolanaChains>>;
18
- transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<SolanaUnsignedTransaction<N, C>>;
19
- private createUnsignedTx;
20
- }
21
- //# sourceMappingURL=executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAIL,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,UAAU,EAAW,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAchD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CACpE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAS3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAV/B,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CAAC;IAC5C,QAAQ,CAAC,2BAA2B,EAAE,SAAS,CAAC;IAEhD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC;gBAG3B,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS;WAkClB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAQrC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgHlD,OAAO,CAAC,gBAAgB;CAazB"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SvmCCTPExecutor = void 0;
4
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
- const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
6
- const consts_1 = require("../consts");
7
- const web3_js_1 = require("@solana/web3.js");
8
- const spl_token_1 = require("@solana/spl-token");
9
- const sdk_solana_cctp_1 = require("@wormhole-foundation/sdk-solana-cctp");
10
- const anchor_1 = require("@coral-xyz/anchor");
11
- const example_cctp_with_executor_1 = require("./idl/example_cctp_with_executor");
12
- const layouts_1 = require("../layouts");
13
- class SvmCCTPExecutor {
14
- network;
15
- chain;
16
- connection;
17
- contracts;
18
- tokenMessengerProgramId;
19
- messageTransmitterProgramId;
20
- shimProgramId;
21
- executorProgramId;
22
- constructor(network, chain, connection, contracts) {
23
- this.network = network;
24
- this.chain = chain;
25
- this.connection = connection;
26
- this.contracts = contracts;
27
- if (network === "Devnet")
28
- throw new Error("CCTPExecutor not supported on Devnet");
29
- const getContractAddress = (contract, errorMessage) => {
30
- if (!contract)
31
- throw new Error(errorMessage);
32
- return new web3_js_1.PublicKey(contract);
33
- };
34
- this.tokenMessengerProgramId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
35
- this.messageTransmitterProgramId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
36
- this.shimProgramId = getContractAddress(consts_1.shimContractsV1[network]?.[chain], `Shim contract for ${chain} not found`);
37
- this.executorProgramId = getContractAddress(consts_1.solanaExecutorId[network], `Executor contract for ${network} not found`);
38
- }
39
- static async fromRpc(provider, config) {
40
- const [network, chain] = await sdk_solana_1.SolanaPlatform.chainFromRpc(provider);
41
- const conf = config[chain];
42
- if (conf.network !== network)
43
- throw new Error(`Network mismatch: ${conf.network} != ${network}`);
44
- return new SvmCCTPExecutor(network, chain, provider, conf.contracts);
45
- }
46
- async *transfer(sender, recipient, details) {
47
- const usdc = new web3_js_1.PublicKey(sdk_connect_1.circle.usdcContract.get(this.network, this.chain));
48
- const senderPk = new sdk_solana_1.SolanaAddress(sender).unwrap();
49
- const senderAta = (0, spl_token_1.getAssociatedTokenAddressSync)(usdc, senderPk, true);
50
- const referrer = new sdk_solana_1.SolanaAddress(details.referrer?.address?.toString() ?? senderPk).unwrap();
51
- const transaction = new web3_js_1.Transaction();
52
- transaction.feePayer = senderPk;
53
- const { blockhash } = await this.connection.getLatestBlockhash();
54
- transaction.recentBlockhash = blockhash;
55
- if (details.transferTokenFee > 0n) {
56
- const referrerAta = (0, spl_token_1.getAssociatedTokenAddressSync)(usdc, referrer, true);
57
- const referrerAtaAccount = await this.connection.getAccountInfo(referrerAta);
58
- if (!referrerAtaAccount) {
59
- transaction.add((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(senderPk, referrerAta, referrer, usdc));
60
- }
61
- transaction.add((0, spl_token_1.createTransferInstruction)(senderAta, referrerAta, senderPk, details.transferTokenFee));
62
- }
63
- if (details.nativeTokenFee > 0n) {
64
- transaction.add(web3_js_1.SystemProgram.transfer({
65
- fromPubkey: senderPk,
66
- toPubkey: referrer,
67
- lamports: details.nativeTokenFee,
68
- }));
69
- }
70
- const destinationDomain = sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain);
71
- const destinationAddress = recipient.address.toUniversalAddress();
72
- const msgSendEvent = web3_js_1.Keypair.generate();
73
- transaction.add(await (0, sdk_solana_cctp_1.createDepositForBurnInstruction)(this.messageTransmitterProgramId, this.tokenMessengerProgramId, usdc, destinationDomain, senderPk, senderAta, destinationAddress, details.remainingAmount, msgSendEvent.publicKey));
74
- const shimProgram = new anchor_1.Program(example_cctp_with_executor_1.ExampleCctpWithExecutorIdl, this.shimProgramId, { connection: null });
75
- const signedQuote = (0, sdk_connect_1.deserializeLayout)(layouts_1.signedQuoteLayout, details.signedQuote);
76
- const messageTransmitter = sdk_solana_1.utils.deriveAddress("message_transmitter", this.messageTransmitterProgramId);
77
- transaction.add(await shimProgram.methods
78
- .relayLastMessage({
79
- execAmount: new anchor_1.BN(details.estimatedCost.toString()),
80
- recipientChain: (0, sdk_connect_1.toChainId)(recipient.chain),
81
- signedQuoteBytes: Buffer.from(details.signedQuote),
82
- relayInstructions: Buffer.from(details.relayInstructions),
83
- })
84
- .accounts({
85
- payer: senderPk,
86
- messageTransmitter,
87
- payee: new web3_js_1.PublicKey(signedQuote.quote.payeeAddress),
88
- executorProgram: this.executorProgramId,
89
- })
90
- .instruction());
91
- yield this.createUnsignedTx({ transaction, signers: [msgSendEvent] }, "SvmCCTPExecutor.Transfer");
92
- }
93
- createUnsignedTx(txReq, description, parallelizable = false) {
94
- return new sdk_solana_1.SolanaUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
95
- }
96
- }
97
- exports.SvmCCTPExecutor = SvmCCTPExecutor;
98
- //# sourceMappingURL=executor.js.map