@wormhole-foundation/sdk-evm-tokenbridge 4.23.0 → 5.0.0-beta.1

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.
Files changed (46) hide show
  1. package/package.json +12 -30
  2. package/dist/cjs/automaticTokenBridge.d.ts +0 -30
  3. package/dist/cjs/automaticTokenBridge.d.ts.map +0 -1
  4. package/dist/cjs/automaticTokenBridge.js +0 -115
  5. package/dist/cjs/automaticTokenBridge.js.map +0 -1
  6. package/dist/cjs/ethers-contracts/Bridge.d.ts +0 -630
  7. package/dist/cjs/ethers-contracts/Bridge.d.ts.map +0 -1
  8. package/dist/cjs/ethers-contracts/Bridge.js +0 -3
  9. package/dist/cjs/ethers-contracts/Bridge.js.map +0 -1
  10. package/dist/cjs/ethers-contracts/TokenBridgeRelayer.d.ts +0 -600
  11. package/dist/cjs/ethers-contracts/TokenBridgeRelayer.d.ts.map +0 -1
  12. package/dist/cjs/ethers-contracts/TokenBridgeRelayer.js +0 -3
  13. package/dist/cjs/ethers-contracts/TokenBridgeRelayer.js.map +0 -1
  14. package/dist/cjs/ethers-contracts/common.d.ts +0 -51
  15. package/dist/cjs/ethers-contracts/common.d.ts.map +0 -1
  16. package/dist/cjs/ethers-contracts/common.js +0 -3
  17. package/dist/cjs/ethers-contracts/common.js.map +0 -1
  18. package/dist/cjs/ethers-contracts/factories/Bridge__factory.d.ts +0 -944
  19. package/dist/cjs/ethers-contracts/factories/Bridge__factory.d.ts.map +0 -1
  20. package/dist/cjs/ethers-contracts/factories/Bridge__factory.js +0 -1248
  21. package/dist/cjs/ethers-contracts/factories/Bridge__factory.js.map +0 -1
  22. package/dist/cjs/ethers-contracts/factories/TokenBridgeRelayer__factory.d.ts +0 -820
  23. package/dist/cjs/ethers-contracts/factories/TokenBridgeRelayer__factory.d.ts.map +0 -1
  24. package/dist/cjs/ethers-contracts/factories/TokenBridgeRelayer__factory.js +0 -1079
  25. package/dist/cjs/ethers-contracts/factories/TokenBridgeRelayer__factory.js.map +0 -1
  26. package/dist/cjs/ethers-contracts/factories/index.d.ts +0 -3
  27. package/dist/cjs/ethers-contracts/factories/index.d.ts.map +0 -1
  28. package/dist/cjs/ethers-contracts/factories/index.js +0 -19
  29. package/dist/cjs/ethers-contracts/factories/index.js.map +0 -1
  30. package/dist/cjs/ethers-contracts/index.d.ts +0 -4
  31. package/dist/cjs/ethers-contracts/index.d.ts.map +0 -1
  32. package/dist/cjs/ethers-contracts/index.js +0 -18
  33. package/dist/cjs/ethers-contracts/index.js.map +0 -1
  34. package/dist/cjs/executorTokenBridge.d.ts +0 -28
  35. package/dist/cjs/executorTokenBridge.d.ts.map +0 -1
  36. package/dist/cjs/executorTokenBridge.js +0 -161
  37. package/dist/cjs/executorTokenBridge.js.map +0 -1
  38. package/dist/cjs/index.d.ts +0 -5
  39. package/dist/cjs/index.d.ts.map +0 -1
  40. package/dist/cjs/index.js +0 -42
  41. package/dist/cjs/index.js.map +0 -1
  42. package/dist/cjs/package.json +0 -1
  43. package/dist/cjs/tokenBridge.d.ts +0 -35
  44. package/dist/cjs/tokenBridge.d.ts.map +0 -1
  45. package/dist/cjs/tokenBridge.js +0 -171
  46. package/dist/cjs/tokenBridge.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wormhole-foundation/sdk-evm-tokenbridge",
3
- "version": "4.23.0",
3
+ "version": "5.0.0-beta.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/wormhole-foundation/wormhole-sdk-ts.git"
@@ -13,13 +13,12 @@
13
13
  "test": "tests"
14
14
  },
15
15
  "license": "Apache-2.0",
16
- "main": "./dist/cjs/index.js",
17
- "types": "./dist/cjs/index.d.ts",
16
+ "main": "./dist/esm/index.js",
17
+ "types": "./dist/esm/index.d.ts",
18
18
  "module": "./dist/esm/index.js",
19
19
  "description": "SDK for EVM chains, used in conjunction with @wormhole-foundation/sdk",
20
20
  "files": [
21
- "dist/esm",
22
- "dist/cjs"
21
+ "dist/esm"
23
22
  ],
24
23
  "keywords": [
25
24
  "wormhole",
@@ -35,48 +34,31 @@
35
34
  "evm"
36
35
  ],
37
36
  "engines": {
38
- "node": ">=16"
37
+ "node": ">=20.19"
39
38
  },
40
39
  "sideEffects": [
41
- "./dist/cjs/index.js",
42
40
  "./dist/esm/index.js"
43
41
  ],
44
42
  "scripts": {
45
- "build:cjs": "tsc -p ./tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
46
43
  "build:esm": "tsc -p ./tsconfig.esm.json",
47
- "build": "npm run build:esm && npm run build:cjs",
44
+ "build": "npm run build:esm",
48
45
  "rebuild": "npm run clean && npm run build",
49
46
  "clean": "rm -rf ./dist && rm -rf ./.turbo",
50
47
  "lint": "npm run prettier && eslint --fix ./src --ext .ts",
51
48
  "prettier": "prettier --write ./src"
52
49
  },
53
50
  "dependencies": {
54
- "@wormhole-foundation/sdk-connect": "4.23.0",
55
- "@wormhole-foundation/sdk-evm": "4.23.0",
56
- "@wormhole-foundation/sdk-evm-core": "4.23.0",
51
+ "@wormhole-foundation/sdk-connect": "5.0.0-beta.1",
52
+ "@wormhole-foundation/sdk-evm": "5.0.0-beta.1",
53
+ "@wormhole-foundation/sdk-evm-core": "5.0.0-beta.1",
57
54
  "ethers": "^6.5.1"
58
55
  },
59
56
  "type": "module",
60
57
  "exports": {
61
58
  ".": {
62
- "react-native": {
63
- "import": "./dist/esm/index.js",
64
- "require": "./dist/cjs/index.js",
65
- "types": "./dist/cjs/index.d.ts",
66
- "default": "./dist/cjs/index.js"
67
- },
68
- "import": {
69
- "types": "./dist/esm/index.d.ts",
70
- "default": "./dist/esm/index.js"
71
- },
72
- "require": {
73
- "types": "./dist/cjs/index.d.ts",
74
- "default": "./dist/cjs/index.js"
75
- },
76
- "default": {
77
- "types": "./dist/cjs/index.d.ts",
78
- "default": "./dist/cjs/index.js"
79
- }
59
+ "types": "./dist/esm/index.d.ts",
60
+ "import": "./dist/esm/index.js",
61
+ "default": "./dist/esm/index.js"
80
62
  }
81
63
  }
82
64
  }
@@ -1,30 +0,0 @@
1
- import type { AccountAddress, AutomaticTokenBridge, Chain, ChainAddress, ChainsConfig, Contracts, NativeAddress, Network, TokenAddress } from '@wormhole-foundation/sdk-connect';
2
- import type { EvmChains, EvmPlatformType } from '@wormhole-foundation/sdk-evm';
3
- import { EvmUnsignedTransaction } from '@wormhole-foundation/sdk-evm';
4
- import type { Provider } from 'ethers';
5
- import { ethers_contracts } from './index.js';
6
- import '@wormhole-foundation/sdk-evm-core';
7
- import { EvmWormholeCore } from '@wormhole-foundation/sdk-evm-core';
8
- export declare class EvmAutomaticTokenBridge<N extends Network, C extends EvmChains> implements AutomaticTokenBridge<N, C> {
9
- readonly network: N;
10
- readonly chain: C;
11
- readonly provider: Provider;
12
- readonly contracts: Contracts;
13
- readonly tokenBridgeRelayer: ethers_contracts.TokenBridgeRelayer;
14
- readonly tokenBridge: ethers_contracts.TokenBridgeContract;
15
- readonly core: EvmWormholeCore<N, C>;
16
- readonly chainId: bigint;
17
- constructor(network: N, chain: C, provider: Provider, contracts: Contracts);
18
- redeem(sender: AccountAddress<C>, vaa: AutomaticTokenBridge.VAA): AsyncGenerator<EvmUnsignedTransaction<N, C>>;
19
- static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, EvmPlatformType>): Promise<EvmAutomaticTokenBridge<N, EvmChains>>;
20
- transfer(sender: AccountAddress<C>, recipient: ChainAddress, token: TokenAddress<C>, amount: bigint, nativeGas?: bigint): AsyncGenerator<EvmUnsignedTransaction<N, C>>;
21
- getRelayerFee(destination: Chain, token: TokenAddress<C>): Promise<bigint>;
22
- nativeTokenAmount(token: TokenAddress<C>, amount: bigint): Promise<bigint>;
23
- maxSwapAmount(token: TokenAddress<C>): Promise<bigint>;
24
- getRegisteredTokens(): Promise<NativeAddress<C>[]>;
25
- isRegisteredToken(token: TokenAddress<C>): Promise<boolean>;
26
- private tokenAddress;
27
- getWeth(): Promise<string>;
28
- private createUnsignedTx;
29
- }
30
- //# sourceMappingURL=automaticTokenBridge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"automaticTokenBridge.d.ts","sourceRoot":"","sources":["../../src/automaticTokenBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,aAAa,EACb,OAAO,EACP,YAAY,EACb,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAGL,sBAAsB,EAIvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,qBAAa,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACzE,YAAW,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAQnC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC;IACjE,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,mBAAmB,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAGd,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;IAkCxB,MAAM,CACX,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,GAAG,EAAE,oBAAoB,CAAC,GAAG,GAC5B,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;WAalC,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAgB1C,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAmEzC,aAAa,CACjB,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;IAoBZ,iBAAiB,CACrB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAQZ,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtD,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAKlD,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;YAKnD,YAAY;IAMpB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,OAAO,CAAC,gBAAgB;CAazB"}
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EvmAutomaticTokenBridge = void 0;
4
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
- const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
6
- const index_js_1 = require("./index.js");
7
- require("@wormhole-foundation/sdk-evm-core");
8
- const sdk_evm_core_1 = require("@wormhole-foundation/sdk-evm-core");
9
- class EvmAutomaticTokenBridge {
10
- network;
11
- chain;
12
- provider;
13
- contracts;
14
- tokenBridgeRelayer;
15
- tokenBridge;
16
- core;
17
- chainId;
18
- constructor(network, chain, provider, contracts) {
19
- this.network = network;
20
- this.chain = chain;
21
- this.provider = provider;
22
- this.contracts = contracts;
23
- if (network === 'Devnet')
24
- throw new Error('AutomaticTokenBridge not supported on Devnet');
25
- this.chainId = sdk_connect_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
26
- const tokenBridgeAddress = this.contracts.tokenBridge;
27
- if (!tokenBridgeAddress)
28
- throw new Error(`Wormhole Token Bridge contract for domain ${chain} not found`);
29
- this.tokenBridge = index_js_1.ethers_contracts.Bridge__factory.connect(tokenBridgeAddress, provider);
30
- const relayerAddress = this.contracts.tokenBridgeRelayer;
31
- if (!relayerAddress)
32
- throw new Error(`Wormhole Token Bridge Relayer contract for domain ${chain} not found`);
33
- this.tokenBridgeRelayer =
34
- index_js_1.ethers_contracts.TokenBridgeRelayer__factory.connect(relayerAddress, provider);
35
- this.core = new sdk_evm_core_1.EvmWormholeCore(network, chain, provider, contracts);
36
- }
37
- async *redeem(sender, vaa) {
38
- const senderAddr = new sdk_evm_1.EvmAddress(sender).toString();
39
- const txReq = await this.tokenBridgeRelayer.completeTransferWithRelay.populateTransaction((0, sdk_connect_1.serialize)(vaa));
40
- yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddr), 'TokenBridgeRelayer.completeTransferWithRelay');
41
- }
42
- static async fromRpc(provider, config) {
43
- const [network, chain] = await sdk_evm_1.EvmPlatform.chainFromRpc(provider);
44
- const conf = config[chain];
45
- if (conf.network !== network)
46
- throw new Error(`Network mismatch: ${conf.network} != ${network}`);
47
- return new EvmAutomaticTokenBridge(network, chain, provider, conf.contracts);
48
- }
49
- //alternative naming: initiateTransfer
50
- async *transfer(sender, recipient, token, amount, nativeGas) {
51
- const senderAddr = new sdk_evm_1.EvmAddress(sender).toString();
52
- const recipientChainId = (0, sdk_connect_1.toChainId)(recipient.chain);
53
- const messageFee = await this.core.getMessageFee();
54
- const recipientAddress = recipient.address
55
- .toUniversalAddress()
56
- .toUint8Array();
57
- const nativeTokenGas = nativeGas ? nativeGas : 0n;
58
- if ((0, sdk_connect_1.isNative)(token)) {
59
- const txReq = await this.tokenBridgeRelayer.wrapAndTransferEthWithRelay.populateTransaction(nativeTokenGas, recipientChainId, recipientAddress, 0, // skip batching
60
- { value: amount + messageFee });
61
- yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddr), 'TokenBridgeRelayer.wrapAndTransferETHWithRelay');
62
- }
63
- else {
64
- //TODO check for ERC-2612 (permit) support on token?
65
- const tokenAddr = new sdk_evm_1.EvmAddress(token).toString();
66
- const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, tokenAddr);
67
- const allowance = await tokenContract.allowance(senderAddr, this.tokenBridgeRelayer.target);
68
- if (allowance < amount) {
69
- const txReq = await tokenContract.approve.populateTransaction(this.tokenBridgeRelayer.target, amount);
70
- yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddr), 'AutomaticTokenBridge.Approve');
71
- }
72
- const txReq = await this.tokenBridgeRelayer.transferTokensWithRelay.populateTransaction(tokenAddr, amount, nativeTokenGas, recipientChainId, recipientAddress, 0, { value: messageFee });
73
- yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddr), 'TokenBridgeRelayer.TransferTokensWithRelay');
74
- }
75
- }
76
- async getRelayerFee(destination, token) {
77
- const destChainId = (0, sdk_connect_1.toChainId)(destination);
78
- const srcTokenAddress = await this.tokenAddress(token);
79
- const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, srcTokenAddress);
80
- const decimals = await tokenContract.decimals();
81
- return await this.tokenBridgeRelayer.calculateRelayerFee(destChainId, srcTokenAddress, decimals);
82
- }
83
- // Return the amount of native gas that will be
84
- // received when the incoming bridge transfer is redeemed
85
- // Note: for a quote, this should be called on the destination chain
86
- async nativeTokenAmount(token, amount) {
87
- const address = await this.tokenAddress(token);
88
- return this.tokenBridgeRelayer.calculateNativeSwapAmountOut(address, amount);
89
- }
90
- async maxSwapAmount(token) {
91
- const address = await this.tokenAddress(token);
92
- return this.tokenBridgeRelayer.calculateMaxSwapAmountIn(address);
93
- }
94
- async getRegisteredTokens() {
95
- const tokens = await this.tokenBridgeRelayer.getAcceptedTokensList();
96
- return tokens.map((address) => (0, sdk_connect_1.toNative)(this.chain, address));
97
- }
98
- async isRegisteredToken(token) {
99
- const address = await this.tokenAddress(token);
100
- return await this.tokenBridgeRelayer.isAcceptedToken(address);
101
- }
102
- async tokenAddress(token) {
103
- return (0, sdk_connect_1.isNative)(token)
104
- ? await this.getWeth()
105
- : new sdk_evm_1.EvmAddress(token).toString();
106
- }
107
- async getWeth() {
108
- return sdk_evm_1.WETH_CONTRACTS[this.network]?.[this.chain] ?? this.tokenBridge.WETH();
109
- }
110
- createUnsignedTx(txReq, description, parallelizable = false) {
111
- return new sdk_evm_1.EvmUnsignedTransaction((0, sdk_evm_1.addChainId)(txReq, this.chainId), this.network, this.chain, description, parallelizable);
112
- }
113
- }
114
- exports.EvmAutomaticTokenBridge = EvmAutomaticTokenBridge;
115
- //# sourceMappingURL=automaticTokenBridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"automaticTokenBridge.js","sourceRoot":"","sources":["../../src/automaticTokenBridge.ts"],"names":[],"mappings":"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"}