starkfi 0.1.0 → 0.3.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 (240) hide show
  1. package/LICENSE +1 -1
  2. package/MCP.md +292 -0
  3. package/README.md +424 -54
  4. package/dist/commands/auth/login.js +2 -2
  5. package/dist/commands/auth/login.js.map +1 -1
  6. package/dist/commands/auth/verify.d.ts.map +1 -1
  7. package/dist/commands/auth/verify.js +2 -2
  8. package/dist/commands/auth/verify.js.map +1 -1
  9. package/dist/commands/batch/batch.d.ts +3 -0
  10. package/dist/commands/batch/batch.d.ts.map +1 -0
  11. package/dist/commands/batch/batch.js +155 -0
  12. package/dist/commands/batch/batch.js.map +1 -0
  13. package/dist/commands/chain/tx-status.js +2 -2
  14. package/dist/commands/chain/tx-status.js.map +1 -1
  15. package/dist/commands/config/config.d.ts.map +1 -1
  16. package/dist/commands/config/config.js +23 -34
  17. package/dist/commands/config/config.js.map +1 -1
  18. package/dist/commands/lending/lending.d.ts +1 -0
  19. package/dist/commands/lending/lending.d.ts.map +1 -1
  20. package/dist/commands/lending/lending.js +197 -51
  21. package/dist/commands/lending/lending.js.map +1 -1
  22. package/dist/commands/portfolio/portfolio.d.ts +3 -0
  23. package/dist/commands/portfolio/portfolio.d.ts.map +1 -0
  24. package/dist/commands/portfolio/portfolio.js +76 -0
  25. package/dist/commands/portfolio/portfolio.js.map +1 -0
  26. package/dist/commands/staking/staking.d.ts +1 -1
  27. package/dist/commands/staking/staking.d.ts.map +1 -1
  28. package/dist/commands/staking/staking.js +144 -61
  29. package/dist/commands/staking/staking.js.map +1 -1
  30. package/dist/commands/trade/multi-swap.d.ts +3 -0
  31. package/dist/commands/trade/multi-swap.d.ts.map +1 -0
  32. package/dist/commands/trade/multi-swap.js +141 -0
  33. package/dist/commands/trade/multi-swap.js.map +1 -0
  34. package/dist/commands/trade/status.js +2 -2
  35. package/dist/commands/trade/status.js.map +1 -1
  36. package/dist/commands/trade/swap.d.ts.map +1 -1
  37. package/dist/commands/trade/swap.js +48 -12
  38. package/dist/commands/trade/swap.js.map +1 -1
  39. package/dist/commands/wallet/balance.d.ts.map +1 -1
  40. package/dist/commands/wallet/balance.js +20 -3
  41. package/dist/commands/wallet/balance.js.map +1 -1
  42. package/dist/commands/wallet/deploy.d.ts.map +1 -1
  43. package/dist/commands/wallet/deploy.js +2 -1
  44. package/dist/commands/wallet/deploy.js.map +1 -1
  45. package/dist/commands/wallet/send.d.ts.map +1 -1
  46. package/dist/commands/wallet/send.js +46 -9
  47. package/dist/commands/wallet/send.js.map +1 -1
  48. package/dist/index.js +162 -9
  49. package/dist/index.js.map +1 -1
  50. package/dist/lib/banner.d.ts +6 -0
  51. package/dist/lib/banner.d.ts.map +1 -0
  52. package/dist/lib/banner.js +78 -0
  53. package/dist/lib/banner.js.map +1 -0
  54. package/dist/lib/concurrency.d.ts +2 -0
  55. package/dist/lib/concurrency.d.ts.map +1 -0
  56. package/dist/lib/concurrency.js +21 -0
  57. package/dist/lib/concurrency.js.map +1 -0
  58. package/dist/lib/config.d.ts +0 -11
  59. package/dist/lib/config.d.ts.map +1 -1
  60. package/dist/lib/config.js +0 -20
  61. package/dist/lib/config.js.map +1 -1
  62. package/dist/lib/errors.d.ts +2 -0
  63. package/dist/lib/errors.d.ts.map +1 -1
  64. package/dist/lib/errors.js +2 -0
  65. package/dist/lib/errors.js.map +1 -1
  66. package/dist/lib/fetch.d.ts +4 -0
  67. package/dist/lib/fetch.d.ts.map +1 -0
  68. package/dist/lib/fetch.js +13 -0
  69. package/dist/lib/fetch.js.map +1 -0
  70. package/dist/lib/format.d.ts +12 -2
  71. package/dist/lib/format.d.ts.map +1 -1
  72. package/dist/lib/format.js +86 -23
  73. package/dist/lib/format.js.map +1 -1
  74. package/dist/lib/retry.d.ts +8 -0
  75. package/dist/lib/retry.d.ts.map +1 -0
  76. package/dist/lib/retry.js +25 -0
  77. package/dist/lib/retry.js.map +1 -0
  78. package/dist/lib/types.d.ts +6 -0
  79. package/dist/lib/types.d.ts.map +1 -0
  80. package/dist/lib/types.js +2 -0
  81. package/dist/lib/types.js.map +1 -0
  82. package/dist/lib/validation.d.ts +0 -12
  83. package/dist/lib/validation.d.ts.map +1 -1
  84. package/dist/lib/validation.js +1 -23
  85. package/dist/lib/validation.js.map +1 -1
  86. package/dist/mcp/handlers/batch.d.ts +13 -0
  87. package/dist/mcp/handlers/batch.d.ts.map +1 -0
  88. package/dist/mcp/handlers/batch.js +33 -0
  89. package/dist/mcp/handlers/batch.js.map +1 -0
  90. package/dist/mcp/handlers/config.d.ts +1 -1
  91. package/dist/mcp/handlers/config.d.ts.map +1 -1
  92. package/dist/mcp/handlers/config.js +11 -12
  93. package/dist/mcp/handlers/config.js.map +1 -1
  94. package/dist/mcp/handlers/index.d.ts +3 -0
  95. package/dist/mcp/handlers/index.d.ts.map +1 -1
  96. package/dist/mcp/handlers/index.js +3 -0
  97. package/dist/mcp/handlers/index.js.map +1 -1
  98. package/dist/mcp/handlers/lending.d.ts +12 -1
  99. package/dist/mcp/handlers/lending.d.ts.map +1 -1
  100. package/dist/mcp/handlers/lending.js +67 -23
  101. package/dist/mcp/handlers/lending.js.map +1 -1
  102. package/dist/mcp/handlers/multi-swap.d.ts +27 -0
  103. package/dist/mcp/handlers/multi-swap.d.ts.map +1 -0
  104. package/dist/mcp/handlers/multi-swap.js +73 -0
  105. package/dist/mcp/handlers/multi-swap.js.map +1 -0
  106. package/dist/mcp/handlers/portfolio.d.ts +7 -0
  107. package/dist/mcp/handlers/portfolio.d.ts.map +1 -0
  108. package/dist/mcp/handlers/portfolio.js +11 -0
  109. package/dist/mcp/handlers/portfolio.js.map +1 -0
  110. package/dist/mcp/handlers/staking.d.ts +13 -1
  111. package/dist/mcp/handlers/staking.d.ts.map +1 -1
  112. package/dist/mcp/handlers/staking.js +18 -5
  113. package/dist/mcp/handlers/staking.js.map +1 -1
  114. package/dist/mcp/handlers/trade.d.ts +1 -0
  115. package/dist/mcp/handlers/trade.d.ts.map +1 -1
  116. package/dist/mcp/handlers/trade.js +27 -13
  117. package/dist/mcp/handlers/trade.js.map +1 -1
  118. package/dist/mcp/handlers/wallet.d.ts +1 -0
  119. package/dist/mcp/handlers/wallet.d.ts.map +1 -1
  120. package/dist/mcp/handlers/wallet.js +24 -5
  121. package/dist/mcp/handlers/wallet.js.map +1 -1
  122. package/dist/mcp/server.d.ts.map +1 -1
  123. package/dist/mcp/server.js +45 -4
  124. package/dist/mcp/server.js.map +1 -1
  125. package/dist/mcp/tools/auth.d.ts +3 -0
  126. package/dist/mcp/tools/auth.d.ts.map +1 -0
  127. package/dist/mcp/tools/auth.js +17 -0
  128. package/dist/mcp/tools/auth.js.map +1 -0
  129. package/dist/mcp/tools/error-handling.d.ts +12 -0
  130. package/dist/mcp/tools/error-handling.d.ts.map +1 -0
  131. package/dist/mcp/tools/error-handling.js +28 -0
  132. package/dist/mcp/tools/error-handling.js.map +1 -0
  133. package/dist/mcp/tools/index.d.ts +11 -0
  134. package/dist/mcp/tools/index.d.ts.map +1 -0
  135. package/dist/mcp/tools/index.js +19 -0
  136. package/dist/mcp/tools/index.js.map +1 -0
  137. package/dist/mcp/tools/lending.d.ts +3 -0
  138. package/dist/mcp/tools/lending.d.ts.map +1 -0
  139. package/dist/mcp/tools/lending.js +71 -0
  140. package/dist/mcp/tools/lending.js.map +1 -0
  141. package/dist/mcp/tools/staking.d.ts +3 -0
  142. package/dist/mcp/tools/staking.d.ts.map +1 -0
  143. package/dist/mcp/tools/staking.js +50 -0
  144. package/dist/mcp/tools/staking.js.map +1 -0
  145. package/dist/mcp/tools/trade.d.ts +3 -0
  146. package/dist/mcp/tools/trade.d.ts.map +1 -0
  147. package/dist/mcp/tools/trade.js +63 -0
  148. package/dist/mcp/tools/trade.js.map +1 -0
  149. package/dist/mcp/tools/wallet.d.ts +3 -0
  150. package/dist/mcp/tools/wallet.d.ts.map +1 -0
  151. package/dist/mcp/tools/wallet.js +27 -0
  152. package/dist/mcp/tools/wallet.js.map +1 -0
  153. package/dist/mcp/tools.d.ts.map +1 -1
  154. package/dist/mcp/tools.js +125 -41
  155. package/dist/mcp/tools.js.map +1 -1
  156. package/dist/services/api/client.d.ts +0 -12
  157. package/dist/services/api/client.d.ts.map +1 -1
  158. package/dist/services/api/client.js +7 -16
  159. package/dist/services/api/client.js.map +1 -1
  160. package/dist/services/auth/session.d.ts +1 -7
  161. package/dist/services/auth/session.d.ts.map +1 -1
  162. package/dist/services/auth/session.js +21 -0
  163. package/dist/services/auth/session.js.map +1 -1
  164. package/dist/services/batch/batch.d.ts +35 -0
  165. package/dist/services/batch/batch.d.ts.map +1 -0
  166. package/dist/services/batch/batch.js +110 -0
  167. package/dist/services/batch/batch.js.map +1 -0
  168. package/dist/services/config/config.d.ts +3 -0
  169. package/dist/services/config/config.d.ts.map +1 -1
  170. package/dist/services/config/config.js +30 -1
  171. package/dist/services/config/config.js.map +1 -1
  172. package/dist/services/fibrous/config.d.ts +4 -0
  173. package/dist/services/fibrous/config.d.ts.map +1 -0
  174. package/dist/services/fibrous/config.js +4 -0
  175. package/dist/services/fibrous/config.js.map +1 -0
  176. package/dist/services/fibrous/health.js +1 -1
  177. package/dist/services/fibrous/health.js.map +1 -1
  178. package/dist/services/fibrous/route.d.ts +15 -6
  179. package/dist/services/fibrous/route.d.ts.map +1 -1
  180. package/dist/services/fibrous/route.js +64 -3
  181. package/dist/services/fibrous/route.js.map +1 -1
  182. package/dist/services/portfolio/portfolio.d.ts +31 -0
  183. package/dist/services/portfolio/portfolio.d.ts.map +1 -0
  184. package/dist/services/portfolio/portfolio.js +104 -0
  185. package/dist/services/portfolio/portfolio.js.map +1 -0
  186. package/dist/services/simulate/simulate.d.ts +10 -0
  187. package/dist/services/simulate/simulate.d.ts.map +1 -0
  188. package/dist/services/simulate/simulate.js +57 -0
  189. package/dist/services/simulate/simulate.js.map +1 -0
  190. package/dist/services/staking/staking.d.ts +9 -30
  191. package/dist/services/staking/staking.d.ts.map +1 -1
  192. package/dist/services/staking/staking.js +44 -52
  193. package/dist/services/staking/staking.js.map +1 -1
  194. package/dist/services/starkzap/client.d.ts +2 -1
  195. package/dist/services/starkzap/client.d.ts.map +1 -1
  196. package/dist/services/starkzap/client.js +39 -21
  197. package/dist/services/starkzap/client.js.map +1 -1
  198. package/dist/services/starkzap/config.d.ts +6 -0
  199. package/dist/services/starkzap/config.d.ts.map +1 -0
  200. package/dist/services/starkzap/config.js +13 -0
  201. package/dist/services/starkzap/config.js.map +1 -0
  202. package/dist/services/tokens/balances.d.ts.map +1 -1
  203. package/dist/services/tokens/balances.js +8 -8
  204. package/dist/services/tokens/balances.js.map +1 -1
  205. package/dist/services/tokens/tokens.d.ts +2 -3
  206. package/dist/services/tokens/tokens.d.ts.map +1 -1
  207. package/dist/services/tokens/tokens.js +3 -8
  208. package/dist/services/tokens/tokens.js.map +1 -1
  209. package/dist/services/vesu/api.d.ts +28 -0
  210. package/dist/services/vesu/api.d.ts.map +1 -0
  211. package/dist/services/vesu/api.js +91 -0
  212. package/dist/services/vesu/api.js.map +1 -0
  213. package/dist/services/vesu/config.d.ts +9 -0
  214. package/dist/services/vesu/config.d.ts.map +1 -0
  215. package/dist/services/vesu/config.js +32 -0
  216. package/dist/services/vesu/config.js.map +1 -0
  217. package/dist/services/vesu/index.d.ts +2 -0
  218. package/dist/services/vesu/index.d.ts.map +1 -1
  219. package/dist/services/vesu/index.js +2 -0
  220. package/dist/services/vesu/index.js.map +1 -1
  221. package/dist/services/vesu/lending.d.ts +9 -5
  222. package/dist/services/vesu/lending.d.ts.map +1 -1
  223. package/dist/services/vesu/lending.js +176 -60
  224. package/dist/services/vesu/lending.js.map +1 -1
  225. package/dist/services/vesu/pools.d.ts +6 -12
  226. package/dist/services/vesu/pools.d.ts.map +1 -1
  227. package/dist/services/vesu/pools.js +11 -31
  228. package/dist/services/vesu/pools.js.map +1 -1
  229. package/package.json +88 -82
  230. package/skills/README.md +59 -0
  231. package/skills/authenticate-wallet/SKILL.md +119 -0
  232. package/skills/balance/SKILL.md +80 -0
  233. package/skills/batch/SKILL.md +118 -0
  234. package/skills/config/SKILL.md +144 -0
  235. package/skills/lending/SKILL.md +209 -0
  236. package/skills/multi-swap/SKILL.md +95 -0
  237. package/skills/portfolio/SKILL.md +82 -0
  238. package/skills/send/SKILL.md +82 -0
  239. package/skills/staking/SKILL.md +188 -0
  240. package/skills/trade/SKILL.md +92 -0
@@ -2,8 +2,9 @@ import { requireSession } from "../../services/auth/session.js";
2
2
  import { initSDKAndWallet } from "../../services/starkzap/client.js";
3
3
  import { resolveToken } from "../../services/tokens/tokens.js";
4
4
  import { getRoute, getCalldata } from "../../services/fibrous/route.js";
5
- import { createSpinner, formatResult } from "../../lib/format.js";
6
- import { FIBROUS_ROUTER_ADDRESS } from "../../lib/config.js";
5
+ import { createSpinner, formatResult, formatError } from "../../lib/format.js";
6
+ import { FIBROUS_ROUTER_ADDRESS } from "../../services/fibrous/config.js";
7
+ import { simulateTransaction } from "../../services/simulate/simulate.js";
7
8
  import { Amount, fromAddress } from "starkzap";
8
9
  export function registerSwapCommand(program) {
9
10
  program
@@ -12,15 +13,18 @@ export function registerSwapCommand(program) {
12
13
  .argument("<amount>", "Amount to swap")
13
14
  .argument("<from>", "Source token symbol")
14
15
  .argument("<to>", "Destination token symbol")
15
- .option("-s, --slippage <percent>", "Slippage tolerance %", "0.5")
16
+ .option("-s, --slippage <percent>", "Slippage tolerance %", "1")
17
+ .option("--simulate", "Estimate fees and validate without executing")
18
+ .option("--json", "Output raw JSON")
19
+ .addHelpText("after", "\nExamples:\n $ starkfi trade 0.1 ETH USDC\n $ starkfi trade 100 USDC STRK --slippage 0.5\n $ starkfi trade 0.5 ETH DAI --simulate")
16
20
  .action(async (amount, from, to, opts) => {
17
21
  const spinner = createSpinner("Finding best route...").start();
18
22
  try {
19
23
  const session = requireSession();
20
24
  const { wallet } = await initSDKAndWallet(session);
21
25
  await wallet.ensureReady({ deploy: "if_needed" });
22
- const tokenIn = await resolveToken(from);
23
- const tokenOut = await resolveToken(to);
26
+ const tokenIn = resolveToken(from);
27
+ const tokenOut = resolveToken(to);
24
28
  const parsedAmount = Amount.parse(amount, tokenIn);
25
29
  const rawAmount = parsedAmount.toBase().toString();
26
30
  const slippage = parseFloat(opts.slippage);
@@ -35,29 +39,61 @@ export function registerSwapCommand(program) {
35
39
  console.log(` Slippage: ${slippage}%\n`);
36
40
  spinner.text = "Generating calldata...";
37
41
  const calldataResponse = await getCalldata(tokenIn, tokenOut, rawAmount, slippage, session.address);
38
- spinner.text = "Executing swap...";
39
- const tx = await wallet
42
+ const builder = wallet
40
43
  .tx()
41
44
  .approve(tokenIn, fromAddress(FIBROUS_ROUTER_ADDRESS), parsedAmount)
42
45
  .add({
43
46
  contractAddress: FIBROUS_ROUTER_ADDRESS,
44
47
  entrypoint: "swap",
45
48
  calldata: calldataResponse.calldata,
46
- })
47
- .send();
49
+ });
50
+ if (opts.simulate) {
51
+ spinner.text = "Simulating transaction...";
52
+ const sim = await simulateTransaction(builder);
53
+ if (sim.success) {
54
+ spinner.succeed("Simulation complete");
55
+ }
56
+ else {
57
+ spinner.fail("Simulation failed");
58
+ }
59
+ const simResult = {
60
+ mode: "SIMULATION (no TX sent)",
61
+ input: `${amount} ${tokenIn.symbol}`,
62
+ expectedOutput: `~${outputFormatted} ${tokenOut.symbol}`,
63
+ estimatedFee: sim.estimatedFee,
64
+ estimatedFeeUsd: sim.estimatedFeeUsd,
65
+ calls: sim.callCount,
66
+ ...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
67
+ };
68
+ if (opts.json) {
69
+ console.log(JSON.stringify(simResult, null, 2));
70
+ }
71
+ else {
72
+ console.log(formatResult(simResult));
73
+ }
74
+ return;
75
+ }
76
+ spinner.text = "Executing swap...";
77
+ const tx = await builder.send();
48
78
  spinner.text = "Waiting for confirmation...";
49
79
  await tx.wait();
50
80
  spinner.succeed("Swap confirmed");
51
- console.log(formatResult({
81
+ const txResult = {
52
82
  input: `${amount} ${tokenIn.symbol}`,
53
83
  output: `~${outputFormatted} ${tokenOut.symbol}`,
54
84
  txHash: tx.hash,
55
85
  explorer: tx.explorerUrl,
56
- }));
86
+ };
87
+ if (opts.json) {
88
+ console.log(JSON.stringify(txResult, null, 2));
89
+ }
90
+ else {
91
+ console.log(formatResult(txResult));
92
+ }
57
93
  }
58
94
  catch (error) {
59
95
  spinner.fail("Swap failed");
60
- console.error(error instanceof Error ? error.message : error);
96
+ console.error(formatError(error));
61
97
  process.exit(1);
62
98
  }
63
99
  });
@@ -1 +1 @@
1
- {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/commands/trade/swap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/commands/trade/swap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmD7D"}
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkF7D"}
@@ -2,21 +2,30 @@ import { requireSession } from "../../services/auth/session.js";
2
2
  import { getBalances } from "../../services/tokens/balances.js";
3
3
  import { resolveToken } from "../../services/tokens/tokens.js";
4
4
  import { initSDKAndWallet } from "../../services/starkzap/client.js";
5
- import { createSpinner, formatTable, formatResult } from "../../lib/format.js";
5
+ import { createSpinner, formatTable, formatResult, formatError } from "../../lib/format.js";
6
6
  export function registerBalanceCommand(program) {
7
7
  program
8
8
  .command("balance")
9
9
  .description("Show wallet balance for all tokens or a specific token")
10
10
  .option("-t, --token <symbol>", "Specific token symbol (e.g. STRK, ETH)")
11
+ .option("--json", "Output raw JSON")
11
12
  .action(async (opts) => {
12
13
  const spinner = createSpinner("Fetching balances...").start();
13
14
  try {
14
15
  const session = requireSession();
15
16
  const { wallet } = await initSDKAndWallet(session);
16
17
  if (opts.token) {
17
- const tokenType = await resolveToken(opts.token);
18
+ const tokenType = resolveToken(opts.token);
18
19
  const balanceAmount = await wallet.balanceOf(tokenType);
19
20
  spinner.stop();
21
+ if (opts.json) {
22
+ console.log(JSON.stringify({
23
+ token: tokenType.symbol,
24
+ balance: balanceAmount.toUnit(),
25
+ network: session.network,
26
+ }, null, 2));
27
+ return;
28
+ }
20
29
  console.log(formatResult({
21
30
  token: tokenType.symbol,
22
31
  balance: balanceAmount.toUnit(),
@@ -26,6 +35,14 @@ export function registerBalanceCommand(program) {
26
35
  else {
27
36
  const balances = await getBalances(wallet);
28
37
  spinner.stop();
38
+ if (opts.json) {
39
+ console.log(JSON.stringify({
40
+ wallet: session.address,
41
+ network: session.network,
42
+ tokens: balances,
43
+ }, null, 2));
44
+ return;
45
+ }
29
46
  console.log(`\n Wallet: ${session.address}`);
30
47
  console.log(` Network: ${session.network}\n`);
31
48
  if (balances.length === 0) {
@@ -38,7 +55,7 @@ export function registerBalanceCommand(program) {
38
55
  }
39
56
  catch (error) {
40
57
  spinner.fail("Failed to fetch balances");
41
- console.error(error instanceof Error ? error.message : error);
58
+ console.error(formatError(error));
42
59
  process.exit(1);
43
60
  }
44
61
  });
@@ -1 +1 @@
1
- {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/commands/wallet/balance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACtD,OAAO;SACL,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9D,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAEnD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEjD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,EAAE,CAAC;gBAEf,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;oBACZ,KAAK,EAAE,SAAS,CAAC,MAAM;oBACvB,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE;oBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;iBACxB,CAAC,CACF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,EAAE,CAAC;gBAEf,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;gBAE/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACtC,OAAO;gBACR,CAAC;gBAED,OAAO,CAAC,GAAG,CACV,WAAW,CACV,CAAC,OAAO,EAAE,SAAS,CAAC,EACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAC1C,CACD,CAAC;gBACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/commands/wallet/balance.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmF5D"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoF5D"}
@@ -1,7 +1,7 @@
1
1
  import { requireSession } from "../../services/auth/session.js";
2
2
  import { initSDKAndWallet, resolveFeeModeConfig } from "../../services/starkzap/client.js";
3
3
  import { ConfigService } from "../../services/config/config.js";
4
- import { createSpinner, success, warn, formatResult } from "../../lib/format.js";
4
+ import { createSpinner, success, warn, formatResult, formatError } from "../../lib/format.js";
5
5
  export function registerDeployCommand(program) {
6
6
  program
7
7
  .command("deploy")
@@ -55,6 +55,7 @@ export function registerDeployCommand(program) {
55
55
  }
56
56
  catch (error) {
57
57
  const msg = error instanceof Error ? error.message : String(error);
58
+ console.error(formatError(error));
58
59
  spinner.fail("Deployment failed");
59
60
  if (msg.includes("exceed balance") || msg.includes("insufficient")) {
60
61
  console.error(warn(`Insufficient balance for deployment gas fees.\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/wallet/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/wallet/deploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD1D"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0F1D"}
@@ -2,8 +2,9 @@ import { Amount, fromAddress } from "starkzap";
2
2
  import { requireSession } from "../../services/auth/session.js";
3
3
  import { initSDKAndWallet } from "../../services/starkzap/client.js";
4
4
  import { resolveToken } from "../../services/tokens/tokens.js";
5
- import { createSpinner, formatResult } from "../../lib/format.js";
5
+ import { createSpinner, formatResult, formatError } from "../../lib/format.js";
6
6
  import { validateAddress } from "../../lib/validation.js";
7
+ import { simulateTransaction } from "../../services/simulate/simulate.js";
7
8
  export function registerSendCommand(program) {
8
9
  program
9
10
  .command("send")
@@ -11,14 +12,16 @@ export function registerSendCommand(program) {
11
12
  .argument("<amount>", "Amount to send")
12
13
  .argument("<token>", "Token symbol (e.g. STRK, ETH, USDC)")
13
14
  .argument("<to>", "Recipient Starknet address")
14
- .action(async (amount, token, to) => {
15
+ .option("--simulate", "Estimate fees and validate without executing")
16
+ .option("--json", "Output raw JSON")
17
+ .action(async (amount, token, to, opts) => {
15
18
  const spinner = createSpinner("Preparing transfer...").start();
16
19
  try {
17
20
  const validatedTo = validateAddress(to);
18
21
  const session = requireSession();
19
22
  const { wallet } = await initSDKAndWallet(session);
20
23
  await wallet.ensureReady({ deploy: "if_needed" });
21
- const tokenObj = await resolveToken(token);
24
+ const tokenObj = resolveToken(token);
22
25
  const parsedAmount = Amount.parse(amount, tokenObj);
23
26
  const balanceAmount = await wallet.balanceOf(tokenObj);
24
27
  if (balanceAmount.lt(parsedAmount)) {
@@ -27,23 +30,57 @@ export function registerSendCommand(program) {
27
30
  console.error(`Attempting to send: ${parsedAmount.toFormatted()}`);
28
31
  process.exit(1);
29
32
  }
33
+ const builder = wallet.tx().transfer(tokenObj, {
34
+ to: fromAddress(validatedTo),
35
+ amount: parsedAmount,
36
+ });
37
+ if (opts.simulate) {
38
+ spinner.text = "Simulating transaction...";
39
+ const sim = await simulateTransaction(builder);
40
+ if (sim.success) {
41
+ spinner.succeed("Simulation complete");
42
+ }
43
+ else {
44
+ spinner.fail("Simulation failed");
45
+ }
46
+ const simResult = {
47
+ mode: "SIMULATION (no TX sent)",
48
+ amount: `${amount} ${token.toUpperCase()}`,
49
+ to: validatedTo,
50
+ estimatedFee: sim.estimatedFee,
51
+ estimatedFeeUsd: sim.estimatedFeeUsd,
52
+ calls: sim.callCount,
53
+ ...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
54
+ };
55
+ if (opts.json) {
56
+ console.log(JSON.stringify(simResult, null, 2));
57
+ }
58
+ else {
59
+ console.log(formatResult(simResult));
60
+ }
61
+ return;
62
+ }
30
63
  spinner.text = "Executing transfer...";
31
- const tx = await wallet.transfer(tokenObj, [
32
- { to: fromAddress(validatedTo), amount: parsedAmount },
33
- ]);
64
+ const tx = await builder.send();
34
65
  spinner.text = "Waiting for confirmation...";
35
66
  await tx.wait();
36
67
  spinner.succeed("Transfer confirmed");
37
- console.log(formatResult({
68
+ const txResult = {
38
69
  amount: `${amount} ${token.toUpperCase()}`,
39
70
  to: validatedTo,
40
71
  txHash: tx.hash,
41
72
  explorer: tx.explorerUrl,
42
- }));
73
+ };
74
+ if (opts.json) {
75
+ console.log(JSON.stringify(txResult, null, 2));
76
+ }
77
+ else {
78
+ console.log(formatResult(txResult));
79
+ }
43
80
  }
44
81
  catch (error) {
45
82
  spinner.fail("Transfer failed");
46
- console.error(error instanceof Error ? error.message : error);
83
+ console.error(formatError(error));
47
84
  process.exit(1);
48
85
  }
49
86
  });
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,39 +1,177 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from "node:module";
3
3
  import { Command } from "commander";
4
+ import chalk from "chalk";
4
5
  import { formatError } from "./lib/format.js";
5
6
  import { startMcpServer } from "./mcp/server.js";
6
- const require = createRequire(import.meta.url);
7
- const { version } = require("../package.json");
8
7
  import { registerLoginCommand } from "./commands/auth/login.js";
9
8
  import { registerVerifyCommand } from "./commands/auth/verify.js";
10
- import { registerImportCommand } from "./commands/auth/import.js";
11
9
  import { registerLogoutCommand } from "./commands/auth/logout.js";
12
10
  import { registerAddressCommand } from "./commands/wallet/address.js";
13
11
  import { registerBalanceCommand } from "./commands/wallet/balance.js";
14
12
  import { registerSendCommand } from "./commands/wallet/send.js";
15
13
  import { registerDeployCommand } from "./commands/wallet/deploy.js";
16
14
  import { registerSwapCommand } from "./commands/trade/swap.js";
15
+ import { registerMultiSwapCommand } from "./commands/trade/multi-swap.js";
17
16
  import { registerStatusCommand } from "./commands/trade/status.js";
18
17
  import { registerTxStatusCommand } from "./commands/chain/tx-status.js";
19
- import { registerStakeCommand, registerUnstakeCommand, registerRewardsCommand, registerPoolsCommand, registerValidatorsCommand, registerStakingStatsCommand, } from "./commands/staking/staking.js";
18
+ import { registerStakeCommand, registerUnstakeCommand, registerRewardsCommand, registerPoolsCommand, registerValidatorsCommand, registerStakeStatusCommand, } from "./commands/staking/staking.js";
19
+ import { registerLendPoolsCommand, registerLendSupplyCommand, registerLendWithdrawCommand, registerLendBorrowCommand, registerLendRepayCommand, registerLendCloseCommand, registerLendStatusCommand, } from "./commands/lending/lending.js";
20
+ import { registerPortfolioCommand } from "./commands/portfolio/portfolio.js";
21
+ import { registerBatchCommand } from "./commands/batch/batch.js";
20
22
  import { registerConfigCommand } from "./commands/config/config.js";
21
- import { registerLendPoolsCommand, registerLendSupplyCommand, registerLendWithdrawCommand, registerLendBorrowCommand, registerLendRepayCommand, registerLendStatusCommand, } from "./commands/lending/lending.js";
23
+ process.on("SIGINT", () => process.exit(0));
24
+ process.on("SIGTERM", () => process.exit(0));
25
+ const require = createRequire(import.meta.url);
26
+ const { version } = require("../package.json");
27
+ // Brand palette (matches docs/index.html)
28
+ const BLUE = "#a5b4fc";
29
+ const MINT = "#99f6e4";
30
+ // Blue → mint gradient, one shade per logo row
31
+ const LOGO_ROW_COLORS = ["#a5b4fc", "#adbcfc", "#b5c4fb", "#bdccfb", "#c6d4fa", "#99f6e4"];
32
+ const LOGO_LINES = [
33
+ "███████╗████████╗ █████╗ ██████╗ ██╗ ██╗███████╗██╗",
34
+ "██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║ ██╔╝██╔════╝██║",
35
+ "███████╗ ██║ ███████║██████╔╝█████╔╝ █████╗ ██║",
36
+ "╚════██║ ██║ ██╔══██║██╔══██╗██╔═██╗ ██╔══╝ ██║",
37
+ "███████║ ██║ ██║ ██║██║ ██║██║ ██╗██║ ██║",
38
+ "╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝",
39
+ ];
40
+ const coloredLogo = LOGO_LINES.map((line, i) => chalk.bold.hex(LOGO_ROW_COLORS[i] ?? MINT)(line)).join("\n");
41
+ const tagline = chalk.dim("v") +
42
+ chalk.hex(BLUE).bold(version) +
43
+ chalk.dim(" · ") +
44
+ chalk.white("Starknet DeFi CLI + MCP Server");
45
+ const banner = `\n${coloredLogo}\n\n${tagline}\n`;
46
+ const dim = chalk.dim.bind(chalk);
47
+ const white = chalk.white.bind(chalk);
48
+ // Quick Start block shown only on the root --help page.
49
+ const footer = `
50
+ ${chalk.bold.hex(MINT)("Quick Start")}
51
+
52
+ ${dim("$")} ${white("starkfi auth login <email>")} ${dim("# Sign in with Privy OTP")}
53
+ ${dim("$")} ${white("starkfi trade 0.1 ETH USDC")} ${dim("# Best-price swap via Fibrous")}
54
+ ${dim("$")} ${white("starkfi balance")} ${dim("# View all token balances")}
55
+ ${dim("$")} ${white("starkfi stake 10 STRK -v karnot")} ${dim("# Stake STRK with a validator")}
56
+ ${dim("$")} ${white("starkfi lend-supply 100 USDC -p Prime -t USDC")} ${dim("# Supply to Vesu")}
57
+ ${dim("$")} ${white('starkfi batch --swap "0.1 ETH USDC" --stake "50 STRK karnot"')} ${dim("# Multicall")}
58
+
59
+ ${dim("Run")} ${white("starkfi <command> --help")} ${dim("for detailed flags and examples.")}
60
+ ${dim("Docs →")} ${chalk.hex(BLUE).underline("https://github.com/ahmetenesdur/starkfi")}
61
+ `;
62
+ const COMMAND_GROUPS = {
63
+ Authentication: ["auth"],
64
+ Wallet: ["address", "balance", "send", "deploy"],
65
+ Trading: ["trade", "multi-swap", "status"],
66
+ Staking: ["stake", "unstake", "rewards", "pools", "validators", "stake-status"],
67
+ Lending: [
68
+ "lend-pools",
69
+ "lend-supply",
70
+ "lend-withdraw",
71
+ "lend-borrow",
72
+ "lend-repay",
73
+ "lend-close",
74
+ "lend-status",
75
+ ],
76
+ Portfolio: ["portfolio"],
77
+ Operations: ["batch"],
78
+ Configuration: ["config"],
79
+ System: ["tx-status", "mcp-start", "help"],
80
+ };
22
81
  const program = new Command();
23
82
  program
24
83
  .name("starkfi")
25
- .description("Starknet DeFi CLI Token swaps, staking, lending, gasless transactions")
84
+ .description("Starknet DeFi CLI + MCP Server")
26
85
  .version(version)
27
- .showHelpAfterError();
86
+ .showHelpAfterError()
87
+ .addHelpText("beforeAll", banner);
88
+ program.configureHelp({
89
+ formatHelp(cmd, helper) {
90
+ if (cmd.name() !== "starkfi") {
91
+ // Sub-command pages: clean styled layout, no grouping
92
+ const lines = [];
93
+ const width = helper.padWidth(cmd, helper);
94
+ const usage = helper.commandUsage(cmd);
95
+ if (usage)
96
+ lines.push(`${chalk.bold("Usage:")} ${usage}`, "");
97
+ const desc = helper.commandDescription(cmd);
98
+ if (desc)
99
+ lines.push(desc, "");
100
+ const args = helper.visibleArguments(cmd);
101
+ if (args.length) {
102
+ lines.push(chalk.bold("Arguments:"));
103
+ for (const a of args) {
104
+ lines.push(` ${chalk.white(helper.argumentTerm(a).padEnd(width))} ${chalk.dim(helper.argumentDescription(a))}`);
105
+ }
106
+ lines.push("");
107
+ }
108
+ const opts = helper.visibleOptions(cmd);
109
+ if (opts.length) {
110
+ lines.push(chalk.bold("Options:"));
111
+ for (const o of opts) {
112
+ lines.push(` ${chalk.white(helper.optionTerm(o).padEnd(width))} ${chalk.dim(helper.optionDescription(o))}`);
113
+ }
114
+ lines.push("");
115
+ }
116
+ const subs = helper.visibleCommands(cmd);
117
+ if (subs.length) {
118
+ lines.push(chalk.bold("Commands:"));
119
+ for (const s of subs) {
120
+ lines.push(` ${chalk.white(helper.subcommandTerm(s).padEnd(width))} ${chalk.dim(helper.subcommandDescription(s))}`);
121
+ }
122
+ lines.push("");
123
+ }
124
+ return lines.join("\n");
125
+ }
126
+ // Root command: grouped layout + Quick Start footer
127
+ const lines = [];
128
+ const width = helper.padWidth(cmd, helper);
129
+ lines.push(`${chalk.bold("Usage:")} starkfi ${chalk.dim("[command]")} ${chalk.dim("[options]")}`, "");
130
+ const opts = helper.visibleOptions(cmd);
131
+ if (opts.length) {
132
+ lines.push(chalk.bold("Options:"));
133
+ for (const o of opts) {
134
+ lines.push(` ${chalk.hex(BLUE)(helper.optionTerm(o).padEnd(width))} ${chalk.dim(helper.optionDescription(o))}`);
135
+ }
136
+ lines.push("");
137
+ }
138
+ lines.push(chalk.bold("Commands:"));
139
+ const allCmds = helper.visibleCommands(cmd);
140
+ const cmdMap = new Map(allCmds.map((c) => [c.name(), c]));
141
+ const rendered = new Set();
142
+ for (const [groupLabel, cmdNames] of Object.entries(COMMAND_GROUPS)) {
143
+ const groupCmds = cmdNames
144
+ .map((n) => cmdMap.get(n))
145
+ .filter((c) => c !== undefined);
146
+ if (groupCmds.length === 0)
147
+ continue;
148
+ lines.push(`\n ${chalk.bold.hex(BLUE)(groupLabel)}`);
149
+ for (const c of groupCmds) {
150
+ lines.push(` ${chalk.white(helper.subcommandTerm(c).padEnd(width))} ${chalk.dim(helper.subcommandDescription(c))}`);
151
+ rendered.add(c.name());
152
+ }
153
+ }
154
+ // Catch-all for commands not listed in COMMAND_GROUPS
155
+ const ungrouped = allCmds.filter((c) => !rendered.has(c.name()));
156
+ if (ungrouped.length) {
157
+ lines.push(`\n ${chalk.bold("Other")}`);
158
+ for (const c of ungrouped) {
159
+ lines.push(` ${chalk.white(helper.subcommandTerm(c).padEnd(width))} ${chalk.dim(helper.subcommandDescription(c))}`);
160
+ }
161
+ }
162
+ lines.push("", footer);
163
+ return lines.join("\n");
164
+ },
165
+ });
28
166
  registerLoginCommand(program);
29
167
  registerVerifyCommand(program);
30
- registerImportCommand(program);
31
168
  registerLogoutCommand(program);
32
169
  registerAddressCommand(program);
33
170
  registerBalanceCommand(program);
34
171
  registerSendCommand(program);
35
172
  registerDeployCommand(program);
36
173
  registerSwapCommand(program);
174
+ registerMultiSwapCommand(program);
37
175
  registerStatusCommand(program);
38
176
  registerTxStatusCommand(program);
39
177
  registerStakeCommand(program);
@@ -41,17 +179,32 @@ registerUnstakeCommand(program);
41
179
  registerRewardsCommand(program);
42
180
  registerPoolsCommand(program);
43
181
  registerValidatorsCommand(program);
44
- registerStakingStatsCommand(program);
182
+ registerStakeStatusCommand(program);
45
183
  registerLendPoolsCommand(program);
46
184
  registerLendSupplyCommand(program);
47
185
  registerLendWithdrawCommand(program);
48
186
  registerLendBorrowCommand(program);
49
187
  registerLendRepayCommand(program);
188
+ registerLendCloseCommand(program);
50
189
  registerLendStatusCommand(program);
190
+ registerPortfolioCommand(program);
191
+ registerBatchCommand(program);
51
192
  registerConfigCommand(program);
52
193
  program
53
194
  .command("mcp-start")
54
195
  .description("Start the MCP server (stdio transport)")
196
+ .addHelpText("after", `
197
+ Notes:
198
+ Communicates via stdin/stdout (stdio transport — standard MCP protocol).
199
+ Add to your AI client config (Claude, Cursor, etc.):
200
+
201
+ {
202
+ "mcpServers": {
203
+ "starkfi": { "command": "starkfi", "args": ["mcp-start"] }
204
+ }
205
+ }
206
+
207
+ See MCP.md for the full integration guide.`)
55
208
  .action(async () => {
56
209
  await startMcpServer();
57
210
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Renders the animated ASCII banner by wiping it in from left to right.
3
+ * Only blocks for ~1 second total to respect user startup expectations.
4
+ */
5
+ export declare function showBanner(): Promise<void>;
6
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/lib/banner.ts"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2DhD"}