@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.
- package/.claude/settings.local.json +2 -1
- package/dist/IChainWallet.d.ts +2 -0
- package/dist/IChainWallet.js.map +1 -1
- package/dist/constant.js +60 -16
- package/dist/constant.js.map +1 -1
- package/dist/evm/aa-service/index.d.ts +1 -1
- package/dist/evm/aa-service/index.js +1 -2
- package/dist/evm/aa-service/index.js.map +1 -1
- package/dist/evm/aa-service/lib/kernel-account.d.ts +1 -1
- package/dist/evm/aa-service/lib/kernel-account.js +22 -6
- package/dist/evm/aa-service/lib/kernel-account.js.map +1 -1
- package/dist/evm/aa-service/lib/session-keys.d.ts +14 -17
- package/dist/evm/aa-service/lib/session-keys.js +40 -58
- package/dist/evm/aa-service/lib/session-keys.js.map +1 -1
- package/dist/evm/aa-service/lib/type.d.ts +2 -1
- package/dist/evm/aa-service/lib/type.js.map +1 -1
- package/dist/evm/aa-service/services/account-abstraction.d.ts +3 -29
- package/dist/evm/aa-service/services/account-abstraction.js +3 -67
- package/dist/evm/aa-service/services/account-abstraction.js.map +1 -1
- package/dist/evm/aa-service/services/bundler.js +2 -1
- package/dist/evm/aa-service/services/bundler.js.map +1 -1
- package/dist/evm/evm.d.ts +163 -1
- package/dist/evm/evm.js +259 -0
- package/dist/evm/evm.js.map +1 -1
- package/dist/evm/smartWallet.d.ts +11 -43
- package/dist/evm/smartWallet.js +136 -116
- package/dist/evm/smartWallet.js.map +1 -1
- package/dist/evm/utils.js +0 -1
- package/dist/evm/utils.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/price.d.ts +2 -0
- package/dist/price.js +33 -0
- package/dist/price.js.map +1 -0
- package/dist/price.types.d.ts +38 -0
- package/dist/price.types.js +4 -0
- package/dist/price.types.js.map +1 -0
- package/dist/privacy/artifact-manager.d.ts +117 -0
- package/dist/privacy/artifact-manager.js +251 -0
- package/dist/privacy/artifact-manager.js.map +1 -0
- package/dist/privacy/broadcaster-client.d.ts +166 -0
- package/dist/privacy/broadcaster-client.js +261 -0
- package/dist/privacy/broadcaster-client.js.map +1 -0
- package/dist/privacy/index.d.ts +34 -0
- package/dist/privacy/index.js +56 -0
- package/dist/privacy/index.js.map +1 -0
- package/dist/privacy/network-config.d.ts +57 -0
- package/dist/privacy/network-config.js +118 -0
- package/dist/privacy/network-config.js.map +1 -0
- package/dist/privacy/poi-helper.d.ts +161 -0
- package/dist/privacy/poi-helper.js +249 -0
- package/dist/privacy/poi-helper.js.map +1 -0
- package/dist/privacy/railgun-engine.d.ts +135 -0
- package/dist/privacy/railgun-engine.js +205 -0
- package/dist/privacy/railgun-engine.js.map +1 -0
- package/dist/privacy/railgun-privacy-wallet.d.ts +288 -0
- package/dist/privacy/railgun-privacy-wallet.js +539 -0
- package/dist/privacy/railgun-privacy-wallet.js.map +1 -0
- package/dist/privacy/types.d.ts +229 -0
- package/dist/privacy/types.js +26 -0
- package/dist/privacy/types.js.map +1 -0
- package/dist/savings/savings-manager.d.ts +126 -0
- package/dist/savings/savings-manager.js +234 -0
- package/dist/savings/savings-manager.js.map +1 -0
- package/dist/savings/smart-savings.d.ts +74 -0
- package/dist/savings/smart-savings.js +152 -0
- package/dist/savings/smart-savings.js.map +1 -0
- package/dist/savings/types.d.ts +125 -0
- package/dist/savings/types.js +9 -0
- package/dist/savings/types.js.map +1 -0
- package/dist/svm/svm.d.ts +18 -0
- package/dist/svm/svm.js +35 -0
- package/dist/svm/svm.js.map +1 -1
- package/dist/test.js +53 -15
- package/dist/test.js.map +1 -1
- package/dist/vm.d.ts +14 -0
- package/dist/vm.js.map +1 -1
- package/package.json +2 -1
- package/utils/IChainWallet.ts +2 -0
- package/utils/constant.ts +63 -16
- package/utils/evm/aa-service/index.ts +0 -1
- package/utils/evm/aa-service/lib/kernel-account.ts +23 -8
- package/utils/evm/aa-service/lib/session-keys.ts +58 -60
- package/utils/evm/aa-service/lib/type.ts +2 -1
- package/utils/evm/aa-service/services/account-abstraction.ts +10 -76
- package/utils/evm/aa-service/services/bundler.ts +2 -1
- package/utils/evm/evm.ts +317 -0
- package/utils/evm/smartWallet.ts +118 -128
- package/utils/evm/utils.ts +1 -1
- package/utils/index.ts +1 -0
- package/utils/price.ts +37 -0
- package/utils/price.types.ts +45 -0
- package/utils/savings/savings-manager.ts +271 -0
- package/utils/savings/smart-savings.ts +184 -0
- package/utils/savings/types.ts +135 -0
- package/utils/svm/svm.ts +43 -2
- package/utils/test.ts +84 -19
- 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) {
|
package/dist/svm/svm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svm.js","sourceRoot":"","sources":["../../utils/svm/svm.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAoG;AACpG,gDAA0D;AAC1D,8BAA2B;AAC3B,kDAA8C;AAE9C,mCAiBiB;AACjB,kDAAuB;AACvB,0DAA6B;AAE7B,6DAA2F;AAG3F,MAAa,KAAM,SAAQ,OAAkC;IACzD,YAAY,GAAG,oBAAY,CAAA;IAC3B,MAAM,CAAC,YAAY,GAAG,oBAAY,CAAA;IAClC,MAAM,CAAC,eAAe,CAAC,OAAkB;QACrC,IAAI,CAAC;YACD,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAA;YACtB,OAAO,IAAI,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAA;QAEhB,CAAC;IACL,CAAC;IACD,cAAc,GAAG,aAAa,CAAC,CAAC,8BAA8B;IAE9D,YAAY,IAAY;QACpB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAkB,EAAE,UAAsB;QAC9D,OAAO,IAAA,2BAAmB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAkB,EAAE,YAAuB,EAAE,UAAsB;QAC5F,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAe,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACzE,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,IAAI,eAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,eAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5J,CAAC;IAED,MAAM,CAAC,sBAAsB,GAAG,8BAAsB,CAAA;IAEtD,MAAM,CAAC,eAAe,GAAG,uBAAe,CAAA;IAExC,MAAM,CAAC,eAAe,GAAG,uBAAe,CAAA;IAGxC,kBAAkB,CAAC,KAAa,EAAE,IAAa,EAAE,QAAiB,EAAE,cAAc,GAAG,IAAI,CAAC,cAAc;QACpG,IAAI,KAAa,CAAA;QAEjB,IAAI,IAAI,EAAE,CAAC;YACP,KAAK,GAAG,IAAI,CAAA;QAChB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YAClB,KAAK,GAAG,OAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,CAAC;QACD,MAAM,UAAU,GAAG,IAAA,sCAAwB,EAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC1E,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;
|
|
1
|
+
{"version":3,"file":"svm.js","sourceRoot":"","sources":["../../utils/svm/svm.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAoG;AACpG,gDAA0D;AAC1D,8BAA2B;AAC3B,kDAA8C;AAE9C,mCAiBiB;AACjB,kDAAuB;AACvB,0DAA6B;AAE7B,oCAAuC;AAEvC,6DAA2F;AAG3F,MAAa,KAAM,SAAQ,OAAkC;IACzD,YAAY,GAAG,oBAAY,CAAA;IAC3B,MAAM,CAAC,YAAY,GAAG,oBAAY,CAAA;IAClC,MAAM,CAAC,eAAe,CAAC,OAAkB;QACrC,IAAI,CAAC;YACD,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAA;YACtB,OAAO,IAAI,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAA;QAEhB,CAAC;IACL,CAAC;IACD,cAAc,GAAG,aAAa,CAAC,CAAC,8BAA8B;IAE9D,YAAY,IAAY;QACpB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAkB,EAAE,UAAsB;QAC9D,OAAO,IAAA,2BAAmB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAkB,EAAE,YAAuB,EAAE,UAAsB;QAC5F,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAe,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACzE,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,IAAI,eAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,eAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5J,CAAC;IAED,MAAM,CAAC,sBAAsB,GAAG,8BAAsB,CAAA;IAEtD,MAAM,CAAC,eAAe,GAAG,uBAAe,CAAA;IAExC,MAAM,CAAC,eAAe,GAAG,uBAAe,CAAA;IAGxC,kBAAkB,CAAC,KAAa,EAAE,IAAa,EAAE,QAAiB,EAAE,cAAc,GAAG,IAAI,CAAC,cAAc;QACpG,IAAI,KAAa,CAAA;QAEjB,IAAI,IAAI,EAAE,CAAC;YACP,KAAK,GAAG,IAAI,CAAA;QAChB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YAClB,KAAK,GAAG,OAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,CAAC;QACD,MAAM,UAAU,GAAG,IAAA,sCAAwB,EAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC1E,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,YAAoB;QACrC,iDAAiD;QACjD,uDAAuD;QACvD,MAAM,cAAc,GAAG,cAAc,YAAY,OAAO,CAAC;QAEzD,yDAAyD;QACzD,MAAM,OAAO,GAAG,IAAA,sCAAwB,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,YAAY,MAAM,CAAC,CAAC;QAEzF,OAAO;YACH,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,cAAc;SACjB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,OAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACxC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;;AA/EL,sBAgFC;AAED,MAAa,cAAe,SAAQ,0BAA2C;IAC3E,YAAY,MAAyB,EAAE,UAAmB,EAAE,KAAa;QACrE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IACD,eAAe;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,gBAAgB;QAClB,gDAAgD;QAChD,OAAO,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAW,CAAC,CAAA;IACvE,CAAC;IAID,KAAK,CAAC,eAAe,CAAC,YAAuB;QACzC,+CAA+C;QAC/C,OAAO,MAAM,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,UAAW,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,CAAC,aAAa;QACf,uCAAuC;QACvC,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAW,CAAC,CAAA;QACnE,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,WAAW;QACb,qCAAqC;QACrC,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAe,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAW,CAAC,CAAA;QAClE,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAa,EAAE,MAAc;QAC9C,uCAAuC;QACvC,MAAM,WAAW,GAAG,MAAM,IAAA,oCAA4B,EAClD,IAAI,CAAC,UAAU,EACf,EAAE,EACF,MAAM,EACN,IAAI,CAAC,UAAW,CACnB,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAC3C,WAAW,EACX,IAAI,CAAC,UAAW,EAChB,IAAI,CAAC,UAAU,CAClB,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAgB,EAAE,EAAa,EAAE,MAAc;QAC/D,sCAAsC;QACtC,MAAM,WAAW,GAAG,MAAM,IAAA,mCAA2B,EACjD,IAAI,CAAC,UAAU,EACf,IAAI,mBAAS,CAAC,EAAE,CAAC,EACjB,KAAK,EACL,MAAM,EACN,IAAI,CAAC,UAAW,CACnB,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAC3C,WAAW,EACX,IAAI,CAAC,UAAW,EAChB,IAAI,CAAC,UAAU,CAClB,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAA+C;QACjE,OAAO,MAAM,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAA+C;QACjE,OAAO,MAAM,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,UAAW,CAAC,CAAA;IACrE,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,WAA+C;QACxE,OAAO,MAAM,KAAK,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,qBAAqB;QACvB,MAAM,OAAO,GAAG,MAAM,IAAA,6CAAwB,EAAC,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/E,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAuB;QACtC,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAW,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,cAAwB;QACpC,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAW,EAAC;YAC7B,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,cAAc;SACjB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,MAAM,CAAC,IAAqB,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAoB,EAAE,OAAkB,EAAE,MAAc,EAAE,WAAmB,EAAE;QACtF,IAAI,CAAC;YACD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBACd,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,+BAA+B;iBACzC,CAAC;YACN,CAAC;YAED,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;gBAClC,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,0DAA0D;iBACpE,CAAC;YACN,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,mBAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,OAAO,CAAC;YAE5B,kDAAkD;YAClD,gCAAgC;YAChC,6BAA6B;YAC7B,KAAK;YAEL,2BAA2B;YAC3B,eAAe;YACf,0BAA0B;YAC1B,oBAAoB;YACpB,iEAAiE;YACjE,SAAS;YACT,IAAI;YAEJ,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEnE,6DAA6D;YAC7D,gDAAgD;YAChD,eAAe;YACf,0BAA0B;YAC1B,oBAAoB;YACpB,iDAAiD;YACjD,SAAS;YACT,IAAI;YAEJ,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAkB,EACvC;gBACI,SAAS,EAAE,aAAa;gBACxB,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,UAAU;gBAClB,WAAW,EAAE,QAAQ;gBACrB,aAAa,EAAE,IAAI,CAAC,OAAO;aAC9B,EACD,IAAI,CAAC,UAAW,EAChB,IAAI,CAAC,UAAU,CAClB,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,aAAa;iBAC3C,CAAC;YACN,CAAC;YAED,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE;aAC9B,CAAC;QAEN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACpC,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B;aAChF,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAoB,EAAE,OAAkB,EAAE,MAAc,EAAE,WAAmB,EAAE;QAS9F,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,IAAI,mBAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEnE,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAe,EAC/B,aAAa,CAAC,QAAQ,EAAE,EACxB,OAAO,CAAC,QAAQ,EAAE,EAClB,UAAU,EACV,QAAQ,CACX,CAAC;YAEF,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,KAAK,CAAC,QAAQ;gBAC3B,YAAY,EAAE,KAAK,CAAC,SAAS;gBAC7B,WAAW,EAAE,KAAK,CAAC,cAAc;gBACjC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;aACjC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B;aAC7E,CAAC;QACN,CAAC;IACL,CAAC;IACD,WAAW,GAAG,CAAC,OAAgC,EAAG,EAAE;QAChD,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzE,OAAO,SAAS,CAAA;IACpB,CAAC,CAAC;CACL;AAhOD,wCAgOC"}
|
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 = "
|
|
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
|
|
19
|
-
const
|
|
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://
|
|
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
|
-
|
|
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
|
-
//
|
|
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;
|
|
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
|
}
|