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,24 @@
1
+ /**
2
+ * Mock for @sodax/sdk
3
+ */
4
+ export declare class Sodax {
5
+ static initialize: jest.Mock<any, any, any>;
6
+ swaps: {
7
+ getQuote: jest.Mock<any, any, any>;
8
+ executeSwap: jest.Mock<any, any, any>;
9
+ cancelIntent: jest.Mock<any, any, any>;
10
+ };
11
+ bridge: {
12
+ getBridgeableTokens: jest.Mock<any, any, any>;
13
+ bridge: jest.Mock<any, any, any>;
14
+ };
15
+ moneyMarket: {
16
+ supply: jest.Mock<any, any, any>;
17
+ withdraw: jest.Mock<any, any, any>;
18
+ borrow: jest.Mock<any, any, any>;
19
+ repay: jest.Mock<any, any, any>;
20
+ getUserAccountDataOnSpoke: jest.Mock<any, any, any>;
21
+ };
22
+ }
23
+ export declare const Intent: {};
24
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/__mocks__/@sodax/sdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,KAAK;IAChB,MAAM,CAAC,UAAU,2BAA0C;IAE3D,KAAK;;;;MAIH;IAEF,MAAM;;;MAGJ;IAEF,WAAW;;;;;;MAMT;CACH;AAED,eAAO,MAAM,MAAM,IAAK,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Mock for @sodax/sdk
3
+ */
4
+ export class Sodax {
5
+ static initialize = jest.fn().mockResolvedValue(undefined);
6
+ swaps = {
7
+ getQuote: jest.fn(),
8
+ executeSwap: jest.fn(),
9
+ cancelIntent: jest.fn(),
10
+ };
11
+ bridge = {
12
+ getBridgeableTokens: jest.fn(),
13
+ bridge: jest.fn(),
14
+ };
15
+ moneyMarket = {
16
+ supply: jest.fn(),
17
+ withdraw: jest.fn(),
18
+ borrow: jest.fn(),
19
+ repay: jest.fn(),
20
+ getUserAccountDataOnSpoke: jest.fn(),
21
+ };
22
+ }
23
+ export const Intent = {};
24
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/__mocks__/@sodax/sdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,KAAK;IAChB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE3D,KAAK,GAAG;QACN,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;KACxB,CAAC;IAEF,MAAM,GAAG;QACP,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;KAClB,CAAC;IAEF,WAAW,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,yBAAyB,EAAE,IAAI,CAAC,EAAE,EAAE;KACrC,CAAC;;AAGJ,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Jest Test Setup
3
+ */
4
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Jest Test Setup
3
+ */
4
+ // Mock console methods to reduce noise during tests
5
+ global.console = {
6
+ ...console,
7
+ log: jest.fn(),
8
+ debug: jest.fn(),
9
+ info: jest.fn(),
10
+ warn: jest.fn(),
11
+ error: jest.fn(),
12
+ };
13
+ // Set default test environment
14
+ process.env.AMPED_OC_MODE = 'execute';
15
+ process.env.AMPED_OC_WALLETS_JSON = JSON.stringify({
16
+ test: {
17
+ address: '0x1234567890123456789012345678901234567890',
18
+ privateKey: '0xabc123def456',
19
+ },
20
+ });
21
+ process.env.AMPED_OC_RPC_URLS_JSON = JSON.stringify({
22
+ ethereum: 'https://eth-mainnet.example.com',
23
+ arbitrum: 'https://arb-mainnet.example.com',
24
+ sonic: 'https://rpc.sonic.example.com',
25
+ });
26
+ // Global test timeout
27
+ jest.setTimeout(10000);
28
+ // Clean up after each test
29
+ afterEach(() => {
30
+ jest.clearAllMocks();
31
+ });
32
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oDAAoD;AACpD,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;IACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;CACjB,CAAC;AAEF,+BAA+B;AAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC;AACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC;IACjD,IAAI,EAAE;QACJ,OAAO,EAAE,4CAA4C;QACrD,UAAU,EAAE,gBAAgB;KAC7B;CACF,CAAC,CAAC;AACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC;IAClD,QAAQ,EAAE,iCAAiC;IAC3C,QAAQ,EAAE,iCAAiC;IAC3C,KAAK,EAAE,+BAA+B;CACvC,CAAC,CAAC;AAEH,sBAAsB;AACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,2BAA2B;AAC3B,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Amped DeFi Plugin
3
+ *
4
+ * OpenClaw plugin for DeFi operations (swaps, bridging, money market)
5
+ * via the SODAX SDK.
6
+ */
7
+ import { TSchema } from '@sinclair/typebox';
8
+ /**
9
+ * OpenClaw Plugin API (defined locally to avoid SDK dependency)
10
+ */
11
+ interface OpenClawPluginApi {
12
+ pluginConfig: Record<string, unknown>;
13
+ logger: {
14
+ info: (msg: string) => void;
15
+ warn: (msg: string) => void;
16
+ error: (msg: string) => void;
17
+ debug: (msg: string) => void;
18
+ };
19
+ registerTool: (tool: {
20
+ name: string;
21
+ description: string;
22
+ parameters: TSchema;
23
+ execute: (toolCallId: string, params: unknown) => Promise<{
24
+ content: Array<{
25
+ type: 'text';
26
+ text: string;
27
+ }>;
28
+ details?: unknown;
29
+ }>;
30
+ }) => void;
31
+ registerService: (service: {
32
+ id: string;
33
+ start: () => void;
34
+ stop: () => Promise<void> | void;
35
+ }) => void;
36
+ on: (event: string, handler: (event: unknown, ctx: unknown) => unknown) => void;
37
+ }
38
+ /**
39
+ * OpenClaw Plugin Definition
40
+ */
41
+ declare const _default: {
42
+ id: string;
43
+ name: string;
44
+ description: string;
45
+ kind: "tools";
46
+ configSchema: import("@sinclair/typebox").TObject<{
47
+ walletsJson: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
48
+ rpcUrlsJson: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
49
+ mode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"execute">, import("@sinclair/typebox").TLiteral<"simulate">]>>;
50
+ dynamicConfig: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
51
+ }>;
52
+ register(api: OpenClawPluginApi): void;
53
+ };
54
+ export default _default;
55
+ export * from './types';
56
+ export { getSodaxClient, getSodaxClientAsync, resetSodaxClient } from './sodax/client';
57
+ export { getSpokeProvider, getCacheStats, clearProviderCache } from './providers/spokeProviderFactory';
58
+ export type { SpokeProvider } from './providers/spokeProviderFactory';
59
+ export { EvmSpokeProvider, SonicSpokeProvider } from '@sodax/sdk';
60
+ export { PolicyEngine } from './policy/policyEngine';
61
+ export { WalletRegistry, getWalletRegistry } from './wallet/walletRegistry';
62
+ export { WalletManager, getWalletManager, resetWalletManager } from './wallet/walletManager';
63
+ export type { IWalletBackend, WalletInfo, WalletBackendType } from './wallet/types';
64
+ export declare function activate(): Promise<void>;
65
+ export declare function deactivate(): Promise<void>;
66
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE,CAAC,IAAI,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;YACxD,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC,CAAC;KACJ,KAAK,IAAI,CAAC;IACX,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAClC,KAAK,IAAI,CAAC;IACX,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,KAAK,IAAI,CAAC;CACjF;AA6GD;;GAEG;;;;;;;;;;;;kBAQa,iBAAiB;;AAPjC,wBAiNE;AAGF,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACvG,YAAY,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGpF,wBAAsB,QAAQ,kBAE7B;AACD,wBAAsB,UAAU,kBAE/B"}
package/dist/index.js ADDED
@@ -0,0 +1,281 @@
1
+ /**
2
+ * Amped DeFi Plugin
3
+ *
4
+ * OpenClaw plugin for DeFi operations (swaps, bridging, money market)
5
+ * via the SODAX SDK.
6
+ */
7
+ import { Type } from '@sinclair/typebox';
8
+ import { getSodaxClientAsync, resetSodaxClient } from './sodax/client';
9
+ import { getCacheStats } from './providers/spokeProviderFactory';
10
+ import { PolicyEngine } from './policy/policyEngine';
11
+ import { getWalletManager } from './wallet/walletManager';
12
+ // Tool schemas and handlers
13
+ import { SwapQuoteSchema, SwapExecuteSchema, SwapStatusSchema, SwapCancelSchema, handleSwapQuote, handleSwapExecute, handleSwapStatus, handleSwapCancel } from './tools/swap';
14
+ import { BridgeDiscoverSchema, BridgeQuoteSchema, BridgeExecuteSchema, handleBridgeDiscover, handleBridgeQuote, handleBridgeExecute } from './tools/bridge';
15
+ import { MmSupplySchema, MmWithdrawSchema, MmBorrowSchema, MmRepaySchema, handleMmSupply, handleMmWithdraw, handleMmBorrow, handleMmRepay } from './tools/moneyMarket';
16
+ import { SupportedChainsSchema, SupportedTokensSchema, WalletAddressSchema, MoneyMarketReservesSchema, MoneyMarketPositionsSchema, CrossChainPositionsSchema, UserIntentsSchema, ListWalletsSchema, handleSupportedChains, handleSupportedTokens, handleWalletAddress, handleMoneyMarketReserves, handleMoneyMarketPositions, handleCrossChainPositions, handleUserIntents, handleListWallets } from './tools/discovery';
17
+ import { AddWalletSchema, RenameWalletSchema, RemoveWalletSchema, SetDefaultWalletSchema, handleAddWallet, handleRenameWallet, handleRemoveWallet, handleSetDefaultWallet } from './tools/walletManagement';
18
+ import { PortfolioSummarySchema, handlePortfolioSummary } from './tools/portfolio';
19
+ /**
20
+ * Plugin configuration schema (matches openclaw.plugin.json)
21
+ */
22
+ const configSchema = Type.Object({
23
+ walletsJson: Type.Optional(Type.String()),
24
+ rpcUrlsJson: Type.Optional(Type.String()),
25
+ mode: Type.Optional(Type.Union([Type.Literal('execute'), Type.Literal('simulate')])),
26
+ dynamicConfig: Type.Optional(Type.Boolean()),
27
+ });
28
+ /**
29
+ * Apply plugin config to environment
30
+ */
31
+ function applyConfig(config) {
32
+ if (config.walletsJson && typeof config.walletsJson === 'string') {
33
+ process.env.AMPED_OC_WALLETS_JSON = config.walletsJson;
34
+ }
35
+ if (config.rpcUrlsJson && typeof config.rpcUrlsJson === 'string') {
36
+ process.env.AMPED_OC_RPC_URLS_JSON = config.rpcUrlsJson;
37
+ }
38
+ if (config.mode && typeof config.mode === 'string') {
39
+ process.env.AMPED_OC_MODE = config.mode;
40
+ }
41
+ if (config.dynamicConfig !== undefined) {
42
+ process.env.AMPED_OC_SODAX_DYNAMIC_CONFIG = config.dynamicConfig ? 'true' : 'false';
43
+ }
44
+ }
45
+ /**
46
+ * Validate required environment variables
47
+ */
48
+ function validateEnvironment() {
49
+ const missing = [];
50
+ if (!process.env.AMPED_OC_WALLETS_JSON) {
51
+ missing.push('AMPED_OC_WALLETS_JSON');
52
+ }
53
+ const mode = process.env.AMPED_OC_MODE || 'execute';
54
+ if (mode === 'execute' && !process.env.AMPED_OC_RPC_URLS_JSON) {
55
+ missing.push('AMPED_OC_RPC_URLS_JSON');
56
+ }
57
+ return missing;
58
+ }
59
+ /**
60
+ * Deep-clone an object while converting BigInt values to strings
61
+ * Prevents serialization errors when OpenClaw framework handles the details field
62
+ */
63
+ function sanitizeBigInt(obj) {
64
+ return JSON.parse(JSON.stringify(obj, (_, v) => typeof v === 'bigint' ? v.toString() : v));
65
+ }
66
+ /**
67
+ * Helper to wrap a handler for OpenClaw's tool format
68
+ */
69
+ function wrapHandler(handler) {
70
+ return async (_toolCallId, params) => {
71
+ const result = await handler(params);
72
+ // Sanitize BigInt values in details to prevent framework serialization errors
73
+ const sanitizedResult = sanitizeBigInt(result);
74
+ return {
75
+ content: [{ type: 'text', text: JSON.stringify(result, (k, v) => typeof v === 'bigint' ? v.toString() : v, 2) }],
76
+ details: sanitizedResult,
77
+ };
78
+ };
79
+ }
80
+ /**
81
+ * OpenClaw Plugin Definition
82
+ */
83
+ export default {
84
+ id: 'amped-defi',
85
+ name: 'Amped DeFi',
86
+ description: 'DeFi operations plugin for swaps, bridging, and money market via SODAX SDK',
87
+ kind: 'tools',
88
+ configSchema,
89
+ register(api) {
90
+ // Apply config from OpenClaw
91
+ const config = api.pluginConfig || {};
92
+ applyConfig(config);
93
+ // Check for missing env vars (silent)
94
+ validateEnvironment();
95
+ // Initialize core components (async, non-blocking, silent)
96
+ (async () => {
97
+ try {
98
+ await getSodaxClientAsync();
99
+ getCacheStats();
100
+ new PolicyEngine();
101
+ getWalletManager();
102
+ }
103
+ catch (_error) {
104
+ // Silent initialization - errors will surface when tools are used
105
+ }
106
+ })();
107
+ // Register Discovery Tools
108
+ api.registerTool({
109
+ name: 'amped_supported_chains',
110
+ description: 'List all blockchain networks supported by the Amped DeFi plugin',
111
+ parameters: SupportedChainsSchema,
112
+ execute: wrapHandler(handleSupportedChains),
113
+ });
114
+ api.registerTool({
115
+ name: 'amped_supported_tokens',
116
+ description: 'List tokens supported on a specific chain for swaps and bridging',
117
+ parameters: SupportedTokensSchema,
118
+ execute: wrapHandler(handleSupportedTokens),
119
+ });
120
+ api.registerTool({
121
+ name: 'amped_wallet_address',
122
+ description: 'Get the wallet address for a specific wallet ID',
123
+ parameters: WalletAddressSchema,
124
+ execute: wrapHandler(handleWalletAddress),
125
+ });
126
+ api.registerTool({
127
+ name: 'amped_money_market_reserves',
128
+ description: 'Get money market reserve info (APY, utilization, liquidity)',
129
+ parameters: MoneyMarketReservesSchema,
130
+ execute: wrapHandler(handleMoneyMarketReserves),
131
+ });
132
+ api.registerTool({
133
+ name: 'amped_money_market_positions',
134
+ description: 'Get user positions in money market on a single chain',
135
+ parameters: MoneyMarketPositionsSchema,
136
+ execute: wrapHandler(handleMoneyMarketPositions),
137
+ });
138
+ api.registerTool({
139
+ name: 'amped_cross_chain_positions',
140
+ description: 'Get aggregated money market positions across all chains',
141
+ parameters: CrossChainPositionsSchema,
142
+ execute: wrapHandler(handleCrossChainPositions),
143
+ });
144
+ api.registerTool({
145
+ name: 'amped_user_intents',
146
+ description: 'Query user intent history from SODAX API',
147
+ parameters: UserIntentsSchema,
148
+ execute: wrapHandler(handleUserIntents),
149
+ });
150
+ api.registerTool({
151
+ name: 'amped_list_wallets',
152
+ 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".',
153
+ parameters: ListWalletsSchema,
154
+ execute: wrapHandler(handleListWallets),
155
+ });
156
+ api.registerTool({
157
+ name: 'amped_portfolio_summary',
158
+ 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".',
159
+ parameters: PortfolioSummarySchema,
160
+ execute: wrapHandler(handlePortfolioSummary),
161
+ });
162
+ // Register Wallet Management Tools
163
+ api.registerTool({
164
+ name: 'amped_add_wallet',
165
+ description: 'Add a new wallet with a nickname (evm-wallet-skill, bankr, or env)',
166
+ parameters: AddWalletSchema,
167
+ execute: wrapHandler(handleAddWallet),
168
+ });
169
+ api.registerTool({
170
+ name: 'amped_rename_wallet',
171
+ description: 'Rename a wallet to a new nickname',
172
+ parameters: RenameWalletSchema,
173
+ execute: wrapHandler(handleRenameWallet),
174
+ });
175
+ api.registerTool({
176
+ name: 'amped_remove_wallet',
177
+ description: 'Remove a wallet from configuration (does not delete funds)',
178
+ parameters: RemoveWalletSchema,
179
+ execute: wrapHandler(handleRemoveWallet),
180
+ });
181
+ api.registerTool({
182
+ name: 'amped_set_default_wallet',
183
+ description: 'Set which wallet to use by default for operations',
184
+ parameters: SetDefaultWalletSchema,
185
+ execute: wrapHandler(handleSetDefaultWallet),
186
+ });
187
+ // Register Swap Tools
188
+ api.registerTool({
189
+ name: 'amped_swap_quote',
190
+ description: 'Get a quote for swapping tokens (same chain or cross-chain)',
191
+ parameters: SwapQuoteSchema,
192
+ execute: wrapHandler(handleSwapQuote),
193
+ });
194
+ api.registerTool({
195
+ name: 'amped_swap_execute',
196
+ description: 'Execute a token swap using a previously obtained quote',
197
+ parameters: SwapExecuteSchema,
198
+ execute: wrapHandler(handleSwapExecute),
199
+ });
200
+ api.registerTool({
201
+ name: 'amped_swap_status',
202
+ description: 'Check the status of a swap/bridge operation by intent ID',
203
+ parameters: SwapStatusSchema,
204
+ execute: wrapHandler(handleSwapStatus),
205
+ });
206
+ api.registerTool({
207
+ name: 'amped_swap_cancel',
208
+ description: 'Cancel a pending swap/bridge operation',
209
+ parameters: SwapCancelSchema,
210
+ execute: wrapHandler(handleSwapCancel),
211
+ });
212
+ // Register Bridge Tools
213
+ api.registerTool({
214
+ name: 'amped_bridge_discover',
215
+ description: 'Discover available bridge routes between chains',
216
+ parameters: BridgeDiscoverSchema,
217
+ execute: wrapHandler(handleBridgeDiscover),
218
+ });
219
+ api.registerTool({
220
+ name: 'amped_bridge_quote',
221
+ description: 'Get a quote for bridging tokens between chains',
222
+ parameters: BridgeQuoteSchema,
223
+ execute: wrapHandler(handleBridgeQuote),
224
+ });
225
+ api.registerTool({
226
+ name: 'amped_bridge_execute',
227
+ description: 'Execute a bridge transfer using a previously obtained quote',
228
+ parameters: BridgeExecuteSchema,
229
+ execute: wrapHandler(handleBridgeExecute),
230
+ });
231
+ // Register Money Market Tools
232
+ api.registerTool({
233
+ name: 'amped_mm_supply',
234
+ description: 'Supply (deposit) tokens to money market to earn interest',
235
+ parameters: MmSupplySchema,
236
+ execute: wrapHandler(handleMmSupply),
237
+ });
238
+ api.registerTool({
239
+ name: 'amped_mm_withdraw',
240
+ description: 'Withdraw supplied tokens from money market',
241
+ parameters: MmWithdrawSchema,
242
+ execute: wrapHandler(handleMmWithdraw),
243
+ });
244
+ api.registerTool({
245
+ name: 'amped_mm_borrow',
246
+ description: 'Borrow tokens from money market (cross-chain capable)',
247
+ parameters: MmBorrowSchema,
248
+ execute: wrapHandler(handleMmBorrow),
249
+ });
250
+ api.registerTool({
251
+ name: 'amped_mm_repay',
252
+ description: 'Repay borrowed tokens to money market',
253
+ parameters: MmRepaySchema,
254
+ execute: wrapHandler(handleMmRepay),
255
+ });
256
+ // Register cleanup service
257
+ api.registerService({
258
+ id: 'amped-defi',
259
+ start: () => { },
260
+ stop: async () => {
261
+ resetSodaxClient();
262
+ },
263
+ });
264
+ },
265
+ };
266
+ // Re-export types and utilities for external use
267
+ export * from './types';
268
+ export { getSodaxClient, getSodaxClientAsync, resetSodaxClient } from './sodax/client';
269
+ export { getSpokeProvider, getCacheStats, clearProviderCache } from './providers/spokeProviderFactory';
270
+ export { EvmSpokeProvider, SonicSpokeProvider } from '@sodax/sdk';
271
+ export { PolicyEngine } from './policy/policyEngine';
272
+ export { WalletRegistry, getWalletRegistry } from './wallet/walletRegistry';
273
+ export { WalletManager, getWalletManager, resetWalletManager } from './wallet/walletManager';
274
+ // Legacy exports for backward compatibility
275
+ export async function activate() {
276
+ // Deprecated - use default export
277
+ }
278
+ export async function deactivate() {
279
+ resetSodaxClient();
280
+ }
281
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Policy Engine
3
+ *
4
+ * Enforces security policies for DeFi operations including:
5
+ * - Spend limits per transaction and daily
6
+ * - Allowed chain and token allowlists
7
+ * - Blocked recipient addresses
8
+ * - Maximum slippage tolerance
9
+ * - Simulation requirements
10
+ */
11
+ import { BridgeOperation, PolicyConfig } from '../types';
12
+ /**
13
+ * Policy check result
14
+ */
15
+ export interface PolicyCheckResult {
16
+ allowed: boolean;
17
+ reason?: string;
18
+ details?: Record<string, unknown>;
19
+ }
20
+ /**
21
+ * Policy Engine class for enforcing security constraints
22
+ */
23
+ export declare class PolicyEngine {
24
+ private config;
25
+ constructor(policyId?: string);
26
+ /**
27
+ * Load policy configuration from environment
28
+ *
29
+ * @param policyId - Optional policy profile ID for custom limits
30
+ * @returns The policy configuration
31
+ */
32
+ private loadPolicyConfig;
33
+ /**
34
+ * Check if a chain is allowed
35
+ *
36
+ * @param chainId - The chain ID to check
37
+ * @returns Policy check result
38
+ */
39
+ private checkChainAllowed;
40
+ /**
41
+ * Check if a token is allowed on a specific chain
42
+ *
43
+ * @param chainId - The chain ID
44
+ * @param token - The token address or symbol
45
+ * @returns Policy check result
46
+ */
47
+ private checkTokenAllowed;
48
+ /**
49
+ * Check if a recipient is blocked
50
+ *
51
+ * @param recipient - The recipient address
52
+ * @returns Policy check result
53
+ */
54
+ private checkRecipientNotBlocked;
55
+ /**
56
+ * Check bridge amount against limits
57
+ *
58
+ * @param token - The token address or symbol
59
+ * @param amount - The amount in human-readable units
60
+ * @returns Policy check result
61
+ */
62
+ private checkBridgeAmount;
63
+ /**
64
+ * Check a bridge operation against all policies
65
+ *
66
+ * @param operation - The bridge operation to validate
67
+ * @returns Policy check result
68
+ */
69
+ checkBridge(operation: BridgeOperation): Promise<PolicyCheckResult>;
70
+ /**
71
+ * Get the current policy configuration
72
+ * @returns The policy configuration
73
+ */
74
+ getConfig(): PolicyConfig;
75
+ /**
76
+ * Get available policy IDs from the configuration
77
+ * @returns Array of available policy IDs
78
+ */
79
+ getAvailablePolicies(): string[];
80
+ /**
81
+ * Check swap input amount against USD limits
82
+ */
83
+ private checkSwapAmount;
84
+ /**
85
+ * Check slippage against maximum allowed
86
+ */
87
+ private checkSlippage;
88
+ /**
89
+ * Check a swap operation against all policies
90
+ */
91
+ checkSwap(params: {
92
+ walletId: string;
93
+ srcChainId: string;
94
+ dstChainId: string;
95
+ srcToken: string;
96
+ dstToken: string;
97
+ inputAmount: string;
98
+ slippageBps: number;
99
+ policyId?: string;
100
+ }): Promise<PolicyCheckResult>;
101
+ /**
102
+ * Check borrow amount against limits
103
+ */
104
+ private checkBorrowAmount;
105
+ /**
106
+ * Check a money market operation against all policies
107
+ */
108
+ checkMoneyMarket(params: {
109
+ walletId: string;
110
+ chainId: string;
111
+ dstChainId?: string;
112
+ token: string;
113
+ amount: string;
114
+ amountUsd?: number;
115
+ operation: 'supply' | 'withdraw' | 'borrow' | 'repay';
116
+ policyId?: string;
117
+ }): Promise<PolicyCheckResult>;
118
+ }
119
+ //# sourceMappingURL=policyEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policyEngine.d.ts","sourceRoot":"","sources":["../../src/policy/policyEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;gBAEjB,QAAQ,CAAC,EAAE,MAAM;IAI7B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAehC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;;OAKG;IACG,WAAW,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgCzE;;;OAGG;IACH,SAAS,IAAI,YAAY;IAIzB;;;OAGG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAgBhC;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkC9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;QACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAyB/B"}