@deserialize/multi-vm-wallet 1.3.1 → 1.3.3

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 +7 -1
  2. package/dist/IChainWallet.d.ts +3 -3
  3. package/dist/constant.js +60 -16
  4. package/dist/constant.js.map +1 -1
  5. package/dist/evm/aa-service/index.d.ts +2 -2
  6. package/dist/evm/aa-service/index.js +1 -3
  7. package/dist/evm/aa-service/index.js.map +1 -1
  8. package/dist/evm/aa-service/lib/kernel-account.d.ts +2 -44
  9. package/dist/evm/aa-service/lib/kernel-account.js +42 -93
  10. package/dist/evm/aa-service/lib/kernel-account.js.map +1 -1
  11. package/dist/evm/aa-service/lib/session-keys.d.ts +14 -17
  12. package/dist/evm/aa-service/lib/session-keys.js +40 -58
  13. package/dist/evm/aa-service/lib/session-keys.js.map +1 -1
  14. package/dist/evm/aa-service/lib/type.d.ts +18 -1
  15. package/dist/evm/aa-service/lib/type.js.map +1 -1
  16. package/dist/evm/aa-service/services/account-abstraction.d.ts +7 -29
  17. package/dist/evm/aa-service/services/account-abstraction.js +12 -68
  18. package/dist/evm/aa-service/services/account-abstraction.js.map +1 -1
  19. package/dist/evm/aa-service/services/bundler.d.ts +4 -1
  20. package/dist/evm/aa-service/services/bundler.js +41 -7
  21. package/dist/evm/aa-service/services/bundler.js.map +1 -1
  22. package/dist/evm/evm.d.ts +164 -14
  23. package/dist/evm/evm.js +259 -80
  24. package/dist/evm/evm.js.map +1 -1
  25. package/dist/evm/smartWallet.d.ts +12 -61
  26. package/dist/evm/smartWallet.js +143 -184
  27. package/dist/evm/smartWallet.js.map +1 -1
  28. package/dist/evm/utils.js +1 -1
  29. package/dist/evm/utils.js.map +1 -1
  30. package/dist/helpers/index.d.ts +6 -1
  31. package/dist/helpers/index.js +116 -0
  32. package/dist/helpers/index.js.map +1 -1
  33. package/dist/privacy/artifact-manager.d.ts +117 -0
  34. package/dist/privacy/artifact-manager.js +251 -0
  35. package/dist/privacy/artifact-manager.js.map +1 -0
  36. package/dist/privacy/broadcaster-client.d.ts +166 -0
  37. package/dist/privacy/broadcaster-client.js +261 -0
  38. package/dist/privacy/broadcaster-client.js.map +1 -0
  39. package/dist/privacy/index.d.ts +34 -0
  40. package/dist/privacy/index.js +56 -0
  41. package/dist/privacy/index.js.map +1 -0
  42. package/dist/privacy/network-config.d.ts +57 -0
  43. package/dist/privacy/network-config.js +118 -0
  44. package/dist/privacy/network-config.js.map +1 -0
  45. package/dist/privacy/poi-helper.d.ts +161 -0
  46. package/dist/privacy/poi-helper.js +249 -0
  47. package/dist/privacy/poi-helper.js.map +1 -0
  48. package/dist/privacy/railgun-engine.d.ts +135 -0
  49. package/dist/privacy/railgun-engine.js +205 -0
  50. package/dist/privacy/railgun-engine.js.map +1 -0
  51. package/dist/privacy/railgun-privacy-wallet.d.ts +288 -0
  52. package/dist/privacy/railgun-privacy-wallet.js +539 -0
  53. package/dist/privacy/railgun-privacy-wallet.js.map +1 -0
  54. package/dist/privacy/types.d.ts +229 -0
  55. package/dist/privacy/types.js +26 -0
  56. package/dist/privacy/types.js.map +1 -0
  57. package/dist/savings/savings-manager.d.ts +126 -0
  58. package/dist/savings/savings-manager.js +234 -0
  59. package/dist/savings/savings-manager.js.map +1 -0
  60. package/dist/savings/smart-savings.d.ts +74 -0
  61. package/dist/savings/smart-savings.js +152 -0
  62. package/dist/savings/smart-savings.js.map +1 -0
  63. package/dist/savings/types.d.ts +125 -0
  64. package/dist/savings/types.js +9 -0
  65. package/dist/savings/types.js.map +1 -0
  66. package/dist/svm/svm.d.ts +19 -3
  67. package/dist/svm/svm.js +29 -17
  68. package/dist/svm/svm.js.map +1 -1
  69. package/dist/svm/utils.d.ts +2 -2
  70. package/dist/svm/utils.js +4 -4
  71. package/dist/svm/utils.js.map +1 -1
  72. package/dist/test.js +81 -22
  73. package/dist/test.js.map +1 -1
  74. package/dist/types.d.ts +14 -16
  75. package/dist/types.js.map +1 -1
  76. package/dist/vm.d.ts +14 -0
  77. package/dist/vm.js.map +1 -1
  78. package/package.json +6 -1
  79. package/utils/IChainWallet.ts +3 -3
  80. package/utils/constant.ts +63 -16
  81. package/utils/evm/aa-service/index.ts +1 -3
  82. package/utils/evm/aa-service/lib/kernel-account.ts +45 -136
  83. package/utils/evm/aa-service/lib/session-keys.ts +58 -60
  84. package/utils/evm/aa-service/lib/type.ts +19 -1
  85. package/utils/evm/aa-service/services/account-abstraction.ts +24 -76
  86. package/utils/evm/aa-service/services/bundler.ts +54 -11
  87. package/utils/evm/evm.ts +313 -110
  88. package/utils/evm/smartWallet.ts +124 -214
  89. package/utils/evm/utils.ts +2 -1
  90. package/utils/helpers/index.ts +138 -1
  91. package/utils/savings/savings-manager.ts +271 -0
  92. package/utils/savings/smart-savings.ts +184 -0
  93. package/utils/savings/types.ts +135 -0
  94. package/utils/svm/svm.ts +34 -25
  95. package/utils/svm/utils.ts +4 -10
  96. package/utils/test.ts +112 -24
  97. package/utils/types.ts +15 -17
  98. package/utils/vm.ts +10 -0
@@ -11,28 +11,62 @@ exports.createBundlerManager = createBundlerManager;
11
11
  exports.createBundlerService = createBundlerService;
12
12
  const viem_1 = require("viem");
13
13
  const account_abstraction_1 = require("viem/account-abstraction");
14
+ const pimlico_1 = require("permissionless/clients/pimlico");
14
15
  // ============================================
15
16
  // Pimlico Bundler
16
17
  // ============================================
17
18
  class PimlicoBundler {
18
19
  apiKey;
19
20
  clientCache = new Map();
20
- constructor(apiKey) {
21
- if (!apiKey) {
22
- throw new Error('Pimlico API key is required');
23
- }
21
+ url;
22
+ aaConfig;
23
+ constructor(apiKey, url, aaConfig) {
24
+ this.url = url;
24
25
  this.apiKey = apiKey;
26
+ this.aaConfig = aaConfig;
25
27
  }
26
28
  getBundlerUrl(chain) {
29
+ if (!this.apiKey) {
30
+ return this.url;
31
+ }
27
32
  return `https://api.pimlico.io/v2/${chain.id}/rpc?apikey=${this.apiKey}`;
28
33
  }
29
34
  getClient(chain) {
30
35
  if (this.clientCache.has(chain.id)) {
31
36
  return this.clientCache.get(chain.id);
32
37
  }
38
+ const bundlerUrl = this.getBundlerUrl(chain);
39
+ // Get entryPoint from aaConfig or fallback to default
40
+ let entryPointAddress;
41
+ let entryPointVersion = '0.7';
42
+ if (this.aaConfig && this.aaConfig.entryPoints.length > 0) {
43
+ // Use first entry point from config (could be enhanced to select by version)
44
+ const ep = this.aaConfig.entryPoints[0];
45
+ entryPointAddress = ep.address;
46
+ entryPointVersion = ep.version;
47
+ }
48
+ else {
49
+ // Fallback to hardcoded default
50
+ entryPointAddress = account_abstraction_1.entryPoint07Address;
51
+ entryPointVersion = '0.7';
52
+ }
53
+ // Create Pimlico client for Pimlico-specific features (gas estimation)
54
+ const entryPoint = {
55
+ address: entryPointAddress,
56
+ version: entryPointVersion
57
+ };
58
+ const paymasterClient = (0, pimlico_1.createPimlicoClient)({
59
+ transport: (0, viem_1.http)(bundlerUrl),
60
+ entryPoint
61
+ });
62
+ // Create bundler client with Pimlico gas estimation
33
63
  const client = (0, account_abstraction_1.createBundlerClient)({
34
- transport: (0, viem_1.http)(this.getBundlerUrl(chain)),
35
- chain
64
+ transport: (0, viem_1.http)(bundlerUrl),
65
+ chain,
66
+ userOperation: {
67
+ estimateFeesPerGas: async () => (await paymasterClient.getUserOperationGasPrice()).fast,
68
+ },
69
+ // paymaster: paymasterClient,
36
70
  });
37
71
  this.clientCache.set(chain.id, client);
38
72
  return client;
@@ -111,7 +145,7 @@ class BundlerManager {
111
145
  constructor(config) {
112
146
  switch (config.provider) {
113
147
  case 'pimlico':
114
- this.bundlerService = new PimlicoBundler(config.apiKey);
148
+ this.bundlerService = new PimlicoBundler(config.apiKey ? config.apiKey : '', config.customUrl ? config.customUrl : '', config.aaConfig);
115
149
  break;
116
150
  // case 'etherspot':
117
151
  // this.bundlerService = new EtherspotBundler();
@@ -1 +1 @@
1
- {"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../../utils/evm/aa-service/services/bundler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA4LH,oDAEC;AAED,oDAmBC;AAjND,+BAAqF;AACrF,kEAAyG;AAqBzG,+CAA+C;AAC/C,kBAAkB;AAClB,+CAA+C;AAE/C,MAAM,cAAc;IACR,MAAM,CAAS;IACf,WAAW,GAAqB,IAAI,GAAG,EAAE,CAAC;IAElD,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,KAAY;QACtB,OAAO,6BAA6B,KAAK,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7E,CAAC;IAED,SAAS,CAAC,KAAY;QAClB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,yCAAmB,EAAC;YAC/B,SAAS,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,KAAK;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,WAAW;QACP,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,UAAU;QACN,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACJ;AAED,kDAAkD;AAClD,uBAAuB;AACvB,kDAAkD;AAElD,qDAAqD;AACrD,yDAAyD;AAEzD,4CAA4C;AAC5C,8CAA8C;AAC9C,QAAQ;AAER,qCAAqC;AACrC,gDAAgD;AAChD,qDAAqD;AACrD,YAAY;AAEZ,6CAA6C;AAC7C,qBAAqB;AACrB,oDAAoD;AACpD,0DAA0D;AAE1D,kDAAkD;AAClD,yBAAyB;AACzB,QAAQ;AAER,8BAA8B;AAC9B,8BAA8B;AAC9B,QAAQ;AAER,2BAA2B;AAC3B,oCAAoC;AACpC,QAAQ;AACR,IAAI;AAEJ,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C,MAAM,aAAa;IACP,UAAU,CAAS;IACnB,WAAW,GAAqB,IAAI,GAAG,EAAE,CAAC;IAElD,YAAY,UAAkB;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,aAAa,CAAC,KAAY;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,KAAY;QAClB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,yBAAkB,EAAC;YAC9B,KAAK;YACL,SAAS,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,CAAC;SACnC,CAAC,CAAC,MAAM,CAAC,oBAAa,CAAC,CAAC,MAAM,CAAC,oBAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,WAAW;QACP,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,UAAU;QACN,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACJ;AAED,+CAA+C;AAC/C,kBAAkB;AAClB,+CAA+C;AAE/C,MAAa,cAAc;IACf,cAAc,CAAiB;IAEvC,YAAY,MAAqB;QAC7B,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,SAAS;gBACV,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;gBACzD,MAAM;YACV,oBAAoB;YACpB,oDAAoD;YACpD,aAAa;YACb,KAAK,QAAQ;gBACT,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;gBAC3D,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC;IAED,SAAS,CAAC,KAAY;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,KAAY;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;IAED,UAAU;QACN,IAAI,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,cAAsB,CAAC,UAAU,EAAE,CAAC;QAC9C,CAAC;IACL,CAAC;CACJ;AApCD,wCAoCC;AAED,+CAA+C;AAC/C,oBAAoB;AACpB,+CAA+C;AAE/C,SAAgB,oBAAoB,CAAC,MAAqB;IACtD,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,oBAAoB,CAAC,MAAqB;IACtD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO;QACH,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE;YACzB,MAAM,WAAW,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;YAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QACD,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE;YAC7B,MAAM,WAAW,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;YAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE;KAC3C,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../../utils/evm/aa-service/services/bundler.ts"],"names":[],"mappings":"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"}
package/dist/evm/evm.d.ts CHANGED
@@ -4,13 +4,14 @@
4
4
  * this is a class that will be responsible for creating several evm wallets code
5
5
  */
6
6
  import { ChainWallet } from "../IChainWallet";
7
- import { Balance, ChainWalletConfig, UserTokenBalance, TokenInfo, TransactionResult, NFT, FeePayerOptions } from "../types";
7
+ import { Balance, ChainWalletConfig, UserTokenBalance, TokenInfo, TransactionResult, NFT } from "../types";
8
8
  import { VM } from "../vm";
9
9
  import { JsonRpcProvider, Wallet } from "ethers";
10
10
  import { EVMTransactionHistoryItem } from "./transactionParsing";
11
- import { PublicClient } from "viem";
11
+ import { Hex, PublicClient } from "viem";
12
12
  import { EVMSmartWallet } from "./smartWallet";
13
13
  import { SmartWalletOptions } from "./aa-service";
14
+ import { SavingsAccount, SmartSavingsAccount, AddressVerificationResult, SavingsAuditResult, TransferToSavingsOptions, WithdrawFromSavingsOptions } from "../savings/types";
14
15
  export declare class EVMVM extends VM<string, string, JsonRpcProvider> {
15
16
  derivationPath: string;
16
17
  constructor(seed: string);
@@ -20,6 +21,22 @@ export declare class EVMVM extends VM<string, string, JsonRpcProvider> {
20
21
  privateKey: string;
21
22
  index: number;
22
23
  };
24
+ /**
25
+ * Derive a savings account using BIP-44 account index
26
+ *
27
+ * Uses the pattern: m/44'/60'/accountIndex'/0/0
28
+ * - Main wallet: m/44'/60'/0'/0/0 (account index 0)
29
+ * - Savings 1: m/44'/60'/1'/0/0 (account index 1)
30
+ * - Savings 2: m/44'/60'/2'/0/0 (account index 2)
31
+ *
32
+ * @param accountIndex - The BIP-44 account index (0 for main, 1+ for savings)
33
+ * @returns Object containing privateKey, address, and derivation path
34
+ */
35
+ deriveSavingsAccount(accountIndex: number): {
36
+ privateKey: string;
37
+ address: string;
38
+ derivationPath: string;
39
+ };
23
40
  static fromMnemonic(mnemonic: string): VM<string, string, JsonRpcProvider>;
24
41
  static validateAddress(address: string): boolean;
25
42
  static getNativeBalance(address: string, connection: JsonRpcProvider): Promise<Balance>;
@@ -29,6 +46,8 @@ export declare class EVMChainWallet extends ChainWallet<string, string, JsonRpcP
29
46
  client: PublicClient;
30
47
  wallet: Wallet;
31
48
  private smartWallet?;
49
+ private savingsManager?;
50
+ private smartSavingsManager?;
32
51
  constructor(config: ChainWalletConfig, privateKey: string, index: number);
33
52
  /**
34
53
  * Check if Account Abstraction is supported on this chain
@@ -81,16 +100,6 @@ export declare class EVMChainWallet extends ChainWallet<string, string, JsonRpcP
81
100
  * @returns Smart wallet address or undefined
82
101
  */
83
102
  getSmartWalletAddress(): string | undefined;
84
- /**
85
- * Transfer native tokens with sponsored gas (internal method)
86
- * Requires smart wallet to be initialized via extend()
87
- */
88
- private transferNativeSponsored;
89
- /**
90
- * Transfer tokens with sponsored gas (internal method)
91
- * Requires smart wallet to be initialized via extend()
92
- */
93
- private transferTokenSponsored;
94
103
  getWallet(): Wallet;
95
104
  generateAddress(): string;
96
105
  getNativeBalance(): Promise<Balance>;
@@ -98,8 +107,8 @@ export declare class EVMChainWallet extends ChainWallet<string, string, JsonRpcP
98
107
  getTokenInfo(tokenAddress: string): Promise<TokenInfo>;
99
108
  discoverToken(): Promise<UserTokenBalance<string>[]>;
100
109
  discoverNFT(): Promise<NFT[]>;
101
- transferNative(to: string, amount: number, feePayerOptions?: FeePayerOptions): Promise<TransactionResult>;
102
- transferToken(tokenAddress: TokenInfo, to: string, amount: number, feePayerOptions?: FeePayerOptions): Promise<TransactionResult>;
110
+ transferNative(to: string, amount: number): Promise<TransactionResult>;
111
+ transferToken(tokenAddress: TokenInfo, to: string, amount: number): Promise<TransactionResult>;
103
112
  getTransactionHistory(): Promise<EVMTransactionHistoryItem[]>;
104
113
  swap(tokenAddress: TokenInfo, to: string, amount: number, slippage?: number): Promise<TransactionResult>;
105
114
  performCompleteSwap(tokenIn: TokenInfo, tokenOut: TokenInfo, amount: number, slippage?: number, recipient?: string, deadline?: number): Promise<TransactionResult>;
@@ -129,4 +138,145 @@ export declare class EVMChainWallet extends ChainWallet<string, string, JsonRpcP
129
138
  confirmations?: number;
130
139
  }): Promise<TransactionResult>;
131
140
  signMessage(message: string): Promise<string>;
141
+ /**
142
+ * Get or create the SavingsManager instance (lazy initialization)
143
+ * @private
144
+ */
145
+ private getSavingsManager;
146
+ /**
147
+ * Initialize savings functionality with a seed phrase
148
+ *
149
+ * This must be called before using any savings methods.
150
+ * The seed is used to derive savings accounts using BIP-44.
151
+ *
152
+ * @param seed - The wallet seed (hex string)
153
+ *
154
+ * @example
155
+ * const seed = VM.mnemonicToSeed(mnemonic);
156
+ * wallet.initializeSavings(seed);
157
+ */
158
+ initializeSavings(seed: string): void;
159
+ /**
160
+ * Derive a new savings account from BIP-44 account index
161
+ *
162
+ * @param accountIndex - The BIP-44 account index (1+ for savings, 0 is main wallet)
163
+ * @returns SavingsAccount with derived address and private key
164
+ *
165
+ * @example
166
+ * const savingsAccount1 = wallet.deriveSavingsAccount(1); // m/44'/60'/1'/0/0
167
+ * const savingsAccount2 = wallet.deriveSavingsAccount(2); // m/44'/60'/2'/0/0
168
+ */
169
+ deriveSavingsAccount(accountIndex: number): SavingsAccount;
170
+ /**
171
+ * Transfer native tokens to a savings account
172
+ *
173
+ * Security: Always derives the destination address from accountIndex.
174
+ *
175
+ * @param accountIndex - Savings account index to deposit to
176
+ * @param amount - Amount in ether units (e.g., "1.5" for 1.5 ETH)
177
+ * @param options - Optional security and priority settings
178
+ * @returns Transaction result
179
+ *
180
+ * @example
181
+ * const result = await wallet.transferToSavings(1, "1.5"); // Send 1.5 ETH to savings account 1
182
+ */
183
+ transferToSavings(accountIndex: number, amount: string, options?: TransferToSavingsOptions): Promise<TransactionResult>;
184
+ /**
185
+ * Withdraw native tokens from a savings account
186
+ *
187
+ * Security: Uses the derived private key for signing.
188
+ *
189
+ * @param accountIndex - Savings account index to withdraw from
190
+ * @param to - Destination address
191
+ * @param amount - Amount in ether units (e.g., "0.5" for 0.5 ETH)
192
+ * @param options - Optional security and priority settings
193
+ * @returns Transaction result
194
+ *
195
+ * @example
196
+ * const result = await wallet.withdrawFromSavings(1, destinationAddress, "0.5");
197
+ */
198
+ withdrawFromSavings(accountIndex: number, to: string, amount: string, options?: WithdrawFromSavingsOptions): Promise<TransactionResult>;
199
+ /**
200
+ * Verify a stored savings address matches the derived address
201
+ *
202
+ * Security: Prevents database tampering attacks.
203
+ *
204
+ * @param accountIndex - The account index to verify
205
+ * @param storedAddress - The address from storage/database
206
+ * @returns Verification result
207
+ *
208
+ * @example
209
+ * const result = wallet.verifySavingsAddress(1, storedAddress);
210
+ * if (!result.isValid) {
211
+ * console.error("Security alert: Address tampering detected!");
212
+ * }
213
+ */
214
+ verifySavingsAddress(accountIndex: number, storedAddress: Hex): AddressVerificationResult;
215
+ /**
216
+ * Audit multiple savings addresses at once
217
+ *
218
+ * @param addresses - Map of accountIndex to stored address
219
+ * @returns Audit result with summary and details
220
+ *
221
+ * @example
222
+ * const addresses = new Map([[1, "0xabc..."], [2, "0xdef..."]]);
223
+ * const audit = wallet.auditSavingsAddresses(addresses);
224
+ * console.log(`Valid: ${audit.valid}/${audit.total}`);
225
+ */
226
+ auditSavingsAddresses(addresses: Map<number, Hex>): SavingsAuditResult;
227
+ /**
228
+ * Get savings account information without exposing private key
229
+ *
230
+ * @param accountIndex - The account index
231
+ * @returns Public account information (address and derivation path)
232
+ *
233
+ * @example
234
+ * const info = wallet.getSavingsAccountInfo(1);
235
+ * console.log(`Address: ${info.address}`);
236
+ * console.log(`Path: ${info.derivationPath}`); // m/44'/60'/1'/0/0
237
+ */
238
+ getSavingsAccountInfo(accountIndex: number): Omit<SavingsAccount, 'privateKey'>;
239
+ /**
240
+ * Get or create the SmartSavingsManager instance (lazy initialization)
241
+ * @private
242
+ */
243
+ private getSmartSavingsManager;
244
+ /**
245
+ * Upgrade a savings account to a smart account with EIP-7702 delegation
246
+ *
247
+ * This enables advanced features:
248
+ * - Lock modules for time-locked savings
249
+ * - Hooks for spend & save
250
+ * - Session keys for periodic savings
251
+ * - Sponsored transactions via paymaster
252
+ *
253
+ * @param accountIndex - The savings account index to upgrade
254
+ * @param options - Optional smart wallet configuration
255
+ * @param autoInitialize - Whether to initialize the smart wallet (default: false)
256
+ * @returns SmartSavingsAccount with EVMSmartWallet instance
257
+ *
258
+ * @example
259
+ * // Upgrade without initialization
260
+ * const smartSavings = await wallet.upgradeSavingsToSmartAccount(1);
261
+ * await smartSavings.smartWallet.initialize(); // Initialize separately
262
+ *
263
+ * @example
264
+ * // Upgrade and initialize in one step
265
+ * const smartSavings = await wallet.upgradeSavingsToSmartAccount(1, {}, true);
266
+ * // Ready to use immediately
267
+ */
268
+ upgradeSavingsToSmartAccount(accountIndex: number, options?: SmartWalletOptions, autoInitialize?: boolean): Promise<SmartSavingsAccount>;
269
+ /**
270
+ * Check if smart savings is supported on this chain
271
+ *
272
+ * @returns true if chain supports Account Abstraction
273
+ *
274
+ * @example
275
+ * if (wallet.isSmartSavingsSupported()) {
276
+ * const smartSavings = await wallet.upgradeSavingsToSmartAccount(1);
277
+ * } else {
278
+ * console.log("This chain doesn't support smart savings");
279
+ * }
280
+ */
281
+ isSmartSavingsSupported(): boolean;
132
282
  }