@dynamic-labs/ethereum-aa 4.0.0-alpha.2 → 4.0.0-alpha.20

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,187 @@
1
1
 
2
+ ## [4.0.0-alpha.20](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.19...v4.0.0-alpha.20) (2024-10-30)
3
+
4
+ ## [4.0.0-alpha.19](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.18...v4.0.0-alpha.19) (2024-10-29)
5
+
6
+
7
+ ### Bug Fixes
8
+
9
+ * ensure the client js will emit a change event after the value update ([#7284](https://github.com/dynamic-labs/dynamic-auth/issues/7284)) ([930d2e9](https://github.com/dynamic-labs/dynamic-auth/commit/930d2e9fdc75fd4a38da8ef6efc9d3e29152285b))
10
+
11
+ ## [4.0.0-alpha.18](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.17...v4.0.0-alpha.18) (2024-10-29)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **web-extension:** add color scheme style to prevent broken style ([#7247](https://github.com/dynamic-labs/dynamic-auth/issues/7247)) ([c525c50](https://github.com/dynamic-labs/dynamic-auth/commit/c525c50ac02997f3baf220fd2e67c6c4b3d10903))
17
+
18
+ ## [4.0.0-alpha.17](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.16...v4.0.0-alpha.17) (2024-10-28)
19
+
20
+
21
+ ### Features
22
+
23
+ * add support for eclipse ([#7255](https://github.com/dynamic-labs/dynamic-auth/issues/7255)) ([70e9830](https://github.com/dynamic-labs/dynamic-auth/commit/70e9830c6c801e0298825b914ee825b578350cf0))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * adds missing packages to zerodev-extension package ([#7187](https://github.com/dynamic-labs/dynamic-auth/issues/7187)) ([052a7e7](https://github.com/dynamic-labs/dynamic-auth/commit/052a7e7c08d458996d1be56f7697448ad5a9a1c9))
29
+ * unpin reactivity package for vue projects ([#7246](https://github.com/dynamic-labs/dynamic-auth/issues/7246)) ([18013e0](https://github.com/dynamic-labs/dynamic-auth/commit/18013e00d6855f8b371c9edb97594a08764c3868))
30
+
31
+ ## [4.0.0-alpha.16](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.15...v4.0.0-alpha.16) (2024-10-27)
32
+
33
+
34
+ ### Features
35
+
36
+ * add passkey to web-extension ([#7096](https://github.com/dynamic-labs/dynamic-auth/issues/7096)) ([a4b4643](https://github.com/dynamic-labs/dynamic-auth/commit/a4b4643e5307358425c878067bae095090f322ca))
37
+ * add social to web extension ([#7106](https://github.com/dynamic-labs/dynamic-auth/issues/7106)) ([422bc8e](https://github.com/dynamic-labs/dynamic-auth/commit/422bc8e2d276d960a7a76ad55a7b244c3fd83173))
38
+ * add support for compass and leap wallets ([9738749](https://github.com/dynamic-labs/dynamic-auth/commit/9738749bb5ed8e07a2582df255f683e4d408db93))
39
+ * add support for epicgames social ([#7220](https://github.com/dynamic-labs/dynamic-auth/issues/7220)) ([cb5bc30](https://github.com/dynamic-labs/dynamic-auth/commit/cb5bc30bc17d063bdaa9b427a9358b30124c4589))
40
+ * add web-extension to client ([#7180](https://github.com/dynamic-labs/dynamic-auth/issues/7180)) ([e2ccbb7](https://github.com/dynamic-labs/dynamic-auth/commit/e2ccbb77bdd0250d000a6cc4d89a2e5d7d2f4bb2))
41
+
42
+ ## [4.0.0-alpha.15](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.14...v4.0.0-alpha.15) (2024-10-19)
43
+
44
+ ## [4.0.0-alpha.14](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2024-10-18)
45
+
46
+ ## [4.0.0-alpha.13](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2024-10-18)
47
+
48
+
49
+ ### Bug Fixes
50
+
51
+ * improve displayed chain name in network switcher ([#7153](https://github.com/dynamic-labs/dynamic-auth/issues/7153)) ([55d2e5a](https://github.com/dynamic-labs/dynamic-auth/commit/55d2e5a9954bf0255b5caf7aba7a6f1f2e215967))
52
+
53
+ ## [4.0.0-alpha.12](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.11...v4.0.0-alpha.12) (2024-10-18)
54
+
55
+
56
+ ### Features
57
+
58
+ * add support for xverse account change event ([#7114](https://github.com/dynamic-labs/dynamic-auth/issues/7114)) ([79df047](https://github.com/dynamic-labs/dynamic-auth/commit/79df04775edb297a339e2d74adcc873584a6d8af))
59
+ * solana embedded signall headless ([#7132](https://github.com/dynamic-labs/dynamic-auth/issues/7132)) ([fe16b71](https://github.com/dynamic-labs/dynamic-auth/commit/fe16b71a4c0ad775f8de87ca899cfdd1071f11d6))
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * bug where embeddedWalletCreated event was fired before listener … ([#7151](https://github.com/dynamic-labs/dynamic-auth/issues/7151)) ([ae9da56](https://github.com/dynamic-labs/dynamic-auth/commit/ae9da56850130491384a2d5f47c1617815dcce5b))
65
+ * edge case where wallet book fails to load ([#7148](https://github.com/dynamic-labs/dynamic-auth/issues/7148)) ([805dc6d](https://github.com/dynamic-labs/dynamic-auth/commit/805dc6d7cc4cdf0b23748d82b3bd8216d88d55b5))
66
+ * issues where native currency icons were incorrect ([#7126](https://github.com/dynamic-labs/dynamic-auth/issues/7126)) ([8b8891a](https://github.com/dynamic-labs/dynamic-auth/commit/8b8891a52397e17cc127ea3a09ade14c4b70a8ee))
67
+ * remove now-unused sessionTimeout from useSocial ([#7123](https://github.com/dynamic-labs/dynamic-auth/issues/7123)) ([7959a8a](https://github.com/dynamic-labs/dynamic-auth/commit/7959a8a4c8ceb76c5c4f1ae91af204bf9c5cae7b))
68
+ * Revert: Update Exodus extension version " ([#7130](https://github.com/dynamic-labs/dynamic-auth/issues/7130)) ([f2274ae](https://github.com/dynamic-labs/dynamic-auth/commit/f2274aefd29bb9f3fb6de8493e4a5f73946a5600)), closes [#7129](https://github.com/dynamic-labs/dynamic-auth/issues/7129)
69
+ * use embedded primaryChain when passing undefined chains list to createTurnkeyWallet ([#7149](https://github.com/dynamic-labs/dynamic-auth/issues/7149)) ([c73a3ae](https://github.com/dynamic-labs/dynamic-auth/commit/c73a3aeeda8045b936d218f7078ad79967c321ef))
70
+
71
+ ## [4.0.0-alpha.11](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2024-10-15)
72
+
73
+
74
+ ### Bug Fixes
75
+
76
+ * missing null check in property accessor ([#7122](https://github.com/dynamic-labs/dynamic-auth/issues/7122)) ([bbb5e76](https://github.com/dynamic-labs/dynamic-auth/commit/bbb5e76c1284edad2829605444dda24971027a57))
77
+
78
+ ## [4.0.0-alpha.10](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2024-10-15)
79
+
80
+
81
+ ### Bug Fixes
82
+
83
+ * epicgames key name without dash ([#7119](https://github.com/dynamic-labs/dynamic-auth/issues/7119)) ([7388d6c](https://github.com/dynamic-labs/dynamic-auth/commit/7388d6cf98f6ee92e12003549dfd1ad81951119e))
84
+
85
+ ## [4.0.0-alpha.9](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2024-10-11)
86
+
87
+
88
+ ### Features
89
+
90
+ * add support for fordefi wallet ([#7109](https://github.com/dynamic-labs/dynamic-auth/issues/7109)) ([1adb6b1](https://github.com/dynamic-labs/dynamic-auth/commit/1adb6b15b7f8e9156207ac7addf4368d27c1e371))
91
+ * support ability to define additional oauth scopes ([#7105](https://github.com/dynamic-labs/dynamic-auth/issues/7105)) ([b303203](https://github.com/dynamic-labs/dynamic-auth/commit/b303203e8041c0cbf5f8968df0d3cde04ed1b22a))
92
+
93
+
94
+ ### Bug Fixes
95
+
96
+ * add eip6963 for exodus evm ([#7094](https://github.com/dynamic-labs/dynamic-auth/issues/7094)) ([c1ec5ef](https://github.com/dynamic-labs/dynamic-auth/commit/c1ec5ef4b6a531c563be4b690aa5f2bd4e7e6a16))
97
+
98
+ ## [4.0.0-alpha.8](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2024-10-07)
99
+
100
+
101
+ ### Features
102
+
103
+ * add support for dynamic event callbacks in rn ([#6997](https://github.com/dynamic-labs/dynamic-auth/issues/6997)) ([f9ac402](https://github.com/dynamic-labs/dynamic-auth/commit/f9ac40259d9168dfe69dafd5fd44478ba0e69505))
104
+ * add support for dynamic handlers in rn ([#7032](https://github.com/dynamic-labs/dynamic-auth/issues/7032)) ([f61f926](https://github.com/dynamic-labs/dynamic-auth/commit/f61f92666b6df8483dde2c47304fd4fb02690f7d))
105
+ * Support for multi-chain AA ([#6829](https://github.com/dynamic-labs/dynamic-auth/issues/6829)) ([b4a0c0a](https://github.com/dynamic-labs/dynamic-auth/commit/b4a0c0a4de48231a3748826600407c25abf6894d))
106
+
107
+
108
+ ### Bug Fixes
109
+
110
+ * persist isHardwareWalletEnabled on wallet connector ([#7025](https://github.com/dynamic-labs/dynamic-auth/issues/7025)) ([#7034](https://github.com/dynamic-labs/dynamic-auth/issues/7034)) ([4bfc301](https://github.com/dynamic-labs/dynamic-auth/commit/4bfc301d891f10db8c0bd31e5164c489a882c5c3))
111
+
112
+ ## [4.0.0-alpha.7](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.6...v4.0.0-alpha.7) (2024-10-03)
113
+
114
+
115
+ ### Features
116
+
117
+ * add account abstraction module to client ([#7002](https://github.com/dynamic-labs/dynamic-auth/issues/7002)) ([2f06975](https://github.com/dynamic-labs/dynamic-auth/commit/2f06975083dfa9d40537ef4a99b414eda1a68e01))
118
+ * add support for wallet events in rn ([#7061](https://github.com/dynamic-labs/dynamic-auth/issues/7061)) ([c7c4ce5](https://github.com/dynamic-labs/dynamic-auth/commit/c7c4ce51f27a2b84a1710c120d7006a00920c1e7))
119
+ * add zerodev extension for react native ([#7028](https://github.com/dynamic-labs/dynamic-auth/issues/7028)) ([858b8a8](https://github.com/dynamic-labs/dynamic-auth/commit/858b8a851cfa0cddc8e4559541b03992cf5ccdfc))
120
+
121
+
122
+ ### Bug Fixes
123
+
124
+ * do not modify sol tx blockhash as tx could have been signed already ([#7050](https://github.com/dynamic-labs/dynamic-auth/issues/7050)) ([770edb4](https://github.com/dynamic-labs/dynamic-auth/commit/770edb49ddc231b75fb45a9f6d563f22e5185df2))
125
+ * ensure the correct auth mode is used on social redirect ([#7047](https://github.com/dynamic-labs/dynamic-auth/issues/7047)) ([7c27172](https://github.com/dynamic-labs/dynamic-auth/commit/7c271721d5ddf19e3fd1bf56ddb1d49e0e2bca07))
126
+ * prevent react native message timeout before sdk is ready ([#7051](https://github.com/dynamic-labs/dynamic-auth/issues/7051)) ([6421237](https://github.com/dynamic-labs/dynamic-auth/commit/6421237d677d788b824d53432c1a75b9d571aa78))
127
+ * update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
128
+ * use project settings sdk network for send flow ([#7011](https://github.com/dynamic-labs/dynamic-auth/issues/7011)) ([983e796](https://github.com/dynamic-labs/dynamic-auth/commit/983e79632762f71ee0502c92057a32ea985ae19c))
129
+
130
+ ## [4.0.0-alpha.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.5...v4.0.0-alpha.6) (2024-10-01)
131
+
132
+
133
+ ### ⚠ BREAKING CHANGES
134
+
135
+ * remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
136
+
137
+ ### Features
138
+
139
+ * global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
140
+
141
+
142
+ ### Bug Fixes
143
+
144
+ * add popper context to send balance ([#7016](https://github.com/dynamic-labs/dynamic-auth/issues/7016)) ([73aa6f1](https://github.com/dynamic-labs/dynamic-auth/commit/73aa6f122afe0db660ebb654f3e018ae7bf445c5))
145
+ * add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
146
+ * don't re-fetch wallet address on network change ([#7019](https://github.com/dynamic-labs/dynamic-auth/issues/7019)) ([4e7900c](https://github.com/dynamic-labs/dynamic-auth/commit/4e7900cc24b3abda736bc81466eda7512cf7fc61))
147
+ * fix sign message with solana wallet standard provider ([#7014](https://github.com/dynamic-labs/dynamic-auth/issues/7014)) ([ffaf972](https://github.com/dynamic-labs/dynamic-auth/commit/ffaf972e8b190b0b8cd0103e0ef67bfdee6c8f7c))
148
+ * update wallet reference when user switches wallet in connect-only ([#7030](https://github.com/dynamic-labs/dynamic-auth/issues/7030)) ([75d9aa6](https://github.com/dynamic-labs/dynamic-auth/commit/75d9aa66f63fc5536caeff12d8b860c0ba86106f))
149
+
150
+
151
+ ## [4.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.4...v4.0.0-alpha.5) (2024-09-25)
152
+
153
+
154
+ ### Features
155
+
156
+ * add isInstalledOnBrowser prop to wallet options in useWalletOptions ([#6976](https://github.com/dynamic-labs/DynamicAuth/issues/6976)) ([0fda409](https://github.com/dynamic-labs/DynamicAuth/commit/0fda409b293c83d73869d791c3d38ac421dcdecb))
157
+
158
+
159
+ ### Bug Fixes
160
+
161
+ * **client:** return user profile when using sign in with external jwt ([#7004](https://github.com/dynamic-labs/DynamicAuth/issues/7004)) ([927cfb6](https://github.com/dynamic-labs/DynamicAuth/commit/927cfb69f3dd7f8b00e3f0f975277a84c99c830b))
162
+ * react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
163
+
164
+ ## [4.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.3...v4.0.0-alpha.4) (2024-09-23)
165
+
166
+
167
+ ### Bug Fixes
168
+
169
+ * issue where builtin stream module was a dependency ([#6968](https://github.com/dynamic-labs/DynamicAuth/issues/6968)) ([0661129](https://github.com/dynamic-labs/DynamicAuth/commit/0661129920ba70ebbcd4d17ee5aa988c51d1b477))
170
+ * update in memory secure storage ([#6955](https://github.com/dynamic-labs/DynamicAuth/issues/6955)) ([697fc20](https://github.com/dynamic-labs/DynamicAuth/commit/697fc20740b243fa31ecf06e8b2ed9d09932a544))
171
+
172
+ ## [4.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.2...v4.0.0-alpha.3) (2024-09-20)
173
+
174
+
175
+ ### Features
176
+
177
+ * developers provide global connectivity appkit project id ([#6941](https://github.com/dynamic-labs/DynamicAuth/issues/6941)) ([83760ea](https://github.com/dynamic-labs/DynamicAuth/commit/83760ea57591685b12caee945f173f6a7f9312d1))
178
+
179
+
180
+ ### Bug Fixes
181
+
182
+ * don't try to set up event listeners if wallet provider doesn't support it ([#6943](https://github.com/dynamic-labs/DynamicAuth/issues/6943)) ([439f1bb](https://github.com/dynamic-labs/DynamicAuth/commit/439f1bbb3c765959756cfc6eeb8429e4018e0379))
183
+ * dont verify all signatures for solana embedded multisig tx ([#6953](https://github.com/dynamic-labs/DynamicAuth/issues/6953)) ([7a7973e](https://github.com/dynamic-labs/DynamicAuth/commit/7a7973e05f0960421b348a55c6a00c9fd873b0b7))
184
+
2
185
  ## [4.0.0-alpha.2](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.1...v4.0.0-alpha.2) (2024-09-18)
3
186
 
4
187
 
package/package.cjs ADDED
@@ -0,0 +1,8 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var version = "4.0.0-alpha.20";
7
+
8
+ exports.version = version;
package/package.js ADDED
@@ -0,0 +1,4 @@
1
+ 'use client'
2
+ var version = "4.0.0-alpha.20";
3
+
4
+ export { version };
package/package.json CHANGED
@@ -1,16 +1,7 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum-aa",
3
- "version": "4.0.0-alpha.2",
4
- "repository": {
5
- "type": "git",
6
- "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
7
- "directory": "packages/ethereum-aa"
8
- },
3
+ "version": "4.0.0-alpha.20",
9
4
  "description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
10
- "bugs": {
11
- "url": "https://github.com/dynamic-labs/DynamicAuth/issues"
12
- },
13
- "homepage": "https://github.com/dynamic-labs/DynamicAuth#readme",
14
5
  "author": "Dynamic Labs, Inc.",
15
6
  "license": "MIT",
16
7
  "main": "./src/index.cjs",
@@ -25,18 +16,20 @@
25
16
  },
26
17
  "./package.json": "./package.json"
27
18
  },
19
+ "homepage": "https://www.dynamic.xyz/",
28
20
  "dependencies": {
29
- "@dynamic-labs/sdk-api-core": "0.0.530",
21
+ "@dynamic-labs/sdk-api-core": "0.0.559",
30
22
  "@zerodev/ecdsa-validator": "5.3.1",
31
23
  "@zerodev/multi-chain-validator": "5.3.3",
32
24
  "@zerodev/sdk": "5.3.4",
33
25
  "permissionless": "^0.1.20",
34
- "@dynamic-labs/ethereum-core": "4.0.0-alpha.2",
35
- "@dynamic-labs/logger": "4.0.0-alpha.2",
36
- "@dynamic-labs/types": "4.0.0-alpha.2",
37
- "@dynamic-labs/utils": "4.0.0-alpha.2",
38
- "@dynamic-labs/wallet-book": "4.0.0-alpha.2",
39
- "@dynamic-labs/wallet-connector-core": "4.0.0-alpha.2"
26
+ "@dynamic-labs/assert-package-version": "4.0.0-alpha.20",
27
+ "@dynamic-labs/ethereum-core": "4.0.0-alpha.20",
28
+ "@dynamic-labs/logger": "4.0.0-alpha.20",
29
+ "@dynamic-labs/types": "4.0.0-alpha.20",
30
+ "@dynamic-labs/utils": "4.0.0-alpha.20",
31
+ "@dynamic-labs/wallet-book": "4.0.0-alpha.20",
32
+ "@dynamic-labs/wallet-connector-core": "4.0.0-alpha.20"
40
33
  },
41
34
  "peerDependencies": {
42
35
  "viem": "^2.7.6"
@@ -4,28 +4,33 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../_virtual/_tslib.cjs');
7
- var multiChainValidator = require('@zerodev/multi-chain-validator');
8
7
  var viem = require('viem');
8
+ var accounts = require('viem/accounts');
9
9
  var utils$1 = require('permissionless/utils');
10
- var constants = require('@zerodev/sdk/constants');
11
- var ecdsaValidator = require('@zerodev/ecdsa-validator');
12
- var sdkApiCore = require('@dynamic-labs/sdk-api-core');
13
- var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
14
10
  var ethereumCore = require('@dynamic-labs/ethereum-core');
11
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
15
12
  var utils = require('@dynamic-labs/utils');
16
- var fetchChain = require('./utils/fetchChain.cjs');
13
+ var constants = require('./constants.cjs');
17
14
  var logger = require('./utils/logger.cjs');
18
15
  var createEcsdaKernelAccountClient = require('./utils/createEcsdaKernelAccountClient.cjs');
16
+ var getEcdsaValidator = require('./utils/getEcdsaValidator.cjs');
17
+ var getEntryPoint = require('./utils/getEntryPoint.cjs');
18
+ var getKernelVersion = require('./utils/getKernelVersion.cjs');
19
19
 
20
20
  class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
21
21
  constructor(opts) {
22
22
  var _a, _b, _c, _d;
23
23
  super(opts);
24
+ // provider map maintains the kernel clients per chain
25
+ this.providerMap = {};
26
+ // eoa connector map maintains the eoa address and connector for each smart wallet address
27
+ this.eoaConnectorMap = {};
24
28
  this.ChainWallet = ethereumCore.EthereumWallet;
25
29
  this.connectedChain = 'EVM';
26
30
  this.supportedChains = ['ETH', 'EVM'];
27
31
  this.isGasSponsorshipDisabled = false;
28
32
  this.isEmbeddedWallet = true;
33
+ this.providersFromApi = [];
29
34
  this.name = 'ZeroDev';
30
35
  this.overrideKey = 'zerodev';
31
36
  this.walletFallback = {
@@ -35,59 +40,64 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
35
40
  },
36
41
  name: 'ZeroDev',
37
42
  };
38
- const zeroDevProjectId = (_a = opts.apiProviders.zerodev) === null || _a === void 0 ? void 0 : _a.clientId;
39
- if (!zeroDevProjectId) {
40
- throw new Error('Missing ZeroDev project ID provided. Add your ZeroDev project id to your project configuration via the Dynamic Labs dashboard.');
41
- }
42
- this.projectId = zeroDevProjectId;
43
43
  this._walletUiUtils = opts.walletUiUtils;
44
44
  this.evmNetworks = utils.parseEvmNetworks(opts.evmNetworks);
45
- this.entryPoint = this.getEntryPoint((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.entryPointVersion);
46
- this.kernelVersion = this.getKernelVersion((_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.kernelVersion);
45
+ this.entryPoint = getEntryPoint.getEntryPoint((_a = opts.apiProviders.zerodev) === null || _a === void 0 ? void 0 : _a.entryPointVersion);
46
+ this.kernelVersion = getKernelVersion.getKernelVersion((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.kernelVersion, this.entryPoint);
47
+ // this is the list of providers from the api that are used for multi-chain account abstraction
48
+ this.providersFromApi =
49
+ ((_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.multichainAccountAbstractionProviders) || [];
50
+ const [defaultProvider] = this.providersFromApi;
51
+ this.clientId = defaultProvider === null || defaultProvider === void 0 ? void 0 : defaultProvider.clientId;
52
+ if (!this.clientId) {
53
+ throw new Error('Missing ZeroDev project ID provided. Add your ZeroDev project id to your project configuration via the Dynamic Labs dashboard.');
54
+ }
55
+ this.defaultChainId = defaultProvider === null || defaultProvider === void 0 ? void 0 : defaultProvider.chain;
47
56
  this.ecdsaProviderType = (_d = opts.apiProviders.zerodev) === null || _d === void 0 ? void 0 : _d.ecdsaProviderType;
48
57
  }
49
- getEntryPoint(entryPoint) {
50
- if (entryPoint === undefined ||
51
- entryPoint === sdkApiCore.ProviderEntryPointVersionEnum.V7) {
52
- return utils$1.ENTRYPOINT_ADDRESS_V07;
58
+ get currentNetworkProvider() {
59
+ // check if the last used chain id is in the provider map
60
+ if (this.providerMap[this.lastUsedChainId]) {
61
+ return this.providerMap[this.lastUsedChainId];
53
62
  }
54
- else if (entryPoint === sdkApiCore.ProviderEntryPointVersionEnum.V6) {
55
- return utils$1.ENTRYPOINT_ADDRESS_V06;
56
- }
57
- else {
58
- logger.logger.error('Invalid entry point version', entryPoint);
59
- return utils$1.ENTRYPOINT_ADDRESS_V07;
63
+ // if not, check if the default chain id is in the provider map
64
+ if (this.defaultChainId) {
65
+ return this.providerMap[this.defaultChainId];
60
66
  }
67
+ // if no chain id is found, return undefined
68
+ return undefined;
61
69
  }
62
- getKernelVersion(kernelVersion) {
63
- if (kernelVersion === sdkApiCore.ProviderKernelVersionEnum.V31 ||
64
- (kernelVersion === undefined &&
65
- this.entryPoint === utils$1.ENTRYPOINT_ADDRESS_V07)) {
66
- return constants.KERNEL_V3_1;
67
- }
68
- else if (kernelVersion === sdkApiCore.ProviderKernelVersionEnum.V30) {
69
- return constants.KERNEL_V3_0;
70
- }
71
- else if (kernelVersion === sdkApiCore.ProviderKernelVersionEnum.V24 ||
72
- this.entryPoint === utils$1.ENTRYPOINT_ADDRESS_V06 // v0.6 only supports v2.4
73
- ) {
74
- return constants.KERNEL_V2_4;
75
- }
76
- else {
77
- logger.logger.error('Invalid kernel version', kernelVersion);
78
- return constants.KERNEL_V3_1;
79
- }
70
+ get lastUsedChainId() {
71
+ var _a;
72
+ const storedChainId = utils.StorageService.getItem(constants.ZERO_DEV_LAST_USED_CHAIN_ID_KEY);
73
+ // returning string of unknown if no chain id is found to result in undefined provider lookup
74
+ return (_a = storedChainId !== null && storedChainId !== void 0 ? storedChainId : this.defaultChainId) !== null && _a !== void 0 ? _a : 'unknown';
80
75
  }
81
- getEcdsaValidator(ecdsaProviderType) {
82
- if (ecdsaProviderType === 'zerodev_signer_to_ecdsa') {
83
- return ecdsaValidator.signerToEcdsaValidator;
84
- }
85
- else if (ecdsaProviderType === 'zerodev_multi_chain') {
86
- return multiChainValidator.toMultiChainECDSAValidator;
87
- }
88
- else {
89
- return ecdsaValidator.signerToEcdsaValidator;
90
- }
76
+ get kernelClient() {
77
+ var _a;
78
+ return (_a = this.currentNetworkProvider) === null || _a === void 0 ? void 0 : _a.kernelClient;
79
+ }
80
+ get kernelClientWithSponsorship() {
81
+ var _a;
82
+ return (_a = this.currentNetworkProvider) === null || _a === void 0 ? void 0 : _a.kernelClientWithSponsorship;
83
+ }
84
+ supportsNetworkSwitching() {
85
+ return (Object.keys(this.providerMap).length > 1 && this.evmNetworks.length > 1);
86
+ }
87
+ switchNetwork(_a) {
88
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ networkChainId, }) {
89
+ if (!this.supportsNetworkSwitching())
90
+ return;
91
+ if (!networkChainId)
92
+ return;
93
+ const chainId = networkChainId.toString();
94
+ if (!this.providerMap[chainId]) {
95
+ throw new Error(`No provider found for chainId: ${chainId}`);
96
+ }
97
+ utils.StorageService.setItem(constants.ZERO_DEV_LAST_USED_CHAIN_ID_KEY, chainId);
98
+ const { handleChainChange } = walletConnectorCore.eventListenerHandlers(this);
99
+ handleChainChange(chainId);
100
+ });
91
101
  }
92
102
  /**
93
103
  * @deprecated You should get the EOA connector by passing the SCW to getEOAConnector,
@@ -104,10 +114,22 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
104
114
  }
105
115
  endSession() {
106
116
  return _tslib.__awaiter(this, void 0, void 0, function* () {
107
- localStorage.removeItem(fetchChain.cachedChainIdKey);
117
+ utils.StorageService.removeItem(constants.ZERO_DEV_LAST_USED_CHAIN_ID_KEY);
108
118
  });
109
119
  }
110
- setEoaConnector(connector) {
120
+ registerEoa(_a) {
121
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector = false, }) {
122
+ this.eoaConnectorMap[smartWalletAddress] = {
123
+ eoaAddress,
124
+ eoaConnector,
125
+ };
126
+ // if this is the primary wallet, set the eoa connector and kernel clients
127
+ if (shouldSetEoaConnector && this.eoaAddress !== eoaAddress) {
128
+ yield this.setEoaConnector(eoaAddress, eoaConnector);
129
+ }
130
+ });
131
+ }
132
+ setEoaConnector(eoaAddress, connector) {
111
133
  return _tslib.__awaiter(this, void 0, void 0, function* () {
112
134
  if (!connector) {
113
135
  logger.logger.error('No EOA connector provided');
@@ -115,24 +137,72 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
115
137
  }
116
138
  this.kernelClientDeferredPromise = new utils.DeferredPromise();
117
139
  this.eoaConnector = connector;
140
+ this.eoaAddress = eoaAddress;
118
141
  if (ethereumCore.isEthWalletConnector(this.eoaConnector) &&
119
142
  !this.eoaConnector.getActiveAccount()) {
120
143
  yield this.eoaConnector.getConnectedAccounts();
121
144
  }
122
145
  const signer = yield this.eoaConnector.getSigner();
123
- if (!(signer === null || signer === void 0 ? void 0 : signer.account)) {
124
- logger.logger.error('No signer account found');
125
- return;
146
+ signer.account = accounts.toAccount(eoaAddress);
147
+ yield this.generateProviderMap(signer);
148
+ this.evmNetworks = this.evmNetworks.filter((network) => Boolean(this.providerMap[network.chainId]));
149
+ this.kernelClientDeferredPromise.resolve();
150
+ });
151
+ }
152
+ warnIfProjectChainNotEnabled(chainId) {
153
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
154
+ var _a;
155
+ let chainIdToCheck = chainId;
156
+ if (!chainIdToCheck) {
157
+ const client = yield this.getPublicClient();
158
+ chainIdToCheck = (_a = client === null || client === void 0 ? void 0 : client.chain) === null || _a === void 0 ? void 0 : _a.id;
159
+ }
160
+ const isProjectChainEnabled = this.evmNetworks.some((network) => network.chainId === chainIdToCheck);
161
+ if (!isProjectChainEnabled) {
162
+ logger.logger.error(`Please make sure to enable (${chainIdToCheck}) in the Dynamic dashboard (https://app.dynamic.xyz/dashboard/configurations#evm).`);
126
163
  }
164
+ });
165
+ }
166
+ generateProviderMap(signer) {
167
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
168
+ // reset the chains provider map when eoa connector changes
169
+ this.providerMap = {};
170
+ for (const provider of this.providersFromApi) {
171
+ if (!this.providerMap[provider.chain]) {
172
+ this.providerMap[provider.chain] = {
173
+ kernelClient: yield this.getKernelClientWithoutSponsorshipValidation({
174
+ chainId: provider.chain,
175
+ projectId: provider.clientId,
176
+ signer,
177
+ }),
178
+ kernelClientWithSponsorship: yield this.getKernelClientWithSponsorshipValidation({
179
+ chainId: provider.chain,
180
+ projectId: provider.clientId,
181
+ signer,
182
+ }),
183
+ };
184
+ }
185
+ yield this.warnIfProjectChainNotEnabled(utils.parseChainId(provider.chain));
186
+ }
187
+ });
188
+ }
189
+ getKernelClientWithoutSponsorshipValidation(_a) {
190
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ projectId, signer, chainId, }) {
191
+ if (chainId && this.providerMap[chainId]) {
192
+ return this.providerMap[chainId].kernelClient;
193
+ }
194
+ const { eoaConnector } = this;
195
+ if (!eoaConnector)
196
+ throw new utils.DynamicError('No EOA connector');
127
197
  const kernelClient = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
128
198
  bundlerRpc: ZeroDevConnector.bundlerRpc,
129
- chain: yield fetchChain.fetchChain(this.projectId),
130
- ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
199
+ chain: ethereumCore.chainsMap[chainId],
200
+ ecdsaValidator: getEcdsaValidator.getEcdsaValidator(this.ecdsaProviderType),
131
201
  entryPointAddress: this.entryPoint,
132
202
  kernelVersion: this.kernelVersion,
133
203
  paymaster: 'NONE',
134
204
  paymasterRpc: ZeroDevConnector.paymasterRpc,
135
- projectId: this.projectId,
205
+ projectId,
136
206
  provider: ZeroDevConnector.bundlerProvider,
137
207
  signer: utils$1.walletClientToSmartAccountSigner(signer),
138
208
  });
@@ -140,51 +210,34 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
140
210
  this._walletUiUtils.disabledConfirmationOnce();
141
211
  return original(...args);
142
212
  });
143
- this.kernelClient = kernelClient;
144
- // set the provider with sponsorship enabled
145
- yield this.getKernelClientWithSponsorshipValidation();
146
- yield this.checkIsProjectChainEnabled();
147
- this.kernelClientDeferredPromise.resolve();
148
- });
149
- }
150
- checkIsProjectChainEnabled() {
151
- return _tslib.__awaiter(this, void 0, void 0, function* () {
152
- var _a, _b;
153
- const client = yield this.getPublicClient();
154
- const chainName = (_a = client === null || client === void 0 ? void 0 : client.chain) === null || _a === void 0 ? void 0 : _a.name;
155
- const chainId = (_b = client === null || client === void 0 ? void 0 : client.chain) === null || _b === void 0 ? void 0 : _b.id;
156
- const isProjectChainEnabled = this.evmNetworks.some((network) => network.chainId === chainId);
157
- if (!isProjectChainEnabled) {
158
- logger.logger.error(`Please make sure to enable ${chainName} (${chainId}) in the Dynamic dashboard (https://app.dynamic.xyz/dashboard/configurations#evm).`);
159
- }
213
+ return kernelClient;
160
214
  });
161
215
  }
162
- getKernelClientWithSponsorshipValidation() {
163
- return _tslib.__awaiter(this, void 0, void 0, function* () {
164
- if (this.kernelClientWithSponsorship) {
165
- return this.kernelClientWithSponsorship;
216
+ getKernelClientWithSponsorshipValidation(_a) {
217
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ projectId, signer, chainId, }) {
218
+ if (chainId && this.providerMap[chainId]) {
219
+ return this.providerMap[chainId].kernelClientWithSponsorship;
166
220
  }
167
221
  const { eoaConnector } = this;
168
222
  if (!eoaConnector)
169
223
  throw new utils.DynamicError('No EOA connector');
170
- const signer = yield eoaConnector.getSigner();
171
- this.kernelClientWithSponsorship = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
224
+ const kernelClientWithSponsorship = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
172
225
  bundlerRpc: ZeroDevConnector.bundlerRpc,
173
- chain: yield fetchChain.fetchChain(this.projectId),
174
- ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
226
+ chain: ethereumCore.chainsMap[chainId],
227
+ ecdsaValidator: getEcdsaValidator.getEcdsaValidator(this.ecdsaProviderType),
175
228
  entryPointAddress: this.entryPoint,
176
229
  kernelVersion: this.kernelVersion,
177
230
  paymaster: 'SPONSOR',
178
231
  paymasterRpc: ZeroDevConnector.paymasterRpc,
179
- projectId: this.projectId,
232
+ projectId,
180
233
  provider: ZeroDevConnector.bundlerProvider,
181
234
  signer: utils$1.walletClientToSmartAccountSigner(signer),
182
235
  });
183
- utils.wrapMethodWithCallback(this.kernelClientWithSponsorship, 'sendUserOperation', (original, ...args) => {
236
+ utils.wrapMethodWithCallback(kernelClientWithSponsorship, 'sendUserOperation', (original, ...args) => {
184
237
  this._walletUiUtils.disabledConfirmationOnce();
185
238
  return original(...args);
186
239
  });
187
- return this.kernelClientWithSponsorship;
240
+ return kernelClientWithSponsorship;
188
241
  });
189
242
  }
190
243
  getAddress() {
@@ -225,7 +278,10 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
225
278
  this._walletUiUtils.disabledConfirmationOnce();
226
279
  const effectiveProvider = this.isGasSponsorshipDisabled
227
280
  ? provider
228
- : yield this.getKernelClientWithSponsorshipValidation();
281
+ : this.kernelClientWithSponsorship;
282
+ if (!effectiveProvider) {
283
+ throw new utils.DynamicError('No provider');
284
+ }
229
285
  const response = yield effectiveProvider.sendTransaction(ethereumCore.unFormatTransaction(transaction));
230
286
  return response;
231
287
  }
@@ -263,7 +319,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
263
319
  var _a;
264
320
  const provider = this.kernelClient;
265
321
  if (!provider)
266
- throw new utils.DynamicError('No provider');
322
+ return undefined;
267
323
  const transport = this.getTransport(provider);
268
324
  const address = (_a = provider.account) === null || _a === void 0 ? void 0 : _a.address;
269
325
  const walletClient = viem.createWalletClient({
@@ -278,7 +334,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
278
334
  var _a;
279
335
  const provider = (_a = this.kernelClient) === null || _a === void 0 ? void 0 : _a.extend(viem.publicActions);
280
336
  if (!provider)
281
- throw new utils.DynamicError('No provider');
337
+ return undefined;
282
338
  return provider;
283
339
  });
284
340
  }
@@ -290,7 +346,10 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
290
346
  canSponsorTransactionGas(transaction) {
291
347
  return _tslib.__awaiter(this, void 0, void 0, function* () {
292
348
  try {
293
- const kernelClientWithSponsorship = yield this.getKernelClientWithSponsorshipValidation();
349
+ const { kernelClientWithSponsorship } = this;
350
+ if (!kernelClientWithSponsorship) {
351
+ throw new utils.DynamicError('No kernel client with sponsorship found');
352
+ }
294
353
  const userOperation = {
295
354
  callData: yield kernelClientWithSponsorship.account.encodeCallData({
296
355
  data: transaction.data ? transaction.data : '0x',
@@ -351,23 +410,14 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
351
410
  });
352
411
  }
353
412
  validateActiveWallet(expectedAddress) {
354
- const _super = Object.create(null, {
355
- validateActiveWallet: { get: () => super.validateActiveWallet }
356
- });
357
413
  return _tslib.__awaiter(this, void 0, void 0, function* () {
358
- var _a;
359
- const eoaConnector = this === null || this === void 0 ? void 0 : this.eoaConnector;
360
- if (eoaConnector && walletConnectorCore.isTurnkeyWalletConnector(eoaConnector)) {
361
- const verifiedCredentials = eoaConnector === null || eoaConnector === void 0 ? void 0 : eoaConnector.verifiedCredentials;
362
- const expectedEoaAddress = (_a = verifiedCredentials === null || verifiedCredentials === void 0 ? void 0 : verifiedCredentials.find((vc) => vc.smartWalletRefAddress === expectedAddress)) === null || _a === void 0 ? void 0 : _a.address;
363
- if (!expectedEoaAddress) {
364
- throw new utils.DynamicError('No EOA connector');
365
- }
366
- yield (eoaConnector === null || eoaConnector === void 0 ? void 0 : eoaConnector.validateActiveWallet(expectedEoaAddress));
367
- }
368
- else {
369
- yield _super.validateActiveWallet.call(this, expectedAddress);
414
+ const eoa = this.eoaConnectorMap[expectedAddress];
415
+ if (!eoa) {
416
+ throw new utils.DynamicError('No EOA connector');
370
417
  }
418
+ const { eoaAddress, eoaConnector } = eoa;
419
+ yield eoaConnector.validateActiveWallet(eoaAddress);
420
+ yield this.setEoaConnector(eoaAddress, eoaConnector);
371
421
  });
372
422
  }
373
423
  }