@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.
- package/dist/cjs/circle-api.js.map +1 -1
- package/dist/cjs/common.js.map +1 -1
- package/dist/cjs/config.js +1 -1
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/protocols/cctp/cctpTransfer.d.ts +46 -0
- package/dist/cjs/protocols/cctp/cctpTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/{cctpTransfer.js → cctp/cctpTransfer.js} +140 -151
- package/dist/cjs/protocols/cctp/cctpTransfer.js.map +1 -0
- package/dist/{esm/protocols → cjs/protocols/gateway}/gatewayTransfer.d.ts +8 -6
- package/dist/cjs/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/{gatewayTransfer.js → gateway/gatewayTransfer.js} +23 -30
- package/dist/cjs/protocols/gateway/gatewayTransfer.js.map +1 -0
- package/dist/cjs/protocols/index.d.ts +5 -0
- package/dist/cjs/protocols/index.d.ts.map +1 -0
- package/dist/cjs/protocols/index.js +21 -0
- package/dist/cjs/protocols/index.js.map +1 -0
- package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts +46 -0
- package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
- package/dist/cjs/protocols/{tokenTransfer.js → tokenBridge/tokenTransfer.js} +175 -164
- package/dist/cjs/protocols/tokenBridge/tokenTransfer.js.map +1 -0
- package/dist/cjs/protocols/wormholeTransfer.d.ts.map +1 -1
- package/dist/cjs/routes/cctp/automatic.d.ts +5 -5
- package/dist/cjs/routes/cctp/automatic.d.ts.map +1 -1
- package/dist/cjs/routes/cctp/automatic.js +12 -8
- package/dist/cjs/routes/cctp/automatic.js.map +1 -1
- package/dist/cjs/routes/cctp/manual.d.ts +5 -4
- package/dist/cjs/routes/cctp/manual.d.ts.map +1 -1
- package/dist/cjs/routes/cctp/manual.js +12 -8
- package/dist/cjs/routes/cctp/manual.js.map +1 -1
- package/dist/cjs/routes/common.js.map +1 -1
- package/dist/cjs/routes/portico/automatic.d.ts +5 -4
- package/dist/cjs/routes/portico/automatic.d.ts.map +1 -1
- package/dist/cjs/routes/portico/automatic.js +6 -6
- package/dist/cjs/routes/portico/automatic.js.map +1 -1
- package/dist/cjs/routes/request.d.ts +1 -5
- package/dist/cjs/routes/request.d.ts.map +1 -1
- package/dist/cjs/routes/request.js +4 -8
- package/dist/cjs/routes/request.js.map +1 -1
- package/dist/cjs/routes/resolver.js +2 -2
- package/dist/cjs/routes/resolver.js.map +1 -1
- package/dist/cjs/routes/route.d.ts +2 -1
- package/dist/cjs/routes/route.d.ts.map +1 -1
- package/dist/cjs/routes/route.js.map +1 -1
- package/dist/cjs/routes/tokenBridge/automatic.d.ts +4 -2
- package/dist/cjs/routes/tokenBridge/automatic.d.ts.map +1 -1
- package/dist/cjs/routes/tokenBridge/automatic.js +14 -8
- package/dist/cjs/routes/tokenBridge/automatic.js.map +1 -1
- package/dist/cjs/routes/tokenBridge/manual.d.ts +4 -2
- package/dist/cjs/routes/tokenBridge/manual.d.ts.map +1 -1
- package/dist/cjs/routes/tokenBridge/manual.js +11 -7
- package/dist/cjs/routes/tokenBridge/manual.js.map +1 -1
- package/dist/cjs/tasks.js.map +1 -1
- package/dist/cjs/types.d.ts +5 -5
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/whscan-api.js.map +1 -1
- package/dist/cjs/wormhole.d.ts +2 -2
- package/dist/cjs/wormhole.d.ts.map +1 -1
- package/dist/cjs/wormhole.js +2 -2
- package/dist/cjs/wormhole.js.map +1 -1
- package/dist/esm/circle-api.js.map +1 -1
- package/dist/esm/common.js.map +1 -1
- package/dist/esm/config.js +1 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/index.d.ts +1 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/protocols/cctp/cctpTransfer.d.ts +46 -0
- package/dist/esm/protocols/cctp/cctpTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/{cctpTransfer.js → cctp/cctpTransfer.js} +139 -150
- package/dist/esm/protocols/cctp/cctpTransfer.js.map +1 -0
- package/dist/{cjs/protocols → esm/protocols/gateway}/gatewayTransfer.d.ts +8 -6
- package/dist/esm/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/{gatewayTransfer.js → gateway/gatewayTransfer.js} +22 -29
- package/dist/esm/protocols/gateway/gatewayTransfer.js.map +1 -0
- package/dist/esm/protocols/index.d.ts +5 -0
- package/dist/esm/protocols/index.d.ts.map +1 -0
- package/dist/esm/protocols/index.js +5 -0
- package/dist/esm/protocols/index.js.map +1 -0
- package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts +46 -0
- package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
- package/dist/esm/protocols/{tokenTransfer.js → tokenBridge/tokenTransfer.js} +174 -163
- package/dist/esm/protocols/tokenBridge/tokenTransfer.js.map +1 -0
- package/dist/esm/protocols/wormholeTransfer.d.ts.map +1 -1
- package/dist/esm/routes/cctp/automatic.d.ts +5 -5
- package/dist/esm/routes/cctp/automatic.d.ts.map +1 -1
- package/dist/esm/routes/cctp/automatic.js +12 -8
- package/dist/esm/routes/cctp/automatic.js.map +1 -1
- package/dist/esm/routes/cctp/manual.d.ts +5 -4
- package/dist/esm/routes/cctp/manual.d.ts.map +1 -1
- package/dist/esm/routes/cctp/manual.js +12 -8
- package/dist/esm/routes/cctp/manual.js.map +1 -1
- package/dist/esm/routes/common.js.map +1 -1
- package/dist/esm/routes/portico/automatic.d.ts +5 -4
- package/dist/esm/routes/portico/automatic.d.ts.map +1 -1
- package/dist/esm/routes/portico/automatic.js +6 -6
- package/dist/esm/routes/portico/automatic.js.map +1 -1
- package/dist/esm/routes/request.d.ts +1 -5
- package/dist/esm/routes/request.d.ts.map +1 -1
- package/dist/esm/routes/request.js +4 -8
- package/dist/esm/routes/request.js.map +1 -1
- package/dist/esm/routes/resolver.js +2 -2
- package/dist/esm/routes/resolver.js.map +1 -1
- package/dist/esm/routes/route.d.ts +2 -1
- package/dist/esm/routes/route.d.ts.map +1 -1
- package/dist/esm/routes/route.js.map +1 -1
- package/dist/esm/routes/tokenBridge/automatic.d.ts +4 -2
- package/dist/esm/routes/tokenBridge/automatic.d.ts.map +1 -1
- package/dist/esm/routes/tokenBridge/automatic.js +14 -8
- package/dist/esm/routes/tokenBridge/automatic.js.map +1 -1
- package/dist/esm/routes/tokenBridge/manual.d.ts +4 -2
- package/dist/esm/routes/tokenBridge/manual.d.ts.map +1 -1
- package/dist/esm/routes/tokenBridge/manual.js +11 -7
- package/dist/esm/routes/tokenBridge/manual.js.map +1 -1
- package/dist/esm/tasks.js.map +1 -1
- package/dist/esm/types.d.ts +5 -5
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/whscan-api.js.map +1 -1
- package/dist/esm/wormhole.d.ts +2 -2
- package/dist/esm/wormhole.d.ts.map +1 -1
- package/dist/esm/wormhole.js +2 -2
- package/dist/esm/wormhole.js.map +1 -1
- package/package.json +6 -3
- package/dist/cjs/protocols/cctpTransfer.d.ts +0 -43
- package/dist/cjs/protocols/cctpTransfer.d.ts.map +0 -1
- package/dist/cjs/protocols/cctpTransfer.js.map +0 -1
- package/dist/cjs/protocols/gatewayTransfer.d.ts.map +0 -1
- package/dist/cjs/protocols/gatewayTransfer.js.map +0 -1
- package/dist/cjs/protocols/tokenTransfer.d.ts +0 -42
- package/dist/cjs/protocols/tokenTransfer.d.ts.map +0 -1
- package/dist/cjs/protocols/tokenTransfer.js.map +0 -1
- package/dist/esm/protocols/cctpTransfer.d.ts +0 -43
- package/dist/esm/protocols/cctpTransfer.d.ts.map +0 -1
- package/dist/esm/protocols/cctpTransfer.js.map +0 -1
- package/dist/esm/protocols/gatewayTransfer.d.ts.map +0 -1
- package/dist/esm/protocols/gatewayTransfer.js.map +0 -1
- package/dist/esm/protocols/tokenTransfer.d.ts +0 -42
- package/dist/esm/protocols/tokenTransfer.d.ts.map +0 -1
- package/dist/esm/protocols/tokenTransfer.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { circle, encoding, toChain } from "@wormhole-foundation/sdk-base";
|
|
2
2
|
import { CircleBridge, isCircleMessageId, isCircleTransferDetails, isTransactionIdentifier, isWormholeMessageId, } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
-
import { signSendWait } from "
|
|
4
|
-
import { DEFAULT_TASK_TIMEOUT } from "
|
|
5
|
-
import { TransferState, isAttested, isSourceFinalized, isSourceInitiated } from "
|
|
6
|
-
import { Wormhole } from "
|
|
3
|
+
import { signSendWait } from "../../common.js";
|
|
4
|
+
import { DEFAULT_TASK_TIMEOUT } from "../../config.js";
|
|
5
|
+
import { TransferState, isAttested, isSourceFinalized, isSourceInitiated } from "../../types.js";
|
|
6
|
+
import { Wormhole } from "../../wormhole.js";
|
|
7
7
|
export class CircleTransfer {
|
|
8
8
|
wh;
|
|
9
9
|
fromChain;
|
|
@@ -127,33 +127,15 @@ export class CircleTransfer {
|
|
|
127
127
|
// start the WormholeTransfer by submitting transactions to the source chain
|
|
128
128
|
// returns a transaction hash
|
|
129
129
|
async initiateTransfer(signer) {
|
|
130
|
-
/*
|
|
131
|
-
0) check that the current `state` is valid to call this (eg: state == Created)
|
|
132
|
-
1) get a token transfer transaction for the token bridge given the context
|
|
133
|
-
2) sign it given the signer
|
|
134
|
-
3) submit it to chain
|
|
135
|
-
4) return transaction id
|
|
136
|
-
*/
|
|
137
130
|
if (this._state !== TransferState.Created)
|
|
138
131
|
throw new Error("Invalid state transition in `start`");
|
|
139
132
|
this.txids = await CircleTransfer.transfer(this.fromChain, this.transfer, signer);
|
|
140
133
|
this._state = TransferState.SourceInitiated;
|
|
141
134
|
return this.txids.map(({ txid }) => txid);
|
|
142
135
|
}
|
|
143
|
-
static async transfer(fromChain, transfer, signer) {
|
|
144
|
-
let xfer;
|
|
145
|
-
if (transfer.automatic) {
|
|
146
|
-
const cr = await fromChain.getAutomaticCircleBridge();
|
|
147
|
-
xfer = cr.transfer(transfer.from.address, { chain: transfer.to.chain, address: transfer.to.address }, transfer.amount, transfer.nativeGas);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
const cb = await fromChain.getCircleBridge();
|
|
151
|
-
xfer = cb.transfer(transfer.from.address, { chain: transfer.to.chain, address: transfer.to.address }, transfer.amount);
|
|
152
|
-
}
|
|
153
|
-
return await signSendWait(fromChain, xfer, signer);
|
|
154
|
-
}
|
|
155
136
|
async _fetchWormholeAttestation(timeout) {
|
|
156
|
-
let attestations = (this.attestations ??
|
|
137
|
+
let attestations = (this.attestations ??
|
|
138
|
+
[]);
|
|
157
139
|
if (!attestations || attestations.length == 0)
|
|
158
140
|
throw new Error("No VAA details available");
|
|
159
141
|
// Check if we already have the VAA
|
|
@@ -195,12 +177,6 @@ export class CircleTransfer {
|
|
|
195
177
|
// wait for the VAA to be ready
|
|
196
178
|
// returns the sequence number
|
|
197
179
|
async fetchAttestation(timeout) {
|
|
198
|
-
/*
|
|
199
|
-
0) check that the current `state` is valid to call this (eg: state == Started)
|
|
200
|
-
1) poll the api on an interval to check if the VAA is available
|
|
201
|
-
2) Once available, pull the VAA and parse it
|
|
202
|
-
3) return seq
|
|
203
|
-
*/
|
|
204
180
|
if (this._state < TransferState.SourceInitiated)
|
|
205
181
|
throw new Error("Invalid state transition in `fetchAttestation`");
|
|
206
182
|
const ids = this.transfer.automatic
|
|
@@ -225,12 +201,6 @@ export class CircleTransfer {
|
|
|
225
201
|
// finish the WormholeTransfer by submitting transactions to the destination chain
|
|
226
202
|
// returns a transaction hash
|
|
227
203
|
async completeTransfer(signer) {
|
|
228
|
-
/*
|
|
229
|
-
0) check that the current `state` is valid to call this (eg: state == Ready)
|
|
230
|
-
1) prepare the transactions and sign them given the signer
|
|
231
|
-
2) submit the VAA and transactions on chain
|
|
232
|
-
3) return txid of submission
|
|
233
|
-
*/
|
|
234
204
|
if (this._state < TransferState.Attested)
|
|
235
205
|
throw new Error("Invalid state transition in `finish`");
|
|
236
206
|
// If its automatic, this does not need to be called
|
|
@@ -240,9 +210,6 @@ export class CircleTransfer {
|
|
|
240
210
|
const vaa = this.attestations.find((a) => isWormholeMessageId(a.id));
|
|
241
211
|
if (!vaa)
|
|
242
212
|
throw new Error("No VAA found");
|
|
243
|
-
//const tb = await toChain.getAutomaticCircleBridge();
|
|
244
|
-
//const xfer = tb.redeem(vaa);
|
|
245
|
-
//const txids = await signSendWait(toChain, xfer, signer);
|
|
246
213
|
throw new Error("No method to redeem auto circle bridge tx (yet)");
|
|
247
214
|
}
|
|
248
215
|
if (!this.attestations)
|
|
@@ -263,123 +230,26 @@ export class CircleTransfer {
|
|
|
263
230
|
this.txids?.push(...txids);
|
|
264
231
|
return txids.map(({ txid }) => txid);
|
|
265
232
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const dstToken = Wormhole.chainAddress(dstChain.chain, dstUsdcAddress);
|
|
274
|
-
const srcToken = Wormhole.chainAddress(srcChain.chain, srcUsdcAddress);
|
|
275
|
-
if (!transfer.automatic) {
|
|
276
|
-
return {
|
|
277
|
-
sourceToken: { token: srcToken, amount: transfer.amount },
|
|
278
|
-
destinationToken: { token: dstToken, amount: transfer.amount },
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
// Otherwise automatic
|
|
282
|
-
let dstAmount = transfer.amount;
|
|
283
|
-
// If a native gas dropoff is requested, remove that from the amount they'll get
|
|
284
|
-
const _nativeGas = transfer.nativeGas ? transfer.nativeGas : 0n;
|
|
285
|
-
dstAmount -= _nativeGas;
|
|
286
|
-
// The fee is also removed from the amount transferred
|
|
287
|
-
// quoted on the source chain
|
|
288
|
-
const stb = await srcChain.getAutomaticCircleBridge();
|
|
289
|
-
const fee = await stb.getRelayerFee(dstChain.chain);
|
|
290
|
-
dstAmount -= fee;
|
|
291
|
-
// The expected destination gas can be pulled from the destination token bridge
|
|
292
|
-
let destinationNativeGas = 0n;
|
|
293
|
-
if (transfer.nativeGas) {
|
|
294
|
-
const dtb = await dstChain.getAutomaticTokenBridge();
|
|
295
|
-
destinationNativeGas = await dtb.nativeTokenAmount(dstToken.address, _nativeGas);
|
|
296
|
-
}
|
|
297
|
-
return {
|
|
298
|
-
sourceToken: {
|
|
299
|
-
token: srcToken,
|
|
300
|
-
amount: transfer.amount,
|
|
301
|
-
},
|
|
302
|
-
destinationToken: { token: dstToken, amount: dstAmount },
|
|
303
|
-
relayFee: { token: srcToken, amount: fee },
|
|
304
|
-
destinationNativeGas,
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
static async isTransferComplete(toChain, attestation) {
|
|
308
|
-
if (!CircleBridge.isCircleAttestation(attestation))
|
|
309
|
-
throw new Error("Must check for completion with circle message");
|
|
310
|
-
const cb = await toChain.getCircleBridge();
|
|
311
|
-
return await cb.isTransferCompleted(attestation.message);
|
|
312
|
-
}
|
|
313
|
-
static async getTransferVaa(wh, wormholeMessageId, timeout) {
|
|
314
|
-
const vaa = await wh.getVaa(wormholeMessageId, "AutomaticCircleBridge:TransferWithRelay", timeout);
|
|
315
|
-
if (!vaa)
|
|
316
|
-
throw new Error(`No VAA available after timeout exhausted`);
|
|
317
|
-
return vaa;
|
|
318
|
-
}
|
|
319
|
-
static async getTransferMessage(fromChain, txid) {
|
|
320
|
-
const cb = await fromChain.getCircleBridge();
|
|
321
|
-
const circleMessage = await cb.parseTransactionDetails(txid);
|
|
322
|
-
return circleMessage;
|
|
323
|
-
}
|
|
324
|
-
static getReceipt(xfer) {
|
|
325
|
-
const { from, to } = xfer.transfer;
|
|
326
|
-
// This attestation may be either the auto relay vaa or the circle attestation
|
|
327
|
-
// depending on the request
|
|
328
|
-
let receipt = {
|
|
329
|
-
from: from.chain,
|
|
330
|
-
to: to.chain,
|
|
331
|
-
state: TransferState.Created,
|
|
332
|
-
};
|
|
333
|
-
const originTxs = xfer.txids.filter((txid) => txid.chain === xfer.transfer.from.chain);
|
|
334
|
-
if (originTxs.length > 0) {
|
|
335
|
-
receipt = {
|
|
336
|
-
...receipt,
|
|
337
|
-
state: TransferState.SourceInitiated,
|
|
338
|
-
originTxs,
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
const att = xfer.attestations?.filter((a) => isWormholeMessageId(a.id)) ?? [];
|
|
342
|
-
const ctt = xfer.attestations?.filter((a) => isCircleMessageId(a.id)) ?? [];
|
|
343
|
-
const attestation = ctt.length > 0 ? ctt[0] : att.length > 0 ? att[0] : undefined;
|
|
344
|
-
if (attestation) {
|
|
345
|
-
if (attestation.id) {
|
|
346
|
-
receipt = {
|
|
347
|
-
...receipt,
|
|
348
|
-
state: TransferState.SourceFinalized,
|
|
349
|
-
attestation: attestation,
|
|
350
|
-
};
|
|
351
|
-
if (attestation.attestation) {
|
|
352
|
-
receipt = {
|
|
353
|
-
...receipt,
|
|
354
|
-
state: TransferState.Attested,
|
|
355
|
-
attestation: { id: attestation.id, attestation: attestation.attestation },
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
const destinationTxs = xfer.txids.filter((txid) => txid.chain === xfer.transfer.to.chain);
|
|
361
|
-
if (destinationTxs.length > 0) {
|
|
362
|
-
receipt = {
|
|
363
|
-
...receipt,
|
|
364
|
-
state: TransferState.DestinationInitiated,
|
|
365
|
-
destinationTxs,
|
|
366
|
-
};
|
|
233
|
+
}
|
|
234
|
+
(function (CircleTransfer) {
|
|
235
|
+
async function transfer(fromChain, transfer, signer) {
|
|
236
|
+
let xfer;
|
|
237
|
+
if (transfer.automatic) {
|
|
238
|
+
const cr = await fromChain.getAutomaticCircleBridge();
|
|
239
|
+
xfer = cr.transfer(transfer.from.address, { chain: transfer.to.chain, address: transfer.to.address }, transfer.amount, transfer.nativeGas);
|
|
367
240
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const _transfer = { ...transfer };
|
|
372
|
-
if (transfer.to.chain === "Solana" && !_transfer.automatic) {
|
|
373
|
-
const usdcAddress = Wormhole.parseAddress("Solana", circle.usdcContract.get(dstChain.network, dstChain.chain));
|
|
374
|
-
_transfer.to = await dstChain.getTokenAccount(_transfer.to.address, usdcAddress);
|
|
241
|
+
else {
|
|
242
|
+
const cb = await fromChain.getCircleBridge();
|
|
243
|
+
xfer = cb.transfer(transfer.from.address, { chain: transfer.to.chain, address: transfer.to.address }, transfer.amount);
|
|
375
244
|
}
|
|
376
|
-
return
|
|
245
|
+
return await signSendWait(fromChain, xfer, signer);
|
|
377
246
|
}
|
|
247
|
+
CircleTransfer.transfer = transfer;
|
|
378
248
|
// AsyncGenerator fn that produces status updates through an async generator
|
|
379
249
|
// eventually producing a receipt
|
|
380
250
|
// can be called repeatedly so the receipt is updated as it moves through the
|
|
381
251
|
// steps of the transfer
|
|
382
|
-
|
|
252
|
+
async function* track(wh, receipt, timeout = DEFAULT_TASK_TIMEOUT,
|
|
383
253
|
// Optional parameters to override chain context (typically for custom rpc)
|
|
384
254
|
_fromChain, _toChain) {
|
|
385
255
|
const start = Date.now();
|
|
@@ -474,5 +344,124 @@ export class CircleTransfer {
|
|
|
474
344
|
yield receipt;
|
|
475
345
|
}
|
|
476
346
|
}
|
|
477
|
-
|
|
347
|
+
CircleTransfer.track = track;
|
|
348
|
+
async function destinationOverrides(srcChain, dstChain, transfer) {
|
|
349
|
+
const _transfer = { ...transfer };
|
|
350
|
+
if (transfer.to.chain === "Solana" && !_transfer.automatic) {
|
|
351
|
+
const usdcAddress = Wormhole.parseAddress("Solana", circle.usdcContract.get(dstChain.network, dstChain.chain));
|
|
352
|
+
_transfer.to = await dstChain.getTokenAccount(_transfer.to.address, usdcAddress);
|
|
353
|
+
}
|
|
354
|
+
return _transfer;
|
|
355
|
+
}
|
|
356
|
+
CircleTransfer.destinationOverrides = destinationOverrides;
|
|
357
|
+
async function quoteTransfer(srcChain, dstChain, transfer) {
|
|
358
|
+
const dstUsdcAddress = circle.usdcContract.get(dstChain.network, dstChain.chain);
|
|
359
|
+
if (!dstUsdcAddress)
|
|
360
|
+
throw "Invalid transfer, no USDC contract on destination";
|
|
361
|
+
const srcUsdcAddress = circle.usdcContract.get(srcChain.network, srcChain.chain);
|
|
362
|
+
if (!srcUsdcAddress)
|
|
363
|
+
throw "Invalid transfer, no USDC contract on source";
|
|
364
|
+
const dstToken = Wormhole.chainAddress(dstChain.chain, dstUsdcAddress);
|
|
365
|
+
const srcToken = Wormhole.chainAddress(srcChain.chain, srcUsdcAddress);
|
|
366
|
+
if (!transfer.automatic) {
|
|
367
|
+
return {
|
|
368
|
+
sourceToken: { token: srcToken, amount: transfer.amount },
|
|
369
|
+
destinationToken: { token: dstToken, amount: transfer.amount },
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
// Otherwise automatic
|
|
373
|
+
let dstAmount = transfer.amount;
|
|
374
|
+
// If a native gas dropoff is requested, remove that from the amount they'll get
|
|
375
|
+
const _nativeGas = transfer.nativeGas ? transfer.nativeGas : 0n;
|
|
376
|
+
dstAmount -= _nativeGas;
|
|
377
|
+
// The fee is also removed from the amount transferred
|
|
378
|
+
// quoted on the source chain
|
|
379
|
+
const stb = await srcChain.getAutomaticCircleBridge();
|
|
380
|
+
const fee = await stb.getRelayerFee(dstChain.chain);
|
|
381
|
+
dstAmount -= fee;
|
|
382
|
+
// The expected destination gas can be pulled from the destination token bridge
|
|
383
|
+
let destinationNativeGas = 0n;
|
|
384
|
+
if (transfer.nativeGas) {
|
|
385
|
+
const dtb = await dstChain.getAutomaticTokenBridge();
|
|
386
|
+
destinationNativeGas = await dtb.nativeTokenAmount(dstToken.address, _nativeGas);
|
|
387
|
+
}
|
|
388
|
+
return {
|
|
389
|
+
sourceToken: {
|
|
390
|
+
token: srcToken,
|
|
391
|
+
amount: transfer.amount,
|
|
392
|
+
},
|
|
393
|
+
destinationToken: { token: dstToken, amount: dstAmount },
|
|
394
|
+
relayFee: { token: srcToken, amount: fee },
|
|
395
|
+
destinationNativeGas,
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
CircleTransfer.quoteTransfer = quoteTransfer;
|
|
399
|
+
async function isTransferComplete(toChain, attestation) {
|
|
400
|
+
if (!CircleBridge.isCircleAttestation(attestation))
|
|
401
|
+
throw new Error("Must check for completion with circle message");
|
|
402
|
+
const cb = await toChain.getCircleBridge();
|
|
403
|
+
return await cb.isTransferCompleted(attestation.message);
|
|
404
|
+
}
|
|
405
|
+
CircleTransfer.isTransferComplete = isTransferComplete;
|
|
406
|
+
async function getTransferVaa(wh, wormholeMessageId, timeout) {
|
|
407
|
+
const vaa = await wh.getVaa(wormholeMessageId, "AutomaticCircleBridge:TransferWithRelay", timeout);
|
|
408
|
+
if (!vaa)
|
|
409
|
+
throw new Error(`No VAA available after timeout exhausted`);
|
|
410
|
+
return vaa;
|
|
411
|
+
}
|
|
412
|
+
CircleTransfer.getTransferVaa = getTransferVaa;
|
|
413
|
+
async function getTransferMessage(fromChain, txid) {
|
|
414
|
+
const cb = await fromChain.getCircleBridge();
|
|
415
|
+
const circleMessage = await cb.parseTransactionDetails(txid);
|
|
416
|
+
return circleMessage;
|
|
417
|
+
}
|
|
418
|
+
CircleTransfer.getTransferMessage = getTransferMessage;
|
|
419
|
+
function getReceipt(xfer) {
|
|
420
|
+
const { from, to } = xfer.transfer;
|
|
421
|
+
// This attestation may be either the auto relay vaa or the circle attestation
|
|
422
|
+
// depending on the request
|
|
423
|
+
let receipt = {
|
|
424
|
+
from: from.chain,
|
|
425
|
+
to: to.chain,
|
|
426
|
+
state: TransferState.Created,
|
|
427
|
+
};
|
|
428
|
+
const originTxs = xfer.txids.filter((txid) => txid.chain === xfer.transfer.from.chain);
|
|
429
|
+
if (originTxs.length > 0) {
|
|
430
|
+
receipt = {
|
|
431
|
+
...receipt,
|
|
432
|
+
state: TransferState.SourceInitiated,
|
|
433
|
+
originTxs,
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
const att = xfer.attestations?.filter((a) => isWormholeMessageId(a.id)) ?? [];
|
|
437
|
+
const ctt = xfer.attestations?.filter((a) => isCircleMessageId(a.id)) ?? [];
|
|
438
|
+
const attestation = ctt.length > 0 ? ctt[0] : att.length > 0 ? att[0] : undefined;
|
|
439
|
+
if (attestation) {
|
|
440
|
+
if (attestation.id) {
|
|
441
|
+
receipt = {
|
|
442
|
+
...receipt,
|
|
443
|
+
state: TransferState.SourceFinalized,
|
|
444
|
+
attestation: attestation,
|
|
445
|
+
};
|
|
446
|
+
if (attestation.attestation) {
|
|
447
|
+
receipt = {
|
|
448
|
+
...receipt,
|
|
449
|
+
state: TransferState.Attested,
|
|
450
|
+
attestation: { id: attestation.id, attestation: attestation.attestation },
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
const destinationTxs = xfer.txids.filter((txid) => txid.chain === xfer.transfer.to.chain);
|
|
456
|
+
if (destinationTxs.length > 0) {
|
|
457
|
+
receipt = {
|
|
458
|
+
...receipt,
|
|
459
|
+
state: TransferState.DestinationInitiated,
|
|
460
|
+
destinationTxs,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
return receipt;
|
|
464
|
+
}
|
|
465
|
+
CircleTransfer.getReceipt = getReceipt;
|
|
466
|
+
})(CircleTransfer || (CircleTransfer = {}));
|
|
478
467
|
//# sourceMappingURL=cctpTransfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cctpTransfer.js","sourceRoot":"","sources":["../../../../src/protocols/cctp/cctpTransfer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAe1E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAWvD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,MAAM,OAAO,cAAc;IAGR,EAAE,CAAc;IAEjC,SAAS,CAAyB;IAClC,OAAO,CAAyB;IAEhC,wBAAwB;IAChB,MAAM,CAAgB;IAE9B,mBAAmB;IACnB,QAAQ,CAAwB;IAEhC,8BAA8B;IAC9B,KAAK,GAAoB,EAAE,CAAC;IAE5B,YAAY,CAAuC;IAEnD,YACE,EAAe,EACf,QAA+B,EAC/B,SAAkC,EAClC,OAAgC;QAEhC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IA+BD,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,EAAe,EACf,IAAwE,EACxE,UAAkB,oBAAoB,EACtC,SAAkC,EAClC,OAAgC;QAEhC,iDAAiD;QACjD,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,GAAG;gBACL,GAAG,IAAI;gBACP,GAAG,CAAC,MAAM,cAAc,CAAC,oBAAoB,CAC3C,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC5B,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAC1B,IAAI,CACL,CAAC;aACH,CAAC;YACF,OAAO,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,kDAAkD;QAClD,IAAI,EAAiC,CAAC;QACtC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,EAAE,GAAG,MAAM,cAAc,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,EAAE,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,EAAE,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,EAAE,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,EAAE,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAE1D,MAAM,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uBAAuB;IACf,MAAM,CAAC,KAAK,CAAC,qBAAqB,CACxC,EAAe,EACf,IAAuB,EACvB,OAAe;QAEf,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5E,0EAA0E;QAC1E,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC,SAAS,CAAC,IAAK,CAAC;QAExE,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAC1C,KAAK,EACL,eAAe,CAChB,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,SAAS,GAAG,GAAG,CAAC,WAAW,KAAK,mBAAmB,IAAI,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,OAAO,GAA0B;YACrC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;YACxD,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;YAC5C,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;YAChC,SAAS;SACV,CAAC;QAEF,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3C,EAAE,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAChG,EAAE,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;QAEnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACpC,EAAe,EACf,OAAe;QAEf,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3E,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;QACrC,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC;QAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC;QAE/C,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAEzE,MAAM,OAAO,GAA0B;YACrC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE;YAC/C,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YAC9C,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,SAAS,EAAE,KAAK;SACjB,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,eAAe,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IACnB,MAAM,CAAC,KAAK,CAAC,eAAe,CAClC,EAAe,EACf,IAAmB,EACnB,OAAe,EACf,SAAkC;QAElC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC7B,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE5C,2CAA2C;QAC3C,2DAA2D;QAC3D,WAAW;QACX,MAAM,MAAM,GAAwB,MAAM,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE3E,oCAAoC;QACpC,IAAI,EAAqB,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,EAAE,GAAG,MAAM,cAAc,CAAC,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,OAAO,GAA0B;gBACrC,GAAG,aAAa;gBAChB,+DAA+D;gBAC/D,SAAS,EAAE,KAAK;aACjB,CAAC;YAEF,EAAE,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACrC,EAAE,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,EAAE,CAAC,MAAM,GAAG,aAAa,CAAC,eAAe,CAAC;QAC1C,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4EAA4E;IAC5E,6BAA6B;IAC7B,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO;YACvC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAEzD,IAAI,CAAC,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,eAAe,CAAC;QAE5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,OAAgB;QACtD,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;YACnC,EAAE,CAAuD,CAAC;QAC5D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAE3F,mCAAmC;QACnC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,YAAY,CAAC,GAAG,CAAE,CAAC,WAAW;gBAAE,SAAS;YAE7C,YAAY,CAAC,GAAG,CAAE,CAAC,WAAW,GAAG,MAAM,cAAc,CAAC,cAAc,CAClE,IAAI,CAAC,EAAE,EACP,YAAY,CAAC,GAAG,CAAE,CAAC,EAAE,EACrB,OAAO,CACR,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,OAAgB;QACpD,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAA8C,CAAC;QAC1F,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9C,mEAAmE;YACnE,yDAAyD;YACzD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAErE,oEAAoE;YACpE,wCAAwC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE7D,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,uBAAuB,CAAC,IAAK,CAAC,IAAI,CAAC,CAAC;YACnE,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAE,CAAC;YAC9B,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW;gBAAE,SAAS,CAAC,iBAAiB;YAE5D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5E,IAAI,WAAW,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAE9F,YAAY,CAAC,GAAG,CAAE,CAAC,WAAY,CAAC,WAAW,GAAG,WAAW,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,+BAA+B;IAC/B,8BAA8B;IAC9B,KAAK,CAAC,gBAAgB,CAAC,OAAgB;QACrC,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,eAAe;YAC7C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAEpE,MAAM,GAAG,GAAoB,IAAI,CAAC,QAAQ,CAAC,SAAS;YAClD,CAAC,CAAC,CACE,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;gBACvC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;aACtC,CAAC,CACH,CAAC,IAAI,EAAE;YACV,CAAC,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;QAErC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,WAAW,CAAC;oBAAE,SAAS;gBAC7D,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAY,CAAC,CAAC;gBACtF,IAAI,SAAS;oBAAE,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,oBAAoB,CAAC;YAClE,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kFAAkF;IAClF,6BAA6B;IAC7B,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ;YACtC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAE1D,oDAAoD;QACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAC0B,CAAC;YACtD,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;YAE1C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAExE,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;QAE9F,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAA6C,CAAC;QAC9F,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1E,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;QACzD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,UAAW,CAAC,CAAC;QAErD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAW,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAED,WAAiB,cAAc;IAYtB,KAAK,UAAU,QAAQ,CAC5B,SAA6B,EAC7B,QAA+B,EAC/B,MAAwB;QAExB,IAAI,IAA4C,CAAC;QACjD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,wBAAwB,EAAE,CAAC;YACtD,IAAI,GAAG,EAAE,CAAC,QAAQ,CAChB,QAAQ,CAAC,IAAI,CAAC,OAA+B,EAC7C,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,EAC1D,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,SAAS,CACnB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YAC7C,IAAI,GAAG,EAAE,CAAC,QAAQ,CAChB,QAAQ,CAAC,IAAI,CAAC,OAA+B,EAC7C,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,EAC1D,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,YAAY,CAAW,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAxBqB,uBAAQ,WAwB7B,CAAA;IAED,4EAA4E;IAC5E,iCAAiC;IACjC,6EAA6E;IAC7E,wBAAwB;IACjB,KAAK,SAAS,CAAC,CAAC,KAAK,CAC1B,EAAe,EACf,OAA+C,EAC/C,UAAkB,oBAAoB;IACtC,2EAA2E;IAC3E,UAAgC,EAChC,QAA8B;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzF,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/C,oDAAoD;QACpD,6BAA6B;QAC7B,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAChC,MAAM,uDAAuD,CAAC;YAEhE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAChE,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7E,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE;gBAClE,KAAK,EAAE,aAAa,CAAC,eAAe;aACuC,CAAC;YAC9E,MAAM,OAAO,CAAC;QAChB,CAAC;QAED,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,MAAM,6CAA6C,CAAC;YAE9E,IAAI,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChD,eAAe;gBAEf,sDAAsD;gBACtD,uEAAuE;gBACvE,sDAAsD;gBACtD,IAAI,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxF,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,GAAG,GAAG,MAAM,cAAc,CAAC,cAAc,CACvC,EAAE,EACF,OAAO,CAAC,WAAW,CAAC,EAAE,EACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CACzB,CAAC;oBACF,OAAO,GAAG;wBACR,GAAG,OAAO;wBACV,WAAW,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;wBAC7D,KAAK,EAAE,aAAa,CAAC,QAAQ;qBACuC,CAAC;oBACvE,MAAM,OAAO,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrD,YAAY;gBACZ,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAExF,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;gBAChE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE9D,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,GAAG;wBACR,GAAG,OAAO;wBACV,WAAW,EAAE;4BACX,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE;4BAC1B,WAAW,EAAE;gCACX,WAAW;gCACX,OAAO,EAAE,OAAO,CAAC,OAAO;6BACzB;yBACF;wBACD,KAAK,EAAE,aAAa,CAAC,QAAQ;qBACuC,CAAC;oBACvE,MAAM,OAAO,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,6DAA6D;QAC7D,qEAAqE;QACrE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,MAAM,0BAA0B,CAAC;YAE3D,IAAI,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,oBAAoB,CAC5C,OAAO,CAAC,WAAW,CAAC,EAAE,EACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CACzB,CAAC;gBAEF,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;oBACzD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC5D,OAAO,GAAG;wBACR,GAAI,OAA8E;wBAClF,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wBACjE,KAAK,EAAE,aAAa,CAAC,oBAAoB;qBAC2B,CAAC;oBACvE,MAAM,OAAO,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,wCAAwC;QAExC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,kBAAkB,CACxD,QAAQ,EACR,OAAO,CAAC,WAAW,CAAC,WAAW,CAChC,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,GAAG;oBACR,GAAG,OAAO;oBACV,KAAK,EAAE,aAAa,CAAC,oBAAoB;oBACzC,cAAc,EAAE,EAAE;iBACoD,CAAC;YAC3E,CAAC;YACD,MAAM,OAAO,CAAC;QAChB,CAAC;IACH,CAAC;IAvHsB,oBAAK,QAuH3B,CAAA;IAEM,KAAK,UAAU,oBAAoB,CACxC,QAAgC,EAChC,QAAgC,EAChC,QAA+B;QAE/B,MAAM,SAAS,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAElC,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CACvC,QAAQ,EACR,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAE,CAC3D,CAAC;YACF,SAAS,CAAC,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAhBqB,mCAAoB,uBAgBzC,CAAA;IAEM,KAAK,UAAU,aAAa,CACjC,QAAgC,EAChC,QAAgC,EAChC,QAAoD;QAEpD,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,cAAc;YAAE,MAAM,mDAAmD,CAAC;QAE/E,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,cAAc;YAAE,MAAM,8CAA8C,CAAC;QAE1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAEvE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACzD,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;aAC/D,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEhC,gFAAgF;QAChF,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,SAAS,IAAI,UAAU,CAAC;QAExB,sDAAsD;QACtD,6BAA6B;QAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,SAAS,IAAI,GAAG,CAAC;QAEjB,+EAA+E;QAC/E,IAAI,oBAAoB,GAAG,EAAE,CAAC;QAC9B,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC;YACrD,oBAAoB,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnF,CAAC;QAED,OAAO;YACL,WAAW,EAAE;gBACX,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB;YACD,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;YACxD,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;YAC1C,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAlDqB,4BAAa,gBAkDlC,CAAA;IAEM,KAAK,UAAU,kBAAkB,CACtC,OAA+B,EAC/B,WAAiD;QAEjD,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,WAAW,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,MAAM,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IARqB,iCAAkB,qBAQvC,CAAA;IAEM,KAAK,UAAU,cAAc,CAClC,EAAe,EACf,iBAAoC,EACpC,OAAgB;QAEhB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM,CACzB,iBAAiB,EACjB,yCAAyC,EACzC,OAAO,CACR,CAAC;QACF,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC;IACb,CAAC;IAZqB,6BAAc,iBAYnC,CAAA;IAEM,KAAK,UAAU,kBAAkB,CACtC,SAAiC,EACjC,IAAY;QAEZ,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC;IACvB,CAAC;IAPqB,iCAAkB,qBAOvC,CAAA;IAED,SAAgB,UAAU,CACxB,IAAuB;QAEvB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEnC,8EAA8E;QAC9E,2BAA2B;QAE3B,IAAI,OAAO,GAAmC;YAC5C,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,EAAE,EAAE,EAAE,CAAC,KAAK;YACZ,KAAK,EAAE,aAAa,CAAC,OAAO;SAC7B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,KAAK,EAAE,aAAa,CAAC,eAAe;gBACpC,SAAS;aAC+B,CAAC;QAC7C,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5E,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;gBACnB,OAAO,GAAG;oBACR,GAAI,OAA0C;oBAC9C,KAAK,EAAE,aAAa,CAAC,eAAe;oBACpC,WAAW,EAAE,WAAW;iBACmD,CAAC;gBAE9E,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;oBAC5B,OAAO,GAAG;wBACR,GAAG,OAAO;wBACV,KAAK,EAAE,aAAa,CAAC,QAAQ;wBAC7B,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE;qBACL,CAAC;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1F,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG;gBACR,GAAI,OAAsE;gBAC1E,KAAK,EAAE,aAAa,CAAC,oBAAoB;gBACzC,cAAc;aACsD,CAAC;QACzE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAtDe,yBAAU,aAsDzB,CAAA;AACH,CAAC,EAjUgB,cAAc,KAAd,cAAc,QAiU9B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Chain, Network } from "@wormhole-foundation/sdk-base";
|
|
2
2
|
import type { AttestationId, ChainContext, GatewayTransferDetails, IbcTransferInfo, Signer, TokenId, TransactionId, TxHash, WormholeMessageId } from "@wormhole-foundation/sdk-definitions";
|
|
3
3
|
import { TokenBridge } from "@wormhole-foundation/sdk-definitions";
|
|
4
|
-
import { TransferState } from "
|
|
5
|
-
import { Wormhole } from "
|
|
6
|
-
import type { WormholeTransfer } from "
|
|
4
|
+
import { TransferState } from "../../types.js";
|
|
5
|
+
import { Wormhole } from "../../wormhole.js";
|
|
6
|
+
import type { WormholeTransfer } from "../wormholeTransfer.js";
|
|
7
7
|
export declare class GatewayTransfer<N extends Network = Network> implements WormholeTransfer<"IbcBridge"> {
|
|
8
8
|
static chain: "Wormchain";
|
|
9
9
|
private readonly wh;
|
|
@@ -32,10 +32,12 @@ export declare class GatewayTransfer<N extends Network = Network> implements Wor
|
|
|
32
32
|
private _transferIbc;
|
|
33
33
|
fetchAttestation(timeout?: number): Promise<AttestationId[]>;
|
|
34
34
|
completeTransfer(signer: Signer): Promise<TxHash[]>;
|
|
35
|
-
static getTransferVaa<N extends Network>(wh: Wormhole<N>, whm: WormholeMessageId, timeout?: number): Promise<TokenBridge.TransferVAA>;
|
|
36
|
-
static destinationOverrides<N extends Network>(srcChain: ChainContext<N>, dstChain: ChainContext<N>, gatewayChain: ChainContext<N, "Wormchain">, transfer: GatewayTransferDetails): Promise<GatewayTransferDetails>;
|
|
37
|
-
static lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, SC>, dstChain: ChainContext<N, DC>, gatewayChain: ChainContext<N, "Wormchain">, token: TokenId<SC>): Promise<TokenId<DC>>;
|
|
38
35
|
private fromGateway;
|
|
39
36
|
private toGateway;
|
|
40
37
|
}
|
|
38
|
+
export declare namespace GatewayTransfer {
|
|
39
|
+
function getTransferVaa<N extends Network>(wh: Wormhole<N>, whm: WormholeMessageId, timeout?: number): Promise<TokenBridge.TransferVAA>;
|
|
40
|
+
function destinationOverrides<N extends Network>(srcChain: ChainContext<N>, dstChain: ChainContext<N>, gatewayChain: ChainContext<N, "Wormchain">, transfer: GatewayTransferDetails): Promise<GatewayTransferDetails>;
|
|
41
|
+
function lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, SC>, dstChain: ChainContext<N, DC>, gatewayChain: ChainContext<N, "Wormchain">, token: TokenId<SC>): Promise<TokenId<DC>>;
|
|
42
|
+
}
|
|
41
43
|
//# sourceMappingURL=gatewayTransfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gatewayTransfer.d.ts","sourceRoot":"","sources":["../../../../src/protocols/gateway/gatewayTransfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { chainToPlatform, encoding, toChain } from "@wormhole-foundation/sdk-base";
|
|
2
2
|
import { TokenBridge, UniversalAddress, gatewayTransferMsg, isGatewayTransferDetails, isNative, isTransactionIdentifier, isWormholeMessageId, toGatewayMsg, toNative, } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
-
import { signSendWait } from "
|
|
4
|
-
import { fetchIbcXfer, isTokenBridgeVaaRedeemed, retry } from "
|
|
5
|
-
import { TransferState } from "
|
|
6
|
-
import { Wormhole } from "
|
|
3
|
+
import { signSendWait } from "../../common.js";
|
|
4
|
+
import { fetchIbcXfer, isTokenBridgeVaaRedeemed, retry } from "../../tasks.js";
|
|
5
|
+
import { TransferState } from "../../types.js";
|
|
6
|
+
import { Wormhole } from "../../wormhole.js";
|
|
7
7
|
export class GatewayTransfer {
|
|
8
8
|
static chain = "Wormchain";
|
|
9
9
|
wh;
|
|
@@ -175,12 +175,6 @@ export class GatewayTransfer {
|
|
|
175
175
|
// start the WormholeTransfer by submitting transactions to the source chain
|
|
176
176
|
// returns a transaction hash
|
|
177
177
|
async initiateTransfer(signer) {
|
|
178
|
-
/*
|
|
179
|
-
0) Check current `state` is valid to call this (eg: state == Created)
|
|
180
|
-
1) Figure out where to call and issue transactions
|
|
181
|
-
2) Update state
|
|
182
|
-
3) return transaction ids
|
|
183
|
-
*/
|
|
184
178
|
if (this._state !== TransferState.Created)
|
|
185
179
|
throw new Error("Invalid state transition in `start`");
|
|
186
180
|
this.transactions = await (this.fromGateway()
|
|
@@ -311,12 +305,6 @@ export class GatewayTransfer {
|
|
|
311
305
|
// finish the WormholeTransfer by submitting transactions to the destination chain
|
|
312
306
|
// returns a transaction hash
|
|
313
307
|
async completeTransfer(signer) {
|
|
314
|
-
/*
|
|
315
|
-
0) check that the current `state` is valid to call this (eg: state == Ready)
|
|
316
|
-
1) prepare the transactions and sign them given the signer
|
|
317
|
-
2) submit the VAA and transactions on chain
|
|
318
|
-
3) return txid of submission
|
|
319
|
-
*/
|
|
320
308
|
if (this._state < TransferState.Attested)
|
|
321
309
|
throw new Error("Invalid state transition in `finish`. Be sure to call `fetchAttestation`.");
|
|
322
310
|
if (this.toGateway())
|
|
@@ -338,13 +326,25 @@ export class GatewayTransfer {
|
|
|
338
326
|
this._state = TransferState.DestinationInitiated;
|
|
339
327
|
return redeemTxs.map(({ txid }) => txid);
|
|
340
328
|
}
|
|
341
|
-
|
|
329
|
+
// Implicitly determine if the chain is Gateway enabled by
|
|
330
|
+
// checking to see if the Gateway IBC bridge has a transfer channel setup
|
|
331
|
+
// If this is a new chain, add the channels to the constants file
|
|
332
|
+
fromGateway() {
|
|
333
|
+
return this.gatewayIbcBridge.getTransferChannel(this.transfer.from.chain) !== null;
|
|
334
|
+
}
|
|
335
|
+
toGateway() {
|
|
336
|
+
return this.gatewayIbcBridge.getTransferChannel(this.transfer.to.chain) !== null;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
(function (GatewayTransfer) {
|
|
340
|
+
async function getTransferVaa(wh, whm, timeout) {
|
|
342
341
|
const vaa = await wh.getVaa(whm, TokenBridge.getTransferDiscriminator(), timeout);
|
|
343
342
|
if (!vaa)
|
|
344
343
|
throw new Error(`No VAA Available: ${whm.chain}/${whm.emitter}/${whm.sequence}`);
|
|
345
344
|
return vaa;
|
|
346
345
|
}
|
|
347
|
-
|
|
346
|
+
GatewayTransfer.getTransferVaa = getTransferVaa;
|
|
347
|
+
async function destinationOverrides(srcChain, dstChain, gatewayChain, transfer) {
|
|
348
348
|
const _transfer = { ...transfer };
|
|
349
349
|
// Bit of (temporary) hackery until solana contracts support being
|
|
350
350
|
// sent a VAA with the primary address
|
|
@@ -354,9 +354,10 @@ export class GatewayTransfer {
|
|
|
354
354
|
}
|
|
355
355
|
return _transfer;
|
|
356
356
|
}
|
|
357
|
+
GatewayTransfer.destinationOverrides = destinationOverrides;
|
|
357
358
|
// Lookup the token id for the destination chain given the source chain
|
|
358
359
|
// and token id
|
|
359
|
-
|
|
360
|
+
async function lookupDestinationToken(srcChain, dstChain, gatewayChain, token) {
|
|
360
361
|
// that will be minted when the transfer is redeemed
|
|
361
362
|
let lookup;
|
|
362
363
|
if (isNative(token.address)) {
|
|
@@ -389,14 +390,6 @@ export class GatewayTransfer {
|
|
|
389
390
|
const dstAddress = await dstTb.getWrappedAsset(lookup);
|
|
390
391
|
return { chain: dstChain.chain, address: dstAddress };
|
|
391
392
|
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
// If this is a new chain, add the channels to the constants file
|
|
395
|
-
fromGateway() {
|
|
396
|
-
return this.gatewayIbcBridge.getTransferChannel(this.transfer.from.chain) !== null;
|
|
397
|
-
}
|
|
398
|
-
toGateway() {
|
|
399
|
-
return this.gatewayIbcBridge.getTransferChannel(this.transfer.to.chain) !== null;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
393
|
+
GatewayTransfer.lookupDestinationToken = lookupDestinationToken;
|
|
394
|
+
})(GatewayTransfer || (GatewayTransfer = {}));
|
|
402
395
|
//# sourceMappingURL=gatewayTransfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gatewayTransfer.js","sourceRoot":"","sources":["../../../../src/protocols/gateway/gatewayTransfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/protocols/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/protocols/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Chain, Network } from "@wormhole-foundation/sdk-base";
|
|
2
|
+
import type { AttestationId, AutomaticTokenBridge, ChainContext, Signer, TokenId, TokenTransferDetails, TransactionId, TxHash, WormholeMessageId } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
+
import { TokenBridge } from "@wormhole-foundation/sdk-definitions";
|
|
4
|
+
import type { AttestationReceipt as _AttestationReceipt, TransferQuote, TransferReceipt as _TransferReceipt } from "../../types.js";
|
|
5
|
+
import { TransferState } from "../../types.js";
|
|
6
|
+
import { Wormhole } from "../../wormhole.js";
|
|
7
|
+
import type { WormholeTransfer } from "../wormholeTransfer.js";
|
|
8
|
+
export declare class TokenTransfer<N extends Network = Network> implements WormholeTransfer<TokenTransfer.Protocol> {
|
|
9
|
+
private readonly wh;
|
|
10
|
+
fromChain: ChainContext<N, Chain>;
|
|
11
|
+
toChain: ChainContext<N, Chain>;
|
|
12
|
+
private _state;
|
|
13
|
+
transfer: TokenTransferDetails;
|
|
14
|
+
txids: TransactionId[];
|
|
15
|
+
attestations?: TokenTransfer.AttestationReceipt[];
|
|
16
|
+
private constructor();
|
|
17
|
+
getTransferState(): TransferState;
|
|
18
|
+
static from<N extends Network>(wh: Wormhole<N>, from: TokenTransferDetails, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
|
|
19
|
+
static from<N extends Network>(wh: Wormhole<N>, from: WormholeMessageId, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
|
|
20
|
+
static from<N extends Network>(wh: Wormhole<N>, from: TransactionId, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
|
|
21
|
+
private static fromIdentifier;
|
|
22
|
+
private static fromTransaction;
|
|
23
|
+
initiateTransfer(signer: Signer): Promise<TxHash[]>;
|
|
24
|
+
fetchAttestation(timeout?: number): Promise<AttestationId[]>;
|
|
25
|
+
completeTransfer(signer: Signer): Promise<TxHash[]>;
|
|
26
|
+
}
|
|
27
|
+
export declare namespace TokenTransfer {
|
|
28
|
+
/** 8 is maximum precision supported by the token bridge VAA */
|
|
29
|
+
const MAX_DECIMALS = 8;
|
|
30
|
+
type Protocol = "TokenBridge" | "AutomaticTokenBridge";
|
|
31
|
+
type VAA = TokenBridge.TransferVAA | AutomaticTokenBridge.VAA;
|
|
32
|
+
type AttestationReceipt = _AttestationReceipt<TokenTransfer.Protocol>;
|
|
33
|
+
type TransferReceipt<SC extends Chain = Chain, DC extends Chain = Chain> = _TransferReceipt<TokenTransfer.AttestationReceipt, SC, DC>;
|
|
34
|
+
function transfer<N extends Network>(fromChain: ChainContext<N, Chain>, transfer: TokenTransferDetails, signer: Signer<N, Chain>): Promise<TransactionId[]>;
|
|
35
|
+
function redeem<N extends Network>(toChain: ChainContext<N, Chain>, vaa: TokenTransfer.VAA, signer: Signer<N, Chain>): Promise<TransactionId[]>;
|
|
36
|
+
function track<N extends Network, SC extends Chain, DC extends Chain>(wh: Wormhole<N>, receipt: TokenTransfer.TransferReceipt<SC, DC>, timeout?: number, fromChain?: ChainContext<N, SC>, toChain?: ChainContext<N, DC>): AsyncGenerator<TokenTransfer.TransferReceipt<SC, DC>>;
|
|
37
|
+
function getReceipt<N extends Network>(xfer: TokenTransfer<N>): TransferReceipt;
|
|
38
|
+
function lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, SC>, dstChain: ChainContext<N, DC>, token: TokenId<SC>): Promise<TokenId<DC>>;
|
|
39
|
+
function isTransferComplete<N extends Network, C extends Chain>(toChain: ChainContext<N, C>, vaa: TokenTransfer.VAA): Promise<boolean>;
|
|
40
|
+
function getTransferMessage<N extends Network, C extends Chain>(chain: ChainContext<N, C>, txid: TxHash, timeout?: number): Promise<WormholeMessageId>;
|
|
41
|
+
function getTransferVaa<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId | TxHash, timeout?: number): Promise<TokenTransfer.VAA>;
|
|
42
|
+
function validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): void;
|
|
43
|
+
function quoteTransfer<N extends Network>(wh: Wormhole<N>, srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: Omit<TokenTransferDetails, "from" | "to">): Promise<TransferQuote>;
|
|
44
|
+
function destinationOverrides<N extends Network>(srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: TokenTransferDetails): Promise<TokenTransferDetails>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=tokenTransfer.d.ts.map
|