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

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,189 @@
1
1
 
2
+ ## [4.0.0-alpha.21](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.20...v4.0.0-alpha.21) (2024-10-30)
3
+
4
+ ## [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)
5
+
6
+ ## [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)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * 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))
12
+
13
+ ## [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)
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **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))
19
+
20
+ ## [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)
21
+
22
+
23
+ ### Features
24
+
25
+ * add support for eclipse ([#7255](https://github.com/dynamic-labs/dynamic-auth/issues/7255)) ([70e9830](https://github.com/dynamic-labs/dynamic-auth/commit/70e9830c6c801e0298825b914ee825b578350cf0))
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * 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))
31
+ * 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))
32
+
33
+ ## [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)
34
+
35
+
36
+ ### Features
37
+
38
+ * 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))
39
+ * 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))
40
+ * add support for compass and leap wallets ([9738749](https://github.com/dynamic-labs/dynamic-auth/commit/9738749bb5ed8e07a2582df255f683e4d408db93))
41
+ * 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))
42
+ * 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))
43
+
44
+ ## [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)
45
+
46
+ ## [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)
47
+
48
+ ## [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)
49
+
50
+
51
+ ### Bug Fixes
52
+
53
+ * 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))
54
+
55
+ ## [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)
56
+
57
+
58
+ ### Features
59
+
60
+ * 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))
61
+ * solana embedded signall headless ([#7132](https://github.com/dynamic-labs/dynamic-auth/issues/7132)) ([fe16b71](https://github.com/dynamic-labs/dynamic-auth/commit/fe16b71a4c0ad775f8de87ca899cfdd1071f11d6))
62
+
63
+
64
+ ### Bug Fixes
65
+
66
+ * 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))
67
+ * 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))
68
+ * 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))
69
+ * 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))
70
+ * 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)
71
+ * 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))
72
+
73
+ ## [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)
74
+
75
+
76
+ ### Bug Fixes
77
+
78
+ * 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))
79
+
80
+ ## [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)
81
+
82
+
83
+ ### Bug Fixes
84
+
85
+ * 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))
86
+
87
+ ## [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)
88
+
89
+
90
+ ### Features
91
+
92
+ * 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))
93
+ * 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))
94
+
95
+
96
+ ### Bug Fixes
97
+
98
+ * 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))
99
+
100
+ ## [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)
101
+
102
+
103
+ ### Features
104
+
105
+ * 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))
106
+ * 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))
107
+ * 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))
108
+
109
+
110
+ ### Bug Fixes
111
+
112
+ * 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))
113
+
114
+ ## [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)
115
+
116
+
117
+ ### Features
118
+
119
+ * 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))
120
+ * 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))
121
+ * 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))
122
+
123
+
124
+ ### Bug Fixes
125
+
126
+ * 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))
127
+ * 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))
128
+ * 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))
129
+ * update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
130
+ * 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))
131
+
132
+ ## [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)
133
+
134
+
135
+ ### ⚠ BREAKING CHANGES
136
+
137
+ * remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
138
+
139
+ ### Features
140
+
141
+ * global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
142
+
143
+
144
+ ### Bug Fixes
145
+
146
+ * 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))
147
+ * add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
148
+ * 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))
149
+ * 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))
150
+ * 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))
151
+
152
+
153
+ ## [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)
154
+
155
+
156
+ ### Features
157
+
158
+ * 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))
159
+
160
+
161
+ ### Bug Fixes
162
+
163
+ * **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))
164
+ * react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
165
+
166
+ ## [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)
167
+
168
+
169
+ ### Bug Fixes
170
+
171
+ * 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))
172
+ * update in memory secure storage ([#6955](https://github.com/dynamic-labs/DynamicAuth/issues/6955)) ([697fc20](https://github.com/dynamic-labs/DynamicAuth/commit/697fc20740b243fa31ecf06e8b2ed9d09932a544))
173
+
174
+ ## [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)
175
+
176
+
177
+ ### Features
178
+
179
+ * 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))
180
+
181
+
182
+ ### Bug Fixes
183
+
184
+ * 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))
185
+ * 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))
186
+
2
187
  ## [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
188
 
4
189
 
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.21";
7
+
8
+ exports.version = version;
package/package.js ADDED
@@ -0,0 +1,4 @@
1
+ 'use client'
2
+ var version = "4.0.0-alpha.21";
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.21",
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.21",
27
+ "@dynamic-labs/ethereum-core": "4.0.0-alpha.21",
28
+ "@dynamic-labs/logger": "4.0.0-alpha.21",
29
+ "@dynamic-labs/types": "4.0.0-alpha.21",
30
+ "@dynamic-labs/utils": "4.0.0-alpha.21",
31
+ "@dynamic-labs/wallet-book": "4.0.0-alpha.21",
32
+ "@dynamic-labs/wallet-connector-core": "4.0.0-alpha.21"
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,76 @@ 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
+ const [kernelClient, kernelClientWithSponsorship] = yield Promise.all([
173
+ this.getKernelClientWithoutSponsorshipValidation({
174
+ chainId: provider.chain,
175
+ projectId: provider.clientId,
176
+ signer,
177
+ }),
178
+ this.getKernelClientWithSponsorshipValidation({
179
+ chainId: provider.chain,
180
+ projectId: provider.clientId,
181
+ signer,
182
+ }),
183
+ ]);
184
+ this.providerMap[provider.chain] = {
185
+ kernelClient,
186
+ kernelClientWithSponsorship,
187
+ };
188
+ }
189
+ yield this.warnIfProjectChainNotEnabled(utils.parseChainId(provider.chain));
190
+ }
191
+ });
192
+ }
193
+ getKernelClientWithoutSponsorshipValidation(_a) {
194
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ projectId, signer, chainId, }) {
195
+ if (chainId && this.providerMap[chainId]) {
196
+ return this.providerMap[chainId].kernelClient;
197
+ }
198
+ const { eoaConnector } = this;
199
+ if (!eoaConnector)
200
+ throw new utils.DynamicError('No EOA connector');
127
201
  const kernelClient = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
128
202
  bundlerRpc: ZeroDevConnector.bundlerRpc,
129
- chain: yield fetchChain.fetchChain(this.projectId),
130
- ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
203
+ chain: ethereumCore.chainsMap[chainId],
204
+ ecdsaValidator: getEcdsaValidator.getEcdsaValidator(this.ecdsaProviderType),
131
205
  entryPointAddress: this.entryPoint,
132
206
  kernelVersion: this.kernelVersion,
133
207
  paymaster: 'NONE',
134
208
  paymasterRpc: ZeroDevConnector.paymasterRpc,
135
- projectId: this.projectId,
209
+ projectId,
136
210
  provider: ZeroDevConnector.bundlerProvider,
137
211
  signer: utils$1.walletClientToSmartAccountSigner(signer),
138
212
  });
@@ -140,51 +214,34 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
140
214
  this._walletUiUtils.disabledConfirmationOnce();
141
215
  return original(...args);
142
216
  });
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
- }
217
+ return kernelClient;
160
218
  });
161
219
  }
162
- getKernelClientWithSponsorshipValidation() {
163
- return _tslib.__awaiter(this, void 0, void 0, function* () {
164
- if (this.kernelClientWithSponsorship) {
165
- return this.kernelClientWithSponsorship;
220
+ getKernelClientWithSponsorshipValidation(_a) {
221
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ projectId, signer, chainId, }) {
222
+ if (chainId && this.providerMap[chainId]) {
223
+ return this.providerMap[chainId].kernelClientWithSponsorship;
166
224
  }
167
225
  const { eoaConnector } = this;
168
226
  if (!eoaConnector)
169
227
  throw new utils.DynamicError('No EOA connector');
170
- const signer = yield eoaConnector.getSigner();
171
- this.kernelClientWithSponsorship = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
228
+ const kernelClientWithSponsorship = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
172
229
  bundlerRpc: ZeroDevConnector.bundlerRpc,
173
- chain: yield fetchChain.fetchChain(this.projectId),
174
- ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
230
+ chain: ethereumCore.chainsMap[chainId],
231
+ ecdsaValidator: getEcdsaValidator.getEcdsaValidator(this.ecdsaProviderType),
175
232
  entryPointAddress: this.entryPoint,
176
233
  kernelVersion: this.kernelVersion,
177
234
  paymaster: 'SPONSOR',
178
235
  paymasterRpc: ZeroDevConnector.paymasterRpc,
179
- projectId: this.projectId,
236
+ projectId,
180
237
  provider: ZeroDevConnector.bundlerProvider,
181
238
  signer: utils$1.walletClientToSmartAccountSigner(signer),
182
239
  });
183
- utils.wrapMethodWithCallback(this.kernelClientWithSponsorship, 'sendUserOperation', (original, ...args) => {
240
+ utils.wrapMethodWithCallback(kernelClientWithSponsorship, 'sendUserOperation', (original, ...args) => {
184
241
  this._walletUiUtils.disabledConfirmationOnce();
185
242
  return original(...args);
186
243
  });
187
- return this.kernelClientWithSponsorship;
244
+ return kernelClientWithSponsorship;
188
245
  });
189
246
  }
190
247
  getAddress() {
@@ -225,7 +282,10 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
225
282
  this._walletUiUtils.disabledConfirmationOnce();
226
283
  const effectiveProvider = this.isGasSponsorshipDisabled
227
284
  ? provider
228
- : yield this.getKernelClientWithSponsorshipValidation();
285
+ : this.kernelClientWithSponsorship;
286
+ if (!effectiveProvider) {
287
+ throw new utils.DynamicError('No provider');
288
+ }
229
289
  const response = yield effectiveProvider.sendTransaction(ethereumCore.unFormatTransaction(transaction));
230
290
  return response;
231
291
  }
@@ -263,7 +323,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
263
323
  var _a;
264
324
  const provider = this.kernelClient;
265
325
  if (!provider)
266
- throw new utils.DynamicError('No provider');
326
+ return undefined;
267
327
  const transport = this.getTransport(provider);
268
328
  const address = (_a = provider.account) === null || _a === void 0 ? void 0 : _a.address;
269
329
  const walletClient = viem.createWalletClient({
@@ -278,7 +338,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
278
338
  var _a;
279
339
  const provider = (_a = this.kernelClient) === null || _a === void 0 ? void 0 : _a.extend(viem.publicActions);
280
340
  if (!provider)
281
- throw new utils.DynamicError('No provider');
341
+ return undefined;
282
342
  return provider;
283
343
  });
284
344
  }
@@ -290,7 +350,10 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
290
350
  canSponsorTransactionGas(transaction) {
291
351
  return _tslib.__awaiter(this, void 0, void 0, function* () {
292
352
  try {
293
- const kernelClientWithSponsorship = yield this.getKernelClientWithSponsorshipValidation();
353
+ const { kernelClientWithSponsorship } = this;
354
+ if (!kernelClientWithSponsorship) {
355
+ throw new utils.DynamicError('No kernel client with sponsorship found');
356
+ }
294
357
  const userOperation = {
295
358
  callData: yield kernelClientWithSponsorship.account.encodeCallData({
296
359
  data: transaction.data ? transaction.data : '0x',
@@ -351,23 +414,14 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
351
414
  });
352
415
  }
353
416
  validateActiveWallet(expectedAddress) {
354
- const _super = Object.create(null, {
355
- validateActiveWallet: { get: () => super.validateActiveWallet }
356
- });
357
417
  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);
418
+ const eoa = this.eoaConnectorMap[expectedAddress];
419
+ if (!eoa) {
420
+ throw new utils.DynamicError('No EOA connector');
370
421
  }
422
+ const { eoaAddress, eoaConnector } = eoa;
423
+ yield eoaConnector.validateActiveWallet(eoaAddress);
424
+ yield this.setEoaConnector(eoaAddress, eoaConnector);
371
425
  });
372
426
  }
373
427
  }