@dynamic-labs/ethereum-aa 1.0.0-alpha.3 → 1.0.0-alpha.4

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/CHANGELOG.md CHANGED
@@ -1,4 +1,11 @@
1
1
 
2
+ ## [1.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.3...v1.0.0-alpha.4) (2023-11-28)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * update zerodev provider initialization ([#4015](https://github.com/dynamic-labs/DynamicAuth/issues/4015)) ([8faca00](https://github.com/dynamic-labs/DynamicAuth/commit/8faca00d414677adc5fecde451ca01da53fe9641))
8
+
2
9
  ## [1.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.2...v1.0.0-alpha.3) (2023-11-28)
3
10
 
4
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum-aa",
3
- "version": "1.0.0-alpha.3",
3
+ "version": "1.0.0-alpha.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -28,12 +28,12 @@
28
28
  "dependencies": {
29
29
  "@zerodev/sdk": "^4.1.5",
30
30
  "@dynamic-labs/sdk-api": "0.0.311",
31
- "@dynamic-labs/logger": "1.0.0-alpha.3",
32
- "@dynamic-labs/types": "1.0.0-alpha.3",
33
- "@dynamic-labs/utils": "1.0.0-alpha.3",
34
- "@dynamic-labs/viem-utils": "1.0.0-alpha.3",
35
- "@dynamic-labs/wallet-book": "1.0.0-alpha.3",
36
- "@dynamic-labs/wallet-connector-core": "1.0.0-alpha.3"
31
+ "@dynamic-labs/logger": "1.0.0-alpha.4",
32
+ "@dynamic-labs/types": "1.0.0-alpha.4",
33
+ "@dynamic-labs/utils": "1.0.0-alpha.4",
34
+ "@dynamic-labs/viem-utils": "1.0.0-alpha.4",
35
+ "@dynamic-labs/wallet-book": "1.0.0-alpha.4",
36
+ "@dynamic-labs/wallet-connector-core": "1.0.0-alpha.4"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "viem": "^1.1.0"
@@ -21,6 +21,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
21
21
  this.connectedChain = 'EVM';
22
22
  this.supportedChains = ['ETH', 'EVM'];
23
23
  this.isGasSponsorshipDisabled = false;
24
+ this.isEmbeddedWallet = true;
24
25
  this.name = 'ZeroDev';
25
26
  const zeroDevProjectId = (_a = opts.apiProviders.zerodev) === null || _a === void 0 ? void 0 : _a.clientId;
26
27
  if (!zeroDevProjectId) {
@@ -38,9 +39,10 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
38
39
  }
39
40
  setEoaConnector(connector) {
40
41
  return _tslib.__awaiter(this, void 0, void 0, function* () {
42
+ this.zeroDevProviderDeferredPromise = new utils.DeferredPromise();
41
43
  this.eoaConnector = connector;
42
44
  const signer = yield this.eoaConnector.getSigner();
43
- const zeroDevProvider = new sdk.ECDSAProvider({
45
+ const zeroDevProvider = yield sdk.ECDSAProvider.init({
44
46
  opts: {
45
47
  paymasterConfig: {
46
48
  onlySendSponsoredTransaction: true,
@@ -56,6 +58,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
56
58
  });
57
59
  this.zeroDevProvider = zeroDevProvider;
58
60
  yield this.checkIsProjectChainEnabled();
61
+ this.zeroDevProviderDeferredPromise.resolve();
59
62
  });
60
63
  }
61
64
  checkIsProjectChainEnabled() {
@@ -76,29 +79,33 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
76
79
  if (!eoaConnector)
77
80
  throw new utils.DynamicError('No EOA connector');
78
81
  const signer = yield eoaConnector.getSigner();
79
- return new sdk.ECDSAProvider({
82
+ return sdk.ECDSAProvider.init({
80
83
  owner: sdk.convertWalletClientToAccountSigner(signer),
81
84
  projectId: this.projectId,
82
85
  });
83
86
  });
84
87
  }
85
88
  fetchPublicAddress() {
86
- var _a;
89
+ var _a, _b;
87
90
  return _tslib.__awaiter(this, void 0, void 0, function* () {
88
- return (_a = this.zeroDevProvider) === null || _a === void 0 ? void 0 : _a.getAddress();
91
+ yield ((_a = this.zeroDevProviderDeferredPromise) === null || _a === void 0 ? void 0 : _a.promise);
92
+ return (_b = this.zeroDevProvider) === null || _b === void 0 ? void 0 : _b.getAddress();
89
93
  });
90
94
  }
91
95
  getConnectedAccounts() {
96
+ var _a;
92
97
  return _tslib.__awaiter(this, void 0, void 0, function* () {
98
+ yield ((_a = this.zeroDevProviderDeferredPromise) === null || _a === void 0 ? void 0 : _a.promise);
93
99
  return this.zeroDevProvider
94
100
  ? [yield this.zeroDevProvider.getAddress()]
95
101
  : [];
96
102
  });
97
103
  }
98
104
  getNetwork() {
99
- var _a;
105
+ var _a, _b;
100
106
  return _tslib.__awaiter(this, void 0, void 0, function* () {
101
- return (_a = this.zeroDevProvider) === null || _a === void 0 ? void 0 : _a.rpcClient.chain.id;
107
+ yield ((_a = this.zeroDevProviderDeferredPromise) === null || _a === void 0 ? void 0 : _a.promise);
108
+ return (_b = this.zeroDevProvider) === null || _b === void 0 ? void 0 : _b.rpcClient.chain.id;
102
109
  });
103
110
  }
104
111
  getTransport(provider) {
@@ -20,6 +20,13 @@ export declare class ZeroDevConnector extends WalletConnectorBase implements IAc
20
20
  supportedChains: Chain[];
21
21
  evmNetworks: EvmNetwork[];
22
22
  private isGasSponsorshipDisabled;
23
+ isEmbeddedWallet: boolean;
24
+ /**
25
+ * Deferred promise that resolves when the ZeroDev provider is set.
26
+ * This is used to make sure that the provider is set before any other method is called.
27
+ * This is needed because the provider is set asynchronously.
28
+ */
29
+ private zeroDevProviderDeferredPromise;
23
30
  name: string;
24
31
  get key(): string;
25
32
  private _walletUiUtils;
@@ -3,7 +3,7 @@ import { ECDSAProvider, convertWalletClientToAccountSigner } from '@zerodev/sdk'
3
3
  import { custom, createWalletClient, isHex, fromHex, formatEther } from 'viem';
4
4
  import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
5
5
  import { confirmationTransport, unFormatTransaction } from '@dynamic-labs/viem-utils';
6
- import { parseEvmNetworks, DynamicError, wrapMethodWithCallback, TransactionGasCannotBeSponsoredError } from '@dynamic-labs/utils';
6
+ import { parseEvmNetworks, DynamicError, DeferredPromise, wrapMethodWithCallback, TransactionGasCannotBeSponsoredError } from '@dynamic-labs/utils';
7
7
  import { logger } from './utils/logger.js';
8
8
  import { isGasNotSponsoredError } from './utils/isGasNotSponsoredError.js';
9
9
 
@@ -17,6 +17,7 @@ class ZeroDevConnector extends WalletConnectorBase {
17
17
  this.connectedChain = 'EVM';
18
18
  this.supportedChains = ['ETH', 'EVM'];
19
19
  this.isGasSponsorshipDisabled = false;
20
+ this.isEmbeddedWallet = true;
20
21
  this.name = 'ZeroDev';
21
22
  const zeroDevProjectId = (_a = opts.apiProviders.zerodev) === null || _a === void 0 ? void 0 : _a.clientId;
22
23
  if (!zeroDevProjectId) {
@@ -34,9 +35,10 @@ class ZeroDevConnector extends WalletConnectorBase {
34
35
  }
35
36
  setEoaConnector(connector) {
36
37
  return __awaiter(this, void 0, void 0, function* () {
38
+ this.zeroDevProviderDeferredPromise = new DeferredPromise();
37
39
  this.eoaConnector = connector;
38
40
  const signer = yield this.eoaConnector.getSigner();
39
- const zeroDevProvider = new ECDSAProvider({
41
+ const zeroDevProvider = yield ECDSAProvider.init({
40
42
  opts: {
41
43
  paymasterConfig: {
42
44
  onlySendSponsoredTransaction: true,
@@ -52,6 +54,7 @@ class ZeroDevConnector extends WalletConnectorBase {
52
54
  });
53
55
  this.zeroDevProvider = zeroDevProvider;
54
56
  yield this.checkIsProjectChainEnabled();
57
+ this.zeroDevProviderDeferredPromise.resolve();
55
58
  });
56
59
  }
57
60
  checkIsProjectChainEnabled() {
@@ -72,29 +75,33 @@ class ZeroDevConnector extends WalletConnectorBase {
72
75
  if (!eoaConnector)
73
76
  throw new DynamicError('No EOA connector');
74
77
  const signer = yield eoaConnector.getSigner();
75
- return new ECDSAProvider({
78
+ return ECDSAProvider.init({
76
79
  owner: convertWalletClientToAccountSigner(signer),
77
80
  projectId: this.projectId,
78
81
  });
79
82
  });
80
83
  }
81
84
  fetchPublicAddress() {
82
- var _a;
85
+ var _a, _b;
83
86
  return __awaiter(this, void 0, void 0, function* () {
84
- return (_a = this.zeroDevProvider) === null || _a === void 0 ? void 0 : _a.getAddress();
87
+ yield ((_a = this.zeroDevProviderDeferredPromise) === null || _a === void 0 ? void 0 : _a.promise);
88
+ return (_b = this.zeroDevProvider) === null || _b === void 0 ? void 0 : _b.getAddress();
85
89
  });
86
90
  }
87
91
  getConnectedAccounts() {
92
+ var _a;
88
93
  return __awaiter(this, void 0, void 0, function* () {
94
+ yield ((_a = this.zeroDevProviderDeferredPromise) === null || _a === void 0 ? void 0 : _a.promise);
89
95
  return this.zeroDevProvider
90
96
  ? [yield this.zeroDevProvider.getAddress()]
91
97
  : [];
92
98
  });
93
99
  }
94
100
  getNetwork() {
95
- var _a;
101
+ var _a, _b;
96
102
  return __awaiter(this, void 0, void 0, function* () {
97
- return (_a = this.zeroDevProvider) === null || _a === void 0 ? void 0 : _a.rpcClient.chain.id;
103
+ yield ((_a = this.zeroDevProviderDeferredPromise) === null || _a === void 0 ? void 0 : _a.promise);
104
+ return (_b = this.zeroDevProvider) === null || _b === void 0 ? void 0 : _b.rpcClient.chain.id;
98
105
  });
99
106
  }
100
107
  getTransport(provider) {