@wormhole-labs/cctp-executor-route 0.4.0 → 0.5.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/README.md +1 -1
- package/dist/cjs/aptos/executor.d.ts +1 -1
- package/dist/cjs/aptos/executor.d.ts.map +1 -1
- package/dist/cjs/aptos/executor.js +1 -1
- package/dist/cjs/aptos/executor.js.map +1 -1
- package/dist/cjs/consts.d.ts +21 -1
- package/dist/cjs/consts.d.ts.map +1 -1
- package/dist/cjs/consts.js +188 -5
- package/dist/cjs/consts.js.map +1 -1
- package/dist/cjs/evm/executor.d.ts +1 -1
- package/dist/cjs/evm/executor.d.ts.map +1 -1
- package/dist/cjs/evm/executor.js +1 -1
- package/dist/cjs/evm/executor.js.map +1 -1
- package/dist/cjs/evm/executorV2.d.ts +25 -0
- package/dist/cjs/evm/executorV2.d.ts.map +1 -0
- package/dist/cjs/evm/executorV2.js +100 -0
- package/dist/cjs/evm/executorV2.js.map +1 -0
- package/dist/cjs/evm/index.d.ts +1 -0
- package/dist/cjs/evm/index.d.ts.map +1 -1
- package/dist/cjs/evm/index.js +3 -0
- package/dist/cjs/evm/index.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -91
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +15 -334
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/layouts/circle.d.ts +161 -0
- package/dist/cjs/layouts/circle.d.ts.map +1 -0
- package/dist/cjs/layouts/circle.js +48 -0
- package/dist/cjs/layouts/circle.js.map +1 -0
- package/dist/cjs/layouts/index.d.ts +1 -1
- package/dist/cjs/layouts/index.d.ts.map +1 -1
- package/dist/cjs/layouts/index.js +1 -1
- package/dist/cjs/layouts/index.js.map +1 -1
- package/dist/cjs/routes/cctpV1.d.ts +93 -0
- package/dist/cjs/routes/cctpV1.d.ts.map +1 -0
- package/dist/cjs/routes/cctpV1.js +180 -0
- package/dist/cjs/routes/cctpV1.js.map +1 -0
- package/dist/cjs/routes/cctpV2Base.d.ts +58 -0
- package/dist/cjs/routes/cctpV2Base.d.ts.map +1 -0
- package/dist/cjs/routes/cctpV2Base.js +179 -0
- package/dist/cjs/routes/cctpV2Base.js.map +1 -0
- package/dist/cjs/routes/cctpV2Fast.d.ts +42 -0
- package/dist/cjs/routes/cctpV2Fast.d.ts.map +1 -0
- package/dist/cjs/routes/cctpV2Fast.js +127 -0
- package/dist/cjs/routes/cctpV2Fast.js.map +1 -0
- package/dist/cjs/routes/cctpV2Standard.d.ts +42 -0
- package/dist/cjs/routes/cctpV2Standard.d.ts.map +1 -0
- package/dist/cjs/routes/cctpV2Standard.js +116 -0
- package/dist/cjs/routes/cctpV2Standard.js.map +1 -0
- package/dist/cjs/routes/helpers.d.ts +12 -0
- package/dist/cjs/routes/helpers.d.ts.map +1 -0
- package/dist/cjs/routes/helpers.js +181 -0
- package/dist/cjs/routes/helpers.js.map +1 -0
- package/dist/cjs/routes/index.d.ts +5 -0
- package/dist/cjs/routes/index.d.ts.map +1 -0
- package/dist/cjs/routes/index.js +21 -0
- package/dist/cjs/routes/index.js.map +1 -0
- package/dist/cjs/sui/executor.d.ts +1 -1
- package/dist/cjs/sui/executor.d.ts.map +1 -1
- package/dist/cjs/svm/executor.d.ts +1 -1
- package/dist/cjs/svm/executor.d.ts.map +1 -1
- package/dist/cjs/svm/executor.js +1 -1
- package/dist/cjs/svm/executor.js.map +1 -1
- package/dist/cjs/types.d.ts +8 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils.d.ts +23 -2
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +119 -7
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/aptos/executor.d.ts +1 -1
- package/dist/esm/aptos/executor.d.ts.map +1 -1
- package/dist/esm/aptos/executor.js +2 -2
- package/dist/esm/aptos/executor.js.map +1 -1
- package/dist/esm/consts.d.ts +21 -1
- package/dist/esm/consts.d.ts.map +1 -1
- package/dist/esm/consts.js +181 -4
- package/dist/esm/consts.js.map +1 -1
- package/dist/esm/evm/executor.d.ts +1 -1
- package/dist/esm/evm/executor.d.ts.map +1 -1
- package/dist/esm/evm/executor.js +2 -2
- package/dist/esm/evm/executor.js.map +1 -1
- package/dist/esm/evm/executorV2.d.ts +25 -0
- package/dist/esm/evm/executorV2.d.ts.map +1 -0
- package/dist/esm/evm/executorV2.js +96 -0
- package/dist/esm/evm/executorV2.js.map +1 -0
- package/dist/esm/evm/index.d.ts +1 -0
- package/dist/esm/evm/index.d.ts.map +1 -1
- package/dist/esm/evm/index.js +3 -0
- package/dist/esm/evm/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -91
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -331
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layouts/circle.d.ts +161 -0
- package/dist/esm/layouts/circle.d.ts.map +1 -0
- package/dist/esm/layouts/circle.js +43 -0
- package/dist/esm/layouts/circle.js.map +1 -0
- package/dist/esm/layouts/index.d.ts +1 -1
- package/dist/esm/layouts/index.d.ts.map +1 -1
- package/dist/esm/layouts/index.js +1 -1
- package/dist/esm/layouts/index.js.map +1 -1
- package/dist/esm/routes/cctpV1.d.ts +93 -0
- package/dist/esm/routes/cctpV1.d.ts.map +1 -0
- package/dist/esm/routes/cctpV1.js +175 -0
- package/dist/esm/routes/cctpV1.js.map +1 -0
- package/dist/esm/routes/cctpV2Base.d.ts +58 -0
- package/dist/esm/routes/cctpV2Base.d.ts.map +1 -0
- package/dist/esm/routes/cctpV2Base.js +175 -0
- package/dist/esm/routes/cctpV2Base.js.map +1 -0
- package/dist/esm/routes/cctpV2Fast.d.ts +42 -0
- package/dist/esm/routes/cctpV2Fast.d.ts.map +1 -0
- package/dist/esm/routes/cctpV2Fast.js +122 -0
- package/dist/esm/routes/cctpV2Fast.js.map +1 -0
- package/dist/esm/routes/cctpV2Standard.d.ts +42 -0
- package/dist/esm/routes/cctpV2Standard.d.ts.map +1 -0
- package/dist/esm/routes/cctpV2Standard.js +111 -0
- package/dist/esm/routes/cctpV2Standard.js.map +1 -0
- package/dist/esm/routes/helpers.d.ts +12 -0
- package/dist/esm/routes/helpers.d.ts.map +1 -0
- package/dist/esm/routes/helpers.js +177 -0
- package/dist/esm/routes/helpers.js.map +1 -0
- package/dist/esm/routes/index.d.ts +5 -0
- package/dist/esm/routes/index.d.ts.map +1 -0
- package/dist/esm/routes/index.js +5 -0
- package/dist/esm/routes/index.js.map +1 -0
- package/dist/esm/sui/executor.d.ts +1 -1
- package/dist/esm/sui/executor.d.ts.map +1 -1
- package/dist/esm/svm/executor.d.ts +1 -1
- package/dist/esm/svm/executor.d.ts.map +1 -1
- package/dist/esm/svm/executor.js +2 -2
- package/dist/esm/svm/executor.js.map +1 -1
- package/dist/esm/types.d.ts +8 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils.d.ts +23 -2
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +115 -8
- package/dist/esm/utils.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/dist/cjs/layouts/requestForExecution.d.ts +0 -18
- package/dist/cjs/layouts/requestForExecution.d.ts.map +0 -1
- package/dist/cjs/layouts/requestForExecution.js +0 -15
- package/dist/cjs/layouts/requestForExecution.js.map +0 -1
- package/dist/esm/layouts/requestForExecution.d.ts +0 -18
- package/dist/esm/layouts/requestForExecution.d.ts.map +0 -1
- package/dist/esm/layouts/requestForExecution.js +0 -12
- package/dist/esm/layouts/requestForExecution.js.map +0 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { amount, finality } from "@wormhole-foundation/sdk-base";
|
|
2
|
+
import { nativeTokenId, } from "@wormhole-foundation/sdk-definitions";
|
|
3
|
+
import { CircleV2FinalityThreshold, isCircleV2Chain } from "../consts";
|
|
4
|
+
import { CCTPv2BaseRoute, } from "./cctpV2Base";
|
|
5
|
+
import { fetchExecutorQuote } from "./helpers";
|
|
6
|
+
import { getUsdcDestinationAddress } from "../utils";
|
|
7
|
+
// Use this function to create a new CCTPv2StandardExecutorRoute with custom config
|
|
8
|
+
export function cctpV2StandardExecutorRoute(config = { referrerFeeDbps: 0n }) {
|
|
9
|
+
if (config.referrerFeeDbps < 0 || config.referrerFeeDbps > 65535n) {
|
|
10
|
+
throw new Error("Referrer fee must be between 0 and 65535");
|
|
11
|
+
}
|
|
12
|
+
class CCTPv2StandardExecutorRouteImpl extends CCTPv2StandardExecutorRoute {
|
|
13
|
+
static config = config;
|
|
14
|
+
}
|
|
15
|
+
return CCTPv2StandardExecutorRouteImpl;
|
|
16
|
+
}
|
|
17
|
+
export class CCTPv2StandardExecutorRoute extends CCTPv2BaseRoute {
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
// Since we set the config on the static class, access it with this param
|
|
20
|
+
// the CCTPv2StandardExecutorRoute.config will always be empty
|
|
21
|
+
staticConfig = this.constructor.config;
|
|
22
|
+
static config = { referrerFeeDbps: 0n };
|
|
23
|
+
static meta = {
|
|
24
|
+
name: "CCTPv2StandardExecutorRoute",
|
|
25
|
+
provider: "Circle",
|
|
26
|
+
};
|
|
27
|
+
static isPathSupported(fromChain, toChain) {
|
|
28
|
+
return (isCircleV2Chain(fromChain.network, fromChain.chain) &&
|
|
29
|
+
isCircleV2Chain(toChain.network, toChain.chain) &&
|
|
30
|
+
// We don't support slow transfers from Linea because the attestation time
|
|
31
|
+
// can be anywhere between 6 and 32 hours! Fast transfer should be used instead.
|
|
32
|
+
fromChain.chain !== "Linea");
|
|
33
|
+
}
|
|
34
|
+
static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
|
|
35
|
+
if (!this.isPathSupported(fromChain, toChain)) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
return getUsdcDestinationAddress(sourceToken, fromChain, toChain);
|
|
39
|
+
}
|
|
40
|
+
async validate(request, params) {
|
|
41
|
+
if (!CCTPv2StandardExecutorRoute.isPathSupported(request.fromChain, request.toChain)) {
|
|
42
|
+
return {
|
|
43
|
+
valid: false,
|
|
44
|
+
error: new Error("Can only transfer between Circle V2 chains"),
|
|
45
|
+
params,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (params.options?.nativeGas &&
|
|
49
|
+
(params.options.nativeGas < 0 || params.options.nativeGas > 1)) {
|
|
50
|
+
return {
|
|
51
|
+
valid: false,
|
|
52
|
+
error: new Error("Invalid native gas percentage"),
|
|
53
|
+
params,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const validatedParams = {
|
|
57
|
+
normalizedParams: {
|
|
58
|
+
amount: request.parseAmount(params.amount),
|
|
59
|
+
},
|
|
60
|
+
options: params.options ?? this.getDefaultOptions(),
|
|
61
|
+
...params,
|
|
62
|
+
};
|
|
63
|
+
return { valid: true, params: validatedParams };
|
|
64
|
+
}
|
|
65
|
+
async quote(request, params) {
|
|
66
|
+
const { fromChain, toChain } = request;
|
|
67
|
+
try {
|
|
68
|
+
const quoteDetails = await fetchExecutorQuote(request, params, this.staticConfig, "ERC2");
|
|
69
|
+
const { remainingAmount, estimatedCost, gasDropOff, expiryTime } = quoteDetails;
|
|
70
|
+
// https://developers.circle.com/stablecoins/docs/required-block-confirmations
|
|
71
|
+
const eta = fromChain.chain === "Polygon"
|
|
72
|
+
? 2_000 * 200
|
|
73
|
+
: finality.estimateFinalityTime(fromChain.chain) + 1_000; // buffer for the relayer
|
|
74
|
+
const [srcNativeDecimals, dstNativeDecimals] = await Promise.all([
|
|
75
|
+
fromChain.getDecimals("native"),
|
|
76
|
+
toChain.getDecimals("native"),
|
|
77
|
+
]);
|
|
78
|
+
return {
|
|
79
|
+
success: true,
|
|
80
|
+
params,
|
|
81
|
+
sourceToken: {
|
|
82
|
+
token: request.source.id,
|
|
83
|
+
amount: params.normalizedParams.amount,
|
|
84
|
+
},
|
|
85
|
+
destinationToken: {
|
|
86
|
+
token: request.destination.id,
|
|
87
|
+
amount: amount.fromBaseUnits(remainingAmount, request.destination.decimals),
|
|
88
|
+
},
|
|
89
|
+
relayFee: {
|
|
90
|
+
token: nativeTokenId(fromChain.chain),
|
|
91
|
+
amount: amount.fromBaseUnits(estimatedCost, srcNativeDecimals),
|
|
92
|
+
},
|
|
93
|
+
destinationNativeGas: amount.fromBaseUnits(gasDropOff, dstNativeDecimals),
|
|
94
|
+
eta,
|
|
95
|
+
expires: expiryTime,
|
|
96
|
+
details: {
|
|
97
|
+
...quoteDetails,
|
|
98
|
+
minFinalityThreshold: CircleV2FinalityThreshold.FINALIZED,
|
|
99
|
+
fastTransferMaxFee: 0n, // no fee for standard / slow transfer
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
error: new Error(e instanceof Error ? e.message : `${e}`),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=cctpV2Standard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cctpV2Standard.js","sourceRoot":"","sources":["../../../src/routes/cctpV2Standard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ChainAddress, Network, routes, Signer, SourceInitiatedTransferReceipt } from "@wormhole-foundation/sdk-connect";
|
|
2
|
+
import { CCTPExecutorRoute, QuoteDetails } from "./cctpV1";
|
|
3
|
+
import { CCTPv2ExecutorRoute, CCTPv2QuoteDetails } from "./cctpV2Base";
|
|
4
|
+
export declare function fetchExecutorQuote(request: routes.RouteTransferRequest<Network>, params: CCTPExecutorRoute.ValidatedParams | CCTPv2ExecutorRoute.ValidatedParams, config: CCTPExecutorRoute.Config | CCTPv2ExecutorRoute.Config, capability: "ERC1" | "ERC2"): Promise<QuoteDetails>;
|
|
5
|
+
export declare function initiateTransfer(request: routes.RouteTransferRequest<Network>, signer: Signer, to: ChainAddress, params: {
|
|
6
|
+
protocol: "CCTPExecutor";
|
|
7
|
+
details: QuoteDetails;
|
|
8
|
+
} | {
|
|
9
|
+
protocol: "CCTPv2Executor";
|
|
10
|
+
details: CCTPv2QuoteDetails;
|
|
11
|
+
}): Promise<SourceInitiatedTransferReceipt>;
|
|
12
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/routes/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAIZ,OAAO,EACP,MAAM,EAEN,MAAM,EAEN,8BAA8B,EAK/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAY3D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMvE,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAC7C,MAAM,EACF,iBAAiB,CAAC,eAAe,GACjC,mBAAmB,CAAC,eAAe,EACvC,MAAM,EAAE,iBAAiB,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAC7D,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,YAAY,CAAC,CAuJvB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAC7C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,YAAY,EAChB,MAAM,EACF;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACnD;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAC9D,OAAO,CAAC,8BAA8B,CAAC,CAiEzC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { amount, circle, deserializeLayout, encoding, serializeLayout, signSendWait, toChainId, TransferState, UniversalAddress, Wormhole, } from "@wormhole-foundation/sdk-connect";
|
|
2
|
+
import { gasLimits, referrers, SOLANA_MSG_VALUE_BASE_FEE } from "../consts";
|
|
3
|
+
import { calculateReferrerFee, fetchCapabilities, fetchSignedQuote, fetchStatus, sleep, } from "../utils";
|
|
4
|
+
import { SolanaAddress } from "@wormhole-foundation/sdk-solana";
|
|
5
|
+
import { relayInstructionsLayout, signedQuoteLayout } from "../layouts";
|
|
6
|
+
// The minimum rent exemption amount for a 165 byte account (e.g. an ATA)
|
|
7
|
+
// cache it here to avoid fetching it from the Solana RPC
|
|
8
|
+
let ataMinRentAmount = undefined;
|
|
9
|
+
export async function fetchExecutorQuote(request, params, config, capability) {
|
|
10
|
+
const { fromChain, toChain } = request;
|
|
11
|
+
const srcUsdcAddress = circle.usdcContract.get(fromChain.network, fromChain.chain);
|
|
12
|
+
if (!srcUsdcAddress) {
|
|
13
|
+
throw new Error("Invalid transfer, no USDC contract on source");
|
|
14
|
+
}
|
|
15
|
+
const dstUsdcAddress = circle.usdcContract.get(toChain.network, toChain.chain);
|
|
16
|
+
if (!dstUsdcAddress) {
|
|
17
|
+
throw new Error("Invalid transfer, no USDC contract on destination");
|
|
18
|
+
}
|
|
19
|
+
const referrerAddress = referrers[fromChain.network]?.[fromChain.chain];
|
|
20
|
+
if (!referrerAddress) {
|
|
21
|
+
throw new Error("No referrer address found");
|
|
22
|
+
}
|
|
23
|
+
const referrer = Wormhole.chainAddress(fromChain.chain, referrerAddress);
|
|
24
|
+
const { referrerFee, remainingAmount, referrerFeeDbps } = calculateReferrerFee(amount.units(params.normalizedParams.amount), config.referrerFeeDbps, config.referrerFeeThreshold);
|
|
25
|
+
if (remainingAmount <= 0n) {
|
|
26
|
+
throw new Error("Amount after fee <= 0");
|
|
27
|
+
}
|
|
28
|
+
const gasLimit = gasLimits[toChain.network]?.[toChain.chain];
|
|
29
|
+
if (!gasLimit) {
|
|
30
|
+
throw new Error("Gas limit not found");
|
|
31
|
+
}
|
|
32
|
+
const capabilities = await fetchCapabilities(fromChain.network);
|
|
33
|
+
const srcCapabilities = capabilities[toChainId(fromChain.chain)];
|
|
34
|
+
if (!srcCapabilities) {
|
|
35
|
+
throw new Error("Unsupported source chain");
|
|
36
|
+
}
|
|
37
|
+
const dstCapabilities = capabilities[toChainId(toChain.chain)];
|
|
38
|
+
if (!dstCapabilities ||
|
|
39
|
+
!dstCapabilities.requestPrefixes.includes(capability)) {
|
|
40
|
+
throw new Error("Unsupported destination chain");
|
|
41
|
+
}
|
|
42
|
+
const { recipient } = request;
|
|
43
|
+
let tokenAccountExists = true;
|
|
44
|
+
// Check if the associated token account (ATA) exists on Solana.
|
|
45
|
+
// If it doesn't, include a gas drop-off instruction so the relayer can create it.
|
|
46
|
+
// Note: There's a potential race condition — the account might exist during this check,
|
|
47
|
+
// but could be closed before the transfer completes.
|
|
48
|
+
if (recipient && toChain.chain === "Solana") {
|
|
49
|
+
const usdcAddress = Wormhole.parseAddress("Solana", dstUsdcAddress);
|
|
50
|
+
const ata = await toChain.getTokenAccount(recipient.address, usdcAddress);
|
|
51
|
+
const connection = await toChain.getRpc();
|
|
52
|
+
const ataAccount = await connection.getAccountInfo(new SolanaAddress(ata.address).unwrap());
|
|
53
|
+
tokenAccountExists = ataAccount !== null;
|
|
54
|
+
if (!tokenAccountExists && !ataMinRentAmount) {
|
|
55
|
+
ataMinRentAmount = BigInt(await connection.getMinimumBalanceForRentExemption(165));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
let msgValue = 0n;
|
|
59
|
+
if (toChain.chain === "Solana") {
|
|
60
|
+
msgValue += SOLANA_MSG_VALUE_BASE_FEE;
|
|
61
|
+
if (!tokenAccountExists && ataMinRentAmount) {
|
|
62
|
+
msgValue += ataMinRentAmount;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const relayRequests = [];
|
|
66
|
+
// Add the gas instruction
|
|
67
|
+
relayRequests.push({
|
|
68
|
+
request: {
|
|
69
|
+
type: "GasInstruction",
|
|
70
|
+
gasLimit,
|
|
71
|
+
msgValue,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
// Calculate the gas dropOff value
|
|
75
|
+
const gasDropOffLimit = BigInt(dstCapabilities.gasDropOffLimit);
|
|
76
|
+
const dropOff = params.options.nativeGas && gasDropOffLimit > 0n
|
|
77
|
+
? (BigInt(Math.round(params.options.nativeGas * 100)) * gasDropOffLimit) /
|
|
78
|
+
100n
|
|
79
|
+
: 0n;
|
|
80
|
+
// Add the gas drop-off instruction if applicable
|
|
81
|
+
if (dropOff > 0n || !tokenAccountExists) {
|
|
82
|
+
relayRequests.push({
|
|
83
|
+
request: {
|
|
84
|
+
type: "GasDropOffInstruction",
|
|
85
|
+
dropOff,
|
|
86
|
+
// If the recipient is undefined (e.g. the user hasn’t connected their wallet yet),
|
|
87
|
+
// we temporarily use a dummy address to fetch a quote.
|
|
88
|
+
// The recipient address is validated later in the `initiate` method, which will throw if it's still missing.
|
|
89
|
+
recipient: recipient
|
|
90
|
+
? recipient.address.toUniversalAddress()
|
|
91
|
+
: new UniversalAddress(new Uint8Array(32)),
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const relayInstructions = serializeLayout(relayInstructionsLayout, {
|
|
96
|
+
requests: relayRequests,
|
|
97
|
+
});
|
|
98
|
+
const quote = await fetchSignedQuote(fromChain.network, fromChain.chain, toChain.chain, encoding.hex.encode(relayInstructions, true));
|
|
99
|
+
if (!quote.estimatedCost) {
|
|
100
|
+
throw new Error("No estimated cost");
|
|
101
|
+
}
|
|
102
|
+
const signedQuoteBytes = encoding.hex.decode(quote.signedQuote);
|
|
103
|
+
const signedQuote = deserializeLayout(signedQuoteLayout, signedQuoteBytes);
|
|
104
|
+
const estimatedCost = BigInt(quote.estimatedCost);
|
|
105
|
+
const details = {
|
|
106
|
+
signedQuote: signedQuoteBytes,
|
|
107
|
+
relayInstructions: relayInstructions,
|
|
108
|
+
estimatedCost,
|
|
109
|
+
referrer,
|
|
110
|
+
referrerFee,
|
|
111
|
+
remainingAmount,
|
|
112
|
+
referrerFeeDbps,
|
|
113
|
+
expiryTime: signedQuote.quote.expiryTime,
|
|
114
|
+
gasDropOff: dropOff,
|
|
115
|
+
};
|
|
116
|
+
return details;
|
|
117
|
+
}
|
|
118
|
+
export async function initiateTransfer(request, signer, to, params) {
|
|
119
|
+
const relayInstructions = deserializeLayout(relayInstructionsLayout, params.details.relayInstructions);
|
|
120
|
+
// Make sure that the gas drop-off recipient matches the actual recipient
|
|
121
|
+
relayInstructions.requests.forEach(({ request }) => {
|
|
122
|
+
if (request.type === "GasDropOffInstruction" &&
|
|
123
|
+
!request.recipient.equals(to.address.toUniversalAddress())) {
|
|
124
|
+
throw new Error("Gas drop-off recipient does not match");
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
const sender = Wormhole.parseAddress(signer.chain(), signer.address());
|
|
128
|
+
const recipient = await resolveRecipient(to, request);
|
|
129
|
+
let xfer;
|
|
130
|
+
if (params.protocol === "CCTPExecutor") {
|
|
131
|
+
const executor = await request.fromChain.getProtocol(params.protocol);
|
|
132
|
+
xfer = await executor.transfer(sender, recipient, params.details);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const executor = await request.fromChain.getProtocol(params.protocol);
|
|
136
|
+
xfer = await executor.transfer(sender, recipient, params.details);
|
|
137
|
+
}
|
|
138
|
+
const txids = await signSendWait(request.fromChain, xfer, signer);
|
|
139
|
+
// Status the transfer immediately before returning
|
|
140
|
+
let statusAttempts = 0;
|
|
141
|
+
const statusTransferImmediately = async () => {
|
|
142
|
+
while (statusAttempts < 20) {
|
|
143
|
+
try {
|
|
144
|
+
const [txStatus] = await fetchStatus(request.fromChain.network, txids.at(-1).txid, request.fromChain.chain);
|
|
145
|
+
if (txStatus) {
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (_) {
|
|
150
|
+
// is ok we just try again!
|
|
151
|
+
}
|
|
152
|
+
statusAttempts++;
|
|
153
|
+
await sleep(2_000);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
// Spawn a loop in the background that will status this transfer until
|
|
157
|
+
// the API gives a successful response. We don't await the result
|
|
158
|
+
// here because we don't need it for the return value.
|
|
159
|
+
statusTransferImmediately();
|
|
160
|
+
return {
|
|
161
|
+
from: request.fromChain.chain,
|
|
162
|
+
to: request.toChain.chain,
|
|
163
|
+
state: TransferState.SourceInitiated,
|
|
164
|
+
originTxs: txids,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
async function resolveRecipient(to, request) {
|
|
168
|
+
if (to.chain !== "Solana")
|
|
169
|
+
return to;
|
|
170
|
+
// When transferring to Solana, the recipient address is the ATA
|
|
171
|
+
const solanaUsdc = circle.usdcContract.get(request.toChain.network, request.toChain.chain);
|
|
172
|
+
if (!solanaUsdc)
|
|
173
|
+
throw new Error("No USDC contract found for Solana");
|
|
174
|
+
const usdcAddress = Wormhole.parseAddress("Solana", solanaUsdc);
|
|
175
|
+
return request.toChain.getTokenAccount(to.address, usdcAddress);
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/routes/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import type { SuiClient } from "@mysten/sui/client";
|
|
|
2
2
|
import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type Network, type Platform } from "@wormhole-foundation/sdk-connect";
|
|
3
3
|
import { SuiChains, SuiUnsignedTransaction } from "@wormhole-foundation/sdk-sui";
|
|
4
4
|
import { CCTPExecutor } from "../types";
|
|
5
|
-
import { QuoteDetails } from "
|
|
5
|
+
import { QuoteDetails } from "../routes/cctpV1";
|
|
6
6
|
export declare class SuiCCTPExecutor<N extends Network, C extends SuiChains> implements CCTPExecutor<N, C> {
|
|
7
7
|
readonly network: N;
|
|
8
8
|
readonly chain: C;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/sui/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,SAAS,EACT,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/sui/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,SAAS,EACT,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACjE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAa3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,SAAS;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAd/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAE3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS;WAiDlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQlC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA4F/C,OAAO,CAAC,gBAAgB;CAazB"}
|
|
@@ -3,7 +3,7 @@ import type { SolanaChains } from "@wormhole-foundation/sdk-solana";
|
|
|
3
3
|
import { SolanaUnsignedTransaction } from "@wormhole-foundation/sdk-solana";
|
|
4
4
|
import { CCTPExecutor } from "../types";
|
|
5
5
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
6
|
-
import { QuoteDetails } from "
|
|
6
|
+
import { QuoteDetails } from "../routes/cctpV1";
|
|
7
7
|
export declare class SvmCCTPExecutor<N extends Network, C extends SolanaChains> implements CCTPExecutor<N, C> {
|
|
8
8
|
readonly network: N;
|
|
9
9
|
readonly chain: C;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAIL,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,UAAU,EAAW,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAIL,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,UAAU,EAAW,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAchD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CACpE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAS3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAV/B,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CAAC;IAC5C,QAAQ,CAAC,2BAA2B,EAAE,SAAS,CAAC;IAEhD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC;gBAG3B,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS;WAkClB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAQrC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAkGlD,OAAO,CAAC,gBAAgB;CAazB"}
|
package/dist/esm/svm/executor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { circle, deserializeLayout, toChainId, } from "@wormhole-foundation/sdk-connect";
|
|
2
2
|
import { utils, SolanaAddress, SolanaPlatform, SolanaUnsignedTransaction, } from "@wormhole-foundation/sdk-solana";
|
|
3
|
-
import {
|
|
3
|
+
import { shimContractsV1, solanaExecutorId } from "../consts";
|
|
4
4
|
import { Keypair, PublicKey, Transaction } from "@solana/web3.js";
|
|
5
5
|
import { createAssociatedTokenAccountIdempotentInstruction, createTransferInstruction, getAssociatedTokenAddressSync, } from "@solana/spl-token";
|
|
6
6
|
import { createDepositForBurnInstruction } from "@wormhole-foundation/sdk-solana-cctp";
|
|
@@ -30,7 +30,7 @@ export class SvmCCTPExecutor {
|
|
|
30
30
|
};
|
|
31
31
|
this.tokenMessengerProgramId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
|
|
32
32
|
this.messageTransmitterProgramId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
|
|
33
|
-
this.shimProgramId = getContractAddress(
|
|
33
|
+
this.shimProgramId = getContractAddress(shimContractsV1[network]?.[chain], `Shim contract for ${chain} not found`);
|
|
34
34
|
this.executorProgramId = getContractAddress(solanaExecutorId[network], `Executor contract for ${network} not found`);
|
|
35
35
|
}
|
|
36
36
|
static async fromRpc(provider, config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,SAAS,GAOV,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { Chain, AccountAddress, ChainAddress, UnsignedTransaction, Network } from "@wormhole-foundation/sdk-connect";
|
|
2
|
-
import { QuoteDetails } from ".";
|
|
2
|
+
import { CCTPv2QuoteDetails, QuoteDetails } from ".";
|
|
3
|
+
import { CircleV2Message } from "./layouts";
|
|
3
4
|
export interface CCTPExecutor<N extends Network = Network, C extends Chain = Chain> {
|
|
4
5
|
transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<UnsignedTransaction<N, C>>;
|
|
5
6
|
}
|
|
7
|
+
export interface CCTPv2Executor<N extends Network = Network, C extends Chain = Chain> {
|
|
8
|
+
transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: CCTPv2QuoteDetails): AsyncGenerator<UnsignedTransaction<N, C>>;
|
|
9
|
+
isTransferCompleted(message: CircleV2Message): Promise<boolean>;
|
|
10
|
+
redeem(sender: AccountAddress<C>, message: CircleV2Message, attestation: string): AsyncGenerator<UnsignedTransaction<N, C>>;
|
|
11
|
+
getCurrentBlock(): Promise<bigint>;
|
|
12
|
+
}
|
|
6
13
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,WAAW,YAAY,CAC3B,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3B,CAAC,SAAS,KAAK,GAAG,KAAK;IAEvB,QAAQ,CACN,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9C;AAGD,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3B,CAAC,SAAS,KAAK,GAAG,KAAK;IAEvB,QAAQ,CACN,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,kBAAkB,GAC1B,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7C,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE,MAAM,CACJ,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7C,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC"}
|
package/dist/esm/utils.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Chain, Network } from "@wormhole-foundation/sdk-base";
|
|
2
|
-
import {
|
|
2
|
+
import { CircleV2Message, SignedQuote } from "./layouts";
|
|
3
|
+
import { ChainContext, TokenId, TransactionId } from "@wormhole-foundation/sdk-connect";
|
|
4
|
+
import { CCTPv2ExecutorRoute } from "./routes";
|
|
3
5
|
export declare enum RelayStatus {
|
|
4
6
|
Pending = "pending",
|
|
5
7
|
Failed = "failed",
|
|
@@ -37,6 +39,13 @@ export type RelayData = {
|
|
|
37
39
|
txs?: TxInfo[];
|
|
38
40
|
indexed_at: Date;
|
|
39
41
|
};
|
|
42
|
+
export declare enum RequestPrefix {
|
|
43
|
+
ERM1 = "ERM1",// MM
|
|
44
|
+
ERV1 = "ERV1",// VAA_V1
|
|
45
|
+
ERN1 = "ERN1",// NTT_V1
|
|
46
|
+
ERC1 = "ERC1",// CCTP_V1
|
|
47
|
+
ERC2 = "ERC2"
|
|
48
|
+
}
|
|
40
49
|
export type Capabilities = {
|
|
41
50
|
requestPrefixes: Array<keyof typeof RequestPrefix>;
|
|
42
51
|
gasDropOffLimit: string;
|
|
@@ -57,9 +66,21 @@ export interface StatusResponse extends RelayData {
|
|
|
57
66
|
estimatedCost: string;
|
|
58
67
|
}
|
|
59
68
|
export declare function fetchStatus(network: Network, txHash: string, chain: Chain): Promise<StatusResponse[]>;
|
|
60
|
-
export declare function calculateReferrerFee(amount: bigint, dBps: bigint): {
|
|
69
|
+
export declare function calculateReferrerFee(amount: bigint, dBps: bigint, threshold?: bigint): {
|
|
61
70
|
referrerFee: bigint;
|
|
62
71
|
remainingAmount: bigint;
|
|
72
|
+
referrerFeeDbps: bigint;
|
|
63
73
|
};
|
|
64
74
|
export declare function sleep(ms: number): Promise<void>;
|
|
75
|
+
export declare function getCircleV2Attestation(tx: TransactionId, network: Network, timeout?: number): Promise<{
|
|
76
|
+
message: CircleV2Message;
|
|
77
|
+
attestation: string;
|
|
78
|
+
} | null>;
|
|
79
|
+
export declare function getCircleV2FastBurnFee(network: Network, fromChain: Chain, toChain: Chain): Promise<bigint>;
|
|
80
|
+
export declare function reattestCircleV2Message(network: Network, attestation: CCTPv2ExecutorRoute.Attestation): Promise<{
|
|
81
|
+
message: CircleV2Message;
|
|
82
|
+
attestation: string;
|
|
83
|
+
} | null>;
|
|
84
|
+
export declare function getCircleV2FastBurnAllowance(network: Network): Promise<bigint>;
|
|
85
|
+
export declare function getUsdcDestinationAddress<N extends Network>(sourceToken: TokenId, fromChain: ChainContext<N>, toChain: ChainContext<N>): TokenId[];
|
|
65
86
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/esm/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|