amped-defi 1.0.0
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/README.md +757 -0
- package/dist/__mocks__/@sodax/sdk.d.ts +24 -0
- package/dist/__mocks__/@sodax/sdk.d.ts.map +1 -0
- package/dist/__mocks__/@sodax/sdk.js +24 -0
- package/dist/__mocks__/@sodax/sdk.js.map +1 -0
- package/dist/__tests__/setup.d.ts +4 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +32 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +281 -0
- package/dist/index.js.map +1 -0
- package/dist/policy/policyEngine.d.ts +119 -0
- package/dist/policy/policyEngine.d.ts.map +1 -0
- package/dist/policy/policyEngine.js +322 -0
- package/dist/policy/policyEngine.js.map +1 -0
- package/dist/providers/spokeProviderFactory.d.ts +38 -0
- package/dist/providers/spokeProviderFactory.d.ts.map +1 -0
- package/dist/providers/spokeProviderFactory.js +212 -0
- package/dist/providers/spokeProviderFactory.js.map +1 -0
- package/dist/sodax/client.d.ts +34 -0
- package/dist/sodax/client.d.ts.map +1 -0
- package/dist/sodax/client.js +99 -0
- package/dist/sodax/client.js.map +1 -0
- package/dist/tools/bridge.d.ts +105 -0
- package/dist/tools/bridge.d.ts.map +1 -0
- package/dist/tools/bridge.js +334 -0
- package/dist/tools/bridge.js.map +1 -0
- package/dist/tools/discovery.d.ts +141 -0
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/discovery.js +777 -0
- package/dist/tools/discovery.js.map +1 -0
- package/dist/tools/moneyMarket.d.ts +227 -0
- package/dist/tools/moneyMarket.d.ts.map +1 -0
- package/dist/tools/moneyMarket.js +867 -0
- package/dist/tools/moneyMarket.js.map +1 -0
- package/dist/tools/portfolio.d.ts +43 -0
- package/dist/tools/portfolio.d.ts.map +1 -0
- package/dist/tools/portfolio.js +538 -0
- package/dist/tools/portfolio.js.map +1 -0
- package/dist/tools/swap.d.ts +71 -0
- package/dist/tools/swap.d.ts.map +1 -0
- package/dist/tools/swap.js +762 -0
- package/dist/tools/swap.js.map +1 -0
- package/dist/tools/walletManagement.d.ts +80 -0
- package/dist/tools/walletManagement.d.ts.map +1 -0
- package/dist/tools/walletManagement.js +289 -0
- package/dist/tools/walletManagement.js.map +1 -0
- package/dist/types.d.ts +205 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errorUtils.d.ts +2 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +19 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/dist/utils/errors.d.ts +144 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +310 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/positionAggregator.d.ts +122 -0
- package/dist/utils/positionAggregator.d.ts.map +1 -0
- package/dist/utils/positionAggregator.js +377 -0
- package/dist/utils/positionAggregator.js.map +1 -0
- package/dist/utils/priceService.d.ts +45 -0
- package/dist/utils/priceService.d.ts.map +1 -0
- package/dist/utils/priceService.js +108 -0
- package/dist/utils/priceService.js.map +1 -0
- package/dist/utils/sodaxApi.d.ts +92 -0
- package/dist/utils/sodaxApi.d.ts.map +1 -0
- package/dist/utils/sodaxApi.js +143 -0
- package/dist/utils/sodaxApi.js.map +1 -0
- package/dist/utils/tokenResolver.d.ts +54 -0
- package/dist/utils/tokenResolver.d.ts.map +1 -0
- package/dist/utils/tokenResolver.js +252 -0
- package/dist/utils/tokenResolver.js.map +1 -0
- package/dist/wallet/backendConfig.d.ts +37 -0
- package/dist/wallet/backendConfig.d.ts.map +1 -0
- package/dist/wallet/backendConfig.js +125 -0
- package/dist/wallet/backendConfig.js.map +1 -0
- package/dist/wallet/backends/BankrBackend.d.ts +73 -0
- package/dist/wallet/backends/BankrBackend.d.ts.map +1 -0
- package/dist/wallet/backends/BankrBackend.js +315 -0
- package/dist/wallet/backends/BankrBackend.js.map +1 -0
- package/dist/wallet/backends/BankrWalletProvider.d.ts +75 -0
- package/dist/wallet/backends/BankrWalletProvider.d.ts.map +1 -0
- package/dist/wallet/backends/BankrWalletProvider.js +243 -0
- package/dist/wallet/backends/BankrWalletProvider.js.map +1 -0
- package/dist/wallet/backends/EnvBackend.d.ts +50 -0
- package/dist/wallet/backends/EnvBackend.d.ts.map +1 -0
- package/dist/wallet/backends/EnvBackend.js +114 -0
- package/dist/wallet/backends/EnvBackend.js.map +1 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.d.ts +40 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.d.ts.map +1 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.js +81 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.js.map +1 -0
- package/dist/wallet/backends/index.d.ts +10 -0
- package/dist/wallet/backends/index.d.ts.map +1 -0
- package/dist/wallet/backends/index.js +10 -0
- package/dist/wallet/backends/index.js.map +1 -0
- package/dist/wallet/index.d.ts +9 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +12 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/providers/AmpedWalletProvider.d.ts +107 -0
- package/dist/wallet/providers/AmpedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/providers/AmpedWalletProvider.js +208 -0
- package/dist/wallet/providers/AmpedWalletProvider.js.map +1 -0
- package/dist/wallet/providers/BankrBackend.d.ts +105 -0
- package/dist/wallet/providers/BankrBackend.d.ts.map +1 -0
- package/dist/wallet/providers/BankrBackend.js +327 -0
- package/dist/wallet/providers/BankrBackend.js.map +1 -0
- package/dist/wallet/providers/LocalKeyBackend.d.ts +62 -0
- package/dist/wallet/providers/LocalKeyBackend.d.ts.map +1 -0
- package/dist/wallet/providers/LocalKeyBackend.js +152 -0
- package/dist/wallet/providers/LocalKeyBackend.js.map +1 -0
- package/dist/wallet/providers/chainConfig.d.ts +209 -0
- package/dist/wallet/providers/chainConfig.d.ts.map +1 -0
- package/dist/wallet/providers/chainConfig.js +175 -0
- package/dist/wallet/providers/chainConfig.js.map +1 -0
- package/dist/wallet/providers/index.d.ts +30 -0
- package/dist/wallet/providers/index.d.ts.map +1 -0
- package/dist/wallet/providers/index.js +32 -0
- package/dist/wallet/providers/index.js.map +1 -0
- package/dist/wallet/providers/types.d.ts +156 -0
- package/dist/wallet/providers/types.d.ts.map +1 -0
- package/dist/wallet/providers/types.js +11 -0
- package/dist/wallet/providers/types.js.map +1 -0
- package/dist/wallet/skillWalletAdapter.d.ts +96 -0
- package/dist/wallet/skillWalletAdapter.d.ts.map +1 -0
- package/dist/wallet/skillWalletAdapter.js +280 -0
- package/dist/wallet/skillWalletAdapter.js.map +1 -0
- package/dist/wallet/types.d.ts +134 -0
- package/dist/wallet/types.d.ts.map +1 -0
- package/dist/wallet/types.js +138 -0
- package/dist/wallet/types.js.map +1 -0
- package/dist/wallet/walletManager.d.ts +111 -0
- package/dist/wallet/walletManager.d.ts.map +1 -0
- package/dist/wallet/walletManager.js +476 -0
- package/dist/wallet/walletManager.js.map +1 -0
- package/dist/wallet/walletRegistry.d.ts +95 -0
- package/dist/wallet/walletRegistry.d.ts.map +1 -0
- package/dist/wallet/walletRegistry.js +184 -0
- package/dist/wallet/walletRegistry.js.map +1 -0
- package/index.js +2 -0
- package/openclaw.plugin.json +37 -0
- package/package.json +69 -0
- package/src/__mocks__/@sodax/sdk.ts +28 -0
- package/src/__tests__/errors.test.ts +238 -0
- package/src/__tests__/policyEngine.test.ts +354 -0
- package/src/__tests__/positionAggregator.test.ts +271 -0
- package/src/__tests__/setup.ts +35 -0
- package/src/__tests__/sodaxApi.test.ts +203 -0
- package/src/__tests__/walletRegistry.test.ts +155 -0
- package/src/index.ts +376 -0
- package/src/policy/policyEngine.ts +389 -0
- package/src/providers/spokeProviderFactory.ts +283 -0
- package/src/sodax/client.ts +113 -0
- package/src/tools/bridge.ts +425 -0
- package/src/tools/discovery.ts +989 -0
- package/src/tools/moneyMarket.ts +1265 -0
- package/src/tools/portfolio.ts +697 -0
- package/src/tools/swap.ts +926 -0
- package/src/tools/walletManagement.ts +359 -0
- package/src/types.ts +228 -0
- package/src/utils/errorUtils.ts +16 -0
- package/src/utils/errors.ts +396 -0
- package/src/utils/positionAggregator.ts +559 -0
- package/src/utils/priceService.ts +153 -0
- package/src/utils/sodaxApi.ts +261 -0
- package/src/utils/tokenResolver.ts +286 -0
- package/src/wallet/backendConfig.ts +151 -0
- package/src/wallet/backends/BankrBackend.ts +399 -0
- package/src/wallet/backends/BankrWalletProvider.ts +329 -0
- package/src/wallet/backends/EnvBackend.ts +149 -0
- package/src/wallet/backends/EvmWalletSkillBackend.ts +110 -0
- package/src/wallet/backends/index.ts +10 -0
- package/src/wallet/index.ts +14 -0
- package/src/wallet/providers/AmpedWalletProvider.ts +267 -0
- package/src/wallet/providers/BankrBackend.ts +407 -0
- package/src/wallet/providers/LocalKeyBackend.ts +184 -0
- package/src/wallet/providers/chainConfig.ts +194 -0
- package/src/wallet/providers/index.ts +62 -0
- package/src/wallet/providers/types.ts +186 -0
- package/src/wallet/skillWalletAdapter.ts +335 -0
- package/src/wallet/types.ts +248 -0
- package/src/wallet/walletManager.ts +561 -0
- package/src/wallet/walletRegistry.ts +216 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wallet Registry
|
|
3
|
+
*
|
|
4
|
+
* Manages wallet resolution by walletId.
|
|
5
|
+
* Supports execution mode (with private key) and prepare mode (address-only).
|
|
6
|
+
*
|
|
7
|
+
* Now integrates with evm-wallet-skill for seamless wallet configuration.
|
|
8
|
+
* @see https://github.com/surfer77/evm-wallet-skill
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { WalletConfig } from '../types';
|
|
12
|
+
import { EvmWalletSkillAdapter, getWalletAdapter } from './skillWalletAdapter';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Wallet registry entry
|
|
16
|
+
*/
|
|
17
|
+
interface WalletEntry extends WalletConfig {
|
|
18
|
+
mode: 'execute' | 'prepare';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Wallet Registry class for resolving wallet configurations
|
|
23
|
+
*/
|
|
24
|
+
export class WalletRegistry {
|
|
25
|
+
private wallets: Map<string, WalletEntry>;
|
|
26
|
+
private skillAdapter: EvmWalletSkillAdapter;
|
|
27
|
+
|
|
28
|
+
constructor() {
|
|
29
|
+
this.skillAdapter = getWalletAdapter();
|
|
30
|
+
this.wallets = this.loadWallets();
|
|
31
|
+
|
|
32
|
+
// Log skill adapter status
|
|
33
|
+
if (this.skillAdapter.isUsingSkillWallets()) {
|
|
34
|
+
console.log('[walletRegistry] evm-wallet-skill integration active');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Load wallet configurations from environment
|
|
40
|
+
*
|
|
41
|
+
* @returns Map of walletId to wallet entry
|
|
42
|
+
*/
|
|
43
|
+
private loadWallets(): Map<string, WalletEntry> {
|
|
44
|
+
const walletsJson = process.env.AMPED_OC_WALLETS_JSON;
|
|
45
|
+
const mode = (process.env.AMPED_OC_MODE as 'execute' | 'prepare') || 'execute';
|
|
46
|
+
|
|
47
|
+
if (!walletsJson) {
|
|
48
|
+
console.warn('[walletRegistry] AMPED_OC_WALLETS_JSON not set');
|
|
49
|
+
return new Map();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
const walletConfigs = JSON.parse(walletsJson) as Record<string, WalletConfig>;
|
|
54
|
+
const wallets = new Map<string, WalletEntry>();
|
|
55
|
+
|
|
56
|
+
for (const [walletId, config] of Object.entries(walletConfigs)) {
|
|
57
|
+
wallets.set(walletId, {
|
|
58
|
+
...config,
|
|
59
|
+
mode,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
console.log(`[walletRegistry] Loaded ${wallets.size} wallet(s) in ${mode} mode`);
|
|
64
|
+
return wallets;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.error('[walletRegistry] Failed to parse AMPED_OC_WALLETS_JSON', error);
|
|
67
|
+
return new Map();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Get a wallet by its ID (synchronous version)
|
|
73
|
+
* Only checks local registry, not skill adapter
|
|
74
|
+
*
|
|
75
|
+
* @param walletId - The wallet identifier
|
|
76
|
+
* @returns The wallet configuration or null if not found
|
|
77
|
+
*/
|
|
78
|
+
getWallet(walletId: string): WalletEntry | null {
|
|
79
|
+
const wallet = this.wallets.get(walletId);
|
|
80
|
+
if (wallet) {
|
|
81
|
+
return this.validateWallet(wallet, walletId);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
console.error(`[walletRegistry] Wallet not found: ${walletId}`);
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Resolve a wallet by its ID (async version)
|
|
90
|
+
* Checks local registry first, then tries skill adapter
|
|
91
|
+
*
|
|
92
|
+
* @param walletId - The wallet identifier
|
|
93
|
+
* @returns The wallet configuration or null if not found
|
|
94
|
+
*/
|
|
95
|
+
async resolveWallet(walletId: string): Promise<WalletEntry | null> {
|
|
96
|
+
// Try local registry first (synchronous)
|
|
97
|
+
const wallet = this.getWallet(walletId);
|
|
98
|
+
if (wallet) {
|
|
99
|
+
return wallet;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Try skill adapter (includes ~/.evm-wallet.json)
|
|
103
|
+
if (this.skillAdapter.isUsingSkillWallets()) {
|
|
104
|
+
try {
|
|
105
|
+
const config = await this.skillAdapter.getWalletConfig(walletId);
|
|
106
|
+
const mode = this.getMode();
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
address: config.address,
|
|
110
|
+
privateKey: config.privateKey,
|
|
111
|
+
mode,
|
|
112
|
+
};
|
|
113
|
+
} catch (error) {
|
|
114
|
+
console.error(`[walletRegistry] Skill wallet resolution failed: ${error}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
console.error(`[walletRegistry] Wallet not found: ${walletId}`);
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Validate a wallet entry
|
|
124
|
+
*/
|
|
125
|
+
private validateWallet(wallet: WalletEntry, walletId: string): WalletEntry | null {
|
|
126
|
+
// In execute mode, validate that private key is present
|
|
127
|
+
if (wallet.mode === 'execute' && !wallet.privateKey) {
|
|
128
|
+
console.error(`[walletRegistry] Wallet ${walletId} missing privateKey in execute mode`);
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Validate address format (basic check)
|
|
133
|
+
if (!wallet.address || !wallet.address.startsWith('0x')) {
|
|
134
|
+
console.error(`[walletRegistry] Wallet ${walletId} has invalid address: ${wallet.address}`);
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return wallet;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Get the wallet mode (execute or prepare)
|
|
143
|
+
*
|
|
144
|
+
* @returns The current wallet mode
|
|
145
|
+
*/
|
|
146
|
+
getMode(): 'execute' | 'prepare' {
|
|
147
|
+
return (process.env.AMPED_OC_MODE as 'execute' | 'prepare') || 'execute';
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Check if running in execute mode
|
|
152
|
+
*
|
|
153
|
+
* @returns True if in execute mode
|
|
154
|
+
*/
|
|
155
|
+
isExecuteMode(): boolean {
|
|
156
|
+
return this.getMode() === 'execute';
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Check if running in prepare mode
|
|
161
|
+
*
|
|
162
|
+
* @returns True if in prepare mode
|
|
163
|
+
*/
|
|
164
|
+
isPrepareMode(): boolean {
|
|
165
|
+
return this.getMode() === 'prepare';
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Get all registered wallet IDs (local + skill)
|
|
170
|
+
*
|
|
171
|
+
* @returns Array of wallet IDs
|
|
172
|
+
*/
|
|
173
|
+
getWalletIds(): string[] {
|
|
174
|
+
const localIds = Array.from(this.wallets.keys());
|
|
175
|
+
const skillIds = this.skillAdapter.getWalletIds();
|
|
176
|
+
// Merge unique IDs
|
|
177
|
+
return [...new Set([...localIds, ...skillIds])];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Get the count of registered wallets (local + skill)
|
|
182
|
+
*
|
|
183
|
+
* @returns Number of wallets
|
|
184
|
+
*/
|
|
185
|
+
getWalletCount(): number {
|
|
186
|
+
return this.getWalletIds().length;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Reload wallets from environment (useful for hot-reloading)
|
|
191
|
+
*/
|
|
192
|
+
reload(): void {
|
|
193
|
+
this.wallets = this.loadWallets();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Singleton instance
|
|
198
|
+
let walletRegistryInstance: WalletRegistry | null = null;
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Get the singleton wallet registry instance
|
|
202
|
+
* @returns The WalletRegistry singleton
|
|
203
|
+
*/
|
|
204
|
+
export function getWalletRegistry(): WalletRegistry {
|
|
205
|
+
if (!walletRegistryInstance) {
|
|
206
|
+
walletRegistryInstance = new WalletRegistry();
|
|
207
|
+
}
|
|
208
|
+
return walletRegistryInstance;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Reset the wallet registry (useful for testing)
|
|
213
|
+
*/
|
|
214
|
+
export function resetWalletRegistry(): void {
|
|
215
|
+
walletRegistryInstance = null;
|
|
216
|
+
}
|