@dynamic-labs/ethereum-aa 3.0.0-alpha.8 → 3.0.0
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 +622 -0
- package/package.json +12 -12
- package/src/ZeroDevConnector.cjs +103 -26
- package/src/ZeroDevConnector.d.ts +29 -10
- package/src/ZeroDevConnector.js +101 -24
- package/src/index.cjs +4 -4
- package/src/index.d.ts +3 -1
- package/src/index.js +4 -4
- package/src/utils/createEcsdaKernelAccountClient.cjs +10 -7
- package/src/utils/createEcsdaKernelAccountClient.d.ts +6 -1
- package/src/utils/createEcsdaKernelAccountClient.js +10 -7
- package/src/utils/fetchChain.cjs +3 -3
- package/src/utils/fetchChain.js +1 -1
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
6
|
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
7
|
-
var ecdsaValidator = require('@zerodev/ecdsa-validator');
|
|
8
7
|
var accounts = require('@zerodev/sdk/accounts');
|
|
9
8
|
var clients = require('@zerodev/sdk/clients');
|
|
10
9
|
var viem = require('viem');
|
|
@@ -24,29 +23,33 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
|
|
|
24
23
|
return rpc;
|
|
25
24
|
};
|
|
26
25
|
const isERC20 = (value) => viem.isAddress(value);
|
|
27
|
-
const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ chain, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, }) {
|
|
26
|
+
const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, ecdsaValidator, }) {
|
|
27
|
+
const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
|
|
28
|
+
const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
|
|
28
29
|
const publicClient = viem.createPublicClient({
|
|
29
|
-
transport: viem.http(
|
|
30
|
+
transport: viem.http(resolvedBundlerRpc),
|
|
30
31
|
});
|
|
31
|
-
const
|
|
32
|
+
const validator = yield ecdsaValidator(publicClient, {
|
|
32
33
|
entryPoint: entryPointAddress,
|
|
34
|
+
kernelVersion,
|
|
33
35
|
signer,
|
|
34
36
|
});
|
|
35
37
|
const account = yield accounts.createKernelAccount(publicClient, {
|
|
36
38
|
entryPoint: entryPointAddress,
|
|
37
39
|
index,
|
|
40
|
+
kernelVersion,
|
|
38
41
|
plugins: {
|
|
39
|
-
sudo:
|
|
42
|
+
sudo: validator,
|
|
40
43
|
},
|
|
41
44
|
});
|
|
42
45
|
const zerodevPaymaster = clients.createZeroDevPaymasterClient({
|
|
43
46
|
chain: chain,
|
|
44
47
|
entryPoint: entryPointAddress,
|
|
45
|
-
transport: viem.http(
|
|
48
|
+
transport: viem.http(resolvedPaymasterRpc),
|
|
46
49
|
});
|
|
47
50
|
const kernelClient = clients.createKernelAccountClient({
|
|
48
51
|
account,
|
|
49
|
-
bundlerTransport: viem.http(
|
|
52
|
+
bundlerTransport: viem.http(resolvedBundlerRpc),
|
|
50
53
|
chain,
|
|
51
54
|
entryPoint: entryPointAddress,
|
|
52
55
|
middleware: paymaster !== 'NONE'
|
|
@@ -3,17 +3,22 @@ import { KernelAccountClient } from '@zerodev/sdk/clients';
|
|
|
3
3
|
import { SmartAccountSigner } from 'permissionless/accounts';
|
|
4
4
|
import { EntryPoint } from 'permissionless/types';
|
|
5
5
|
import { Address, HttpTransport, Chain } from 'viem';
|
|
6
|
+
import { GetKernelVersion } from '@zerodev/sdk/types';
|
|
6
7
|
export type BundlerProvider = 'STACKUP' | 'PIMLICO' | 'ALCHEMY' | 'GELATO';
|
|
7
8
|
export type ERC20Paymaster = Address;
|
|
8
9
|
export type PaymasterType = 'NONE' | 'SPONSOR' | ERC20Paymaster;
|
|
9
10
|
export declare const getZeroDevBundlerRPC: (projectId: string, provider?: BundlerProvider) => string;
|
|
10
11
|
export declare const getZeroDevPaymasterRPC: (projectId: string, provider?: BundlerProvider) => string;
|
|
11
|
-
export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPoint, TChain extends Chain | undefined = Chain | undefined, TSource extends string = "custom", TAddress extends `0x${string}` = `0x${string}`>({ chain, projectId, signer, provider, index, paymaster, entryPointAddress, }: {
|
|
12
|
+
export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPoint, TChain extends Chain | undefined = Chain | undefined, TSource extends string = "custom", TAddress extends `0x${string}` = `0x${string}`>({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster, entryPointAddress, kernelVersion, ecdsaValidator, }: {
|
|
13
|
+
bundlerRpc?: string;
|
|
12
14
|
chain: TChain;
|
|
13
15
|
projectId: string;
|
|
14
16
|
signer: SmartAccountSigner<TSource, TAddress>;
|
|
15
17
|
paymaster: PaymasterType;
|
|
18
|
+
paymasterRpc?: string;
|
|
16
19
|
entryPointAddress: entryPoint;
|
|
17
20
|
provider?: BundlerProvider;
|
|
18
21
|
index?: bigint;
|
|
22
|
+
kernelVersion: GetKernelVersion<entryPoint>;
|
|
23
|
+
ecdsaValidator: any;
|
|
19
24
|
}) => Promise<KernelAccountClient<entryPoint, HttpTransport, TChain, KernelSmartAccount<entryPoint, HttpTransport, TChain>>>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
-
import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator';
|
|
4
3
|
import { createKernelAccount } from '@zerodev/sdk/accounts';
|
|
5
4
|
import { createZeroDevPaymasterClient, createKernelAccountClient } from '@zerodev/sdk/clients';
|
|
6
5
|
import { createPublicClient, http, isAddress } from 'viem';
|
|
@@ -20,29 +19,33 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
|
|
|
20
19
|
return rpc;
|
|
21
20
|
};
|
|
22
21
|
const isERC20 = (value) => isAddress(value);
|
|
23
|
-
const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ chain, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, }) {
|
|
22
|
+
const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, ecdsaValidator, }) {
|
|
23
|
+
const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
|
|
24
|
+
const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
|
|
24
25
|
const publicClient = createPublicClient({
|
|
25
|
-
transport: http(
|
|
26
|
+
transport: http(resolvedBundlerRpc),
|
|
26
27
|
});
|
|
27
|
-
const
|
|
28
|
+
const validator = yield ecdsaValidator(publicClient, {
|
|
28
29
|
entryPoint: entryPointAddress,
|
|
30
|
+
kernelVersion,
|
|
29
31
|
signer,
|
|
30
32
|
});
|
|
31
33
|
const account = yield createKernelAccount(publicClient, {
|
|
32
34
|
entryPoint: entryPointAddress,
|
|
33
35
|
index,
|
|
36
|
+
kernelVersion,
|
|
34
37
|
plugins: {
|
|
35
|
-
sudo:
|
|
38
|
+
sudo: validator,
|
|
36
39
|
},
|
|
37
40
|
});
|
|
38
41
|
const zerodevPaymaster = createZeroDevPaymasterClient({
|
|
39
42
|
chain: chain,
|
|
40
43
|
entryPoint: entryPointAddress,
|
|
41
|
-
transport: http(
|
|
44
|
+
transport: http(resolvedPaymasterRpc),
|
|
42
45
|
});
|
|
43
46
|
const kernelClient = createKernelAccountClient({
|
|
44
47
|
account,
|
|
45
|
-
bundlerTransport: http(
|
|
48
|
+
bundlerTransport: http(resolvedBundlerRpc),
|
|
46
49
|
chain,
|
|
47
50
|
entryPoint: entryPointAddress,
|
|
48
51
|
middleware: paymaster !== 'NONE'
|
package/src/utils/fetchChain.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
6
|
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
7
|
-
var
|
|
7
|
+
var ethereumCore = require('@dynamic-labs/ethereum-core');
|
|
8
8
|
var logger = require('./logger.cjs');
|
|
9
9
|
|
|
10
10
|
const cachedChainIdKey = 'dynamic_zd_chain_id';
|
|
@@ -12,11 +12,11 @@ const fetchChain = (projectId) => _tslib.__awaiter(void 0, void 0, void 0, funct
|
|
|
12
12
|
try {
|
|
13
13
|
const cachedChainId = localStorage.getItem(cachedChainIdKey);
|
|
14
14
|
if (cachedChainId) {
|
|
15
|
-
return
|
|
15
|
+
return ethereumCore.chainsMap[cachedChainId];
|
|
16
16
|
}
|
|
17
17
|
const response = yield (yield fetch(`https://prod-api.zerodev.app/projects/${projectId}`)).json();
|
|
18
18
|
localStorage.setItem(cachedChainIdKey, response.chainId);
|
|
19
|
-
return
|
|
19
|
+
return ethereumCore.chainsMap[response.chainId];
|
|
20
20
|
}
|
|
21
21
|
catch (err) {
|
|
22
22
|
logger.logger.error('Failed to fetch ZeroDev project settings from ZeroDev API ' +
|
package/src/utils/fetchChain.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
-
import { chainsMap } from '@dynamic-labs/
|
|
3
|
+
import { chainsMap } from '@dynamic-labs/ethereum-core';
|
|
4
4
|
import { logger } from './logger.js';
|
|
5
5
|
|
|
6
6
|
const cachedChainIdKey = 'dynamic_zd_chain_id';
|