@dynamic-labs-sdk/zerodev 0.1.0-alpha.21 → 0.1.0-alpha.23
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 +17 -0
- package/core.cjs.d.ts +1 -0
- package/core.cjs.js +25 -0
- package/core.esm.d.ts +1 -0
- package/core.esm.js +14 -0
- package/getZerodevRpc.cjs.js +222 -0
- package/getZerodevRpc.esm.js +208 -0
- package/index.cjs.js +17 -213
- package/index.esm.js +10 -205
- package/package.json +10 -5
- package/src/exports/core.d.ts +26 -0
- package/src/exports/core.d.ts.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## 0.1.0-alpha.23 (2025-10-22)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- add support for OKX BTC ([#583](https://github.com/dynamic-labs/dynamic-sdk/pull/583))
|
|
6
|
+
- add support for OneKey BTC ([#586](https://github.com/dynamic-labs/dynamic-sdk/pull/586))
|
|
7
|
+
- add support for Bitget Wallet BTC ([#592](https://github.com/dynamic-labs/dynamic-sdk/pull/592))
|
|
8
|
+
- add support for Binance Wallet BTC ([#595](https://github.com/dynamic-labs/dynamic-sdk/pull/595))
|
|
9
|
+
- add support for Oyl Wallet BTC ([#589](https://github.com/dynamic-labs/dynamic-sdk/pull/589))
|
|
10
|
+
- add support for Leather Wallet BTC ([#600](https://github.com/dynamic-labs/dynamic-sdk/pull/600))
|
|
11
|
+
|
|
12
|
+
## 0.1.0-alpha.22 (2025-10-16)
|
|
13
|
+
|
|
14
|
+
### 🚀 Features
|
|
15
|
+
|
|
16
|
+
- add support for Magic Eden BTC ([#575](https://github.com/dynamic-labs/dynamic-sdk/pull/575))
|
|
17
|
+
|
|
1
18
|
## 0.1.0-alpha.21 (2025-10-16)
|
|
2
19
|
|
|
3
20
|
### 🩹 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.23";
|
|
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.23";
|
|
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
|
-
|
|
12
|
-
|
|
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 {
|
|
3
|
-
|
|
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 {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
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
|
|
10
|
-
import
|
|
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,
|
|
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.
|
|
3
|
+
"version": "0.1.0-alpha.23",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.cjs.js",
|
|
6
6
|
"module": "./index.esm.js",
|
|
@@ -11,13 +11,18 @@
|
|
|
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.
|
|
18
|
-
"@dynamic-labs-sdk/client": "0.1.0-alpha.
|
|
19
|
-
"@dynamic-labs-sdk/evm": "0.1.0-alpha.
|
|
20
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
22
|
+
"@dynamic-labs-sdk/assert-package-version": "0.1.0-alpha.23",
|
|
23
|
+
"@dynamic-labs-sdk/client": "0.1.0-alpha.23",
|
|
24
|
+
"@dynamic-labs-sdk/evm": "0.1.0-alpha.23",
|
|
25
|
+
"@dynamic-labs/sdk-api-core": "0.0.813",
|
|
21
26
|
"@zerodev/ecdsa-validator": "5.4.9",
|
|
22
27
|
"@zerodev/multi-chain-ecdsa-validator": "5.4.5",
|
|
23
28
|
"@zerodev/sdk": "5.4.36"
|
|
@@ -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"}
|