@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.
- package/.claude/settings.local.json +7 -1
- package/dist/IChainWallet.d.ts +3 -3
- package/dist/constant.js +60 -16
- package/dist/constant.js.map +1 -1
- package/dist/evm/aa-service/index.d.ts +2 -2
- package/dist/evm/aa-service/index.js +1 -3
- package/dist/evm/aa-service/index.js.map +1 -1
- package/dist/evm/aa-service/lib/kernel-account.d.ts +2 -44
- package/dist/evm/aa-service/lib/kernel-account.js +42 -93
- 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 +18 -1
- package/dist/evm/aa-service/lib/type.js.map +1 -1
- package/dist/evm/aa-service/services/account-abstraction.d.ts +7 -29
- package/dist/evm/aa-service/services/account-abstraction.js +12 -68
- package/dist/evm/aa-service/services/account-abstraction.js.map +1 -1
- package/dist/evm/aa-service/services/bundler.d.ts +4 -1
- package/dist/evm/aa-service/services/bundler.js +41 -7
- package/dist/evm/aa-service/services/bundler.js.map +1 -1
- package/dist/evm/evm.d.ts +164 -14
- package/dist/evm/evm.js +259 -80
- package/dist/evm/evm.js.map +1 -1
- package/dist/evm/smartWallet.d.ts +12 -61
- package/dist/evm/smartWallet.js +143 -184
- package/dist/evm/smartWallet.js.map +1 -1
- package/dist/evm/utils.js +1 -1
- package/dist/evm/utils.js.map +1 -1
- package/dist/helpers/index.d.ts +6 -1
- package/dist/helpers/index.js +116 -0
- package/dist/helpers/index.js.map +1 -1
- 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 +19 -3
- package/dist/svm/svm.js +29 -17
- package/dist/svm/svm.js.map +1 -1
- package/dist/svm/utils.d.ts +2 -2
- package/dist/svm/utils.js +4 -4
- package/dist/svm/utils.js.map +1 -1
- package/dist/test.js +81 -22
- package/dist/test.js.map +1 -1
- package/dist/types.d.ts +14 -16
- package/dist/types.js.map +1 -1
- package/dist/vm.d.ts +14 -0
- package/dist/vm.js.map +1 -1
- package/package.json +6 -1
- package/utils/IChainWallet.ts +3 -3
- package/utils/constant.ts +63 -16
- package/utils/evm/aa-service/index.ts +1 -3
- package/utils/evm/aa-service/lib/kernel-account.ts +45 -136
- package/utils/evm/aa-service/lib/session-keys.ts +58 -60
- package/utils/evm/aa-service/lib/type.ts +19 -1
- package/utils/evm/aa-service/services/account-abstraction.ts +24 -76
- package/utils/evm/aa-service/services/bundler.ts +54 -11
- package/utils/evm/evm.ts +313 -110
- package/utils/evm/smartWallet.ts +124 -214
- package/utils/evm/utils.ts +2 -1
- package/utils/helpers/index.ts +138 -1
- 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 +34 -25
- package/utils/svm/utils.ts +4 -10
- package/utils/test.ts +112 -24
- package/utils/types.ts +15 -17
- 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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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)(
|
|
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;;;
|
|
1
|
+
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../../utils/evm/aa-service/services/bundler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAuOH,oDAEC;AAED,oDAmBC;AA5PD,+BAAqF;AACrF,kEAAwH;AACxH,4DAAqE;AAuBrE,+CAA+C;AAC/C,kBAAkB;AAClB,+CAA+C;AAE/C,MAAM,cAAc;IACR,MAAM,CAAS;IACf,WAAW,GAAqB,IAAI,GAAG,EAAE,CAAC;IAC1C,GAAG,CAAS;IACZ,QAAQ,CAAoB;IAEpC,YAAY,MAAc,EAAE,GAAW,EAAE,QAA2B;QAChE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,KAAY;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,GAAG,CAAA;QACnB,CAAC;QACD,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;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE7C,sDAAsD;QACtD,IAAI,iBAAgC,CAAC;QACrC,IAAI,iBAAiB,GAAkB,KAAK,CAAC;QAE7C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,6EAA6E;YAC7E,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxC,iBAAiB,GAAG,EAAE,CAAC,OAAwB,CAAC;YAChD,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,gCAAgC;YAChC,iBAAiB,GAAG,yCAAmB,CAAC;YACxC,iBAAiB,GAAG,KAAK,CAAC;QAC9B,CAAC;QAED,uEAAuE;QACvE,MAAM,UAAU,GAAG;YACf,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,iBAAiB;SAC7B,CAAC;QAEF,MAAM,eAAe,GAAG,IAAA,6BAAmB,EAAC;YACxC,SAAS,EAAE,IAAA,WAAI,EAAC,UAAU,CAAC;YAC3B,UAAU;SACb,CAAC,CAAC;QAEH,oDAAoD;QACpD,MAAM,MAAM,GAAG,IAAA,yCAAmB,EAAC;YAC/B,SAAS,EAAE,IAAA,WAAI,EAAC,UAAU,CAAC;YAC3B,KAAK;YACL,aAAa,EAAE;gBACX,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,eAAe,CAAC,wBAAwB,EAAE,CAAC,CAAC,IAAI;aAC1F;YACD,8BAA8B;SACjC,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,CACpC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EACxC,MAAM,CAAC,QAAQ,CAClB,CAAC;gBACF,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;AAxCD,wCAwCC;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"}
|
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
|
|
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
|
|
102
|
-
transferToken(tokenAddress: TokenInfo, to: string, amount: number
|
|
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
|
}
|