@deserialize/multi-vm-wallet 1.3.2 → 1.3.4

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 (99) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/dist/IChainWallet.d.ts +2 -0
  3. package/dist/IChainWallet.js.map +1 -1
  4. package/dist/constant.js +60 -16
  5. package/dist/constant.js.map +1 -1
  6. package/dist/evm/aa-service/index.d.ts +1 -1
  7. package/dist/evm/aa-service/index.js +1 -2
  8. package/dist/evm/aa-service/index.js.map +1 -1
  9. package/dist/evm/aa-service/lib/kernel-account.d.ts +1 -1
  10. package/dist/evm/aa-service/lib/kernel-account.js +22 -6
  11. package/dist/evm/aa-service/lib/kernel-account.js.map +1 -1
  12. package/dist/evm/aa-service/lib/session-keys.d.ts +14 -17
  13. package/dist/evm/aa-service/lib/session-keys.js +40 -58
  14. package/dist/evm/aa-service/lib/session-keys.js.map +1 -1
  15. package/dist/evm/aa-service/lib/type.d.ts +2 -1
  16. package/dist/evm/aa-service/lib/type.js.map +1 -1
  17. package/dist/evm/aa-service/services/account-abstraction.d.ts +3 -29
  18. package/dist/evm/aa-service/services/account-abstraction.js +3 -67
  19. package/dist/evm/aa-service/services/account-abstraction.js.map +1 -1
  20. package/dist/evm/aa-service/services/bundler.js +2 -1
  21. package/dist/evm/aa-service/services/bundler.js.map +1 -1
  22. package/dist/evm/evm.d.ts +163 -1
  23. package/dist/evm/evm.js +259 -0
  24. package/dist/evm/evm.js.map +1 -1
  25. package/dist/evm/smartWallet.d.ts +11 -43
  26. package/dist/evm/smartWallet.js +136 -116
  27. package/dist/evm/smartWallet.js.map +1 -1
  28. package/dist/evm/utils.js +0 -1
  29. package/dist/evm/utils.js.map +1 -1
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/price.d.ts +2 -0
  34. package/dist/price.js +33 -0
  35. package/dist/price.js.map +1 -0
  36. package/dist/price.types.d.ts +38 -0
  37. package/dist/price.types.js +4 -0
  38. package/dist/price.types.js.map +1 -0
  39. package/dist/privacy/artifact-manager.d.ts +117 -0
  40. package/dist/privacy/artifact-manager.js +251 -0
  41. package/dist/privacy/artifact-manager.js.map +1 -0
  42. package/dist/privacy/broadcaster-client.d.ts +166 -0
  43. package/dist/privacy/broadcaster-client.js +261 -0
  44. package/dist/privacy/broadcaster-client.js.map +1 -0
  45. package/dist/privacy/index.d.ts +34 -0
  46. package/dist/privacy/index.js +56 -0
  47. package/dist/privacy/index.js.map +1 -0
  48. package/dist/privacy/network-config.d.ts +57 -0
  49. package/dist/privacy/network-config.js +118 -0
  50. package/dist/privacy/network-config.js.map +1 -0
  51. package/dist/privacy/poi-helper.d.ts +161 -0
  52. package/dist/privacy/poi-helper.js +249 -0
  53. package/dist/privacy/poi-helper.js.map +1 -0
  54. package/dist/privacy/railgun-engine.d.ts +135 -0
  55. package/dist/privacy/railgun-engine.js +205 -0
  56. package/dist/privacy/railgun-engine.js.map +1 -0
  57. package/dist/privacy/railgun-privacy-wallet.d.ts +288 -0
  58. package/dist/privacy/railgun-privacy-wallet.js +539 -0
  59. package/dist/privacy/railgun-privacy-wallet.js.map +1 -0
  60. package/dist/privacy/types.d.ts +229 -0
  61. package/dist/privacy/types.js +26 -0
  62. package/dist/privacy/types.js.map +1 -0
  63. package/dist/savings/savings-manager.d.ts +126 -0
  64. package/dist/savings/savings-manager.js +234 -0
  65. package/dist/savings/savings-manager.js.map +1 -0
  66. package/dist/savings/smart-savings.d.ts +74 -0
  67. package/dist/savings/smart-savings.js +152 -0
  68. package/dist/savings/smart-savings.js.map +1 -0
  69. package/dist/savings/types.d.ts +125 -0
  70. package/dist/savings/types.js +9 -0
  71. package/dist/savings/types.js.map +1 -0
  72. package/dist/svm/svm.d.ts +18 -0
  73. package/dist/svm/svm.js +35 -0
  74. package/dist/svm/svm.js.map +1 -1
  75. package/dist/test.js +53 -15
  76. package/dist/test.js.map +1 -1
  77. package/dist/vm.d.ts +14 -0
  78. package/dist/vm.js.map +1 -1
  79. package/package.json +2 -1
  80. package/utils/IChainWallet.ts +2 -0
  81. package/utils/constant.ts +63 -16
  82. package/utils/evm/aa-service/index.ts +0 -1
  83. package/utils/evm/aa-service/lib/kernel-account.ts +23 -8
  84. package/utils/evm/aa-service/lib/session-keys.ts +58 -60
  85. package/utils/evm/aa-service/lib/type.ts +2 -1
  86. package/utils/evm/aa-service/services/account-abstraction.ts +10 -76
  87. package/utils/evm/aa-service/services/bundler.ts +2 -1
  88. package/utils/evm/evm.ts +317 -0
  89. package/utils/evm/smartWallet.ts +118 -128
  90. package/utils/evm/utils.ts +1 -1
  91. package/utils/index.ts +1 -0
  92. package/utils/price.ts +37 -0
  93. package/utils/price.types.ts +45 -0
  94. package/utils/savings/savings-manager.ts +271 -0
  95. package/utils/savings/smart-savings.ts +184 -0
  96. package/utils/savings/types.ts +135 -0
  97. package/utils/svm/svm.ts +43 -2
  98. package/utils/test.ts +84 -19
  99. package/utils/vm.ts +12 -1
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Smart Savings Manager
3
+ *
4
+ * Handles upgrading savings accounts to EIP-7702 smart accounts.
5
+ * Enables advanced features like locked savings, spend & save, and periodic savings.
6
+ *
7
+ * Architecture:
8
+ * 1. Take a basic SavingsAccount (BIP-44 derived)
9
+ * 2. Create an EVMSmartWallet instance from its private key
10
+ * 3. Initialize with EIP-7702 delegation
11
+ * 4. Return a SmartSavingsAccount with full AA capabilities
12
+ */
13
+ import { SmartWalletOptions } from "../evm/aa-service";
14
+ import { ChainWalletConfig } from "../types";
15
+ import { SavingsAccount, SmartSavingsAccount } from "./types";
16
+ /**
17
+ * Manages EIP-7702 smart savings accounts
18
+ *
19
+ * This class provides:
20
+ * 1. Upgrade from basic savings account to smart account
21
+ * 2. Full Account Abstraction capabilities
22
+ * 3. Access to Kernel modules (lock, hooks, session keys)
23
+ * 4. Sponsored transactions via paymaster
24
+ */
25
+ export declare class SmartSavingsManager {
26
+ private chainConfig;
27
+ constructor(chainConfig: ChainWalletConfig);
28
+ /**
29
+ * Upgrade a savings account to a smart account with EIP-7702 delegation
30
+ *
31
+ * This enables advanced features:
32
+ * - Lock modules for time-locked savings
33
+ * - Hooks for spend & save
34
+ * - Session keys for periodic savings
35
+ * - Sponsored transactions via paymaster
36
+ *
37
+ * @param savingsAccount - The basic savings account to upgrade
38
+ * @param options - Optional smart wallet configuration
39
+ * @returns SmartSavingsAccount with EVMSmartWallet instance
40
+ *
41
+ * @example
42
+ * const basicSavings = wallet.deriveSavingsAccount(1);
43
+ * const smartSavings = await smartSavingsManager.upgradeSavingsToSmartAccount(basicSavings);
44
+ * await smartSavings.smartWallet.installModule({ ... });
45
+ */
46
+ upgradeSavingsToSmartAccount(savingsAccount: SavingsAccount, options?: SmartWalletOptions): Promise<SmartSavingsAccount>;
47
+ /**
48
+ * Upgrade and initialize a savings account in one step
49
+ *
50
+ * This is a convenience method that both upgrades and initializes.
51
+ *
52
+ * @param savingsAccount - The basic savings account to upgrade
53
+ * @param options - Optional smart wallet configuration
54
+ * @returns Initialized SmartSavingsAccount ready for transactions
55
+ *
56
+ * @example
57
+ * const basicSavings = wallet.deriveSavingsAccount(1);
58
+ * const smartSavings = await smartSavingsManager.upgradeSavingsAndInitialize(basicSavings);
59
+ * // smartSavings is now ready for smart transactions
60
+ */
61
+ upgradeSavingsAndInitialize(savingsAccount: SavingsAccount, options?: SmartWalletOptions): Promise<SmartSavingsAccount>;
62
+ /**
63
+ * Check if a savings account can be upgraded to smart account
64
+ *
65
+ * @returns true if chain supports AA and has required configuration
66
+ */
67
+ canUpgradeToSmartAccount(): boolean;
68
+ /**
69
+ * Get the chain configuration
70
+ *
71
+ * @returns ChainWalletConfig
72
+ */
73
+ getChainConfig(): ChainWalletConfig;
74
+ }
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * Smart Savings Manager
4
+ *
5
+ * Handles upgrading savings accounts to EIP-7702 smart accounts.
6
+ * Enables advanced features like locked savings, spend & save, and periodic savings.
7
+ *
8
+ * Architecture:
9
+ * 1. Take a basic SavingsAccount (BIP-44 derived)
10
+ * 2. Create an EVMSmartWallet instance from its private key
11
+ * 3. Initialize with EIP-7702 delegation
12
+ * 4. Return a SmartSavingsAccount with full AA capabilities
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SmartSavingsManager = void 0;
16
+ const smartWallet_1 = require("../evm/smartWallet");
17
+ // ============================================
18
+ // SmartSavingsManager Class
19
+ // ============================================
20
+ /**
21
+ * Manages EIP-7702 smart savings accounts
22
+ *
23
+ * This class provides:
24
+ * 1. Upgrade from basic savings account to smart account
25
+ * 2. Full Account Abstraction capabilities
26
+ * 3. Access to Kernel modules (lock, hooks, session keys)
27
+ * 4. Sponsored transactions via paymaster
28
+ */
29
+ class SmartSavingsManager {
30
+ chainConfig;
31
+ constructor(chainConfig) {
32
+ this.chainConfig = chainConfig;
33
+ // Validate AA support
34
+ if (!chainConfig.aaSupport?.enabled) {
35
+ throw new Error("Smart savings requires Account Abstraction (AA) support.\n" +
36
+ "Your chain config must include aaSupport configuration with:\n" +
37
+ "- bundlerUrl\n" +
38
+ "- entryPoints\n" +
39
+ "- kernelImplementations");
40
+ }
41
+ }
42
+ /**
43
+ * Upgrade a savings account to a smart account with EIP-7702 delegation
44
+ *
45
+ * This enables advanced features:
46
+ * - Lock modules for time-locked savings
47
+ * - Hooks for spend & save
48
+ * - Session keys for periodic savings
49
+ * - Sponsored transactions via paymaster
50
+ *
51
+ * @param savingsAccount - The basic savings account to upgrade
52
+ * @param options - Optional smart wallet configuration
53
+ * @returns SmartSavingsAccount with EVMSmartWallet instance
54
+ *
55
+ * @example
56
+ * const basicSavings = wallet.deriveSavingsAccount(1);
57
+ * const smartSavings = await smartSavingsManager.upgradeSavingsToSmartAccount(basicSavings);
58
+ * await smartSavings.smartWallet.installModule({ ... });
59
+ */
60
+ async upgradeSavingsToSmartAccount(savingsAccount, options) {
61
+ // Merge options with chain config
62
+ const mergedOptions = {
63
+ ...options,
64
+ aaConfig: this.chainConfig.aaSupport,
65
+ bundlerUrl: options?.bundlerUrl || this.chainConfig.aaSupport?.bundlerUrl,
66
+ paymasterUrl: options?.paymasterUrl || this.chainConfig.aaSupport?.paymasterUrl,
67
+ entryPointVersion: options?.entryPointVersion || this.chainConfig.aaSupport?.entryPoints?.[0]?.version
68
+ };
69
+ // Validate bundlerUrl
70
+ if (!mergedOptions.bundlerUrl) {
71
+ throw new Error("bundlerUrl is required for smart savings.\n" +
72
+ "Provide it via upgradeSavingsToSmartAccount options or chain config.");
73
+ }
74
+ // Create viem chain object
75
+ const chain = {
76
+ id: this.chainConfig.chainId,
77
+ name: this.chainConfig.name,
78
+ nativeCurrency: {
79
+ name: this.chainConfig.nativeToken.name,
80
+ symbol: this.chainConfig.nativeToken.symbol,
81
+ decimals: this.chainConfig.nativeToken.decimals
82
+ },
83
+ rpcUrls: {
84
+ default: {
85
+ http: [this.chainConfig.rpcUrl]
86
+ }
87
+ },
88
+ blockExplorers: {
89
+ default: {
90
+ name: this.chainConfig.name + " Explorer",
91
+ url: this.chainConfig.explorerUrl
92
+ }
93
+ },
94
+ testnet: this.chainConfig.testnet || false
95
+ };
96
+ // Create EVMSmartWallet instance from savings account private key
97
+ const smartWallet = new smartWallet_1.EVMSmartWallet(savingsAccount.privateKey, chain, mergedOptions);
98
+ // Note: Initialization (createAuthorization) is optional
99
+ // User can call smartWallet.initialize() separately if needed
100
+ // For now, we return uninitialized smart wallet
101
+ const isInitialized = false;
102
+ return {
103
+ ...savingsAccount,
104
+ smartWallet,
105
+ isInitialized
106
+ };
107
+ }
108
+ /**
109
+ * Upgrade and initialize a savings account in one step
110
+ *
111
+ * This is a convenience method that both upgrades and initializes.
112
+ *
113
+ * @param savingsAccount - The basic savings account to upgrade
114
+ * @param options - Optional smart wallet configuration
115
+ * @returns Initialized SmartSavingsAccount ready for transactions
116
+ *
117
+ * @example
118
+ * const basicSavings = wallet.deriveSavingsAccount(1);
119
+ * const smartSavings = await smartSavingsManager.upgradeSavingsAndInitialize(basicSavings);
120
+ * // smartSavings is now ready for smart transactions
121
+ */
122
+ async upgradeSavingsAndInitialize(savingsAccount, options) {
123
+ // First upgrade
124
+ const smartSavings = await this.upgradeSavingsToSmartAccount(savingsAccount, options);
125
+ // Then initialize
126
+ await smartSavings.smartWallet.initialize();
127
+ // Update initialization status
128
+ smartSavings.isInitialized = true;
129
+ return smartSavings;
130
+ }
131
+ /**
132
+ * Check if a savings account can be upgraded to smart account
133
+ *
134
+ * @returns true if chain supports AA and has required configuration
135
+ */
136
+ canUpgradeToSmartAccount() {
137
+ return !!(this.chainConfig.aaSupport?.enabled &&
138
+ this.chainConfig.aaSupport?.bundlerUrl &&
139
+ this.chainConfig.aaSupport?.entryPoints &&
140
+ this.chainConfig.aaSupport?.entryPoints.length > 0);
141
+ }
142
+ /**
143
+ * Get the chain configuration
144
+ *
145
+ * @returns ChainWalletConfig
146
+ */
147
+ getChainConfig() {
148
+ return this.chainConfig;
149
+ }
150
+ }
151
+ exports.SmartSavingsManager = SmartSavingsManager;
152
+ //# sourceMappingURL=smart-savings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-savings.js","sourceRoot":"","sources":["../../utils/savings/smart-savings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Savings Pocket Types
3
+ *
4
+ * Type definitions for the savings pocket feature that allows users to create
5
+ * multiple savings accounts derived from their seed phrase using BIP-44 account indices.
6
+ */
7
+ import { Hex } from "viem";
8
+ import { EVMSmartWallet } from "../evm/smartWallet";
9
+ /**
10
+ * Savings account derived from BIP-44 account index
11
+ */
12
+ export interface SavingsAccount {
13
+ /** Account index used for derivation (m/44'/60'/accountIndex'/0/0) */
14
+ accountIndex: number;
15
+ /** Derived private key for this savings account */
16
+ privateKey: Hex;
17
+ /** Derived address for this savings account */
18
+ address: Hex;
19
+ /** Full BIP-44 derivation path */
20
+ derivationPath: string;
21
+ }
22
+ /**
23
+ * Savings account upgraded to EIP-7702 smart account
24
+ */
25
+ export interface SmartSavingsAccount extends SavingsAccount {
26
+ /** Smart wallet instance for advanced features */
27
+ smartWallet: EVMSmartWallet;
28
+ /** Whether the account has been initialized on-chain */
29
+ isInitialized: boolean;
30
+ }
31
+ /**
32
+ * Options for transferring to savings
33
+ */
34
+ export interface TransferToSavingsOptions {
35
+ /** Expected address for verification (prevents tampering) */
36
+ expectedAddress?: Hex;
37
+ /** Transaction priority for gas estimation */
38
+ priority?: 'low' | 'medium' | 'high';
39
+ /** Whether to use smart account features (requires 7702 upgrade) */
40
+ useSmartAccount?: boolean;
41
+ }
42
+ /**
43
+ * Options for withdrawing from savings
44
+ */
45
+ export interface WithdrawFromSavingsOptions {
46
+ /** Expected source address for verification */
47
+ expectedAddress?: Hex;
48
+ /** Transaction priority */
49
+ priority?: 'low' | 'medium' | 'high';
50
+ /** Whether to use smart account features */
51
+ useSmartAccount?: boolean;
52
+ }
53
+ /**
54
+ * Result of address verification
55
+ */
56
+ export interface AddressVerificationResult {
57
+ /** Account index that was verified */
58
+ accountIndex: number;
59
+ /** Stored address that was checked */
60
+ storedAddress: Hex;
61
+ /** Derived address from account index */
62
+ derivedAddress: Hex;
63
+ /** Whether addresses match */
64
+ isValid: boolean;
65
+ /** Error message if invalid */
66
+ error?: string;
67
+ }
68
+ /**
69
+ * Result of batch address audit
70
+ */
71
+ export interface SavingsAuditResult {
72
+ /** Total number of addresses audited */
73
+ total: number;
74
+ /** Number of valid addresses */
75
+ valid: number;
76
+ /** Number of invalid addresses */
77
+ invalid: number;
78
+ /** Whether all addresses are valid */
79
+ allValid: boolean;
80
+ /** Detailed results per address */
81
+ results: AddressVerificationResult[];
82
+ /** Timestamp of audit */
83
+ timestamp: Date;
84
+ }
85
+ /**
86
+ * Lock module configuration for locked savings
87
+ */
88
+ export interface LockModuleConfig {
89
+ /** Lock duration in seconds */
90
+ lockDuration: number;
91
+ /** Lock end timestamp (computed) */
92
+ lockedUntil: number;
93
+ /** Whether early withdrawal is allowed with penalty */
94
+ allowEarlyWithdrawal?: boolean;
95
+ /** Penalty percentage for early withdrawal (0-100) */
96
+ earlyWithdrawalPenalty?: number;
97
+ }
98
+ /**
99
+ * Periodic savings session configuration
100
+ */
101
+ export interface PeriodicSavingsConfig {
102
+ /** Amount to save each period */
103
+ amount: number;
104
+ /** Savings frequency */
105
+ frequency: 'daily' | 'weekly' | 'monthly';
106
+ /** Destination account index */
107
+ savingsAccountIndex: number;
108
+ /** Optional end date for recurring savings */
109
+ endDate?: Date;
110
+ /** Maximum number of executions */
111
+ maxExecutions?: number;
112
+ }
113
+ /**
114
+ * Spend and save hook configuration
115
+ */
116
+ export interface SpendAndSaveConfig {
117
+ /** Percentage of spending to save (0-100) */
118
+ savePercentage: number;
119
+ /** Destination savings account index */
120
+ savingsAccountIndex: number;
121
+ /** Minimum transaction amount to trigger saving */
122
+ minTransactionAmount?: number;
123
+ /** Maximum amount to save per transaction */
124
+ maxSaveAmount?: number;
125
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Savings Pocket Types
4
+ *
5
+ * Type definitions for the savings pocket feature that allows users to create
6
+ * multiple savings accounts derived from their seed phrase using BIP-44 account indices.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../utils/savings/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
package/dist/svm/svm.d.ts CHANGED
@@ -3,6 +3,7 @@ import { VM } from "../vm";
3
3
  import { ChainWallet } from "../IChainWallet";
4
4
  import { Balance, ChainWalletConfig, UserTokenBalance, TokenInfo, TransactionResult, NFT } from "../types";
5
5
  import { JupiterQuoteResponse } from "./utils";
6
+ import { PriceResponse } from "../price.types";
6
7
  import { SVMTransactionHistoryItem } from "./transactionParsing";
7
8
  export declare class SVMVM extends VM<PublicKey, Keypair, Connection> {
8
9
  getTokenInfo: (tokenAddress: PublicKey, connection: Connection, programId?: PublicKey) => Promise<TokenInfo>;
@@ -22,6 +23,22 @@ export declare class SVMVM extends VM<PublicKey, Keypair, Connection> {
22
23
  privateKey: Keypair;
23
24
  index: number;
24
25
  };
26
+ /**
27
+ * Derive a savings account using BIP-44 account index
28
+ *
29
+ * Uses the pattern: m/44'/501'/accountIndex'/0/0
30
+ * - Main wallet: m/44'/501'/0'/0/0 (account index 0)
31
+ * - Savings 1: m/44'/501'/1'/0/0 (account index 1)
32
+ * - Savings 2: m/44'/501'/2'/0/0 (account index 2)
33
+ *
34
+ * @param accountIndex - The BIP-44 account index (0 for main, 1+ for savings)
35
+ * @returns Object containing privateKey (Keypair), address (PublicKey), and derivation path
36
+ */
37
+ deriveSavingsAccount(accountIndex: number): {
38
+ privateKey: Keypair;
39
+ address: PublicKey;
40
+ derivationPath: string;
41
+ };
25
42
  static fromMnemonic(mnemonic: string): VM<PublicKey, Keypair, Connection>;
26
43
  }
27
44
  export declare class SVMChainWallet extends ChainWallet<PublicKey, Keypair, Connection> {
@@ -38,6 +55,7 @@ export declare class SVMChainWallet extends ChainWallet<PublicKey, Keypair, Conn
38
55
  signAndSendTransaction(transaction: VersionedTransaction | Transaction): Promise<string>;
39
56
  getTransactionHistory(): Promise<SVMTransactionHistoryItem[]>;
40
57
  getTokenInfo(tokenAddress: PublicKey): Promise<TokenInfo>;
58
+ getPrices(tokenAddresses: string[]): Promise<PriceResponse>;
41
59
  swap(fromToken: TokenInfo, toToken: PublicKey, amount: number, slippage?: number): Promise<TransactionResult>;
42
60
  getSwapQuote(fromToken: TokenInfo, toToken: PublicKey, amount: number, slippage?: number): Promise<{
43
61
  success: boolean;
package/dist/svm/svm.js CHANGED
@@ -11,6 +11,7 @@ const IChainWallet_1 = require("../IChainWallet");
11
11
  const utils_1 = require("./utils");
12
12
  const bn_js_1 = __importDefault(require("bn.js"));
13
13
  const tweetnacl_1 = __importDefault(require("tweetnacl"));
14
+ const price_1 = require("../price");
14
15
  const transactionParsing_1 = require("./transactionParsing");
15
16
  class SVMVM extends vm_1.VM {
16
17
  getTokenInfo = utils_1.getTokenInfo;
@@ -55,6 +56,29 @@ class SVMVM extends vm_1.VM {
55
56
  const privateKey = (0, walletBip32_1.SVMDeriveChildPrivateKey)(_seed, index, derivationPath);
56
57
  return { privateKey, index };
57
58
  }
59
+ /**
60
+ * Derive a savings account using BIP-44 account index
61
+ *
62
+ * Uses the pattern: m/44'/501'/accountIndex'/0/0
63
+ * - Main wallet: m/44'/501'/0'/0/0 (account index 0)
64
+ * - Savings 1: m/44'/501'/1'/0/0 (account index 1)
65
+ * - Savings 2: m/44'/501'/2'/0/0 (account index 2)
66
+ *
67
+ * @param accountIndex - The BIP-44 account index (0 for main, 1+ for savings)
68
+ * @returns Object containing privateKey (Keypair), address (PublicKey), and derivation path
69
+ */
70
+ deriveSavingsAccount(accountIndex) {
71
+ // Use fixed address index 0 for savings accounts
72
+ // Vary only the account index (3rd position in BIP-44)
73
+ const derivationPath = `m/44'/501'/${accountIndex}'/0/0`;
74
+ // Derive the keypair using the account index in the path
75
+ const keypair = (0, walletBip32_1.SVMDeriveChildPrivateKey)(this.seed, 0, `m/44'/501'/${accountIndex}'/0/`);
76
+ return {
77
+ privateKey: keypair,
78
+ address: keypair.publicKey,
79
+ derivationPath
80
+ };
81
+ }
58
82
  static fromMnemonic(mnemonic) {
59
83
  const seed = vm_1.VM.mnemonicToSeed(mnemonic);
60
84
  return new SVMVM(seed);
@@ -117,6 +141,17 @@ class SVMChainWallet extends IChainWallet_1.ChainWallet {
117
141
  async getTokenInfo(tokenAddress) {
118
142
  return await SVMVM.getTokenInfo(tokenAddress, this.connection);
119
143
  }
144
+ async getPrices(tokenAddresses) {
145
+ const result = await (0, price_1.fetchPrices)({
146
+ vm: 'SVM',
147
+ chainId: this.config.chainId,
148
+ tokenAddresses,
149
+ });
150
+ if (result.error) {
151
+ throw new Error(result.error.message);
152
+ }
153
+ return result.data;
154
+ }
120
155
  async swap(fromToken, toToken, amount, slippage = 50) {
121
156
  try {
122
157
  if (amount <= 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"svm.js","sourceRoot":"","sources":["../../utils/svm/svm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svm.js","sourceRoot":"","sources":["../../utils/svm/svm.ts"],"names":[],"mappings":"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"}
package/dist/test.js CHANGED
@@ -6,20 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const bs58_1 = __importDefault(require("bs58"));
7
7
  const web3_js_1 = require("@solana/web3.js");
8
8
  const evm_1 = require("./evm");
9
+ const viem_1 = require("viem");
9
10
  const chains_1 = require("viem/chains");
10
11
  const account_abstraction_1 = require("viem/account-abstraction");
11
12
  const constants_1 = require("@zerodev/sdk/constants");
13
+ const aa_service_1 = require("./evm/aa-service");
12
14
  // const mnemonic = GenerateNewMnemonic()
13
15
  // console.log('mnemonic: ', mnemonic);
14
16
  // const seed = VM.mnemonicToSeed(mnemonic)
15
- const pKey = "4QxETeX9pndiF1XNghUiDTnZnHq3cfjmuPLBJysrgocsLq1yb8w96aPWALa8ZnRZWmDU4wM8Tg8d1ZRVVByj7uXE";
17
+ const pKey = "";
16
18
  const testUserKeyPair = web3_js_1.Keypair.fromSecretKey(bs58_1.default.decode(pKey));
17
19
  // const x = testUserKeyPair instanceof Keypair;
18
- const evePrivateKey = "0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318";
19
- const evmPrivateKey2 = "0x0123456789012345678901234567890123456789012345678901234567890123";
20
- const ogPrivKey = "d2d3f7117aa9a4c6e5d4affedd8a5ea624ffd82b2a1de81509e5913709b1ea72";
21
- const evmPrivKey = "0xc9ca95aa5f40bae8b0f741ec89acc07b837590b2f9f818d3439df98c6e4f8dbe";
22
- const evmPrivateKeyExposed = "0x92cccc7792024dcac5992e5d2986dade41770acfd3dab0fe98ee953ed1bf0c3a";
20
+ const evmPrivKey = "";
21
+ const evmPrivateKeyExposed = "";
23
22
  // const vm = new SVMVM(seed)
24
23
  // const vmFromMnemonic = SVMVM.fromMnemonic(mnemonic)
25
24
  // const keyFromMnemonic = vmFromMnemonic.generatePrivateKey(0)
@@ -39,7 +38,7 @@ const chainConfig = {
39
38
  const evmChainConfig = {
40
39
  chainId: 8453,
41
40
  name: "Base",
42
- // rpcUrl: "https://eth-mainnet.g.alchemy.com/v2/lhoyb3hc9ccT9NA_y2cfA",
41
+ // rpcUrl: "https://base-mainnet.g.alchemy.com/v2/TFdA4BilCnKIwaqtypk0d",
43
42
  rpcUrl: chains_1.base.rpcUrls.default.http[0],
44
43
  explorerUrl: "https://explorer.ethereum.com",
45
44
  nativeToken: { name: "Ethereum", symbol: "ETH", decimals: 18 },
@@ -77,17 +76,14 @@ const OgChainConfig = {
77
76
  // const wallet = new SVMChainWallet(chainConfig, testUserKeyPair, 0)
78
77
  const wallet = new evm_1.EVMChainWallet(evmChainConfig, evmPrivateKeyExposed, 0);
79
78
  //IIFE
80
- const walletA = new evm_1.EVMChainWallet(evmChainConfig, evmPrivateKeyExposed, 0); //wallet that usdc to send
79
+ const walletA = new evm_1.EVMChainWallet(evmChainConfig, evmPrivateKeyExposed, 0); //wallet that has usdc to send
81
80
  const walletB = new evm_1.EVMChainWallet(evmChainConfig, evmPrivKey, 0); // wallet that has gas
82
81
  const SEPOLIA_USDC_ADDRESS = '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238';
83
82
  const BASE_USDC_ADDRESS = '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913';
84
83
  const bundlerUrl = `https://api.pimlico.io/v2/${evmChainConfig.chainId}/rpc?apikey=pim_3UEhbTpS98H1XFm8p9kRxg`;
85
84
  const RECIPIENT = "0x7027F9C9a701adCbfCD55D16aD219501D4b9589A";
86
- (async () => {
87
- return;
85
+ const testSessionKeys = async () => {
88
86
  console.log("walletA address: ", walletA.address);
89
- console.log("walletB address: ", walletB.address);
90
- //GET TOKEN LOGO using @solana/spl-token-metadata
91
87
  const walletANativeBalance = await walletA.getNativeBalance();
92
88
  console.log('walletA native balance: ', walletANativeBalance);
93
89
  const walletBNativeBalance = await walletB.getNativeBalance();
@@ -95,17 +91,59 @@ const RECIPIENT = "0x7027F9C9a701adCbfCD55D16aD219501D4b9589A";
95
91
  //wallet B USDC balance
96
92
  const walletBUSDCBalance = await walletB.getTokenBalance(BASE_USDC_ADDRESS);
97
93
  console.log('walletB USDC balance: ', walletBUSDCBalance);
94
+ console.log("walletB address: ", walletB.address);
98
95
  //extend wallet A wallet to a smart wallet with AA support
99
96
  const extendedWalletA = await walletA.extend({
100
97
  bundlerUrl: bundlerUrl
101
98
  });
102
99
  // console.log('extendedWalletA: ', extendedWalletA);
103
100
  const initializedExtendedWalletA = await extendedWalletA.initialize();
104
- // console.log('initializedExtendedWalletA: ', initializedExtendedWalletA);
105
- })();
101
+ //now we want to test session keys
102
+ const sessionKeys = await initializedExtendedWalletA.generateSessionKey();
103
+ console.log('sessionKeys: ', sessionKeys);
104
+ // return;
105
+ const usdcPermission = initializedExtendedWalletA.createUSDCPermission(BASE_USDC_ADDRESS, "1", // approve up to 100 USDC,
106
+ RECIPIENT);
107
+ console.log('usdcPermission: ', usdcPermission);
108
+ const sessionKeyApproval = await initializedExtendedWalletA.approveSessionKey({
109
+ sessionKeyAddress: sessionKeys.address,
110
+ sessionKeyPrivateKey: sessionKeys.privateKey,
111
+ permissions: [usdcPermission],
112
+ // useSudoPolicy: true,
113
+ });
114
+ const data = (0, viem_1.encodeFunctionData)({
115
+ abi: (0, viem_1.parseAbi)([
116
+ 'function transfer(address to, uint256 amount) public returns (bool)'
117
+ ]),
118
+ functionName: 'transfer',
119
+ args: [RECIPIENT, (0, viem_1.parseUnits)('0.01', 6)]
120
+ }); // transfer 10 USDC
121
+ console.log('sessionKeyApproval: ', sessionKeyApproval);
122
+ const sessionKeyAccount = await (0, aa_service_1.deserializeSessionKey)({
123
+ approval: sessionKeyApproval,
124
+ sessionKeySigner: sessionKeys.signer,
125
+ chain: chains_1.base
126
+ });
127
+ //send transaction using session key
128
+ const sessionAccount = {
129
+ account: sessionKeyAccount,
130
+ address: sessionKeyAccount.address,
131
+ };
132
+ const hash = await initializedExtendedWalletA.sendTransaction(BASE_USDC_ADDRESS, 0n, data, {
133
+ sessionAccount: sessionAccount
134
+ });
135
+ console.log('hash: ', hash);
136
+ //get session key client
137
+ };
138
+ const testModule = async () => {
139
+ const extendedWalletA = await walletA.extend({
140
+ bundlerUrl: bundlerUrl
141
+ });
142
+ const initializedExtendedWalletA = await extendedWalletA.initialize();
143
+ //this is where we will test installation of modules
144
+ };
106
145
  // console.log('wallet: ', wallet);
107
146
  // getTokenInfo(new PublicKey("9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump"), wallet.connection!).then(e => console.log('token info: ', e))
108
- wallet.discoverToken().then(e => console.log('discovered tokens: ', e));
109
147
  // wallet.getNativeBalance().then(e => console.log('native balance: ', e))
110
148
  // const toBuy = new PublicKey("9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump")
111
149
  // wallet.swap({
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../utils/test.ts"],"names":[],"mappings":";;;;;AAGA,gDAA0B;AAE1B,6CAAiE;AAKjE,+BAAqD;AAIrD,wCAA+C;AAK/C,kEAA+D;AAE/D,sDAAkF;AAClF,yCAAyC;AAGzC,uCAAuC;AAEvC,2CAA2C;AAC3C,MAAM,IAAI,GAAG,0FAA0F,CAAA;AAEvG,MAAM,eAAe,GAAG,iBAAO,CAAC,aAAa,CAAC,cAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,gDAAgD;AAChD,MAAM,aAAa,GAAG,oEAAoE,CAAA;AAC1F,MAAM,cAAc,GAAG,oEAAoE,CAAA;AAC3F,MAAM,SAAS,GAAG,kEAAkE,CAAA;AAEpF,MAAM,UAAU,GAAG,oEAAoE,CAAA;AACvF,MAAM,oBAAoB,GAAG,oEAAoE,CAAA;AACjG,6BAA6B;AAG7B,sDAAsD;AACtD,+DAA+D;AAC/D,0EAA0E;AAC1E,uCAAuC;AACvC,kDAAkD;AAClD,MAAM,WAAW,GAAsB;IACnC,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,+DAA+D;IACvE,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC3D,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;CAEd,CAAA;AAED,MAAM,cAAc,GAAsB;IACtC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,MAAM;IACZ,wEAAwE;IACxE,MAAM,EAAE,aAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,SAAS,EAAE;QACP,OAAO,EAAE,IAAI;QACb,WAAW,EAAE;YACT;gBACI,OAAO,EAAE,yCAAmB;gBAC5B,OAAO,EAAE,KAAK;aACjB;SACJ;QACD,UAAU,EAAE,6BAA6B,IAAI,wCAAwC;QACrF,YAAY,EAAE,EAAE;QAChB,qBAAqB,EAAE;YACnB;gBACI,OAAO,EAAE,uCAA2B,CAAC,uBAAW,CAAC,CAAC,4BAA4B;gBAC9E,OAAO,EAAE,CAAC;aACb;SACJ;KACJ;CACJ,CAAA;AAED,MAAM,aAAa,GAAsB;IACrC,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,sBAAsB;IAC9B,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;CAEd,CAAA;AAGD,qEAAqE;AACrE,MAAM,MAAM,GAAG,IAAI,oBAAc,CAAC,cAAc,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;AAE1E,MAAM;AACN,MAAM,OAAO,GAAG,IAAI,oBAAc,CAAC,cAAc,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,0BAA0B;AACvG,MAAM,OAAO,GAAG,IAAI,oBAAc,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB;AACzF,MAAM,oBAAoB,GAAG,4CAAmD,CAAC;AACjF,MAAM,iBAAiB,GAAG,4CAAmD,CAAC;AAC9E,MAAM,UAAU,GAAG,6BAA6B,cAAc,CAAC,OAAO,wCAAwC,CAAC;AAE/G,MAAM,SAAS,GAAG,4CAA4C,CAAC;AAC/D,CAAC,KAAK,IAAI,EAAE;IACR,OAAM;IACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlD,iDAAiD;IACjD,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,CAAC;IAE9D,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,CAAC;IAE9D,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAC;IAE1D,0DAA0D;IAC1D,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;QACzC,UAAU,EAAE,UAAU;KACzB,CAAC,CAAA;IAEF,qDAAqD;IACrD,MAAM,0BAA0B,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAA;IAErE,2EAA2E;AAI/E,CAAC,CAAC,EAAE,CAAC;AAIL,mCAAmC;AACnC,4IAA4I;AAC5I,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAA;AACvE,0EAA0E;AAE1E,8EAA8E;AAC9E,gBAAgB;AAChB,oCAAoC;AACpC,uCAAuC;AACvC,sCAAsC;AACtC,kBAAkB;AAClB,kDAAkD;AAGlD,qCAAqC;AACrC,mDAAmD;AAOnD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;AACnC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,OAAO,CAAC,CAAC;AAE3C,qEAAqE;AACrE,sCAAsC;AACtC,MAAM;AAEN;;;GAGG;AAEH,0BAA0B;AAC1B,yBAAyB;AACzB,kBAAkB;AAClB,sBAAsB;AACtB,QAAQ;AACR,oBAAoB;AACpB,6GAA6G;AAC7G,QAAQ;AACR,6BAA6B;AAC7B,oDAAoD;AACpD,6BAA6B;AAC7B,mEAAmE;AACnE,MAAM;AACN,sCAAsC;AACtC,mBAAmB;AACnB,qDAAqD;AACrD,KAAK;AAEL,mGAAmG;AACnG,mCAAmC;AACnC,4BAA4B;AAC5B,8BAA8B;AAC9B,wDAAwD;AACxD,6BAA6B;AAC7B,uEAAuE;AACvE,MAAM;AAEN,4FAA4F;AAC5F,6CAA6C;AAC7C,sBAAsB;AACtB,uDAAuD;AACvD,MAAM;AAEN,2GAA2G;AAC3G,6CAA6C;AAC7C,sBAAsB;AACtB,uDAAuD;AACvD,MAAM;AAEN,6GAA6G;AAC7G,iDAAiD;AACjD,sBAAsB;AACtB,yDAAyD;AACzD,MAAM;AAGN,SAAS;AACT,iBAAiB;AACjB,wDAAwD;AACxD,QAAQ"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../utils/test.ts"],"names":[],"mappings":"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"}
package/dist/vm.d.ts CHANGED
@@ -21,4 +21,18 @@ export declare abstract class VM<AddressType, PrivateKeyType, ConnectionType> {
21
21
  index: number;
22
22
  };
23
23
  abstract getTokenInfo(tokenAddress: AddressType, connection: ConnectionType): Promise<TokenInfo>;
24
+ /**
25
+ * Derive a savings account using BIP-44 account index
26
+ *
27
+ * Main wallet uses: m/44'/60'/0'/0/0 (account index 0)
28
+ * Savings accounts use: m/44'/60'/N'/0/0 (account index N)
29
+ *
30
+ * @param accountIndex - The BIP-44 account index (1 for first savings, 2 for second, etc.)
31
+ * @returns Object containing privateKey, address, and derivation path
32
+ */
33
+ abstract deriveSavingsAccount(accountIndex: number): {
34
+ privateKey: PrivateKeyType;
35
+ address: AddressType;
36
+ derivationPath: string;
37
+ };
24
38
  }