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,141 @@
1
+ /**
2
+ * Discovery/Read Tools for Amped DeFi Plugin
3
+ *
4
+ * These tools provide read-only access to:
5
+ * - Supported chains and tokens
6
+ * - Wallet address resolution
7
+ * - Money market positions and reserves
8
+ *
9
+ * @module tools/discovery
10
+ */
11
+ import { Static } from '@sinclair/typebox';
12
+ /**
13
+ * Schema for amped_supported_chains - no parameters required
14
+ */
15
+ declare const SupportedChainsSchema: import("@sinclair/typebox").TObject<{}>;
16
+ /**
17
+ * Schema for amped_supported_tokens
18
+ */
19
+ declare const SupportedTokensSchema: import("@sinclair/typebox").TObject<{
20
+ module: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"swaps">, import("@sinclair/typebox").TLiteral<"bridge">, import("@sinclair/typebox").TLiteral<"moneyMarket">]>;
21
+ chainId: import("@sinclair/typebox").TString;
22
+ }>;
23
+ /**
24
+ * Schema for amped_wallet_address
25
+ */
26
+ declare const WalletAddressSchema: import("@sinclair/typebox").TObject<{
27
+ walletId: import("@sinclair/typebox").TString;
28
+ }>;
29
+ /**
30
+ * Schema for amped_money_market_positions
31
+ */
32
+ declare const MoneyMarketPositionsSchema: import("@sinclair/typebox").TObject<{
33
+ walletId: import("@sinclair/typebox").TString;
34
+ chainId: import("@sinclair/typebox").TString;
35
+ }>;
36
+ /**
37
+ * Schema for amped_money_market_reserves
38
+ */
39
+ declare const MoneyMarketReservesSchema: import("@sinclair/typebox").TObject<{
40
+ chainId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
41
+ }>;
42
+ /**
43
+ * Schema for amped_cross_chain_positions
44
+ * Get aggregated positions view across all chains
45
+ */
46
+ declare const CrossChainPositionsSchema: import("@sinclair/typebox").TObject<{
47
+ walletId: import("@sinclair/typebox").TString;
48
+ chainIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
49
+ includeZeroBalances: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
50
+ minUsdValue: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
51
+ }>;
52
+ /**
53
+ * Schema for amped_user_intents
54
+ * Query user intent history from SODAX API
55
+ */
56
+ declare const UserIntentsSchema: import("@sinclair/typebox").TObject<{
57
+ walletId: import("@sinclair/typebox").TString;
58
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"all">, import("@sinclair/typebox").TLiteral<"open">, import("@sinclair/typebox").TLiteral<"closed">]>>;
59
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
60
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
61
+ }>;
62
+ /**
63
+ * Schema for amped_list_wallets - List all configured wallets
64
+ */
65
+ declare const ListWalletsSchema: import("@sinclair/typebox").TObject<{}>;
66
+ type SupportedChainsParams = Static<typeof SupportedChainsSchema>;
67
+ type SupportedTokensParams = Static<typeof SupportedTokensSchema>;
68
+ type WalletAddressParams = Static<typeof WalletAddressSchema>;
69
+ type MoneyMarketPositionsParams = Static<typeof MoneyMarketPositionsSchema>;
70
+ type ListWalletsParams = Static<typeof ListWalletsSchema>;
71
+ type MoneyMarketReservesParams = Static<typeof MoneyMarketReservesSchema>;
72
+ type CrossChainPositionsParams = Static<typeof CrossChainPositionsSchema>;
73
+ type UserIntentsParams = Static<typeof UserIntentsSchema>;
74
+ /**
75
+ * AgentTools interface for registering tools with the OpenClaw framework
76
+ */
77
+ interface AgentTools {
78
+ register(tool: {
79
+ name: string;
80
+ summary: string;
81
+ description?: string;
82
+ schema: unknown;
83
+ handler: (params: unknown) => Promise<unknown>;
84
+ }): void;
85
+ }
86
+ /**
87
+ * Get supported spoke chains from SODAX configuration
88
+ */
89
+ declare function handleSupportedChains(_params: SupportedChainsParams): Promise<unknown>;
90
+ /**
91
+ * Get supported tokens for a specific module and chain
92
+ */
93
+ declare function handleSupportedTokens(params: SupportedTokensParams): Promise<unknown>;
94
+ /**
95
+ * Get wallet address by walletId
96
+ * Returns enhanced wallet info with source and supported chains
97
+ */
98
+ declare function handleWalletAddress(params: WalletAddressParams): Promise<unknown>;
99
+ /**
100
+ * Get user money market positions (humanized format)
101
+ */
102
+ declare function handleMoneyMarketPositions(params: MoneyMarketPositionsParams): Promise<unknown>;
103
+ /**
104
+ * Get money market reserves (humanized format)
105
+ * Hub-centric: returns reserves across all markets
106
+ */
107
+ declare function handleMoneyMarketReserves(params: MoneyMarketReservesParams): Promise<unknown>;
108
+ /**
109
+ * Get aggregated money market positions across all chains
110
+ *
111
+ * This provides a unified view of:
112
+ * - Total supply/borrow across all networks
113
+ * - Health factor and liquidation risk
114
+ * - Available borrowing power
115
+ * - Net position and APY
116
+ * - Risk metrics and recommendations
117
+ */
118
+ declare function handleCrossChainPositions(params: CrossChainPositionsParams): Promise<unknown>;
119
+ /**
120
+ * Get user intents from SODAX API
121
+ *
122
+ * Queries the backend API for intent history including:
123
+ * - Open/pending intents
124
+ * - Filled intents
125
+ * - Cancelled/expired intents
126
+ * - Event history for each intent
127
+ */
128
+ declare function handleUserIntents(params: UserIntentsParams): Promise<unknown>;
129
+ /**
130
+ * List all configured wallets with their nicknames, types, and supported chains
131
+ */
132
+ declare function handleListWallets(_params: ListWalletsParams): Promise<unknown>;
133
+ /**
134
+ * Register all discovery tools with the agent tools registry
135
+ *
136
+ * @param agentTools - The OpenClaw AgentTools instance
137
+ */
138
+ export declare function registerDiscoveryTools(agentTools: AgentTools): void;
139
+ export { SupportedChainsSchema, SupportedTokensSchema, WalletAddressSchema, MoneyMarketPositionsSchema, MoneyMarketReservesSchema, CrossChainPositionsSchema, UserIntentsSchema, ListWalletsSchema, };
140
+ export { handleSupportedChains, handleSupportedTokens, handleWalletAddress, handleMoneyMarketPositions, handleMoneyMarketReserves, handleCrossChainPositions, handleUserIntents, handleListWallets, };
141
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"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"}