@wormhole-foundation/sdk-evm 0.5.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +10 -0
  2. package/dist/cjs/address.d.ts +26 -0
  3. package/dist/cjs/address.d.ts.map +1 -0
  4. package/dist/cjs/address.js +77 -0
  5. package/dist/cjs/address.js.map +1 -0
  6. package/dist/cjs/chain.d.ts +8 -0
  7. package/dist/cjs/chain.d.ts.map +1 -0
  8. package/dist/cjs/chain.js +11 -0
  9. package/dist/cjs/chain.js.map +1 -0
  10. package/dist/cjs/ethers-contracts/TokenImplementation.d.ts +340 -0
  11. package/dist/cjs/ethers-contracts/TokenImplementation.d.ts.map +1 -0
  12. package/dist/cjs/ethers-contracts/TokenImplementation.js +3 -0
  13. package/dist/cjs/ethers-contracts/TokenImplementation.js.map +1 -0
  14. package/dist/cjs/ethers-contracts/common.d.ts +51 -0
  15. package/dist/cjs/ethers-contracts/common.d.ts.map +1 -0
  16. package/dist/cjs/ethers-contracts/common.js +3 -0
  17. package/dist/cjs/ethers-contracts/common.js.map +1 -0
  18. package/dist/cjs/ethers-contracts/factories/TokenImplementation__factory.d.ts +431 -0
  19. package/dist/cjs/ethers-contracts/factories/TokenImplementation__factory.d.ts.map +1 -0
  20. package/dist/cjs/ethers-contracts/factories/TokenImplementation__factory.js +569 -0
  21. package/dist/cjs/ethers-contracts/factories/TokenImplementation__factory.js.map +1 -0
  22. package/dist/cjs/ethers-contracts/factories/index.d.ts +2 -0
  23. package/dist/cjs/ethers-contracts/factories/index.d.ts.map +1 -0
  24. package/dist/cjs/ethers-contracts/factories/index.js +18 -0
  25. package/dist/cjs/ethers-contracts/factories/index.js.map +1 -0
  26. package/dist/cjs/ethers-contracts/index.d.ts +3 -0
  27. package/dist/cjs/ethers-contracts/index.d.ts.map +1 -0
  28. package/dist/cjs/ethers-contracts/index.js +19 -0
  29. package/dist/cjs/ethers-contracts/index.js.map +1 -0
  30. package/dist/cjs/index.d.ts +7 -0
  31. package/dist/cjs/index.d.ts.map +1 -0
  32. package/dist/cjs/index.js +23 -0
  33. package/dist/cjs/index.js.map +1 -0
  34. package/dist/cjs/platform.d.ts +27 -0
  35. package/dist/cjs/platform.d.ts.map +1 -0
  36. package/dist/cjs/platform.js +131 -0
  37. package/dist/cjs/platform.js.map +1 -0
  38. package/dist/cjs/signer.d.ts +12 -0
  39. package/dist/cjs/signer.d.ts.map +1 -0
  40. package/dist/cjs/signer.js +86 -0
  41. package/dist/cjs/signer.js.map +1 -0
  42. package/dist/cjs/testing/index.d.ts +2 -0
  43. package/dist/cjs/testing/index.d.ts.map +1 -0
  44. package/dist/cjs/testing/index.js +18 -0
  45. package/dist/cjs/testing/index.js.map +1 -0
  46. package/dist/cjs/testing/signer.d.ts +13 -0
  47. package/dist/cjs/testing/signer.d.ts.map +1 -0
  48. package/dist/cjs/testing/signer.js +64 -0
  49. package/dist/cjs/testing/signer.js.map +1 -0
  50. package/dist/cjs/types.d.ts +70 -0
  51. package/dist/cjs/types.d.ts.map +1 -0
  52. package/dist/cjs/types.js +25 -0
  53. package/dist/cjs/types.js.map +1 -0
  54. package/dist/cjs/unsignedTransaction.d.ts +15 -0
  55. package/dist/cjs/unsignedTransaction.d.ts.map +1 -0
  56. package/dist/cjs/unsignedTransaction.js +22 -0
  57. package/dist/cjs/unsignedTransaction.js.map +1 -0
  58. package/dist/esm/address.d.ts +26 -0
  59. package/dist/esm/address.d.ts.map +1 -0
  60. package/dist/esm/address.js +73 -0
  61. package/dist/esm/address.js.map +1 -0
  62. package/dist/esm/chain.d.ts +8 -0
  63. package/dist/esm/chain.d.ts.map +1 -0
  64. package/dist/esm/chain.js +7 -0
  65. package/dist/esm/chain.js.map +1 -0
  66. package/dist/esm/ethers-contracts/TokenImplementation.d.ts +340 -0
  67. package/dist/esm/ethers-contracts/TokenImplementation.d.ts.map +1 -0
  68. package/dist/esm/ethers-contracts/TokenImplementation.js +2 -0
  69. package/dist/esm/ethers-contracts/TokenImplementation.js.map +1 -0
  70. package/dist/esm/ethers-contracts/common.d.ts +51 -0
  71. package/dist/esm/ethers-contracts/common.d.ts.map +1 -0
  72. package/dist/esm/ethers-contracts/common.js +2 -0
  73. package/dist/esm/ethers-contracts/common.js.map +1 -0
  74. package/dist/esm/ethers-contracts/factories/TokenImplementation__factory.d.ts +431 -0
  75. package/dist/esm/ethers-contracts/factories/TokenImplementation__factory.d.ts.map +1 -0
  76. package/dist/esm/ethers-contracts/factories/TokenImplementation__factory.js +565 -0
  77. package/dist/esm/ethers-contracts/factories/TokenImplementation__factory.js.map +1 -0
  78. package/dist/esm/ethers-contracts/factories/index.d.ts +2 -0
  79. package/dist/esm/ethers-contracts/factories/index.d.ts.map +1 -0
  80. package/dist/esm/ethers-contracts/factories/index.js +2 -0
  81. package/dist/esm/ethers-contracts/factories/index.js.map +1 -0
  82. package/dist/esm/ethers-contracts/index.d.ts +3 -0
  83. package/dist/esm/ethers-contracts/index.d.ts.map +1 -0
  84. package/dist/esm/ethers-contracts/index.js +3 -0
  85. package/dist/esm/ethers-contracts/index.js.map +1 -0
  86. package/dist/esm/index.d.ts +7 -0
  87. package/dist/esm/index.d.ts.map +1 -0
  88. package/dist/esm/index.js +7 -0
  89. package/dist/esm/index.js.map +1 -0
  90. package/dist/esm/platform.d.ts +27 -0
  91. package/dist/esm/platform.d.ts.map +1 -0
  92. package/dist/esm/platform.js +104 -0
  93. package/dist/esm/platform.js.map +1 -0
  94. package/dist/esm/signer.d.ts +12 -0
  95. package/dist/esm/signer.d.ts.map +1 -0
  96. package/dist/esm/signer.js +79 -0
  97. package/dist/esm/signer.js.map +1 -0
  98. package/dist/esm/testing/index.d.ts +2 -0
  99. package/dist/esm/testing/index.d.ts.map +1 -0
  100. package/dist/esm/testing/index.js +2 -0
  101. package/dist/esm/testing/index.js.map +1 -0
  102. package/dist/esm/testing/signer.d.ts +13 -0
  103. package/dist/esm/testing/signer.d.ts.map +1 -0
  104. package/dist/esm/testing/signer.js +59 -0
  105. package/dist/esm/testing/signer.js.map +1 -0
  106. package/dist/esm/types.d.ts +70 -0
  107. package/dist/esm/types.d.ts.map +1 -0
  108. package/dist/esm/types.js +19 -0
  109. package/dist/esm/types.js.map +1 -0
  110. package/dist/esm/unsignedTransaction.d.ts +15 -0
  111. package/dist/esm/unsignedTransaction.d.ts.map +1 -0
  112. package/dist/esm/unsignedTransaction.js +18 -0
  113. package/dist/esm/unsignedTransaction.js.map +1 -0
  114. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  115. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  116. package/package.json +61 -0
@@ -0,0 +1,27 @@
1
+ import { Balances, Chain, ChainsConfig, Network, PlatformContext, SignedTx, StaticPlatformMethods, TokenId, TxHash } from '@wormhole-foundation/sdk-connect';
2
+ import { Provider } from 'ethers';
3
+ import * as ethers_contracts from './ethers-contracts';
4
+ import { EvmChain } from './chain';
5
+ import { AnyEvmAddress, EvmChains, EvmPlatformType } from './types';
6
+ /**
7
+ * @category EVM
8
+ */
9
+ export declare class EvmPlatform<N extends Network> extends PlatformContext<N, EvmPlatformType> implements StaticPlatformMethods<EvmPlatformType, typeof EvmPlatform> {
10
+ static _platform: "Evm";
11
+ constructor(network: N, _config?: ChainsConfig<N, EvmPlatformType>);
12
+ getRpc<C extends EvmChains>(chain: C): Provider;
13
+ getChain<C extends EvmChains>(chain: C, rpc?: Provider): EvmChain<N, C>;
14
+ static nativeTokenId<N extends Network, C extends EvmChains>(network: N, chain: C): TokenId<C>;
15
+ static isNativeTokenId<N extends Network, C extends EvmChains>(network: N, chain: C, tokenId: TokenId<C>): boolean;
16
+ static isSupportedChain(chain: Chain): boolean;
17
+ static getDecimals(chain: Chain, rpc: Provider, token: AnyEvmAddress): Promise<number>;
18
+ static getBalance(chain: Chain, rpc: Provider, walletAddr: string, token: AnyEvmAddress): Promise<bigint | null>;
19
+ static getBalances(chain: Chain, rpc: Provider, walletAddr: string, tokens: AnyEvmAddress[]): Promise<Balances>;
20
+ static sendWait(chain: Chain, rpc: Provider, stxns: SignedTx[]): Promise<TxHash[]>;
21
+ static getLatestBlock(rpc: Provider): Promise<number>;
22
+ static getLatestFinalizedBlock(rpc: Provider): Promise<number>;
23
+ static chainFromChainId(eip155ChainId: string): [Network, EvmChains];
24
+ static chainFromRpc(rpc: Provider): Promise<[Network, EvmChains]>;
25
+ static getTokenImplementation(connection: Provider, address: string): ethers_contracts.TokenImplementation;
26
+ }
27
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,OAAO,EACP,eAAe,EACf,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,MAAM,EAQP,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAmB,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAa,MAAM,SAAS,CAAC;AAE/E;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,OAAO,CACxC,SAAQ,eAAe,CAAC,CAAC,EAAE,eAAe,CAC1C,YAAW,qBAAqB,CAAC,eAAe,EAAE,OAAO,WAAW,CAAC;IAErE,MAAM,CAAC,SAAS,QAAa;gBAEjB,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC;IAOlE,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ;IAM/C,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAKvE,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,EACzD,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,CAAC;IAMb,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,EAC3D,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO;IAMV,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;WAKjC,WAAW,CACtB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,CAAC;WAUL,UAAU,CACrB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAUZ,WAAW,CACtB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EAAE,GACtB,OAAO,CAAC,QAAQ,CAAC;WAaP,QAAQ,CACnB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,QAAQ,EAAE,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC;WAkBP,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;WAG9C,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAKpE,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;WAavD,YAAY,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAKvE,MAAM,CAAC,sBAAsB,CAC3B,UAAU,EAAE,QAAQ,EACpB,OAAO,EAAE,MAAM,GACd,gBAAgB,CAAC,mBAAmB;CASxC"}
@@ -0,0 +1,104 @@
1
+ import { PlatformContext, Wormhole, chainToPlatform, decimals, encoding, isNative, nativeChainIds, networkPlatformConfigs, } from '@wormhole-foundation/sdk-connect';
2
+ import { JsonRpcProvider } from 'ethers';
3
+ import * as ethers_contracts from './ethers-contracts';
4
+ import { EvmAddress, EvmZeroAddress } from './address';
5
+ import { EvmChain } from './chain';
6
+ import { _platform } from './types';
7
+ /**
8
+ * @category EVM
9
+ */
10
+ export class EvmPlatform extends PlatformContext {
11
+ static _platform = _platform;
12
+ constructor(network, _config) {
13
+ super(network, _config ?? networkPlatformConfigs(network, EvmPlatform._platform));
14
+ }
15
+ getRpc(chain) {
16
+ if (chain in this.config && this.config[chain].rpc)
17
+ return new JsonRpcProvider(this.config[chain].rpc);
18
+ throw new Error('No configuration available for chain: ' + chain);
19
+ }
20
+ getChain(chain, rpc) {
21
+ if (chain in this.config)
22
+ return new EvmChain(chain, this, rpc);
23
+ throw new Error('No configuration available for chain: ' + chain);
24
+ }
25
+ static nativeTokenId(network, chain) {
26
+ if (!EvmPlatform.isSupportedChain(chain))
27
+ throw new Error(`invalid chain for EVM: ${chain}`);
28
+ return Wormhole.tokenId(chain, EvmZeroAddress);
29
+ }
30
+ static isNativeTokenId(network, chain, tokenId) {
31
+ if (!EvmPlatform.isSupportedChain(chain))
32
+ return false;
33
+ if (tokenId.chain !== chain)
34
+ return false;
35
+ return tokenId.address.toString() === EvmZeroAddress;
36
+ }
37
+ static isSupportedChain(chain) {
38
+ const platform = chainToPlatform(chain);
39
+ return platform === EvmPlatform._platform;
40
+ }
41
+ static async getDecimals(chain, rpc, token) {
42
+ if (isNative(token))
43
+ return decimals.nativeDecimals(EvmPlatform._platform);
44
+ const tokenContract = EvmPlatform.getTokenImplementation(rpc, new EvmAddress(token).toString());
45
+ return Number(tokenContract.decimals());
46
+ }
47
+ static async getBalance(chain, rpc, walletAddr, token) {
48
+ if (isNative(token))
49
+ return rpc.getBalance(walletAddr);
50
+ const tokenImpl = EvmPlatform.getTokenImplementation(rpc, new EvmAddress(token).toString());
51
+ return tokenImpl.balanceOf(walletAddr);
52
+ }
53
+ static async getBalances(chain, rpc, walletAddr, tokens) {
54
+ const balancesArr = await Promise.all(tokens.map(async (token) => {
55
+ const balance = await this.getBalance(chain, rpc, walletAddr, token);
56
+ const address = isNative(token)
57
+ ? 'native'
58
+ : new EvmAddress(token).toString();
59
+ return { [address]: balance };
60
+ }));
61
+ return balancesArr.reduce((obj, item) => Object.assign(obj, item), {});
62
+ }
63
+ static async sendWait(chain, rpc, stxns) {
64
+ const txhashes = [];
65
+ for (const stxn of stxns) {
66
+ const txRes = await rpc.broadcastTransaction(stxn);
67
+ txhashes.push(txRes.hash);
68
+ if (chain === 'Celo') {
69
+ console.error('TODO: override celo block fetching');
70
+ continue;
71
+ }
72
+ // Wait for confirmation
73
+ const txReceipt = await txRes.wait();
74
+ if (txReceipt === null)
75
+ throw new Error('Received null TxReceipt');
76
+ }
77
+ return txhashes;
78
+ }
79
+ static async getLatestBlock(rpc) {
80
+ return await rpc.getBlockNumber();
81
+ }
82
+ static async getLatestFinalizedBlock(rpc) {
83
+ throw new Error('Not implemented');
84
+ }
85
+ // Look up the Wormhole Canonical Network and Chain from the EVM chainId
86
+ static chainFromChainId(eip155ChainId) {
87
+ const networkChainPair = nativeChainIds.platformNativeChainIdToNetworkChain(EvmPlatform._platform, BigInt(eip155ChainId));
88
+ if (networkChainPair === undefined)
89
+ throw new Error(`Unknown EVM chainId ${eip155ChainId}`);
90
+ const [network, chain] = networkChainPair;
91
+ return [network, chain];
92
+ }
93
+ static async chainFromRpc(rpc) {
94
+ const { chainId } = await rpc.getNetwork();
95
+ return EvmPlatform.chainFromChainId(encoding.bignum.encode(chainId, true));
96
+ }
97
+ static getTokenImplementation(connection, address) {
98
+ const ti = ethers_contracts.TokenImplementation__factory.connect(address, connection);
99
+ if (!ti)
100
+ throw new Error(`No token implementation available for: ${address}`);
101
+ return ti;
102
+ }
103
+ }
104
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Network, PlatformNativeSigner, SignOnlySigner, SignedTx, Signer, UnsignedTransaction } from '@wormhole-foundation/sdk-connect';
2
+ import { Provider, Signer as EthersSigner } from 'ethers';
3
+ import { EvmChains } from './types';
4
+ export declare function getEvmSignerForKey(rpc: Provider, privateKey: string): Promise<Signer>;
5
+ export declare function getEvmSignerForSigner(chain: EvmChains, signer: EthersSigner): Promise<Signer>;
6
+ export declare class EvmNativeSigner<N extends Network, C extends EvmChains = EvmChains> extends PlatformNativeSigner<EthersSigner, N, C> implements SignOnlySigner<N, C> {
7
+ chain(): C;
8
+ address(): string;
9
+ sign(tx: UnsignedTransaction<N, C>[]): Promise<SignedTx[]>;
10
+ }
11
+ export declare function isEvmNativeSigner<N extends Network>(signer: Signer<N>): signer is EvmNativeSigner<N>;
12
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,MAAM,EACN,mBAAmB,EAGpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,QAAQ,EAER,MAAM,IAAI,YAAY,EAEvB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,SAAS,EAAa,MAAM,SAAS,CAAC;AAG/C,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAGD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,GAAG,SAAS,CAC7E,SAAQ,oBAAoB,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAC/C,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAE/B,KAAK,IAAI,CAAC;IAIV,OAAO,IAAI,MAAM;IAIX,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CA0CjE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EACjD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAChB,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAM9B"}
@@ -0,0 +1,79 @@
1
+ import { PlatformNativeSigner, chainToPlatform, isNativeSigner, } from '@wormhole-foundation/sdk-connect';
2
+ import { Wallet, } from 'ethers';
3
+ import { EvmPlatform } from './platform';
4
+ import { _platform } from './types';
5
+ // Get a SignOnlySigner for the EVM platform
6
+ export async function getEvmSignerForKey(rpc, privateKey) {
7
+ const [_, chain] = await EvmPlatform.chainFromRpc(rpc);
8
+ const _signer = new Wallet(privateKey, rpc);
9
+ return getEvmSignerForSigner(chain, _signer);
10
+ }
11
+ // Get a SignOnlySigner for the EVM platform
12
+ export async function getEvmSignerForSigner(chain, signer) {
13
+ const address = await signer.getAddress();
14
+ return new EvmNativeSigner(chain, address, signer);
15
+ }
16
+ export class EvmNativeSigner extends PlatformNativeSigner {
17
+ chain() {
18
+ return this._chain;
19
+ }
20
+ address() {
21
+ return this._address;
22
+ }
23
+ async sign(tx) {
24
+ const signed = [];
25
+ let nonce = await this._signer.getNonce();
26
+ // TODO: Better gas estimation/limits
27
+ let gasLimit = 500000n;
28
+ let maxFeePerGas = 1500000000n; // 1.5gwei
29
+ let maxPriorityFeePerGas = 100000000n; // 0.1gwei
30
+ // Celo does not support this call
31
+ if (this.chain() !== 'Celo') {
32
+ const feeData = await this._signer.provider.getFeeData();
33
+ maxFeePerGas = feeData.maxFeePerGas ?? maxFeePerGas;
34
+ maxPriorityFeePerGas =
35
+ feeData.maxPriorityFeePerGas ?? maxPriorityFeePerGas;
36
+ }
37
+ for (const txn of tx) {
38
+ const { transaction, description } = txn;
39
+ console.log(`Signing: ${description} for ${this.address()}`);
40
+ const t = {
41
+ ...transaction,
42
+ ...{
43
+ gasLimit,
44
+ maxFeePerGas,
45
+ maxPriorityFeePerGas,
46
+ nonce,
47
+ },
48
+ };
49
+ // TODO
50
+ // const estimate = await this.provider.estimateGas(t)
51
+ // t.gasLimit = estimate
52
+ signed.push(await this._signer.signTransaction(t));
53
+ nonce += 1;
54
+ }
55
+ return signed;
56
+ }
57
+ }
58
+ export function isEvmNativeSigner(signer) {
59
+ return (isNativeSigner(signer) &&
60
+ chainToPlatform(signer.chain()) === _platform &&
61
+ isEthersSigner(signer.unwrap()));
62
+ }
63
+ // No type guard provided by ethers, instanceof checks will fail on even slightly different versions of ethers
64
+ function isEthersSigner(thing) {
65
+ return ('provider' in thing &&
66
+ typeof thing.connect === 'function' &&
67
+ typeof thing.getAddress === 'function' &&
68
+ typeof thing.getNonce === 'function' &&
69
+ typeof thing.populateCall === 'function' &&
70
+ typeof thing.populateTransaction === 'function' &&
71
+ typeof thing.estimateGas === 'function' &&
72
+ typeof thing.call === 'function' &&
73
+ typeof thing.resolveName === 'function' &&
74
+ typeof thing.signTransaction === 'function' &&
75
+ typeof thing.sendTransaction === 'function' &&
76
+ typeof thing.signMessage === 'function' &&
77
+ typeof thing.signTypedData === 'function');
78
+ }
79
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EAKpB,eAAe,EACf,cAAc,GACf,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,MAAM,GAGP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAa,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/C,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAa,EACb,UAAkB;IAElB,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAgB,EAChB,MAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,OAAO,eACX,SAAQ,oBAAwC;IAGhD,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAA+B;QACxC,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE1C,qCAAqC;QACrC,IAAI,QAAQ,GAAG,OAAQ,CAAC;QACxB,IAAI,YAAY,GAAG,WAAc,CAAC,CAAC,UAAU;QAC7C,IAAI,oBAAoB,GAAG,UAAY,CAAC,CAAC,UAAU;QAEnD,kCAAkC;QAClC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE;YAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAS,CAAC,UAAU,EAAE,CAAC;YAC1D,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC;YACpD,oBAAoB;gBAClB,OAAO,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;SACxD;QAED,KAAK,MAAM,GAAG,IAAI,EAAE,EAAE;YACpB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,GAAuB;gBAC5B,GAAG,WAAW;gBACd,GAAG;oBACD,QAAQ;oBACR,YAAY;oBACZ,oBAAoB;oBACpB,KAAK;iBACN;aACF,CAAC;YAEF,OAAO;YACP,sDAAsD;YACtD,wBAAwB;YAExB,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnD,KAAK,IAAI,CAAC,CAAC;SACZ;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAiB;IAEjB,OAAO,CACL,cAAc,CAAC,MAAM,CAAC;QACtB,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS;QAC7C,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,8GAA8G;AAC9G,SAAS,cAAc,CAAC,KAAU;IAChC,OAAO,CACL,UAAU,IAAI,KAAK;QACnB,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;QACnC,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU;QACtC,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU;QACpC,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU;QACxC,OAAO,KAAK,CAAC,mBAAmB,KAAK,UAAU;QAC/C,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;QACvC,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;QAChC,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;QACvC,OAAO,KAAK,CAAC,eAAe,KAAK,UAAU;QAC3C,OAAO,KAAK,CAAC,eAAe,KAAK,UAAU;QAC3C,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;QACvC,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,CAC1C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './signer';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './signer';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Chain, SignOnlySigner, SignedTx, Signer, UnsignedTransaction, Network } from '@wormhole-foundation/connect-sdk';
2
+ import { ethers } from 'ethers';
3
+ export declare function getEvmSigner(rpc: ethers.Provider, privateKey: string): Promise<Signer>;
4
+ export declare class EvmSigner<N extends Network, C extends Chain> implements SignOnlySigner<N, C> {
5
+ private _chain;
6
+ private provider;
7
+ _wallet: ethers.Wallet;
8
+ constructor(_chain: C, provider: ethers.Provider, privateKey: string);
9
+ chain(): C;
10
+ address(): string;
11
+ sign(tx: UnsignedTransaction[]): Promise<SignedTx[]>;
12
+ }
13
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/testing/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,QAAQ,EACR,MAAM,EACN,mBAAmB,EACnB,OAAO,EACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,CAAC,QAAQ,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAGD,qBAAa,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,KAAK,CACvD,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAK7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAJlB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;gBAGb,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACjC,UAAU,EAAE,MAAM;IAKpB,KAAK,IAAI,CAAC;IAIV,OAAO,IAAI,MAAM;IAIX,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CA0C3D"}
@@ -0,0 +1,59 @@
1
+ import { ethers } from 'ethers';
2
+ import { EvmPlatform } from '../platform';
3
+ // Get a SignOnlySigner for the EVM platform
4
+ export async function getEvmSigner(rpc, privateKey) {
5
+ const [network, chain] = await EvmPlatform.chainFromRpc(rpc);
6
+ return new EvmSigner(chain, rpc, privateKey);
7
+ }
8
+ // EvmSigner implements SignOnlySender
9
+ export class EvmSigner {
10
+ _chain;
11
+ provider;
12
+ _wallet;
13
+ constructor(_chain, provider, privateKey) {
14
+ this._chain = _chain;
15
+ this.provider = provider;
16
+ this._wallet = new ethers.Wallet(privateKey, provider);
17
+ }
18
+ chain() {
19
+ return this._chain;
20
+ }
21
+ address() {
22
+ return this._wallet.address;
23
+ }
24
+ async sign(tx) {
25
+ const signed = [];
26
+ let nonce = await this.provider.getTransactionCount(this.address());
27
+ // TODO: Better gas estimation/limits
28
+ let gasLimit = 500000n;
29
+ let maxFeePerGas = 1500000000n; // 1.5gwei
30
+ let maxPriorityFeePerGas = 100000000n; // 0.1gwei
31
+ // Celo does not support this call
32
+ if (this._chain !== 'Celo') {
33
+ const feeData = await this.provider.getFeeData();
34
+ maxFeePerGas = feeData.maxFeePerGas ?? maxFeePerGas;
35
+ maxPriorityFeePerGas =
36
+ feeData.maxPriorityFeePerGas ?? maxPriorityFeePerGas;
37
+ }
38
+ for (const txn of tx) {
39
+ const { transaction, description } = txn;
40
+ console.log(`Signing: ${description} for ${this.address()}`);
41
+ const t = {
42
+ ...transaction,
43
+ ...{
44
+ gasLimit,
45
+ maxFeePerGas,
46
+ maxPriorityFeePerGas,
47
+ nonce,
48
+ },
49
+ };
50
+ // TODO
51
+ // const estimate = await this.provider.estimateGas(t)
52
+ // t.gasLimit = estimate
53
+ signed.push(await this._wallet.signTransaction(t));
54
+ nonce += 1;
55
+ }
56
+ return signed;
57
+ }
58
+ }
59
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/testing/signer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAoB,EACpB,UAAkB;IAElB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,IAAI,SAAS,CAA+B,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAC7E,CAAC;AAED,sCAAsC;AACtC,MAAM,OAAO,SAAS;IAMV;IACA;IAJV,OAAO,CAAgB;IAEvB,YACU,MAAS,EACT,QAAyB,EACjC,UAAkB;QAFV,WAAM,GAAN,MAAM,CAAG;QACT,aAAQ,GAAR,QAAQ,CAAiB;QAGjC,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAyB;QAClC,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEpE,qCAAqC;QACrC,IAAI,QAAQ,GAAG,OAAQ,CAAC;QACxB,IAAI,YAAY,GAAG,WAAc,CAAC,CAAC,UAAU;QAC7C,IAAI,oBAAoB,GAAG,UAAY,CAAC,CAAC,UAAU;QAEnD,kCAAkC;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACjD,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC;YACpD,oBAAoB;gBAClB,OAAO,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;SACxD;QAED,KAAK,MAAM,GAAG,IAAI,EAAE,EAAE;YACpB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,GAA8B;gBACnC,GAAG,WAAW;gBACd,GAAG;oBACD,QAAQ;oBACR,YAAY;oBACZ,oBAAoB;oBACpB,KAAK;iBACN;aACF,CAAC;YAEF,OAAO;YACP,sDAAsD;YACtD,wBAAwB;YAExB,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnD,KAAK,IAAI,CAAC,CAAC;SACZ;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,70 @@
1
+ import { PlatformToChains, UniversalOrNative } from '@wormhole-foundation/sdk-connect';
2
+ import { TransactionRequest } from 'ethers';
3
+ export declare const unusedNonce = 0;
4
+ export declare const unusedArbiterFee = 0n;
5
+ /**
6
+ * Runtime value for the EVM Platform
7
+ * */
8
+ export declare const _platform: 'Evm';
9
+ /**
10
+ * Type for the EVM Platform
11
+ */
12
+ export type EvmPlatformType = typeof _platform;
13
+ /**
14
+ * Type representing a union of the EVM Chains
15
+ */
16
+ export type EvmChains = PlatformToChains<EvmPlatformType>;
17
+ export type UniversalOrEvm = UniversalOrNative<EvmChains>;
18
+ export type AnyEvmAddress = UniversalOrEvm | string | Uint8Array;
19
+ export declare const addFrom: (txReq: TransactionRequest, from: string) => {
20
+ from: string;
21
+ type?: number | null | undefined;
22
+ to?: import("ethers").AddressLike | null | undefined;
23
+ nonce?: number | null | undefined;
24
+ gasLimit?: import("ethers").BigNumberish | null | undefined;
25
+ gasPrice?: import("ethers").BigNumberish | null | undefined;
26
+ maxPriorityFeePerGas?: import("ethers").BigNumberish | null | undefined;
27
+ maxFeePerGas?: import("ethers").BigNumberish | null | undefined;
28
+ data?: string | null | undefined;
29
+ value?: import("ethers").BigNumberish | null | undefined;
30
+ chainId?: import("ethers").BigNumberish | null | undefined;
31
+ accessList?: import("ethers").AccessListish | null | undefined;
32
+ customData?: any;
33
+ blockTag?: import("ethers").BlockTag | undefined;
34
+ enableCcipRead?: boolean | undefined;
35
+ };
36
+ export declare const addChainId: (txReq: TransactionRequest, chainId: bigint) => {
37
+ chainId: bigint;
38
+ type?: number | null | undefined;
39
+ to?: import("ethers").AddressLike | null | undefined;
40
+ from?: import("ethers").AddressLike | null | undefined;
41
+ nonce?: number | null | undefined;
42
+ gasLimit?: import("ethers").BigNumberish | null | undefined;
43
+ gasPrice?: import("ethers").BigNumberish | null | undefined;
44
+ maxPriorityFeePerGas?: import("ethers").BigNumberish | null | undefined;
45
+ maxFeePerGas?: import("ethers").BigNumberish | null | undefined;
46
+ data?: string | null | undefined;
47
+ value?: import("ethers").BigNumberish | null | undefined;
48
+ accessList?: import("ethers").AccessListish | null | undefined;
49
+ customData?: any;
50
+ blockTag?: import("ethers").BlockTag | undefined;
51
+ enableCcipRead?: boolean | undefined;
52
+ };
53
+ export declare const addValue: (txReq: TransactionRequest, value: bigint) => {
54
+ value: bigint;
55
+ type?: number | null | undefined;
56
+ to?: import("ethers").AddressLike | null | undefined;
57
+ from?: import("ethers").AddressLike | null | undefined;
58
+ nonce?: number | null | undefined;
59
+ gasLimit?: import("ethers").BigNumberish | null | undefined;
60
+ gasPrice?: import("ethers").BigNumberish | null | undefined;
61
+ maxPriorityFeePerGas?: import("ethers").BigNumberish | null | undefined;
62
+ maxFeePerGas?: import("ethers").BigNumberish | null | undefined;
63
+ data?: string | null | undefined;
64
+ chainId?: import("ethers").BigNumberish | null | undefined;
65
+ accessList?: import("ethers").AccessListish | null | undefined;
66
+ customData?: any;
67
+ blockTag?: import("ethers").BlockTag | undefined;
68
+ enableCcipRead?: boolean | undefined;
69
+ };
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;KAEK;AACL,eAAO,MAAM,SAAS,EAAE,KAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjE,eAAO,MAAM,OAAO,UAAW,kBAAkB,QAAQ,MAAM;;;;;;;;;;;;;;;;CAG7D,CAAC;AACH,eAAO,MAAM,UAAU,UAAW,kBAAkB,WAAW,MAAM;;;;;;;;;;;;;;;;CAGnE,CAAC;AACH,eAAO,MAAM,QAAQ,UAAW,kBAAkB,SAAS,MAAM;;;;;;;;;;;;;;;;CAG/D,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const unusedNonce = 0;
2
+ export const unusedArbiterFee = 0n;
3
+ /**
4
+ * Runtime value for the EVM Platform
5
+ * */
6
+ export const _platform = 'Evm';
7
+ export const addFrom = (txReq, from) => ({
8
+ ...txReq,
9
+ from,
10
+ });
11
+ export const addChainId = (txReq, chainId) => ({
12
+ ...txReq,
13
+ chainId,
14
+ });
15
+ export const addValue = (txReq, value) => ({
16
+ ...txReq,
17
+ value,
18
+ });
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;KAEK;AACL,MAAM,CAAC,MAAM,SAAS,GAAU,KAAK,CAAC;AActC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAyB,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;IACnE,GAAG,KAAK;IACR,IAAI;CACL,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAyB,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;IACzE,GAAG,KAAK;IACR,OAAO;CACR,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC;IACrE,GAAG,KAAK;IACR,KAAK;CACN,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Network, UnsignedTransaction } from '@wormhole-foundation/sdk-connect';
2
+ import { TransactionRequest } from 'ethers';
3
+ import { EvmChains } from './types';
4
+ /**
5
+ * An unsigned transaction for the EVM platform
6
+ */
7
+ export declare class EvmUnsignedTransaction<N extends Network, C extends EvmChains> implements UnsignedTransaction<N, C> {
8
+ readonly transaction: TransactionRequest;
9
+ readonly network: N;
10
+ readonly chain: C;
11
+ readonly description: string;
12
+ readonly parallelizable: boolean;
13
+ constructor(transaction: TransactionRequest, network: N, chain: C, description: string, parallelizable?: boolean);
14
+ }
15
+ //# sourceMappingURL=unsignedTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsignedTransaction.d.ts","sourceRoot":"","sources":["../../src/unsignedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;GAEG;AACH,qBAAa,sBAAsB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACxE,YAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IAGlC,QAAQ,CAAC,WAAW,EAAE,kBAAkB;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO;gBAJvB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,OAAe;CAE3C"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * An unsigned transaction for the EVM platform
3
+ */
4
+ export class EvmUnsignedTransaction {
5
+ transaction;
6
+ network;
7
+ chain;
8
+ description;
9
+ parallelizable;
10
+ constructor(transaction, network, chain, description, parallelizable = false) {
11
+ this.transaction = transaction;
12
+ this.network = network;
13
+ this.chain = chain;
14
+ this.description = description;
15
+ this.parallelizable = parallelizable;
16
+ }
17
+ }
18
+ //# sourceMappingURL=unsignedTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsignedTransaction.js","sourceRoot":"","sources":["../../src/unsignedTransaction.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAItB;IACA;IACA;IACA;IACA;IALX,YACW,WAA+B,EAC/B,OAAU,EACV,KAAQ,EACR,WAAmB,EACnB,iBAA0B,KAAK;QAJ/B,gBAAW,GAAX,WAAW,CAAoB;QAC/B,YAAO,GAAP,OAAO,CAAG;QACV,UAAK,GAAL,KAAK,CAAG;QACR,gBAAW,GAAX,WAAW,CAAQ;QACnB,mBAAc,GAAd,cAAc,CAAiB;IACvC,CAAC;CACL"}