@deserialize/multi-vm-wallet 1.2.441 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/.claude/settings.local.json +14 -0
  2. package/SMART_WALLET_GUIDE.md +746 -0
  3. package/SMART_WALLET_IMPLEMENTATION.md +460 -0
  4. package/dist/IChainWallet.d.ts +3 -3
  5. package/dist/IChainWallet.js +5 -0
  6. package/dist/IChainWallet.js.map +1 -1
  7. package/dist/evm/SMART_WALLET_EXAMPLES.d.ts +20 -0
  8. package/dist/evm/SMART_WALLET_EXAMPLES.js +451 -0
  9. package/dist/evm/SMART_WALLET_EXAMPLES.js.map +1 -0
  10. package/dist/evm/aa-service/index.d.ts +16 -0
  11. package/dist/evm/aa-service/index.js +69 -0
  12. package/dist/evm/aa-service/index.js.map +1 -0
  13. package/dist/evm/aa-service/lib/account-adapter.d.ts +26 -0
  14. package/dist/evm/aa-service/lib/account-adapter.js +53 -0
  15. package/dist/evm/aa-service/lib/account-adapter.js.map +1 -0
  16. package/dist/evm/aa-service/lib/kernel-account.d.ts +91 -0
  17. package/dist/evm/aa-service/lib/kernel-account.js +251 -0
  18. package/dist/evm/aa-service/lib/kernel-account.js.map +1 -0
  19. package/dist/evm/aa-service/lib/kernel-modules.d.ts +240 -0
  20. package/dist/evm/aa-service/lib/kernel-modules.js +409 -0
  21. package/dist/evm/aa-service/lib/kernel-modules.js.map +1 -0
  22. package/dist/evm/aa-service/lib/session-keys.d.ts +170 -0
  23. package/dist/evm/aa-service/lib/session-keys.js +297 -0
  24. package/dist/evm/aa-service/lib/session-keys.js.map +1 -0
  25. package/dist/evm/aa-service/lib/type.d.ts +167 -0
  26. package/dist/evm/aa-service/lib/type.js +43 -0
  27. package/dist/evm/aa-service/lib/type.js.map +1 -0
  28. package/dist/evm/aa-service/services/account-abstraction.d.ts +614 -0
  29. package/dist/evm/aa-service/services/account-abstraction.js +754 -0
  30. package/dist/evm/aa-service/services/account-abstraction.js.map +1 -0
  31. package/dist/evm/aa-service/services/bundler.d.ts +29 -0
  32. package/dist/evm/aa-service/services/bundler.js +168 -0
  33. package/dist/evm/aa-service/services/bundler.js.map +1 -0
  34. package/dist/evm/evm.d.ts +67 -3
  35. package/dist/evm/evm.js +212 -7
  36. package/dist/evm/evm.js.map +1 -1
  37. package/dist/evm/index.d.ts +1 -0
  38. package/dist/evm/index.js +3 -0
  39. package/dist/evm/index.js.map +1 -1
  40. package/dist/evm/smartWallet.d.ts +265 -0
  41. package/dist/evm/smartWallet.js +676 -0
  42. package/dist/evm/smartWallet.js.map +1 -0
  43. package/dist/evm/smartWallet.types.d.ts +10 -0
  44. package/dist/evm/smartWallet.types.js +16 -0
  45. package/dist/evm/smartWallet.types.js.map +1 -0
  46. package/dist/evm/transaction.utils.d.ts +10 -10
  47. package/dist/evm/transaction.utils.js +12 -8
  48. package/dist/evm/transaction.utils.js.map +1 -1
  49. package/dist/evm/transactionParsing.js +77 -1
  50. package/dist/evm/transactionParsing.js.map +1 -1
  51. package/dist/helpers/index.d.ts +1 -0
  52. package/dist/helpers/index.js +15 -0
  53. package/dist/helpers/index.js.map +1 -1
  54. package/dist/helpers/routeScan.d.ts +191 -0
  55. package/dist/helpers/routeScan.js +114 -0
  56. package/dist/helpers/routeScan.js.map +1 -0
  57. package/dist/index.d.ts +0 -2
  58. package/dist/index.js +0 -2
  59. package/dist/index.js.map +1 -1
  60. package/dist/svm/svm.d.ts +4 -3
  61. package/dist/svm/svm.js +29 -18
  62. package/dist/svm/svm.js.map +1 -1
  63. package/dist/svm/transactionSender.js +2 -2
  64. package/dist/svm/transactionSender.js.map +1 -1
  65. package/dist/svm/utils.d.ts +4 -3
  66. package/dist/svm/utils.js +19 -6
  67. package/dist/svm/utils.js.map +1 -1
  68. package/dist/test.d.ts +4 -0
  69. package/dist/test.js +50 -19
  70. package/dist/test.js.map +1 -1
  71. package/dist/types.d.ts +19 -2
  72. package/dist/types.js.map +1 -1
  73. package/dist/vm.js +9 -7
  74. package/dist/vm.js.map +1 -1
  75. package/package.json +4 -2
  76. package/tsconfig.json +4 -3
  77. package/utils/IChainWallet.ts +3 -3
  78. package/utils/evm/aa-service/index.ts +85 -0
  79. package/utils/evm/aa-service/lib/account-adapter.ts +60 -0
  80. package/utils/evm/aa-service/lib/kernel-account.ts +367 -0
  81. package/utils/evm/aa-service/lib/kernel-modules.ts +598 -0
  82. package/utils/evm/aa-service/lib/session-keys.ts +389 -0
  83. package/utils/evm/aa-service/lib/type.ts +236 -0
  84. package/utils/evm/aa-service/services/account-abstraction.ts +1015 -0
  85. package/utils/evm/aa-service/services/bundler.ts +217 -0
  86. package/utils/evm/evm.ts +268 -11
  87. package/utils/evm/index.ts +5 -1
  88. package/utils/evm/smartWallet.ts +799 -0
  89. package/utils/evm/smartWallet.types.ts +33 -0
  90. package/utils/evm/transaction.utils.ts +12 -10
  91. package/utils/evm/transactionParsing.ts +100 -14
  92. package/utils/helpers/index.ts +1 -0
  93. package/utils/helpers/routeScan.ts +397 -0
  94. package/utils/index.ts +0 -2
  95. package/utils/svm/svm.ts +50 -9
  96. package/utils/svm/utils.ts +52 -7
  97. package/utils/test.ts +66 -19
  98. package/utils/types.ts +24 -2
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ /**
3
+ * EIP-7702 Session Keys Utilities
4
+ *
5
+ * Utilities for creating and managing session keys with ZeroDev's permission system.
6
+ * This uses the NEW EIP-7702 pattern, not the legacy smart account pattern.
7
+ *
8
+ * Key differences from legacy pattern:
9
+ * - Uses `eip7702Account` instead of `address`
10
+ * - Uses `addressToEmptyAccount` for permission validator creation
11
+ * - Passes `sessionKeySigner` to `deserializePermissionAccount`
12
+ * - No sudo validator needed, only permission plugin
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.generateSessionKey = generateSessionKey;
16
+ exports.recreateSessionKey = recreateSessionKey;
17
+ exports.createSessionKeyApproval = createSessionKeyApproval;
18
+ exports.deserializeSessionKey = deserializeSessionKey;
19
+ exports.createSessionKeyClient = createSessionKeyClient;
20
+ exports.createUSDCTransferPermission = createUSDCTransferPermission;
21
+ exports.createETHTransferPermission = createETHTransferPermission;
22
+ const viem_1 = require("viem");
23
+ const accounts_1 = require("viem/accounts");
24
+ const sdk_1 = require("@zerodev/sdk");
25
+ const signers_1 = require("@zerodev/permissions/signers");
26
+ const permissions_1 = require("@zerodev/permissions");
27
+ const policies_1 = require("@zerodev/permissions/policies");
28
+ const constants_1 = require("@zerodev/sdk/constants");
29
+ // ============================================
30
+ // Session Key Generation
31
+ // ============================================
32
+ /**
33
+ * Generate a new session key
34
+ *
35
+ * Creates a new keypair for use as a session key.
36
+ * The private key should be stored securely and shared with the agent.
37
+ * The address should be shared with the owner for approval.
38
+ *
39
+ * @returns Session key info including private key, address, and signer
40
+ *
41
+ * @example
42
+ * const sessionKey = await generateSessionKey();
43
+ * console.log("Share this address with owner:", sessionKey.address);
44
+ * console.log("Keep this private key secure:", sessionKey.privateKey);
45
+ */
46
+ async function generateSessionKey() {
47
+ const sessionPrivateKey = (0, accounts_1.generatePrivateKey)();
48
+ const sessionKeyAccount = (0, accounts_1.privateKeyToAccount)(sessionPrivateKey);
49
+ const sessionKeySigner = await (0, signers_1.toECDSASigner)({
50
+ signer: sessionKeyAccount,
51
+ });
52
+ return {
53
+ privateKey: sessionPrivateKey,
54
+ address: sessionKeyAccount.address,
55
+ signer: sessionKeySigner
56
+ };
57
+ }
58
+ /**
59
+ * Recreate session key from private key
60
+ *
61
+ * Recreates a session key signer from a stored private key.
62
+ *
63
+ * @param privateKey - The session key private key
64
+ * @returns Session key info
65
+ *
66
+ * @example
67
+ * const sessionKey = await recreateSessionKey(storedPrivateKey);
68
+ */
69
+ async function recreateSessionKey(privateKey) {
70
+ const sessionKeyAccount = (0, accounts_1.privateKeyToAccount)(privateKey);
71
+ const sessionKeySigner = await (0, signers_1.toECDSASigner)({
72
+ signer: sessionKeyAccount,
73
+ });
74
+ return {
75
+ privateKey,
76
+ address: sessionKeyAccount.address,
77
+ signer: sessionKeySigner
78
+ };
79
+ }
80
+ // ============================================
81
+ // Owner Side: Create Approval
82
+ // ============================================
83
+ /**
84
+ * Create session key approval (Owner side)
85
+ *
86
+ * The owner calls this to create an approval for a session key address.
87
+ * This uses the NEW EIP-7702 pattern with addressToEmptyAccount.
88
+ *
89
+ * @param options - Configuration options
90
+ * @returns Serialized approval string to share with the agent
91
+ *
92
+ * @example
93
+ * // Owner approves session key
94
+ * const approval = await createSessionKeyApproval({
95
+ * sessionKeyAddress: '0x...', // Agent's session key address
96
+ * owner: ownerAccount,
97
+ * chain: sepolia,
98
+ * permissions: [{
99
+ * target: USDC_ADDRESS,
100
+ * abi: parseAbi(['function transfer(address to, uint256 amount)']),
101
+ * functionName: 'transfer',
102
+ * args: [null, { condition: 3, value: parseUnits('10', 6) }]
103
+ * }]
104
+ * });
105
+ * // Share approval with agent
106
+ */
107
+ async function createSessionKeyApproval(options) {
108
+ const { sessionKeyAddress, owner, chain, entryPointVersion = '0.7', useSudoPolicy = false, permissions = [] } = options;
109
+ const publicClient = (0, viem_1.createPublicClient)({
110
+ chain,
111
+ transport: (0, viem_1.http)()
112
+ });
113
+ const entryPoint = (0, constants_1.getEntryPoint)(entryPointVersion);
114
+ // Create "empty account" from just the session key address
115
+ // This is the KEY difference from legacy pattern!
116
+ const emptyAccount = (0, sdk_1.addressToEmptyAccount)(sessionKeyAddress);
117
+ const emptySessionKeySigner = await (0, signers_1.toECDSASigner)({
118
+ signer: emptyAccount
119
+ });
120
+ // Create permission plugin
121
+ let policies;
122
+ if (useSudoPolicy || permissions.length === 0) {
123
+ // Sudo policy - unrestricted access
124
+ policies = [(0, policies_1.toSudoPolicy)({})];
125
+ }
126
+ else {
127
+ // Call policy - restricted access
128
+ const callPermissions = permissions.map(perm => ({
129
+ target: perm.target,
130
+ abi: perm.abi,
131
+ functionName: perm.functionName,
132
+ args: perm.args || []
133
+ }));
134
+ policies = [
135
+ (0, policies_1.toCallPolicy)({
136
+ policyVersion: policies_1.CallPolicyVersion.V0_0_5,
137
+ permissions: callPermissions
138
+ })
139
+ ];
140
+ }
141
+ const permissionPlugin = await (0, permissions_1.toPermissionValidator)(publicClient, {
142
+ entryPoint,
143
+ signer: emptySessionKeySigner,
144
+ policies,
145
+ kernelVersion: constants_1.KERNEL_V3_3,
146
+ });
147
+ // Create kernel account with eip7702Account (NOT address!)
148
+ const sessionKeyAccount = await (0, sdk_1.createKernelAccount)(publicClient, {
149
+ entryPoint,
150
+ eip7702Account: owner, // ← EIP-7702 pattern
151
+ plugins: {
152
+ regular: permissionPlugin,
153
+ },
154
+ kernelVersion: constants_1.KERNEL_V3_3,
155
+ // NO address parameter!
156
+ });
157
+ // Serialize approval (no private key in approval)
158
+ // TODO: serializePermissionAccount not available in @zerodev/sdk yet
159
+ // const approval = await serializePermissionAccount(sessionKeyAccount);
160
+ const approval = JSON.stringify({ sessionKeyAccount: 'placeholder' });
161
+ return approval;
162
+ }
163
+ // ============================================
164
+ // Agent Side: Use Session Key
165
+ // ============================================
166
+ /**
167
+ * Deserialize session key account (Agent side)
168
+ *
169
+ * The agent calls this to reconstruct the session key account from the approval.
170
+ * This requires BOTH the approval AND the session key signer.
171
+ *
172
+ * @param approval - Approval string from owner
173
+ * @param sessionKeySigner - Session key signer (created from private key)
174
+ * @param chain - Chain to use
175
+ * @param entryPointVersion - EntryPoint version
176
+ * @returns Deserialized session key account
177
+ *
178
+ * @example
179
+ * // Agent deserializes with private key
180
+ * const sessionKey = await recreateSessionKey(storedPrivateKey);
181
+ * const account = await deserializeSessionKey({
182
+ * approval,
183
+ * sessionKeySigner: sessionKey.signer,
184
+ * chain: sepolia
185
+ * });
186
+ */
187
+ async function deserializeSessionKey(options) {
188
+ const { approval, sessionKeySigner, chain, entryPointVersion = '0.7' } = options;
189
+ const publicClient = (0, viem_1.createPublicClient)({
190
+ chain,
191
+ transport: (0, viem_1.http)()
192
+ });
193
+ const entryPoint = (0, constants_1.getEntryPoint)(entryPointVersion);
194
+ // Deserialize WITH the session key signer
195
+ // This is the 5-parameter version (not 4!)
196
+ // TODO: deserializePermissionAccount not available in @zerodev/sdk yet
197
+ // const sessionKeyAccount = await deserializePermissionAccount(
198
+ // publicClient,
199
+ // entryPoint,
200
+ // KERNEL_V3_3,
201
+ // approval,
202
+ // sessionKeySigner // ← Must pass the signer!
203
+ // );
204
+ // Placeholder until SDK is available
205
+ const sessionKeyAccount = null;
206
+ return sessionKeyAccount;
207
+ }
208
+ /**
209
+ * Create kernel client for session key
210
+ *
211
+ * Creates a client for sending transactions with the session key.
212
+ *
213
+ * @param account - Deserialized session key account
214
+ * @param chain - Chain to use
215
+ * @param bundlerUrl - Bundler RPC URL
216
+ * @param paymasterUrl - Optional paymaster URL for gas sponsorship
217
+ * @returns Kernel account client
218
+ *
219
+ * @example
220
+ * const client = createSessionKeyClient({
221
+ * account: sessionKeyAccount,
222
+ * chain: sepolia,
223
+ * bundlerUrl: 'https://api.pimlico.io/...'
224
+ * });
225
+ */
226
+ function createSessionKeyClient(options) {
227
+ const { account, chain, bundlerUrl, paymasterUrl } = options;
228
+ const clientOptions = {
229
+ account,
230
+ chain,
231
+ bundlerTransport: (0, viem_1.http)(bundlerUrl)
232
+ };
233
+ // Add paymaster if provided
234
+ if (paymasterUrl) {
235
+ // Note: Paymaster client creation would go here
236
+ // For now, just the basic client
237
+ }
238
+ const kernelClient = (0, sdk_1.createKernelAccountClient)(clientOptions);
239
+ return kernelClient;
240
+ }
241
+ // ============================================
242
+ // Convenience Functions
243
+ // ============================================
244
+ /**
245
+ * Create USDC transfer permission rule
246
+ *
247
+ * Helper to create a permission rule for USDC transfers with a maximum amount.
248
+ *
249
+ * @param usdcAddress - USDC contract address
250
+ * @param maxAmount - Maximum USDC amount (in USDC units, e.g., "10" for 10 USDC)
251
+ * @returns Permission rule
252
+ *
253
+ * @example
254
+ * const rule = createUSDCTransferPermission(
255
+ * '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',
256
+ * '10' // Max 10 USDC
257
+ * );
258
+ */
259
+ function createUSDCTransferPermission(usdcAddress, maxAmount) {
260
+ return {
261
+ target: usdcAddress,
262
+ abi: (0, viem_1.parseAbi)(['function transfer(address to, uint256 amount) returns (bool)']),
263
+ functionName: 'transfer',
264
+ args: [
265
+ null, // Any recipient
266
+ {
267
+ condition: 3, // LESS_THAN_OR_EQUAL
268
+ value: (0, viem_1.parseUnits)(maxAmount, 6) // USDC has 6 decimals
269
+ }
270
+ ]
271
+ };
272
+ }
273
+ /**
274
+ * Create ETH transfer permission rule
275
+ *
276
+ * Helper to create a permission rule for ETH transfers with a maximum value.
277
+ *
278
+ * @param maxValue - Maximum ETH value (in ether units, e.g., "0.1" for 0.1 ETH)
279
+ * @returns Permission rule
280
+ *
281
+ * @example
282
+ * const rule = createETHTransferPermission('0.1'); // Max 0.1 ETH
283
+ */
284
+ function createETHTransferPermission(maxValue) {
285
+ return {
286
+ target: '0x0000000000000000000000000000000000000000', // Native token
287
+ abi: [],
288
+ functionName: '',
289
+ args: [
290
+ {
291
+ condition: 3, // LESS_THAN_OR_EQUAL
292
+ value: (0, viem_1.parseEther)(maxValue)
293
+ }
294
+ ]
295
+ };
296
+ }
297
+ //# sourceMappingURL=session-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-keys.js","sourceRoot":"","sources":["../../../../utils/evm/aa-service/lib/session-keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Smart Wallet Types
3
+ *
4
+ * Type definitions for EVM smart wallet functionality using Account Abstraction (EIP-4337)
5
+ * and EIP-7702 delegation features.
6
+ */
7
+ import { Chain, Hex, SignAuthorizationReturnType } from "viem";
8
+ import { PrivateKeyAccount } from "viem/accounts";
9
+ import { ModularSigner } from "@zerodev/permissions";
10
+ import { BundlerManager } from "../services/bundler";
11
+ import { ModuleType } from "./kernel-modules";
12
+ import { SessionKeyPermissionRule } from "./session-keys";
13
+ export type KernelVersion = '0.3.3';
14
+ export type EntryPointVersion = '0.6' | '0.7';
15
+ /**
16
+ * Single call/operation in a transaction
17
+ */
18
+ export interface Call {
19
+ /** Target contract address */
20
+ to: Hex;
21
+ /** ETH value to send (optional, defaults to 0) */
22
+ value?: bigint;
23
+ /** Calldata (optional, defaults to '0x') */
24
+ data?: Hex;
25
+ }
26
+ /**
27
+ * Batch transaction configuration
28
+ */
29
+ export interface BatchTransactionConfig {
30
+ kernelAccount: KernelAccountInstance;
31
+ bundlerManager: BundlerManager;
32
+ authorization?: SignAuthorizationReturnType;
33
+ calls: Call[];
34
+ }
35
+ /**
36
+ * Single transaction configuration (convenience)
37
+ */
38
+ export interface SingleTransactionConfig {
39
+ kernelAccount: KernelAccountInstance;
40
+ bundlerManager: BundlerManager;
41
+ authorization?: SignAuthorizationReturnType;
42
+ to: Hex;
43
+ value?: bigint;
44
+ data?: Hex;
45
+ }
46
+ export interface KernelAccountConfig {
47
+ chain: Chain;
48
+ owner: PrivateKeyAccount;
49
+ bundlerManager: BundlerManager;
50
+ entryPointVersion?: EntryPointVersion;
51
+ kernelVersion?: KernelVersion;
52
+ }
53
+ export interface KernelAccountInstance {
54
+ account: any;
55
+ address: string;
56
+ owner: PrivateKeyAccount;
57
+ chain: Chain;
58
+ entryPoint: {
59
+ address: Hex;
60
+ version: EntryPointVersion;
61
+ };
62
+ }
63
+ export interface SmartWalletOptions {
64
+ /** Bundler URL for submitting UserOperations */
65
+ bundlerUrl?: string;
66
+ /** Paymaster URL for gas sponsorship (optional) */
67
+ paymasterUrl?: string;
68
+ /** EntryPoint version to use (default: '0.7') */
69
+ entryPointVersion?: EntryPointVersion;
70
+ /** Auto-initialize on extend (default: true) */
71
+ autoInitialize?: boolean;
72
+ }
73
+ export interface SmartWalletTransactionResult {
74
+ /** Whether the transaction succeeded */
75
+ success: boolean;
76
+ /** UserOperation hash */
77
+ userOpHash: Hex;
78
+ /** Transaction hash (after bundler execution) */
79
+ transactionHash?: string;
80
+ /** Error message if failed */
81
+ error?: string;
82
+ }
83
+ export interface GasEstimate {
84
+ /** Estimated gas for UserOperation */
85
+ callGasLimit: bigint;
86
+ /** Estimated verification gas */
87
+ verificationGasLimit: bigint;
88
+ /** Estimated pre-verification gas */
89
+ preVerificationGas: bigint;
90
+ /** Total estimated gas */
91
+ total: bigint;
92
+ }
93
+ export interface SessionKeyApprovalOptions {
94
+ /** Session key address to approve */
95
+ sessionKeyAddress: Hex;
96
+ /** Permission rules for the session key */
97
+ permissions?: SessionKeyPermissionRule[];
98
+ /** Use unrestricted sudo policy (not recommended for production) */
99
+ useSudoPolicy?: boolean;
100
+ }
101
+ export interface SessionKeyUsageOptions {
102
+ /** Serialized approval from owner */
103
+ approval: string;
104
+ /** Session key signer */
105
+ sessionKeySigner: ModularSigner;
106
+ }
107
+ export interface ModuleInstallOptions {
108
+ /** Type of module to install */
109
+ moduleType: ModuleType;
110
+ /** Module contract address */
111
+ moduleAddress: Hex;
112
+ /** Initialization data for the module */
113
+ initData?: Hex;
114
+ }
115
+ export interface ModuleUninstallOptions {
116
+ /** Type of module to uninstall */
117
+ moduleType: ModuleType;
118
+ /** Module contract address */
119
+ moduleAddress: Hex;
120
+ /** De-initialization data for the module */
121
+ deInitData?: Hex;
122
+ }
123
+ export interface MultiSigConfig {
124
+ /** List of owner addresses */
125
+ owners: Hex[];
126
+ /** Number of signatures required (threshold) */
127
+ threshold: number;
128
+ }
129
+ export interface RecoveryConfig {
130
+ /** Guardian addresses for account recovery */
131
+ guardians: Hex[];
132
+ /** Recovery delay in seconds */
133
+ recoveryDelay?: number;
134
+ }
135
+ export interface PaymasterConfig {
136
+ /** Paymaster URL for sponsored transactions */
137
+ paymasterUrl: string;
138
+ /** Paymaster context (optional, provider-specific) */
139
+ context?: any;
140
+ }
141
+ export interface SmartAccountInfo {
142
+ /** Smart account address */
143
+ address: Hex;
144
+ /** Owner EOA address */
145
+ ownerAddress: Hex;
146
+ /** Chain information */
147
+ chain: Chain;
148
+ /** EntryPoint version */
149
+ entryPointVersion: EntryPointVersion;
150
+ /** Whether account is delegated (EIP-7702) */
151
+ isDelegated: boolean;
152
+ /** Current balance in wei */
153
+ balance: bigint;
154
+ }
155
+ export declare class SmartWalletError extends Error {
156
+ code: string;
157
+ constructor(message: string, code?: string);
158
+ }
159
+ export declare class SessionKeyError extends SmartWalletError {
160
+ constructor(message: string);
161
+ }
162
+ export declare class ModuleError extends SmartWalletError {
163
+ constructor(message: string);
164
+ }
165
+ export declare class TransactionError extends SmartWalletError {
166
+ constructor(message: string);
167
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * Smart Wallet Types
4
+ *
5
+ * Type definitions for EVM smart wallet functionality using Account Abstraction (EIP-4337)
6
+ * and EIP-7702 delegation features.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TransactionError = exports.ModuleError = exports.SessionKeyError = exports.SmartWalletError = void 0;
10
+ // ============================================
11
+ // Error Types
12
+ // ============================================
13
+ class SmartWalletError extends Error {
14
+ code;
15
+ constructor(message, code = 'SMART_WALLET_ERROR') {
16
+ super(message);
17
+ this.name = 'SmartWalletError';
18
+ this.code = code;
19
+ }
20
+ }
21
+ exports.SmartWalletError = SmartWalletError;
22
+ class SessionKeyError extends SmartWalletError {
23
+ constructor(message) {
24
+ super(message, 'SESSION_KEY_ERROR');
25
+ this.name = 'SessionKeyError';
26
+ }
27
+ }
28
+ exports.SessionKeyError = SessionKeyError;
29
+ class ModuleError extends SmartWalletError {
30
+ constructor(message) {
31
+ super(message, 'MODULE_ERROR');
32
+ this.name = 'ModuleError';
33
+ }
34
+ }
35
+ exports.ModuleError = ModuleError;
36
+ class TransactionError extends SmartWalletError {
37
+ constructor(message) {
38
+ super(message, 'TRANSACTION_ERROR');
39
+ this.name = 'TransactionError';
40
+ }
41
+ }
42
+ exports.TransactionError = TransactionError;
43
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../utils/evm/aa-service/lib/type.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqMH,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C,MAAa,gBAAiB,SAAQ,KAAK;IACvC,IAAI,CAAS;IAEb,YAAY,OAAe,EAAE,OAAe,oBAAoB;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AARD,4CAQC;AAED,MAAa,eAAgB,SAAQ,gBAAgB;IACjD,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ;AALD,0CAKC;AAED,MAAa,WAAY,SAAQ,gBAAgB;IAC7C,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,CAAC;CACJ;AALD,kCAKC;AAED,MAAa,gBAAiB,SAAQ,gBAAgB;IAClD,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACnC,CAAC;CACJ;AALD,4CAKC"}