@wormhole-labs/cctp-executor-route 0.0.1-beta.10
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 +68 -0
- package/dist/cjs/aptos/executor.d.ts +18 -0
- package/dist/cjs/aptos/executor.d.ts.map +1 -0
- package/dist/cjs/aptos/executor.js +73 -0
- package/dist/cjs/aptos/executor.js.map +1 -0
- package/dist/cjs/aptos/index.d.ts +2 -0
- package/dist/cjs/aptos/index.d.ts.map +1 -0
- package/dist/cjs/aptos/index.js +22 -0
- package/dist/cjs/aptos/index.js.map +1 -0
- package/dist/cjs/consts.d.ts +13 -0
- package/dist/cjs/consts.d.ts.map +1 -0
- package/dist/cjs/consts.js +94 -0
- package/dist/cjs/consts.js.map +1 -0
- package/dist/cjs/evm/executor.d.ts +19 -0
- package/dist/cjs/evm/executor.d.ts.map +1 -0
- package/dist/cjs/evm/executor.js +69 -0
- package/dist/cjs/evm/executor.js.map +1 -0
- package/dist/cjs/evm/index.d.ts +2 -0
- package/dist/cjs/evm/index.d.ts.map +1 -0
- package/dist/cjs/evm/index.js +22 -0
- package/dist/cjs/evm/index.js.map +1 -0
- package/dist/cjs/index.d.ts +96 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +321 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/layouts/conversions.d.ts +5 -0
- package/dist/cjs/layouts/conversions.d.ts.map +1 -0
- package/dist/cjs/layouts/conversions.js +8 -0
- package/dist/cjs/layouts/conversions.js.map +1 -0
- package/dist/cjs/layouts/index.d.ts +4 -0
- package/dist/cjs/layouts/index.d.ts.map +1 -0
- package/dist/cjs/layouts/index.js +20 -0
- package/dist/cjs/layouts/index.js.map +1 -0
- package/dist/cjs/layouts/relayInstruction.d.ts +86 -0
- package/dist/cjs/layouts/relayInstruction.d.ts.map +1 -0
- package/dist/cjs/layouts/relayInstruction.js +32 -0
- package/dist/cjs/layouts/relayInstruction.js.map +1 -0
- package/dist/cjs/layouts/requestForExecution.d.ts +18 -0
- package/dist/cjs/layouts/requestForExecution.d.ts.map +1 -0
- package/dist/cjs/layouts/requestForExecution.js +15 -0
- package/dist/cjs/layouts/requestForExecution.js.map +1 -0
- package/dist/cjs/layouts/signedQuote.d.ts +102 -0
- package/dist/cjs/layouts/signedQuote.d.ts.map +1 -0
- package/dist/cjs/layouts/signedQuote.js +46 -0
- package/dist/cjs/layouts/signedQuote.js.map +1 -0
- package/dist/cjs/sui/executor.d.ts +24 -0
- package/dist/cjs/sui/executor.d.ts.map +1 -0
- package/dist/cjs/sui/executor.js +129 -0
- package/dist/cjs/sui/executor.js.map +1 -0
- package/dist/cjs/sui/index.d.ts +2 -0
- package/dist/cjs/sui/index.d.ts.map +1 -0
- package/dist/cjs/sui/index.js +22 -0
- package/dist/cjs/sui/index.js.map +1 -0
- package/dist/cjs/svm/executor.d.ts +21 -0
- package/dist/cjs/svm/executor.d.ts.map +1 -0
- package/dist/cjs/svm/executor.js +89 -0
- package/dist/cjs/svm/executor.js.map +1 -0
- package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts +72 -0
- package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts.map +1 -0
- package/dist/cjs/svm/idl/example_cctp_with_executor.js +74 -0
- package/dist/cjs/svm/idl/example_cctp_with_executor.js.map +1 -0
- package/dist/cjs/svm/index.d.ts +2 -0
- package/dist/cjs/svm/index.d.ts.map +1 -0
- package/dist/cjs/svm/index.js +22 -0
- package/dist/cjs/svm/index.js.map +1 -0
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +64 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +74 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/aptos/executor.d.ts +18 -0
- package/dist/esm/aptos/executor.d.ts.map +1 -0
- package/dist/esm/aptos/executor.js +69 -0
- package/dist/esm/aptos/executor.js.map +1 -0
- package/dist/esm/aptos/index.d.ts +2 -0
- package/dist/esm/aptos/index.d.ts.map +1 -0
- package/dist/esm/aptos/index.js +6 -0
- package/dist/esm/aptos/index.js.map +1 -0
- package/dist/esm/consts.d.ts +13 -0
- package/dist/esm/consts.d.ts.map +1 -0
- package/dist/esm/consts.js +91 -0
- package/dist/esm/consts.js.map +1 -0
- package/dist/esm/evm/executor.d.ts +19 -0
- package/dist/esm/evm/executor.d.ts.map +1 -0
- package/dist/esm/evm/executor.js +65 -0
- package/dist/esm/evm/executor.js.map +1 -0
- package/dist/esm/evm/index.d.ts +2 -0
- package/dist/esm/evm/index.d.ts.map +1 -0
- package/dist/esm/evm/index.js +6 -0
- package/dist/esm/evm/index.js.map +1 -0
- package/dist/esm/index.d.ts +96 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +316 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/layouts/conversions.d.ts +5 -0
- package/dist/esm/layouts/conversions.d.ts.map +1 -0
- package/dist/esm/layouts/conversions.js +5 -0
- package/dist/esm/layouts/conversions.js.map +1 -0
- package/dist/esm/layouts/index.d.ts +4 -0
- package/dist/esm/layouts/index.d.ts.map +1 -0
- package/dist/esm/layouts/index.js +4 -0
- package/dist/esm/layouts/index.js.map +1 -0
- package/dist/esm/layouts/relayInstruction.d.ts +86 -0
- package/dist/esm/layouts/relayInstruction.d.ts.map +1 -0
- package/dist/esm/layouts/relayInstruction.js +29 -0
- package/dist/esm/layouts/relayInstruction.js.map +1 -0
- package/dist/esm/layouts/requestForExecution.d.ts +18 -0
- package/dist/esm/layouts/requestForExecution.d.ts.map +1 -0
- package/dist/esm/layouts/requestForExecution.js +12 -0
- package/dist/esm/layouts/requestForExecution.js.map +1 -0
- package/dist/esm/layouts/signedQuote.d.ts +102 -0
- package/dist/esm/layouts/signedQuote.d.ts.map +1 -0
- package/dist/esm/layouts/signedQuote.js +43 -0
- package/dist/esm/layouts/signedQuote.js.map +1 -0
- package/dist/esm/sui/executor.d.ts +24 -0
- package/dist/esm/sui/executor.d.ts.map +1 -0
- package/dist/esm/sui/executor.js +125 -0
- package/dist/esm/sui/executor.js.map +1 -0
- package/dist/esm/sui/index.d.ts +2 -0
- package/dist/esm/sui/index.d.ts.map +1 -0
- package/dist/esm/sui/index.js +6 -0
- package/dist/esm/sui/index.js.map +1 -0
- package/dist/esm/svm/executor.d.ts +21 -0
- package/dist/esm/svm/executor.d.ts.map +1 -0
- package/dist/esm/svm/executor.js +85 -0
- package/dist/esm/svm/executor.js.map +1 -0
- package/dist/esm/svm/idl/example_cctp_with_executor.d.ts +72 -0
- package/dist/esm/svm/idl/example_cctp_with_executor.d.ts.map +1 -0
- package/dist/esm/svm/idl/example_cctp_with_executor.js +71 -0
- package/dist/esm/svm/idl/example_cctp_with_executor.js.map +1 -0
- package/dist/esm/svm/index.d.ts +2 -0
- package/dist/esm/svm/index.d.ts.map +1 -0
- package/dist/esm/svm/index.js +6 -0
- package/dist/esm/svm/index.js.map +1 -0
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +64 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +64 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +52 -0
package/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# CCTP W7 Executor Route
|
|
2
|
+
|
|
3
|
+
## Releasing
|
|
4
|
+
|
|
5
|
+
To release this package, follow these steps:
|
|
6
|
+
|
|
7
|
+
1. **Create a New GitHub Release**
|
|
8
|
+
- Tag the release with an appropriate [semantic version](https://semver.org/) (e.g., `0.1.0`, `1.0.0-beta`, etc.).
|
|
9
|
+
- This will trigger the GitHub Actions workflow responsible for building and packing the package.
|
|
10
|
+
|
|
11
|
+
2. **GitHub Workflow**
|
|
12
|
+
- The workflow will:
|
|
13
|
+
- Build the package.
|
|
14
|
+
- Create a tarball (`.tgz`).
|
|
15
|
+
- Upload the resulting artifact to the assets section of the GitHub Release page.
|
|
16
|
+
|
|
17
|
+
3. **Installation**
|
|
18
|
+
- The packed package can be installed in **Connect** or **Portal**.
|
|
19
|
+
|
|
20
|
+
4. **Usage**
|
|
21
|
+
- Once installed, import the route using:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { CCTPW7ExecutorRoute } from "@wormhole-labs/cctp-w7-executor-route";
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Transfer Example
|
|
30
|
+
|
|
31
|
+
This project includes a script for testing a USDC token transfer using the CCTPv1 Executor route with a referrer fee. You can change the source and destination chains in the `examples/transfer.ts` file.
|
|
32
|
+
|
|
33
|
+
### Prerequisites
|
|
34
|
+
|
|
35
|
+
First, install dependencies and build the project:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm ci && npm run build
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Configure Environment Variables
|
|
42
|
+
|
|
43
|
+
Set your private keys as environment variables:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
export EVM_PRIVATE_KEY=<your_evm_private_key>
|
|
47
|
+
export SVM_PRIVATE_KEY=<your_svm_private_key>
|
|
48
|
+
export SUI_PRIVATE_KEY=<your_sui_private_key>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Run the Example
|
|
52
|
+
|
|
53
|
+
To fetch a quote for the transfer:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm run examples:test
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
To actually send the transfer, set an additional environment variable:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
SEND_TRANSFER=true npm run examples:test
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
> ⚠️ **Note:**
|
|
66
|
+
>
|
|
67
|
+
> - All relevant contract addresses and constants are defined in `src/consts`.
|
|
68
|
+
> - Referrer fee is set to **1 basis point** in `src/consts`.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Aptos } from "@aptos-labs/ts-sdk";
|
|
2
|
+
import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type Network, type Platform } from "@wormhole-foundation/sdk-connect";
|
|
3
|
+
import { AptosChains, AptosUnsignedTransaction } from "@wormhole-foundation/sdk-aptos";
|
|
4
|
+
import { CCTPW7Executor } from "../types";
|
|
5
|
+
import { QuoteDetails } from "..";
|
|
6
|
+
export declare class AptosCCTPW7Executor<N extends Network, C extends AptosChains> implements CCTPW7Executor<N, C> {
|
|
7
|
+
readonly network: N;
|
|
8
|
+
readonly chain: C;
|
|
9
|
+
readonly provider: Aptos;
|
|
10
|
+
readonly contracts: Contracts;
|
|
11
|
+
readonly usdcId: string;
|
|
12
|
+
readonly shimContract: string;
|
|
13
|
+
constructor(network: N, chain: C, provider: Aptos, contracts: Contracts);
|
|
14
|
+
static fromRpc<N extends Network>(provider: Aptos, config: ChainsConfig<N, Platform>): Promise<AptosCCTPW7Executor<N, AptosChains>>;
|
|
15
|
+
transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<AptosUnsignedTransaction<N, C>>;
|
|
16
|
+
private createUnsignedTx;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/aptos/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAIN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,WAAW,EAEX,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,qBAAa,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,WAAW,CACvE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAM7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,KAAK;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,SAAS;WAkBlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,KAAK,EACf,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAgBxC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAwCjD,OAAO,CAAC,gBAAgB;CAazB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AptosCCTPW7Executor = void 0;
|
|
4
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
5
|
+
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
6
|
+
const sdk_aptos_1 = require("@wormhole-foundation/sdk-aptos");
|
|
7
|
+
const consts_1 = require("../consts");
|
|
8
|
+
class AptosCCTPW7Executor {
|
|
9
|
+
network;
|
|
10
|
+
chain;
|
|
11
|
+
provider;
|
|
12
|
+
contracts;
|
|
13
|
+
usdcId;
|
|
14
|
+
shimContract;
|
|
15
|
+
constructor(network, chain, provider, contracts) {
|
|
16
|
+
this.network = network;
|
|
17
|
+
this.chain = chain;
|
|
18
|
+
this.provider = provider;
|
|
19
|
+
this.contracts = contracts;
|
|
20
|
+
if (network === "Devnet")
|
|
21
|
+
throw new Error("CCTPW7Executor not supported on Devnet");
|
|
22
|
+
const usdcId = sdk_connect_1.circle.usdcContract.get(this.network, this.chain);
|
|
23
|
+
if (!usdcId) {
|
|
24
|
+
throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);
|
|
25
|
+
}
|
|
26
|
+
this.usdcId = usdcId;
|
|
27
|
+
const shimContract = consts_1.shimContracts[network]?.[chain];
|
|
28
|
+
if (!shimContract)
|
|
29
|
+
throw new Error(`Shim contract for ${chain} not found`);
|
|
30
|
+
this.shimContract = shimContract;
|
|
31
|
+
}
|
|
32
|
+
static async fromRpc(provider, config) {
|
|
33
|
+
const [network, chain] = await sdk_aptos_1.AptosPlatform.chainFromRpc(provider);
|
|
34
|
+
const conf = config[chain];
|
|
35
|
+
if (!conf)
|
|
36
|
+
throw new Error(`No config found for ${chain}`);
|
|
37
|
+
if (conf.network !== network)
|
|
38
|
+
throw new Error(`Network mismatch: ${conf.network} != ${network}`);
|
|
39
|
+
return new AptosCCTPW7Executor(network, chain, provider, conf.contracts);
|
|
40
|
+
}
|
|
41
|
+
async *transfer(sender, recipient, details) {
|
|
42
|
+
const senderAddress = new sdk_aptos_1.AptosAddress(sender).unwrap();
|
|
43
|
+
const mintRecipient = ts_sdk_1.AccountAddress.from(recipient.address.toUniversalAddress().toUint8Array());
|
|
44
|
+
const burnToken = ts_sdk_1.AccountAddress.from(this.usdcId);
|
|
45
|
+
const amount = details.remainingAmount + details.referrerFee;
|
|
46
|
+
const destinationDomain = sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain);
|
|
47
|
+
const refundAddr = senderAddress;
|
|
48
|
+
const payee = senderAddress;
|
|
49
|
+
const functionArguments = [
|
|
50
|
+
amount,
|
|
51
|
+
destinationDomain,
|
|
52
|
+
mintRecipient.toString(),
|
|
53
|
+
burnToken.toString(),
|
|
54
|
+
details.estimatedCost,
|
|
55
|
+
(0, sdk_connect_1.toChainId)(recipient.chain),
|
|
56
|
+
refundAddr,
|
|
57
|
+
details.signedQuote,
|
|
58
|
+
details.relayInstructions,
|
|
59
|
+
details.referrerFeeDbps,
|
|
60
|
+
payee,
|
|
61
|
+
];
|
|
62
|
+
const tx = {
|
|
63
|
+
function: `${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,
|
|
64
|
+
functionArguments,
|
|
65
|
+
};
|
|
66
|
+
yield this.createUnsignedTx(tx, "AtposCCTPW7Executor.Transfer");
|
|
67
|
+
}
|
|
68
|
+
createUnsignedTx(txReq, description, parallelizable = false) {
|
|
69
|
+
return new sdk_aptos_1.AptosUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.AptosCCTPW7Executor = AptosCCTPW7Executor;
|
|
73
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/aptos/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/aptos/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
|
|
18
|
+
const sdk_aptos_1 = require("@wormhole-foundation/sdk-aptos");
|
|
19
|
+
const executor_1 = require("./executor");
|
|
20
|
+
__exportStar(require("./executor"), exports);
|
|
21
|
+
(0, sdk_definitions_1.registerProtocol)(sdk_aptos_1._platform, "CCTPW7Executor", executor_1.AptosCCTPW7Executor);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/aptos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwE;AACxE,8DAA2D;AAC3D,yCAAiD;AAEjD,6CAA2B;AAE3B,IAAA,kCAAgB,EAAC,qBAAS,EAAE,gBAAgB,EAAE,8BAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Chain, Network } from "@wormhole-foundation/sdk-connect";
|
|
2
|
+
export declare const apiBaseUrl: Partial<Record<Network, string>>;
|
|
3
|
+
export declare const shimContracts: Partial<Record<Network, Partial<Record<Chain, string>>>>;
|
|
4
|
+
export type SuiExecutorIds = {
|
|
5
|
+
executorId: string;
|
|
6
|
+
executorRequestsId: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const suiExecutorIds: Partial<Record<Network, SuiExecutorIds>>;
|
|
9
|
+
export declare const solanaExecutorId: Partial<Record<Network, string>>;
|
|
10
|
+
export declare const SOLANA_MSG_VALUE_BASE_FEE = 5001n;
|
|
11
|
+
export declare const gasLimits: Partial<Record<Network, Partial<Record<Chain, bigint>>>>;
|
|
12
|
+
export declare const referrers: Partial<Record<Network, Partial<Record<Chain, string>>>>;
|
|
13
|
+
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAElE,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAGvD,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,OAAO,CACjC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAoBhD,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC;AAChF,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAWnE,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAG7D,CAAC;AAGF,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAKhD,eAAO,MAAM,SAAS,EAAE,OAAO,CAC7B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAsBhD,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,OAAO,CAC7B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAsBhD,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.referrers = exports.gasLimits = exports.SOLANA_MSG_VALUE_BASE_FEE = exports.solanaExecutorId = exports.suiExecutorIds = exports.shimContracts = exports.apiBaseUrl = void 0;
|
|
4
|
+
exports.apiBaseUrl = {
|
|
5
|
+
Testnet: "https://executor-testnet.labsapis.com",
|
|
6
|
+
Mainnet: "https://executor.labsapis.com",
|
|
7
|
+
};
|
|
8
|
+
// Shim Contract Addresses (e.g. CCTPv1WithExecutor.sol)
|
|
9
|
+
exports.shimContracts = {
|
|
10
|
+
Testnet: {
|
|
11
|
+
Aptos: "0x14a12d1fd6ef371b70c2113155534ec152ec7f779e281b54866c796c9a4a58d3",
|
|
12
|
+
Avalanche: "0x2cfEC91B50f657Cc86Ec693542527ac3e03bF742",
|
|
13
|
+
BaseSepolia: "0x4983C6bD3bB7DA9EECe71cfa7AE4C67CAbf362F0",
|
|
14
|
+
Sepolia: "0x0F78904c750801391EbBf308181e9d6fc892B0f3",
|
|
15
|
+
Solana: "CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs",
|
|
16
|
+
},
|
|
17
|
+
Mainnet: {
|
|
18
|
+
Aptos: "0x9f5ad7d5c2d067ca4abb6d8d6aba44c15596b71a1def8eb4596089b527bb2eb1",
|
|
19
|
+
Arbitrum: "0x55Dd4466BFec29527C54A72fd306efb54e5F7027",
|
|
20
|
+
Avalanche: "0xd331819478b74d8a7B8EA631118B4a4e50F6EbD1",
|
|
21
|
+
Base: "0x08FEB1838C3d7F8509DA1EBb9a11a94c1f006cb2",
|
|
22
|
+
Ethereum: "0xeEFb36c4458dA7798742cf038C5c27E07aB9c51E",
|
|
23
|
+
Optimism: "0xBC6f9d1CBa49DB365728478cefa02F6743617637",
|
|
24
|
+
Polygon: "0x007995f2AEcfBC745f20a7AE8D3a02c0EbF46264",
|
|
25
|
+
Unichain: "0xA7aBDb8f2108901c586543BD5e10E4fA263F4A47",
|
|
26
|
+
Solana: "CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs",
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
exports.suiExecutorIds = {
|
|
30
|
+
Testnet: {
|
|
31
|
+
executorId: "0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",
|
|
32
|
+
executorRequestsId: "0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8",
|
|
33
|
+
},
|
|
34
|
+
Mainnet: {
|
|
35
|
+
executorId: "0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",
|
|
36
|
+
executorRequestsId: "0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7 ",
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
// Solana Executor Program IDs
|
|
40
|
+
exports.solanaExecutorId = {
|
|
41
|
+
Testnet: "execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",
|
|
42
|
+
Mainnet: "execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"
|
|
43
|
+
};
|
|
44
|
+
// cost of 1 signature + rounding error on priority fee
|
|
45
|
+
exports.SOLANA_MSG_VALUE_BASE_FEE = 5001n;
|
|
46
|
+
// Gas limits must be high enough to cover the worst-case scenario for each chain
|
|
47
|
+
// to avoid relay failures. However, they should not be too high to reduce the
|
|
48
|
+
// `estimatedCost` returned by the quote endpoint.
|
|
49
|
+
exports.gasLimits = {
|
|
50
|
+
Testnet: {
|
|
51
|
+
Aptos: 5000n,
|
|
52
|
+
Avalanche: 200000n,
|
|
53
|
+
BaseSepolia: 200000n,
|
|
54
|
+
Sepolia: 200000n,
|
|
55
|
+
Solana: 250000n,
|
|
56
|
+
Sui: 8000000n,
|
|
57
|
+
},
|
|
58
|
+
Mainnet: {
|
|
59
|
+
Aptos: 5000n,
|
|
60
|
+
Arbitrum: 200000n,
|
|
61
|
+
Avalanche: 200000n,
|
|
62
|
+
Base: 200000n,
|
|
63
|
+
Ethereum: 200000n,
|
|
64
|
+
Optimism: 200000n,
|
|
65
|
+
Polygon: 200000n,
|
|
66
|
+
Unichain: 200000n,
|
|
67
|
+
Solana: 250000n,
|
|
68
|
+
Sui: 8000000n,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
// Referrer addresses (to whom the referrer fee should be paid)
|
|
72
|
+
exports.referrers = {
|
|
73
|
+
Testnet: {
|
|
74
|
+
Aptos: "0x23b54f6e29bba7f4123d088f4cfcd83f5e23a049de15895b119ce5a6cb5faa91",
|
|
75
|
+
Avalanche: "0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",
|
|
76
|
+
BaseSepolia: "0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",
|
|
77
|
+
Sepolia: "0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",
|
|
78
|
+
Solana: "9r6q2iEg4MBevjC8reaLmQUDxueF3vabUoqDkZ2LoAYe",
|
|
79
|
+
Sui: "0x30bd9b3d5ad00f38fd0c314139ba47ccb3c78353d99880d81125ca0c370b415e",
|
|
80
|
+
},
|
|
81
|
+
Mainnet: {
|
|
82
|
+
Aptos: "0x1f177e724a874ab6267172a3049291c480fc665883e6a3ac95d0909492c09dc8",
|
|
83
|
+
Solana: "JB3rmygUVuVZzgkxvMdV8mSKLJeQAkSXEK284Dqsziah",
|
|
84
|
+
Sui: "0xbfa1240e48c622d97881473953be730091161b7931d89bd6afe667841cf69ef4",
|
|
85
|
+
Arbitrum: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
|
|
86
|
+
Avalanche: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
|
|
87
|
+
Base: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
|
|
88
|
+
Ethereum: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
|
|
89
|
+
Optimism: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
|
|
90
|
+
Polygon: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
|
|
91
|
+
Unichain: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAqC;IAC1D,OAAO,EAAE,uCAAuC;IAChD,OAAO,EAAE,+BAA+B;CACzC,CAAC;AAEF,wDAAwD;AAC3C,QAAA,aAAa,GAEtB;IACF,OAAO,EAAE;QACP,KAAK,EAAE,oEAAoE;QAC3E,SAAS,EAAE,4CAA4C;QACvD,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,4CAA4C;QACrD,MAAM,EAAE,8CAA8C;KACvD;IACD,OAAO,EAAC;QACN,KAAK,EAAE,oEAAoE;QAC3E,QAAQ,EAAE,4CAA4C;QACtD,SAAS,EAAE,4CAA4C;QACvD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,4CAA4C;QACtD,QAAQ,EAAE,4CAA4C;QACtD,OAAO,EAAC,4CAA4C;QACpD,QAAQ,EAAE,4CAA4C;QACtD,MAAM,EAAE,8CAA8C;KACvD;CACF,CAAC;AAIW,QAAA,cAAc,GAA6C;IACtE,OAAO,EAAE;QACP,UAAU,EACR,oEAAoE;QACtE,kBAAkB,EAChB,oEAAoE;KACvE;IACD,OAAO,EAAE;QACP,UAAU,EAAE,oEAAoE;QAChF,kBAAkB,EAAE,qEAAqE;KAC1F;CACF,CAAC;AAEF,8BAA8B;AACjB,QAAA,gBAAgB,GAAqC;IAChE,OAAO,EAAE,6CAA6C;IACtD,OAAO,EAAE,6CAA6C;CACvD,CAAC;AAEF,uDAAuD;AAC1C,QAAA,yBAAyB,GAAG,KAAM,CAAC;AAEhD,iFAAiF;AACjF,8EAA8E;AAC9E,kDAAkD;AACrC,QAAA,SAAS,GAElB;IACF,OAAO,EAAE;QACP,KAAK,EAAE,KAAM;QACb,SAAS,EAAE,OAAQ;QACnB,WAAW,EAAE,OAAQ;QACrB,OAAO,EAAE,OAAQ;QACjB,MAAM,EAAE,OAAQ;QAChB,GAAG,EAAE,QAAU;KAChB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,KAAM;QACb,QAAQ,EAAE,OAAQ;QAClB,SAAS,EAAE,OAAQ;QACnB,IAAI,EAAE,OAAQ;QACd,QAAQ,EAAE,OAAQ;QAClB,QAAQ,EAAE,OAAQ;QAClB,OAAO,EAAE,OAAQ;QACjB,QAAQ,EAAE,OAAQ;QAClB,MAAM,EAAE,OAAQ;QAChB,GAAG,EAAE,QAAU;KAChB;CACF,CAAC;AAEF,+DAA+D;AAClD,QAAA,SAAS,GAElB;IACF,OAAO,EAAE;QACP,KAAK,EAAE,oEAAoE;QAC3E,SAAS,EAAE,4CAA4C;QACvD,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,4CAA4C;QACrD,MAAM,EAAE,8CAA8C;QACtD,GAAG,EAAE,oEAAoE;KAC1E;IACD,OAAO,EAAC;QACN,KAAK,EAAE,oEAAoE;QAC3E,MAAM,EAAC,8CAA8C;QACrD,GAAG,EAAE,oEAAoE;QACzE,QAAQ,EAAE,4CAA4C;QACtD,SAAS,EAAE,4CAA4C;QACvD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,4CAA4C;QACtD,QAAQ,EAAE,4CAA4C;QACtD,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,4CAA4C;KACvD;CACF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AccountAddress, ChainAddress, ChainsConfig, Contracts, Network, Platform } from "@wormhole-foundation/sdk-connect";
|
|
2
|
+
import type { EvmChains } from "@wormhole-foundation/sdk-evm";
|
|
3
|
+
import { EvmUnsignedTransaction } from "@wormhole-foundation/sdk-evm";
|
|
4
|
+
import type { Provider } from "ethers";
|
|
5
|
+
import { CCTPW7Executor } from "../types";
|
|
6
|
+
import { QuoteDetails } from "..";
|
|
7
|
+
export declare class EvmCCTPW7Executor<N extends Network, C extends EvmChains> implements CCTPW7Executor<N, C> {
|
|
8
|
+
readonly network: N;
|
|
9
|
+
readonly chain: C;
|
|
10
|
+
readonly provider: Provider;
|
|
11
|
+
readonly contracts: Contracts;
|
|
12
|
+
readonly chainId: bigint;
|
|
13
|
+
readonly shimContract: string;
|
|
14
|
+
constructor(network: N, chain: C, provider: Provider, contracts: Contracts);
|
|
15
|
+
static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, Platform>): Promise<EvmCCTPW7Executor<N, EvmChains>>;
|
|
16
|
+
transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<EvmUnsignedTransaction<N, C>>;
|
|
17
|
+
private createUnsignedTx;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACnE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAM7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAelB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQpC,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;IA+D/C,OAAO,CAAC,gBAAgB;CAazB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EvmCCTPW7Executor = void 0;
|
|
4
|
+
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
5
|
+
const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
|
|
6
|
+
const ethers_1 = require("ethers");
|
|
7
|
+
const consts_1 = require("../consts");
|
|
8
|
+
class EvmCCTPW7Executor {
|
|
9
|
+
network;
|
|
10
|
+
chain;
|
|
11
|
+
provider;
|
|
12
|
+
contracts;
|
|
13
|
+
chainId;
|
|
14
|
+
shimContract;
|
|
15
|
+
constructor(network, chain, provider, contracts) {
|
|
16
|
+
this.network = network;
|
|
17
|
+
this.chain = chain;
|
|
18
|
+
this.provider = provider;
|
|
19
|
+
this.contracts = contracts;
|
|
20
|
+
if (network === "Devnet")
|
|
21
|
+
throw new Error("CCTPW7Executor not supported on Devnet");
|
|
22
|
+
this.chainId = sdk_connect_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
|
|
23
|
+
const shimContract = consts_1.shimContracts[network]?.[chain];
|
|
24
|
+
if (!shimContract)
|
|
25
|
+
throw new Error(`Shim contract for ${chain} not found`);
|
|
26
|
+
this.shimContract = shimContract;
|
|
27
|
+
}
|
|
28
|
+
static async fromRpc(provider, config) {
|
|
29
|
+
const [network, chain] = await sdk_evm_1.EvmPlatform.chainFromRpc(provider);
|
|
30
|
+
const conf = config[chain];
|
|
31
|
+
if (conf.network !== network)
|
|
32
|
+
throw new Error(`Network mismatch: ${conf.network} != ${network}`);
|
|
33
|
+
return new EvmCCTPW7Executor(network, chain, provider, conf.contracts);
|
|
34
|
+
}
|
|
35
|
+
async *transfer(sender, recipient, details) {
|
|
36
|
+
const senderAddress = new sdk_evm_1.EvmAddress(sender).toString();
|
|
37
|
+
const recipientAddress = recipient.address
|
|
38
|
+
.toUniversalAddress()
|
|
39
|
+
.toUint8Array();
|
|
40
|
+
const amount = details.remainingAmount + details.referrerFee;
|
|
41
|
+
const tokenAddr = sdk_connect_1.circle.usdcContract.get(this.network, this.chain);
|
|
42
|
+
const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, tokenAddr);
|
|
43
|
+
const allowance = await tokenContract.allowance(senderAddress, this.shimContract);
|
|
44
|
+
if (allowance < amount) {
|
|
45
|
+
const txReq = await tokenContract.approve.populateTransaction(this.shimContract, amount);
|
|
46
|
+
yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddress), "ERC20.approve of EvmCCTPW7Executor", false);
|
|
47
|
+
}
|
|
48
|
+
// TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. use viem?
|
|
49
|
+
const shimAbi = [
|
|
50
|
+
"function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)",
|
|
51
|
+
];
|
|
52
|
+
const shim = new ethers_1.Contract(this.shimContract, shimAbi, this.provider);
|
|
53
|
+
const txReq = await shim.getFunction("depositForBurn").populateTransaction(amount, (0, sdk_connect_1.toChainId)(recipient.chain), sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain), recipientAddress, tokenAddr, {
|
|
54
|
+
refundAddress: senderAddress,
|
|
55
|
+
signedQuote: details.signedQuote,
|
|
56
|
+
instructions: details.relayInstructions,
|
|
57
|
+
}, {
|
|
58
|
+
dbps: details.referrerFeeDbps,
|
|
59
|
+
payee: details.referrer.address.toString(),
|
|
60
|
+
});
|
|
61
|
+
txReq.value = details.estimatedCost;
|
|
62
|
+
yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddress), "EvmCCTPW7Executor.depositForBurn");
|
|
63
|
+
}
|
|
64
|
+
createUnsignedTx(txReq, description, parallelizable = false) {
|
|
65
|
+
return new sdk_evm_1.EvmUnsignedTransaction((0, sdk_evm_1.addChainId)(txReq, this.chainId), this.network, this.chain, description, parallelizable);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.EvmCCTPW7Executor = EvmCCTPW7Executor;
|
|
69
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/evm/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
|
|
18
|
+
const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
|
|
19
|
+
const executor_1 = require("./executor");
|
|
20
|
+
__exportStar(require("./executor"), exports);
|
|
21
|
+
(0, sdk_definitions_1.registerProtocol)(sdk_evm_1._platform, "CCTPW7Executor", executor_1.EvmCCTPW7Executor);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/evm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwE;AACxE,0DAAyD;AACzD,yCAA+C;AAE/C,6CAA2B;AAE3B,IAAA,kCAAgB,EAAC,mBAAS,EAAE,gBAAgB,EAAE,4BAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { Chain, Network } from "@wormhole-foundation/sdk-base";
|
|
2
|
+
import { amount } from "@wormhole-foundation/sdk-base";
|
|
3
|
+
import { EmptyPlatformMap, type ChainAddress, type ChainContext, type Signer, type TokenId } from "@wormhole-foundation/sdk-definitions";
|
|
4
|
+
import { routes, Wormhole } from "@wormhole-foundation/sdk-connect";
|
|
5
|
+
import { CCTPW7Executor } from "./types";
|
|
6
|
+
import "./aptos/index.js";
|
|
7
|
+
import "./evm/index.js";
|
|
8
|
+
import "./sui/index.js";
|
|
9
|
+
import "./svm/index.js";
|
|
10
|
+
export declare namespace CCTPW7ExecutorRoute {
|
|
11
|
+
type Options = {
|
|
12
|
+
nativeGas?: number;
|
|
13
|
+
};
|
|
14
|
+
type NormalizedParams = {
|
|
15
|
+
amount: amount.Amount;
|
|
16
|
+
};
|
|
17
|
+
interface ValidatedParams extends routes.ValidatedTransferParams<Options> {
|
|
18
|
+
normalizedParams: NormalizedParams;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
type Op = CCTPW7ExecutorRoute.Options;
|
|
22
|
+
type Vp = CCTPW7ExecutorRoute.ValidatedParams;
|
|
23
|
+
type Tp = routes.TransferParams<Op>;
|
|
24
|
+
type Vr = routes.ValidationResult<Op>;
|
|
25
|
+
export type QuoteDetails = {
|
|
26
|
+
signedQuote: Uint8Array;
|
|
27
|
+
relayInstructions: Uint8Array;
|
|
28
|
+
estimatedCost: bigint;
|
|
29
|
+
referrer: ChainAddress;
|
|
30
|
+
referrerFee: bigint;
|
|
31
|
+
remainingAmount: bigint;
|
|
32
|
+
referrerFeeDbps: bigint;
|
|
33
|
+
};
|
|
34
|
+
type Q = routes.Quote<Op, Vp, QuoteDetails>;
|
|
35
|
+
type QR = routes.QuoteResult<Op, Vp>;
|
|
36
|
+
type AT = {
|
|
37
|
+
id: string;
|
|
38
|
+
attestation: {};
|
|
39
|
+
};
|
|
40
|
+
type R = routes.Receipt<AT>;
|
|
41
|
+
export declare namespace CCTPW7ExecutorRoute {
|
|
42
|
+
type Config = {
|
|
43
|
+
referrerFeeDbps: bigint;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export declare function cctpW7ExecutorRoute(config: CCTPW7ExecutorRoute.Config): {
|
|
47
|
+
new <N extends Network>(wh: Wormhole<N>): {
|
|
48
|
+
readonly staticConfig: any;
|
|
49
|
+
getDefaultOptions(): Op;
|
|
50
|
+
validate(request: routes.RouteTransferRequest<N>, params: Tp): Promise<Vr>;
|
|
51
|
+
quote(request: routes.RouteTransferRequest<N>, params: Vp): Promise<QR>;
|
|
52
|
+
initiate(request: routes.RouteTransferRequest<N>, signer: Signer, quote: Q, to: ChainAddress): Promise<R>;
|
|
53
|
+
track(receipt: R, timeout?: number): AsyncGenerator<import("@wormhole-foundation/sdk-connect").SourceInitiatedTransferReceipt<"Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").FailedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").SourceFinalizedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").AttestedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").CompletedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia">, R, unknown>;
|
|
54
|
+
wh: Wormhole<N>;
|
|
55
|
+
transferUrl(txid: string): string;
|
|
56
|
+
};
|
|
57
|
+
config: CCTPW7ExecutorRoute.Config;
|
|
58
|
+
NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
|
|
59
|
+
meta: {
|
|
60
|
+
name: string;
|
|
61
|
+
provider: string;
|
|
62
|
+
};
|
|
63
|
+
supportedNetworks(): Network[];
|
|
64
|
+
supportedChains(network: Network): Chain[];
|
|
65
|
+
supportedDestinationTokens<N extends Network>(sourceToken: TokenId, fromChain: ChainContext<N>, toChain: ChainContext<N>): Promise<TokenId[]>;
|
|
66
|
+
IS_AUTOMATIC: boolean;
|
|
67
|
+
};
|
|
68
|
+
export declare class CCTPW7ExecutorRoute<N extends Network> extends routes.AutomaticRoute<N, Op, Vp, R> implements routes.StaticRouteMethods<typeof CCTPW7ExecutorRoute> {
|
|
69
|
+
static NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
|
|
70
|
+
readonly staticConfig: any;
|
|
71
|
+
static config: CCTPW7ExecutorRoute.Config;
|
|
72
|
+
static meta: {
|
|
73
|
+
name: string;
|
|
74
|
+
provider: string;
|
|
75
|
+
};
|
|
76
|
+
static supportedNetworks(): Network[];
|
|
77
|
+
static supportedChains(network: Network): Chain[];
|
|
78
|
+
static supportedDestinationTokens<N extends Network>(sourceToken: TokenId, fromChain: ChainContext<N>, toChain: ChainContext<N>): Promise<TokenId[]>;
|
|
79
|
+
getDefaultOptions(): Op;
|
|
80
|
+
validate(request: routes.RouteTransferRequest<N>, params: Tp): Promise<Vr>;
|
|
81
|
+
quote(request: routes.RouteTransferRequest<N>, params: Vp): Promise<QR>;
|
|
82
|
+
initiate(request: routes.RouteTransferRequest<N>, signer: Signer, quote: Q, to: ChainAddress): Promise<R>;
|
|
83
|
+
track(receipt: R, timeout?: number): AsyncGenerator<import("@wormhole-foundation/sdk-connect").SourceInitiatedTransferReceipt<"Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").FailedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").SourceFinalizedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").AttestedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").CompletedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia">, R, unknown>;
|
|
84
|
+
}
|
|
85
|
+
declare module "@wormhole-foundation/sdk-definitions" {
|
|
86
|
+
namespace WormholeRegistry {
|
|
87
|
+
interface ProtocolToInterfaceMapping<N, C> {
|
|
88
|
+
CCTPW7Executor: CCTPW7Executor<N, C>;
|
|
89
|
+
}
|
|
90
|
+
interface ProtocolToPlatformMapping {
|
|
91
|
+
CCTPW7Executor: EmptyPlatformMap<"CCTPW7Executor">;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|