@dynamic-labs-sdk/zerodev 0.1.0-alpha.21 → 0.1.0-alpha.22

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,3 +1,9 @@
1
+ ## 0.1.0-alpha.22 (2025-10-16)
2
+
3
+ ### 🚀 Features
4
+
5
+ - add support for Magic Eden BTC ([#575](https://github.com/dynamic-labs/dynamic-sdk/pull/575))
6
+
1
7
  ## 0.1.0-alpha.21 (2025-10-16)
2
8
 
3
9
  ### 🩹 Fixes
package/core.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/exports/core";
package/core.cjs.js ADDED
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var assertPackageVersion = require('@dynamic-labs-sdk/assert-package-version');
4
+ var getZerodevRpc = require('./getZerodevRpc.cjs.js');
5
+ require('@dynamic-labs-sdk/client/core');
6
+ require('@zerodev/ecdsa-validator');
7
+ require('@zerodev/sdk');
8
+ require('@dynamic-labs-sdk/client');
9
+ require('@dynamic-labs-sdk/evm');
10
+ require('@dynamic-labs-sdk/evm/viem');
11
+ require('@zerodev/multi-chain-ecdsa-validator');
12
+ require('@dynamic-labs/sdk-api-core');
13
+ require('viem');
14
+
15
+ assertPackageVersion.assertPackageVersion(getZerodevRpc.name, getZerodevRpc.version);
16
+
17
+ exports.createKernelAccount = getZerodevRpc.createKernelAccount;
18
+ exports.getEcdsaValidator = getZerodevRpc.getEcdsaValidator;
19
+ exports.getEntryPoint = getZerodevRpc.getEntryPoint;
20
+ exports.getKernelVersion = getZerodevRpc.getKernelVersion;
21
+ exports.getPaymasterConfig = getZerodevRpc.getPaymasterConfig;
22
+ exports.getZerodevChainProviderForNetworkId = getZerodevRpc.getZerodevChainProviderForNetworkId;
23
+ exports.getZerodevProviderFromSettings = getZerodevRpc.getZerodevProviderFromSettings;
24
+ exports.getZerodevRpc = getZerodevRpc.getZerodevRpc;
25
+ exports.shouldUseEIP7702 = getZerodevRpc.shouldUseEIP7702;
package/core.esm.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/exports/core";
package/core.esm.js ADDED
@@ -0,0 +1,14 @@
1
+ import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';
2
+ import { n as name, v as version } from './getZerodevRpc.esm.js';
3
+ export { c as createKernelAccount, e as getEcdsaValidator, f as getEntryPoint, h as getKernelVersion, a as getPaymasterConfig, b as getZerodevChainProviderForNetworkId, i as getZerodevProviderFromSettings, g as getZerodevRpc, s as shouldUseEIP7702 } from './getZerodevRpc.esm.js';
4
+ import '@dynamic-labs-sdk/client/core';
5
+ import '@zerodev/ecdsa-validator';
6
+ import '@zerodev/sdk';
7
+ import '@dynamic-labs-sdk/client';
8
+ import '@dynamic-labs-sdk/evm';
9
+ import '@dynamic-labs-sdk/evm/viem';
10
+ import '@zerodev/multi-chain-ecdsa-validator';
11
+ import '@dynamic-labs/sdk-api-core';
12
+ import 'viem';
13
+
14
+ assertPackageVersion(name, version);
@@ -0,0 +1,222 @@
1
+ 'use strict';
2
+
3
+ var core = require('@dynamic-labs-sdk/client/core');
4
+ var ecdsaValidator = require('@zerodev/ecdsa-validator');
5
+ var sdk = require('@zerodev/sdk');
6
+ var client = require('@dynamic-labs-sdk/client');
7
+ var evm = require('@dynamic-labs-sdk/evm');
8
+ var viem = require('@dynamic-labs-sdk/evm/viem');
9
+ var multiChainEcdsaValidator = require('@zerodev/multi-chain-ecdsa-validator');
10
+ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
11
+ var viem$1 = require('viem');
12
+
13
+ var name = "@dynamic-labs-sdk/zerodev";
14
+ var version = "0.1.0-alpha.22";
15
+
16
+ const ZERODEV_METADATA = {
17
+ displayName: 'ZeroDev',
18
+ icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#smartwallet`,
19
+ normalizedWalletName: 'zerodev'
20
+ };
21
+ const ZERODEV_RPC_BASE_URL = 'https://rpc.zerodev.app/api/v2';
22
+ const KERNEL_VERSION_MAP = {
23
+ [sdkApiCore.ProviderKernelVersionEnum.V33]: sdk.constants.KERNEL_V3_3,
24
+ [sdkApiCore.ProviderKernelVersionEnum.V32]: sdk.constants.KERNEL_V3_2,
25
+ [sdkApiCore.ProviderKernelVersionEnum.V31]: sdk.constants.KERNEL_V3_1,
26
+ [sdkApiCore.ProviderKernelVersionEnum.V30]: sdk.constants.KERNEL_V3_0,
27
+ [sdkApiCore.ProviderKernelVersionEnum.V24]: sdk.constants.KERNEL_V2_4
28
+ };
29
+ const ENTRY_POINT_VERSION_MAP = {
30
+ 0.6: sdk.constants.KERNEL_V2_4,
31
+ 0.7: sdk.constants.KERNEL_V3_1,
32
+ 0.8: sdk.constants.KERNEL_V3_3
33
+ };
34
+
35
+ const getZerodevProviderFromSettings = (client)=>{
36
+ var _projectSettings_providers;
37
+ const projectSettings = client.projectSettings;
38
+ core.assertDefined(projectSettings, 'Project settings are not available');
39
+ const zerodevProvider = (_projectSettings_providers = projectSettings.providers) == null ? void 0 : _projectSettings_providers.find((provider)=>provider.provider === sdkApiCore.ProviderEnum.Zerodev);
40
+ core.assertDefined(zerodevProvider, 'Zerodev is not configured in project settings');
41
+ return zerodevProvider;
42
+ };
43
+
44
+ const getZerodevChainProviderForNetworkId = ({ networkId }, client)=>{
45
+ var _zerodevProvider_multichainAccountAbstractionProviders;
46
+ const zerodevProvider = getZerodevProviderFromSettings(client);
47
+ return (_zerodevProvider_multichainAccountAbstractionProviders = zerodevProvider.multichainAccountAbstractionProviders) == null ? void 0 : _zerodevProvider_multichainAccountAbstractionProviders.find((provider)=>provider.chain === networkId);
48
+ };
49
+
50
+ /**
51
+ * Gets a WalletClient instance for the EOA of the smart wallet account.
52
+ * You can use this signer to sign EVM transactions.
53
+ *
54
+ * @param params.smartWalletAccount - The EVM smart wallet account to get the signer for.
55
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
56
+ * @returns A promise that resolves to an WalletClient instance.
57
+ * @throws NoSmartWalletAccountSignerFoundError When the signer wallet account is not found for the given smart wallet account.
58
+ */ const getSignerForSmartWalletAccount = ({ smartWalletAccount }, client$1 = core.getDefaultClient())=>{
59
+ const signerWalletAccount = client.getOwnerWalletAccountForSmartWalletAccount({
60
+ smartWalletAccount
61
+ }, client$1);
62
+ if (!signerWalletAccount || !evm.isEvmWalletAccount(signerWalletAccount)) {
63
+ throw new client.NoSmartWalletAccountSignerFoundError(smartWalletAccount.address);
64
+ }
65
+ return viem.createWalletClientForWalletAccount({
66
+ walletAccount: signerWalletAccount
67
+ }, client$1);
68
+ };
69
+
70
+ const getEcdsaValidator = ({ ecdsaProviderType, publicClient, signer, entryPoint, kernelVersion })=>{
71
+ const params = {
72
+ entryPoint,
73
+ kernelVersion,
74
+ signer
75
+ };
76
+ if (ecdsaProviderType === 'zerodev_multi_chain') {
77
+ return multiChainEcdsaValidator.toMultiChainECDSAValidator(publicClient, params);
78
+ }
79
+ return ecdsaValidator.signerToEcdsaValidator(publicClient, params);
80
+ };
81
+
82
+ const getEntryPoint = (entryPoint)=>{
83
+ if (entryPoint === sdkApiCore.ProviderEntryPointVersionEnum.V6) {
84
+ return sdk.constants.getEntryPoint('0.6');
85
+ }
86
+ // default to v7
87
+ return sdk.constants.getEntryPoint('0.7');
88
+ };
89
+
90
+ const getKernelVersion = ({ kernelVersion, entryPoint })=>{
91
+ // If kernel version is explicitly provided, use it
92
+ if (kernelVersion && kernelVersion in KERNEL_VERSION_MAP) {
93
+ return KERNEL_VERSION_MAP[kernelVersion];
94
+ }
95
+ // If no kernel version provided, determine based on entry point version
96
+ const entryPointVersion = entryPoint.version;
97
+ if (entryPointVersion in ENTRY_POINT_VERSION_MAP) {
98
+ return ENTRY_POINT_VERSION_MAP[entryPointVersion];
99
+ }
100
+ // Fallback to latest version
101
+ return sdk.constants.KERNEL_V3_3;
102
+ };
103
+
104
+ const shouldUseEIP7702 = ({ smartWalletAccount }, client$1)=>{
105
+ const zerodevProvider = getZerodevProviderFromSettings(client$1);
106
+ core.assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
107
+ const eoaWalletAccount = client.getOwnerWalletAccountForSmartWalletAccount({
108
+ smartWalletAccount
109
+ }, client$1);
110
+ core.assertDefined(eoaWalletAccount, 'EOA wallet account is not found');
111
+ return zerodevProvider.enableEIP7702 && // with EIP7702, the EOA wallet account address is the same as the smart wallet account address
112
+ smartWalletAccount.address === eoaWalletAccount.address;
113
+ };
114
+
115
+ const createKernelAccount = async ({ publicClient, smartWalletAccount }, client)=>{
116
+ var _getVerifiedCredentialForWalletAccount;
117
+ const zerodevProvider = getZerodevProviderFromSettings(client);
118
+ core.assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
119
+ const signer = await getSignerForSmartWalletAccount({
120
+ smartWalletAccount
121
+ }, client);
122
+ const walletProperties = (_getVerifiedCredentialForWalletAccount = core.getVerifiedCredentialForWalletAccount({
123
+ walletAccount: smartWalletAccount
124
+ }, client)) == null ? void 0 : _getVerifiedCredentialForWalletAccount.walletProperties;
125
+ var _walletProperties_entryPointVersion;
126
+ const entryPointVersion = (_walletProperties_entryPointVersion = walletProperties == null ? void 0 : walletProperties.entryPointVersion) != null ? _walletProperties_entryPointVersion : zerodevProvider.entryPointVersion;
127
+ const entryPoint = getEntryPoint(entryPointVersion);
128
+ const useEIP7702 = shouldUseEIP7702({
129
+ smartWalletAccount
130
+ }, client);
131
+ if (useEIP7702) {
132
+ return sdk.createKernelAccount(publicClient, {
133
+ eip7702Account: signer,
134
+ entryPoint,
135
+ kernelVersion: sdk.constants.KERNEL_V3_3
136
+ });
137
+ }
138
+ var _walletProperties_kernelVersion;
139
+ const kernelVersionValue = (_walletProperties_kernelVersion = walletProperties == null ? void 0 : walletProperties.kernelVersion) != null ? _walletProperties_kernelVersion : zerodevProvider.kernelVersion;
140
+ const kernelVersion = getKernelVersion({
141
+ entryPoint,
142
+ kernelVersion: kernelVersionValue
143
+ });
144
+ var _zerodevProvider_enableKernelV3Migration;
145
+ const kernelV3MigrationEnabled = (_zerodevProvider_enableKernelV3Migration = zerodevProvider.enableKernelV3Migration) != null ? _zerodevProvider_enableKernelV3Migration : false;
146
+ if (kernelV3MigrationEnabled) {
147
+ const apiKernelVersion = getKernelVersion({
148
+ entryPoint,
149
+ kernelVersion: zerodevProvider.kernelVersion
150
+ });
151
+ return ecdsaValidator.createEcdsaKernelMigrationAccount(publicClient, {
152
+ entryPoint,
153
+ migrationVersion: {
154
+ from: kernelVersion,
155
+ to: apiKernelVersion
156
+ },
157
+ signer
158
+ });
159
+ }
160
+ var _walletProperties_ecdsaProviderType;
161
+ const validator = await getEcdsaValidator({
162
+ ecdsaProviderType: (_walletProperties_ecdsaProviderType = walletProperties == null ? void 0 : walletProperties.ecdsaProviderType) != null ? _walletProperties_ecdsaProviderType : zerodevProvider.ecdsaProviderType,
163
+ entryPoint,
164
+ kernelVersion,
165
+ publicClient,
166
+ signer
167
+ });
168
+ return sdk.createKernelAccount(publicClient, {
169
+ entryPoint,
170
+ kernelVersion,
171
+ plugins: {
172
+ sudo: validator
173
+ }
174
+ });
175
+ };
176
+
177
+ const getPaymasterConfig = ({ chain, gasTokenAddress, paymasterRpc })=>{
178
+ const getPaymasterData = (params)=>{
179
+ const zerodevPaymaster = sdk.createZeroDevPaymasterClient({
180
+ chain,
181
+ transport: viem$1.http(paymasterRpc)
182
+ });
183
+ return zerodevPaymaster.sponsorUserOperation({
184
+ gasToken: gasTokenAddress,
185
+ userOperation: params
186
+ });
187
+ };
188
+ return {
189
+ paymaster: {
190
+ getPaymasterData
191
+ }
192
+ };
193
+ };
194
+
195
+ const getZerodevRpc = ({ networkId, bundlerProvider, rpcType }, client)=>{
196
+ const zerodevProvider = getZerodevProviderFromSettings(client);
197
+ if (zerodevProvider == null ? void 0 : zerodevProvider.zerodevPaymasterRpcUrl) {
198
+ return zerodevProvider.zerodevPaymasterRpcUrl;
199
+ }
200
+ const zerodevChainProvider = getZerodevChainProviderForNetworkId({
201
+ networkId
202
+ }, client);
203
+ core.assertDefined(zerodevChainProvider, `No zerodev provider found for network id ${networkId}`);
204
+ var _ref;
205
+ const paymasterProvider = (_ref = bundlerProvider != null ? bundlerProvider : zerodevProvider.zerodevBundlerProvider) != null ? _ref : sdkApiCore.ZerodevBundlerProvider.Pimlico;
206
+ const paramName = rpcType === 'bundler' ? 'bundlerProvider' : 'paymasterProvider';
207
+ return `${ZERODEV_RPC_BASE_URL}/${rpcType}/${zerodevChainProvider.clientId}?${paramName}=${paymasterProvider}`;
208
+ };
209
+
210
+ exports.ZERODEV_METADATA = ZERODEV_METADATA;
211
+ exports.createKernelAccount = createKernelAccount;
212
+ exports.getEcdsaValidator = getEcdsaValidator;
213
+ exports.getEntryPoint = getEntryPoint;
214
+ exports.getKernelVersion = getKernelVersion;
215
+ exports.getPaymasterConfig = getPaymasterConfig;
216
+ exports.getSignerForSmartWalletAccount = getSignerForSmartWalletAccount;
217
+ exports.getZerodevChainProviderForNetworkId = getZerodevChainProviderForNetworkId;
218
+ exports.getZerodevProviderFromSettings = getZerodevProviderFromSettings;
219
+ exports.getZerodevRpc = getZerodevRpc;
220
+ exports.name = name;
221
+ exports.shouldUseEIP7702 = shouldUseEIP7702;
222
+ exports.version = version;
@@ -0,0 +1,208 @@
1
+ import { DYNAMIC_ICONIC_SPRITE_URL, assertDefined, getDefaultClient, getVerifiedCredentialForWalletAccount } from '@dynamic-labs-sdk/client/core';
2
+ import { signerToEcdsaValidator, createEcdsaKernelMigrationAccount } from '@zerodev/ecdsa-validator';
3
+ import { constants, createKernelAccount as createKernelAccount$1, createZeroDevPaymasterClient } from '@zerodev/sdk';
4
+ import { getOwnerWalletAccountForSmartWalletAccount, NoSmartWalletAccountSignerFoundError } from '@dynamic-labs-sdk/client';
5
+ import { isEvmWalletAccount } from '@dynamic-labs-sdk/evm';
6
+ import { createWalletClientForWalletAccount } from '@dynamic-labs-sdk/evm/viem';
7
+ import { toMultiChainECDSAValidator } from '@zerodev/multi-chain-ecdsa-validator';
8
+ import { ProviderKernelVersionEnum, ProviderEnum, ProviderEntryPointVersionEnum, ZerodevBundlerProvider } from '@dynamic-labs/sdk-api-core';
9
+ import { http } from 'viem';
10
+
11
+ var name = "@dynamic-labs-sdk/zerodev";
12
+ var version = "0.1.0-alpha.22";
13
+
14
+ const ZERODEV_METADATA = {
15
+ displayName: 'ZeroDev',
16
+ icon: `${DYNAMIC_ICONIC_SPRITE_URL}#smartwallet`,
17
+ normalizedWalletName: 'zerodev'
18
+ };
19
+ const ZERODEV_RPC_BASE_URL = 'https://rpc.zerodev.app/api/v2';
20
+ const KERNEL_VERSION_MAP = {
21
+ [ProviderKernelVersionEnum.V33]: constants.KERNEL_V3_3,
22
+ [ProviderKernelVersionEnum.V32]: constants.KERNEL_V3_2,
23
+ [ProviderKernelVersionEnum.V31]: constants.KERNEL_V3_1,
24
+ [ProviderKernelVersionEnum.V30]: constants.KERNEL_V3_0,
25
+ [ProviderKernelVersionEnum.V24]: constants.KERNEL_V2_4
26
+ };
27
+ const ENTRY_POINT_VERSION_MAP = {
28
+ 0.6: constants.KERNEL_V2_4,
29
+ 0.7: constants.KERNEL_V3_1,
30
+ 0.8: constants.KERNEL_V3_3
31
+ };
32
+
33
+ const getZerodevProviderFromSettings = (client)=>{
34
+ var _projectSettings_providers;
35
+ const projectSettings = client.projectSettings;
36
+ assertDefined(projectSettings, 'Project settings are not available');
37
+ const zerodevProvider = (_projectSettings_providers = projectSettings.providers) == null ? void 0 : _projectSettings_providers.find((provider)=>provider.provider === ProviderEnum.Zerodev);
38
+ assertDefined(zerodevProvider, 'Zerodev is not configured in project settings');
39
+ return zerodevProvider;
40
+ };
41
+
42
+ const getZerodevChainProviderForNetworkId = ({ networkId }, client)=>{
43
+ var _zerodevProvider_multichainAccountAbstractionProviders;
44
+ const zerodevProvider = getZerodevProviderFromSettings(client);
45
+ return (_zerodevProvider_multichainAccountAbstractionProviders = zerodevProvider.multichainAccountAbstractionProviders) == null ? void 0 : _zerodevProvider_multichainAccountAbstractionProviders.find((provider)=>provider.chain === networkId);
46
+ };
47
+
48
+ /**
49
+ * Gets a WalletClient instance for the EOA of the smart wallet account.
50
+ * You can use this signer to sign EVM transactions.
51
+ *
52
+ * @param params.smartWalletAccount - The EVM smart wallet account to get the signer for.
53
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
54
+ * @returns A promise that resolves to an WalletClient instance.
55
+ * @throws NoSmartWalletAccountSignerFoundError When the signer wallet account is not found for the given smart wallet account.
56
+ */ const getSignerForSmartWalletAccount = ({ smartWalletAccount }, client = getDefaultClient())=>{
57
+ const signerWalletAccount = getOwnerWalletAccountForSmartWalletAccount({
58
+ smartWalletAccount
59
+ }, client);
60
+ if (!signerWalletAccount || !isEvmWalletAccount(signerWalletAccount)) {
61
+ throw new NoSmartWalletAccountSignerFoundError(smartWalletAccount.address);
62
+ }
63
+ return createWalletClientForWalletAccount({
64
+ walletAccount: signerWalletAccount
65
+ }, client);
66
+ };
67
+
68
+ const getEcdsaValidator = ({ ecdsaProviderType, publicClient, signer, entryPoint, kernelVersion })=>{
69
+ const params = {
70
+ entryPoint,
71
+ kernelVersion,
72
+ signer
73
+ };
74
+ if (ecdsaProviderType === 'zerodev_multi_chain') {
75
+ return toMultiChainECDSAValidator(publicClient, params);
76
+ }
77
+ return signerToEcdsaValidator(publicClient, params);
78
+ };
79
+
80
+ const getEntryPoint = (entryPoint)=>{
81
+ if (entryPoint === ProviderEntryPointVersionEnum.V6) {
82
+ return constants.getEntryPoint('0.6');
83
+ }
84
+ // default to v7
85
+ return constants.getEntryPoint('0.7');
86
+ };
87
+
88
+ const getKernelVersion = ({ kernelVersion, entryPoint })=>{
89
+ // If kernel version is explicitly provided, use it
90
+ if (kernelVersion && kernelVersion in KERNEL_VERSION_MAP) {
91
+ return KERNEL_VERSION_MAP[kernelVersion];
92
+ }
93
+ // If no kernel version provided, determine based on entry point version
94
+ const entryPointVersion = entryPoint.version;
95
+ if (entryPointVersion in ENTRY_POINT_VERSION_MAP) {
96
+ return ENTRY_POINT_VERSION_MAP[entryPointVersion];
97
+ }
98
+ // Fallback to latest version
99
+ return constants.KERNEL_V3_3;
100
+ };
101
+
102
+ const shouldUseEIP7702 = ({ smartWalletAccount }, client)=>{
103
+ const zerodevProvider = getZerodevProviderFromSettings(client);
104
+ assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
105
+ const eoaWalletAccount = getOwnerWalletAccountForSmartWalletAccount({
106
+ smartWalletAccount
107
+ }, client);
108
+ assertDefined(eoaWalletAccount, 'EOA wallet account is not found');
109
+ return zerodevProvider.enableEIP7702 && // with EIP7702, the EOA wallet account address is the same as the smart wallet account address
110
+ smartWalletAccount.address === eoaWalletAccount.address;
111
+ };
112
+
113
+ const createKernelAccount = async ({ publicClient, smartWalletAccount }, client)=>{
114
+ var _getVerifiedCredentialForWalletAccount;
115
+ const zerodevProvider = getZerodevProviderFromSettings(client);
116
+ assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
117
+ const signer = await getSignerForSmartWalletAccount({
118
+ smartWalletAccount
119
+ }, client);
120
+ const walletProperties = (_getVerifiedCredentialForWalletAccount = getVerifiedCredentialForWalletAccount({
121
+ walletAccount: smartWalletAccount
122
+ }, client)) == null ? void 0 : _getVerifiedCredentialForWalletAccount.walletProperties;
123
+ var _walletProperties_entryPointVersion;
124
+ const entryPointVersion = (_walletProperties_entryPointVersion = walletProperties == null ? void 0 : walletProperties.entryPointVersion) != null ? _walletProperties_entryPointVersion : zerodevProvider.entryPointVersion;
125
+ const entryPoint = getEntryPoint(entryPointVersion);
126
+ const useEIP7702 = shouldUseEIP7702({
127
+ smartWalletAccount
128
+ }, client);
129
+ if (useEIP7702) {
130
+ return createKernelAccount$1(publicClient, {
131
+ eip7702Account: signer,
132
+ entryPoint,
133
+ kernelVersion: constants.KERNEL_V3_3
134
+ });
135
+ }
136
+ var _walletProperties_kernelVersion;
137
+ const kernelVersionValue = (_walletProperties_kernelVersion = walletProperties == null ? void 0 : walletProperties.kernelVersion) != null ? _walletProperties_kernelVersion : zerodevProvider.kernelVersion;
138
+ const kernelVersion = getKernelVersion({
139
+ entryPoint,
140
+ kernelVersion: kernelVersionValue
141
+ });
142
+ var _zerodevProvider_enableKernelV3Migration;
143
+ const kernelV3MigrationEnabled = (_zerodevProvider_enableKernelV3Migration = zerodevProvider.enableKernelV3Migration) != null ? _zerodevProvider_enableKernelV3Migration : false;
144
+ if (kernelV3MigrationEnabled) {
145
+ const apiKernelVersion = getKernelVersion({
146
+ entryPoint,
147
+ kernelVersion: zerodevProvider.kernelVersion
148
+ });
149
+ return createEcdsaKernelMigrationAccount(publicClient, {
150
+ entryPoint,
151
+ migrationVersion: {
152
+ from: kernelVersion,
153
+ to: apiKernelVersion
154
+ },
155
+ signer
156
+ });
157
+ }
158
+ var _walletProperties_ecdsaProviderType;
159
+ const validator = await getEcdsaValidator({
160
+ ecdsaProviderType: (_walletProperties_ecdsaProviderType = walletProperties == null ? void 0 : walletProperties.ecdsaProviderType) != null ? _walletProperties_ecdsaProviderType : zerodevProvider.ecdsaProviderType,
161
+ entryPoint,
162
+ kernelVersion,
163
+ publicClient,
164
+ signer
165
+ });
166
+ return createKernelAccount$1(publicClient, {
167
+ entryPoint,
168
+ kernelVersion,
169
+ plugins: {
170
+ sudo: validator
171
+ }
172
+ });
173
+ };
174
+
175
+ const getPaymasterConfig = ({ chain, gasTokenAddress, paymasterRpc })=>{
176
+ const getPaymasterData = (params)=>{
177
+ const zerodevPaymaster = createZeroDevPaymasterClient({
178
+ chain,
179
+ transport: http(paymasterRpc)
180
+ });
181
+ return zerodevPaymaster.sponsorUserOperation({
182
+ gasToken: gasTokenAddress,
183
+ userOperation: params
184
+ });
185
+ };
186
+ return {
187
+ paymaster: {
188
+ getPaymasterData
189
+ }
190
+ };
191
+ };
192
+
193
+ const getZerodevRpc = ({ networkId, bundlerProvider, rpcType }, client)=>{
194
+ const zerodevProvider = getZerodevProviderFromSettings(client);
195
+ if (zerodevProvider == null ? void 0 : zerodevProvider.zerodevPaymasterRpcUrl) {
196
+ return zerodevProvider.zerodevPaymasterRpcUrl;
197
+ }
198
+ const zerodevChainProvider = getZerodevChainProviderForNetworkId({
199
+ networkId
200
+ }, client);
201
+ assertDefined(zerodevChainProvider, `No zerodev provider found for network id ${networkId}`);
202
+ var _ref;
203
+ const paymasterProvider = (_ref = bundlerProvider != null ? bundlerProvider : zerodevProvider.zerodevBundlerProvider) != null ? _ref : ZerodevBundlerProvider.Pimlico;
204
+ const paramName = rpcType === 'bundler' ? 'bundlerProvider' : 'paymasterProvider';
205
+ return `${ZERODEV_RPC_BASE_URL}/${rpcType}/${zerodevChainProvider.clientId}?${paramName}=${paymasterProvider}`;
206
+ };
207
+
208
+ export { ZERODEV_METADATA as Z, getPaymasterConfig as a, getZerodevChainProviderForNetworkId as b, createKernelAccount as c, getSignerForSmartWalletAccount as d, getEcdsaValidator as e, getEntryPoint as f, getZerodevRpc as g, getKernelVersion as h, getZerodevProviderFromSettings as i, name as n, shouldUseEIP7702 as s, version as v };
package/index.cjs.js CHANGED
@@ -1,65 +1,29 @@
1
1
  'use strict';
2
2
 
3
3
  var assertPackageVersion = require('@dynamic-labs-sdk/assert-package-version');
4
+ var getZerodevRpc = require('./getZerodevRpc.cjs.js');
4
5
  var core = require('@dynamic-labs-sdk/client/core');
5
6
  var client = require('@dynamic-labs-sdk/client');
6
7
  var evm = require('@dynamic-labs-sdk/evm');
7
8
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
8
- var sdk = require('@zerodev/sdk');
9
9
  var viem = require('@dynamic-labs-sdk/evm/viem');
10
+ var sdk = require('@zerodev/sdk');
10
11
  var viem$1 = require('viem');
11
- var ecdsaValidator = require('@zerodev/ecdsa-validator');
12
- var multiChainEcdsaValidator = require('@zerodev/multi-chain-ecdsa-validator');
13
-
14
- var name = "@dynamic-labs-sdk/zerodev";
15
- var version = "0.1.0-alpha.21";
16
-
17
- const ZERODEV_METADATA = {
18
- displayName: 'ZeroDev',
19
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#smartwallet`,
20
- normalizedWalletName: 'zerodev'
21
- };
22
- const ZERODEV_RPC_BASE_URL = 'https://rpc.zerodev.app/api/v2';
23
- const KERNEL_VERSION_MAP = {
24
- [sdkApiCore.ProviderKernelVersionEnum.V33]: sdk.constants.KERNEL_V3_3,
25
- [sdkApiCore.ProviderKernelVersionEnum.V32]: sdk.constants.KERNEL_V3_2,
26
- [sdkApiCore.ProviderKernelVersionEnum.V31]: sdk.constants.KERNEL_V3_1,
27
- [sdkApiCore.ProviderKernelVersionEnum.V30]: sdk.constants.KERNEL_V3_0,
28
- [sdkApiCore.ProviderKernelVersionEnum.V24]: sdk.constants.KERNEL_V2_4
29
- };
30
- const ENTRY_POINT_VERSION_MAP = {
31
- 0.6: sdk.constants.KERNEL_V2_4,
32
- 0.7: sdk.constants.KERNEL_V3_1,
33
- 0.8: sdk.constants.KERNEL_V3_3
34
- };
12
+ require('@zerodev/ecdsa-validator');
13
+ require('@zerodev/multi-chain-ecdsa-validator');
35
14
 
36
15
  const getAllUserZerodevAddresses = (client)=>{
37
16
  var _client_user;
38
17
  var _client_user_verifiedCredentials_filter;
39
18
  const zerodevWalletCredentials = (_client_user_verifiedCredentials_filter = (_client_user = client.user) == null ? void 0 : _client_user.verifiedCredentials.filter((credential)=>{
40
19
  var _credential_walletName;
41
- return credential.walletProvider === sdkApiCore.WalletProviderEnum.SmartContractWallet && ((_credential_walletName = credential.walletName) == null ? void 0 : _credential_walletName.toLowerCase().startsWith(ZERODEV_METADATA.normalizedWalletName)) && credential.address && credential.chain && core.getChainFromVerifiedCredentialChain(credential.chain) === 'EVM';
20
+ return credential.walletProvider === sdkApiCore.WalletProviderEnum.SmartContractWallet && ((_credential_walletName = credential.walletName) == null ? void 0 : _credential_walletName.toLowerCase().startsWith(getZerodevRpc.ZERODEV_METADATA.normalizedWalletName)) && credential.address && credential.chain && core.getChainFromVerifiedCredentialChain(credential.chain) === 'EVM';
42
21
  })) != null ? _client_user_verifiedCredentials_filter : [];
43
22
  const zerodevAddresses = zerodevWalletCredentials.map(// casting because we're already filtering out credentials without an address
44
23
  (credential)=>credential.address);
45
24
  return zerodevAddresses;
46
25
  };
47
26
 
48
- const getZerodevProviderFromSettings = (client)=>{
49
- var _projectSettings_providers;
50
- const projectSettings = client.projectSettings;
51
- core.assertDefined(projectSettings, 'Project settings are not available');
52
- const zerodevProvider = (_projectSettings_providers = projectSettings.providers) == null ? void 0 : _projectSettings_providers.find((provider)=>provider.provider === sdkApiCore.ProviderEnum.Zerodev);
53
- core.assertDefined(zerodevProvider, 'Zerodev is not configured in project settings');
54
- return zerodevProvider;
55
- };
56
-
57
- const getZerodevChainProviderForNetworkId = ({ networkId }, client)=>{
58
- var _zerodevProvider_multichainAccountAbstractionProviders;
59
- const zerodevProvider = getZerodevProviderFromSettings(client);
60
- return (_zerodevProvider_multichainAccountAbstractionProviders = zerodevProvider.multichainAccountAbstractionProviders) == null ? void 0 : _zerodevProvider_multichainAccountAbstractionProviders.find((provider)=>provider.chain === networkId);
61
- };
62
-
63
27
  function _extends() {
64
28
  _extends = Object.assign || function assign(target) {
65
29
  for(var i = 1; i < arguments.length; i++){
@@ -71,166 +35,6 @@ function _extends() {
71
35
  return _extends.apply(this, arguments);
72
36
  }
73
37
 
74
- /**
75
- * Gets a WalletClient instance for the EOA of the smart wallet account.
76
- * You can use this signer to sign EVM transactions.
77
- *
78
- * @param params.smartWalletAccount - The EVM smart wallet account to get the signer for.
79
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
80
- * @returns A promise that resolves to an WalletClient instance.
81
- * @throws NoSmartWalletAccountSignerFoundError When the signer wallet account is not found for the given smart wallet account.
82
- */ const getSignerForSmartWalletAccount = ({ smartWalletAccount }, client$1 = core.getDefaultClient())=>{
83
- const signerWalletAccount = client.getOwnerWalletAccountForSmartWalletAccount({
84
- smartWalletAccount
85
- }, client$1);
86
- if (!signerWalletAccount || !evm.isEvmWalletAccount(signerWalletAccount)) {
87
- throw new client.NoSmartWalletAccountSignerFoundError(smartWalletAccount.address);
88
- }
89
- return viem.createWalletClientForWalletAccount({
90
- walletAccount: signerWalletAccount
91
- }, client$1);
92
- };
93
-
94
- const getEcdsaValidator = ({ ecdsaProviderType, publicClient, signer, entryPoint, kernelVersion })=>{
95
- const params = {
96
- entryPoint,
97
- kernelVersion,
98
- signer
99
- };
100
- if (ecdsaProviderType === 'zerodev_multi_chain') {
101
- return multiChainEcdsaValidator.toMultiChainECDSAValidator(publicClient, params);
102
- }
103
- return ecdsaValidator.signerToEcdsaValidator(publicClient, params);
104
- };
105
-
106
- const getEntryPoint = (entryPoint)=>{
107
- if (entryPoint === sdkApiCore.ProviderEntryPointVersionEnum.V6) {
108
- return sdk.constants.getEntryPoint('0.6');
109
- }
110
- // default to v7
111
- return sdk.constants.getEntryPoint('0.7');
112
- };
113
-
114
- const getKernelVersion = ({ kernelVersion, entryPoint })=>{
115
- // If kernel version is explicitly provided, use it
116
- if (kernelVersion && kernelVersion in KERNEL_VERSION_MAP) {
117
- return KERNEL_VERSION_MAP[kernelVersion];
118
- }
119
- // If no kernel version provided, determine based on entry point version
120
- const entryPointVersion = entryPoint.version;
121
- if (entryPointVersion in ENTRY_POINT_VERSION_MAP) {
122
- return ENTRY_POINT_VERSION_MAP[entryPointVersion];
123
- }
124
- // Fallback to latest version
125
- return sdk.constants.KERNEL_V3_3;
126
- };
127
-
128
- const shouldUseEIP7702 = ({ smartWalletAccount }, client$1)=>{
129
- const zerodevProvider = getZerodevProviderFromSettings(client$1);
130
- core.assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
131
- const eoaWalletAccount = client.getOwnerWalletAccountForSmartWalletAccount({
132
- smartWalletAccount
133
- }, client$1);
134
- core.assertDefined(eoaWalletAccount, 'EOA wallet account is not found');
135
- return zerodevProvider.enableEIP7702 && // with EIP7702, the EOA wallet account address is the same as the smart wallet account address
136
- smartWalletAccount.address === eoaWalletAccount.address;
137
- };
138
-
139
- const createKernelAccount = async ({ publicClient, smartWalletAccount }, client)=>{
140
- var _getVerifiedCredentialForWalletAccount;
141
- const zerodevProvider = getZerodevProviderFromSettings(client);
142
- core.assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
143
- const signer = await getSignerForSmartWalletAccount({
144
- smartWalletAccount
145
- }, client);
146
- const walletProperties = (_getVerifiedCredentialForWalletAccount = core.getVerifiedCredentialForWalletAccount({
147
- walletAccount: smartWalletAccount
148
- }, client)) == null ? void 0 : _getVerifiedCredentialForWalletAccount.walletProperties;
149
- var _walletProperties_entryPointVersion;
150
- const entryPointVersion = (_walletProperties_entryPointVersion = walletProperties == null ? void 0 : walletProperties.entryPointVersion) != null ? _walletProperties_entryPointVersion : zerodevProvider.entryPointVersion;
151
- const entryPoint = getEntryPoint(entryPointVersion);
152
- const useEIP7702 = shouldUseEIP7702({
153
- smartWalletAccount
154
- }, client);
155
- if (useEIP7702) {
156
- return sdk.createKernelAccount(publicClient, {
157
- eip7702Account: signer,
158
- entryPoint,
159
- kernelVersion: sdk.constants.KERNEL_V3_3
160
- });
161
- }
162
- var _walletProperties_kernelVersion;
163
- const kernelVersionValue = (_walletProperties_kernelVersion = walletProperties == null ? void 0 : walletProperties.kernelVersion) != null ? _walletProperties_kernelVersion : zerodevProvider.kernelVersion;
164
- const kernelVersion = getKernelVersion({
165
- entryPoint,
166
- kernelVersion: kernelVersionValue
167
- });
168
- var _zerodevProvider_enableKernelV3Migration;
169
- const kernelV3MigrationEnabled = (_zerodevProvider_enableKernelV3Migration = zerodevProvider.enableKernelV3Migration) != null ? _zerodevProvider_enableKernelV3Migration : false;
170
- if (kernelV3MigrationEnabled) {
171
- const apiKernelVersion = getKernelVersion({
172
- entryPoint,
173
- kernelVersion: zerodevProvider.kernelVersion
174
- });
175
- return ecdsaValidator.createEcdsaKernelMigrationAccount(publicClient, {
176
- entryPoint,
177
- migrationVersion: {
178
- from: kernelVersion,
179
- to: apiKernelVersion
180
- },
181
- signer
182
- });
183
- }
184
- var _walletProperties_ecdsaProviderType;
185
- const validator = await getEcdsaValidator({
186
- ecdsaProviderType: (_walletProperties_ecdsaProviderType = walletProperties == null ? void 0 : walletProperties.ecdsaProviderType) != null ? _walletProperties_ecdsaProviderType : zerodevProvider.ecdsaProviderType,
187
- entryPoint,
188
- kernelVersion,
189
- publicClient,
190
- signer
191
- });
192
- return sdk.createKernelAccount(publicClient, {
193
- entryPoint,
194
- kernelVersion,
195
- plugins: {
196
- sudo: validator
197
- }
198
- });
199
- };
200
-
201
- const getPaymasterConfig = ({ chain, gasTokenAddress, paymasterRpc })=>{
202
- const getPaymasterData = (params)=>{
203
- const zerodevPaymaster = sdk.createZeroDevPaymasterClient({
204
- chain,
205
- transport: viem$1.http(paymasterRpc)
206
- });
207
- return zerodevPaymaster.sponsorUserOperation({
208
- gasToken: gasTokenAddress,
209
- userOperation: params
210
- });
211
- };
212
- return {
213
- paymaster: {
214
- getPaymasterData
215
- }
216
- };
217
- };
218
-
219
- const getZerodevRpc = ({ networkId, bundlerProvider, rpcType }, client)=>{
220
- const zerodevProvider = getZerodevProviderFromSettings(client);
221
- if (zerodevProvider == null ? void 0 : zerodevProvider.zerodevPaymasterRpcUrl) {
222
- return zerodevProvider.zerodevPaymasterRpcUrl;
223
- }
224
- const zerodevChainProvider = getZerodevChainProviderForNetworkId({
225
- networkId
226
- }, client);
227
- core.assertDefined(zerodevChainProvider, `No zerodev provider found for network id ${networkId}`);
228
- var _ref;
229
- const paymasterProvider = (_ref = bundlerProvider != null ? bundlerProvider : zerodevProvider.zerodevBundlerProvider) != null ? _ref : sdkApiCore.ZerodevBundlerProvider.Pimlico;
230
- const paramName = rpcType === 'bundler' ? 'bundlerProvider' : 'paymasterProvider';
231
- return `${ZERODEV_RPC_BASE_URL}/${rpcType}/${zerodevChainProvider.clientId}?${paramName}=${paymasterProvider}`;
232
- };
233
-
234
38
  /**
235
39
  * Creates a KernelClient instance for a given smart wallet account.
236
40
  *
@@ -248,7 +52,7 @@ const getZerodevRpc = ({ networkId, bundlerProvider, rpcType }, client)=>{
248
52
  }, client$1);
249
53
  core.assertDefined(activeNetworkData, 'No active network data found');
250
54
  const viemChain = viem.mapNetworkDataToViemChain(activeNetworkData);
251
- const bundlerRpc = bundlerRpcOverride != null ? bundlerRpcOverride : getZerodevRpc({
55
+ const bundlerRpc = bundlerRpcOverride != null ? bundlerRpcOverride : getZerodevRpc.getZerodevRpc({
252
56
  bundlerProvider,
253
57
  networkId: activeNetworkData.networkId,
254
58
  rpcType: 'bundler'
@@ -258,16 +62,16 @@ const getZerodevRpc = ({ networkId, bundlerProvider, rpcType }, client)=>{
258
62
  chain: viemChain,
259
63
  transport: bundlerTransport
260
64
  });
261
- const account = await createKernelAccount({
65
+ const account = await getZerodevRpc.createKernelAccount({
262
66
  publicClient,
263
67
  smartWalletAccount
264
68
  }, client$1);
265
- const paymasterRpc = paymasterRpcOverride != null ? paymasterRpcOverride : getZerodevRpc({
69
+ const paymasterRpc = paymasterRpcOverride != null ? paymasterRpcOverride : getZerodevRpc.getZerodevRpc({
266
70
  bundlerProvider,
267
71
  networkId: activeNetworkData.networkId,
268
72
  rpcType: 'paymaster'
269
73
  }, client$1);
270
- const paymasterConfig = withSponsorship ? getPaymasterConfig({
74
+ const paymasterConfig = withSponsorship ? getZerodevRpc.getPaymasterConfig({
271
75
  chain: viemChain,
272
76
  gasTokenAddress,
273
77
  paymasterRpc
@@ -284,7 +88,7 @@ const getZerodevRpc = ({ networkId, bundlerProvider, rpcType }, client)=>{
284
88
  };
285
89
 
286
90
  const shouldSignWithEoa = async ({ kernelClient, smartWalletAccount }, client)=>{
287
- const useEIP7702 = shouldUseEIP7702({
91
+ const useEIP7702 = getZerodevRpc.shouldUseEIP7702({
288
92
  smartWalletAccount
289
93
  }, client);
290
94
  if (!useEIP7702) {
@@ -328,7 +132,7 @@ const createZerodevWalletProvider = (client$1)=>{
328
132
  const walletProviderType = sdkApiCore.WalletProviderEnum.SmartContractWallet;
329
133
  const key = core.formatWalletProviderKey({
330
134
  chain,
331
- displayName: ZERODEV_METADATA.displayName,
135
+ displayName: getZerodevRpc.ZERODEV_METADATA.displayName,
332
136
  walletProviderType
333
137
  });
334
138
  const getActiveNetworkId = async ()=>core.getActiveNetworkIdFromLastKnownRegistry({
@@ -355,7 +159,7 @@ const createZerodevWalletProvider = (client$1)=>{
355
159
  }, client$1);
356
160
  };
357
161
  const switchActiveNetwork = async ({ networkId })=>{
358
- const isNetworkEnabled = getZerodevChainProviderForNetworkId({
162
+ const isNetworkEnabled = getZerodevRpc.getZerodevChainProviderForNetworkId({
359
163
  networkId
360
164
  }, client$1);
361
165
  if (!isNetworkEnabled) {
@@ -375,11 +179,11 @@ const createZerodevWalletProvider = (client$1)=>{
375
179
  chain,
376
180
  getActiveNetworkId,
377
181
  getConnectedAddresses,
378
- groupKey: core.formatWalletProviderGroupKey(ZERODEV_METADATA.displayName),
182
+ groupKey: core.formatWalletProviderGroupKey(getZerodevRpc.ZERODEV_METADATA.displayName),
379
183
  key,
380
184
  metadata: {
381
- displayName: ZERODEV_METADATA.displayName,
382
- icon: ZERODEV_METADATA.icon
185
+ displayName: getZerodevRpc.ZERODEV_METADATA.displayName,
186
+ icon: getZerodevRpc.ZERODEV_METADATA.icon
383
187
  },
384
188
  request,
385
189
  signMessage: signMessage$1,
@@ -489,11 +293,11 @@ const isGasSponsorshipError = (err)=>{
489
293
  return (errorWithMessage == null ? void 0 : (_errorWithMessage_message = errorWithMessage.message) == null ? void 0 : _errorWithMessage_message.includes('userOp did not match any gas sponsoring policies')) || false;
490
294
  };
491
295
 
492
- assertPackageVersion.assertPackageVersion(name, version);
296
+ assertPackageVersion.assertPackageVersion(getZerodevRpc.name, getZerodevRpc.version);
493
297
 
298
+ exports.getSignerForSmartWalletAccount = getZerodevRpc.getSignerForSmartWalletAccount;
494
299
  exports.addZerodevExtension = addZerodevExtension;
495
300
  exports.canSponsorTransaction = canSponsorTransaction;
496
301
  exports.createKernelClientForWalletAccount = createKernelClientForWalletAccount;
497
302
  exports.estimateTransactionGas = estimateTransactionGas;
498
- exports.getSignerForSmartWalletAccount = getSignerForSmartWalletAccount;
499
303
  exports.isGasSponsorshipError = isGasSponsorshipError;
package/index.esm.js CHANGED
@@ -1,35 +1,15 @@
1
1
  import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';
2
- import { DYNAMIC_ICONIC_SPRITE_URL, getChainFromVerifiedCredentialChain, assertDefined, getDefaultClient, getVerifiedCredentialForWalletAccount, formatWalletProviderKey, formatWalletProviderGroupKey, getActiveNetworkIdFromLastKnownRegistry, switchActiveNetworkInLastKnownRegistry, MethodNotImplementedError, hasExtension, registerExtension, getWalletProviderRegistry, WalletProviderPriority } from '@dynamic-labs-sdk/client/core';
3
- import { getOwnerWalletAccountForSmartWalletAccount, NoSmartWalletAccountSignerFoundError, getActiveNetworkData, signMessage as signMessage$1, UnrecognizedNetworkError, InvalidParamError } from '@dynamic-labs-sdk/client';
2
+ import { Z as ZERODEV_METADATA, g as getZerodevRpc, c as createKernelAccount, a as getPaymasterConfig, s as shouldUseEIP7702, b as getZerodevChainProviderForNetworkId, n as name, v as version } from './getZerodevRpc.esm.js';
3
+ export { d as getSignerForSmartWalletAccount } from './getZerodevRpc.esm.js';
4
+ import { getChainFromVerifiedCredentialChain, getDefaultClient, assertDefined, formatWalletProviderKey, formatWalletProviderGroupKey, getActiveNetworkIdFromLastKnownRegistry, switchActiveNetworkInLastKnownRegistry, MethodNotImplementedError, hasExtension, registerExtension, getWalletProviderRegistry, WalletProviderPriority } from '@dynamic-labs-sdk/client/core';
5
+ import { getActiveNetworkData, getOwnerWalletAccountForSmartWalletAccount, signMessage as signMessage$1, UnrecognizedNetworkError, InvalidParamError } from '@dynamic-labs-sdk/client';
4
6
  import { isEvmWalletAccount } from '@dynamic-labs-sdk/evm';
5
- import { ProviderKernelVersionEnum, WalletProviderEnum, ProviderEnum, ProviderEntryPointVersionEnum, ZerodevBundlerProvider } from '@dynamic-labs/sdk-api-core';
6
- import { constants, createKernelAccount as createKernelAccount$1, createZeroDevPaymasterClient, createKernelAccountClient, getUserOperationGasPrice } from '@zerodev/sdk';
7
- import { createWalletClientForWalletAccount, mapNetworkDataToViemChain } from '@dynamic-labs-sdk/evm/viem';
7
+ import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';
8
+ import { mapNetworkDataToViemChain } from '@dynamic-labs-sdk/evm/viem';
9
+ import { createKernelAccountClient, getUserOperationGasPrice } from '@zerodev/sdk';
8
10
  import { http, createPublicClient } from 'viem';
9
- import { signerToEcdsaValidator, createEcdsaKernelMigrationAccount } from '@zerodev/ecdsa-validator';
10
- import { toMultiChainECDSAValidator } from '@zerodev/multi-chain-ecdsa-validator';
11
-
12
- var name = "@dynamic-labs-sdk/zerodev";
13
- var version = "0.1.0-alpha.21";
14
-
15
- const ZERODEV_METADATA = {
16
- displayName: 'ZeroDev',
17
- icon: `${DYNAMIC_ICONIC_SPRITE_URL}#smartwallet`,
18
- normalizedWalletName: 'zerodev'
19
- };
20
- const ZERODEV_RPC_BASE_URL = 'https://rpc.zerodev.app/api/v2';
21
- const KERNEL_VERSION_MAP = {
22
- [ProviderKernelVersionEnum.V33]: constants.KERNEL_V3_3,
23
- [ProviderKernelVersionEnum.V32]: constants.KERNEL_V3_2,
24
- [ProviderKernelVersionEnum.V31]: constants.KERNEL_V3_1,
25
- [ProviderKernelVersionEnum.V30]: constants.KERNEL_V3_0,
26
- [ProviderKernelVersionEnum.V24]: constants.KERNEL_V2_4
27
- };
28
- const ENTRY_POINT_VERSION_MAP = {
29
- 0.6: constants.KERNEL_V2_4,
30
- 0.7: constants.KERNEL_V3_1,
31
- 0.8: constants.KERNEL_V3_3
32
- };
11
+ import '@zerodev/ecdsa-validator';
12
+ import '@zerodev/multi-chain-ecdsa-validator';
33
13
 
34
14
  const getAllUserZerodevAddresses = (client)=>{
35
15
  var _client_user;
@@ -43,21 +23,6 @@ const getAllUserZerodevAddresses = (client)=>{
43
23
  return zerodevAddresses;
44
24
  };
45
25
 
46
- const getZerodevProviderFromSettings = (client)=>{
47
- var _projectSettings_providers;
48
- const projectSettings = client.projectSettings;
49
- assertDefined(projectSettings, 'Project settings are not available');
50
- const zerodevProvider = (_projectSettings_providers = projectSettings.providers) == null ? void 0 : _projectSettings_providers.find((provider)=>provider.provider === ProviderEnum.Zerodev);
51
- assertDefined(zerodevProvider, 'Zerodev is not configured in project settings');
52
- return zerodevProvider;
53
- };
54
-
55
- const getZerodevChainProviderForNetworkId = ({ networkId }, client)=>{
56
- var _zerodevProvider_multichainAccountAbstractionProviders;
57
- const zerodevProvider = getZerodevProviderFromSettings(client);
58
- return (_zerodevProvider_multichainAccountAbstractionProviders = zerodevProvider.multichainAccountAbstractionProviders) == null ? void 0 : _zerodevProvider_multichainAccountAbstractionProviders.find((provider)=>provider.chain === networkId);
59
- };
60
-
61
26
  function _extends() {
62
27
  _extends = Object.assign || function assign(target) {
63
28
  for(var i = 1; i < arguments.length; i++){
@@ -69,166 +34,6 @@ function _extends() {
69
34
  return _extends.apply(this, arguments);
70
35
  }
71
36
 
72
- /**
73
- * Gets a WalletClient instance for the EOA of the smart wallet account.
74
- * You can use this signer to sign EVM transactions.
75
- *
76
- * @param params.smartWalletAccount - The EVM smart wallet account to get the signer for.
77
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
78
- * @returns A promise that resolves to an WalletClient instance.
79
- * @throws NoSmartWalletAccountSignerFoundError When the signer wallet account is not found for the given smart wallet account.
80
- */ const getSignerForSmartWalletAccount = ({ smartWalletAccount }, client = getDefaultClient())=>{
81
- const signerWalletAccount = getOwnerWalletAccountForSmartWalletAccount({
82
- smartWalletAccount
83
- }, client);
84
- if (!signerWalletAccount || !isEvmWalletAccount(signerWalletAccount)) {
85
- throw new NoSmartWalletAccountSignerFoundError(smartWalletAccount.address);
86
- }
87
- return createWalletClientForWalletAccount({
88
- walletAccount: signerWalletAccount
89
- }, client);
90
- };
91
-
92
- const getEcdsaValidator = ({ ecdsaProviderType, publicClient, signer, entryPoint, kernelVersion })=>{
93
- const params = {
94
- entryPoint,
95
- kernelVersion,
96
- signer
97
- };
98
- if (ecdsaProviderType === 'zerodev_multi_chain') {
99
- return toMultiChainECDSAValidator(publicClient, params);
100
- }
101
- return signerToEcdsaValidator(publicClient, params);
102
- };
103
-
104
- const getEntryPoint = (entryPoint)=>{
105
- if (entryPoint === ProviderEntryPointVersionEnum.V6) {
106
- return constants.getEntryPoint('0.6');
107
- }
108
- // default to v7
109
- return constants.getEntryPoint('0.7');
110
- };
111
-
112
- const getKernelVersion = ({ kernelVersion, entryPoint })=>{
113
- // If kernel version is explicitly provided, use it
114
- if (kernelVersion && kernelVersion in KERNEL_VERSION_MAP) {
115
- return KERNEL_VERSION_MAP[kernelVersion];
116
- }
117
- // If no kernel version provided, determine based on entry point version
118
- const entryPointVersion = entryPoint.version;
119
- if (entryPointVersion in ENTRY_POINT_VERSION_MAP) {
120
- return ENTRY_POINT_VERSION_MAP[entryPointVersion];
121
- }
122
- // Fallback to latest version
123
- return constants.KERNEL_V3_3;
124
- };
125
-
126
- const shouldUseEIP7702 = ({ smartWalletAccount }, client)=>{
127
- const zerodevProvider = getZerodevProviderFromSettings(client);
128
- assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
129
- const eoaWalletAccount = getOwnerWalletAccountForSmartWalletAccount({
130
- smartWalletAccount
131
- }, client);
132
- assertDefined(eoaWalletAccount, 'EOA wallet account is not found');
133
- return zerodevProvider.enableEIP7702 && // with EIP7702, the EOA wallet account address is the same as the smart wallet account address
134
- smartWalletAccount.address === eoaWalletAccount.address;
135
- };
136
-
137
- const createKernelAccount = async ({ publicClient, smartWalletAccount }, client)=>{
138
- var _getVerifiedCredentialForWalletAccount;
139
- const zerodevProvider = getZerodevProviderFromSettings(client);
140
- assertDefined(zerodevProvider, 'Zerodev provider is not enabled in project settings');
141
- const signer = await getSignerForSmartWalletAccount({
142
- smartWalletAccount
143
- }, client);
144
- const walletProperties = (_getVerifiedCredentialForWalletAccount = getVerifiedCredentialForWalletAccount({
145
- walletAccount: smartWalletAccount
146
- }, client)) == null ? void 0 : _getVerifiedCredentialForWalletAccount.walletProperties;
147
- var _walletProperties_entryPointVersion;
148
- const entryPointVersion = (_walletProperties_entryPointVersion = walletProperties == null ? void 0 : walletProperties.entryPointVersion) != null ? _walletProperties_entryPointVersion : zerodevProvider.entryPointVersion;
149
- const entryPoint = getEntryPoint(entryPointVersion);
150
- const useEIP7702 = shouldUseEIP7702({
151
- smartWalletAccount
152
- }, client);
153
- if (useEIP7702) {
154
- return createKernelAccount$1(publicClient, {
155
- eip7702Account: signer,
156
- entryPoint,
157
- kernelVersion: constants.KERNEL_V3_3
158
- });
159
- }
160
- var _walletProperties_kernelVersion;
161
- const kernelVersionValue = (_walletProperties_kernelVersion = walletProperties == null ? void 0 : walletProperties.kernelVersion) != null ? _walletProperties_kernelVersion : zerodevProvider.kernelVersion;
162
- const kernelVersion = getKernelVersion({
163
- entryPoint,
164
- kernelVersion: kernelVersionValue
165
- });
166
- var _zerodevProvider_enableKernelV3Migration;
167
- const kernelV3MigrationEnabled = (_zerodevProvider_enableKernelV3Migration = zerodevProvider.enableKernelV3Migration) != null ? _zerodevProvider_enableKernelV3Migration : false;
168
- if (kernelV3MigrationEnabled) {
169
- const apiKernelVersion = getKernelVersion({
170
- entryPoint,
171
- kernelVersion: zerodevProvider.kernelVersion
172
- });
173
- return createEcdsaKernelMigrationAccount(publicClient, {
174
- entryPoint,
175
- migrationVersion: {
176
- from: kernelVersion,
177
- to: apiKernelVersion
178
- },
179
- signer
180
- });
181
- }
182
- var _walletProperties_ecdsaProviderType;
183
- const validator = await getEcdsaValidator({
184
- ecdsaProviderType: (_walletProperties_ecdsaProviderType = walletProperties == null ? void 0 : walletProperties.ecdsaProviderType) != null ? _walletProperties_ecdsaProviderType : zerodevProvider.ecdsaProviderType,
185
- entryPoint,
186
- kernelVersion,
187
- publicClient,
188
- signer
189
- });
190
- return createKernelAccount$1(publicClient, {
191
- entryPoint,
192
- kernelVersion,
193
- plugins: {
194
- sudo: validator
195
- }
196
- });
197
- };
198
-
199
- const getPaymasterConfig = ({ chain, gasTokenAddress, paymasterRpc })=>{
200
- const getPaymasterData = (params)=>{
201
- const zerodevPaymaster = createZeroDevPaymasterClient({
202
- chain,
203
- transport: http(paymasterRpc)
204
- });
205
- return zerodevPaymaster.sponsorUserOperation({
206
- gasToken: gasTokenAddress,
207
- userOperation: params
208
- });
209
- };
210
- return {
211
- paymaster: {
212
- getPaymasterData
213
- }
214
- };
215
- };
216
-
217
- const getZerodevRpc = ({ networkId, bundlerProvider, rpcType }, client)=>{
218
- const zerodevProvider = getZerodevProviderFromSettings(client);
219
- if (zerodevProvider == null ? void 0 : zerodevProvider.zerodevPaymasterRpcUrl) {
220
- return zerodevProvider.zerodevPaymasterRpcUrl;
221
- }
222
- const zerodevChainProvider = getZerodevChainProviderForNetworkId({
223
- networkId
224
- }, client);
225
- assertDefined(zerodevChainProvider, `No zerodev provider found for network id ${networkId}`);
226
- var _ref;
227
- const paymasterProvider = (_ref = bundlerProvider != null ? bundlerProvider : zerodevProvider.zerodevBundlerProvider) != null ? _ref : ZerodevBundlerProvider.Pimlico;
228
- const paramName = rpcType === 'bundler' ? 'bundlerProvider' : 'paymasterProvider';
229
- return `${ZERODEV_RPC_BASE_URL}/${rpcType}/${zerodevChainProvider.clientId}?${paramName}=${paymasterProvider}`;
230
- };
231
-
232
37
  /**
233
38
  * Creates a KernelClient instance for a given smart wallet account.
234
39
  *
@@ -489,4 +294,4 @@ const isGasSponsorshipError = (err)=>{
489
294
 
490
295
  assertPackageVersion(name, version);
491
296
 
492
- export { addZerodevExtension, canSponsorTransaction, createKernelClientForWalletAccount, estimateTransactionGas, getSignerForSmartWalletAccount, isGasSponsorshipError };
297
+ export { addZerodevExtension, canSponsorTransaction, createKernelClientForWalletAccount, estimateTransactionGas, isGasSponsorshipError };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs-sdk/zerodev",
3
- "version": "0.1.0-alpha.21",
3
+ "version": "0.1.0-alpha.22",
4
4
  "type": "module",
5
5
  "main": "./index.cjs.js",
6
6
  "module": "./index.esm.js",
@@ -11,12 +11,17 @@
11
11
  "types": "./index.esm.d.ts",
12
12
  "import": "./index.esm.js",
13
13
  "default": "./index.cjs.js"
14
+ },
15
+ "./core": {
16
+ "types": "./core.esm.d.ts",
17
+ "import": "./core.esm.js",
18
+ "default": "./core.cjs.js"
14
19
  }
15
20
  },
16
21
  "dependencies": {
17
- "@dynamic-labs-sdk/assert-package-version": "0.1.0-alpha.21",
18
- "@dynamic-labs-sdk/client": "0.1.0-alpha.21",
19
- "@dynamic-labs-sdk/evm": "0.1.0-alpha.21",
22
+ "@dynamic-labs-sdk/assert-package-version": "0.1.0-alpha.22",
23
+ "@dynamic-labs-sdk/client": "0.1.0-alpha.22",
24
+ "@dynamic-labs-sdk/evm": "0.1.0-alpha.22",
20
25
  "@dynamic-labs/sdk-api-core": "0.0.805",
21
26
  "@zerodev/ecdsa-validator": "5.4.9",
22
27
  "@zerodev/multi-chain-ecdsa-validator": "5.4.5",
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @categoryDescription Extension Development
3
+ * Core utilities and functions for building ZeroDev SDK extensions.
4
+ * These APIs provide low-level access to the SDK internals and are intended
5
+ * for advanced use cases and extension development. Most applications should
6
+ * use the higher-level APIs exported from the main SDK package instead.
7
+ */
8
+ /** @category Extension Development */
9
+ export { createKernelAccount } from '../utils/createKernelAccount';
10
+ /** @category Extension Development */
11
+ export { getEcdsaValidator } from '../utils/getEcdsaValidator';
12
+ /** @category Extension Development */
13
+ export { getEntryPoint } from '../utils/getEntryPoint';
14
+ /** @category Extension Development */
15
+ export { getKernelVersion } from '../utils/getKernelVersion';
16
+ /** @category Extension Development */
17
+ export { getPaymasterConfig } from '../utils/getPaymasterConfig';
18
+ /** @category Extension Development */
19
+ export { getZerodevChainProviderForNetworkId } from '../utils/getZerodevChainProviderForNetworkId';
20
+ /** @category Extension Development */
21
+ export { getZerodevProviderFromSettings } from '../utils/getZerodevProviderFromSettings';
22
+ /** @category Extension Development */
23
+ export { getZerodevRpc } from '../utils/getZerodevRpc';
24
+ /** @category Extension Development */
25
+ export { shouldUseEIP7702 } from '../utils/shouldUseEIP7702';
26
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../packages/zerodev/src/exports/core.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AAEH,sCAAsC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,sCAAsC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,sCAAsC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,sCAAsC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,sCAAsC;AACtC,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAC;AACnG,sCAAsC;AACtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,sCAAsC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}