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
package/src/index.ts ADDED
@@ -0,0 +1,376 @@
1
+ /**
2
+ * Amped DeFi Plugin
3
+ *
4
+ * OpenClaw plugin for DeFi operations (swaps, bridging, money market)
5
+ * via the SODAX SDK.
6
+ */
7
+
8
+ import { Type, TSchema } from '@sinclair/typebox';
9
+
10
+ /**
11
+ * OpenClaw Plugin API (defined locally to avoid SDK dependency)
12
+ */
13
+ interface OpenClawPluginApi {
14
+ pluginConfig: Record<string, unknown>;
15
+ logger: {
16
+ info: (msg: string) => void;
17
+ warn: (msg: string) => void;
18
+ error: (msg: string) => void;
19
+ debug: (msg: string) => void;
20
+ };
21
+ registerTool: (tool: {
22
+ name: string;
23
+ description: string;
24
+ parameters: TSchema;
25
+ execute: (toolCallId: string, params: unknown) => Promise<{
26
+ content: Array<{ type: 'text'; text: string }>;
27
+ details?: unknown;
28
+ }>;
29
+ }) => void;
30
+ registerService: (service: {
31
+ id: string;
32
+ start: () => void;
33
+ stop: () => Promise<void> | void;
34
+ }) => void;
35
+ on: (event: string, handler: (event: unknown, ctx: unknown) => unknown) => void;
36
+ }
37
+ import { getSodaxClientAsync, resetSodaxClient } from './sodax/client';
38
+ import { getCacheStats } from './providers/spokeProviderFactory';
39
+ import { PolicyEngine } from './policy/policyEngine';
40
+ import { getWalletManager } from './wallet/walletManager';
41
+ import { getWalletRegistry } from './wallet/walletRegistry';
42
+
43
+ // Tool schemas and handlers
44
+ import {
45
+ SwapQuoteSchema, SwapExecuteSchema, SwapStatusSchema, SwapCancelSchema,
46
+ handleSwapQuote, handleSwapExecute, handleSwapStatus, handleSwapCancel
47
+ } from './tools/swap';
48
+ import {
49
+ BridgeDiscoverSchema, BridgeQuoteSchema, BridgeExecuteSchema,
50
+ handleBridgeDiscover, handleBridgeQuote, handleBridgeExecute
51
+ } from './tools/bridge';
52
+ import {
53
+ MmSupplySchema, MmWithdrawSchema, MmBorrowSchema, MmRepaySchema,
54
+ handleMmSupply, handleMmWithdraw, handleMmBorrow, handleMmRepay
55
+ } from './tools/moneyMarket';
56
+ import {
57
+ SupportedChainsSchema, SupportedTokensSchema, WalletAddressSchema,
58
+ MoneyMarketReservesSchema, MoneyMarketPositionsSchema, CrossChainPositionsSchema,
59
+ UserIntentsSchema, ListWalletsSchema,
60
+ handleSupportedChains, handleSupportedTokens, handleWalletAddress,
61
+ handleMoneyMarketReserves, handleMoneyMarketPositions, handleCrossChainPositions,
62
+ handleUserIntents, handleListWallets
63
+ } from './tools/discovery';
64
+ import {
65
+ AddWalletSchema, RenameWalletSchema, RemoveWalletSchema, SetDefaultWalletSchema,
66
+ handleAddWallet, handleRenameWallet, handleRemoveWallet, handleSetDefaultWallet
67
+ } from './tools/walletManagement';
68
+ import {
69
+ PortfolioSummarySchema,
70
+ handlePortfolioSummary
71
+ } from './tools/portfolio';
72
+
73
+ /**
74
+ * Plugin configuration schema (matches openclaw.plugin.json)
75
+ */
76
+ const configSchema = Type.Object({
77
+ walletsJson: Type.Optional(Type.String()),
78
+ rpcUrlsJson: Type.Optional(Type.String()),
79
+ mode: Type.Optional(Type.Union([Type.Literal('execute'), Type.Literal('simulate')])),
80
+ dynamicConfig: Type.Optional(Type.Boolean()),
81
+ });
82
+
83
+ /**
84
+ * Apply plugin config to environment
85
+ */
86
+ function applyConfig(config: Record<string, unknown>): void {
87
+ if (config.walletsJson && typeof config.walletsJson === 'string') {
88
+ process.env.AMPED_OC_WALLETS_JSON = config.walletsJson;
89
+ }
90
+ if (config.rpcUrlsJson && typeof config.rpcUrlsJson === 'string') {
91
+ process.env.AMPED_OC_RPC_URLS_JSON = config.rpcUrlsJson;
92
+ }
93
+ if (config.mode && typeof config.mode === 'string') {
94
+ process.env.AMPED_OC_MODE = config.mode;
95
+ }
96
+ if (config.dynamicConfig !== undefined) {
97
+ process.env.AMPED_OC_SODAX_DYNAMIC_CONFIG = config.dynamicConfig ? 'true' : 'false';
98
+ }
99
+ }
100
+
101
+ /**
102
+ * Validate required environment variables
103
+ */
104
+ function validateEnvironment(): string[] {
105
+ const missing: string[] = [];
106
+
107
+ if (!process.env.AMPED_OC_WALLETS_JSON) {
108
+ missing.push('AMPED_OC_WALLETS_JSON');
109
+ }
110
+
111
+ const mode = process.env.AMPED_OC_MODE || 'execute';
112
+ if (mode === 'execute' && !process.env.AMPED_OC_RPC_URLS_JSON) {
113
+ missing.push('AMPED_OC_RPC_URLS_JSON');
114
+ }
115
+
116
+ return missing;
117
+ }
118
+
119
+
120
+ /**
121
+ * Deep-clone an object while converting BigInt values to strings
122
+ * Prevents serialization errors when OpenClaw framework handles the details field
123
+ */
124
+ function sanitizeBigInt(obj: unknown): unknown {
125
+ return JSON.parse(JSON.stringify(obj, (_, v) =>
126
+ typeof v === 'bigint' ? v.toString() : v
127
+ ));
128
+ }
129
+
130
+ /**
131
+ * Helper to wrap a handler for OpenClaw's tool format
132
+ */
133
+ function wrapHandler(handler: (params: unknown) => Promise<unknown>) {
134
+ return async (_toolCallId: string, params: unknown) => {
135
+ const result = await handler(params);
136
+ // Sanitize BigInt values in details to prevent framework serialization errors
137
+ const sanitizedResult = sanitizeBigInt(result);
138
+ return {
139
+ content: [{ type: 'text' as const, text: JSON.stringify(result, (k, v) => typeof v === 'bigint' ? v.toString() : v, 2) }],
140
+ details: sanitizedResult,
141
+ };
142
+ };
143
+ }
144
+
145
+ /**
146
+ * OpenClaw Plugin Definition
147
+ */
148
+ export default {
149
+ id: 'amped-defi',
150
+ name: 'Amped DeFi',
151
+ description: 'DeFi operations plugin for swaps, bridging, and money market via SODAX SDK',
152
+ kind: 'tools' as const,
153
+ configSchema,
154
+
155
+ register(api: OpenClawPluginApi) {
156
+ // Apply config from OpenClaw
157
+ const config = api.pluginConfig as Record<string, unknown> || {};
158
+ applyConfig(config);
159
+
160
+ // Check for missing env vars (silent)
161
+ validateEnvironment();
162
+
163
+ // Initialize core components (async, non-blocking, silent)
164
+ (async () => {
165
+ try {
166
+ await getSodaxClientAsync();
167
+ getCacheStats();
168
+ new PolicyEngine();
169
+ getWalletManager();
170
+ } catch (_error) {
171
+ // Silent initialization - errors will surface when tools are used
172
+ }
173
+ })();
174
+
175
+ // Register Discovery Tools
176
+ api.registerTool({
177
+ name: 'amped_supported_chains',
178
+ description: 'List all blockchain networks supported by the Amped DeFi plugin',
179
+ parameters: SupportedChainsSchema,
180
+ execute: wrapHandler(handleSupportedChains),
181
+ });
182
+
183
+ api.registerTool({
184
+ name: 'amped_supported_tokens',
185
+ description: 'List tokens supported on a specific chain for swaps and bridging',
186
+ parameters: SupportedTokensSchema,
187
+ execute: wrapHandler(handleSupportedTokens),
188
+ });
189
+
190
+ api.registerTool({
191
+ name: 'amped_wallet_address',
192
+ description: 'Get the wallet address for a specific wallet ID',
193
+ parameters: WalletAddressSchema,
194
+ execute: wrapHandler(handleWalletAddress),
195
+ });
196
+
197
+ api.registerTool({
198
+ name: 'amped_money_market_reserves',
199
+ description: 'Get money market reserve info (APY, utilization, liquidity)',
200
+ parameters: MoneyMarketReservesSchema,
201
+ execute: wrapHandler(handleMoneyMarketReserves),
202
+ });
203
+
204
+ api.registerTool({
205
+ name: 'amped_money_market_positions',
206
+ description: 'Get user positions in money market on a single chain',
207
+ parameters: MoneyMarketPositionsSchema,
208
+ execute: wrapHandler(handleMoneyMarketPositions),
209
+ });
210
+
211
+ api.registerTool({
212
+ name: 'amped_cross_chain_positions',
213
+ description: 'Get aggregated money market positions across all chains',
214
+ parameters: CrossChainPositionsSchema,
215
+ execute: wrapHandler(handleCrossChainPositions),
216
+ });
217
+
218
+ api.registerTool({
219
+ name: 'amped_user_intents',
220
+ description: 'Query user intent history from SODAX API',
221
+ parameters: UserIntentsSchema,
222
+ execute: wrapHandler(handleUserIntents),
223
+ });
224
+
225
+ api.registerTool({
226
+ name: 'amped_list_wallets',
227
+ description: 'List ALL configured wallets including evm-wallet-skill, Bankr, and env wallets. Shows nicknames, addresses, types, and supported chains. Use this when user asks "what wallets do I have" or "show my wallets".',
228
+ parameters: ListWalletsSchema,
229
+ execute: wrapHandler(handleListWallets),
230
+ });
231
+
232
+ api.registerTool({
233
+ name: 'amped_portfolio_summary',
234
+ description: 'Get a comprehensive portfolio summary including wallet balances (native + major tokens) across chains and money market positions. Use when user asks for "portfolio", "balances", or "summary of positions".',
235
+ parameters: PortfolioSummarySchema,
236
+ execute: wrapHandler(handlePortfolioSummary),
237
+ });
238
+
239
+ // Register Wallet Management Tools
240
+ api.registerTool({
241
+ name: 'amped_add_wallet',
242
+ description: 'Add a new wallet with a nickname (evm-wallet-skill, bankr, or env)',
243
+ parameters: AddWalletSchema,
244
+ execute: wrapHandler(handleAddWallet),
245
+ });
246
+
247
+ api.registerTool({
248
+ name: 'amped_rename_wallet',
249
+ description: 'Rename a wallet to a new nickname',
250
+ parameters: RenameWalletSchema,
251
+ execute: wrapHandler(handleRenameWallet),
252
+ });
253
+
254
+ api.registerTool({
255
+ name: 'amped_remove_wallet',
256
+ description: 'Remove a wallet from configuration (does not delete funds)',
257
+ parameters: RemoveWalletSchema,
258
+ execute: wrapHandler(handleRemoveWallet),
259
+ });
260
+
261
+ api.registerTool({
262
+ name: 'amped_set_default_wallet',
263
+ description: 'Set which wallet to use by default for operations',
264
+ parameters: SetDefaultWalletSchema,
265
+ execute: wrapHandler(handleSetDefaultWallet),
266
+ });
267
+
268
+ // Register Swap Tools
269
+ api.registerTool({
270
+ name: 'amped_swap_quote',
271
+ description: 'Get a quote for swapping tokens (same chain or cross-chain)',
272
+ parameters: SwapQuoteSchema,
273
+ execute: wrapHandler(handleSwapQuote),
274
+ });
275
+
276
+ api.registerTool({
277
+ name: 'amped_swap_execute',
278
+ description: 'Execute a token swap using a previously obtained quote',
279
+ parameters: SwapExecuteSchema,
280
+ execute: wrapHandler(handleSwapExecute),
281
+ });
282
+
283
+ api.registerTool({
284
+ name: 'amped_swap_status',
285
+ description: 'Check the status of a swap/bridge operation by intent ID',
286
+ parameters: SwapStatusSchema,
287
+ execute: wrapHandler(handleSwapStatus),
288
+ });
289
+
290
+ api.registerTool({
291
+ name: 'amped_swap_cancel',
292
+ description: 'Cancel a pending swap/bridge operation',
293
+ parameters: SwapCancelSchema,
294
+ execute: wrapHandler(handleSwapCancel),
295
+ });
296
+
297
+ // Register Bridge Tools
298
+ api.registerTool({
299
+ name: 'amped_bridge_discover',
300
+ description: 'Discover available bridge routes between chains',
301
+ parameters: BridgeDiscoverSchema,
302
+ execute: wrapHandler(handleBridgeDiscover),
303
+ });
304
+
305
+ api.registerTool({
306
+ name: 'amped_bridge_quote',
307
+ description: 'Get a quote for bridging tokens between chains',
308
+ parameters: BridgeQuoteSchema,
309
+ execute: wrapHandler(handleBridgeQuote),
310
+ });
311
+
312
+ api.registerTool({
313
+ name: 'amped_bridge_execute',
314
+ description: 'Execute a bridge transfer using a previously obtained quote',
315
+ parameters: BridgeExecuteSchema,
316
+ execute: wrapHandler(handleBridgeExecute),
317
+ });
318
+
319
+ // Register Money Market Tools
320
+ api.registerTool({
321
+ name: 'amped_mm_supply',
322
+ description: 'Supply (deposit) tokens to money market to earn interest',
323
+ parameters: MmSupplySchema,
324
+ execute: wrapHandler(handleMmSupply),
325
+ });
326
+
327
+ api.registerTool({
328
+ name: 'amped_mm_withdraw',
329
+ description: 'Withdraw supplied tokens from money market',
330
+ parameters: MmWithdrawSchema,
331
+ execute: wrapHandler(handleMmWithdraw),
332
+ });
333
+
334
+ api.registerTool({
335
+ name: 'amped_mm_borrow',
336
+ description: 'Borrow tokens from money market (cross-chain capable)',
337
+ parameters: MmBorrowSchema,
338
+ execute: wrapHandler(handleMmBorrow),
339
+ });
340
+
341
+ api.registerTool({
342
+ name: 'amped_mm_repay',
343
+ description: 'Repay borrowed tokens to money market',
344
+ parameters: MmRepaySchema,
345
+ execute: wrapHandler(handleMmRepay),
346
+ });
347
+
348
+ // Register cleanup service
349
+ api.registerService({
350
+ id: 'amped-defi',
351
+ start: () => {},
352
+ stop: async () => {
353
+ resetSodaxClient();
354
+ },
355
+ });
356
+ },
357
+ };
358
+
359
+ // Re-export types and utilities for external use
360
+ export * from './types';
361
+ export { getSodaxClient, getSodaxClientAsync, resetSodaxClient } from './sodax/client';
362
+ export { getSpokeProvider, getCacheStats, clearProviderCache } from './providers/spokeProviderFactory';
363
+ export type { SpokeProvider } from './providers/spokeProviderFactory';
364
+ export { EvmSpokeProvider, SonicSpokeProvider } from '@sodax/sdk';
365
+ export { PolicyEngine } from './policy/policyEngine';
366
+ export { WalletRegistry, getWalletRegistry } from './wallet/walletRegistry';
367
+ export { WalletManager, getWalletManager, resetWalletManager } from './wallet/walletManager';
368
+ export type { IWalletBackend, WalletInfo, WalletBackendType } from './wallet/types';
369
+
370
+ // Legacy exports for backward compatibility
371
+ export async function activate() {
372
+ // Deprecated - use default export
373
+ }
374
+ export async function deactivate() {
375
+ resetSodaxClient();
376
+ }