@wormhole-labs/cctp-executor-route 0.4.0 → 0.5.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/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 +22 -1
- package/dist/cjs/consts.d.ts.map +1 -1
- package/dist/cjs/consts.js +223 -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 +92 -0
- package/dist/cjs/routes/cctpV1.d.ts.map +1 -0
- package/dist/cjs/routes/cctpV1.js +190 -0
- package/dist/cjs/routes/cctpV1.js.map +1 -0
- package/dist/cjs/routes/cctpV2Base.d.ts +57 -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 +138 -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 +126 -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 +20 -1
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +86 -2
- 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 +22 -1
- package/dist/esm/consts.d.ts.map +1 -1
- package/dist/esm/consts.js +216 -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 +92 -0
- package/dist/esm/routes/cctpV1.d.ts.map +1 -0
- package/dist/esm/routes/cctpV1.js +185 -0
- package/dist/esm/routes/cctpV1.js.map +1 -0
- package/dist/esm/routes/cctpV2Base.d.ts +57 -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 +133 -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 +121 -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 +20 -1
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +83 -3
- 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,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CCTPv2StandardExecutorRoute = void 0;
|
|
4
|
+
exports.cctpV2StandardExecutorRoute = cctpV2StandardExecutorRoute;
|
|
5
|
+
const sdk_base_1 = require("@wormhole-foundation/sdk-base");
|
|
6
|
+
const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
|
|
7
|
+
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
8
|
+
const consts_1 = require("../consts");
|
|
9
|
+
const cctpV2Base_1 = require("./cctpV2Base");
|
|
10
|
+
const helpers_1 = require("./helpers");
|
|
11
|
+
// Use this function to create a new CCTPv2StandardExecutorRoute with custom config
|
|
12
|
+
function cctpV2StandardExecutorRoute(config = { referrerFeeDbps: 0n }) {
|
|
13
|
+
if (config.referrerFeeDbps < 0 || config.referrerFeeDbps > 65535n) {
|
|
14
|
+
throw new Error("Referrer fee must be between 0 and 65535");
|
|
15
|
+
}
|
|
16
|
+
class CCTPv2StandardExecutorRouteImpl extends CCTPv2StandardExecutorRoute {
|
|
17
|
+
static config = config;
|
|
18
|
+
}
|
|
19
|
+
return CCTPv2StandardExecutorRouteImpl;
|
|
20
|
+
}
|
|
21
|
+
class CCTPv2StandardExecutorRoute extends cctpV2Base_1.CCTPv2BaseRoute {
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
// Since we set the config on the static class, access it with this param
|
|
24
|
+
// the CCTPv2StandardExecutorRoute.config will always be empty
|
|
25
|
+
staticConfig = this.constructor.config;
|
|
26
|
+
static config = { referrerFeeDbps: 0n };
|
|
27
|
+
static meta = {
|
|
28
|
+
name: "CCTPv2StandardExecutorRoute",
|
|
29
|
+
provider: "Circle",
|
|
30
|
+
};
|
|
31
|
+
static isPathSupported(fromChain, toChain) {
|
|
32
|
+
return ((0, consts_1.isCircleV2Chain)(fromChain.network, fromChain.chain) &&
|
|
33
|
+
(0, consts_1.isCircleV2Chain)(toChain.network, toChain.chain) &&
|
|
34
|
+
// We don't support slow transfers from Linea because the attestation time
|
|
35
|
+
// can be anywhere between 6 and 32 hours! Fast transfer should be used instead.
|
|
36
|
+
fromChain.chain !== "Linea");
|
|
37
|
+
}
|
|
38
|
+
static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
|
|
39
|
+
if (!this.isPathSupported(fromChain, toChain)) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
// Ensure the source token is USDC
|
|
43
|
+
const sourceChainUsdcContract = consts_1.usdcContracts[fromChain.network]?.[fromChain.chain];
|
|
44
|
+
if (!(sourceChainUsdcContract &&
|
|
45
|
+
(0, sdk_definitions_1.isSameToken)(sourceToken, sdk_connect_1.Wormhole.tokenId(fromChain.chain, sourceChainUsdcContract)))) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
const { network, chain } = toChain;
|
|
49
|
+
const destChainUsdcContract = consts_1.usdcContracts[network]?.[chain];
|
|
50
|
+
if (!destChainUsdcContract)
|
|
51
|
+
return [];
|
|
52
|
+
return [sdk_connect_1.Wormhole.chainAddress(chain, destChainUsdcContract)];
|
|
53
|
+
}
|
|
54
|
+
async validate(request, params) {
|
|
55
|
+
if (!CCTPv2StandardExecutorRoute.isPathSupported(request.fromChain, request.toChain)) {
|
|
56
|
+
return {
|
|
57
|
+
valid: false,
|
|
58
|
+
error: new Error("Can only transfer between Circle V2 chains"),
|
|
59
|
+
params,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (params.options?.nativeGas &&
|
|
63
|
+
(params.options.nativeGas < 0 || params.options.nativeGas > 1)) {
|
|
64
|
+
return {
|
|
65
|
+
valid: false,
|
|
66
|
+
error: new Error("Invalid native gas percentage"),
|
|
67
|
+
params,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const validatedParams = {
|
|
71
|
+
normalizedParams: {
|
|
72
|
+
amount: request.parseAmount(params.amount),
|
|
73
|
+
},
|
|
74
|
+
options: params.options ?? this.getDefaultOptions(),
|
|
75
|
+
...params,
|
|
76
|
+
};
|
|
77
|
+
return { valid: true, params: validatedParams };
|
|
78
|
+
}
|
|
79
|
+
async quote(request, params) {
|
|
80
|
+
const { fromChain, toChain } = request;
|
|
81
|
+
try {
|
|
82
|
+
const quoteDetails = await (0, helpers_1.fetchExecutorQuote)(request, params, this.staticConfig.referrerFeeDbps, "ERC2");
|
|
83
|
+
const { remainingAmount, estimatedCost, gasDropOff, expiryTime } = quoteDetails;
|
|
84
|
+
// https://developers.circle.com/stablecoins/docs/required-block-confirmations
|
|
85
|
+
const eta = fromChain.chain === "Polygon"
|
|
86
|
+
? 2_000 * 200
|
|
87
|
+
: sdk_base_1.finality.estimateFinalityTime(fromChain.chain) + 1_000; // buffer for the relayer
|
|
88
|
+
const [srcNativeDecimals, dstNativeDecimals] = await Promise.all([
|
|
89
|
+
fromChain.getDecimals("native"),
|
|
90
|
+
toChain.getDecimals("native"),
|
|
91
|
+
]);
|
|
92
|
+
return {
|
|
93
|
+
success: true,
|
|
94
|
+
params,
|
|
95
|
+
sourceToken: {
|
|
96
|
+
token: request.source.id,
|
|
97
|
+
amount: params.normalizedParams.amount,
|
|
98
|
+
},
|
|
99
|
+
destinationToken: {
|
|
100
|
+
token: request.destination.id,
|
|
101
|
+
amount: sdk_base_1.amount.fromBaseUnits(remainingAmount, request.destination.decimals),
|
|
102
|
+
},
|
|
103
|
+
relayFee: {
|
|
104
|
+
token: (0, sdk_definitions_1.nativeTokenId)(fromChain.chain),
|
|
105
|
+
amount: sdk_base_1.amount.fromBaseUnits(estimatedCost, srcNativeDecimals),
|
|
106
|
+
},
|
|
107
|
+
destinationNativeGas: sdk_base_1.amount.fromBaseUnits(gasDropOff, dstNativeDecimals),
|
|
108
|
+
eta,
|
|
109
|
+
expires: expiryTime,
|
|
110
|
+
details: {
|
|
111
|
+
...quoteDetails,
|
|
112
|
+
minFinalityThreshold: consts_1.CircleV2FinalityThreshold.FINALIZED,
|
|
113
|
+
fastTransferMaxFee: 0n, // no fee for standard / slow transfer
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
return {
|
|
119
|
+
success: false,
|
|
120
|
+
error: new Error(e instanceof Error ? e.message : `${e}`),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.CCTPv2StandardExecutorRoute = CCTPv2StandardExecutorRoute;
|
|
126
|
+
//# 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, referrerFeeDbps: bigint, 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,EAGZ,OAAO,EACP,MAAM,EAEN,MAAM,EAEN,8BAA8B,EAK/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAiB3D,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,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,YAAY,CAAC,CAgJvB;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,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchExecutorQuote = fetchExecutorQuote;
|
|
4
|
+
exports.initiateTransfer = initiateTransfer;
|
|
5
|
+
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
6
|
+
const consts_1 = require("../consts");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
|
|
9
|
+
const layouts_1 = require("../layouts");
|
|
10
|
+
// The minimum rent exemption amount for a 165 byte account (e.g. an ATA)
|
|
11
|
+
// cache it here to avoid fetching it from the Solana RPC
|
|
12
|
+
let ataMinRentAmount = undefined;
|
|
13
|
+
async function fetchExecutorQuote(request, params, referrerFeeDbps, capability) {
|
|
14
|
+
const { fromChain, toChain } = request;
|
|
15
|
+
const srcUsdcAddress = consts_1.usdcContracts[fromChain.network]?.[fromChain.chain];
|
|
16
|
+
if (!srcUsdcAddress) {
|
|
17
|
+
throw new Error("Invalid transfer, no USDC contract on source");
|
|
18
|
+
}
|
|
19
|
+
const dstUsdcAddress = consts_1.usdcContracts[toChain.network]?.[toChain.chain];
|
|
20
|
+
if (!dstUsdcAddress) {
|
|
21
|
+
throw new Error("Invalid transfer, no USDC contract on destination");
|
|
22
|
+
}
|
|
23
|
+
const referrerAddress = consts_1.referrers[fromChain.network]?.[fromChain.chain];
|
|
24
|
+
if (!referrerAddress) {
|
|
25
|
+
throw new Error("No referrer address found");
|
|
26
|
+
}
|
|
27
|
+
const referrer = sdk_connect_1.Wormhole.chainAddress(fromChain.chain, referrerAddress);
|
|
28
|
+
const { referrerFee, remainingAmount } = (0, utils_1.calculateReferrerFee)(sdk_connect_1.amount.units(params.normalizedParams.amount), referrerFeeDbps);
|
|
29
|
+
if (remainingAmount <= 0n) {
|
|
30
|
+
throw new Error("Amount after fee <= 0");
|
|
31
|
+
}
|
|
32
|
+
const gasLimit = consts_1.gasLimits[toChain.network]?.[toChain.chain];
|
|
33
|
+
if (!gasLimit) {
|
|
34
|
+
throw new Error("Gas limit not found");
|
|
35
|
+
}
|
|
36
|
+
const capabilities = await (0, utils_1.fetchCapabilities)(fromChain.network);
|
|
37
|
+
const srcCapabilities = capabilities[(0, sdk_connect_1.toChainId)(fromChain.chain)];
|
|
38
|
+
if (!srcCapabilities) {
|
|
39
|
+
throw new Error("Unsupported source chain");
|
|
40
|
+
}
|
|
41
|
+
const dstCapabilities = capabilities[(0, sdk_connect_1.toChainId)(toChain.chain)];
|
|
42
|
+
if (!dstCapabilities ||
|
|
43
|
+
!dstCapabilities.requestPrefixes.includes(capability)) {
|
|
44
|
+
throw new Error("Unsupported destination chain");
|
|
45
|
+
}
|
|
46
|
+
const { recipient } = request;
|
|
47
|
+
let tokenAccountExists = true;
|
|
48
|
+
// Check if the associated token account (ATA) exists on Solana.
|
|
49
|
+
// If it doesn't, include a gas drop-off instruction so the relayer can create it.
|
|
50
|
+
// Note: There's a potential race condition — the account might exist during this check,
|
|
51
|
+
// but could be closed before the transfer completes.
|
|
52
|
+
if (recipient && toChain.chain === "Solana") {
|
|
53
|
+
const usdcAddress = sdk_connect_1.Wormhole.parseAddress("Solana", dstUsdcAddress);
|
|
54
|
+
const ata = await toChain.getTokenAccount(recipient.address, usdcAddress);
|
|
55
|
+
const connection = await toChain.getRpc();
|
|
56
|
+
const ataAccount = await connection.getAccountInfo(new sdk_solana_1.SolanaAddress(ata.address).unwrap());
|
|
57
|
+
tokenAccountExists = ataAccount !== null;
|
|
58
|
+
if (!tokenAccountExists && !ataMinRentAmount) {
|
|
59
|
+
ataMinRentAmount = BigInt(await connection.getMinimumBalanceForRentExemption(165));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
let msgValue = 0n;
|
|
63
|
+
if (toChain.chain === "Solana") {
|
|
64
|
+
msgValue += consts_1.SOLANA_MSG_VALUE_BASE_FEE;
|
|
65
|
+
if (!tokenAccountExists && ataMinRentAmount) {
|
|
66
|
+
msgValue += ataMinRentAmount;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const relayRequests = [];
|
|
70
|
+
// Add the gas instruction
|
|
71
|
+
relayRequests.push({
|
|
72
|
+
request: {
|
|
73
|
+
type: "GasInstruction",
|
|
74
|
+
gasLimit,
|
|
75
|
+
msgValue,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
// Calculate the gas dropOff value
|
|
79
|
+
const gasDropOffLimit = BigInt(dstCapabilities.gasDropOffLimit);
|
|
80
|
+
const dropOff = params.options.nativeGas && gasDropOffLimit > 0n
|
|
81
|
+
? (BigInt(Math.round(params.options.nativeGas * 100)) * gasDropOffLimit) /
|
|
82
|
+
100n
|
|
83
|
+
: 0n;
|
|
84
|
+
// Add the gas drop-off instruction if applicable
|
|
85
|
+
if (dropOff > 0n || !tokenAccountExists) {
|
|
86
|
+
relayRequests.push({
|
|
87
|
+
request: {
|
|
88
|
+
type: "GasDropOffInstruction",
|
|
89
|
+
dropOff,
|
|
90
|
+
// If the recipient is undefined (e.g. the user hasn’t connected their wallet yet),
|
|
91
|
+
// we temporarily use a dummy address to fetch a quote.
|
|
92
|
+
// The recipient address is validated later in the `initiate` method, which will throw if it's still missing.
|
|
93
|
+
recipient: recipient
|
|
94
|
+
? recipient.address.toUniversalAddress()
|
|
95
|
+
: new sdk_connect_1.UniversalAddress(new Uint8Array(32)),
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const relayInstructions = (0, sdk_connect_1.serializeLayout)(layouts_1.relayInstructionsLayout, {
|
|
100
|
+
requests: relayRequests,
|
|
101
|
+
});
|
|
102
|
+
const quote = await (0, utils_1.fetchSignedQuote)(fromChain.network, fromChain.chain, toChain.chain, sdk_connect_1.encoding.hex.encode(relayInstructions, true));
|
|
103
|
+
if (!quote.estimatedCost) {
|
|
104
|
+
throw new Error("No estimated cost");
|
|
105
|
+
}
|
|
106
|
+
const signedQuoteBytes = sdk_connect_1.encoding.hex.decode(quote.signedQuote);
|
|
107
|
+
const signedQuote = (0, sdk_connect_1.deserializeLayout)(layouts_1.signedQuoteLayout, signedQuoteBytes);
|
|
108
|
+
const estimatedCost = BigInt(quote.estimatedCost);
|
|
109
|
+
const details = {
|
|
110
|
+
signedQuote: signedQuoteBytes,
|
|
111
|
+
relayInstructions: relayInstructions,
|
|
112
|
+
estimatedCost,
|
|
113
|
+
referrer,
|
|
114
|
+
referrerFee,
|
|
115
|
+
remainingAmount,
|
|
116
|
+
referrerFeeDbps,
|
|
117
|
+
expiryTime: signedQuote.quote.expiryTime,
|
|
118
|
+
gasDropOff: dropOff,
|
|
119
|
+
};
|
|
120
|
+
return details;
|
|
121
|
+
}
|
|
122
|
+
async function initiateTransfer(request, signer, to, params) {
|
|
123
|
+
const relayInstructions = (0, sdk_connect_1.deserializeLayout)(layouts_1.relayInstructionsLayout, params.details.relayInstructions);
|
|
124
|
+
// Make sure that the gas drop-off recipient matches the actual recipient
|
|
125
|
+
relayInstructions.requests.forEach(({ request }) => {
|
|
126
|
+
if (request.type === "GasDropOffInstruction" &&
|
|
127
|
+
!request.recipient.equals(to.address.toUniversalAddress())) {
|
|
128
|
+
throw new Error("Gas drop-off recipient does not match");
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
const sender = sdk_connect_1.Wormhole.parseAddress(signer.chain(), signer.address());
|
|
132
|
+
const recipient = await resolveRecipient(to, request);
|
|
133
|
+
let xfer;
|
|
134
|
+
if (params.protocol === "CCTPExecutor") {
|
|
135
|
+
const executor = await request.fromChain.getProtocol(params.protocol);
|
|
136
|
+
xfer = await executor.transfer(sender, recipient, params.details);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const executor = await request.fromChain.getProtocol(params.protocol);
|
|
140
|
+
xfer = await executor.transfer(sender, recipient, params.details);
|
|
141
|
+
}
|
|
142
|
+
const txids = await (0, sdk_connect_1.signSendWait)(request.fromChain, xfer, signer);
|
|
143
|
+
// Status the transfer immediately before returning
|
|
144
|
+
let statusAttempts = 0;
|
|
145
|
+
const statusTransferImmediately = async () => {
|
|
146
|
+
while (statusAttempts < 20) {
|
|
147
|
+
try {
|
|
148
|
+
const [txStatus] = await (0, utils_1.fetchStatus)(request.fromChain.network, txids.at(-1).txid, request.fromChain.chain);
|
|
149
|
+
if (txStatus) {
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (_) {
|
|
154
|
+
// is ok we just try again!
|
|
155
|
+
}
|
|
156
|
+
statusAttempts++;
|
|
157
|
+
await (0, utils_1.sleep)(2_000);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
// Spawn a loop in the background that will status this transfer until
|
|
161
|
+
// the API gives a successful response. We don't await the result
|
|
162
|
+
// here because we don't need it for the return value.
|
|
163
|
+
statusTransferImmediately();
|
|
164
|
+
return {
|
|
165
|
+
from: request.fromChain.chain,
|
|
166
|
+
to: request.toChain.chain,
|
|
167
|
+
state: sdk_connect_1.TransferState.SourceInitiated,
|
|
168
|
+
originTxs: txids,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
async function resolveRecipient(to, request) {
|
|
172
|
+
if (to.chain !== "Solana")
|
|
173
|
+
return to;
|
|
174
|
+
// When transferring to Solana, the recipient address is the ATA
|
|
175
|
+
const solanaUsdc = consts_1.usdcContracts[request.toChain.network]?.[request.toChain.chain];
|
|
176
|
+
if (!solanaUsdc)
|
|
177
|
+
throw new Error("No USDC contract found for Solana");
|
|
178
|
+
const usdcAddress = sdk_connect_1.Wormhole.parseAddress("Solana", solanaUsdc);
|
|
179
|
+
return request.toChain.getTokenAccount(to.address, usdcAddress);
|
|
180
|
+
}
|
|
181
|
+
//# 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,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cctpV1"), exports);
|
|
18
|
+
__exportStar(require("./cctpV2Base"), exports);
|
|
19
|
+
__exportStar(require("./cctpV2Fast"), exports);
|
|
20
|
+
__exportStar(require("./cctpV2Standard"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,+CAA6B;AAC7B,mDAAiC"}
|
|
@@ -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/cjs/svm/executor.js
CHANGED
|
@@ -33,7 +33,7 @@ class SvmCCTPExecutor {
|
|
|
33
33
|
};
|
|
34
34
|
this.tokenMessengerProgramId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
|
|
35
35
|
this.messageTransmitterProgramId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
|
|
36
|
-
this.shimProgramId = getContractAddress(consts_1.
|
|
36
|
+
this.shimProgramId = getContractAddress(consts_1.shimContractsV1[network]?.[chain], `Shim contract for ${chain} not found`);
|
|
37
37
|
this.executorProgramId = getContractAddress(consts_1.solanaExecutorId[network], `Executor contract for ${network} not found`);
|
|
38
38
|
}
|
|
39
39
|
static async fromRpc(provider, config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":";;;AAAA,kEAU0C;AAK1C,gEAKyC;AAEzC,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/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/cjs/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/cjs/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 { 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;
|
|
@@ -62,4 +71,14 @@ export declare function calculateReferrerFee(amount: bigint, dBps: bigint): {
|
|
|
62
71
|
remainingAmount: bigint;
|
|
63
72
|
};
|
|
64
73
|
export declare function sleep(ms: number): Promise<void>;
|
|
74
|
+
export declare function getCircleV2Attestation(tx: TransactionId, network: Network, timeout?: number): Promise<{
|
|
75
|
+
message: CircleV2Message;
|
|
76
|
+
attestation: string;
|
|
77
|
+
} | null>;
|
|
78
|
+
export declare function getCircleV2FastBurnFee(network: Network, fromChain: Chain, toChain: Chain): Promise<bigint>;
|
|
79
|
+
export declare function reattestCircleV2Message(network: Network, attestation: CCTPv2ExecutorRoute.Attestation): Promise<{
|
|
80
|
+
message: CircleV2Message;
|
|
81
|
+
attestation: string;
|
|
82
|
+
} | null>;
|
|
83
|
+
export declare function getCircleV2FastBurnAllowance(network: Network): Promise<bigint>;
|
|
65
84
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/cjs/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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"}
|