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
@@ -1,22 +1,29 @@
1
+ import { Amount, fromAddress } from "starkzap";
1
2
  import { requireSession } from "../../services/auth/session.js";
2
3
  import { initSDKAndWallet } from "../../services/starkzap/client.js";
3
4
  import * as stakingService from "../../services/staking/staking.js";
4
5
  import { getValidators, findValidator } from "../../services/staking/validators.js";
5
- import { createSpinner, formatResult, formatTable } from "../../lib/format.js";
6
+ import { createSpinner, formatResult, formatTable, formatError } from "../../lib/format.js";
6
7
  import { validateAddress } from "../../lib/validation.js";
8
+ import { resolveToken } from "../../services/tokens/tokens.js";
9
+ import { simulateTransaction } from "../../services/simulate/simulate.js";
7
10
  export function registerStakeCommand(program) {
8
11
  program
9
12
  .command("stake")
10
- .description("Stake STRK in a delegation pool (smart stake: enter or add)")
13
+ .description("Stake tokens in a delegation pool (smart stake: enter or add)")
11
14
  .argument("<amount>", "Amount to stake")
12
15
  .option("-p, --pool <address>", "Staking pool contract address")
13
- .option("-v, --validator <name>", "Validator name or staker address (picks first STRK pool)")
16
+ .option("-v, --validator <name>", "Validator name or staker address (auto-finds pool by token)")
17
+ .option("-t, --token <symbol>", "Token to stake (default: STRK)", "STRK")
18
+ .option("--simulate", "Estimate fees and validate without executing")
19
+ .addHelpText("after", "\nExamples:\n $ starkfi stake 10 STRK -v karnot\n $ starkfi stake 50 STRK -v fibrous --simulate\n $ starkfi stake 100 STRK -p 0x04a3...")
14
20
  .action(async (amount, opts) => {
15
21
  if (!opts.pool && !opts.validator) {
16
22
  console.error("Provide --pool <address> or --validator <name>");
17
23
  process.exit(1);
18
24
  }
19
- const spinner = createSpinner("Staking STRK...").start();
25
+ const tokenSymbol = opts.token.toUpperCase();
26
+ const spinner = createSpinner(`Staking ${tokenSymbol}...`).start();
20
27
  try {
21
28
  const session = requireSession();
22
29
  const { sdk, wallet } = await initSDKAndWallet(session);
@@ -29,19 +36,39 @@ export function registerStakeCommand(program) {
29
36
  process.exit(1);
30
37
  }
31
38
  const pools = await stakingService.getValidatorPools(sdk, validator.stakerAddress.toString());
32
- if (pools.length === 0) {
33
- spinner.fail(`No pools found for validator '${opts.validator}'`);
34
- process.exit(1);
35
- }
36
- poolAddress = pools[0].poolContract;
39
+ const matched = stakingService.resolvePoolForToken(pools, tokenSymbol);
40
+ poolAddress = matched.poolContract;
37
41
  }
38
42
  else {
39
43
  poolAddress = validateAddress(poolAddress);
40
44
  }
41
- const result = await stakingService.stake(wallet, poolAddress, amount);
45
+ if (opts.simulate) {
46
+ spinner.text = "Simulating stake...";
47
+ const token = resolveToken(tokenSymbol);
48
+ const parsedAmount = Amount.parse(amount, token);
49
+ const builder = wallet.tx().stake(fromAddress(poolAddress), parsedAmount);
50
+ const sim = await simulateTransaction(builder);
51
+ if (sim.success) {
52
+ spinner.succeed("Simulation complete");
53
+ }
54
+ else {
55
+ spinner.fail("Simulation failed");
56
+ }
57
+ console.log(formatResult({
58
+ mode: "SIMULATION (no TX sent)",
59
+ amount: `${amount} ${tokenSymbol}`,
60
+ pool: poolAddress,
61
+ estimatedFee: sim.estimatedFee,
62
+ estimatedFeeUsd: sim.estimatedFeeUsd,
63
+ calls: sim.callCount,
64
+ ...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
65
+ }));
66
+ return;
67
+ }
68
+ const result = await stakingService.stake(wallet, poolAddress, amount, tokenSymbol);
42
69
  spinner.succeed("Staking confirmed");
43
70
  console.log(formatResult({
44
- amount: `${amount} STRK`,
71
+ amount: `${amount} ${tokenSymbol}`,
45
72
  pool: poolAddress,
46
73
  txHash: result.hash,
47
74
  explorer: result.explorerUrl,
@@ -49,7 +76,7 @@ export function registerStakeCommand(program) {
49
76
  }
50
77
  catch (error) {
51
78
  spinner.fail("Staking failed");
52
- console.error(error instanceof Error ? error.message : error);
79
+ console.error(formatError(error));
53
80
  process.exit(1);
54
81
  }
55
82
  });
@@ -57,34 +84,51 @@ export function registerStakeCommand(program) {
57
84
  export function registerUnstakeCommand(program) {
58
85
  program
59
86
  .command("unstake")
60
- .description("Unstake STRK (2-step: intent → exit after cooldown)")
87
+ .description("Unstake tokens (2-step: intent → exit after cooldown)")
61
88
  .argument("<action>", "'intent' to declare exit or 'exit' to complete withdrawal")
62
- .option("-p, --pool <address>", "Pool contract address (required)")
89
+ .option("-p, --pool <address>", "Pool contract address")
90
+ .option("-v, --validator <name>", "Validator name (use with --token to find pool)")
91
+ .option("-t, --token <symbol>", "Token symbol (default: STRK)", "STRK")
63
92
  .option("-a, --amount <amount>", "Amount to unstake (required for intent)")
93
+ .addHelpText("after", "\nNote: Unstaking is a 2-step process with a cooldown period.\n\nExamples:\n $ starkfi unstake intent -v karnot -a 10\n $ starkfi unstake exit -v karnot")
64
94
  .action(async (action, opts) => {
65
- if (!opts.pool) {
66
- console.error("Pool address is required: --pool <address>");
95
+ if (!opts.pool && !opts.validator) {
96
+ console.error("Provide --pool <address> or --validator <name>");
67
97
  process.exit(1);
68
98
  }
99
+ const tokenSymbol = opts.token.toUpperCase();
69
100
  const spinner = createSpinner("Processing unstake...").start();
70
101
  try {
71
- const poolAddress = validateAddress(opts.pool);
72
102
  const session = requireSession();
73
- const { wallet } = await initSDKAndWallet(session);
103
+ const { sdk, wallet } = await initSDKAndWallet(session);
74
104
  await wallet.ensureReady({ deploy: "if_needed" });
105
+ let poolAddress;
106
+ if (opts.pool) {
107
+ poolAddress = validateAddress(opts.pool);
108
+ }
109
+ else {
110
+ const validator = findValidator(opts.validator, session.network);
111
+ if (!validator) {
112
+ spinner.fail(`Validator '${opts.validator}' not found`);
113
+ process.exit(1);
114
+ }
115
+ const pools = await stakingService.getValidatorPools(sdk, validator.stakerAddress.toString());
116
+ const matched = stakingService.resolvePoolForToken(pools, tokenSymbol);
117
+ poolAddress = matched.poolContract;
118
+ }
75
119
  if (action === "intent") {
76
120
  if (!opts.amount) {
77
121
  spinner.fail("Amount is required for exit intent");
78
122
  process.exit(1);
79
123
  }
80
- const result = await stakingService.exitPoolIntent(wallet, poolAddress, opts.amount);
124
+ const result = await stakingService.exitPoolIntent(wallet, poolAddress, opts.amount, tokenSymbol);
81
125
  spinner.succeed("Exit intent declared");
82
126
  console.log(formatResult({
83
127
  action: "exit_intent",
84
- amount: `${opts.amount} STRK`,
128
+ amount: `${opts.amount} ${tokenSymbol}`,
85
129
  txHash: result.hash,
86
130
  explorer: result.explorerUrl,
87
- note: "Wait for cooldown, then run: starkfi unstake exit --pool <address>",
131
+ note: "Wait for cooldown, then run: starkfi unstake exit --validator <name>",
88
132
  }));
89
133
  }
90
134
  else if (action === "exit") {
@@ -103,7 +147,7 @@ export function registerUnstakeCommand(program) {
103
147
  }
104
148
  catch (error) {
105
149
  spinner.fail("Unstake failed");
106
- console.error(error instanceof Error ? error.message : error);
150
+ console.error(formatError(error));
107
151
  process.exit(1);
108
152
  }
109
153
  });
@@ -111,20 +155,41 @@ export function registerUnstakeCommand(program) {
111
155
  export function registerRewardsCommand(program) {
112
156
  program
113
157
  .command("rewards")
114
- .description("Show staking position and rewards, or claim / compound rewards")
115
- .option("-p, --pool <address>", "Pool contract address (required)")
116
- .option("-c, --claim", "Claim rewards to wallet")
117
- .option("--compound", "Claim and re-stake rewards atomically (single tx)")
158
+ .description("Claim or compound accumulated staking rewards")
159
+ .option("--validator <nameOrAddress>", "Validator name (e.g., Fibrous) or address")
160
+ .option("--pool <address>", "Specific staking pool address")
161
+ .option("-t, --token <symbol>", "Token symbol (default: STRK)", "STRK")
162
+ .option("--claim", "Claim rewards currently available in the pool")
163
+ .option("--compound", "Claim and immediately restake rewards")
164
+ .addHelpText("after", "\nExamples:\n $ starkfi rewards --claim -v karnot\n $ starkfi rewards --compound -v fibrous\n $ starkfi rewards --claim --pool 0x04a3...")
118
165
  .action(async (opts) => {
119
- if (!opts.pool) {
120
- console.error("Pool address is required: --pool <address>");
166
+ if (!opts.claim && !opts.compound) {
167
+ console.error("\n Provide --claim or --compound. Use 'starkfi stake-status' to view positions.\n");
168
+ process.exit(1);
169
+ }
170
+ if (!opts.pool && !opts.validator) {
171
+ console.error("Provide --pool <address> or --validator <name>");
121
172
  process.exit(1);
122
173
  }
174
+ const tokenSymbol = opts.token.toUpperCase();
123
175
  const spinner = createSpinner("Fetching staking info...").start();
124
176
  try {
125
- const poolAddress = validateAddress(opts.pool);
126
177
  const session = requireSession();
127
- const { wallet } = await initSDKAndWallet(session);
178
+ const { sdk, wallet } = await initSDKAndWallet(session);
179
+ let poolAddress;
180
+ if (opts.pool) {
181
+ poolAddress = validateAddress(opts.pool);
182
+ }
183
+ else {
184
+ const validator = findValidator(opts.validator, session.network);
185
+ if (!validator) {
186
+ spinner.fail(`Validator '${opts.validator}' not found`);
187
+ process.exit(1);
188
+ }
189
+ const pools = await stakingService.getValidatorPools(sdk, validator.stakerAddress.toString());
190
+ const matched = stakingService.resolvePoolForToken(pools, tokenSymbol);
191
+ poolAddress = matched.poolContract;
192
+ }
128
193
  if (opts.compound) {
129
194
  await wallet.ensureReady({ deploy: "if_needed" });
130
195
  spinner.text = "Compounding rewards...";
@@ -148,24 +213,10 @@ export function registerRewardsCommand(program) {
148
213
  }));
149
214
  return;
150
215
  }
151
- const position = await stakingService.getPosition(wallet, poolAddress);
152
- spinner.stop();
153
- if (!position) {
154
- console.log(" Not a member of this pool.\n");
155
- return;
156
- }
157
- console.log(formatResult({
158
- staked: position.staked,
159
- rewards: position.rewards,
160
- total: position.total,
161
- unpooling: position.unpooling,
162
- unpoolTime: position.unpoolTime?.toISOString() ?? "N/A",
163
- commission: `${position.commissionPercent}%`,
164
- }));
165
216
  }
166
217
  catch (error) {
167
218
  spinner.fail("Failed to fetch staking info");
168
- console.error(error instanceof Error ? error.message : error);
219
+ console.error(formatError(error));
169
220
  process.exit(1);
170
221
  }
171
222
  });
@@ -175,7 +226,9 @@ export function registerPoolsCommand(program) {
175
226
  .command("pools")
176
227
  .description("List staking pools for a validator (by name or address)")
177
228
  .argument("<validator>", "Validator name (e.g. 'Karnot') or staker address")
178
- .action(async (validator) => {
229
+ .option("--json", "Output raw JSON")
230
+ .addHelpText("after", "\nExamples:\n $ starkfi pools karnot\n $ starkfi pools fibrous --json\n $ starkfi pools 0x04a3...")
231
+ .action(async (validator, opts) => {
179
232
  const spinner = createSpinner("Fetching pools...").start();
180
233
  try {
181
234
  const session = requireSession();
@@ -191,6 +244,18 @@ export function registerPoolsCommand(program) {
191
244
  return;
192
245
  }
193
246
  const validatorLabel = found ? `${found.name} (${stakerAddress})` : stakerAddress;
247
+ if (opts.json) {
248
+ console.log(JSON.stringify({
249
+ validator: validatorLabel,
250
+ pools: pools.map((p) => ({
251
+ address: p.poolContract,
252
+ token: p.tokenSymbol,
253
+ amount: p.amount,
254
+ commission: p.commission,
255
+ })),
256
+ }, null, 2));
257
+ return;
258
+ }
194
259
  console.log(`\n Validator: ${validatorLabel}\n`);
195
260
  console.log(formatTable(["Pool Address", "Token", "Amount", "Commission"], pools.map((p) => [
196
261
  p.poolContract,
@@ -202,7 +267,7 @@ export function registerPoolsCommand(program) {
202
267
  }
203
268
  catch (error) {
204
269
  spinner.fail("Failed to fetch pools");
205
- console.error(error instanceof Error ? error.message : error);
270
+ console.error(formatError(error));
206
271
  process.exit(1);
207
272
  }
208
273
  });
@@ -211,49 +276,67 @@ export function registerValidatorsCommand(program) {
211
276
  program
212
277
  .command("validators")
213
278
  .description("List all known Starknet staking validators")
214
- .action(async () => {
279
+ .option("--json", "Output raw JSON")
280
+ .addHelpText("after", "\nExamples:\n $ starkfi validators\n $ starkfi validators --json")
281
+ .action(async (opts) => {
215
282
  const spinner = createSpinner("Loading validators...").start();
216
283
  try {
217
284
  const session = requireSession();
218
285
  const validators = getValidators(session.network);
219
286
  spinner.stop();
287
+ if (opts.json) {
288
+ console.log(JSON.stringify({
289
+ network: session.network,
290
+ validators: validators.map((v) => ({
291
+ name: v.name,
292
+ stakerAddress: v.stakerAddress.toString(),
293
+ })),
294
+ }, null, 2));
295
+ return;
296
+ }
220
297
  console.log(`\n Validators on ${session.network} (${validators.length} total)\n`);
221
298
  console.log(formatTable(["Name", "Staker Address"], validators.map((v) => [v.name, v.stakerAddress.toString()])));
222
299
  console.log();
223
300
  }
224
301
  catch (error) {
225
302
  spinner.fail("Failed to load validators");
226
- console.error(error instanceof Error ? error.message : error);
303
+ console.error(formatError(error));
227
304
  process.exit(1);
228
305
  }
229
306
  });
230
307
  }
231
- export function registerStakingStatsCommand(program) {
308
+ export function registerStakeStatusCommand(program) {
232
309
  program
233
- .command("staking-stats")
234
- .description("Show a consolidated staking dashboard across all validators and pools")
235
- .action(async () => {
236
- const spinner = createSpinner("Scanning all validators and pools...").start();
310
+ .command("stake-status")
311
+ .description("Show a consolidated staking dashboard across validators and pools")
312
+ .argument("[validator]", "Optional validator name to filter results (e.g. Fibrous)")
313
+ .option("--json", "Output raw JSON")
314
+ .action(async (validatorTarget, opts) => {
315
+ const spinner = createSpinner("Scanning staking positions...").start();
237
316
  try {
238
317
  const session = requireSession();
239
318
  const { sdk, wallet } = await initSDKAndWallet(session);
240
- const overview = await stakingService.getStakingOverview(sdk, wallet, session.network, session.address);
319
+ const overview = await stakingService.getStakingOverview(sdk, wallet, session.network, session.address, validatorTarget);
241
320
  spinner.stop();
242
321
  if (overview.positions.length === 0) {
243
322
  console.log("\n No active staking positions found.\n");
244
323
  return;
245
324
  }
325
+ if (opts.json) {
326
+ console.log(JSON.stringify({
327
+ network: overview.network,
328
+ positions: overview.positions,
329
+ }, null, 2));
330
+ return;
331
+ }
246
332
  console.log(formatResult({
247
333
  network: overview.network,
248
- totalStaked: `${overview.totalStaked} STRK`,
249
- totalRewards: `${overview.totalRewards} STRK`,
250
- totalValue: `${overview.totalValue} STRK`,
251
- totalUnpooling: `${overview.totalUnpooling} STRK`,
252
334
  positions: overview.positions.length,
253
335
  }));
254
336
  console.log();
255
- console.log(formatTable(["Validator", "Pool", "Staked", "Rewards", "Total", "Commission"], overview.positions.map((p) => [
337
+ console.log(formatTable(["Validator", "Token", "Pool", "Staked", "Rewards", "Total", "Commission"], overview.positions.map((p) => [
256
338
  p.validator,
339
+ p.token,
257
340
  p.pool.slice(0, 10) + "…",
258
341
  p.staked,
259
342
  p.rewards,
@@ -264,7 +347,7 @@ export function registerStakingStatsCommand(program) {
264
347
  }
265
348
  catch (error) {
266
349
  spinner.fail("Failed to fetch staking stats");
267
- console.error(error instanceof Error ? error.message : error);
350
+ console.error(formatError(error));
268
351
  process.exit(1);
269
352
  }
270
353
  });
@@ -1 +1 @@
1
- {"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/commands/staking/staking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/commands/staking/staking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerMultiSwapCommand(program: Command): void;
3
+ //# sourceMappingURL=multi-swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-swap.d.ts","sourceRoot":"","sources":["../../../src/commands/trade/multi-swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyI/D"}
@@ -0,0 +1,141 @@
1
+ import { Amount, fromAddress } from "starkzap";
2
+ import { requireSession } from "../../services/auth/session.js";
3
+ import { initSDKAndWallet } from "../../services/starkzap/client.js";
4
+ import { resolveToken } from "../../services/tokens/tokens.js";
5
+ import { getCalldataBatch, getRouteBatch, } from "../../services/fibrous/route.js";
6
+ import { FIBROUS_ROUTER_ADDRESS } from "../../services/fibrous/config.js";
7
+ import { simulateTransaction } from "../../services/simulate/simulate.js";
8
+ import { createSpinner, formatResult, formatTable, formatError } from "../../lib/format.js";
9
+ import { ErrorCode, StarkfiError } from "../../lib/errors.js";
10
+ /** Parse "100 USDC>ETH, 50 USDC>STRK" into structured pairs. */
11
+ function parsePairs(input) {
12
+ const segments = input.split(",").map((s) => s.trim());
13
+ const parsed = [];
14
+ for (const seg of segments) {
15
+ const match = seg.match(/^([\d.]+)\s+(\w+)>(\w+)$/i);
16
+ if (!match) {
17
+ throw new StarkfiError(ErrorCode.INVALID_AMOUNT, `Invalid pair format: "${seg}". Expected: "100 USDC>ETH"`);
18
+ }
19
+ parsed.push({
20
+ amount: match[1],
21
+ fromToken: match[2].toUpperCase(),
22
+ toToken: match[3].toUpperCase(),
23
+ });
24
+ }
25
+ if (parsed.length < 2) {
26
+ throw new StarkfiError(ErrorCode.INVALID_AMOUNT, "Multi-swap requires at least 2 pairs. Use regular swap for single pairs.");
27
+ }
28
+ return parsed;
29
+ }
30
+ export function registerMultiSwapCommand(program) {
31
+ program
32
+ .command("multi-swap")
33
+ .description("Swap multiple token pairs in one transaction (max 3, via Fibrous batch)")
34
+ .argument("<pairs>", 'Swap pairs (e.g. "100 USDC>ETH, 50 USDC>STRK")')
35
+ .option("-s, --slippage <percent>", "Slippage tolerance %", "1")
36
+ .option("--simulate", "Estimate fees and validate without executing")
37
+ .option("--json", "Output raw JSON")
38
+ .addHelpText("after", '\nExamples:\n $ starkfi multi-swap "100 USDC>ETH, 50 USDC>STRK"\n $ starkfi multi-swap "0.1 ETH>USDC, 0.05 ETH>STRK" --slippage 0.5\n $ starkfi multi-swap "100 USDC>ETH, 50 STRK>ETH" --simulate\n\nPair format: "<amount> <from>><to>" — separate pairs with commas.')
39
+ .action(async (pairsInput, opts) => {
40
+ const spinner = createSpinner("Parsing swap pairs...").start();
41
+ try {
42
+ const parsed = parsePairs(pairsInput);
43
+ const session = requireSession();
44
+ const { wallet } = await initSDKAndWallet(session);
45
+ await wallet.ensureReady({ deploy: "if_needed" });
46
+ spinner.text = "Resolving tokens...";
47
+ const pairs = await Promise.all(parsed.map(async (p) => {
48
+ const tokenIn = resolveToken(p.fromToken);
49
+ const tokenOut = resolveToken(p.toToken);
50
+ const parsedAmount = Amount.parse(p.amount, tokenIn);
51
+ return {
52
+ tokenIn,
53
+ tokenOut,
54
+ amount: parsedAmount.toBase().toString(),
55
+ };
56
+ }));
57
+ spinner.text = "Finding optimal routes...";
58
+ const routes = await getRouteBatch(pairs);
59
+ spinner.stop();
60
+ console.log();
61
+ console.log(formatTable(["#", "Input", "Output", "Route"], routes.map((r, i) => {
62
+ const outDec = r.outputToken?.decimals ?? pairs[i].tokenOut.decimals;
63
+ const outSym = r.outputToken?.symbol ?? pairs[i].tokenOut.symbol;
64
+ const outAmount = Amount.fromRaw(BigInt(r.outputAmount), {
65
+ ...pairs[i].tokenOut,
66
+ decimals: outDec,
67
+ }).toUnit();
68
+ return [
69
+ `${i + 1}`,
70
+ `${parsed[i].amount} ${parsed[i].fromToken}`,
71
+ `~${outAmount} ${outSym}`,
72
+ `${r.route?.length ?? 0} step(s)`,
73
+ ];
74
+ })));
75
+ console.log();
76
+ spinner.start();
77
+ spinner.text = "Generating calldata...";
78
+ const calldataResults = await getCalldataBatch(pairs, parseFloat(opts.slippage), session.address);
79
+ const builder = wallet.tx();
80
+ for (let i = 0; i < pairs.length; i++) {
81
+ const pair = pairs[i];
82
+ const cd = calldataResults[i];
83
+ const parsedAmount = Amount.parse(parsed[i].amount, pair.tokenIn);
84
+ builder
85
+ .approve(pair.tokenIn, fromAddress(FIBROUS_ROUTER_ADDRESS), parsedAmount)
86
+ .add({
87
+ contractAddress: FIBROUS_ROUTER_ADDRESS,
88
+ entrypoint: "swap",
89
+ calldata: cd.calldata,
90
+ });
91
+ }
92
+ if (opts.simulate) {
93
+ spinner.text = "Simulating transaction...";
94
+ const sim = await simulateTransaction(builder);
95
+ if (sim.success) {
96
+ spinner.succeed("Simulation complete");
97
+ }
98
+ else {
99
+ spinner.fail("Simulation failed");
100
+ }
101
+ const simResult = {
102
+ mode: "SIMULATION (no TX sent)",
103
+ pairs: pairs.length,
104
+ estimatedFee: sim.estimatedFee,
105
+ estimatedFeeUsd: sim.estimatedFeeUsd,
106
+ calls: sim.callCount,
107
+ ...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
108
+ };
109
+ if (opts.json) {
110
+ console.log(JSON.stringify(simResult, null, 2));
111
+ }
112
+ else {
113
+ console.log(formatResult(simResult));
114
+ }
115
+ return;
116
+ }
117
+ spinner.text = "Executing multi-swap...";
118
+ const tx = await builder.send();
119
+ spinner.text = "Waiting for confirmation...";
120
+ await tx.wait();
121
+ spinner.succeed("Multi-swap confirmed");
122
+ const txResult = {
123
+ pairs: pairs.length,
124
+ txHash: tx.hash,
125
+ explorer: tx.explorerUrl,
126
+ };
127
+ if (opts.json) {
128
+ console.log(JSON.stringify(txResult, null, 2));
129
+ }
130
+ else {
131
+ console.log(formatResult(txResult));
132
+ }
133
+ }
134
+ catch (error) {
135
+ spinner.fail("Multi-swap failed");
136
+ console.error(formatError(error));
137
+ process.exit(1);
138
+ }
139
+ });
140
+ }
141
+ //# sourceMappingURL=multi-swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-swap.js","sourceRoot":"","sources":["../../../src/commands/trade/multi-swap.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { loadSession } from "../../services/auth/session.js";
2
2
  import { checkFibrousHealth } from "../../services/fibrous/health.js";
3
- import { createSpinner, formatResult, success, warn } from "../../lib/format.js";
3
+ import { createSpinner, formatResult, success, warn, formatError } from "../../lib/format.js";
4
4
  export function registerStatusCommand(program) {
5
5
  program
6
6
  .command("status")
@@ -33,7 +33,7 @@ export function registerStatusCommand(program) {
33
33
  }
34
34
  catch (error) {
35
35
  spinner.fail("Status check failed");
36
- console.error(error instanceof Error ? error.message : error);
36
+ console.error(formatError(error));
37
37
  process.exit(1);
38
38
  }
39
39
  });
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/trade/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACrD,OAAO;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,OAAO,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5D,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAE1C,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CACV,4EAA4E,CAC5E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;oBACZ,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;iBACxB,CAAC,CACF,CAAC;gBACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;YAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,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":"status.js","sourceRoot":"","sources":["../../../src/commands/trade/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE9F,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACrD,OAAO;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,OAAO,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5D,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAE1C,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CACV,4EAA4E,CAC5E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;oBACZ,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;iBACxB,CAAC,CACF,CAAC;gBACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;YAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../src/commands/trade/swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E1D"}
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../src/commands/trade/swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmH1D"}