@wormhole-foundation/sdk-connect 0.6.9-beta.1 → 0.7.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 (143) hide show
  1. package/dist/cjs/circle-api.js.map +1 -1
  2. package/dist/cjs/common.js.map +1 -1
  3. package/dist/cjs/config.js +1 -1
  4. package/dist/cjs/config.js.map +1 -1
  5. package/dist/cjs/index.d.ts +1 -4
  6. package/dist/cjs/index.d.ts.map +1 -1
  7. package/dist/cjs/index.js +1 -4
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/protocols/cctp/cctpTransfer.d.ts +46 -0
  10. package/dist/cjs/protocols/cctp/cctpTransfer.d.ts.map +1 -0
  11. package/dist/cjs/protocols/{cctpTransfer.js → cctp/cctpTransfer.js} +140 -151
  12. package/dist/cjs/protocols/cctp/cctpTransfer.js.map +1 -0
  13. package/dist/{esm/protocols → cjs/protocols/gateway}/gatewayTransfer.d.ts +8 -6
  14. package/dist/cjs/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
  15. package/dist/cjs/protocols/{gatewayTransfer.js → gateway/gatewayTransfer.js} +23 -30
  16. package/dist/cjs/protocols/gateway/gatewayTransfer.js.map +1 -0
  17. package/dist/cjs/protocols/index.d.ts +5 -0
  18. package/dist/cjs/protocols/index.d.ts.map +1 -0
  19. package/dist/cjs/protocols/index.js +21 -0
  20. package/dist/cjs/protocols/index.js.map +1 -0
  21. package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts +46 -0
  22. package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
  23. package/dist/cjs/protocols/{tokenTransfer.js → tokenBridge/tokenTransfer.js} +175 -164
  24. package/dist/cjs/protocols/tokenBridge/tokenTransfer.js.map +1 -0
  25. package/dist/cjs/protocols/wormholeTransfer.d.ts.map +1 -1
  26. package/dist/cjs/routes/cctp/automatic.d.ts +5 -5
  27. package/dist/cjs/routes/cctp/automatic.d.ts.map +1 -1
  28. package/dist/cjs/routes/cctp/automatic.js +12 -8
  29. package/dist/cjs/routes/cctp/automatic.js.map +1 -1
  30. package/dist/cjs/routes/cctp/manual.d.ts +5 -4
  31. package/dist/cjs/routes/cctp/manual.d.ts.map +1 -1
  32. package/dist/cjs/routes/cctp/manual.js +12 -8
  33. package/dist/cjs/routes/cctp/manual.js.map +1 -1
  34. package/dist/cjs/routes/common.js.map +1 -1
  35. package/dist/cjs/routes/portico/automatic.d.ts +5 -4
  36. package/dist/cjs/routes/portico/automatic.d.ts.map +1 -1
  37. package/dist/cjs/routes/portico/automatic.js +6 -6
  38. package/dist/cjs/routes/portico/automatic.js.map +1 -1
  39. package/dist/cjs/routes/request.d.ts +1 -5
  40. package/dist/cjs/routes/request.d.ts.map +1 -1
  41. package/dist/cjs/routes/request.js +4 -8
  42. package/dist/cjs/routes/request.js.map +1 -1
  43. package/dist/cjs/routes/resolver.js +2 -2
  44. package/dist/cjs/routes/resolver.js.map +1 -1
  45. package/dist/cjs/routes/route.d.ts +2 -1
  46. package/dist/cjs/routes/route.d.ts.map +1 -1
  47. package/dist/cjs/routes/route.js.map +1 -1
  48. package/dist/cjs/routes/tokenBridge/automatic.d.ts +4 -2
  49. package/dist/cjs/routes/tokenBridge/automatic.d.ts.map +1 -1
  50. package/dist/cjs/routes/tokenBridge/automatic.js +14 -8
  51. package/dist/cjs/routes/tokenBridge/automatic.js.map +1 -1
  52. package/dist/cjs/routes/tokenBridge/manual.d.ts +4 -2
  53. package/dist/cjs/routes/tokenBridge/manual.d.ts.map +1 -1
  54. package/dist/cjs/routes/tokenBridge/manual.js +11 -7
  55. package/dist/cjs/routes/tokenBridge/manual.js.map +1 -1
  56. package/dist/cjs/tasks.js.map +1 -1
  57. package/dist/cjs/types.d.ts +5 -5
  58. package/dist/cjs/types.d.ts.map +1 -1
  59. package/dist/cjs/whscan-api.js.map +1 -1
  60. package/dist/cjs/wormhole.d.ts +2 -2
  61. package/dist/cjs/wormhole.d.ts.map +1 -1
  62. package/dist/cjs/wormhole.js +2 -2
  63. package/dist/cjs/wormhole.js.map +1 -1
  64. package/dist/esm/circle-api.js.map +1 -1
  65. package/dist/esm/common.js.map +1 -1
  66. package/dist/esm/config.js +1 -1
  67. package/dist/esm/config.js.map +1 -1
  68. package/dist/esm/index.d.ts +1 -4
  69. package/dist/esm/index.d.ts.map +1 -1
  70. package/dist/esm/index.js +1 -4
  71. package/dist/esm/index.js.map +1 -1
  72. package/dist/esm/protocols/cctp/cctpTransfer.d.ts +46 -0
  73. package/dist/esm/protocols/cctp/cctpTransfer.d.ts.map +1 -0
  74. package/dist/esm/protocols/{cctpTransfer.js → cctp/cctpTransfer.js} +139 -150
  75. package/dist/esm/protocols/cctp/cctpTransfer.js.map +1 -0
  76. package/dist/{cjs/protocols → esm/protocols/gateway}/gatewayTransfer.d.ts +8 -6
  77. package/dist/esm/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
  78. package/dist/esm/protocols/{gatewayTransfer.js → gateway/gatewayTransfer.js} +22 -29
  79. package/dist/esm/protocols/gateway/gatewayTransfer.js.map +1 -0
  80. package/dist/esm/protocols/index.d.ts +5 -0
  81. package/dist/esm/protocols/index.d.ts.map +1 -0
  82. package/dist/esm/protocols/index.js +5 -0
  83. package/dist/esm/protocols/index.js.map +1 -0
  84. package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts +46 -0
  85. package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
  86. package/dist/esm/protocols/{tokenTransfer.js → tokenBridge/tokenTransfer.js} +174 -163
  87. package/dist/esm/protocols/tokenBridge/tokenTransfer.js.map +1 -0
  88. package/dist/esm/protocols/wormholeTransfer.d.ts.map +1 -1
  89. package/dist/esm/routes/cctp/automatic.d.ts +5 -5
  90. package/dist/esm/routes/cctp/automatic.d.ts.map +1 -1
  91. package/dist/esm/routes/cctp/automatic.js +12 -8
  92. package/dist/esm/routes/cctp/automatic.js.map +1 -1
  93. package/dist/esm/routes/cctp/manual.d.ts +5 -4
  94. package/dist/esm/routes/cctp/manual.d.ts.map +1 -1
  95. package/dist/esm/routes/cctp/manual.js +12 -8
  96. package/dist/esm/routes/cctp/manual.js.map +1 -1
  97. package/dist/esm/routes/common.js.map +1 -1
  98. package/dist/esm/routes/portico/automatic.d.ts +5 -4
  99. package/dist/esm/routes/portico/automatic.d.ts.map +1 -1
  100. package/dist/esm/routes/portico/automatic.js +6 -6
  101. package/dist/esm/routes/portico/automatic.js.map +1 -1
  102. package/dist/esm/routes/request.d.ts +1 -5
  103. package/dist/esm/routes/request.d.ts.map +1 -1
  104. package/dist/esm/routes/request.js +4 -8
  105. package/dist/esm/routes/request.js.map +1 -1
  106. package/dist/esm/routes/resolver.js +2 -2
  107. package/dist/esm/routes/resolver.js.map +1 -1
  108. package/dist/esm/routes/route.d.ts +2 -1
  109. package/dist/esm/routes/route.d.ts.map +1 -1
  110. package/dist/esm/routes/route.js.map +1 -1
  111. package/dist/esm/routes/tokenBridge/automatic.d.ts +4 -2
  112. package/dist/esm/routes/tokenBridge/automatic.d.ts.map +1 -1
  113. package/dist/esm/routes/tokenBridge/automatic.js +14 -8
  114. package/dist/esm/routes/tokenBridge/automatic.js.map +1 -1
  115. package/dist/esm/routes/tokenBridge/manual.d.ts +4 -2
  116. package/dist/esm/routes/tokenBridge/manual.d.ts.map +1 -1
  117. package/dist/esm/routes/tokenBridge/manual.js +11 -7
  118. package/dist/esm/routes/tokenBridge/manual.js.map +1 -1
  119. package/dist/esm/tasks.js.map +1 -1
  120. package/dist/esm/types.d.ts +5 -5
  121. package/dist/esm/types.d.ts.map +1 -1
  122. package/dist/esm/whscan-api.js.map +1 -1
  123. package/dist/esm/wormhole.d.ts +2 -2
  124. package/dist/esm/wormhole.d.ts.map +1 -1
  125. package/dist/esm/wormhole.js +2 -2
  126. package/dist/esm/wormhole.js.map +1 -1
  127. package/package.json +6 -3
  128. package/dist/cjs/protocols/cctpTransfer.d.ts +0 -43
  129. package/dist/cjs/protocols/cctpTransfer.d.ts.map +0 -1
  130. package/dist/cjs/protocols/cctpTransfer.js.map +0 -1
  131. package/dist/cjs/protocols/gatewayTransfer.d.ts.map +0 -1
  132. package/dist/cjs/protocols/gatewayTransfer.js.map +0 -1
  133. package/dist/cjs/protocols/tokenTransfer.d.ts +0 -42
  134. package/dist/cjs/protocols/tokenTransfer.d.ts.map +0 -1
  135. package/dist/cjs/protocols/tokenTransfer.js.map +0 -1
  136. package/dist/esm/protocols/cctpTransfer.d.ts +0 -43
  137. package/dist/esm/protocols/cctpTransfer.d.ts.map +0 -1
  138. package/dist/esm/protocols/cctpTransfer.js.map +0 -1
  139. package/dist/esm/protocols/gatewayTransfer.d.ts.map +0 -1
  140. package/dist/esm/protocols/gatewayTransfer.js.map +0 -1
  141. package/dist/esm/protocols/tokenTransfer.d.ts +0 -42
  142. package/dist/esm/protocols/tokenTransfer.d.ts.map +0 -1
  143. package/dist/esm/protocols/tokenTransfer.js.map +0 -1
@@ -3,13 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TokenTransfer = void 0;
4
4
  const sdk_base_1 = require("@wormhole-foundation/sdk-base");
5
5
  const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
6
- const common_js_1 = require("../common.js");
7
- const config_js_1 = require("../config.js");
8
- const types_js_1 = require("../types.js");
9
- const whscan_api_js_1 = require("../whscan-api.js");
10
- const wormhole_js_1 = require("../wormhole.js");
11
- // 8 is maximum precision supported by the token bridge VAA
12
- const TOKEN_BRIDGE_MAX_DECIMALS = 8;
6
+ const common_js_1 = require("../../common.js");
7
+ const config_js_1 = require("../../config.js");
8
+ const types_js_1 = require("../../types.js");
9
+ const whscan_api_js_1 = require("../../whscan-api.js");
10
+ const wormhole_js_1 = require("../../wormhole.js");
13
11
  class TokenTransfer {
14
12
  wh;
15
13
  fromChain;
@@ -69,7 +67,7 @@ class TokenTransfer {
69
67
  // immediately have enough info to get the _correct_ one
70
68
  let from = { chain: vaa.emitterChain, address: vaa.emitterAddress };
71
69
  let { token, to } = vaa.payload;
72
- const scaledAmount = sdk_base_1.amount.scale(sdk_base_1.amount.fromBaseUnits(token.amount, TOKEN_BRIDGE_MAX_DECIMALS), await wh.getDecimals(token.chain, token.address));
70
+ const scaledAmount = sdk_base_1.amount.scale(sdk_base_1.amount.fromBaseUnits(token.amount, TokenTransfer.MAX_DECIMALS), await wh.getDecimals(token.chain, token.address));
73
71
  let nativeGasAmount = 0n;
74
72
  if (automatic) {
75
73
  nativeGasAmount = vaa.payload.payload.toNativeTokenAmount;
@@ -150,9 +148,14 @@ class TokenTransfer {
150
148
  this._state = types_js_1.TransferState.DestinationInitiated;
151
149
  return redeemTxids.map(({ txid }) => txid);
152
150
  }
151
+ }
152
+ exports.TokenTransfer = TokenTransfer;
153
+ (function (TokenTransfer) {
154
+ /** 8 is maximum precision supported by the token bridge VAA */
155
+ TokenTransfer.MAX_DECIMALS = 8;
153
156
  // Static method to perform the transfer so a custom RPC may be used
154
157
  // Note: this assumes the transfer has already been validated with `validateTransfer`
155
- static async transfer(fromChain, transfer, signer) {
158
+ async function transfer(fromChain, transfer, signer) {
156
159
  const senderAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
157
160
  const token = (0, sdk_definitions_1.isTokenId)(transfer.token) ? transfer.token.address : transfer.token;
158
161
  let xfer;
@@ -166,48 +169,138 @@ class TokenTransfer {
166
169
  }
167
170
  return (0, common_js_1.signSendWait)(fromChain, xfer, signer);
168
171
  }
172
+ TokenTransfer.transfer = transfer;
169
173
  // Static method to allow passing a custom RPC
170
- static async redeem(toChain, vaa, signer) {
174
+ async function redeem(toChain, vaa, signer) {
171
175
  const signerAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
172
176
  const xfer = vaa.protocolName === "AutomaticTokenBridge"
173
177
  ? (await toChain.getAutomaticTokenBridge()).redeem(signerAddress, vaa)
174
178
  : (await toChain.getTokenBridge()).redeem(signerAddress, vaa);
175
179
  return (0, common_js_1.signSendWait)(toChain, xfer, signer);
176
180
  }
177
- static async isTransferComplete(toChain, vaa) {
178
- // TODO: converter?
179
- if (vaa.protocolName === "AutomaticTokenBridge")
180
- vaa = (0, sdk_definitions_1.deserialize)("TokenBridge:TransferWithPayload", (0, sdk_definitions_1.serialize)(vaa));
181
- const tb = await toChain.getTokenBridge();
182
- return tb.isTransferCompleted(vaa);
183
- }
184
- static async getTransferMessage(chain, txid, timeout) {
185
- // A Single wormhole message will be returned for a standard token transfer
186
- const whm = await wormhole_js_1.Wormhole.parseMessageFromTx(chain, txid, timeout);
187
- if (whm.length !== 1)
188
- throw new Error("Expected a single Wormhole Message, got: " + whm.length);
189
- return whm[0];
181
+ TokenTransfer.redeem = redeem;
182
+ // AsyncGenerator fn that produces status updates through an async generator
183
+ // eventually producing a receipt
184
+ // can be called repeatedly so the receipt is updated as it moves through the
185
+ // steps of the transfer
186
+ async function* track(wh, receipt, timeout = config_js_1.DEFAULT_TASK_TIMEOUT, fromChain, toChain) {
187
+ const start = Date.now();
188
+ const leftover = (start, max) => Math.max(max - (Date.now() - start), 0);
189
+ fromChain = fromChain ?? wh.getChain(receipt.from);
190
+ toChain = toChain ?? wh.getChain(receipt.to);
191
+ // Check the source chain for initiation transaction
192
+ // and capture the message id
193
+ if ((0, types_js_1.isSourceInitiated)(receipt)) {
194
+ if (receipt.originTxs.length === 0)
195
+ throw "Origin transactions required to fetch message id";
196
+ const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
197
+ const msg = await TokenTransfer.getTransferMessage(fromChain, txid, leftover(start, timeout));
198
+ receipt = {
199
+ ...receipt,
200
+ state: types_js_1.TransferState.SourceFinalized,
201
+ attestation: { id: msg },
202
+ };
203
+ yield receipt;
204
+ }
205
+ // If the source is finalized, we need to fetch the signed attestation
206
+ // so that we may deliver it to the destination chain
207
+ // or at least track the transfer through its progress
208
+ if ((0, types_js_1.isSourceFinalized)(receipt)) {
209
+ if (!receipt.attestation.id)
210
+ throw "Attestation id required to fetch attestation";
211
+ const { id } = receipt.attestation;
212
+ const attestation = await TokenTransfer.getTransferVaa(wh, id, leftover(start, timeout));
213
+ receipt = {
214
+ ...receipt,
215
+ attestation: { id, attestation },
216
+ state: types_js_1.TransferState.Attested,
217
+ };
218
+ yield receipt;
219
+ }
220
+ // First try to grab the tx status from the API
221
+ // Note: this requires a subsequent async step on the backend
222
+ // to have the dest txid populated, so it may be delayed by some time
223
+ if ((0, types_js_1.isAttested)(receipt) || (0, types_js_1.isSourceFinalized)(receipt)) {
224
+ if (!receipt.attestation.id)
225
+ throw "Attestation id required to fetch redeem tx";
226
+ const { id } = receipt.attestation;
227
+ const txStatus = await wh.getTransactionStatus(id, leftover(start, timeout));
228
+ if (txStatus && txStatus.globalTx?.destinationTx?.txHash) {
229
+ const { chainId, txHash } = txStatus.globalTx.destinationTx;
230
+ receipt = {
231
+ ...receipt,
232
+ destinationTxs: [{ chain: (0, sdk_base_1.toChain)(chainId), txid: txHash }],
233
+ state: types_js_1.TransferState.DestinationInitiated,
234
+ };
235
+ }
236
+ yield receipt;
237
+ }
238
+ // Fall back to asking the destination chain if this VAA has been redeemed
239
+ // Note: We do not get any destinationTxs with this method
240
+ if ((0, types_js_1.isAttested)(receipt)) {
241
+ if (!receipt.attestation.attestation)
242
+ throw "Signed Attestation required to check for redeem";
243
+ let isComplete = await TokenTransfer.isTransferComplete(toChain, receipt.attestation.attestation);
244
+ if (isComplete) {
245
+ receipt = {
246
+ ...receipt,
247
+ state: types_js_1.TransferState.DestinationFinalized,
248
+ };
249
+ }
250
+ yield receipt;
251
+ }
252
+ yield receipt;
190
253
  }
191
- static async getTransferVaa(wh, key, timeout) {
192
- const vaa = await wh.getVaa(key, sdk_definitions_1.TokenBridge.getTransferDiscriminator(), timeout);
193
- if (!vaa)
194
- throw new Error(`No VAA available after retries exhausted`);
195
- // TODO: converter
196
- // Check if its automatic and re-de-serialize
197
- if (vaa.payloadName === "TransferWithPayload") {
198
- const { chain, address } = vaa.payload.to;
199
- const { tokenBridgeRelayer } = wh.config.chains[chain].contracts;
200
- const relayerAddress = tokenBridgeRelayer ? (0, sdk_definitions_1.toUniversal)(chain, tokenBridgeRelayer) : null;
201
- // If the target address is the relayer address, expect its an automatic token bridge vaa
202
- if (!!relayerAddress && address.equals(relayerAddress)) {
203
- return (0, sdk_definitions_1.deserialize)("AutomaticTokenBridge:TransferWithRelay", (0, sdk_definitions_1.serialize)(vaa));
254
+ TokenTransfer.track = track;
255
+ function getReceipt(xfer) {
256
+ const { transfer } = xfer;
257
+ const from = transfer.from.chain;
258
+ const to = transfer.to.chain;
259
+ let receipt = {
260
+ from: from,
261
+ to: to,
262
+ state: types_js_1.TransferState.Created,
263
+ };
264
+ const originTxs = xfer.txids.filter((txid) => txid.chain === transfer.from.chain);
265
+ if (originTxs.length > 0) {
266
+ receipt = {
267
+ ...receipt,
268
+ state: types_js_1.TransferState.SourceInitiated,
269
+ originTxs: originTxs,
270
+ };
271
+ }
272
+ const att = xfer.attestations && xfer.attestations.length > 0 ? xfer.attestations[0] : undefined;
273
+ const attestation = att && att.id ? { id: att.id, attestation: att.attestation } : undefined;
274
+ if (attestation) {
275
+ if (attestation.id) {
276
+ receipt = {
277
+ ...receipt,
278
+ state: types_js_1.TransferState.SourceFinalized,
279
+ attestation: { id: attestation.id },
280
+ };
281
+ if (attestation.attestation) {
282
+ receipt = {
283
+ ...receipt,
284
+ state: types_js_1.TransferState.Attested,
285
+ attestation: { id: attestation.id, attestation: attestation.attestation },
286
+ };
287
+ }
204
288
  }
205
289
  }
206
- return vaa;
290
+ const destinationTxs = xfer.txids.filter((txid) => txid.chain === transfer.to.chain);
291
+ if (destinationTxs.length > 0) {
292
+ receipt = {
293
+ ...receipt,
294
+ state: types_js_1.TransferState.DestinationFinalized,
295
+ destinationTxs: destinationTxs,
296
+ };
297
+ }
298
+ return receipt;
207
299
  }
300
+ TokenTransfer.getReceipt = getReceipt;
208
301
  // Lookup the token id for the destination chain given the source chain
209
302
  // and token id
210
- static async lookupDestinationToken(srcChain, dstChain, token) {
303
+ async function lookupDestinationToken(srcChain, dstChain, token) {
211
304
  // that will be minted when the transfer is redeemed
212
305
  let lookup;
213
306
  if ((0, sdk_definitions_1.isNative)(token.address)) {
@@ -234,7 +327,40 @@ class TokenTransfer {
234
327
  const dstAddress = await dstTb.getWrappedAsset(lookup);
235
328
  return { chain: dstChain.chain, address: dstAddress };
236
329
  }
237
- static validateTransferDetails(wh, transfer, fromChain, toChain) {
330
+ TokenTransfer.lookupDestinationToken = lookupDestinationToken;
331
+ async function isTransferComplete(toChain, vaa) {
332
+ if (vaa.protocolName === "AutomaticTokenBridge")
333
+ vaa = (0, sdk_definitions_1.deserialize)("TokenBridge:TransferWithPayload", (0, sdk_definitions_1.serialize)(vaa));
334
+ const tb = await toChain.getTokenBridge();
335
+ return tb.isTransferCompleted(vaa);
336
+ }
337
+ TokenTransfer.isTransferComplete = isTransferComplete;
338
+ async function getTransferMessage(chain, txid, timeout) {
339
+ // A Single wormhole message will be returned for a standard token transfer
340
+ const whm = await wormhole_js_1.Wormhole.parseMessageFromTx(chain, txid, timeout);
341
+ if (whm.length !== 1)
342
+ throw new Error("Expected a single Wormhole Message, got: " + whm.length);
343
+ return whm[0];
344
+ }
345
+ TokenTransfer.getTransferMessage = getTransferMessage;
346
+ async function getTransferVaa(wh, key, timeout) {
347
+ const vaa = await wh.getVaa(key, sdk_definitions_1.TokenBridge.getTransferDiscriminator(), timeout);
348
+ if (!vaa)
349
+ throw new Error(`No VAA available after retries exhausted`);
350
+ // Check if its automatic and re-de-serialize
351
+ if (vaa.payloadName === "TransferWithPayload") {
352
+ const { chain, address } = vaa.payload.to;
353
+ const { tokenBridgeRelayer } = wh.config.chains[chain].contracts;
354
+ const relayerAddress = tokenBridgeRelayer ? (0, sdk_definitions_1.toUniversal)(chain, tokenBridgeRelayer) : null;
355
+ // If the target address is the relayer address, expect its an automatic token bridge vaa
356
+ if (!!relayerAddress && address.equals(relayerAddress)) {
357
+ return (0, sdk_definitions_1.deserialize)("AutomaticTokenBridge:TransferWithRelay", (0, sdk_definitions_1.serialize)(vaa));
358
+ }
359
+ }
360
+ return vaa;
361
+ }
362
+ TokenTransfer.getTransferVaa = getTransferVaa;
363
+ function validateTransferDetails(wh, transfer, fromChain, toChain) {
238
364
  if (transfer.amount === 0n)
239
365
  throw new Error("Amount cannot be 0");
240
366
  if (transfer.from.chain === transfer.to.chain)
@@ -261,10 +387,11 @@ class TokenTransfer {
261
387
  throw new Error(`Token Bridge not supported on ${transfer.to.chain}`);
262
388
  }
263
389
  }
264
- static async quoteTransfer(wh, srcChain, dstChain, transfer) {
390
+ TokenTransfer.validateTransferDetails = validateTransferDetails;
391
+ async function quoteTransfer(wh, srcChain, dstChain, transfer) {
265
392
  const srcDecimals = await srcChain.getDecimals(transfer.token.address);
266
393
  const srcAmount = sdk_base_1.amount.fromBaseUnits(transfer.amount, srcDecimals);
267
- const srcAmountTruncated = sdk_base_1.amount.truncate(srcAmount, TOKEN_BRIDGE_MAX_DECIMALS);
394
+ const srcAmountTruncated = sdk_base_1.amount.truncate(srcAmount, TokenTransfer.MAX_DECIMALS);
268
395
  const srcToken = (0, sdk_definitions_1.isNative)(transfer.token.address)
269
396
  ? await srcChain.getNativeWrappedTokenId()
270
397
  : transfer.token;
@@ -287,7 +414,7 @@ class TokenTransfer {
287
414
  if (notionalTransferAmt > limit.available)
288
415
  throw new Error(`Transfer amount exceeds available governed amount: ${notionalTransferAmt} > ${limit.available}`);
289
416
  }
290
- const dstToken = await this.lookupDestinationToken(srcChain, dstChain, transfer.token);
417
+ const dstToken = await TokenTransfer.lookupDestinationToken(srcChain, dstChain, transfer.token);
291
418
  const dstDecimals = await dstChain.getDecimals(dstToken.address);
292
419
  const dstAmountReceivable = sdk_base_1.amount.scale(srcAmountTruncated, dstDecimals);
293
420
  if (!transfer.automatic) {
@@ -300,8 +427,8 @@ class TokenTransfer {
300
427
  // The fee is removed from the amount transferred
301
428
  // quoted on the source chain
302
429
  const stb = await srcChain.getAutomaticTokenBridge();
303
- const fee = await stb.getRelayerFee(transfer.from.address, transfer.to, srcToken.address);
304
- const feeAmountDest = sdk_base_1.amount.scale(sdk_base_1.amount.truncate(sdk_base_1.amount.fromBaseUnits(fee, srcDecimals), TOKEN_BRIDGE_MAX_DECIMALS), dstDecimals);
430
+ const fee = await stb.getRelayerFee(dstChain.chain, srcToken.address);
431
+ const feeAmountDest = sdk_base_1.amount.scale(sdk_base_1.amount.truncate(sdk_base_1.amount.fromBaseUnits(fee, srcDecimals), TokenTransfer.MAX_DECIMALS), dstDecimals);
305
432
  const dstNativeGasAmountRequested = transfer.nativeGas ?? 0n;
306
433
  // The expected destination gas can be pulled from the destination token bridge
307
434
  let destinationNativeGas = 0n;
@@ -329,7 +456,8 @@ class TokenTransfer {
329
456
  destinationNativeGas,
330
457
  };
331
458
  }
332
- static async destinationOverrides(srcChain, dstChain, transfer) {
459
+ TokenTransfer.quoteTransfer = quoteTransfer;
460
+ async function destinationOverrides(srcChain, dstChain, transfer) {
333
461
  const _transfer = { ...transfer };
334
462
  // Bit of (temporary) hackery until solana contracts support being
335
463
  // sent a VAA with the primary address
@@ -357,123 +485,6 @@ class TokenTransfer {
357
485
  }
358
486
  return _transfer;
359
487
  }
360
- static getReceipt(xfer) {
361
- const { transfer } = xfer;
362
- const from = transfer.from.chain;
363
- const to = transfer.to.chain;
364
- let receipt = {
365
- from: from,
366
- to: to,
367
- state: types_js_1.TransferState.Created,
368
- };
369
- const originTxs = xfer.txids.filter((txid) => txid.chain === transfer.from.chain);
370
- if (originTxs.length > 0) {
371
- receipt = {
372
- ...receipt,
373
- state: types_js_1.TransferState.SourceInitiated,
374
- originTxs: originTxs,
375
- };
376
- }
377
- const att = xfer.attestations && xfer.attestations.length > 0 ? xfer.attestations[0] : undefined;
378
- const attestation = att && att.id ? { id: att.id, attestation: att.attestation } : undefined;
379
- if (attestation) {
380
- if (attestation.id) {
381
- receipt = {
382
- ...receipt,
383
- state: types_js_1.TransferState.SourceFinalized,
384
- attestation: { id: attestation.id },
385
- };
386
- if (attestation.attestation) {
387
- receipt = {
388
- ...receipt,
389
- state: types_js_1.TransferState.Attested,
390
- attestation: { id: attestation.id, attestation: attestation.attestation },
391
- };
392
- }
393
- }
394
- }
395
- const destinationTxs = xfer.txids.filter((txid) => txid.chain === transfer.to.chain);
396
- if (destinationTxs.length > 0) {
397
- receipt = {
398
- ...receipt,
399
- state: types_js_1.TransferState.DestinationFinalized,
400
- destinationTxs: destinationTxs,
401
- };
402
- }
403
- return receipt;
404
- }
405
- // AsyncGenerator fn that produces status updates through an async generator
406
- // eventually producing a receipt
407
- // can be called repeatedly so the receipt is updated as it moves through the
408
- // steps of the transfer
409
- static async *track(wh, receipt, timeout = config_js_1.DEFAULT_TASK_TIMEOUT, fromChain, toChain) {
410
- const start = Date.now();
411
- const leftover = (start, max) => Math.max(max - (Date.now() - start), 0);
412
- fromChain = fromChain ?? wh.getChain(receipt.from);
413
- toChain = toChain ?? wh.getChain(receipt.to);
414
- // Check the source chain for initiation transaction
415
- // and capture the message id
416
- if ((0, types_js_1.isSourceInitiated)(receipt)) {
417
- if (receipt.originTxs.length === 0)
418
- throw "Origin transactions required to fetch message id";
419
- const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
420
- const msg = await TokenTransfer.getTransferMessage(fromChain, txid, leftover(start, timeout));
421
- receipt = {
422
- ...receipt,
423
- state: types_js_1.TransferState.SourceFinalized,
424
- attestation: { id: msg },
425
- };
426
- yield receipt;
427
- }
428
- // If the source is finalized, we need to fetch the signed attestation
429
- // so that we may deliver it to the destination chain
430
- // or at least track the transfer through its progress
431
- if ((0, types_js_1.isSourceFinalized)(receipt)) {
432
- if (!receipt.attestation.id)
433
- throw "Attestation id required to fetch attestation";
434
- const { id } = receipt.attestation;
435
- const attestation = await TokenTransfer.getTransferVaa(wh, id, leftover(start, timeout));
436
- receipt = {
437
- ...receipt,
438
- attestation: { id, attestation },
439
- state: types_js_1.TransferState.Attested,
440
- };
441
- yield receipt;
442
- }
443
- // First try to grab the tx status from the API
444
- // Note: this requires a subsequent async step on the backend
445
- // to have the dest txid populated, so it may be delayed by some time
446
- if ((0, types_js_1.isAttested)(receipt) || (0, types_js_1.isSourceFinalized)(receipt)) {
447
- if (!receipt.attestation.id)
448
- throw "Attestation id required to fetch redeem tx";
449
- const { id } = receipt.attestation;
450
- const txStatus = await wh.getTransactionStatus(id, leftover(start, timeout));
451
- if (txStatus && txStatus.globalTx?.destinationTx?.txHash) {
452
- const { chainId, txHash } = txStatus.globalTx.destinationTx;
453
- receipt = {
454
- ...receipt,
455
- destinationTxs: [{ chain: (0, sdk_base_1.toChain)(chainId), txid: txHash }],
456
- state: types_js_1.TransferState.DestinationInitiated,
457
- };
458
- }
459
- yield receipt;
460
- }
461
- // Fall back to asking the destination chain if this VAA has been redeemed
462
- // Note: We do not get any destinationTxs with this method
463
- if ((0, types_js_1.isAttested)(receipt)) {
464
- if (!receipt.attestation.attestation)
465
- throw "Signed Attestation required to check for redeem";
466
- let isComplete = await TokenTransfer.isTransferComplete(toChain, receipt.attestation.attestation);
467
- if (isComplete) {
468
- receipt = {
469
- ...receipt,
470
- state: types_js_1.TransferState.DestinationFinalized,
471
- };
472
- }
473
- yield receipt;
474
- }
475
- yield receipt;
476
- }
477
- }
478
- exports.TokenTransfer = TokenTransfer;
488
+ TokenTransfer.destinationOverrides = destinationOverrides;
489
+ })(TokenTransfer || (exports.TokenTransfer = TokenTransfer = {}));
479
490
  //# sourceMappingURL=tokenTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransfer.js","sourceRoot":"","sources":["../../../../src/protocols/tokenBridge/tokenTransfer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wormholeTransfer.d.ts","sourceRoot":"","sources":["../../../src/protocols/wormholeTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,MAAM,EACN,oBAAoB,EACpB,MAAM,EACP,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,YAAY,GAAG,YAAY,IAAI,EAAE,SACpE,aAAa,GACb,sBAAsB,GACtB,oBAAoB,GACpB,EAAE,SAAS,cAAc,GAAG,uBAAuB,GACnD,qBAAqB,GACrB,EAAE,SAAS,WAAW,GACtB,sBAAsB,GACtB,KAAK,CAAC;AAIV,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,YAAY;IACvD,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,KAAK,EACnD,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,uBAAuB,CAAC,CAAC,SAAS,OAAO,EACvC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClE,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,CAAC,SAAS,OAAO,EACrB,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,IAAI,EAAE,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAC7C,OAAO,EAAE,MAAM,GACd,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5D;AAID,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,YAAY;IACvD,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;IAI9B,gBAAgB,IAAI,aAAa,CAAC;IAIlC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAIpD,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAI7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAMrD"}
1
+ {"version":3,"file":"wormholeTransfer.d.ts","sourceRoot":"","sources":["../../../src/protocols/wormholeTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,MAAM,EACN,oBAAoB,EACpB,MAAM,EACP,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,YAAY,GAAG,YAAY,IAAI,EAAE,SACpE,aAAa,GACb,sBAAsB,GACtB,oBAAoB,GACpB,EAAE,SAAS,cAAc,GAAG,uBAAuB,GACnD,qBAAqB,GACrB,EAAE,SAAS,WAAW,GACtB,sBAAsB,GACtB,KAAK,CAAC;AAIV,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,YAAY;IACvD,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,KAAK,EACnD,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,uBAAuB,CAAC,CAAC,SAAS,OAAO,EACvC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClE,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,CAAC,SAAS,OAAO,EACrB,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,IAAI,EAAE,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAC7C,OAAO,EAAE,MAAM,GACd,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5D;AAID,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,YAAY;IACvD,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;IAI9B,gBAAgB,IAAI,aAAa,CAAC;IAIlC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAIpD,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAI7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACrD"}
@@ -1,7 +1,7 @@
1
1
  import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2
2
  import { amount } from "@wormhole-foundation/sdk-base";
3
- import type { ChainContext, Signer, TokenId } from "@wormhole-foundation/sdk-definitions";
4
- import type { CircleAttestationReceipt } from "../../protocols/cctpTransfer.js";
3
+ import type { ChainAddress, ChainContext, Signer, TokenId } from "@wormhole-foundation/sdk-definitions";
4
+ import { CircleTransfer } from "../../protocols/cctp/cctpTransfer.js";
5
5
  import type { StaticRouteMethods } from "../route.js";
6
6
  import { AutomaticRoute } from "../route.js";
7
7
  import type { Quote, QuoteResult, Receipt, TransferParams, ValidatedTransferParams, ValidationResult } from "../types.js";
@@ -24,7 +24,7 @@ type Tp = TransferParams<Op>;
24
24
  type Vr = ValidationResult<Op>;
25
25
  type Q = Quote<Op, Vp>;
26
26
  type QR = QuoteResult<Op, Vp>;
27
- type R = Receipt<CircleAttestationReceipt>;
27
+ type R = Receipt<CircleTransfer.AttestationReceipt>;
28
28
  export declare class AutomaticCCTPRoute<N extends Network> extends AutomaticRoute<N, Op, Vp, R> implements StaticRouteMethods<typeof AutomaticCCTPRoute> {
29
29
  NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
30
30
  static meta: {
@@ -41,8 +41,8 @@ export declare class AutomaticCCTPRoute<N extends Network> extends AutomaticRout
41
41
  quote(params: Vp): Promise<QR>;
42
42
  private normalizeTransferParams;
43
43
  private toTransferDetails;
44
- initiate(signer: Signer, quote: Q): Promise<R>;
45
- track(receipt: R, timeout?: number): AsyncGenerator<import("../../protocols/cctpTransfer.js").CircleTransferReceipt<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">, void, unknown>;
44
+ initiate(signer: Signer, quote: Q, to: ChainAddress): Promise<R>;
45
+ track(receipt: R, timeout?: number): AsyncGenerator<CircleTransfer.TransferReceipt<"Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance", "Solana" | "Btc" | "Algorand" | "Sui" | "Aptos" | "Near" | "Acala" | "Arbitrum" | "Aurora" | "Avalanche" | "Base" | "Bsc" | "Celo" | "Ethereum" | "Fantom" | "Gnosis" | "Karura" | "Klaytn" | "Moonbeam" | "Neon" | "Oasis" | "Optimism" | "Polygon" | "Rootstock" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia" | "Mantle" | "Scroll" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Pythnet" | "Cosmoshub" | "Evmos" | "Injective" | "Kujira" | "Osmosis" | "Sei" | "Terra" | "Terra2" | "Wormchain" | "Xpla" | "Dymension" | "Neutron" | "Stargaze" | "Celestia" | "Seda" | "Provenance">, void, unknown>;
46
46
  }
47
47
  export {};
48
48
  //# sourceMappingURL=automatic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"automatic.d.ts","sourceRoot":"","sources":["../../../../src/routes/cctp/automatic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automatic.d.ts","sourceRoot":"","sources":["../../../../src/routes/cctp/automatic.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AutomaticCCTPRoute = void 0;
4
4
  const sdk_base_1 = require("@wormhole-foundation/sdk-base");
5
- const cctpTransfer_js_1 = require("../../protocols/cctpTransfer.js");
5
+ const cctpTransfer_js_1 = require("../../protocols/cctp/cctpTransfer.js");
6
6
  const types_js_1 = require("../../types.js");
7
7
  const wormhole_js_1 = require("../../wormhole.js");
8
8
  const route_js_1 = require("../route.js");
@@ -70,7 +70,11 @@ class AutomaticCCTPRoute extends route_js_1.AutomaticRoute {
70
70
  }
71
71
  async quote(params) {
72
72
  try {
73
- return this.request.displayQuote(await cctpTransfer_js_1.CircleTransfer.quoteTransfer(this.request.fromChain, this.request.toChain, this.toTransferDetails(params)), params);
73
+ return this.request.displayQuote(await cctpTransfer_js_1.CircleTransfer.quoteTransfer(this.request.fromChain, this.request.toChain, {
74
+ automatic: true,
75
+ amount: sdk_base_1.amount.units(params.normalizedParams.amount),
76
+ nativeGas: sdk_base_1.amount.units(params.normalizedParams.nativeGasAmount),
77
+ }), params);
74
78
  }
75
79
  catch (e) {
76
80
  return {
@@ -82,7 +86,7 @@ class AutomaticCCTPRoute extends route_js_1.AutomaticRoute {
82
86
  async normalizeTransferParams(params) {
83
87
  const amt = this.request.parseAmount(params.amount);
84
88
  const ctb = await this.request.fromChain.getAutomaticCircleBridge();
85
- const fee = await ctb.getRelayerFee(this.request.to.chain);
89
+ const fee = await ctb.getRelayerFee(this.request.toChain.chain);
86
90
  const minAmount = (fee * 105n) / 100n;
87
91
  if (sdk_base_1.amount.units(amt) < minAmount) {
88
92
  throw new Error(`Minimum amount is ${sdk_base_1.amount.display(this.request.amountFromBaseUnits(minAmount))}`);
@@ -104,18 +108,18 @@ class AutomaticCCTPRoute extends route_js_1.AutomaticRoute {
104
108
  nativeGasAmount: this.request.amountFromBaseUnits(nativeGasAmount),
105
109
  };
106
110
  }
107
- toTransferDetails(params) {
111
+ toTransferDetails(params, from, to) {
108
112
  return {
109
- from: this.request.from,
110
- to: this.request.to,
113
+ from,
114
+ to,
111
115
  amount: sdk_base_1.amount.units(params.normalizedParams.amount),
112
116
  automatic: true,
113
117
  nativeGas: sdk_base_1.amount.units(params.normalizedParams.nativeGasAmount),
114
118
  };
115
119
  }
116
- async initiate(signer, quote) {
120
+ async initiate(signer, quote, to) {
117
121
  const { params } = quote;
118
- let transfer = this.toTransferDetails(params);
122
+ let transfer = this.toTransferDetails(params, wormhole_js_1.Wormhole.chainAddress(signer.chain(), signer.address()), to);
119
123
  let txids = await cctpTransfer_js_1.CircleTransfer.transfer(this.request.fromChain, transfer, signer);
120
124
  const msg = await cctpTransfer_js_1.CircleTransfer.getTransferMessage(this.request.fromChain, txids[txids.length - 1].txid);
121
125
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/routes/cctp/automatic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/routes/cctp/automatic.ts"],"names":[],"mappings":"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"}