@wormhole-foundation/sdk-evm 0.5.2-beta.0 → 0.5.2-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,20 @@
1
1
  import type { Network, SignOnlySigner, SignedTx, Signer, UnsignedTransaction } from '@wormhole-foundation/sdk-connect';
2
2
  import { PlatformNativeSigner } from '@wormhole-foundation/sdk-connect';
3
- import type { Provider, Signer as EthersSigner } from 'ethers';
3
+ import type { Signer as EthersSigner, Provider } from 'ethers';
4
4
  import type { EvmChains } from './types.js';
5
+ export declare function getEvmSigner(rpc: Provider, key: string | EthersSigner, opts?: {
6
+ maxGasLimit?: bigint;
7
+ chain?: EvmChains;
8
+ }): Promise<Signer>;
5
9
  export declare function getEvmSignerForKey(rpc: Provider, privateKey: string): Promise<Signer>;
6
- export declare function getEvmSignerForSigner(chain: EvmChains, signer: EthersSigner): Promise<Signer>;
10
+ export declare function getEvmSignerForSigner(signer: EthersSigner): Promise<Signer>;
7
11
  export declare class EvmNativeSigner<N extends Network, C extends EvmChains = EvmChains> extends PlatformNativeSigner<EthersSigner, N, C> implements SignOnlySigner<N, C> {
12
+ readonly opts?: {
13
+ maxGasLimit?: bigint | undefined;
14
+ } | undefined;
15
+ constructor(_chain: C, _address: string, _signer: EthersSigner, opts?: {
16
+ maxGasLimit?: bigint | undefined;
17
+ } | undefined);
8
18
  chain(): C;
9
19
  address(): string;
10
20
  sign(tx: UnsignedTransaction<N, C>[]): Promise<SignedTx[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,MAAM,EACN,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,IAAI,YAAY,EAEvB,MAAM,QAAQ,CAAC;AAGhB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,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"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,MAAM,EACN,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,MAAM,IAAI,YAAY,EACtB,QAAQ,EAET,MAAM,QAAQ,CAAC;AAGhB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,wBAAsB,YAAY,CAChC,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,MAAM,GAAG,YAAY,EAC1B,IAAI,CAAC,EAAE;IACL,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,GACA,OAAO,CAAC,MAAM,CAAC,CAajB;AAGD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAGD,wBAAsB,qBAAqB,CACzC,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;IAM7B,QAAQ,CAAC,IAAI,CAAC;;;gBAHd,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,EACZ,IAAI,CAAC;;iBAA0B;IAK1C,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;CA+CjE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EACjD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAChB,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAM9B"}
@@ -1,24 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isEvmNativeSigner = exports.EvmNativeSigner = exports.getEvmSignerForSigner = exports.getEvmSignerForKey = void 0;
3
+ exports.isEvmNativeSigner = exports.EvmNativeSigner = exports.getEvmSignerForSigner = exports.getEvmSignerForKey = exports.getEvmSigner = void 0;
4
4
  const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
5
  const ethers_1 = require("ethers");
6
6
  const platform_js_1 = require("./platform.js");
7
7
  const types_js_1 = require("./types.js");
8
+ async function getEvmSigner(rpc, key, opts) {
9
+ const signer = typeof key === 'string' ? new ethers_1.Wallet(key, rpc) : key;
10
+ const chain = opts?.chain ?? (await platform_js_1.EvmPlatform.chainFromRpc(rpc))[1];
11
+ const managedSigner = new ethers_1.NonceManager(signer);
12
+ return new EvmNativeSigner(chain, await signer.getAddress(), managedSigner.connect(rpc), opts);
13
+ }
14
+ exports.getEvmSigner = getEvmSigner;
8
15
  // Get a SignOnlySigner for the EVM platform
9
16
  async function getEvmSignerForKey(rpc, privateKey) {
10
- const [_, chain] = await platform_js_1.EvmPlatform.chainFromRpc(rpc);
11
- const _signer = new ethers_1.Wallet(privateKey, rpc);
12
- return getEvmSignerForSigner(chain, _signer);
17
+ return getEvmSigner(rpc, privateKey);
13
18
  }
14
19
  exports.getEvmSignerForKey = getEvmSignerForKey;
15
20
  // Get a SignOnlySigner for the EVM platform
16
- async function getEvmSignerForSigner(chain, signer) {
17
- const address = await signer.getAddress();
18
- return new EvmNativeSigner(chain, address, signer);
21
+ async function getEvmSignerForSigner(signer) {
22
+ if (!signer.provider)
23
+ throw new Error('Signer must have a provider');
24
+ return getEvmSigner(signer.provider, signer, {});
19
25
  }
20
26
  exports.getEvmSignerForSigner = getEvmSignerForSigner;
21
27
  class EvmNativeSigner extends sdk_connect_1.PlatformNativeSigner {
28
+ opts;
29
+ constructor(_chain, _address, _signer, opts) {
30
+ super(_chain, _address, _signer);
31
+ this.opts = opts;
32
+ }
22
33
  chain() {
23
34
  return this._chain;
24
35
  }
@@ -27,9 +38,8 @@ class EvmNativeSigner extends sdk_connect_1.PlatformNativeSigner {
27
38
  }
28
39
  async sign(tx) {
29
40
  const signed = [];
30
- let nonce = await this._signer.getNonce();
31
- // TODO: Better gas estimation/limits
32
- let gasLimit = 500000n;
41
+ // default gas limit
42
+ const gasLimit = this.opts?.maxGasLimit ?? 500000n;
33
43
  let maxFeePerGas = 1500000000n; // 1.5gwei
34
44
  let maxPriorityFeePerGas = 100000000n; // 0.1gwei
35
45
  // Celo does not support this call
@@ -45,17 +55,25 @@ class EvmNativeSigner extends sdk_connect_1.PlatformNativeSigner {
45
55
  const t = {
46
56
  ...transaction,
47
57
  ...{
48
- gasLimit,
49
58
  maxFeePerGas,
50
59
  maxPriorityFeePerGas,
51
- nonce,
60
+ gasLimit,
61
+ nonce: await this._signer.getNonce(),
52
62
  },
53
63
  };
54
- // TODO
55
- // const estimate = await this.provider.estimateGas(t)
56
- // t.gasLimit = estimate
64
+ // try {
65
+ // const estimate = await this._signer.provider!.estimateGas(t);
66
+ // t.gasLimit = estimate + estimate / 10n; // Add 10% buffer
67
+ // if (this.opts?.maxGasLimit && t.gasLimit > this.opts?.maxGasLimit) {
68
+ // throw new Error(
69
+ // `Gas limit ${t.gasLimit} exceeds maxGasLimit ${this.opts?.maxGasLimit}`,
70
+ // );
71
+ // }
72
+ // } catch (e) {
73
+ // console.info('Failed to estimate gas for transaction: ', e);
74
+ // console.info('Using gas limit: ', t.gasLimit);
75
+ // }
57
76
  signed.push(await this._signer.signTransaction(t));
58
- nonce += 1;
59
77
  }
60
78
  return signed;
61
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,20 @@
1
1
  import type { Network, SignOnlySigner, SignedTx, Signer, UnsignedTransaction } from '@wormhole-foundation/sdk-connect';
2
2
  import { PlatformNativeSigner } from '@wormhole-foundation/sdk-connect';
3
- import type { Provider, Signer as EthersSigner } from 'ethers';
3
+ import type { Signer as EthersSigner, Provider } from 'ethers';
4
4
  import type { EvmChains } from './types.js';
5
+ export declare function getEvmSigner(rpc: Provider, key: string | EthersSigner, opts?: {
6
+ maxGasLimit?: bigint;
7
+ chain?: EvmChains;
8
+ }): Promise<Signer>;
5
9
  export declare function getEvmSignerForKey(rpc: Provider, privateKey: string): Promise<Signer>;
6
- export declare function getEvmSignerForSigner(chain: EvmChains, signer: EthersSigner): Promise<Signer>;
10
+ export declare function getEvmSignerForSigner(signer: EthersSigner): Promise<Signer>;
7
11
  export declare class EvmNativeSigner<N extends Network, C extends EvmChains = EvmChains> extends PlatformNativeSigner<EthersSigner, N, C> implements SignOnlySigner<N, C> {
12
+ readonly opts?: {
13
+ maxGasLimit?: bigint | undefined;
14
+ } | undefined;
15
+ constructor(_chain: C, _address: string, _signer: EthersSigner, opts?: {
16
+ maxGasLimit?: bigint | undefined;
17
+ } | undefined);
8
18
  chain(): C;
9
19
  address(): string;
10
20
  sign(tx: UnsignedTransaction<N, C>[]): Promise<SignedTx[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,MAAM,EACN,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,IAAI,YAAY,EAEvB,MAAM,QAAQ,CAAC;AAGhB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,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"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,MAAM,EACN,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,MAAM,IAAI,YAAY,EACtB,QAAQ,EAET,MAAM,QAAQ,CAAC;AAGhB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,wBAAsB,YAAY,CAChC,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,MAAM,GAAG,YAAY,EAC1B,IAAI,CAAC,EAAE;IACL,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,GACA,OAAO,CAAC,MAAM,CAAC,CAajB;AAGD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAGD,wBAAsB,qBAAqB,CACzC,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;IAM7B,QAAQ,CAAC,IAAI,CAAC;;;gBAHd,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,EACZ,IAAI,CAAC;;iBAA0B;IAK1C,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;CA+CjE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EACjD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAChB,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAM9B"}
@@ -1,19 +1,29 @@
1
1
  import { PlatformNativeSigner, chainToPlatform, isNativeSigner, } from '@wormhole-foundation/sdk-connect';
2
- import { Wallet } from 'ethers';
2
+ import { NonceManager, Wallet } from 'ethers';
3
3
  import { EvmPlatform } from './platform.js';
4
4
  import { _platform } from './types.js';
5
+ export async function getEvmSigner(rpc, key, opts) {
6
+ const signer = typeof key === 'string' ? new Wallet(key, rpc) : key;
7
+ const chain = opts?.chain ?? (await EvmPlatform.chainFromRpc(rpc))[1];
8
+ const managedSigner = new NonceManager(signer);
9
+ return new EvmNativeSigner(chain, await signer.getAddress(), managedSigner.connect(rpc), opts);
10
+ }
5
11
  // Get a SignOnlySigner for the EVM platform
6
12
  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);
13
+ return getEvmSigner(rpc, privateKey);
10
14
  }
11
15
  // 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);
16
+ export async function getEvmSignerForSigner(signer) {
17
+ if (!signer.provider)
18
+ throw new Error('Signer must have a provider');
19
+ return getEvmSigner(signer.provider, signer, {});
15
20
  }
16
21
  export class EvmNativeSigner extends PlatformNativeSigner {
22
+ opts;
23
+ constructor(_chain, _address, _signer, opts) {
24
+ super(_chain, _address, _signer);
25
+ this.opts = opts;
26
+ }
17
27
  chain() {
18
28
  return this._chain;
19
29
  }
@@ -22,9 +32,8 @@ export class EvmNativeSigner extends PlatformNativeSigner {
22
32
  }
23
33
  async sign(tx) {
24
34
  const signed = [];
25
- let nonce = await this._signer.getNonce();
26
- // TODO: Better gas estimation/limits
27
- let gasLimit = 500000n;
35
+ // default gas limit
36
+ const gasLimit = this.opts?.maxGasLimit ?? 500000n;
28
37
  let maxFeePerGas = 1500000000n; // 1.5gwei
29
38
  let maxPriorityFeePerGas = 100000000n; // 0.1gwei
30
39
  // Celo does not support this call
@@ -40,17 +49,25 @@ export class EvmNativeSigner extends PlatformNativeSigner {
40
49
  const t = {
41
50
  ...transaction,
42
51
  ...{
43
- gasLimit,
44
52
  maxFeePerGas,
45
53
  maxPriorityFeePerGas,
46
- nonce,
54
+ gasLimit,
55
+ nonce: await this._signer.getNonce(),
47
56
  },
48
57
  };
49
- // TODO
50
- // const estimate = await this.provider.estimateGas(t)
51
- // t.gasLimit = estimate
58
+ // try {
59
+ // const estimate = await this._signer.provider!.estimateGas(t);
60
+ // t.gasLimit = estimate + estimate / 10n; // Add 10% buffer
61
+ // if (this.opts?.maxGasLimit && t.gasLimit > this.opts?.maxGasLimit) {
62
+ // throw new Error(
63
+ // `Gas limit ${t.gasLimit} exceeds maxGasLimit ${this.opts?.maxGasLimit}`,
64
+ // );
65
+ // }
66
+ // } catch (e) {
67
+ // console.info('Failed to estimate gas for transaction: ', e);
68
+ // console.info('Using gas limit: ', t.gasLimit);
69
+ // }
52
70
  signed.push(await this._signer.signTransaction(t));
53
- nonce += 1;
54
71
  }
55
72
  return signed;
56
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,cAAc,GACf,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAa,EACb,GAA0B,EAC1B,IAGC;IAED,MAAM,MAAM,GACV,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAEvD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAE/C,OAAO,IAAI,eAAe,CACxB,KAAK,EACL,MAAM,MAAM,CAAC,UAAU,EAAE,EACzB,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAC1B,IAAI,CACL,CAAC;AACJ,CAAC;AAED,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAa,EACb,UAAkB;IAElB,OAAO,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAoB;IAEpB,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC,MAAM,CAAC,QAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,OAAO,eACX,SAAQ,oBAAwC;IAOrC;IAJX,YACE,MAAS,EACT,QAAgB,EAChB,OAAqB,EACZ,IAA+B;QAExC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAFxB,SAAI,GAAJ,IAAI,CAA2B;IAG1C,CAAC;IAED,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,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,OAAQ,CAAC;QAEpD,IAAI,YAAY,GAAG,WAAc,CAAC,CAAC,UAAU;QAC7C,IAAI,oBAAoB,GAAG,UAAY,CAAC,CAAC,UAAU;QACnD,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,YAAY;oBACZ,oBAAoB;oBACpB,QAAQ;oBACR,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;iBACrC;aACF,CAAC;YAEF,QAAQ;YACR,kEAAkE;YAClE,8DAA8D;YAC9D,yEAAyE;YACzE,uBAAuB;YACvB,iFAAiF;YACjF,SAAS;YACT,MAAM;YACN,gBAAgB;YAChB,iEAAiE;YACjE,mDAAmD;YACnD,IAAI;YAEJ,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wormhole-foundation/sdk-evm",
3
- "version": "0.5.2-beta.0",
3
+ "version": "0.5.2-beta.10",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/wormhole-foundation/connect-sdk.git"
@@ -61,7 +61,7 @@
61
61
  "nock": "13.3.8"
62
62
  },
63
63
  "dependencies": {
64
- "@wormhole-foundation/sdk-connect": "0.5.2-beta.0",
64
+ "@wormhole-foundation/sdk-connect": "0.5.2-beta.10",
65
65
  "typechain": "^8.2.0",
66
66
  "ethers": "^6.5.1",
67
67
  "@typechain/ethers-v6": "^0.4.0"