@dynamic-labs/ethereum-aa 3.0.0-alpha.21 → 3.0.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 CHANGED
@@ -1,4 +1,31 @@
1
1
 
2
+ ## [3.0.0-alpha.23](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.22...v3.0.0-alpha.23) (2024-07-19)
3
+
4
+
5
+ ### Features
6
+
7
+ * show custom labels in the sdk ([#6352](https://github.com/dynamic-labs/DynamicAuth/issues/6352)) ([6eec9b2](https://github.com/dynamic-labs/DynamicAuth/commit/6eec9b26dbfd25c5138378aa92de8379a5cd0ddc))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * add missing await to viem controller ([#6354](https://github.com/dynamic-labs/DynamicAuth/issues/6354)) ([32c7362](https://github.com/dynamic-labs/DynamicAuth/commit/32c73625c5575f9134edd541c7221aba08a741b5))
13
+ * allow for react-native 0.74.x ([#6371](https://github.com/dynamic-labs/DynamicAuth/issues/6371)) ([37e08b6](https://github.com/dynamic-labs/DynamicAuth/commit/37e08b6b32bcaef7b7f6a4dedc45b2321f3f64a6))
14
+ * not able to switch to secondary wallet ([#6373](https://github.com/dynamic-labs/DynamicAuth/issues/6373)) ([f85ed10](https://github.com/dynamic-labs/DynamicAuth/commit/f85ed10aca8bf41658eb1418cd87e1c5061d4b1b))
15
+
16
+ ## [3.0.0-alpha.22](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.21...v3.0.0-alpha.22) (2024-07-18)
17
+
18
+
19
+ ### Features
20
+
21
+ * add support for aa kernel 3.1 ([#6333](https://github.com/dynamic-labs/DynamicAuth/issues/6333)) ([93c743a](https://github.com/dynamic-labs/DynamicAuth/commit/93c743a74d1af79f15baec343d15212a2feeac39))
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * ensure retryableFn props are passed through ([#6357](https://github.com/dynamic-labs/DynamicAuth/issues/6357)) ([246da78](https://github.com/dynamic-labs/DynamicAuth/commit/246da78ebaa0e623843d93fc990d8a0f3298af54))
27
+ * removes wallet connect qr code from magic eden ([#6360](https://github.com/dynamic-labs/DynamicAuth/issues/6360)) ([5968c2e](https://github.com/dynamic-labs/DynamicAuth/commit/5968c2e220f98b0995a2067e6f5397f27da4dfb0))
28
+
2
29
  ## [3.0.0-alpha.21](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.20...v3.0.0-alpha.21) (2024-07-17)
3
30
 
4
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum-aa",
3
- "version": "3.0.0-alpha.21",
3
+ "version": "3.0.0-alpha.23",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
@@ -26,17 +26,17 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
- "@dynamic-labs/sdk-api-core": "0.0.470",
30
- "@zerodev/ecdsa-validator": "5.2.3",
31
- "@zerodev/sdk": "5.2.8",
29
+ "@dynamic-labs/sdk-api-core": "0.0.489",
30
+ "@zerodev/ecdsa-validator": "5.3.1",
31
+ "@zerodev/sdk": "5.3.4",
32
32
  "permissionless": "0.1.20",
33
- "@dynamic-labs/ethereum": "3.0.0-alpha.21",
34
- "@dynamic-labs/logger": "3.0.0-alpha.21",
35
- "@dynamic-labs/types": "3.0.0-alpha.21",
36
- "@dynamic-labs/utils": "3.0.0-alpha.21",
37
- "@dynamic-labs/viem-utils": "3.0.0-alpha.21",
38
- "@dynamic-labs/wallet-book": "3.0.0-alpha.21",
39
- "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.21"
33
+ "@dynamic-labs/ethereum": "3.0.0-alpha.23",
34
+ "@dynamic-labs/logger": "3.0.0-alpha.23",
35
+ "@dynamic-labs/types": "3.0.0-alpha.23",
36
+ "@dynamic-labs/utils": "3.0.0-alpha.23",
37
+ "@dynamic-labs/viem-utils": "3.0.0-alpha.23",
38
+ "@dynamic-labs/wallet-book": "3.0.0-alpha.23",
39
+ "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.23"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "viem": "^2.7.6"
@@ -6,6 +6,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var _tslib = require('../_virtual/_tslib.cjs');
7
7
  var viem = require('viem');
8
8
  var utils$1 = require('permissionless/utils');
9
+ var constants = require('@zerodev/sdk/constants');
9
10
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
10
11
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
11
12
  var viemUtils = require('@dynamic-labs/viem-utils');
@@ -17,7 +18,7 @@ var createEcsdaKernelAccountClient = require('./utils/createEcsdaKernelAccountCl
17
18
 
18
19
  class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
19
20
  constructor(opts) {
20
- var _a, _b;
21
+ var _a, _b, _c;
21
22
  super(opts);
22
23
  this.connectedChain = 'EVM';
23
24
  this.supportedChains = ['ETH', 'EVM'];
@@ -39,11 +40,40 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
39
40
  this.projectId = zeroDevProjectId;
40
41
  this._walletUiUtils = opts.walletUiUtils;
41
42
  this.evmNetworks = utils.parseEvmNetworks(opts.evmNetworks);
42
- this.entryPoint =
43
- ((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.entryPointVersion) ===
44
- sdkApiCore.ProviderEntryPointVersionEnum.V6
45
- ? utils$1.ENTRYPOINT_ADDRESS_V06
46
- : utils$1.ENTRYPOINT_ADDRESS_V07;
43
+ this.entryPoint = this.getEntryPoint((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.entryPointVersion);
44
+ this.kernelVersion = this.getKernelVersion((_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.kernelVersion);
45
+ }
46
+ getEntryPoint(entryPoint) {
47
+ if (entryPoint === undefined ||
48
+ entryPoint === sdkApiCore.ProviderEntryPointVersionEnum.V7) {
49
+ return utils$1.ENTRYPOINT_ADDRESS_V07;
50
+ }
51
+ else if (entryPoint === sdkApiCore.ProviderEntryPointVersionEnum.V6) {
52
+ return utils$1.ENTRYPOINT_ADDRESS_V06;
53
+ }
54
+ else {
55
+ logger.logger.error('Invalid entry point version', entryPoint);
56
+ return utils$1.ENTRYPOINT_ADDRESS_V07;
57
+ }
58
+ }
59
+ getKernelVersion(kernelVersion) {
60
+ if (kernelVersion === sdkApiCore.ProviderKernelVersionEnum.V31 ||
61
+ (kernelVersion === undefined &&
62
+ this.entryPoint === utils$1.ENTRYPOINT_ADDRESS_V07)) {
63
+ return constants.KERNEL_V3_1;
64
+ }
65
+ else if (kernelVersion === sdkApiCore.ProviderKernelVersionEnum.V30) {
66
+ return constants.KERNEL_V3_0;
67
+ }
68
+ else if (kernelVersion === sdkApiCore.ProviderKernelVersionEnum.V24 ||
69
+ this.entryPoint === utils$1.ENTRYPOINT_ADDRESS_V06 // v0.6 only supports v2.4
70
+ ) {
71
+ return constants.KERNEL_V2_4;
72
+ }
73
+ else {
74
+ logger.logger.error('Invalid kernel version', kernelVersion);
75
+ return constants.KERNEL_V3_1;
76
+ }
47
77
  }
48
78
  getEOAConnector() {
49
79
  return this.eoaConnector;
@@ -80,6 +110,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
80
110
  bundlerRpc: ZeroDevConnector.bundlerRpc,
81
111
  chain: yield fetchChain.fetchChain(this.projectId),
82
112
  entryPointAddress: this.entryPoint,
113
+ kernelVersion: this.kernelVersion,
83
114
  paymaster: 'NONE',
84
115
  paymasterRpc: ZeroDevConnector.paymasterRpc,
85
116
  projectId: this.projectId,
@@ -122,6 +153,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
122
153
  bundlerRpc: ZeroDevConnector.bundlerRpc,
123
154
  chain: yield fetchChain.fetchChain(this.projectId),
124
155
  entryPointAddress: this.entryPoint,
156
+ kernelVersion: this.kernelVersion,
125
157
  paymaster: 'SPONSOR',
126
158
  paymasterRpc: ZeroDevConnector.paymasterRpc,
127
159
  projectId: this.projectId,
@@ -3,6 +3,7 @@ import { KernelSmartAccount } from '@zerodev/sdk/accounts';
3
3
  import { Account, PublicClient, Transport, WalletClient } from 'viem';
4
4
  import { type Chain as ViemChain } from 'viem/chains';
5
5
  import { EntryPoint } from 'permissionless/types';
6
+ import { KERNEL_VERSION_TYPE } from '@zerodev/sdk/types';
6
7
  import { Provider, ProviderEnum } from '@dynamic-labs/sdk-api-core';
7
8
  import { Chain, IAccountAbstractionWalletConnector, ISendBalanceWalletConnector, WalletConnector, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
8
9
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
@@ -28,7 +29,8 @@ export declare class ZeroDevConnector extends WalletConnectorBase implements IZe
28
29
  evmNetworks: EvmNetwork[];
29
30
  private isGasSponsorshipDisabled;
30
31
  isEmbeddedWallet: boolean;
31
- private entryPoint;
32
+ entryPoint: EntryPoint;
33
+ kernelVersion: KERNEL_VERSION_TYPE;
32
34
  static bundlerProvider: BundlerProvider | undefined;
33
35
  static bundlerRpc: string | undefined;
34
36
  static paymasterRpc: string | undefined;
@@ -49,6 +51,8 @@ export declare class ZeroDevConnector extends WalletConnectorBase implements IZe
49
51
  };
50
52
  private _walletUiUtils;
51
53
  constructor(opts: ZeroDevConnectorProps);
54
+ getEntryPoint(entryPoint: string | undefined): "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" | "0x0000000071727De22E5E9d8BAf0edAc6f37da032";
55
+ getKernelVersion(kernelVersion: string | undefined): KERNEL_VERSION_TYPE;
52
56
  getEOAConnector(): WalletConnector | undefined;
53
57
  getAccountAbstractionProvider({ withSponsorship, }?: {
54
58
  withSponsorship?: boolean;
@@ -1,8 +1,9 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../_virtual/_tslib.js';
3
3
  import { publicActions, custom, createWalletClient, isHex, fromHex, formatEther } from 'viem';
4
- import { ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07, walletClientToSmartAccountSigner } from 'permissionless/utils';
5
- import { ProviderEntryPointVersionEnum } from '@dynamic-labs/sdk-api-core';
4
+ import { ENTRYPOINT_ADDRESS_V07, ENTRYPOINT_ADDRESS_V06, walletClientToSmartAccountSigner } from 'permissionless/utils';
5
+ import { KERNEL_V3_1, KERNEL_V3_0, KERNEL_V2_4 } from '@zerodev/sdk/constants';
6
+ import { ProviderEntryPointVersionEnum, ProviderKernelVersionEnum } from '@dynamic-labs/sdk-api-core';
6
7
  import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
7
8
  import { confirmationTransport, chainsMap, unFormatTransaction, createViemUiTransaction } from '@dynamic-labs/viem-utils';
8
9
  import { parseEvmNetworks, DynamicError, DeferredPromise, wrapMethodWithCallback, TransactionGasCannotBeSponsoredError, InsufficientFundsError } from '@dynamic-labs/utils';
@@ -13,7 +14,7 @@ import { createEcdsaKernelAccountClient } from './utils/createEcsdaKernelAccount
13
14
 
14
15
  class ZeroDevConnector extends WalletConnectorBase {
15
16
  constructor(opts) {
16
- var _a, _b;
17
+ var _a, _b, _c;
17
18
  super(opts);
18
19
  this.connectedChain = 'EVM';
19
20
  this.supportedChains = ['ETH', 'EVM'];
@@ -35,11 +36,40 @@ class ZeroDevConnector extends WalletConnectorBase {
35
36
  this.projectId = zeroDevProjectId;
36
37
  this._walletUiUtils = opts.walletUiUtils;
37
38
  this.evmNetworks = parseEvmNetworks(opts.evmNetworks);
38
- this.entryPoint =
39
- ((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.entryPointVersion) ===
40
- ProviderEntryPointVersionEnum.V6
41
- ? ENTRYPOINT_ADDRESS_V06
42
- : ENTRYPOINT_ADDRESS_V07;
39
+ this.entryPoint = this.getEntryPoint((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.entryPointVersion);
40
+ this.kernelVersion = this.getKernelVersion((_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.kernelVersion);
41
+ }
42
+ getEntryPoint(entryPoint) {
43
+ if (entryPoint === undefined ||
44
+ entryPoint === ProviderEntryPointVersionEnum.V7) {
45
+ return ENTRYPOINT_ADDRESS_V07;
46
+ }
47
+ else if (entryPoint === ProviderEntryPointVersionEnum.V6) {
48
+ return ENTRYPOINT_ADDRESS_V06;
49
+ }
50
+ else {
51
+ logger.error('Invalid entry point version', entryPoint);
52
+ return ENTRYPOINT_ADDRESS_V07;
53
+ }
54
+ }
55
+ getKernelVersion(kernelVersion) {
56
+ if (kernelVersion === ProviderKernelVersionEnum.V31 ||
57
+ (kernelVersion === undefined &&
58
+ this.entryPoint === ENTRYPOINT_ADDRESS_V07)) {
59
+ return KERNEL_V3_1;
60
+ }
61
+ else if (kernelVersion === ProviderKernelVersionEnum.V30) {
62
+ return KERNEL_V3_0;
63
+ }
64
+ else if (kernelVersion === ProviderKernelVersionEnum.V24 ||
65
+ this.entryPoint === ENTRYPOINT_ADDRESS_V06 // v0.6 only supports v2.4
66
+ ) {
67
+ return KERNEL_V2_4;
68
+ }
69
+ else {
70
+ logger.error('Invalid kernel version', kernelVersion);
71
+ return KERNEL_V3_1;
72
+ }
43
73
  }
44
74
  getEOAConnector() {
45
75
  return this.eoaConnector;
@@ -76,6 +106,7 @@ class ZeroDevConnector extends WalletConnectorBase {
76
106
  bundlerRpc: ZeroDevConnector.bundlerRpc,
77
107
  chain: yield fetchChain(this.projectId),
78
108
  entryPointAddress: this.entryPoint,
109
+ kernelVersion: this.kernelVersion,
79
110
  paymaster: 'NONE',
80
111
  paymasterRpc: ZeroDevConnector.paymasterRpc,
81
112
  projectId: this.projectId,
@@ -118,6 +149,7 @@ class ZeroDevConnector extends WalletConnectorBase {
118
149
  bundlerRpc: ZeroDevConnector.bundlerRpc,
119
150
  chain: yield fetchChain(this.projectId),
120
151
  entryPointAddress: this.entryPoint,
152
+ kernelVersion: this.kernelVersion,
121
153
  paymaster: 'SPONSOR',
122
154
  paymasterRpc: ZeroDevConnector.paymasterRpc,
123
155
  projectId: this.projectId,
@@ -24,7 +24,7 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
24
24
  return rpc;
25
25
  };
26
26
  const isERC20 = (value) => viem.isAddress(value);
27
- const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, }) {
27
+ const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, }) {
28
28
  const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
29
29
  const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
30
30
  const publicClient = viem.createPublicClient({
@@ -32,11 +32,13 @@ const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], vo
32
32
  });
33
33
  const ecdsaValidator$1 = yield ecdsaValidator.signerToEcdsaValidator(publicClient, {
34
34
  entryPoint: entryPointAddress,
35
+ kernelVersion,
35
36
  signer,
36
37
  });
37
38
  const account = yield accounts.createKernelAccount(publicClient, {
38
39
  entryPoint: entryPointAddress,
39
40
  index,
41
+ kernelVersion,
40
42
  plugins: {
41
43
  sudo: ecdsaValidator$1,
42
44
  },
@@ -3,12 +3,13 @@ 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}`>({ bundlerRpc, chain, paymasterRpc, 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, }: {
12
13
  bundlerRpc?: string;
13
14
  chain: TChain;
14
15
  projectId: string;
@@ -18,4 +19,5 @@ export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPo
18
19
  entryPointAddress: entryPoint;
19
20
  provider?: BundlerProvider;
20
21
  index?: bigint;
22
+ kernelVersion: GetKernelVersion<entryPoint>;
21
23
  }) => Promise<KernelAccountClient<entryPoint, HttpTransport, TChain, KernelSmartAccount<entryPoint, HttpTransport, TChain>>>;
@@ -20,7 +20,7 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
20
20
  return rpc;
21
21
  };
22
22
  const isERC20 = (value) => isAddress(value);
23
- const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, }) {
23
+ const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, }) {
24
24
  const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
25
25
  const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
26
26
  const publicClient = createPublicClient({
@@ -28,11 +28,13 @@ const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, f
28
28
  });
29
29
  const ecdsaValidator = yield signerToEcdsaValidator(publicClient, {
30
30
  entryPoint: entryPointAddress,
31
+ kernelVersion,
31
32
  signer,
32
33
  });
33
34
  const account = yield createKernelAccount(publicClient, {
34
35
  entryPoint: entryPointAddress,
35
36
  index,
37
+ kernelVersion,
36
38
  plugins: {
37
39
  sudo: ecdsaValidator,
38
40
  },