@wormhole-foundation/sdk-evm-ntt 6.2.0 → 7.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/ntt.d.ts +0 -5
- package/dist/esm/ntt.d.ts.map +1 -1
- package/dist/esm/ntt.js +3 -43
- package/dist/esm/ntt.js.map +1 -1
- package/package.json +14 -21
- package/dist/cjs/bindings.d.ts +0 -58
- package/dist/cjs/bindings.d.ts.map +0 -1
- package/dist/cjs/bindings.js +0 -25
- package/dist/cjs/bindings.js.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/NttManager.d.ts +0 -871
- package/dist/cjs/ethers-contracts/0_1_0/NttManager.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/NttManager.js +0 -3
- package/dist/cjs/ethers-contracts/0_1_0/NttManager.js.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/WormholeTransceiver.d.ts +0 -619
- package/dist/cjs/ethers-contracts/0_1_0/WormholeTransceiver.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/WormholeTransceiver.js +0 -3
- package/dist/cjs/ethers-contracts/0_1_0/WormholeTransceiver.js.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/common.d.ts +0 -51
- package/dist/cjs/ethers-contracts/0_1_0/common.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/common.js +0 -3
- package/dist/cjs/ethers-contracts/0_1_0/common.js.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/factories/NttManager__factory.d.ts +0 -1414
- package/dist/cjs/ethers-contracts/0_1_0/factories/NttManager__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/factories/NttManager__factory.js +0 -1858
- package/dist/cjs/ethers-contracts/0_1_0/factories/NttManager__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/factories/WormholeTransceiver__factory.d.ts +0 -981
- package/dist/cjs/ethers-contracts/0_1_0/factories/WormholeTransceiver__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/factories/WormholeTransceiver__factory.js +0 -1296
- package/dist/cjs/ethers-contracts/0_1_0/factories/WormholeTransceiver__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/factories/index.d.ts +0 -3
- package/dist/cjs/ethers-contracts/0_1_0/factories/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/factories/index.js +0 -11
- package/dist/cjs/ethers-contracts/0_1_0/factories/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/index.d.ts +0 -6
- package/dist/cjs/ethers-contracts/0_1_0/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/0_1_0/index.js +0 -42
- package/dist/cjs/ethers-contracts/0_1_0/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/NttManager.d.ts +0 -897
- package/dist/cjs/ethers-contracts/1_0_0/NttManager.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/NttManager.js +0 -3
- package/dist/cjs/ethers-contracts/1_0_0/NttManager.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/WormholeTransceiver.d.ts +0 -619
- package/dist/cjs/ethers-contracts/1_0_0/WormholeTransceiver.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/WormholeTransceiver.js +0 -3
- package/dist/cjs/ethers-contracts/1_0_0/WormholeTransceiver.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/common.d.ts +0 -51
- package/dist/cjs/ethers-contracts/1_0_0/common.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/common.js +0 -3
- package/dist/cjs/ethers-contracts/1_0_0/common.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/factories/NttManager__factory.d.ts +0 -1449
- package/dist/cjs/ethers-contracts/1_0_0/factories/NttManager__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/factories/NttManager__factory.js +0 -1903
- package/dist/cjs/ethers-contracts/1_0_0/factories/NttManager__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/factories/WormholeTransceiver__factory.d.ts +0 -981
- package/dist/cjs/ethers-contracts/1_0_0/factories/WormholeTransceiver__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/factories/WormholeTransceiver__factory.js +0 -1296
- package/dist/cjs/ethers-contracts/1_0_0/factories/WormholeTransceiver__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/factories/index.d.ts +0 -3
- package/dist/cjs/ethers-contracts/1_0_0/factories/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/factories/index.js +0 -11
- package/dist/cjs/ethers-contracts/1_0_0/factories/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/index.d.ts +0 -6
- package/dist/cjs/ethers-contracts/1_0_0/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_0_0/index.js +0 -42
- package/dist/cjs/ethers-contracts/1_0_0/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/GmpManager.d.ts +0 -855
- package/dist/cjs/ethers-contracts/1_1_0/GmpManager.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/GmpManager.js +0 -3
- package/dist/cjs/ethers-contracts/1_1_0/GmpManager.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/MultiTokenNtt.d.ts +0 -829
- package/dist/cjs/ethers-contracts/1_1_0/MultiTokenNtt.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/MultiTokenNtt.js +0 -3
- package/dist/cjs/ethers-contracts/1_1_0/MultiTokenNtt.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/NttManager.d.ts +0 -897
- package/dist/cjs/ethers-contracts/1_1_0/NttManager.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/NttManager.js +0 -3
- package/dist/cjs/ethers-contracts/1_1_0/NttManager.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/WormholeTransceiver.d.ts +0 -623
- package/dist/cjs/ethers-contracts/1_1_0/WormholeTransceiver.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/WormholeTransceiver.js +0 -3
- package/dist/cjs/ethers-contracts/1_1_0/WormholeTransceiver.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/common.d.ts +0 -51
- package/dist/cjs/ethers-contracts/1_1_0/common.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/common.js +0 -3
- package/dist/cjs/ethers-contracts/1_1_0/common.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/GmpManager__factory.d.ts +0 -1301
- package/dist/cjs/ethers-contracts/1_1_0/factories/GmpManager__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/GmpManager__factory.js +0 -1704
- package/dist/cjs/ethers-contracts/1_1_0/factories/GmpManager__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.d.ts +0 -1374
- package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.js +0 -1808
- package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.d.ts +0 -1449
- package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.js +0 -1903
- package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/WormholeTransceiver__factory.d.ts +0 -991
- package/dist/cjs/ethers-contracts/1_1_0/factories/WormholeTransceiver__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/WormholeTransceiver__factory.js +0 -1309
- package/dist/cjs/ethers-contracts/1_1_0/factories/WormholeTransceiver__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/index.d.ts +0 -3
- package/dist/cjs/ethers-contracts/1_1_0/factories/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/factories/index.js +0 -11
- package/dist/cjs/ethers-contracts/1_1_0/factories/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/index.d.ts +0 -10
- package/dist/cjs/ethers-contracts/1_1_0/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_1_0/index.js +0 -46
- package/dist/cjs/ethers-contracts/1_1_0/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/NttManager.d.ts +0 -948
- package/dist/cjs/ethers-contracts/1_3_1/NttManager.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/NttManager.js +0 -3
- package/dist/cjs/ethers-contracts/1_3_1/NttManager.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/WormholeTransceiver.d.ts +0 -468
- package/dist/cjs/ethers-contracts/1_3_1/WormholeTransceiver.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/WormholeTransceiver.js +0 -3
- package/dist/cjs/ethers-contracts/1_3_1/WormholeTransceiver.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/common.d.ts +0 -51
- package/dist/cjs/ethers-contracts/1_3_1/common.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/common.js +0 -3
- package/dist/cjs/ethers-contracts/1_3_1/common.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/factories/NttManager__factory.d.ts +0 -1498
- package/dist/cjs/ethers-contracts/1_3_1/factories/NttManager__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/factories/NttManager__factory.js +0 -1965
- package/dist/cjs/ethers-contracts/1_3_1/factories/NttManager__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/factories/WormholeTransceiver__factory.d.ts +0 -792
- package/dist/cjs/ethers-contracts/1_3_1/factories/WormholeTransceiver__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/factories/WormholeTransceiver__factory.js +0 -1050
- package/dist/cjs/ethers-contracts/1_3_1/factories/WormholeTransceiver__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/factories/index.d.ts +0 -3
- package/dist/cjs/ethers-contracts/1_3_1/factories/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/factories/index.js +0 -11
- package/dist/cjs/ethers-contracts/1_3_1/factories/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/index.d.ts +0 -6
- package/dist/cjs/ethers-contracts/1_3_1/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/1_3_1/index.js +0 -42
- package/dist/cjs/ethers-contracts/1_3_1/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/NttManager.d.ts +0 -948
- package/dist/cjs/ethers-contracts/2_0_0/NttManager.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/NttManager.js +0 -3
- package/dist/cjs/ethers-contracts/2_0_0/NttManager.js.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/WormholeTransceiver.d.ts +0 -468
- package/dist/cjs/ethers-contracts/2_0_0/WormholeTransceiver.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/WormholeTransceiver.js +0 -3
- package/dist/cjs/ethers-contracts/2_0_0/WormholeTransceiver.js.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/common.d.ts +0 -51
- package/dist/cjs/ethers-contracts/2_0_0/common.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/common.js +0 -3
- package/dist/cjs/ethers-contracts/2_0_0/common.js.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/factories/NttManager__factory.d.ts +0 -1498
- package/dist/cjs/ethers-contracts/2_0_0/factories/NttManager__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/factories/NttManager__factory.js +0 -1965
- package/dist/cjs/ethers-contracts/2_0_0/factories/NttManager__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/factories/WormholeTransceiver__factory.d.ts +0 -792
- package/dist/cjs/ethers-contracts/2_0_0/factories/WormholeTransceiver__factory.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/factories/WormholeTransceiver__factory.js +0 -1050
- package/dist/cjs/ethers-contracts/2_0_0/factories/WormholeTransceiver__factory.js.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/factories/index.d.ts +0 -3
- package/dist/cjs/ethers-contracts/2_0_0/factories/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/factories/index.js +0 -11
- package/dist/cjs/ethers-contracts/2_0_0/factories/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/index.d.ts +0 -6
- package/dist/cjs/ethers-contracts/2_0_0/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/2_0_0/index.js +0 -42
- package/dist/cjs/ethers-contracts/2_0_0/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/index.d.ts +0 -47
- package/dist/cjs/ethers-contracts/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/index.js +0 -87
- package/dist/cjs/ethers-contracts/index.js.map +0 -1
- package/dist/cjs/ethers-contracts/multiTokenNtt/index.d.ts +0 -14
- package/dist/cjs/ethers-contracts/multiTokenNtt/index.d.ts.map +0 -1
- package/dist/cjs/ethers-contracts/multiTokenNtt/index.js +0 -50
- package/dist/cjs/ethers-contracts/multiTokenNtt/index.js.map +0 -1
- package/dist/cjs/executorGasLimits.d.ts +0 -5
- package/dist/cjs/executorGasLimits.d.ts.map +0 -1
- package/dist/cjs/executorGasLimits.js +0 -22
- package/dist/cjs/executorGasLimits.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -8
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -69
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/multiTokenNtt.d.ts +0 -58
- package/dist/cjs/multiTokenNtt.d.ts.map +0 -1
- package/dist/cjs/multiTokenNtt.js +0 -359
- package/dist/cjs/multiTokenNtt.js.map +0 -1
- package/dist/cjs/multiTokenNttBindings.d.ts +0 -44
- package/dist/cjs/multiTokenNttBindings.d.ts.map +0 -1
- package/dist/cjs/multiTokenNttBindings.js +0 -19
- package/dist/cjs/multiTokenNttBindings.js.map +0 -1
- package/dist/cjs/multiTokenNttWithExecutor.d.ts +0 -22
- package/dist/cjs/multiTokenNttWithExecutor.d.ts.map +0 -1
- package/dist/cjs/multiTokenNttWithExecutor.js +0 -122
- package/dist/cjs/multiTokenNttWithExecutor.js.map +0 -1
- package/dist/cjs/ntt.d.ts +0 -101
- package/dist/cjs/ntt.d.ts.map +0 -1
- package/dist/cjs/ntt.js +0 -503
- package/dist/cjs/ntt.js.map +0 -1
- package/dist/cjs/nttWithExecutor.d.ts +0 -37
- package/dist/cjs/nttWithExecutor.d.ts.map +0 -1
- package/dist/cjs/nttWithExecutor.js +0 -221
- package/dist/cjs/nttWithExecutor.js.map +0 -1
- package/dist/cjs/package.json +0 -1
|
@@ -1,359 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EvmMultiTokenNtt = void 0;
|
|
4
|
-
const sdk_base_1 = require("@wormhole-foundation/sdk-base");
|
|
5
|
-
const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
|
|
6
|
-
const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
|
|
7
|
-
require("@wormhole-foundation/sdk-evm-core");
|
|
8
|
-
const sdk_definitions_ntt_1 = require("@wormhole-foundation/sdk-definitions-ntt");
|
|
9
|
-
const ethers_1 = require("ethers");
|
|
10
|
-
const multiTokenNttBindings_js_1 = require("./multiTokenNttBindings.js");
|
|
11
|
-
const sdk_definitions_ntt_2 = require("@wormhole-foundation/sdk-definitions-ntt");
|
|
12
|
-
class EvmMultiTokenNtt {
|
|
13
|
-
network;
|
|
14
|
-
chain;
|
|
15
|
-
provider;
|
|
16
|
-
contracts;
|
|
17
|
-
version;
|
|
18
|
-
chainId;
|
|
19
|
-
managerAddress;
|
|
20
|
-
multiTokenNtt;
|
|
21
|
-
gmpManager;
|
|
22
|
-
abiBindings;
|
|
23
|
-
constructor(network, chain, provider, contracts, version = "1.1.0") {
|
|
24
|
-
this.network = network;
|
|
25
|
-
this.chain = chain;
|
|
26
|
-
this.provider = provider;
|
|
27
|
-
this.contracts = contracts;
|
|
28
|
-
this.version = version;
|
|
29
|
-
if (!contracts.multiTokenNtt)
|
|
30
|
-
throw new Error("No Ntt Contracts provided");
|
|
31
|
-
this.chainId = sdk_base_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
|
|
32
|
-
this.abiBindings = (0, multiTokenNttBindings_js_1.loadAbiVersion)(this.version);
|
|
33
|
-
this.managerAddress = contracts.multiTokenNtt.manager;
|
|
34
|
-
this.multiTokenNtt = this.abiBindings.MultiTokenNtt.connect(contracts.multiTokenNtt.manager, this.provider);
|
|
35
|
-
this.gmpManager = this.abiBindings.GmpManager.connect(contracts.multiTokenNtt.gmpManager, this.provider);
|
|
36
|
-
}
|
|
37
|
-
async isPaused() {
|
|
38
|
-
return await this.multiTokenNtt.isPaused();
|
|
39
|
-
}
|
|
40
|
-
async getIsExecuted(attestation) {
|
|
41
|
-
const isExecuted = await this.gmpManager.isMessageExecuted(sdk_definitions_ntt_1.MultiTokenNtt.messageDigest(attestation.emitterChain, attestation.payload.nttManagerPayload));
|
|
42
|
-
return isExecuted && !(await this.getIsTransferInboundQueued(attestation));
|
|
43
|
-
}
|
|
44
|
-
async getIsTransferInboundQueued(attestation) {
|
|
45
|
-
return ((await this.getInboundQueuedTransfer(attestation.emitterChain, attestation.payload.nttManagerPayload)) !== null);
|
|
46
|
-
}
|
|
47
|
-
async getIsApproved(attestation) {
|
|
48
|
-
return await this.gmpManager.isMessageApprovedForChain((0, sdk_base_1.toChainId)(attestation.emitterChain), sdk_definitions_ntt_1.MultiTokenNtt.messageDigest(attestation.emitterChain, attestation.payload.nttManagerPayload));
|
|
49
|
-
}
|
|
50
|
-
static async fromRpc(provider, config) {
|
|
51
|
-
const [network, chain] = await sdk_evm_1.EvmPlatform.chainFromRpc(provider);
|
|
52
|
-
const conf = config[chain];
|
|
53
|
-
if (conf.network !== network)
|
|
54
|
-
throw new Error(`Network mismatch: ${conf.network} != ${network}`);
|
|
55
|
-
const version = await EvmMultiTokenNtt.getVersion(provider, conf.contracts);
|
|
56
|
-
return new EvmMultiTokenNtt(network, chain, provider, conf.contracts, version);
|
|
57
|
-
}
|
|
58
|
-
static versionCache = new Map();
|
|
59
|
-
static async getVersion(provider, contracts) {
|
|
60
|
-
const multiTokenNtt = contracts.multiTokenNtt;
|
|
61
|
-
if (!multiTokenNtt) {
|
|
62
|
-
throw new Error("No multiTokenNtt contracts configured");
|
|
63
|
-
}
|
|
64
|
-
// Use cached version to save on RPC calls
|
|
65
|
-
const cacheKey = `${multiTokenNtt.chain}-${multiTokenNtt.manager}`;
|
|
66
|
-
const cached = EvmMultiTokenNtt.versionCache.get(cacheKey);
|
|
67
|
-
if (cached) {
|
|
68
|
-
return cached;
|
|
69
|
-
}
|
|
70
|
-
const contract = new ethers_1.ethers.Contract(multiTokenNtt.manager, ["function NTT_MANAGER_VERSION() public view returns (string)"], provider);
|
|
71
|
-
try {
|
|
72
|
-
const abiVersion = await contract
|
|
73
|
-
.getFunction("NTT_MANAGER_VERSION")
|
|
74
|
-
.staticCall();
|
|
75
|
-
if (!abiVersion) {
|
|
76
|
-
throw new Error("NTT_MANAGER_VERSION not found");
|
|
77
|
-
}
|
|
78
|
-
EvmMultiTokenNtt.versionCache.set(cacheKey, abiVersion);
|
|
79
|
-
return abiVersion;
|
|
80
|
-
}
|
|
81
|
-
catch (e) {
|
|
82
|
-
console.error(`Failed to get NTT_MANAGER_VERSION from contract ${contracts.multiTokenNtt?.manager}`);
|
|
83
|
-
throw e;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
async getSendTransceivers(destinationChain) {
|
|
87
|
-
const sendTransceivers = await this.gmpManager.getSendTransceiversWithIndicesForChain((0, sdk_base_1.toChainId)(destinationChain));
|
|
88
|
-
return await Promise.all(sendTransceivers.map(async (transceiver) => {
|
|
89
|
-
const type = await this.getTransceiverType(transceiver.transceiver);
|
|
90
|
-
return {
|
|
91
|
-
address: transceiver.transceiver,
|
|
92
|
-
index: Number(transceiver.index),
|
|
93
|
-
type,
|
|
94
|
-
};
|
|
95
|
-
}));
|
|
96
|
-
}
|
|
97
|
-
async getReceiveTransceivers(sourceChain) {
|
|
98
|
-
const receiveTransceivers = await this.gmpManager.getReceiveTransceiversWithIndicesForChain((0, sdk_base_1.toChainId)(sourceChain));
|
|
99
|
-
return await Promise.all(receiveTransceivers.map(async (transceiver) => {
|
|
100
|
-
const type = await this.getTransceiverType(transceiver.transceiver);
|
|
101
|
-
return {
|
|
102
|
-
address: transceiver.transceiver,
|
|
103
|
-
index: Number(transceiver.index),
|
|
104
|
-
type,
|
|
105
|
-
};
|
|
106
|
-
}));
|
|
107
|
-
}
|
|
108
|
-
async transceiverAttestedToMessage(fromChain, transceiverMessage, index) {
|
|
109
|
-
return await this.gmpManager.transceiverAttestedToMessage(sdk_definitions_ntt_1.MultiTokenNtt.messageDigest(fromChain, transceiverMessage), index);
|
|
110
|
-
}
|
|
111
|
-
async getTransceiverType(transceiverAddress) {
|
|
112
|
-
const transceiverInterface = new ethers_1.Interface([
|
|
113
|
-
"function getTransceiverType() external view returns (string memory)",
|
|
114
|
-
]);
|
|
115
|
-
const transceiverContract = new ethers_1.Contract(transceiverAddress, transceiverInterface, this.provider);
|
|
116
|
-
return await transceiverContract
|
|
117
|
-
.getFunction("getTransceiverType")
|
|
118
|
-
.staticCall();
|
|
119
|
-
}
|
|
120
|
-
async createTransceiverInstructions(dstChain, gasLimit, axelarGasMultiplier = "auto") {
|
|
121
|
-
const sendTransceivers = await this.getSendTransceivers(dstChain);
|
|
122
|
-
const instructions = await Promise.all(sendTransceivers.map(async (transceiver) => {
|
|
123
|
-
switch (transceiver.type.toLowerCase()) {
|
|
124
|
-
case "wormhole":
|
|
125
|
-
return {
|
|
126
|
-
index: transceiver.index,
|
|
127
|
-
payload: new Uint8Array([1]), // disable standard relayer, use executor route for automatic relay
|
|
128
|
-
};
|
|
129
|
-
case "axelar": {
|
|
130
|
-
const gasFee = await (0, sdk_definitions_ntt_2.getAxelarGasFee)(this.network, this.chain, dstChain, gasLimit, axelarGasMultiplier);
|
|
131
|
-
return {
|
|
132
|
-
index: transceiver.index,
|
|
133
|
-
payload: sdk_base_1.encoding.bignum.toBytes(gasFee, 32),
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
default:
|
|
137
|
-
throw new Error(`Unsupported transceiver type: ${transceiver.type} at index ${transceiver.index}`);
|
|
138
|
-
}
|
|
139
|
-
}));
|
|
140
|
-
// The contract requires the instructions to be sorted by transceiver index in ascending order.
|
|
141
|
-
instructions.sort((a, b) => a.index - b.index);
|
|
142
|
-
return instructions;
|
|
143
|
-
}
|
|
144
|
-
async quoteDeliveryPrice(dstChain, instructions) {
|
|
145
|
-
const [, totalPrice] = await this.gmpManager.quoteDeliveryPrice((0, sdk_base_1.toChainId)(dstChain), sdk_definitions_ntt_1.Ntt.encodeTransceiverInstructions(instructions));
|
|
146
|
-
return totalPrice;
|
|
147
|
-
}
|
|
148
|
-
async *transfer(sender, token, amount, destination, destinationGasLimit, axelarGasMultiplier = "auto") {
|
|
149
|
-
const senderAddress = new sdk_evm_1.EvmAddress(sender).toString();
|
|
150
|
-
const transceiverInstructions = await this.createTransceiverInstructions(destination.chain, destinationGasLimit, axelarGasMultiplier);
|
|
151
|
-
const totalPrice = await this.quoteDeliveryPrice(destination.chain, transceiverInstructions);
|
|
152
|
-
const receiver = (0, sdk_definitions_1.universalAddress)(destination);
|
|
153
|
-
let transferTx;
|
|
154
|
-
if ((0, sdk_definitions_1.isNative)(token)) {
|
|
155
|
-
const gasTokenTransferArgs = {
|
|
156
|
-
amount,
|
|
157
|
-
recipientChain: (0, sdk_base_1.toChainId)(destination.chain),
|
|
158
|
-
recipient: receiver,
|
|
159
|
-
refundAddress: receiver,
|
|
160
|
-
shouldQueue: false,
|
|
161
|
-
transceiverInstructions: sdk_definitions_ntt_1.Ntt.encodeTransceiverInstructions(transceiverInstructions),
|
|
162
|
-
additionalPayload: "0x",
|
|
163
|
-
};
|
|
164
|
-
transferTx =
|
|
165
|
-
await this.multiTokenNtt.wrapAndTransferGasToken.populateTransaction(gasTokenTransferArgs, { value: amount + totalPrice });
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, token.toString());
|
|
169
|
-
const allowance = await tokenContract.allowance(senderAddress, this.managerAddress);
|
|
170
|
-
if (allowance < amount) {
|
|
171
|
-
const approveTx = await tokenContract.approve.populateTransaction(this.managerAddress, amount);
|
|
172
|
-
yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(approveTx, senderAddress), "Ntt.Approve");
|
|
173
|
-
}
|
|
174
|
-
const transferArgs = {
|
|
175
|
-
token: token.toString(),
|
|
176
|
-
amount,
|
|
177
|
-
recipientChain: (0, sdk_base_1.toChainId)(destination.chain),
|
|
178
|
-
recipient: receiver,
|
|
179
|
-
refundAddress: receiver,
|
|
180
|
-
shouldQueue: false,
|
|
181
|
-
transceiverInstructions: sdk_definitions_ntt_1.Ntt.encodeTransceiverInstructions(transceiverInstructions),
|
|
182
|
-
additionalPayload: "0x",
|
|
183
|
-
};
|
|
184
|
-
transferTx = await this.multiTokenNtt.transfer.populateTransaction(transferArgs, { value: totalPrice });
|
|
185
|
-
}
|
|
186
|
-
yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(transferTx, senderAddress), "Ntt.transfer");
|
|
187
|
-
}
|
|
188
|
-
async *redeem(attestation) {
|
|
189
|
-
const transceivers = await this.getReceiveTransceivers(attestation.emitterChain);
|
|
190
|
-
const wormholeTransceiver = transceivers.find((t) => t.type === "wormhole");
|
|
191
|
-
if (!wormholeTransceiver) {
|
|
192
|
-
throw new Error("No Wormhole transceiver registered for this chain");
|
|
193
|
-
}
|
|
194
|
-
const transceiver = this.abiBindings.NttTransceiver.connect(wormholeTransceiver.address, this.provider);
|
|
195
|
-
const tx = await transceiver.receiveMessage.populateTransaction((0, sdk_definitions_1.serialize)(attestation));
|
|
196
|
-
yield this.createUnsignedTx(tx, "NttTransceiver.receiveMessage");
|
|
197
|
-
}
|
|
198
|
-
async getTokenMeta(token) {
|
|
199
|
-
const tokenAddress = token.address.toString();
|
|
200
|
-
const tokenImpl = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, tokenAddress);
|
|
201
|
-
const getDecimals = sdk_evm_1.EvmPlatform.getDecimals(this.network, this.chain, this.provider, tokenAddress);
|
|
202
|
-
const [name, symbol, decimals] = await Promise.all([
|
|
203
|
-
tokenImpl.name(),
|
|
204
|
-
tokenImpl.symbol(),
|
|
205
|
-
getDecimals,
|
|
206
|
-
]);
|
|
207
|
-
return { name, symbol, decimals };
|
|
208
|
-
}
|
|
209
|
-
async getCurrentOutboundCapacity(localToken) {
|
|
210
|
-
const { chain, address } = await this.getOriginalToken(localToken);
|
|
211
|
-
return await this.multiTokenNtt.getCurrentOutboundCapacity({
|
|
212
|
-
chainId: (0, sdk_base_1.toChainId)(chain),
|
|
213
|
-
tokenAddress: address.toUint8Array(),
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
async getOutboundLimit(localToken) {
|
|
217
|
-
const { chain, address } = await this.getOriginalToken(localToken);
|
|
218
|
-
const encoded = (await this.multiTokenNtt.getOutboundLimitParams({
|
|
219
|
-
chainId: (0, sdk_base_1.toChainId)(chain),
|
|
220
|
-
tokenAddress: address.toUint8Array(),
|
|
221
|
-
})).limit;
|
|
222
|
-
const trimmedAmount = (0, sdk_definitions_ntt_1.decodeTrimmedAmount)(encoded);
|
|
223
|
-
const tokenMeta = await this.getTokenMeta(localToken);
|
|
224
|
-
return (0, sdk_definitions_ntt_1.untrim)(trimmedAmount, tokenMeta.decimals);
|
|
225
|
-
}
|
|
226
|
-
async getCurrentInboundCapacity(originalToken, fromChain) {
|
|
227
|
-
return await this.multiTokenNtt.getCurrentInboundCapacity({
|
|
228
|
-
chainId: (0, sdk_base_1.toChainId)(originalToken.chain),
|
|
229
|
-
tokenAddress: originalToken.address.toUint8Array(),
|
|
230
|
-
}, (0, sdk_base_1.toChainId)(fromChain));
|
|
231
|
-
}
|
|
232
|
-
async getInboundLimit(originalToken, fromChain) {
|
|
233
|
-
const localToken = await this.getLocalToken(originalToken);
|
|
234
|
-
if (localToken === null)
|
|
235
|
-
return null; // Token not yet created
|
|
236
|
-
const encoded = (await this.multiTokenNtt.getInboundLimitParams({
|
|
237
|
-
chainId: (0, sdk_base_1.toChainId)(originalToken.chain),
|
|
238
|
-
tokenAddress: originalToken.address.toUint8Array(),
|
|
239
|
-
}, (0, sdk_base_1.toChainId)(fromChain))).limit;
|
|
240
|
-
const trimmedAmount = (0, sdk_definitions_ntt_1.decodeTrimmedAmount)(encoded);
|
|
241
|
-
if (trimmedAmount.amount === 0n && trimmedAmount.decimals === 0)
|
|
242
|
-
return null;
|
|
243
|
-
const tokenMeta = await this.getTokenMeta(localToken);
|
|
244
|
-
return (0, sdk_definitions_ntt_1.untrim)(trimmedAmount, tokenMeta.decimals);
|
|
245
|
-
}
|
|
246
|
-
async getRateLimitDuration() {
|
|
247
|
-
return await this.multiTokenNtt.rateLimitDuration();
|
|
248
|
-
}
|
|
249
|
-
async getInboundQueuedTransfer(fromChain, transceiverMessage) {
|
|
250
|
-
const digest = sdk_definitions_ntt_1.MultiTokenNtt.messageDigest(fromChain, transceiverMessage);
|
|
251
|
-
const queuedTransfer = await this.multiTokenNtt.getInboundQueuedTransfer(digest);
|
|
252
|
-
if (queuedTransfer.txTimestamp > 0n) {
|
|
253
|
-
const { sourceChainId, txTimestamp } = queuedTransfer;
|
|
254
|
-
const duration = await this.getRateLimitDuration();
|
|
255
|
-
return {
|
|
256
|
-
sourceChain: (0, sdk_base_1.toChain)(sourceChainId),
|
|
257
|
-
rateLimitExpiryTimestamp: Number(txTimestamp + duration),
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
return null;
|
|
261
|
-
}
|
|
262
|
-
async *completeInboundQueuedTransfer(fromChain, transceiverMessage) {
|
|
263
|
-
const { trimmedAmount, token, sender, to } = transceiverMessage.payload.data;
|
|
264
|
-
const digest = sdk_definitions_ntt_1.MultiTokenNtt.messageDigest(fromChain, transceiverMessage);
|
|
265
|
-
const transfer = {
|
|
266
|
-
amount: (0, sdk_definitions_ntt_1.encodeTrimmedAmount)(trimmedAmount),
|
|
267
|
-
token: {
|
|
268
|
-
meta: {
|
|
269
|
-
name: sdk_base_1.encoding.bytes.encode(token.meta.name),
|
|
270
|
-
symbol: sdk_base_1.encoding.bytes.encode(token.meta.symbol),
|
|
271
|
-
decimals: token.meta.decimals,
|
|
272
|
-
},
|
|
273
|
-
token: {
|
|
274
|
-
chainId: (0, sdk_base_1.toChainId)(token.token.chainId),
|
|
275
|
-
tokenAddress: token.token.tokenAddress.toString(),
|
|
276
|
-
},
|
|
277
|
-
},
|
|
278
|
-
sender: sender.toString(),
|
|
279
|
-
to: to.toString(),
|
|
280
|
-
additionalPayload: "0x",
|
|
281
|
-
};
|
|
282
|
-
const tx = await this.multiTokenNtt.completeInboundQueuedTransfer.populateTransaction(digest, transfer);
|
|
283
|
-
yield this.createUnsignedTx(tx, "Ntt.completeInboundQueuedTransfer");
|
|
284
|
-
}
|
|
285
|
-
async getOriginalToken(localToken) {
|
|
286
|
-
const [tokenId] = await this.multiTokenNtt.getTokenId(localToken.address.toString());
|
|
287
|
-
const chain = (0, sdk_base_1.toChain)(tokenId.chainId);
|
|
288
|
-
const address = (0, sdk_definitions_1.toUniversal)(chain, tokenId.tokenAddress);
|
|
289
|
-
return {
|
|
290
|
-
chain,
|
|
291
|
-
address,
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
async isWrappedToken(localToken) {
|
|
295
|
-
const originalToken = await this.getOriginalToken(localToken);
|
|
296
|
-
return originalToken.chain !== this.chain;
|
|
297
|
-
}
|
|
298
|
-
// This will return null if the token doesn't exist
|
|
299
|
-
async getLocalToken(originalToken) {
|
|
300
|
-
const localToken = await this.multiTokenNtt.getToken({
|
|
301
|
-
chainId: (0, sdk_base_1.toChainId)(originalToken.chain),
|
|
302
|
-
tokenAddress: originalToken.address.toUint8Array(),
|
|
303
|
-
});
|
|
304
|
-
if (localToken === ethers_1.ethers.ZeroAddress)
|
|
305
|
-
return null;
|
|
306
|
-
return { chain: this.chain, address: (0, sdk_definitions_1.toNative)(this.chain, localToken) };
|
|
307
|
-
}
|
|
308
|
-
async getWrappedNativeToken() {
|
|
309
|
-
const wethAddress = await this.multiTokenNtt.WETH();
|
|
310
|
-
return { chain: this.chain, address: (0, sdk_definitions_1.toNative)(this.chain, wethAddress) };
|
|
311
|
-
}
|
|
312
|
-
// If the local token doesn't exist yet, this will return the address where it will be deployed
|
|
313
|
-
async calculateLocalTokenAddress(originalToken, tokenMeta) {
|
|
314
|
-
const tokenImplementation = await this.multiTokenNtt.tokenImplementation();
|
|
315
|
-
const initializeSelector = ethers_1.ethers.id("initialize(string,string,uint8)");
|
|
316
|
-
const coder = ethers_1.ethers.AbiCoder.defaultAbiCoder();
|
|
317
|
-
const constructorArgs = coder.encode(["address", "bytes"], [
|
|
318
|
-
tokenImplementation,
|
|
319
|
-
ethers_1.ethers.concat([
|
|
320
|
-
initializeSelector.slice(0, 10),
|
|
321
|
-
coder.encode(["string", "string", "uint8"], [
|
|
322
|
-
tokenMeta.name.slice(0, 32),
|
|
323
|
-
tokenMeta.symbol.slice(0, 32),
|
|
324
|
-
tokenMeta.decimals,
|
|
325
|
-
]),
|
|
326
|
-
]),
|
|
327
|
-
]);
|
|
328
|
-
const creationCode = await this.multiTokenNtt.tokenProxyCreationCode();
|
|
329
|
-
const initCode = ethers_1.ethers.concat([creationCode, constructorArgs]);
|
|
330
|
-
const initCodeHash = ethers_1.ethers.keccak256(initCode);
|
|
331
|
-
const salt = ethers_1.ethers.solidityPackedKeccak256(["uint16", "bytes32"], [(0, sdk_base_1.toChainId)(originalToken.chain), originalToken.address.toUint8Array()]);
|
|
332
|
-
// The address where the token will be deployed on the destination chain
|
|
333
|
-
const localTokenAddress = ethers_1.ethers.getCreate2Address(this.managerAddress, salt, initCodeHash);
|
|
334
|
-
return (0, sdk_definitions_1.toNative)(this.chain, localTokenAddress);
|
|
335
|
-
}
|
|
336
|
-
createUnsignedTx(txReq, description, parallelizable = false) {
|
|
337
|
-
return new sdk_evm_1.EvmUnsignedTransaction((0, sdk_evm_1.addChainId)(txReq, this.chainId), this.network, this.chain, description, parallelizable);
|
|
338
|
-
}
|
|
339
|
-
// Upper bound estimate of gas limit needed to redeem on this chain
|
|
340
|
-
async estimateGasLimit(originalToken) {
|
|
341
|
-
const existingToken = await this.getLocalToken(originalToken);
|
|
342
|
-
if (!existingToken) {
|
|
343
|
-
// Redeeming will create the token on this chain
|
|
344
|
-
// so we need to account for the extra gas.
|
|
345
|
-
return 1000000n;
|
|
346
|
-
}
|
|
347
|
-
if (this.chain === "Monad") {
|
|
348
|
-
// Monad gas is higher than other EVMs
|
|
349
|
-
// e.g., here's a redeem tx on Monad where the wallet estimated 750k gas. add sufficient buffer.
|
|
350
|
-
// https://mainnet-beta.monvision.io/tx/0xa4c2c3c2c07c548ad54de7065e54eb3ae1ed017384af43c32a86d32676c3aaef
|
|
351
|
-
return 1000000n;
|
|
352
|
-
}
|
|
353
|
-
// Upper estimate for redeeming an existing token. Based on observed gas usage
|
|
354
|
-
// but padded to be well above the limit.
|
|
355
|
-
return 650000n;
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
exports.EvmMultiTokenNtt = EvmMultiTokenNtt;
|
|
359
|
-
//# sourceMappingURL=multiTokenNtt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiTokenNtt.js","sourceRoot":"","sources":["../../src/multiTokenNtt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Provider } from "ethers";
|
|
2
|
-
import { _1_1_0 } from "./ethers-contracts/multiTokenNtt/index.js";
|
|
3
|
-
import { NttTransceiverBindings } from "./bindings.js";
|
|
4
|
-
export declare const abiVersions: readonly [readonly ["1.1.0", {
|
|
5
|
-
MultiTokenNtt: {
|
|
6
|
-
connect: typeof import("./ethers-contracts/1_1_0/index.js").MultiTokenNtt__factory.connect;
|
|
7
|
-
};
|
|
8
|
-
NttTransceiver: {
|
|
9
|
-
connect: typeof import("./ethers-contracts/1_1_0/index.js").WormholeTransceiver__factory.connect;
|
|
10
|
-
};
|
|
11
|
-
GmpManager: {
|
|
12
|
-
connect: typeof import("./ethers-contracts/1_1_0/index.js").GmpManager__factory.connect;
|
|
13
|
-
};
|
|
14
|
-
}]];
|
|
15
|
-
export type AbiVersion = (typeof abiVersions)[number][0];
|
|
16
|
-
export interface MultiTokenNttBindings {
|
|
17
|
-
MultiTokenNtt: MultiTokenNttBindings;
|
|
18
|
-
GmpManager: GmpManagerBindings;
|
|
19
|
-
NttTransceiver: NttTransceiverBindings;
|
|
20
|
-
}
|
|
21
|
-
export declare namespace MultiTokenNttBindings {
|
|
22
|
-
type MultiTokenNtt = ReturnType<typeof _1_1_0.MultiTokenNtt.connect>;
|
|
23
|
-
}
|
|
24
|
-
export interface MultiTokenNttBindings {
|
|
25
|
-
connect(address: string, provider: Provider): MultiTokenNttBindings.MultiTokenNtt;
|
|
26
|
-
}
|
|
27
|
-
export declare namespace GmpManagerBindings {
|
|
28
|
-
type GmpManager = ReturnType<typeof _1_1_0.GmpManager.connect>;
|
|
29
|
-
}
|
|
30
|
-
export interface GmpManagerBindings {
|
|
31
|
-
connect(address: string, provider: Provider): GmpManagerBindings.GmpManager;
|
|
32
|
-
}
|
|
33
|
-
export declare function loadAbiVersion(targetVersion: string): {
|
|
34
|
-
MultiTokenNtt: {
|
|
35
|
-
connect: typeof import("./ethers-contracts/1_1_0/index.js").MultiTokenNtt__factory.connect;
|
|
36
|
-
};
|
|
37
|
-
NttTransceiver: {
|
|
38
|
-
connect: typeof import("./ethers-contracts/1_1_0/index.js").WormholeTransceiver__factory.connect;
|
|
39
|
-
};
|
|
40
|
-
GmpManager: {
|
|
41
|
-
connect: typeof import("./ethers-contracts/1_1_0/index.js").GmpManager__factory.connect;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=multiTokenNttBindings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiTokenNttBindings.d.ts","sourceRoot":"","sources":["../../src/multiTokenNttBindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAKvD,eAAO,MAAM,WAAW;;;;;;;;;;GAA+B,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,qBAAqB,CAAC;IACrC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,EAAE,sBAAsB,CAAC;CACxC;AAED,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,aAAa,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CACL,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GACjB,qBAAqB,CAAC,aAAa,CAAC;CACxC;AAED,yBAAiB,kBAAkB,CAAC;IAClC,KAAY,UAAU,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC;CAC7E;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM;;;;;;;;;;EAOnD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.abiVersions = void 0;
|
|
4
|
-
exports.loadAbiVersion = loadAbiVersion;
|
|
5
|
-
const index_js_1 = require("./ethers-contracts/multiTokenNtt/index.js");
|
|
6
|
-
const sdk_definitions_ntt_1 = require("@wormhole-foundation/sdk-definitions-ntt");
|
|
7
|
-
// This is a descending list of all ABI versions the SDK is aware of.
|
|
8
|
-
// We check for the first match in descending order, allowing for higher minor and patch versions
|
|
9
|
-
// being used by the live contract (these are supposed to still be compatible with older ABIs).
|
|
10
|
-
exports.abiVersions = [["1.1.0", index_js_1._1_1_0]];
|
|
11
|
-
function loadAbiVersion(targetVersion) {
|
|
12
|
-
for (const [abiVersion, abi] of exports.abiVersions) {
|
|
13
|
-
if (sdk_definitions_ntt_1.Ntt.abiVersionMatches(targetVersion, abiVersion)) {
|
|
14
|
-
return abi;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
throw new Error(`Unknown ABI version: ${targetVersion}`);
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=multiTokenNttBindings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiTokenNttBindings.js","sourceRoot":"","sources":["../../src/multiTokenNttBindings.ts"],"names":[],"mappings":";;;AAoCA,wCAOC;AA1CD,wEAAmE;AACnE,kFAA+D;AAG/D,qEAAqE;AACrE,iGAAiG;AACjG,+FAA+F;AAClF,QAAA,WAAW,GAAG,CAAC,CAAC,OAAO,EAAE,iBAAM,CAAC,CAAU,CAAC;AA4BxD,SAAgB,cAAc,CAAC,aAAqB;IAClD,KAAK,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,mBAAW,EAAE,CAAC;QAC5C,IAAI,yBAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;YACrD,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type Provider, type TransactionRequest } from "ethers";
|
|
2
|
-
import { AccountAddress, ChainAddress, ChainsConfig, Contracts, Network, TokenId, UnsignedTransaction } from "@wormhole-foundation/sdk-connect";
|
|
3
|
-
import { EvmChains, EvmPlatformType, EvmUnsignedTransaction } from "@wormhole-foundation/sdk-evm";
|
|
4
|
-
import { type MultiTokenNtt, type MultiTokenNttWithExecutor } from "@wormhole-foundation/sdk-definitions-ntt";
|
|
5
|
-
export declare class EvmMultiTokenNttWithExecutor<N extends Network, C extends EvmChains = EvmChains> implements MultiTokenNttWithExecutor<N, C> {
|
|
6
|
-
readonly network: N;
|
|
7
|
-
readonly chain: C;
|
|
8
|
-
readonly provider: Provider;
|
|
9
|
-
readonly contracts: Contracts & {
|
|
10
|
-
multiTokenNtt?: MultiTokenNtt.Contracts;
|
|
11
|
-
};
|
|
12
|
-
readonly chainId: bigint;
|
|
13
|
-
readonly managerAddress: string;
|
|
14
|
-
readonly multiTokenNttWithExecutorAddress: string;
|
|
15
|
-
constructor(network: N, chain: C, provider: Provider, contracts: Contracts & {
|
|
16
|
-
multiTokenNtt?: MultiTokenNtt.Contracts;
|
|
17
|
-
});
|
|
18
|
-
static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, EvmPlatformType>): Promise<EvmMultiTokenNttWithExecutor<N, EvmChains>>;
|
|
19
|
-
transfer(sender: AccountAddress<C>, destination: ChainAddress, token: TokenId<C>, amount: bigint, quote: MultiTokenNttWithExecutor.Quote): AsyncGenerator<UnsignedTransaction<N, C>>;
|
|
20
|
-
createUnsignedTx(txReq: TransactionRequest, description: string, parallelizable?: boolean): EvmUnsignedTransaction<N, C>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=multiTokenNttWithExecutor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiTokenNttWithExecutor.d.ts","sourceRoot":"","sources":["../../src/multiTokenNttWithExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC3E,OAAO,EACL,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,OAAO,EACP,mBAAmB,EAIpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,SAAS,EAET,eAAe,EAEf,sBAAsB,EAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC/B,MAAM,0CAA0C,CAAC;AAelD,qBAAa,4BAA4B,CACvC,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,SAAS,GAAG,SAAS,CAC/B,YAAW,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC;IAOxC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,aAAa,CAAC,SAAS,CAAA;KAAE;IAR7E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;gBAGvC,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,aAAa,CAAC,SAAS,CAAA;KAAE;WAyBhE,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,GACvC,OAAO,CAAC,4BAA4B,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAc/C,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,YAAY,EACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,yBAAyB,CAAC,KAAK,GACrC,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgG5C,gBAAgB,CACd,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,OAAe,GAC9B,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC;CAShC"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EvmMultiTokenNttWithExecutor = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
6
|
-
const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
|
|
7
|
-
const sdk_definitions_ntt_1 = require("@wormhole-foundation/sdk-definitions-ntt");
|
|
8
|
-
const multiTokenNttWithExecutorAddresses = {
|
|
9
|
-
Mainnet: {
|
|
10
|
-
Ethereum: "0x03dB430D830601DB368991eE55DAa9A708df7912",
|
|
11
|
-
Monad: "0xFEA937F7124E19124671f1685671d3f04a9Af4E4",
|
|
12
|
-
},
|
|
13
|
-
Testnet: {
|
|
14
|
-
Sepolia: "0x70b1CD25Aa1DEbEf2BCa0eDbc11228C5EB4dAD0F",
|
|
15
|
-
Monad: "0xFEA937F7124E19124671f1685671d3f04a9Af4E4",
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
class EvmMultiTokenNttWithExecutor {
|
|
19
|
-
network;
|
|
20
|
-
chain;
|
|
21
|
-
provider;
|
|
22
|
-
contracts;
|
|
23
|
-
chainId;
|
|
24
|
-
managerAddress;
|
|
25
|
-
multiTokenNttWithExecutorAddress;
|
|
26
|
-
constructor(network, chain, provider, contracts) {
|
|
27
|
-
this.network = network;
|
|
28
|
-
this.chain = chain;
|
|
29
|
-
this.provider = provider;
|
|
30
|
-
this.contracts = contracts;
|
|
31
|
-
this.chainId = sdk_connect_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
|
|
32
|
-
const managerAddress = contracts.multiTokenNtt?.manager;
|
|
33
|
-
if (!managerAddress) {
|
|
34
|
-
throw new Error(`MultiTokenNtt manager address not found for chain ${chain} on network ${network}`);
|
|
35
|
-
}
|
|
36
|
-
this.managerAddress = managerAddress;
|
|
37
|
-
const multiTokenNttWithExecutorAddress = multiTokenNttWithExecutorAddresses[this.network]?.[this.chain];
|
|
38
|
-
if (!multiTokenNttWithExecutorAddress) {
|
|
39
|
-
throw new Error(`MultiTokenNttWithExecutor address not found for chain ${this.chain} on network ${this.network}`);
|
|
40
|
-
}
|
|
41
|
-
this.multiTokenNttWithExecutorAddress = multiTokenNttWithExecutorAddress;
|
|
42
|
-
}
|
|
43
|
-
static async fromRpc(provider, config) {
|
|
44
|
-
const [network, chain] = await sdk_evm_1.EvmPlatform.chainFromRpc(provider);
|
|
45
|
-
const conf = config[chain];
|
|
46
|
-
if (conf.network !== network)
|
|
47
|
-
throw new Error(`Network mismatch: ${conf.network} != ${network}`);
|
|
48
|
-
return new EvmMultiTokenNttWithExecutor(network, chain, provider, conf.contracts);
|
|
49
|
-
}
|
|
50
|
-
async *transfer(sender, destination, token, amount, quote) {
|
|
51
|
-
const senderAddress = new sdk_evm_1.EvmAddress(sender).toString();
|
|
52
|
-
const isNativeToken = (0, sdk_connect_1.isNative)(token.address);
|
|
53
|
-
const abi = [
|
|
54
|
-
"function transfer(address multiTokenNtt, address token, uint256 amount, uint16 recipientChain, bytes32 recipient, bytes32 refundAddress, bytes transceiverInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64)",
|
|
55
|
-
"function transferETH(address multiTokenNtt, uint256 amount, uint16 recipientChain, bytes32 recipient, bytes32 refundAddress, bytes transceiverInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64)",
|
|
56
|
-
];
|
|
57
|
-
const iface = new ethers_1.Interface(abi);
|
|
58
|
-
const recipientChain = (0, sdk_connect_1.toChainId)(destination.chain);
|
|
59
|
-
const recipient = destination.address.toUniversalAddress().toUint8Array();
|
|
60
|
-
const refundAddress = sender.toUniversalAddress().toUint8Array();
|
|
61
|
-
const executorArgs = {
|
|
62
|
-
value: quote.estimatedCost,
|
|
63
|
-
refundAddress: senderAddress,
|
|
64
|
-
signedQuote: quote.signedQuote,
|
|
65
|
-
instructions: quote.relayInstructions,
|
|
66
|
-
};
|
|
67
|
-
const feeArgs = {
|
|
68
|
-
dbps: quote.referrerFeeDbps,
|
|
69
|
-
payee: quote.referrer.address.toString(),
|
|
70
|
-
};
|
|
71
|
-
let data;
|
|
72
|
-
let msgValue;
|
|
73
|
-
if (isNativeToken) {
|
|
74
|
-
data = iface.encodeFunctionData("transferETH", [
|
|
75
|
-
this.managerAddress,
|
|
76
|
-
amount,
|
|
77
|
-
recipientChain,
|
|
78
|
-
recipient,
|
|
79
|
-
refundAddress,
|
|
80
|
-
sdk_definitions_ntt_1.Ntt.encodeTransceiverInstructions(quote.transceiverInstructions),
|
|
81
|
-
executorArgs,
|
|
82
|
-
feeArgs,
|
|
83
|
-
]);
|
|
84
|
-
msgValue = quote.estimatedCost + quote.deliveryPrice + amount;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
const tokenAddress = new sdk_evm_1.EvmAddress(token.address).toString();
|
|
88
|
-
const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, tokenAddress);
|
|
89
|
-
const currentAllowance = await tokenContract.allowance(senderAddress, this.multiTokenNttWithExecutorAddress);
|
|
90
|
-
if (currentAllowance < amount) {
|
|
91
|
-
const approveTx = await tokenContract.approve.populateTransaction(this.multiTokenNttWithExecutorAddress, amount);
|
|
92
|
-
yield this.createUnsignedTx(approveTx, "MultiTokenNttWithExecutor.Approve");
|
|
93
|
-
}
|
|
94
|
-
data = iface.encodeFunctionData("transfer", [
|
|
95
|
-
this.managerAddress,
|
|
96
|
-
tokenAddress,
|
|
97
|
-
amount,
|
|
98
|
-
recipientChain,
|
|
99
|
-
recipient,
|
|
100
|
-
refundAddress,
|
|
101
|
-
sdk_definitions_ntt_1.Ntt.encodeTransceiverInstructions(quote.transceiverInstructions),
|
|
102
|
-
executorArgs,
|
|
103
|
-
feeArgs,
|
|
104
|
-
]);
|
|
105
|
-
msgValue = quote.estimatedCost + quote.deliveryPrice;
|
|
106
|
-
}
|
|
107
|
-
const txReq = {
|
|
108
|
-
to: this.multiTokenNttWithExecutorAddress,
|
|
109
|
-
data,
|
|
110
|
-
value: msgValue,
|
|
111
|
-
from: senderAddress,
|
|
112
|
-
};
|
|
113
|
-
yield this.createUnsignedTx(txReq, isNativeToken
|
|
114
|
-
? "MultiTokenNttWithExecutor.transferETH"
|
|
115
|
-
: "MultiTokenNttWithExecutor.transfer");
|
|
116
|
-
}
|
|
117
|
-
createUnsignedTx(txReq, description, parallelizable = false) {
|
|
118
|
-
return new sdk_evm_1.EvmUnsignedTransaction((0, sdk_evm_1.addChainId)(txReq, this.chainId), this.network, this.chain, description, parallelizable);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
exports.EvmMultiTokenNttWithExecutor = EvmMultiTokenNttWithExecutor;
|
|
122
|
-
//# sourceMappingURL=multiTokenNttWithExecutor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiTokenNttWithExecutor.js","sourceRoot":"","sources":["../../src/multiTokenNttWithExecutor.ts"],"names":[],"mappings":"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"}
|