@dynamic-labs/ethereum-aa 4.3.2 → 4.4.1
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 +21 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +8 -8
- package/src/ZeroDevConnector.cjs +12 -5
- package/src/ZeroDevConnector.d.ts +3 -1
- package/src/ZeroDevConnector.js +12 -5
- package/src/utils/createEcsdaKernelAccountClient.cjs +17 -3
- package/src/utils/createEcsdaKernelAccountClient.d.ts +2 -1
- package/src/utils/createEcsdaKernelAccountClient.js +16 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.4.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.4.0...v4.4.1) (2025-01-27)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* allow override of rpc urls in connectionConfig for Solana and Eclipse ([#7884](https://github.com/dynamic-labs/dynamic-auth/issues/7884)) ([b65cea0](https://github.com/dynamic-labs/dynamic-auth/commit/b65cea0f7f5240c0e021843266c1437feffa51c5))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* close banxa modal when clicking outside of modal ([#7890](https://github.com/dynamic-labs/dynamic-auth/issues/7890)) ([cc5b5a5](https://github.com/dynamic-labs/dynamic-auth/commit/cc5b5a5911615925065411472f7874aeafff0a25))
|
|
13
|
+
|
|
14
|
+
## [4.4.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.3.2...v4.4.0) (2025-01-24)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* allow override of rpc urls in evmNetworks overrides ([#7874](https://github.com/dynamic-labs/dynamic-auth/issues/7874)) ([41c5030](https://github.com/dynamic-labs/dynamic-auth/commit/f0fef3c06bb82457da92c7f5655a0a6daf57e3aa))
|
|
20
|
+
* add ZeroDev v3 migration support ([#7854](https://github.com/dynamic-labs/dynamic-auth/issues/7854)) ([8e34ea0](https://github.com/dynamic-labs/dynamic-auth/commit/8e34ea0ec2451ded6df1138f53354b0a53140ecc))
|
|
21
|
+
* adds view for choosing funds deposit method ([#7813](https://github.com/dynamic-labs/dynamic-auth/issues/7813)) ([41c5030](https://github.com/dynamic-labs/dynamic-auth/commit/41c50309c94da61525bff5ea5f36dc1f68a4c79d))
|
|
22
|
+
|
|
2
23
|
### [4.3.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.3.1...v4.3.2) (2025-01-24)
|
|
3
24
|
|
|
4
25
|
### [4.3.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.3.0...v4.3.1) (2025-01-23)
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/ethereum-aa",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.1",
|
|
4
4
|
"description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
|
|
5
5
|
"author": "Dynamic Labs, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"@zerodev/ecdsa-validator": "5.4.3",
|
|
23
23
|
"@zerodev/multi-chain-ecdsa-validator": "5.4.2",
|
|
24
24
|
"@zerodev/sdk": "5.4.17",
|
|
25
|
-
"@dynamic-labs/assert-package-version": "4.
|
|
26
|
-
"@dynamic-labs/ethereum-core": "4.
|
|
27
|
-
"@dynamic-labs/logger": "4.
|
|
28
|
-
"@dynamic-labs/types": "4.
|
|
29
|
-
"@dynamic-labs/utils": "4.
|
|
30
|
-
"@dynamic-labs/wallet-book": "4.
|
|
31
|
-
"@dynamic-labs/wallet-connector-core": "4.
|
|
25
|
+
"@dynamic-labs/assert-package-version": "4.4.1",
|
|
26
|
+
"@dynamic-labs/ethereum-core": "4.4.1",
|
|
27
|
+
"@dynamic-labs/logger": "4.4.1",
|
|
28
|
+
"@dynamic-labs/types": "4.4.1",
|
|
29
|
+
"@dynamic-labs/utils": "4.4.1",
|
|
30
|
+
"@dynamic-labs/wallet-book": "4.4.1",
|
|
31
|
+
"@dynamic-labs/wallet-connector-core": "4.4.1"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"viem": "^2.21.55"
|
package/src/ZeroDevConnector.cjs
CHANGED
|
@@ -19,7 +19,7 @@ var getKernelVersion = require('./utils/getKernelVersion.cjs');
|
|
|
19
19
|
|
|
20
20
|
class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
|
|
21
21
|
constructor(opts) {
|
|
22
|
-
var _a, _b, _c, _d;
|
|
22
|
+
var _a, _b, _c, _d, _e, _f;
|
|
23
23
|
super(opts);
|
|
24
24
|
// provider map maintains the kernel clients per chain
|
|
25
25
|
this.providerMap = {};
|
|
@@ -44,16 +44,18 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
44
44
|
this.evmNetworks = utils.parseEvmNetworks(opts.evmNetworks);
|
|
45
45
|
this.entryPoint = getEntryPoint.getEntryPoint((_a = opts.apiProviders.zerodev) === null || _a === void 0 ? void 0 : _a.entryPointVersion);
|
|
46
46
|
this.kernelVersion = getKernelVersion.getKernelVersion((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.kernelVersion, this.entryPoint);
|
|
47
|
+
this.enableKernelV3Migration =
|
|
48
|
+
(_d = (_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.enableKernelV3Migration) !== null && _d !== void 0 ? _d : false;
|
|
47
49
|
// this is the list of providers from the api that are used for multi-chain account abstraction
|
|
48
50
|
this.providersFromApi =
|
|
49
|
-
((
|
|
51
|
+
((_e = opts.apiProviders.zerodev) === null || _e === void 0 ? void 0 : _e.multichainAccountAbstractionProviders) || [];
|
|
50
52
|
const [defaultProvider] = this.providersFromApi;
|
|
51
53
|
this.clientId = defaultProvider === null || defaultProvider === void 0 ? void 0 : defaultProvider.clientId;
|
|
52
54
|
if (!this.clientId) {
|
|
53
55
|
throw new Error('Missing ZeroDev project ID provided. Add your ZeroDev project id to your project configuration via the Dynamic Labs dashboard.');
|
|
54
56
|
}
|
|
55
57
|
this.defaultChainId = defaultProvider === null || defaultProvider === void 0 ? void 0 : defaultProvider.chain;
|
|
56
|
-
this.ecdsaProviderType = (
|
|
58
|
+
this.ecdsaProviderType = (_f = opts.apiProviders.zerodev) === null || _f === void 0 ? void 0 : _f.ecdsaProviderType;
|
|
57
59
|
}
|
|
58
60
|
get currentNetworkProvider() {
|
|
59
61
|
// check if the last used chain id is in the provider map
|
|
@@ -118,9 +120,10 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
118
120
|
});
|
|
119
121
|
}
|
|
120
122
|
registerEoa(_a) {
|
|
121
|
-
return _tslib.__awaiter(this, arguments, void 0, function* ({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector = false, ecdsaProviderType, kernelVersion, entryPointVersion, }) {
|
|
123
|
+
return _tslib.__awaiter(this, arguments, void 0, function* ({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector = false, ecdsaProviderType, kernelVersion, entryPointVersion, enableKernelV3Migration, }) {
|
|
122
124
|
const properties = {
|
|
123
125
|
ecdsaProviderType,
|
|
126
|
+
enableKernelV3Migration,
|
|
124
127
|
entryPointVersion,
|
|
125
128
|
kernelVersion,
|
|
126
129
|
};
|
|
@@ -141,7 +144,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
141
144
|
}
|
|
142
145
|
setEoaConnector(_a) {
|
|
143
146
|
return _tslib.__awaiter(this, arguments, void 0, function* ({ eoaAddress, connector, properties, }) {
|
|
144
|
-
var _b;
|
|
147
|
+
var _b, _c;
|
|
145
148
|
if (!connector) {
|
|
146
149
|
logger.logger.error('No EOA connector provided');
|
|
147
150
|
return;
|
|
@@ -158,6 +161,8 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
158
161
|
this.kernelVersion = properties.entryPointVersion
|
|
159
162
|
? getKernelVersion.getKernelVersion(properties.kernelVersion, this.entryPoint)
|
|
160
163
|
: this.kernelVersion;
|
|
164
|
+
this.enableKernelV3Migration =
|
|
165
|
+
(_c = properties.enableKernelV3Migration) !== null && _c !== void 0 ? _c : this.enableKernelV3Migration;
|
|
161
166
|
}
|
|
162
167
|
if (ethereumCore.isEthWalletConnector(this.eoaConnector) &&
|
|
163
168
|
!this.eoaConnector.getActiveAccount()) {
|
|
@@ -223,6 +228,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
223
228
|
bundlerRpc: ZeroDevConnector.bundlerRpc,
|
|
224
229
|
chain: ethereumCore.chainsMap[chainId],
|
|
225
230
|
ecdsaValidator: getEcdsaValidator.getEcdsaValidator(this.ecdsaProviderType),
|
|
231
|
+
enableKernelV3Migration: this.enableKernelV3Migration,
|
|
226
232
|
entryPoint: this.entryPoint,
|
|
227
233
|
kernelVersion: this.kernelVersion,
|
|
228
234
|
paymaster: 'NONE',
|
|
@@ -250,6 +256,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
250
256
|
bundlerRpc: ZeroDevConnector.bundlerRpc,
|
|
251
257
|
chain: ethereumCore.chainsMap[chainId],
|
|
252
258
|
ecdsaValidator: getEcdsaValidator.getEcdsaValidator(this.ecdsaProviderType),
|
|
259
|
+
enableKernelV3Migration: this.enableKernelV3Migration,
|
|
253
260
|
entryPoint: this.entryPoint,
|
|
254
261
|
kernelVersion: this.kernelVersion,
|
|
255
262
|
paymaster: 'SPONSOR',
|
|
@@ -33,6 +33,7 @@ export declare class ZeroDevConnector extends WalletConnectorBase<typeof Ethereu
|
|
|
33
33
|
isEmbeddedWallet: boolean;
|
|
34
34
|
entryPoint: EntryPointType<EntryPointVersion>;
|
|
35
35
|
kernelVersion: KERNEL_VERSION_TYPE;
|
|
36
|
+
enableKernelV3Migration: boolean;
|
|
36
37
|
ecdsaProviderType: string | undefined;
|
|
37
38
|
defaultChainId: string | undefined;
|
|
38
39
|
providersFromApi: ProviderMultichainAccountAbstractionProviders[];
|
|
@@ -76,7 +77,7 @@ export declare class ZeroDevConnector extends WalletConnectorBase<typeof Ethereu
|
|
|
76
77
|
withSponsorship?: boolean;
|
|
77
78
|
}): KernelClient | undefined;
|
|
78
79
|
endSession(): Promise<void>;
|
|
79
|
-
registerEoa({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector, ecdsaProviderType, kernelVersion, entryPointVersion, }: {
|
|
80
|
+
registerEoa({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector, ecdsaProviderType, kernelVersion, entryPointVersion, enableKernelV3Migration, }: {
|
|
80
81
|
smartWalletAddress: string;
|
|
81
82
|
eoaAddress: string;
|
|
82
83
|
eoaConnector: InternalWalletConnector;
|
|
@@ -84,6 +85,7 @@ export declare class ZeroDevConnector extends WalletConnectorBase<typeof Ethereu
|
|
|
84
85
|
ecdsaProviderType?: EcdsaValidatorOptions;
|
|
85
86
|
kernelVersion?: ProviderKernelVersionEnum;
|
|
86
87
|
entryPointVersion?: ProviderEntryPointVersionEnum;
|
|
88
|
+
enableKernelV3Migration?: boolean;
|
|
87
89
|
}): Promise<void>;
|
|
88
90
|
private setEoaConnector;
|
|
89
91
|
private warnIfProjectChainNotEnabled;
|
package/src/ZeroDevConnector.js
CHANGED
|
@@ -15,7 +15,7 @@ import { getKernelVersion } from './utils/getKernelVersion.js';
|
|
|
15
15
|
|
|
16
16
|
class ZeroDevConnector extends WalletConnectorBase {
|
|
17
17
|
constructor(opts) {
|
|
18
|
-
var _a, _b, _c, _d;
|
|
18
|
+
var _a, _b, _c, _d, _e, _f;
|
|
19
19
|
super(opts);
|
|
20
20
|
// provider map maintains the kernel clients per chain
|
|
21
21
|
this.providerMap = {};
|
|
@@ -40,16 +40,18 @@ class ZeroDevConnector extends WalletConnectorBase {
|
|
|
40
40
|
this.evmNetworks = parseEvmNetworks(opts.evmNetworks);
|
|
41
41
|
this.entryPoint = getEntryPoint((_a = opts.apiProviders.zerodev) === null || _a === void 0 ? void 0 : _a.entryPointVersion);
|
|
42
42
|
this.kernelVersion = getKernelVersion((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.kernelVersion, this.entryPoint);
|
|
43
|
+
this.enableKernelV3Migration =
|
|
44
|
+
(_d = (_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.enableKernelV3Migration) !== null && _d !== void 0 ? _d : false;
|
|
43
45
|
// this is the list of providers from the api that are used for multi-chain account abstraction
|
|
44
46
|
this.providersFromApi =
|
|
45
|
-
((
|
|
47
|
+
((_e = opts.apiProviders.zerodev) === null || _e === void 0 ? void 0 : _e.multichainAccountAbstractionProviders) || [];
|
|
46
48
|
const [defaultProvider] = this.providersFromApi;
|
|
47
49
|
this.clientId = defaultProvider === null || defaultProvider === void 0 ? void 0 : defaultProvider.clientId;
|
|
48
50
|
if (!this.clientId) {
|
|
49
51
|
throw new Error('Missing ZeroDev project ID provided. Add your ZeroDev project id to your project configuration via the Dynamic Labs dashboard.');
|
|
50
52
|
}
|
|
51
53
|
this.defaultChainId = defaultProvider === null || defaultProvider === void 0 ? void 0 : defaultProvider.chain;
|
|
52
|
-
this.ecdsaProviderType = (
|
|
54
|
+
this.ecdsaProviderType = (_f = opts.apiProviders.zerodev) === null || _f === void 0 ? void 0 : _f.ecdsaProviderType;
|
|
53
55
|
}
|
|
54
56
|
get currentNetworkProvider() {
|
|
55
57
|
// check if the last used chain id is in the provider map
|
|
@@ -114,9 +116,10 @@ class ZeroDevConnector extends WalletConnectorBase {
|
|
|
114
116
|
});
|
|
115
117
|
}
|
|
116
118
|
registerEoa(_a) {
|
|
117
|
-
return __awaiter(this, arguments, void 0, function* ({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector = false, ecdsaProviderType, kernelVersion, entryPointVersion, }) {
|
|
119
|
+
return __awaiter(this, arguments, void 0, function* ({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector = false, ecdsaProviderType, kernelVersion, entryPointVersion, enableKernelV3Migration, }) {
|
|
118
120
|
const properties = {
|
|
119
121
|
ecdsaProviderType,
|
|
122
|
+
enableKernelV3Migration,
|
|
120
123
|
entryPointVersion,
|
|
121
124
|
kernelVersion,
|
|
122
125
|
};
|
|
@@ -137,7 +140,7 @@ class ZeroDevConnector extends WalletConnectorBase {
|
|
|
137
140
|
}
|
|
138
141
|
setEoaConnector(_a) {
|
|
139
142
|
return __awaiter(this, arguments, void 0, function* ({ eoaAddress, connector, properties, }) {
|
|
140
|
-
var _b;
|
|
143
|
+
var _b, _c;
|
|
141
144
|
if (!connector) {
|
|
142
145
|
logger.error('No EOA connector provided');
|
|
143
146
|
return;
|
|
@@ -154,6 +157,8 @@ class ZeroDevConnector extends WalletConnectorBase {
|
|
|
154
157
|
this.kernelVersion = properties.entryPointVersion
|
|
155
158
|
? getKernelVersion(properties.kernelVersion, this.entryPoint)
|
|
156
159
|
: this.kernelVersion;
|
|
160
|
+
this.enableKernelV3Migration =
|
|
161
|
+
(_c = properties.enableKernelV3Migration) !== null && _c !== void 0 ? _c : this.enableKernelV3Migration;
|
|
157
162
|
}
|
|
158
163
|
if (isEthWalletConnector(this.eoaConnector) &&
|
|
159
164
|
!this.eoaConnector.getActiveAccount()) {
|
|
@@ -219,6 +224,7 @@ class ZeroDevConnector extends WalletConnectorBase {
|
|
|
219
224
|
bundlerRpc: ZeroDevConnector.bundlerRpc,
|
|
220
225
|
chain: chainsMap[chainId],
|
|
221
226
|
ecdsaValidator: getEcdsaValidator(this.ecdsaProviderType),
|
|
227
|
+
enableKernelV3Migration: this.enableKernelV3Migration,
|
|
222
228
|
entryPoint: this.entryPoint,
|
|
223
229
|
kernelVersion: this.kernelVersion,
|
|
224
230
|
paymaster: 'NONE',
|
|
@@ -246,6 +252,7 @@ class ZeroDevConnector extends WalletConnectorBase {
|
|
|
246
252
|
bundlerRpc: ZeroDevConnector.bundlerRpc,
|
|
247
253
|
chain: chainsMap[chainId],
|
|
248
254
|
ecdsaValidator: getEcdsaValidator(this.ecdsaProviderType),
|
|
255
|
+
enableKernelV3Migration: this.enableKernelV3Migration,
|
|
249
256
|
entryPoint: this.entryPoint,
|
|
250
257
|
kernelVersion: this.kernelVersion,
|
|
251
258
|
paymaster: 'SPONSOR',
|
|
@@ -8,6 +8,8 @@ var accounts = require('@zerodev/sdk/accounts');
|
|
|
8
8
|
var clients = require('@zerodev/sdk/clients');
|
|
9
9
|
var actions = require('@zerodev/sdk/actions');
|
|
10
10
|
var viem = require('viem');
|
|
11
|
+
var ecdsaValidator = require('@zerodev/ecdsa-validator');
|
|
12
|
+
var constants = require('@zerodev/sdk/constants');
|
|
11
13
|
|
|
12
14
|
const getZeroDevBundlerRPC = (projectId, provider) => {
|
|
13
15
|
let rpc = `https://rpc.zerodev.app/api/v2/bundler/${projectId}`;
|
|
@@ -24,14 +26,14 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
|
|
|
24
26
|
return rpc;
|
|
25
27
|
};
|
|
26
28
|
const isERC20 = (value) => viem.isAddress(value);
|
|
27
|
-
const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPoint, kernelVersion, ecdsaValidator, }) {
|
|
29
|
+
const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPoint, kernelVersion, ecdsaValidator: ecdsaValidator$1, enableKernelV3Migration, }) {
|
|
28
30
|
const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
|
|
29
31
|
const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
|
|
30
32
|
const publicClient = viem.createPublicClient({
|
|
31
33
|
chain,
|
|
32
34
|
transport: viem.http(resolvedBundlerRpc),
|
|
33
35
|
});
|
|
34
|
-
const validator = yield ecdsaValidator(publicClient, {
|
|
36
|
+
const validator = yield ecdsaValidator$1(publicClient, {
|
|
35
37
|
entryPoint,
|
|
36
38
|
kernelVersion,
|
|
37
39
|
signer,
|
|
@@ -48,8 +50,20 @@ const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], vo
|
|
|
48
50
|
chain,
|
|
49
51
|
transport: viem.http(resolvedPaymasterRpc),
|
|
50
52
|
});
|
|
53
|
+
let selectedAccount = account;
|
|
54
|
+
if (enableKernelV3Migration) {
|
|
55
|
+
const migrationVersion = constants.KERNEL_V3_1;
|
|
56
|
+
selectedAccount = yield ecdsaValidator.createEcdsaKernelMigrationAccount(publicClient, {
|
|
57
|
+
entryPoint,
|
|
58
|
+
migrationVersion: {
|
|
59
|
+
from: kernelVersion,
|
|
60
|
+
to: migrationVersion,
|
|
61
|
+
},
|
|
62
|
+
signer,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
51
65
|
const kernelClient = clients.createKernelAccountClient({
|
|
52
|
-
account,
|
|
66
|
+
account: selectedAccount,
|
|
53
67
|
bundlerTransport: viem.http(resolvedBundlerRpc),
|
|
54
68
|
chain,
|
|
55
69
|
client: publicClient,
|
|
@@ -8,7 +8,7 @@ export type ERC20Paymaster = Address;
|
|
|
8
8
|
export type PaymasterType = 'NONE' | 'SPONSOR' | ERC20Paymaster;
|
|
9
9
|
export declare const getZeroDevBundlerRPC: (projectId: string, provider?: BundlerProvider) => string;
|
|
10
10
|
export declare const getZeroDevPaymasterRPC: (projectId: string, provider?: BundlerProvider) => string;
|
|
11
|
-
export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPointVersion, TChain extends ViemChain | undefined = ViemChain | undefined>({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster, entryPoint, kernelVersion, ecdsaValidator, }: {
|
|
11
|
+
export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPointVersion, TChain extends ViemChain | undefined = ViemChain | undefined>({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster, entryPoint, kernelVersion, ecdsaValidator, enableKernelV3Migration, }: {
|
|
12
12
|
bundlerRpc?: string | undefined;
|
|
13
13
|
chain: TChain;
|
|
14
14
|
projectId: string;
|
|
@@ -20,4 +20,5 @@ export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPo
|
|
|
20
20
|
index?: bigint | undefined;
|
|
21
21
|
kernelVersion: GetKernelVersion<entryPoint>;
|
|
22
22
|
ecdsaValidator: any;
|
|
23
|
+
enableKernelV3Migration: boolean;
|
|
23
24
|
}) => Promise<KernelAccountClient<Transport, ViemChain, SmartAccount, Client, RpcSchema>>;
|
|
@@ -4,6 +4,8 @@ import { createKernelAccount } from '@zerodev/sdk/accounts';
|
|
|
4
4
|
import { createZeroDevPaymasterClient, createKernelAccountClient } from '@zerodev/sdk/clients';
|
|
5
5
|
import { getUserOperationGasPrice } from '@zerodev/sdk/actions';
|
|
6
6
|
import { createPublicClient, http, isAddress } from 'viem';
|
|
7
|
+
import { createEcdsaKernelMigrationAccount } from '@zerodev/ecdsa-validator';
|
|
8
|
+
import { KERNEL_V3_1 } from '@zerodev/sdk/constants';
|
|
7
9
|
|
|
8
10
|
const getZeroDevBundlerRPC = (projectId, provider) => {
|
|
9
11
|
let rpc = `https://rpc.zerodev.app/api/v2/bundler/${projectId}`;
|
|
@@ -20,7 +22,7 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
|
|
|
20
22
|
return rpc;
|
|
21
23
|
};
|
|
22
24
|
const isERC20 = (value) => isAddress(value);
|
|
23
|
-
const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPoint, kernelVersion, ecdsaValidator, }) {
|
|
25
|
+
const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPoint, kernelVersion, ecdsaValidator, enableKernelV3Migration, }) {
|
|
24
26
|
const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
|
|
25
27
|
const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
|
|
26
28
|
const publicClient = createPublicClient({
|
|
@@ -44,8 +46,20 @@ const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, f
|
|
|
44
46
|
chain,
|
|
45
47
|
transport: http(resolvedPaymasterRpc),
|
|
46
48
|
});
|
|
49
|
+
let selectedAccount = account;
|
|
50
|
+
if (enableKernelV3Migration) {
|
|
51
|
+
const migrationVersion = KERNEL_V3_1;
|
|
52
|
+
selectedAccount = yield createEcdsaKernelMigrationAccount(publicClient, {
|
|
53
|
+
entryPoint,
|
|
54
|
+
migrationVersion: {
|
|
55
|
+
from: kernelVersion,
|
|
56
|
+
to: migrationVersion,
|
|
57
|
+
},
|
|
58
|
+
signer,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
47
61
|
const kernelClient = createKernelAccountClient({
|
|
48
|
-
account,
|
|
62
|
+
account: selectedAccount,
|
|
49
63
|
bundlerTransport: http(resolvedBundlerRpc),
|
|
50
64
|
chain,
|
|
51
65
|
client: publicClient,
|