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.
Files changed (189) hide show
  1. package/README.md +757 -0
  2. package/dist/__mocks__/@sodax/sdk.d.ts +24 -0
  3. package/dist/__mocks__/@sodax/sdk.d.ts.map +1 -0
  4. package/dist/__mocks__/@sodax/sdk.js +24 -0
  5. package/dist/__mocks__/@sodax/sdk.js.map +1 -0
  6. package/dist/__tests__/setup.d.ts +4 -0
  7. package/dist/__tests__/setup.d.ts.map +1 -0
  8. package/dist/__tests__/setup.js +32 -0
  9. package/dist/__tests__/setup.js.map +1 -0
  10. package/dist/index.d.ts +66 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +281 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/policy/policyEngine.d.ts +119 -0
  15. package/dist/policy/policyEngine.d.ts.map +1 -0
  16. package/dist/policy/policyEngine.js +322 -0
  17. package/dist/policy/policyEngine.js.map +1 -0
  18. package/dist/providers/spokeProviderFactory.d.ts +38 -0
  19. package/dist/providers/spokeProviderFactory.d.ts.map +1 -0
  20. package/dist/providers/spokeProviderFactory.js +212 -0
  21. package/dist/providers/spokeProviderFactory.js.map +1 -0
  22. package/dist/sodax/client.d.ts +34 -0
  23. package/dist/sodax/client.d.ts.map +1 -0
  24. package/dist/sodax/client.js +99 -0
  25. package/dist/sodax/client.js.map +1 -0
  26. package/dist/tools/bridge.d.ts +105 -0
  27. package/dist/tools/bridge.d.ts.map +1 -0
  28. package/dist/tools/bridge.js +334 -0
  29. package/dist/tools/bridge.js.map +1 -0
  30. package/dist/tools/discovery.d.ts +141 -0
  31. package/dist/tools/discovery.d.ts.map +1 -0
  32. package/dist/tools/discovery.js +777 -0
  33. package/dist/tools/discovery.js.map +1 -0
  34. package/dist/tools/moneyMarket.d.ts +227 -0
  35. package/dist/tools/moneyMarket.d.ts.map +1 -0
  36. package/dist/tools/moneyMarket.js +867 -0
  37. package/dist/tools/moneyMarket.js.map +1 -0
  38. package/dist/tools/portfolio.d.ts +43 -0
  39. package/dist/tools/portfolio.d.ts.map +1 -0
  40. package/dist/tools/portfolio.js +538 -0
  41. package/dist/tools/portfolio.js.map +1 -0
  42. package/dist/tools/swap.d.ts +71 -0
  43. package/dist/tools/swap.d.ts.map +1 -0
  44. package/dist/tools/swap.js +762 -0
  45. package/dist/tools/swap.js.map +1 -0
  46. package/dist/tools/walletManagement.d.ts +80 -0
  47. package/dist/tools/walletManagement.d.ts.map +1 -0
  48. package/dist/tools/walletManagement.js +289 -0
  49. package/dist/tools/walletManagement.js.map +1 -0
  50. package/dist/types.d.ts +205 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +5 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/utils/errorUtils.d.ts +2 -0
  55. package/dist/utils/errorUtils.d.ts.map +1 -0
  56. package/dist/utils/errorUtils.js +19 -0
  57. package/dist/utils/errorUtils.js.map +1 -0
  58. package/dist/utils/errors.d.ts +144 -0
  59. package/dist/utils/errors.d.ts.map +1 -0
  60. package/dist/utils/errors.js +310 -0
  61. package/dist/utils/errors.js.map +1 -0
  62. package/dist/utils/positionAggregator.d.ts +122 -0
  63. package/dist/utils/positionAggregator.d.ts.map +1 -0
  64. package/dist/utils/positionAggregator.js +377 -0
  65. package/dist/utils/positionAggregator.js.map +1 -0
  66. package/dist/utils/priceService.d.ts +45 -0
  67. package/dist/utils/priceService.d.ts.map +1 -0
  68. package/dist/utils/priceService.js +108 -0
  69. package/dist/utils/priceService.js.map +1 -0
  70. package/dist/utils/sodaxApi.d.ts +92 -0
  71. package/dist/utils/sodaxApi.d.ts.map +1 -0
  72. package/dist/utils/sodaxApi.js +143 -0
  73. package/dist/utils/sodaxApi.js.map +1 -0
  74. package/dist/utils/tokenResolver.d.ts +54 -0
  75. package/dist/utils/tokenResolver.d.ts.map +1 -0
  76. package/dist/utils/tokenResolver.js +252 -0
  77. package/dist/utils/tokenResolver.js.map +1 -0
  78. package/dist/wallet/backendConfig.d.ts +37 -0
  79. package/dist/wallet/backendConfig.d.ts.map +1 -0
  80. package/dist/wallet/backendConfig.js +125 -0
  81. package/dist/wallet/backendConfig.js.map +1 -0
  82. package/dist/wallet/backends/BankrBackend.d.ts +73 -0
  83. package/dist/wallet/backends/BankrBackend.d.ts.map +1 -0
  84. package/dist/wallet/backends/BankrBackend.js +315 -0
  85. package/dist/wallet/backends/BankrBackend.js.map +1 -0
  86. package/dist/wallet/backends/BankrWalletProvider.d.ts +75 -0
  87. package/dist/wallet/backends/BankrWalletProvider.d.ts.map +1 -0
  88. package/dist/wallet/backends/BankrWalletProvider.js +243 -0
  89. package/dist/wallet/backends/BankrWalletProvider.js.map +1 -0
  90. package/dist/wallet/backends/EnvBackend.d.ts +50 -0
  91. package/dist/wallet/backends/EnvBackend.d.ts.map +1 -0
  92. package/dist/wallet/backends/EnvBackend.js +114 -0
  93. package/dist/wallet/backends/EnvBackend.js.map +1 -0
  94. package/dist/wallet/backends/EvmWalletSkillBackend.d.ts +40 -0
  95. package/dist/wallet/backends/EvmWalletSkillBackend.d.ts.map +1 -0
  96. package/dist/wallet/backends/EvmWalletSkillBackend.js +81 -0
  97. package/dist/wallet/backends/EvmWalletSkillBackend.js.map +1 -0
  98. package/dist/wallet/backends/index.d.ts +10 -0
  99. package/dist/wallet/backends/index.d.ts.map +1 -0
  100. package/dist/wallet/backends/index.js +10 -0
  101. package/dist/wallet/backends/index.js.map +1 -0
  102. package/dist/wallet/index.d.ts +9 -0
  103. package/dist/wallet/index.d.ts.map +1 -0
  104. package/dist/wallet/index.js +12 -0
  105. package/dist/wallet/index.js.map +1 -0
  106. package/dist/wallet/providers/AmpedWalletProvider.d.ts +107 -0
  107. package/dist/wallet/providers/AmpedWalletProvider.d.ts.map +1 -0
  108. package/dist/wallet/providers/AmpedWalletProvider.js +208 -0
  109. package/dist/wallet/providers/AmpedWalletProvider.js.map +1 -0
  110. package/dist/wallet/providers/BankrBackend.d.ts +105 -0
  111. package/dist/wallet/providers/BankrBackend.d.ts.map +1 -0
  112. package/dist/wallet/providers/BankrBackend.js +327 -0
  113. package/dist/wallet/providers/BankrBackend.js.map +1 -0
  114. package/dist/wallet/providers/LocalKeyBackend.d.ts +62 -0
  115. package/dist/wallet/providers/LocalKeyBackend.d.ts.map +1 -0
  116. package/dist/wallet/providers/LocalKeyBackend.js +152 -0
  117. package/dist/wallet/providers/LocalKeyBackend.js.map +1 -0
  118. package/dist/wallet/providers/chainConfig.d.ts +209 -0
  119. package/dist/wallet/providers/chainConfig.d.ts.map +1 -0
  120. package/dist/wallet/providers/chainConfig.js +175 -0
  121. package/dist/wallet/providers/chainConfig.js.map +1 -0
  122. package/dist/wallet/providers/index.d.ts +30 -0
  123. package/dist/wallet/providers/index.d.ts.map +1 -0
  124. package/dist/wallet/providers/index.js +32 -0
  125. package/dist/wallet/providers/index.js.map +1 -0
  126. package/dist/wallet/providers/types.d.ts +156 -0
  127. package/dist/wallet/providers/types.d.ts.map +1 -0
  128. package/dist/wallet/providers/types.js +11 -0
  129. package/dist/wallet/providers/types.js.map +1 -0
  130. package/dist/wallet/skillWalletAdapter.d.ts +96 -0
  131. package/dist/wallet/skillWalletAdapter.d.ts.map +1 -0
  132. package/dist/wallet/skillWalletAdapter.js +280 -0
  133. package/dist/wallet/skillWalletAdapter.js.map +1 -0
  134. package/dist/wallet/types.d.ts +134 -0
  135. package/dist/wallet/types.d.ts.map +1 -0
  136. package/dist/wallet/types.js +138 -0
  137. package/dist/wallet/types.js.map +1 -0
  138. package/dist/wallet/walletManager.d.ts +111 -0
  139. package/dist/wallet/walletManager.d.ts.map +1 -0
  140. package/dist/wallet/walletManager.js +476 -0
  141. package/dist/wallet/walletManager.js.map +1 -0
  142. package/dist/wallet/walletRegistry.d.ts +95 -0
  143. package/dist/wallet/walletRegistry.d.ts.map +1 -0
  144. package/dist/wallet/walletRegistry.js +184 -0
  145. package/dist/wallet/walletRegistry.js.map +1 -0
  146. package/index.js +2 -0
  147. package/openclaw.plugin.json +37 -0
  148. package/package.json +69 -0
  149. package/src/__mocks__/@sodax/sdk.ts +28 -0
  150. package/src/__tests__/errors.test.ts +238 -0
  151. package/src/__tests__/policyEngine.test.ts +354 -0
  152. package/src/__tests__/positionAggregator.test.ts +271 -0
  153. package/src/__tests__/setup.ts +35 -0
  154. package/src/__tests__/sodaxApi.test.ts +203 -0
  155. package/src/__tests__/walletRegistry.test.ts +155 -0
  156. package/src/index.ts +376 -0
  157. package/src/policy/policyEngine.ts +389 -0
  158. package/src/providers/spokeProviderFactory.ts +283 -0
  159. package/src/sodax/client.ts +113 -0
  160. package/src/tools/bridge.ts +425 -0
  161. package/src/tools/discovery.ts +989 -0
  162. package/src/tools/moneyMarket.ts +1265 -0
  163. package/src/tools/portfolio.ts +697 -0
  164. package/src/tools/swap.ts +926 -0
  165. package/src/tools/walletManagement.ts +359 -0
  166. package/src/types.ts +228 -0
  167. package/src/utils/errorUtils.ts +16 -0
  168. package/src/utils/errors.ts +396 -0
  169. package/src/utils/positionAggregator.ts +559 -0
  170. package/src/utils/priceService.ts +153 -0
  171. package/src/utils/sodaxApi.ts +261 -0
  172. package/src/utils/tokenResolver.ts +286 -0
  173. package/src/wallet/backendConfig.ts +151 -0
  174. package/src/wallet/backends/BankrBackend.ts +399 -0
  175. package/src/wallet/backends/BankrWalletProvider.ts +329 -0
  176. package/src/wallet/backends/EnvBackend.ts +149 -0
  177. package/src/wallet/backends/EvmWalletSkillBackend.ts +110 -0
  178. package/src/wallet/backends/index.ts +10 -0
  179. package/src/wallet/index.ts +14 -0
  180. package/src/wallet/providers/AmpedWalletProvider.ts +267 -0
  181. package/src/wallet/providers/BankrBackend.ts +407 -0
  182. package/src/wallet/providers/LocalKeyBackend.ts +184 -0
  183. package/src/wallet/providers/chainConfig.ts +194 -0
  184. package/src/wallet/providers/index.ts +62 -0
  185. package/src/wallet/providers/types.ts +186 -0
  186. package/src/wallet/skillWalletAdapter.ts +335 -0
  187. package/src/wallet/types.ts +248 -0
  188. package/src/wallet/walletManager.ts +561 -0
  189. package/src/wallet/walletRegistry.ts +216 -0
@@ -0,0 +1,96 @@
1
+ /**
2
+ * EVM Wallet Skill Adapter
3
+ *
4
+ * Integrates with the evm-wallet-skill to reuse existing wallet configuration
5
+ * instead of requiring custom AMPED_OC_WALLETS_JSON.
6
+ *
7
+ * Supports multiple wallet sources:
8
+ * - ~/.evm-wallet.json (evm-wallet-skill default location)
9
+ * - EVM_WALLETS_JSON environment variable
10
+ * - WALLET_CONFIG_JSON environment variable
11
+ *
12
+ * @see https://github.com/surfer77/evm-wallet-skill
13
+ */
14
+ /**
15
+ * Wallet information from evm-wallet-skill
16
+ */
17
+ export interface EvmWalletInfo {
18
+ id: string;
19
+ address: string;
20
+ chainId?: number;
21
+ provider?: 'privateKey' | 'kms' | 'hardware' | 'web3Auth';
22
+ }
23
+ /**
24
+ * Wallet adapter options
25
+ */
26
+ export interface WalletAdapterOptions {
27
+ preferSkill?: boolean;
28
+ walletId?: string;
29
+ }
30
+ /**
31
+ * EVM Wallet Skill Adapter
32
+ */
33
+ export declare class EvmWalletSkillAdapter {
34
+ private skillWallets;
35
+ private skillRpcs;
36
+ private useSkill;
37
+ constructor(options?: WalletAdapterOptions);
38
+ /**
39
+ * Load configuration from evm-wallet-skill
40
+ * Checks multiple sources in order:
41
+ * 1. ~/.evm-wallet.json (evm-wallet-skill default)
42
+ * 2. EVM_WALLETS_JSON environment variable
43
+ * 3. WALLET_CONFIG_JSON environment variable
44
+ */
45
+ private loadSkillConfig;
46
+ /**
47
+ * Load wallet from ~/.evm-wallet.json (evm-wallet-skill format)
48
+ */
49
+ private loadEvmWalletFile;
50
+ /**
51
+ * Load wallets from environment variables
52
+ */
53
+ private loadEnvWallets;
54
+ /**
55
+ * Load RPC URLs - uses defaults, then overrides with environment variables
56
+ */
57
+ private loadEnvRpcs;
58
+ /**
59
+ * Get wallet address - tries skill first, then legacy config
60
+ */
61
+ getWalletAddress(walletId?: string): Promise<string>;
62
+ /**
63
+ * Get wallet private key - for signing transactions
64
+ */
65
+ getPrivateKey(walletId?: string): Promise<string | null>;
66
+ /**
67
+ * Get full wallet config (address + privateKey if available)
68
+ */
69
+ getWalletConfig(walletId?: string): Promise<{
70
+ address: string;
71
+ privateKey?: string;
72
+ }>;
73
+ /**
74
+ * Get RPC URL - tries skill first, then legacy config
75
+ */
76
+ getRpcUrl(chainId: string | number): Promise<string>;
77
+ /**
78
+ * Check if using skill wallets
79
+ */
80
+ isUsingSkillWallets(): boolean;
81
+ /**
82
+ * Check if using skill RPCs
83
+ */
84
+ isUsingSkillRpcs(): boolean;
85
+ /**
86
+ * Get all skill wallet IDs
87
+ */
88
+ getWalletIds(): string[];
89
+ /**
90
+ * Get all skill RPC chain IDs
91
+ */
92
+ getRpcChainIds(): string[];
93
+ }
94
+ export declare function getWalletAdapter(options?: WalletAdapterOptions): EvmWalletSkillAdapter;
95
+ export declare function resetWalletAdapter(): void;
96
+ //# sourceMappingURL=skillWalletAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillWalletAdapter.d.ts","sourceRoot":"","sources":["../../src/wallet/skillWalletAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoCH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAAU;gBAEd,OAAO,GAAE,oBAAyB;IAO9C;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkCtB;;OAEG;IACH,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB1D;;OAEG;IACG,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqB9D;;OAEG;IACG,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAM3F;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB1D;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAG3B;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,qBAAqB,CAKtF;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * EVM Wallet Skill Adapter
3
+ *
4
+ * Integrates with the evm-wallet-skill to reuse existing wallet configuration
5
+ * instead of requiring custom AMPED_OC_WALLETS_JSON.
6
+ *
7
+ * Supports multiple wallet sources:
8
+ * - ~/.evm-wallet.json (evm-wallet-skill default location)
9
+ * - EVM_WALLETS_JSON environment variable
10
+ * - WALLET_CONFIG_JSON environment variable
11
+ *
12
+ * @see https://github.com/surfer77/evm-wallet-skill
13
+ */
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+ import * as os from 'os';
17
+ import { ErrorCode, AmpedDefiError } from '../utils/errors';
18
+ import { normalizeChainId } from './types';
19
+ // Try to import viem for address derivation
20
+ let privateKeyToAccount = null;
21
+ try {
22
+ const viem = require('viem/accounts');
23
+ privateKeyToAccount = viem.privateKeyToAccount;
24
+ }
25
+ catch {
26
+ // viem not available, will use address from config
27
+ }
28
+ /**
29
+ * FALLBACK RPC URLs - primary RPCs come from evm-wallet-skill
30
+ * These are only used when evm-wallet-skill does not provide an RPC
31
+ */
32
+ const FALLBACK_RPCS = {
33
+ // SODAX supported spoke chains
34
+ ethereum: 'https://ethereum.publicnode.com',
35
+ arbitrum: 'https://arb1.arbitrum.io/rpc',
36
+ base: 'https://mainnet.base.org',
37
+ optimism: 'https://mainnet.optimism.io',
38
+ avalanche: 'https://api.avax.network/ext/bc/C/rpc',
39
+ bsc: 'https://bsc-dataseed.binance.org',
40
+ polygon: 'https://polygon-bor-rpc.publicnode.com',
41
+ // Sonic hub chain
42
+ sonic: 'https://rpc.soniclabs.com',
43
+ // Additional chains (may not be SODAX-supported but useful)
44
+ lightlink: 'https://replicator.phoenix.lightlink.io/rpc/v1',
45
+ };
46
+ /**
47
+ * EVM Wallet Skill Adapter
48
+ */
49
+ export class EvmWalletSkillAdapter {
50
+ skillWallets = new Map();
51
+ skillRpcs = new Map();
52
+ useSkill;
53
+ constructor(options = {}) {
54
+ this.useSkill = options.preferSkill !== false;
55
+ if (this.useSkill) {
56
+ this.loadSkillConfig();
57
+ }
58
+ }
59
+ /**
60
+ * Load configuration from evm-wallet-skill
61
+ * Checks multiple sources in order:
62
+ * 1. ~/.evm-wallet.json (evm-wallet-skill default)
63
+ * 2. EVM_WALLETS_JSON environment variable
64
+ * 3. WALLET_CONFIG_JSON environment variable
65
+ */
66
+ loadSkillConfig() {
67
+ // 1. Try ~/.evm-wallet.json first (evm-wallet-skill default location)
68
+ this.loadEvmWalletFile();
69
+ // 2. Try environment variables
70
+ this.loadEnvWallets();
71
+ // 3. Load RPC URLs from environment
72
+ this.loadEnvRpcs();
73
+ }
74
+ /**
75
+ * Load wallet from ~/.evm-wallet.json (evm-wallet-skill format)
76
+ */
77
+ loadEvmWalletFile() {
78
+ try {
79
+ const walletPath = path.join(os.homedir(), '.evm-wallet.json');
80
+ if (!fs.existsSync(walletPath)) {
81
+ return;
82
+ }
83
+ const content = fs.readFileSync(walletPath, 'utf-8');
84
+ const walletData = JSON.parse(content);
85
+ // evm-wallet-skill stores: { privateKey: "0x..." } or { privateKey: "0x...", address: "0x..." }
86
+ if (walletData.privateKey) {
87
+ let address = walletData.address;
88
+ // Derive address from private key if not provided
89
+ if (!address && privateKeyToAccount) {
90
+ try {
91
+ const account = privateKeyToAccount(walletData.privateKey);
92
+ address = account.address;
93
+ }
94
+ catch (e) {
95
+ console.warn('[walletAdapter] Failed to derive address from private key');
96
+ }
97
+ }
98
+ if (address) {
99
+ this.skillWallets.set('default', {
100
+ id: 'default',
101
+ address,
102
+ provider: 'privateKey',
103
+ });
104
+ // Store private key for later use
105
+ this.skillWallets.get('default').privateKey = walletData.privateKey;
106
+ console.log(`[walletAdapter] Loaded wallet from ~/.evm-wallet.json (${address.slice(0, 8)}...)`);
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ // Silently ignore - file may not exist
112
+ }
113
+ }
114
+ /**
115
+ * Load wallets from environment variables
116
+ */
117
+ loadEnvWallets() {
118
+ try {
119
+ const skillWalletsJson = process.env.EVM_WALLETS_JSON || process.env.WALLET_CONFIG_JSON;
120
+ if (skillWalletsJson) {
121
+ const wallets = JSON.parse(skillWalletsJson);
122
+ if (Array.isArray(wallets)) {
123
+ wallets.forEach(w => {
124
+ this.skillWallets.set(w.id || w.name || 'default', {
125
+ id: w.id || w.name || 'default',
126
+ address: w.address,
127
+ chainId: w.chainId,
128
+ provider: w.provider || w.type,
129
+ });
130
+ });
131
+ }
132
+ else if (typeof wallets === 'object') {
133
+ Object.entries(wallets).forEach(([id, config]) => {
134
+ this.skillWallets.set(id, {
135
+ id,
136
+ address: config.address,
137
+ chainId: config.chainId,
138
+ provider: config.provider || 'privateKey',
139
+ });
140
+ });
141
+ }
142
+ console.log(`[walletAdapter] Loaded ${this.skillWallets.size} wallets from environment`);
143
+ }
144
+ }
145
+ catch (error) {
146
+ console.warn('[walletAdapter] Failed to parse wallet environment variables:', error);
147
+ }
148
+ }
149
+ /**
150
+ * Load RPC URLs - uses defaults, then overrides with environment variables
151
+ */
152
+ loadEnvRpcs() {
153
+ // Start with default RPCs
154
+ Object.entries(FALLBACK_RPCS).forEach(([chain, url]) => {
155
+ this.skillRpcs.set(chain.toLowerCase(), url);
156
+ });
157
+ // Override with environment variables if provided
158
+ try {
159
+ const skillRpcsJson = process.env.AMPED_OC_RPC_URLS_JSON ||
160
+ process.env.EVM_RPC_URLS_JSON ||
161
+ process.env.RPC_URLS_JSON;
162
+ if (skillRpcsJson) {
163
+ const rpcs = JSON.parse(skillRpcsJson);
164
+ Object.entries(rpcs).forEach(([chain, url]) => {
165
+ this.skillRpcs.set(String(chain).toLowerCase(), url);
166
+ });
167
+ console.log(`[walletAdapter] Custom RPC URLs configured for: ${Object.keys(rpcs).join(', ')}`);
168
+ }
169
+ }
170
+ catch (error) {
171
+ console.warn('[walletAdapter] Failed to parse RPC environment variables:', error);
172
+ }
173
+ console.log(`[walletAdapter] ${this.skillRpcs.size} RPC URLs available (includes defaults)`);
174
+ }
175
+ /**
176
+ * Get wallet address - tries skill first, then legacy config
177
+ */
178
+ async getWalletAddress(walletId) {
179
+ // Try skill wallets
180
+ if (this.skillWallets.size > 0) {
181
+ const wallet = this.skillWallets.get(walletId || 'default') ||
182
+ Array.from(this.skillWallets.values())[0];
183
+ if (wallet)
184
+ return wallet.address;
185
+ }
186
+ // Fallback to AMPED_OC_WALLETS_JSON
187
+ const legacy = process.env.AMPED_OC_WALLETS_JSON;
188
+ if (legacy) {
189
+ const config = JSON.parse(legacy);
190
+ const wallet = config[walletId || 'main'] || config.default || Object.values(config)[0];
191
+ if (wallet?.address)
192
+ return wallet.address;
193
+ }
194
+ throw new AmpedDefiError(ErrorCode.WALLET_NOT_FOUND, `Wallet not found: ${walletId || 'default'}`, { remediation: 'Configure ~/.evm-wallet.json, EVM_WALLETS_JSON, or AMPED_OC_WALLETS_JSON' });
195
+ }
196
+ /**
197
+ * Get wallet private key - for signing transactions
198
+ */
199
+ async getPrivateKey(walletId) {
200
+ // Try skill wallets
201
+ if (this.skillWallets.size > 0) {
202
+ const wallet = this.skillWallets.get(walletId || 'default') ||
203
+ Array.from(this.skillWallets.values())[0];
204
+ if (wallet && wallet.privateKey) {
205
+ return wallet.privateKey;
206
+ }
207
+ }
208
+ // Fallback to AMPED_OC_WALLETS_JSON
209
+ const legacy = process.env.AMPED_OC_WALLETS_JSON;
210
+ if (legacy) {
211
+ const config = JSON.parse(legacy);
212
+ const wallet = config[walletId || 'main'] || config.default || Object.values(config)[0];
213
+ if (wallet?.privateKey)
214
+ return wallet.privateKey;
215
+ }
216
+ return null;
217
+ }
218
+ /**
219
+ * Get full wallet config (address + privateKey if available)
220
+ */
221
+ async getWalletConfig(walletId) {
222
+ const address = await this.getWalletAddress(walletId);
223
+ const privateKey = await this.getPrivateKey(walletId);
224
+ return { address, privateKey: privateKey || undefined };
225
+ }
226
+ /**
227
+ * Get RPC URL - tries skill first, then legacy config
228
+ */
229
+ async getRpcUrl(chainId) {
230
+ const key = normalizeChainId(String(chainId)).toLowerCase();
231
+ // Try skill RPCs
232
+ if (this.skillRpcs.has(key)) {
233
+ return this.skillRpcs.get(key);
234
+ }
235
+ // Fallback to AMPED_OC_RPC_URLS_JSON
236
+ const legacy = process.env.AMPED_OC_RPC_URLS_JSON;
237
+ if (legacy) {
238
+ const config = JSON.parse(legacy);
239
+ if (config[key] || config[chainId])
240
+ return config[key] || config[chainId];
241
+ }
242
+ throw new AmpedDefiError(ErrorCode.RPC_URL_NOT_CONFIGURED, `RPC URL not configured for chain: ${chainId}`, { remediation: 'Configure EVM_RPC_URLS_JSON or AMPED_OC_RPC_URLS_JSON' });
243
+ }
244
+ /**
245
+ * Check if using skill wallets
246
+ */
247
+ isUsingSkillWallets() {
248
+ return this.skillWallets.size > 0;
249
+ }
250
+ /**
251
+ * Check if using skill RPCs
252
+ */
253
+ isUsingSkillRpcs() {
254
+ return this.skillRpcs.size > 0;
255
+ }
256
+ /**
257
+ * Get all skill wallet IDs
258
+ */
259
+ getWalletIds() {
260
+ return Array.from(this.skillWallets.keys());
261
+ }
262
+ /**
263
+ * Get all skill RPC chain IDs
264
+ */
265
+ getRpcChainIds() {
266
+ return Array.from(this.skillRpcs.keys());
267
+ }
268
+ }
269
+ // Singleton
270
+ let adapter = null;
271
+ export function getWalletAdapter(options) {
272
+ if (!adapter) {
273
+ adapter = new EvmWalletSkillAdapter(options);
274
+ }
275
+ return adapter;
276
+ }
277
+ export function resetWalletAdapter() {
278
+ adapter = null;
279
+ }
280
+ //# sourceMappingURL=skillWalletAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillWalletAdapter.js","sourceRoot":"","sources":["../../src/wallet/skillWalletAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Wallet Types - Multi-source wallet management
3
+ *
4
+ * Supports:
5
+ * - evm-wallet-skill (local key from ~/.evm-wallet.json)
6
+ * - Bankr (API-based, limited chains)
7
+ * - Environment variables (AMPED_OC_WALLETS_JSON)
8
+ */
9
+ import type { Address, Hash } from 'viem';
10
+ /**
11
+ * Supported wallet backend types
12
+ */
13
+ export type WalletBackendType = 'evm-wallet-skill' | 'bankr' | 'env';
14
+ /**
15
+ * Raw transaction for Bankr submission
16
+ */
17
+ export interface RawTransaction {
18
+ to: Address;
19
+ data: `0x${string}`;
20
+ value: string;
21
+ chainId: number;
22
+ }
23
+ /**
24
+ * Wallet info returned by list operations
25
+ */
26
+ export interface WalletInfo {
27
+ nickname: string;
28
+ type: WalletBackendType;
29
+ address: Address;
30
+ chains: string[];
31
+ isDefault: boolean;
32
+ /** Solana address (if wallet has one, e.g., Bankr) */
33
+ solanaAddress?: string;
34
+ }
35
+ /**
36
+ * Wallet backend interface
37
+ * Different implementations for different sources
38
+ */
39
+ export interface IWalletBackend {
40
+ readonly type: WalletBackendType;
41
+ readonly nickname: string;
42
+ readonly supportedChains: readonly string[];
43
+ /**
44
+ * Get the wallet address
45
+ */
46
+ getAddress(): Promise<Address>;
47
+ /**
48
+ * Check if this wallet supports a specific chain
49
+ */
50
+ supportsChain(chainId: string): boolean;
51
+ /**
52
+ * Get private key (for local/env wallets)
53
+ * Returns undefined for Bankr (no local key access)
54
+ */
55
+ getPrivateKey?(): Promise<`0x${string}`>;
56
+ /**
57
+ * Send raw transaction via Bankr API
58
+ * Only available for Bankr backend
59
+ */
60
+ sendRawTransaction?(tx: RawTransaction): Promise<Hash>;
61
+ /**
62
+ * Check if backend is ready/configured
63
+ */
64
+ isReady(): Promise<boolean>;
65
+ }
66
+ /**
67
+ * Wallet configuration from wallets.json
68
+ */
69
+ export interface WalletConfig {
70
+ source: WalletBackendType;
71
+ path?: string;
72
+ apiKey?: string;
73
+ apiUrl?: string;
74
+ envVar?: string;
75
+ address?: Address;
76
+ privateKey?: `0x${string}`;
77
+ chains?: string[];
78
+ }
79
+ /**
80
+ * Wallets config file structure
81
+ */
82
+ export interface WalletsConfigFile {
83
+ wallets: Record<string, WalletConfig>;
84
+ default?: string;
85
+ }
86
+ /**
87
+ * Chain IDs for Bankr submission
88
+ */
89
+ export declare const BANKR_CHAIN_IDS: Record<string, number>;
90
+ /**
91
+ * Chains supported by Bankr
92
+ */
93
+ export declare const BANKR_SUPPORTED_CHAINS: readonly ["ethereum", "polygon", "base"];
94
+ /**
95
+ * All SODAX-supported EVM chains
96
+ * NOTE: Keep in sync with SODAX SDK supported chains
97
+ * Non-EVM chains (solana, sui, stellar, injective) are excluded
98
+ */
99
+ export declare const SODAX_SUPPORTED_CHAINS: readonly ["ethereum", "base", "polygon", "arbitrum", "optimism", "sonic", "avalanche", "bsc", "lightlink", "hyper", "kaia"];
100
+ /**
101
+ * SODAX to simple chain ID mapping
102
+ * SODAX uses prefixed format: 0x2105.base, 0x89.polygon
103
+ * Simple format: base, polygon, ethereum
104
+ */
105
+ export declare const SODAX_TO_SIMPLE_CHAIN: Record<string, string>;
106
+ /**
107
+ * Simple to SODAX chain ID mapping
108
+ */
109
+ export declare const SIMPLE_TO_SODAX_CHAIN: Record<string, string>;
110
+ /**
111
+ * Normalize chain ID to simple format (base, polygon, ethereum)
112
+ * Handles both SODAX prefixed format and simple format
113
+ */
114
+ export declare function normalizeChainId(chainId: string): string;
115
+ /**
116
+ * Convert simple chain ID to SODAX format
117
+ */
118
+ export declare function toSodaxChainId(chainId: string): string;
119
+ /**
120
+ * Check if two chain IDs refer to the same chain
121
+ * Handles format differences between SODAX and simple
122
+ */
123
+ export declare function isSameChain(chainId1: string, chainId2: string): boolean;
124
+ /**
125
+ * Check if a chain is supported by Bankr
126
+ * Handles both SODAX and simple chain ID formats
127
+ */
128
+ export declare function isBankrSupportedChain(chainId: string): boolean;
129
+ /**
130
+ * Get numeric chain ID for Bankr
131
+ * Handles both SODAX and simple chain ID formats
132
+ */
133
+ export declare function getBankrChainId(chainId: string): number;
134
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Wallet Types - Multi-source wallet management
3
+ *
4
+ * Supports:
5
+ * - evm-wallet-skill (local key from ~/.evm-wallet.json)
6
+ * - Bankr (API-based, limited chains)
7
+ * - Environment variables (AMPED_OC_WALLETS_JSON)
8
+ */
9
+ /**
10
+ * Chain IDs for Bankr submission
11
+ */
12
+ export const BANKR_CHAIN_IDS = {
13
+ ethereum: 1,
14
+ polygon: 137,
15
+ base: 8453,
16
+ unichain: 130,
17
+ };
18
+ /**
19
+ * Chains supported by Bankr
20
+ */
21
+ export const BANKR_SUPPORTED_CHAINS = ['ethereum', 'polygon', 'base'];
22
+ /**
23
+ * All SODAX-supported EVM chains
24
+ * NOTE: Keep in sync with SODAX SDK supported chains
25
+ * Non-EVM chains (solana, sui, stellar, injective) are excluded
26
+ */
27
+ export const SODAX_SUPPORTED_CHAINS = [
28
+ 'ethereum',
29
+ 'base',
30
+ 'polygon',
31
+ 'arbitrum',
32
+ 'optimism',
33
+ 'sonic',
34
+ 'avalanche',
35
+ 'bsc',
36
+ 'lightlink',
37
+ 'hyper',
38
+ 'kaia',
39
+ ];
40
+ /**
41
+ * SODAX to simple chain ID mapping
42
+ * SODAX uses prefixed format: 0x2105.base, 0x89.polygon
43
+ * Simple format: base, polygon, ethereum
44
+ */
45
+ export const SODAX_TO_SIMPLE_CHAIN = {
46
+ // SODAX format -> simple
47
+ '0x2105.base': 'base',
48
+ '0x89.polygon': 'polygon',
49
+ '0xa4b1.arbitrum': 'arbitrum',
50
+ '0xa.optimism': 'optimism',
51
+ '0x38.bsc': 'bsc',
52
+ '0xa86a.avax': 'avalanche',
53
+ '0x2019.kaia': 'kaia',
54
+ // These don't have prefixes in SODAX
55
+ 'ethereum': 'ethereum',
56
+ 'sonic': 'sonic',
57
+ 'lightlink': 'lightlink',
58
+ 'hyper': 'hyperevm',
59
+ 'kaia': 'kaia',
60
+ };
61
+ /**
62
+ * Simple to SODAX chain ID mapping
63
+ */
64
+ export const SIMPLE_TO_SODAX_CHAIN = {
65
+ // Simple -> SODAX format
66
+ 'base': '0x2105.base',
67
+ 'polygon': '0x89.polygon',
68
+ 'arbitrum': '0xa4b1.arbitrum',
69
+ 'optimism': '0xa.optimism',
70
+ 'bsc': '0x38.bsc',
71
+ 'avalanche': '0xa86a.avax',
72
+ 'kaia': '0x2019.kaia',
73
+ // No prefix needed
74
+ 'ethereum': 'ethereum',
75
+ 'sonic': 'sonic',
76
+ 'lightlink': 'lightlink',
77
+ 'hyperevm': 'hyper',
78
+ 'hyper': 'hyper',
79
+ };
80
+ /**
81
+ * Normalize chain ID to simple format (base, polygon, ethereum)
82
+ * Handles both SODAX prefixed format and simple format
83
+ */
84
+ export function normalizeChainId(chainId) {
85
+ // Already in mapping
86
+ if (SODAX_TO_SIMPLE_CHAIN[chainId]) {
87
+ return SODAX_TO_SIMPLE_CHAIN[chainId];
88
+ }
89
+ // Check if it's already simple format
90
+ if (SIMPLE_TO_SODAX_CHAIN[chainId]) {
91
+ return chainId;
92
+ }
93
+ // Try to extract from prefixed format (0xNNN.name -> name)
94
+ const match = chainId.match(/^0x[a-fA-F0-9]+\.(.+)$/);
95
+ if (match) {
96
+ return match[1];
97
+ }
98
+ // Return as-is
99
+ return chainId;
100
+ }
101
+ /**
102
+ * Convert simple chain ID to SODAX format
103
+ */
104
+ export function toSodaxChainId(chainId) {
105
+ // Already in SODAX format
106
+ if (chainId.startsWith('0x') && chainId.includes('.')) {
107
+ return chainId;
108
+ }
109
+ return SIMPLE_TO_SODAX_CHAIN[chainId] || chainId;
110
+ }
111
+ /**
112
+ * Check if two chain IDs refer to the same chain
113
+ * Handles format differences between SODAX and simple
114
+ */
115
+ export function isSameChain(chainId1, chainId2) {
116
+ return normalizeChainId(chainId1) === normalizeChainId(chainId2);
117
+ }
118
+ /**
119
+ * Check if a chain is supported by Bankr
120
+ * Handles both SODAX and simple chain ID formats
121
+ */
122
+ export function isBankrSupportedChain(chainId) {
123
+ const normalized = normalizeChainId(chainId);
124
+ return BANKR_SUPPORTED_CHAINS.includes(normalized);
125
+ }
126
+ /**
127
+ * Get numeric chain ID for Bankr
128
+ * Handles both SODAX and simple chain ID formats
129
+ */
130
+ export function getBankrChainId(chainId) {
131
+ const normalized = normalizeChainId(chainId);
132
+ const id = BANKR_CHAIN_IDS[normalized];
133
+ if (!id) {
134
+ throw new Error(`Chain ${chainId} (normalized: ${normalized}) not supported by Bankr. Supported: ${BANKR_SUPPORTED_CHAINS.join(', ')}`);
135
+ }
136
+ return id;
137
+ }
138
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":"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"}