fibx 0.5.1 → 0.7.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 (206) hide show
  1. package/README.md +73 -2
  2. package/dist/index.js +277 -292
  3. package/dist/index.js.map +1 -1
  4. package/package.json +13 -14
  5. package/dist/commands/auth/import.d.ts +0 -3
  6. package/dist/commands/auth/import.d.ts.map +0 -1
  7. package/dist/commands/auth/import.js +0 -44
  8. package/dist/commands/auth/import.js.map +0 -1
  9. package/dist/commands/auth/login.d.ts +0 -3
  10. package/dist/commands/auth/login.d.ts.map +0 -1
  11. package/dist/commands/auth/login.js +0 -13
  12. package/dist/commands/auth/login.js.map +0 -1
  13. package/dist/commands/auth/logout.d.ts +0 -3
  14. package/dist/commands/auth/logout.d.ts.map +0 -1
  15. package/dist/commands/auth/logout.js +0 -11
  16. package/dist/commands/auth/logout.js.map +0 -1
  17. package/dist/commands/auth/verify.d.ts +0 -3
  18. package/dist/commands/auth/verify.d.ts.map +0 -1
  19. package/dist/commands/auth/verify.js +0 -30
  20. package/dist/commands/auth/verify.js.map +0 -1
  21. package/dist/commands/chain/transaction.d.ts +0 -3
  22. package/dist/commands/chain/transaction.d.ts.map +0 -1
  23. package/dist/commands/chain/transaction.js +0 -31
  24. package/dist/commands/chain/transaction.js.map +0 -1
  25. package/dist/commands/config/index.d.ts +0 -3
  26. package/dist/commands/config/index.d.ts.map +0 -1
  27. package/dist/commands/config/index.js +0 -97
  28. package/dist/commands/config/index.js.map +0 -1
  29. package/dist/commands/defi/aave.d.ts +0 -8
  30. package/dist/commands/defi/aave.d.ts.map +0 -1
  31. package/dist/commands/defi/aave.js +0 -238
  32. package/dist/commands/defi/aave.js.map +0 -1
  33. package/dist/commands/portfolio/index.d.ts +0 -3
  34. package/dist/commands/portfolio/index.d.ts.map +0 -1
  35. package/dist/commands/portfolio/index.js +0 -64
  36. package/dist/commands/portfolio/index.js.map +0 -1
  37. package/dist/commands/trade/status.d.ts +0 -3
  38. package/dist/commands/trade/status.d.ts.map +0 -1
  39. package/dist/commands/trade/status.js +0 -30
  40. package/dist/commands/trade/status.js.map +0 -1
  41. package/dist/commands/trade/swap.d.ts +0 -9
  42. package/dist/commands/trade/swap.d.ts.map +0 -1
  43. package/dist/commands/trade/swap.js +0 -205
  44. package/dist/commands/trade/swap.js.map +0 -1
  45. package/dist/commands/wallet/address.d.ts +0 -3
  46. package/dist/commands/wallet/address.d.ts.map +0 -1
  47. package/dist/commands/wallet/address.js +0 -13
  48. package/dist/commands/wallet/address.js.map +0 -1
  49. package/dist/commands/wallet/balance.d.ts +0 -3
  50. package/dist/commands/wallet/balance.d.ts.map +0 -1
  51. package/dist/commands/wallet/balance.js +0 -73
  52. package/dist/commands/wallet/balance.js.map +0 -1
  53. package/dist/commands/wallet/list.d.ts +0 -3
  54. package/dist/commands/wallet/list.d.ts.map +0 -1
  55. package/dist/commands/wallet/list.js +0 -22
  56. package/dist/commands/wallet/list.js.map +0 -1
  57. package/dist/commands/wallet/send.d.ts +0 -7
  58. package/dist/commands/wallet/send.d.ts.map +0 -1
  59. package/dist/commands/wallet/send.js +0 -115
  60. package/dist/commands/wallet/send.js.map +0 -1
  61. package/dist/index.d.ts +0 -3
  62. package/dist/index.d.ts.map +0 -1
  63. package/dist/lib/brand.d.ts +0 -5
  64. package/dist/lib/brand.d.ts.map +0 -1
  65. package/dist/lib/brand.js +0 -15
  66. package/dist/lib/brand.js.map +0 -1
  67. package/dist/lib/cache.d.ts +0 -3
  68. package/dist/lib/cache.d.ts.map +0 -1
  69. package/dist/lib/cache.js +0 -23
  70. package/dist/lib/cache.js.map +0 -1
  71. package/dist/lib/cli-helpers.d.ts +0 -10
  72. package/dist/lib/cli-helpers.d.ts.map +0 -1
  73. package/dist/lib/cli-helpers.js +0 -20
  74. package/dist/lib/cli-helpers.js.map +0 -1
  75. package/dist/lib/concurrency.d.ts +0 -8
  76. package/dist/lib/concurrency.d.ts.map +0 -1
  77. package/dist/lib/concurrency.js +0 -26
  78. package/dist/lib/concurrency.js.map +0 -1
  79. package/dist/lib/config.d.ts +0 -7
  80. package/dist/lib/config.d.ts.map +0 -1
  81. package/dist/lib/config.js +0 -9
  82. package/dist/lib/config.js.map +0 -1
  83. package/dist/lib/errors.d.ts +0 -28
  84. package/dist/lib/errors.d.ts.map +0 -1
  85. package/dist/lib/errors.js +0 -33
  86. package/dist/lib/errors.js.map +0 -1
  87. package/dist/lib/format.d.ts +0 -31
  88. package/dist/lib/format.d.ts.map +0 -1
  89. package/dist/lib/format.js +0 -169
  90. package/dist/lib/format.js.map +0 -1
  91. package/dist/lib/parse-evm-error.d.ts +0 -6
  92. package/dist/lib/parse-evm-error.d.ts.map +0 -1
  93. package/dist/lib/parse-evm-error.js +0 -48
  94. package/dist/lib/parse-evm-error.js.map +0 -1
  95. package/dist/lib/parseAmount.d.ts +0 -3
  96. package/dist/lib/parseAmount.d.ts.map +0 -1
  97. package/dist/lib/parseAmount.js +0 -9
  98. package/dist/lib/parseAmount.js.map +0 -1
  99. package/dist/lib/retry.d.ts +0 -20
  100. package/dist/lib/retry.d.ts.map +0 -1
  101. package/dist/lib/retry.js +0 -36
  102. package/dist/lib/retry.js.map +0 -1
  103. package/dist/lib/validation.d.ts +0 -6
  104. package/dist/lib/validation.d.ts.map +0 -1
  105. package/dist/lib/validation.js +0 -24
  106. package/dist/lib/validation.js.map +0 -1
  107. package/dist/mcp/handlers.d.ts +0 -87
  108. package/dist/mcp/handlers.d.ts.map +0 -1
  109. package/dist/mcp/handlers.js +0 -394
  110. package/dist/mcp/handlers.js.map +0 -1
  111. package/dist/mcp/server.d.ts +0 -2
  112. package/dist/mcp/server.d.ts.map +0 -1
  113. package/dist/mcp/server.js +0 -21
  114. package/dist/mcp/server.js.map +0 -1
  115. package/dist/mcp/tools.d.ts +0 -3
  116. package/dist/mcp/tools.d.ts.map +0 -1
  117. package/dist/mcp/tools.js +0 -227
  118. package/dist/mcp/tools.js.map +0 -1
  119. package/dist/services/api/client.d.ts +0 -34
  120. package/dist/services/api/client.d.ts.map +0 -1
  121. package/dist/services/api/client.js +0 -68
  122. package/dist/services/api/client.js.map +0 -1
  123. package/dist/services/auth/policy.d.ts +0 -2
  124. package/dist/services/auth/policy.d.ts.map +0 -1
  125. package/dist/services/auth/policy.js +0 -3
  126. package/dist/services/auth/policy.js.map +0 -1
  127. package/dist/services/auth/session.d.ts +0 -20
  128. package/dist/services/auth/session.d.ts.map +0 -1
  129. package/dist/services/auth/session.js +0 -70
  130. package/dist/services/auth/session.js.map +0 -1
  131. package/dist/services/chain/client.d.ts +0 -17493
  132. package/dist/services/chain/client.d.ts.map +0 -1
  133. package/dist/services/chain/client.js +0 -30
  134. package/dist/services/chain/client.js.map +0 -1
  135. package/dist/services/chain/constants.d.ts +0 -163
  136. package/dist/services/chain/constants.d.ts.map +0 -1
  137. package/dist/services/chain/constants.js +0 -118
  138. package/dist/services/chain/constants.js.map +0 -1
  139. package/dist/services/chain/erc20.d.ts +0 -100
  140. package/dist/services/chain/erc20.d.ts.map +0 -1
  141. package/dist/services/chain/erc20.js +0 -117
  142. package/dist/services/chain/erc20.js.map +0 -1
  143. package/dist/services/chain/nonceManager.d.ts +0 -13
  144. package/dist/services/chain/nonceManager.d.ts.map +0 -1
  145. package/dist/services/chain/nonceManager.js +0 -45
  146. package/dist/services/chain/nonceManager.js.map +0 -1
  147. package/dist/services/config/config.d.ts +0 -20
  148. package/dist/services/config/config.d.ts.map +0 -1
  149. package/dist/services/config/config.js +0 -75
  150. package/dist/services/config/config.js.map +0 -1
  151. package/dist/services/defi/aave.d.ts +0 -50
  152. package/dist/services/defi/aave.d.ts.map +0 -1
  153. package/dist/services/defi/aave.js +0 -605
  154. package/dist/services/defi/aave.js.map +0 -1
  155. package/dist/services/defi/abi/aave.d.ts +0 -304
  156. package/dist/services/defi/abi/aave.d.ts.map +0 -1
  157. package/dist/services/defi/abi/aave.js +0 -194
  158. package/dist/services/defi/abi/aave.js.map +0 -1
  159. package/dist/services/defi/constants.d.ts +0 -11
  160. package/dist/services/defi/constants.d.ts.map +0 -1
  161. package/dist/services/defi/constants.js +0 -12
  162. package/dist/services/defi/constants.js.map +0 -1
  163. package/dist/services/fibrous/abi/base.d.ts +0 -768
  164. package/dist/services/fibrous/abi/base.d.ts.map +0 -1
  165. package/dist/services/fibrous/abi/base.js +0 -984
  166. package/dist/services/fibrous/abi/base.js.map +0 -1
  167. package/dist/services/fibrous/abi/citrea.d.ts +0 -773
  168. package/dist/services/fibrous/abi/citrea.d.ts.map +0 -1
  169. package/dist/services/fibrous/abi/citrea.js +0 -990
  170. package/dist/services/fibrous/abi/citrea.js.map +0 -1
  171. package/dist/services/fibrous/abi/hyperevm.d.ts +0 -773
  172. package/dist/services/fibrous/abi/hyperevm.d.ts.map +0 -1
  173. package/dist/services/fibrous/abi/hyperevm.js +0 -990
  174. package/dist/services/fibrous/abi/hyperevm.js.map +0 -1
  175. package/dist/services/fibrous/abi/monad.d.ts +0 -773
  176. package/dist/services/fibrous/abi/monad.d.ts.map +0 -1
  177. package/dist/services/fibrous/abi/monad.js +0 -990
  178. package/dist/services/fibrous/abi/monad.js.map +0 -1
  179. package/dist/services/fibrous/balances.d.ts +0 -15
  180. package/dist/services/fibrous/balances.d.ts.map +0 -1
  181. package/dist/services/fibrous/balances.js +0 -27
  182. package/dist/services/fibrous/balances.js.map +0 -1
  183. package/dist/services/fibrous/health.d.ts +0 -12
  184. package/dist/services/fibrous/health.d.ts.map +0 -1
  185. package/dist/services/fibrous/health.js +0 -16
  186. package/dist/services/fibrous/health.js.map +0 -1
  187. package/dist/services/fibrous/route.d.ts +0 -48
  188. package/dist/services/fibrous/route.d.ts.map +0 -1
  189. package/dist/services/fibrous/route.js +0 -65
  190. package/dist/services/fibrous/route.js.map +0 -1
  191. package/dist/services/fibrous/tokens.d.ts +0 -12
  192. package/dist/services/fibrous/tokens.d.ts.map +0 -1
  193. package/dist/services/fibrous/tokens.js +0 -38
  194. package/dist/services/fibrous/tokens.js.map +0 -1
  195. package/dist/services/portfolio/portfolio.d.ts +0 -28
  196. package/dist/services/portfolio/portfolio.d.ts.map +0 -1
  197. package/dist/services/portfolio/portfolio.js +0 -116
  198. package/dist/services/portfolio/portfolio.js.map +0 -1
  199. package/dist/services/privy/account.d.ts +0 -20
  200. package/dist/services/privy/account.d.ts.map +0 -1
  201. package/dist/services/privy/account.js +0 -60
  202. package/dist/services/privy/account.js.map +0 -1
  203. package/dist/services/privy/client.d.ts +0 -2
  204. package/dist/services/privy/client.d.ts.map +0 -1
  205. package/dist/services/privy/client.js +0 -7
  206. package/dist/services/privy/client.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fibx",
3
- "version": "0.5.1",
4
- "description": "A powerful CLI for DeFi operations on Base, Citrea, HyperEVM, and Monad, powered by Fibrous.",
3
+ "version": "0.7.0",
4
+ "description": "Zero-dependency CLI for DeFi operations on Base, Citrea, HyperEVM, and Monad powered by Fibrous aggregation, with built-in MCP server for AI agents.",
5
5
  "author": "Ahmet Enes Dur",
6
6
  "repository": {
7
7
  "type": "git",
@@ -19,7 +19,7 @@
19
19
  "dist/"
20
20
  ],
21
21
  "scripts": {
22
- "build": "tsc",
22
+ "build": "tsup",
23
23
  "dev": "node --env-file=.env --import tsx/esm src/index.ts",
24
24
  "start": "node dist/index.js",
25
25
  "typecheck": "tsc --noEmit",
@@ -29,27 +29,26 @@
29
29
  "format:check": "prettier --check .",
30
30
  "prepublishOnly": "npm run build"
31
31
  },
32
- "dependencies": {
33
- "@modelcontextprotocol/sdk": "^1.27.1",
34
- "chalk": "^5.6.2",
35
- "commander": "^14.0.3",
36
- "env-paths": "^3.0.0",
37
- "inquirer": "^13.3.2",
38
- "ora": "^9.3.0",
39
- "viem": "^2.47.5",
40
- "zod": "^4.3.6"
41
- },
42
32
  "devDependencies": {
43
33
  "@eslint/js": "^9.39.4",
34
+ "@modelcontextprotocol/sdk": "^1.27.1",
44
35
  "@types/inquirer": "^9.0.9",
45
36
  "@types/node": "^25.5.0",
37
+ "chalk": "^5.6.2",
38
+ "commander": "^14.0.3",
39
+ "env-paths": "^3.0.0",
46
40
  "eslint": "^9.39.4",
47
41
  "eslint-config-prettier": "^10.1.8",
48
42
  "globals": "^17.4.0",
43
+ "inquirer": "^13.3.2",
44
+ "ora": "^9.3.0",
49
45
  "prettier": "^3.8.1",
46
+ "tsup": "^8.5.1",
50
47
  "tsx": "^4.21.0",
51
48
  "typescript": "^5.9.3",
52
- "typescript-eslint": "^8.57.1"
49
+ "typescript-eslint": "^8.57.1",
50
+ "viem": "^2.47.5",
51
+ "zod": "^4.3.6"
53
52
  },
54
53
  "engines": {
55
54
  "node": ">=18"
@@ -1,3 +0,0 @@
1
- import { type OutputOptions } from "../../lib/format.js";
2
- export declare function authImportCommand(opts: OutputOptions): Promise<void>;
3
- //# sourceMappingURL=import.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,KAAK,aAAa,EAClB,MAAM,qBAAqB,CAAC;AAM7B,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C1E"}
@@ -1,44 +0,0 @@
1
- import { createSpinner, outputResult, formatError, warn, } from "../../lib/format.js";
2
- import { saveSession } from "../../services/auth/session.js";
3
- import { privateKeyToAccount } from "viem/accounts";
4
- import inquirer from "inquirer";
5
- export async function authImportCommand(opts) {
6
- try {
7
- const { privateKey } = await inquirer.prompt([
8
- {
9
- type: "password",
10
- name: "privateKey",
11
- message: "Enter your private key (0x...):",
12
- validate: (input) => {
13
- if (!/^0x[a-fA-F0-9]{64}$/.test(input)) {
14
- return "Invalid private key format. Must start with 0x and be 66 chars long.";
15
- }
16
- return true;
17
- },
18
- },
19
- ]);
20
- const spinner = createSpinner("Importing key...").start();
21
- const account = privateKeyToAccount(privateKey);
22
- const address = account.address;
23
- saveSession({
24
- userId: "local-user",
25
- walletAddress: address,
26
- createdAt: new Date().toISOString(),
27
- type: "private-key",
28
- privateKey: privateKey,
29
- });
30
- spinner.succeed("Private key imported");
31
- outputResult({
32
- address: address,
33
- type: "private-key",
34
- message: "You're ready to go!",
35
- }, opts);
36
- console.log(warn("Your private key is stored locally in session.json."));
37
- console.log(warn("Make sure your machine is secure."));
38
- }
39
- catch (error) {
40
- console.error(formatError(error));
41
- process.exitCode = 1;
42
- }
43
- }
44
- //# sourceMappingURL=import.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/auth/import.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,YAAY,EACZ,WAAW,EACX,IAAI,GAEJ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAmB;IAC1D,IAAI,CAAC;QACJ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC5C;gBACC,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,iCAAiC;gBAC1C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACxC,OAAO,sEAAsE,CAAC;oBAC/E,CAAC;oBACD,OAAO,IAAI,CAAC;gBACb,CAAC;aACD;SACD,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE1D,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAiB,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAEhC,WAAW,CAAC;YACX,MAAM,EAAE,YAAY;YACpB,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,UAAU;SACtB,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAExC,YAAY,CACX;YACC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,qBAAqB;SAC9B,EACD,IAAI,CACJ,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type OutputOptions } from "../../lib/format.js";
2
- export declare function authLoginCommand(email: string, opts: OutputOptions): Promise<void>;
3
- //# sourceMappingURL=login.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGvE,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxF"}
@@ -1,13 +0,0 @@
1
- import { apiLogin } from "../../services/api/client.js";
2
- import { outputResult } from "../../lib/format.js";
3
- import { runCommand } from "../../lib/cli-helpers.js";
4
- export async function authLoginCommand(email, opts) {
5
- await runCommand("Sending OTP...", "OTP sent", "Failed to send OTP", async () => {
6
- await apiLogin(email);
7
- return { email };
8
- }, (data) => outputResult({
9
- email: data.email,
10
- message: `OTP sent to ${email}. Run: fibx auth verify ${email} <code>`,
11
- }, opts));
12
- }
13
- //# sourceMappingURL=login.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAmB;IACxE,MAAM,UAAU,CACf,gBAAgB,EAChB,UAAU,EACV,oBAAoB,EACpB,KAAK,IAAI,EAAE;QACV,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,IAAI,EAAE,EAAE,CACR,YAAY,CACX;QACC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,eAAe,KAAK,2BAA2B,KAAK,SAAS;KACtE,EACD,IAAI,CACJ,CACF,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const logoutCommand: Command;
3
- //# sourceMappingURL=logout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SAYvB,CAAC"}
@@ -1,11 +0,0 @@
1
- import { Command } from "commander";
2
- import { clearSession } from "../../services/auth/session.js";
3
- import { runCommand } from "../../lib/cli-helpers.js";
4
- export const logoutCommand = new Command("logout")
5
- .description("Log out and clear current session")
6
- .action(async () => {
7
- await runCommand("Logging out...", "Logged out. Session cleared.", "Logout failed", async () => {
8
- clearSession();
9
- }, () => { });
10
- });
11
- //# sourceMappingURL=logout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/commands/auth/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAChD,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,UAAU,CACf,gBAAgB,EAChB,8BAA8B,EAC9B,eAAe,EACf,KAAK,IAAI,EAAE;QACV,YAAY,EAAE,CAAC;IAChB,CAAC,EACD,GAAG,EAAE,GAAE,CAAC,CACR,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type OutputOptions } from "../../lib/format.js";
2
- export declare function authVerifyCommand(email: string, code: string, opts: OutputOptions): Promise<void>;
3
- //# sourceMappingURL=verify.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/verify.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnG,wBAAsB,iBAAiB,CACtC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,GACjB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -1,30 +0,0 @@
1
- import { apiVerify } from "../../services/api/client.js";
2
- import { saveSession } from "../../services/auth/session.js";
3
- import { createSpinner, outputResult, formatError } from "../../lib/format.js";
4
- export async function authVerifyCommand(email, code, opts) {
5
- const spinner = createSpinner("Verifying OTP...").start();
6
- try {
7
- const result = await apiVerify(email, code);
8
- spinner.text = "Saving session...";
9
- saveSession({
10
- userId: result.userId,
11
- walletId: result.walletId,
12
- walletAddress: result.walletAddress,
13
- userJwt: result.token,
14
- createdAt: new Date().toISOString(),
15
- type: "privy",
16
- });
17
- spinner.succeed(result.isExisting ? "Existing wallet connected" : "New wallet created");
18
- outputResult({
19
- walletAddress: result.walletAddress,
20
- walletId: result.walletId,
21
- message: "You're ready to go!",
22
- }, opts);
23
- }
24
- catch (error) {
25
- spinner.fail("Verification failed");
26
- console.error(formatError(error));
27
- process.exitCode = 1;
28
- }
29
- }
30
- //# sourceMappingURL=verify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/auth/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AAEnG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,KAAa,EACb,IAAY,EACZ,IAAmB;IAEnB,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE1D,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5C,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAEnC,WAAW,CAAC;YACX,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,aAAa,EAAE,MAAM,CAAC,aAA8B;YACpD,OAAO,EAAE,MAAM,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,OAAO;SACb,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAExF,YAAY,CACX;YACC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,qBAAqB;SAC9B,EACD,IAAI,CACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type OutputOptions } from "../../lib/format.js";
2
- export declare function txStatusCommand(hash: string, opts: OutputOptions): Promise<void>;
3
- //# sourceMappingURL=transaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/commands/chain/transaction.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAG3F,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCtF"}
@@ -1,31 +0,0 @@
1
- import { getPublicClient } from "../../services/chain/client.js";
2
- import { getChainConfig } from "../../services/chain/constants.js";
3
- import { outputResult } from "../../lib/format.js";
4
- import { runCommand } from "../../lib/cli-helpers.js";
5
- export async function txStatusCommand(hash, opts) {
6
- await runCommand(`Fetching transaction ${hash.slice(0, 10)}...`, "Transaction fetched", "Failed to fetch transaction", async (spinner) => {
7
- const globalOpts = opts;
8
- const chainName = globalOpts.chain || "base";
9
- const chain = getChainConfig(chainName);
10
- const publicClient = getPublicClient(chain);
11
- const txHash = hash;
12
- spinner.text = "Waiting for receipt...";
13
- const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
14
- spinner.text =
15
- receipt.status === "success" ? "Transaction confirmed" : "Transaction reverted";
16
- const explorerLink = chain.viemChain.blockExplorers?.default.url
17
- ? `${chain.viemChain.blockExplorers.default.url}/tx/${hash}`
18
- : undefined;
19
- return {
20
- status: receipt.status,
21
- blockNumber: receipt.blockNumber.toString(),
22
- gasUsed: receipt.gasUsed.toString(),
23
- from: receipt.from,
24
- to: receipt.to,
25
- txHash: hash,
26
- ...(explorerLink ? { explorer: explorerLink } : {}),
27
- chain: chain.name,
28
- };
29
- }, (data) => outputResult(data, opts));
30
- }
31
- //# sourceMappingURL=transaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/commands/chain/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAA0C,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAAmB;IACtE,MAAM,UAAU,CACf,wBAAwB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAC9C,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,EAAE,OAAO,EAAE,EAAE;QACjB,MAAM,UAAU,GAAG,IAAgC,CAAC;QACpD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC;QAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAY,CAAC;QAE5B,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE/E,OAAO,CAAC,IAAI;YACX,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAEjF,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;YAC/D,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,OAAO,IAAI,EAAE;YAC5D,CAAC,CAAC,SAAS,CAAC;QAEb,OAAO;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,KAAK,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC;IACH,CAAC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAClC,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- export declare function registerConfigCommands(program: Command): void;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAwGtD"}
@@ -1,97 +0,0 @@
1
- import chalk from "chalk";
2
- import { configService } from "../../services/config/config.js";
3
- import { SUPPORTED_CHAINS } from "../../services/chain/constants.js";
4
- import { success, warn, formatError } from "../../lib/format.js";
5
- import { BLUE } from "../../lib/brand.js";
6
- export function registerConfigCommands(program) {
7
- const configCmd = program
8
- .command("config")
9
- .description("Manage fibx configuration (RPC URLs, etc.)");
10
- configCmd
11
- .command("set-rpc")
12
- .description("Set a custom RPC URL for a specific chain")
13
- .argument("<chain>", "Chain name (base, citrea, hyperevm, monad)")
14
- .argument("<url>", "RPC URL")
15
- .addHelpText("after", "\nExamples:\n $ fibx config set-rpc base https://my-rpc.example.com\n $ fibx config set-rpc monad https://rpc.monad.xyz")
16
- .action((chain, url) => {
17
- if (!SUPPORTED_CHAINS[chain]) {
18
- console.error(formatError(new Error(`Unsupported chain: ${chain}`)));
19
- console.log(chalk.gray(`Supported chains: ${Object.keys(SUPPORTED_CHAINS).join(", ")}`));
20
- process.exit(1);
21
- }
22
- try {
23
- new URL(url); // Validate URL format
24
- }
25
- catch {
26
- console.error(formatError(new Error("Invalid URL format.")));
27
- process.exit(1);
28
- }
29
- configService.setRpcUrl(chain, url);
30
- console.log(success(`Updated RPC for ${chain} to: ${url}`));
31
- });
32
- configCmd
33
- .command("get-rpc")
34
- .description("Get the current RPC URL for a chain")
35
- .argument("<chain>", "Chain name")
36
- .action((chain) => {
37
- const customUrl = configService.getRpcUrl(chain);
38
- const defaultUrl = SUPPORTED_CHAINS[chain]?.rpcUrl;
39
- if (!defaultUrl) {
40
- console.error(formatError(new Error(`Unsupported chain: ${chain}`)));
41
- process.exit(1);
42
- }
43
- if (customUrl) {
44
- console.log(chalk.bold("Current (Custom):"), chalk.hex(BLUE)(customUrl));
45
- console.log(chalk.gray("Default:"), chalk.dim(defaultUrl));
46
- }
47
- else {
48
- console.log(chalk.bold("Current (Default):"), defaultUrl);
49
- }
50
- });
51
- configCmd
52
- .command("list")
53
- .description("List all configuration")
54
- .action(() => {
55
- const config = configService.getConfig();
56
- console.log(chalk.bold.hex(BLUE)("\n Custom RPCs"));
57
- if (Object.keys(config.rpcUrls).length === 0) {
58
- console.log(chalk.gray(" (None set)"));
59
- }
60
- else {
61
- for (const [chain, url] of Object.entries(config.rpcUrls)) {
62
- console.log(` ${chalk.white(chain.padEnd(12))} ${chalk.hex(BLUE)(url)}`);
63
- }
64
- }
65
- console.log("");
66
- });
67
- configCmd
68
- .command("reset-rpc")
69
- .description("Reset custom RPC URL(s) to default")
70
- .argument("[chain]", "Chain name (omit to reset all)")
71
- .action((chain) => {
72
- if (chain) {
73
- if (!SUPPORTED_CHAINS[chain]) {
74
- console.error(formatError(new Error(`Unsupported chain: ${chain}`)));
75
- console.log(chalk.gray(`Supported chains: ${Object.keys(SUPPORTED_CHAINS).join(", ")}`));
76
- process.exit(1);
77
- }
78
- const currentUrl = configService.getRpcUrl(chain);
79
- if (!currentUrl) {
80
- console.log(warn(`No custom RPC set for ${chain}. Already using default.`));
81
- return;
82
- }
83
- configService.resetRpcUrl(chain);
84
- console.log(success(`Reset RPC for ${chain} to default.`));
85
- }
86
- else {
87
- const config = configService.getConfig();
88
- if (Object.keys(config.rpcUrls).length === 0) {
89
- console.log(warn("No custom RPCs set. Already using defaults."));
90
- return;
91
- }
92
- configService.resetAll();
93
- console.log(success("All custom RPC URLs have been reset to defaults."));
94
- }
95
- });
96
- }
97
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- interface GlobalOptions {
2
- json?: boolean;
3
- chain?: string;
4
- simulate?: boolean;
5
- }
6
- export declare const aaveCommand: (action: string, amount: string, tokenSymbol: string, opts: GlobalOptions) => Promise<void>;
7
- export {};
8
- //# sourceMappingURL=aave.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aave.d.ts","sourceRoot":"","sources":["../../../src/commands/defi/aave.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,eAAO,MAAM,WAAW,GACvB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,MAAM,aAAa,kBAmGnB,CAAC"}
@@ -1,238 +0,0 @@
1
- import chalk from "chalk";
2
- import { AaveService } from "../../services/defi/aave.js";
3
- import { getChainConfig } from "../../services/chain/constants.js";
4
- import { resolveToken } from "../../services/fibrous/tokens.js";
5
- import { HEALTH_FACTOR_WARNING_THRESHOLD, HEALTH_FACTOR_CRITICAL_THRESHOLD, } from "../../services/defi/constants.js";
6
- import { createSpinner, outputResult, formatResult, formatError } from "../../lib/format.js";
7
- import { MINT } from "../../lib/brand.js";
8
- export const aaveCommand = async (action, amount, tokenSymbol, opts) => {
9
- const spinner = createSpinner("Initializing Aave service...").start();
10
- try {
11
- const chainConfig = getChainConfig("base");
12
- const aave = new AaveService(chainConfig);
13
- try {
14
- await attemptSessionLogin(aave, chainConfig);
15
- }
16
- catch {
17
- // No session = read-only
18
- }
19
- const userAddress = aave.getAccountAddress();
20
- if (action === "status") {
21
- if (!userAddress) {
22
- spinner.fail("No wallet connected. Run `fibx auth login` or `fibx auth import`.");
23
- process.exitCode = 1;
24
- return;
25
- }
26
- await handleStatus(aave, userAddress, opts, spinner);
27
- return;
28
- }
29
- if (action === "markets") {
30
- await handleMarkets(aave, opts, spinner);
31
- return;
32
- }
33
- // Write operations require an active wallet session
34
- if (!userAddress) {
35
- spinner.fail("No active session found. Please login or import a private key.");
36
- process.exitCode = 1;
37
- return;
38
- }
39
- if (!isValidAction(action)) {
40
- spinner.fail(`Unknown action: ${action}`);
41
- console.log(chalk.gray("Available actions: status, markets, supply, borrow, repay, withdraw"));
42
- process.exitCode = 1;
43
- return;
44
- }
45
- if (!tokenSymbol) {
46
- spinner.fail(`Token is required for action: ${action}`);
47
- process.exitCode = 1;
48
- return;
49
- }
50
- if (!amount) {
51
- spinner.fail(`Amount is required for action: ${action}`);
52
- process.exitCode = 1;
53
- return;
54
- }
55
- spinner.text = `Resolving token ${tokenSymbol}...`;
56
- let token = await resolveToken(tokenSymbol, chainConfig);
57
- if (token.address === chainConfig.nativeTokenAddress) {
58
- token = {
59
- ...token,
60
- address: chainConfig.wrappedNativeAddress,
61
- symbol: "WETH",
62
- name: "Wrapped Ether",
63
- };
64
- }
65
- spinner.text = "Interacting with Aave Protocol...";
66
- switch (action) {
67
- case "supply":
68
- await handleSupply(aave, token, amount, spinner, opts);
69
- break;
70
- case "borrow":
71
- await handleBorrow(aave, token, amount, spinner, opts);
72
- break;
73
- case "repay":
74
- await handleRepay(aave, token, amount, spinner, opts);
75
- break;
76
- case "withdraw":
77
- await handleWithdraw(aave, token, amount, spinner, opts, tokenSymbol.toUpperCase() === chainConfig.nativeSymbol);
78
- break;
79
- }
80
- }
81
- catch (error) {
82
- spinner.fail("Aave operation failed");
83
- console.error(formatError(error));
84
- process.exitCode = 1;
85
- }
86
- };
87
- function isValidAction(action) {
88
- return ["status", "markets", "supply", "borrow", "repay", "withdraw"].includes(action);
89
- }
90
- function getExplorerLink(txHash) {
91
- const chain = getChainConfig("base");
92
- const baseUrl = chain.viemChain.blockExplorers?.default.url;
93
- return baseUrl ? `${baseUrl}/tx/${txHash}` : undefined;
94
- }
95
- async function attemptSessionLogin(aave, chainConfig) {
96
- try {
97
- const { loadSession } = await import("../../services/auth/session.js");
98
- const { getWalletClient } = await import("../../services/chain/client.js");
99
- const session = loadSession();
100
- if (session) {
101
- const walletClient = getWalletClient(session, chainConfig);
102
- aave.setWalletClient(walletClient);
103
- }
104
- }
105
- catch {
106
- // No session
107
- }
108
- }
109
- async function handleStatus(aave, userAddress, opts, spinner) {
110
- spinner.text = `Fetching Aave V3 data for ${userAddress.slice(0, 6)}...${userAddress.slice(-4)}...`;
111
- const data = await aave.getUserAccountData(userAddress);
112
- spinner.succeed("Position loaded");
113
- const hf = parseFloat(data.healthFactor);
114
- let hfColor = chalk.green;
115
- if (hf < HEALTH_FACTOR_CRITICAL_THRESHOLD)
116
- hfColor = chalk.red;
117
- else if (hf < HEALTH_FACTOR_WARNING_THRESHOLD)
118
- hfColor = chalk.yellow;
119
- const hfDisplay = hf > 100 ? "Safe (>100)" : hf.toFixed(2);
120
- if (opts.json) {
121
- outputResult(data, { json: true });
122
- return;
123
- }
124
- console.log(chalk.bold.hex(MINT)("\n Aave V3 Position (Base)\n"));
125
- console.log(formatResult({
126
- healthFactor: hfColor(hfDisplay),
127
- collateral: `$${parseFloat(data.totalCollateralUSD).toFixed(2)}`,
128
- debt: `$${parseFloat(data.totalDebtUSD).toFixed(2)}`,
129
- availableBorrow: `$${parseFloat(data.availableBorrowsUSD).toFixed(2)}`,
130
- }));
131
- console.log();
132
- }
133
- // Format large numbers compactly
134
- const fmtNum = (s) => {
135
- const n = parseFloat(s);
136
- if (n >= 1_000_000)
137
- return `${(n / 1_000_000).toFixed(2)}M`;
138
- if (n >= 1_000)
139
- return `${(n / 1_000).toFixed(2)}K`;
140
- return n.toFixed(2);
141
- };
142
- async function handleMarkets(aave, opts, spinner) {
143
- spinner.text = "Fetching Aave V3 markets...";
144
- const markets = await aave.getMarkets();
145
- spinner.succeed(`Found ${markets.length} active markets`);
146
- if (opts.json) {
147
- outputResult(markets, { json: true });
148
- return;
149
- }
150
- console.log(chalk.bold.hex(MINT)("\n Aave V3 Markets on Base\n"));
151
- // Table header
152
- const header = [
153
- "Token".padEnd(10),
154
- "Supply APY".padEnd(12),
155
- "Borrow APY".padEnd(12),
156
- "Total Supply".padEnd(18),
157
- "Total Borrow".padEnd(18),
158
- "LTV".padEnd(8),
159
- ].join(" ");
160
- console.log(chalk.dim(` ${header}`));
161
- console.log(chalk.dim(` ${"─".repeat(header.length)}`));
162
- for (const m of markets) {
163
- const frozen = m.isFrozen ? chalk.yellow(" ❄") : "";
164
- const supplyColor = chalk.green;
165
- const borrowVal = parseFloat(m.borrowAPY);
166
- const borrowColor = borrowVal > 10 ? chalk.red : borrowVal > 5 ? chalk.yellow : chalk.white;
167
- const row = [
168
- chalk.white.bold(m.symbol.padEnd(10)),
169
- supplyColor(m.supplyAPY.padEnd(12)),
170
- borrowColor(m.borrowAPY.padEnd(12)),
171
- chalk.dim(fmtNum(m.totalSupply).padEnd(18)),
172
- chalk.dim(fmtNum(m.totalBorrow).padEnd(18)),
173
- chalk.white(m.ltv.padEnd(8)),
174
- ].join(" ");
175
- console.log(` ${row}${frozen}`);
176
- }
177
- console.log();
178
- }
179
- async function handleSupply(aave, token, amount, spinner, opts) {
180
- const txHash = await aave.supplyWithAutoWrap(token.address, amount, (status) => {
181
- spinner.text = status;
182
- });
183
- spinner.succeed("Supply confirmed");
184
- const explorer = getExplorerLink(txHash);
185
- outputResult({
186
- action: "Supply",
187
- amount,
188
- token: token.symbol,
189
- txHash,
190
- ...(explorer ? { explorer } : {}),
191
- chain: "base",
192
- }, { json: !!opts.json });
193
- }
194
- async function handleBorrow(aave, token, amount, spinner, opts) {
195
- spinner.text = "Signaling Aave Borrow...";
196
- const tx = await aave.borrow(token.address, amount);
197
- spinner.succeed("Borrow confirmed");
198
- const explorer = getExplorerLink(tx);
199
- outputResult({
200
- action: "Borrow",
201
- amount,
202
- token: token.symbol,
203
- txHash: tx,
204
- ...(explorer ? { explorer } : {}),
205
- chain: "base",
206
- }, { json: !!opts.json });
207
- }
208
- async function handleRepay(aave, token, amount, spinner, opts) {
209
- const txHash = await aave.repayWithAutoWrap(token.address, amount, (status) => {
210
- spinner.text = status;
211
- });
212
- spinner.succeed("Repay confirmed");
213
- const explorer = getExplorerLink(txHash);
214
- outputResult({
215
- action: "Repay",
216
- amount: amount === "-1" || amount.toLowerCase() === "max" ? "MAX" : amount,
217
- token: token.symbol,
218
- txHash,
219
- ...(explorer ? { explorer } : {}),
220
- chain: "base",
221
- }, { json: !!opts.json });
222
- }
223
- async function handleWithdraw(aave, token, amount, spinner, opts, isNativeETH = false) {
224
- const txHash = await aave.withdrawWithAutoUnwrap(token.address, amount, isNativeETH, (status) => {
225
- spinner.text = status;
226
- });
227
- spinner.succeed("Withdraw confirmed");
228
- const explorer = getExplorerLink(txHash);
229
- outputResult({
230
- action: "Withdraw",
231
- amount,
232
- token: isNativeETH ? "ETH (unwrapped)" : token.symbol,
233
- txHash,
234
- ...(explorer ? { explorer } : {}),
235
- chain: "base",
236
- }, { json: !!opts.json });
237
- }
238
- //# sourceMappingURL=aave.js.map