@antseed/cli 0.1.157 → 0.1.159

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 (285) hide show
  1. package/README.md +158 -6
  2. package/dist/cli/commands/ants/addresses.d.ts +3 -0
  3. package/dist/cli/commands/ants/addresses.d.ts.map +1 -0
  4. package/dist/cli/commands/ants/addresses.js +20 -0
  5. package/dist/cli/commands/ants/addresses.js.map +1 -0
  6. package/dist/cli/commands/ants/addresses.test.d.ts +2 -0
  7. package/dist/cli/commands/ants/addresses.test.d.ts.map +1 -0
  8. package/dist/cli/commands/ants/addresses.test.js +12 -0
  9. package/dist/cli/commands/ants/addresses.test.js.map +1 -0
  10. package/dist/cli/commands/ants/arguments.test.d.ts +2 -0
  11. package/dist/cli/commands/ants/arguments.test.d.ts.map +1 -0
  12. package/dist/cli/commands/ants/arguments.test.js +51 -0
  13. package/dist/cli/commands/ants/arguments.test.js.map +1 -0
  14. package/dist/cli/commands/ants/dashboard.d.ts +4 -0
  15. package/dist/cli/commands/ants/dashboard.d.ts.map +1 -0
  16. package/dist/cli/commands/ants/dashboard.js +45 -0
  17. package/dist/cli/commands/ants/dashboard.js.map +1 -0
  18. package/dist/cli/commands/ants/dashboard.test.d.ts +2 -0
  19. package/dist/cli/commands/ants/dashboard.test.d.ts.map +1 -0
  20. package/dist/cli/commands/ants/dashboard.test.js +14 -0
  21. package/dist/cli/commands/ants/dashboard.test.js.map +1 -0
  22. package/dist/cli/commands/ants/emissions.d.ts +5 -0
  23. package/dist/cli/commands/ants/emissions.d.ts.map +1 -0
  24. package/dist/cli/commands/ants/emissions.js +44 -0
  25. package/dist/cli/commands/ants/emissions.js.map +1 -0
  26. package/dist/cli/commands/ants/emissions.test.d.ts +2 -0
  27. package/dist/cli/commands/ants/emissions.test.d.ts.map +1 -0
  28. package/dist/cli/commands/ants/emissions.test.js +17 -0
  29. package/dist/cli/commands/ants/emissions.test.js.map +1 -0
  30. package/dist/cli/commands/ants/extend.d.ts +3 -0
  31. package/dist/cli/commands/ants/extend.d.ts.map +1 -0
  32. package/dist/cli/commands/ants/extend.js +14 -0
  33. package/dist/cli/commands/ants/extend.js.map +1 -0
  34. package/dist/cli/commands/ants/extend.test.d.ts +2 -0
  35. package/dist/cli/commands/ants/extend.test.d.ts.map +1 -0
  36. package/dist/cli/commands/ants/extend.test.js +13 -0
  37. package/dist/cli/commands/ants/extend.test.js.map +1 -0
  38. package/dist/cli/commands/ants/index.d.ts +7 -0
  39. package/dist/cli/commands/ants/index.d.ts.map +1 -0
  40. package/dist/cli/commands/ants/index.js +46 -0
  41. package/dist/cli/commands/ants/index.js.map +1 -0
  42. package/dist/cli/commands/ants/index.test.d.ts +2 -0
  43. package/dist/cli/commands/ants/index.test.d.ts.map +1 -0
  44. package/dist/cli/commands/ants/index.test.js +24 -0
  45. package/dist/cli/commands/ants/index.test.js.map +1 -0
  46. package/dist/cli/commands/ants/max-lock.d.ts +3 -0
  47. package/dist/cli/commands/ants/max-lock.d.ts.map +1 -0
  48. package/dist/cli/commands/ants/max-lock.js +13 -0
  49. package/dist/cli/commands/ants/max-lock.js.map +1 -0
  50. package/dist/cli/commands/ants/max-lock.test.d.ts +2 -0
  51. package/dist/cli/commands/ants/max-lock.test.d.ts.map +1 -0
  52. package/dist/cli/commands/ants/max-lock.test.js +15 -0
  53. package/dist/cli/commands/ants/max-lock.test.js.map +1 -0
  54. package/dist/cli/commands/ants/merge.d.ts +3 -0
  55. package/dist/cli/commands/ants/merge.d.ts.map +1 -0
  56. package/dist/cli/commands/ants/merge.js +12 -0
  57. package/dist/cli/commands/ants/merge.js.map +1 -0
  58. package/dist/cli/commands/ants/merge.test.d.ts +2 -0
  59. package/dist/cli/commands/ants/merge.test.d.ts.map +1 -0
  60. package/dist/cli/commands/ants/merge.test.js +16 -0
  61. package/dist/cli/commands/ants/merge.test.js.map +1 -0
  62. package/dist/cli/commands/ants/move.d.ts +3 -0
  63. package/dist/cli/commands/ants/move.d.ts.map +1 -0
  64. package/dist/cli/commands/ants/move.js +14 -0
  65. package/dist/cli/commands/ants/move.js.map +1 -0
  66. package/dist/cli/commands/ants/move.test.d.ts +2 -0
  67. package/dist/cli/commands/ants/move.test.d.ts.map +1 -0
  68. package/dist/cli/commands/ants/move.test.js +16 -0
  69. package/dist/cli/commands/ants/move.test.js.map +1 -0
  70. package/dist/cli/commands/ants/pool.d.ts +3 -0
  71. package/dist/cli/commands/ants/pool.d.ts.map +1 -0
  72. package/dist/cli/commands/ants/pool.js +21 -0
  73. package/dist/cli/commands/ants/pool.js.map +1 -0
  74. package/dist/cli/commands/ants/pool.test.d.ts +2 -0
  75. package/dist/cli/commands/ants/pool.test.d.ts.map +1 -0
  76. package/dist/cli/commands/ants/pool.test.js +13 -0
  77. package/dist/cli/commands/ants/pool.test.js.map +1 -0
  78. package/dist/cli/commands/ants/pools.d.ts +6 -0
  79. package/dist/cli/commands/ants/pools.d.ts.map +1 -0
  80. package/dist/cli/commands/ants/pools.js +50 -0
  81. package/dist/cli/commands/ants/pools.js.map +1 -0
  82. package/dist/cli/commands/ants/pools.test.d.ts +2 -0
  83. package/dist/cli/commands/ants/pools.test.d.ts.map +1 -0
  84. package/dist/cli/commands/ants/pools.test.js +18 -0
  85. package/dist/cli/commands/ants/pools.test.js.map +1 -0
  86. package/dist/cli/commands/ants/positions.d.ts +6 -0
  87. package/dist/cli/commands/ants/positions.d.ts.map +1 -0
  88. package/dist/cli/commands/ants/positions.js +46 -0
  89. package/dist/cli/commands/ants/positions.js.map +1 -0
  90. package/dist/cli/commands/ants/positions.test.d.ts +2 -0
  91. package/dist/cli/commands/ants/positions.test.d.ts.map +1 -0
  92. package/dist/cli/commands/ants/positions.test.js +19 -0
  93. package/dist/cli/commands/ants/positions.test.js.map +1 -0
  94. package/dist/cli/commands/ants/rewards.d.ts +9 -0
  95. package/dist/cli/commands/ants/rewards.d.ts.map +1 -0
  96. package/dist/cli/commands/ants/rewards.js +93 -0
  97. package/dist/cli/commands/ants/rewards.js.map +1 -0
  98. package/dist/cli/commands/ants/rewards.test.d.ts +2 -0
  99. package/dist/cli/commands/ants/rewards.test.d.ts.map +1 -0
  100. package/dist/cli/commands/ants/rewards.test.js +46 -0
  101. package/dist/cli/commands/ants/rewards.test.js.map +1 -0
  102. package/dist/cli/commands/ants/seller.d.ts +3 -0
  103. package/dist/cli/commands/ants/seller.d.ts.map +1 -0
  104. package/dist/cli/commands/ants/seller.js +32 -0
  105. package/dist/cli/commands/ants/seller.js.map +1 -0
  106. package/dist/cli/commands/ants/seller.test.d.ts +2 -0
  107. package/dist/cli/commands/ants/seller.test.d.ts.map +1 -0
  108. package/dist/cli/commands/ants/seller.test.js +16 -0
  109. package/dist/cli/commands/ants/seller.test.js.map +1 -0
  110. package/dist/cli/commands/ants/shared.d.ts +26 -0
  111. package/dist/cli/commands/ants/shared.d.ts.map +1 -0
  112. package/dist/cli/commands/ants/shared.js +94 -0
  113. package/dist/cli/commands/ants/shared.js.map +1 -0
  114. package/dist/cli/commands/ants/shared.test.d.ts +2 -0
  115. package/dist/cli/commands/ants/shared.test.d.ts.map +1 -0
  116. package/dist/cli/commands/ants/shared.test.js +25 -0
  117. package/dist/cli/commands/ants/shared.test.js.map +1 -0
  118. package/dist/cli/commands/ants/split.d.ts +3 -0
  119. package/dist/cli/commands/ants/split.d.ts.map +1 -0
  120. package/dist/cli/commands/ants/split.js +12 -0
  121. package/dist/cli/commands/ants/split.js.map +1 -0
  122. package/dist/cli/commands/ants/split.test.d.ts +2 -0
  123. package/dist/cli/commands/ants/split.test.d.ts.map +1 -0
  124. package/dist/cli/commands/ants/split.test.js +13 -0
  125. package/dist/cli/commands/ants/split.test.js.map +1 -0
  126. package/dist/cli/commands/ants/stake.d.ts +3 -0
  127. package/dist/cli/commands/ants/stake.d.ts.map +1 -0
  128. package/dist/cli/commands/ants/stake.js +15 -0
  129. package/dist/cli/commands/ants/stake.js.map +1 -0
  130. package/dist/cli/commands/ants/stake.test.d.ts +2 -0
  131. package/dist/cli/commands/ants/stake.test.d.ts.map +1 -0
  132. package/dist/cli/commands/ants/stake.test.js +17 -0
  133. package/dist/cli/commands/ants/stake.test.js.map +1 -0
  134. package/dist/cli/commands/ants/status.d.ts +9 -0
  135. package/dist/cli/commands/ants/status.d.ts.map +1 -0
  136. package/dist/cli/commands/ants/status.js +43 -0
  137. package/dist/cli/commands/ants/status.js.map +1 -0
  138. package/dist/cli/commands/ants/status.test.d.ts +2 -0
  139. package/dist/cli/commands/ants/status.test.d.ts.map +1 -0
  140. package/dist/cli/commands/ants/status.test.js +23 -0
  141. package/dist/cli/commands/ants/status.test.js.map +1 -0
  142. package/dist/cli/commands/ants/usage.d.ts +4 -0
  143. package/dist/cli/commands/ants/usage.d.ts.map +1 -0
  144. package/dist/cli/commands/ants/usage.js +31 -0
  145. package/dist/cli/commands/ants/usage.js.map +1 -0
  146. package/dist/cli/commands/ants/usage.test.d.ts +2 -0
  147. package/dist/cli/commands/ants/usage.test.d.ts.map +1 -0
  148. package/dist/cli/commands/ants/usage.test.js +15 -0
  149. package/dist/cli/commands/ants/usage.test.js.map +1 -0
  150. package/dist/cli/commands/ants/verify.d.ts +3 -0
  151. package/dist/cli/commands/ants/verify.d.ts.map +1 -0
  152. package/dist/cli/commands/ants/verify.js +51 -0
  153. package/dist/cli/commands/ants/verify.js.map +1 -0
  154. package/dist/cli/commands/ants/verify.test.d.ts +2 -0
  155. package/dist/cli/commands/ants/verify.test.d.ts.map +1 -0
  156. package/dist/cli/commands/ants/verify.test.js +51 -0
  157. package/dist/cli/commands/ants/verify.test.js.map +1 -0
  158. package/dist/cli/commands/ants/withdraw.d.ts +16 -0
  159. package/dist/cli/commands/ants/withdraw.d.ts.map +1 -0
  160. package/dist/cli/commands/ants/withdraw.js +48 -0
  161. package/dist/cli/commands/ants/withdraw.js.map +1 -0
  162. package/dist/cli/commands/ants/withdraw.test.d.ts +2 -0
  163. package/dist/cli/commands/ants/withdraw.test.d.ts.map +1 -0
  164. package/dist/cli/commands/ants/withdraw.test.js +30 -0
  165. package/dist/cli/commands/ants/withdraw.test.js.map +1 -0
  166. package/dist/cli/commands/buyer/start.d.ts.map +1 -1
  167. package/dist/cli/commands/buyer/start.js +7 -1
  168. package/dist/cli/commands/buyer/start.js.map +1 -1
  169. package/dist/cli/commands/emissions.d.ts +7 -0
  170. package/dist/cli/commands/emissions.d.ts.map +1 -1
  171. package/dist/cli/commands/emissions.js +105 -27
  172. package/dist/cli/commands/emissions.js.map +1 -1
  173. package/dist/cli/commands/emissions.test.js +7 -1
  174. package/dist/cli/commands/emissions.test.js.map +1 -1
  175. package/dist/cli/commands/network/browse.d.ts.map +1 -1
  176. package/dist/cli/commands/network/browse.js +12 -3
  177. package/dist/cli/commands/network/browse.js.map +1 -1
  178. package/dist/cli/commands/network/chain-config-helper.d.ts +21 -1
  179. package/dist/cli/commands/network/chain-config-helper.d.ts.map +1 -1
  180. package/dist/cli/commands/network/chain-config-helper.js +6 -1
  181. package/dist/cli/commands/network/chain-config-helper.js.map +1 -1
  182. package/dist/cli/commands/network/peer.d.ts.map +1 -1
  183. package/dist/cli/commands/network/peer.js +21 -1
  184. package/dist/cli/commands/network/peer.js.map +1 -1
  185. package/dist/cli/commands/parse-positive-integer.d.ts +2 -0
  186. package/dist/cli/commands/parse-positive-integer.d.ts.map +1 -0
  187. package/dist/cli/commands/parse-positive-integer.js +9 -0
  188. package/dist/cli/commands/parse-positive-integer.js.map +1 -0
  189. package/dist/cli/commands/reward-actions.d.ts +11 -0
  190. package/dist/cli/commands/reward-actions.d.ts.map +1 -0
  191. package/dist/cli/commands/reward-actions.js +22 -0
  192. package/dist/cli/commands/reward-actions.js.map +1 -0
  193. package/dist/cli/commands/seller/contract-clients.test.d.ts +2 -0
  194. package/dist/cli/commands/seller/contract-clients.test.d.ts.map +1 -0
  195. package/dist/cli/commands/seller/contract-clients.test.js +46 -0
  196. package/dist/cli/commands/seller/contract-clients.test.js.map +1 -0
  197. package/dist/cli/commands/seller/index.d.ts.map +1 -1
  198. package/dist/cli/commands/seller/index.js +4 -2
  199. package/dist/cli/commands/seller/index.js.map +1 -1
  200. package/dist/cli/commands/seller/pool.d.ts +15 -0
  201. package/dist/cli/commands/seller/pool.d.ts.map +1 -0
  202. package/dist/cli/commands/seller/pool.js +201 -0
  203. package/dist/cli/commands/seller/pool.js.map +1 -0
  204. package/dist/cli/commands/seller/pool.test.d.ts +2 -0
  205. package/dist/cli/commands/seller/pool.test.d.ts.map +1 -0
  206. package/dist/cli/commands/seller/pool.test.js +16 -0
  207. package/dist/cli/commands/seller/pool.test.js.map +1 -0
  208. package/dist/cli/commands/seller/register.d.ts.map +1 -1
  209. package/dist/cli/commands/seller/register.js +38 -8
  210. package/dist/cli/commands/seller/register.js.map +1 -1
  211. package/dist/cli/commands/seller/rewards.d.ts +13 -0
  212. package/dist/cli/commands/seller/rewards.d.ts.map +1 -0
  213. package/dist/cli/commands/seller/rewards.js +115 -0
  214. package/dist/cli/commands/seller/rewards.js.map +1 -0
  215. package/dist/cli/commands/seller/rewards.test.d.ts +2 -0
  216. package/dist/cli/commands/seller/rewards.test.d.ts.map +1 -0
  217. package/dist/cli/commands/seller/rewards.test.js +21 -0
  218. package/dist/cli/commands/seller/rewards.test.js.map +1 -0
  219. package/dist/cli/commands/seller/setup.d.ts.map +1 -1
  220. package/dist/cli/commands/seller/setup.js +2 -1
  221. package/dist/cli/commands/seller/setup.js.map +1 -1
  222. package/dist/cli/commands/seller/stake.d.ts.map +1 -1
  223. package/dist/cli/commands/seller/stake.js +104 -65
  224. package/dist/cli/commands/seller/stake.js.map +1 -1
  225. package/dist/cli/commands/seller/stake.test.d.ts +2 -0
  226. package/dist/cli/commands/seller/stake.test.d.ts.map +1 -0
  227. package/dist/cli/commands/seller/stake.test.js +99 -0
  228. package/dist/cli/commands/seller/stake.test.js.map +1 -0
  229. package/dist/cli/commands/seller/start.d.ts.map +1 -1
  230. package/dist/cli/commands/seller/start.js +6 -0
  231. package/dist/cli/commands/seller/start.js.map +1 -1
  232. package/dist/cli/commands/seller/status.d.ts.map +1 -1
  233. package/dist/cli/commands/seller/status.js +44 -2
  234. package/dist/cli/commands/seller/status.js.map +1 -1
  235. package/dist/cli/index.js +2 -0
  236. package/dist/cli/index.js.map +1 -1
  237. package/dist/cli/payment-utils.d.ts +33 -2
  238. package/dist/cli/payment-utils.d.ts.map +1 -1
  239. package/dist/cli/payment-utils.js +101 -2
  240. package/dist/cli/payment-utils.js.map +1 -1
  241. package/dist/config/types.d.ts +20 -0
  242. package/dist/config/types.d.ts.map +1 -1
  243. package/dist/plugins/verifier-evidence.test.d.ts +2 -0
  244. package/dist/plugins/verifier-evidence.test.d.ts.map +1 -0
  245. package/dist/plugins/verifier-evidence.test.js +41 -0
  246. package/dist/plugins/verifier-evidence.test.js.map +1 -0
  247. package/dist/plugins/verifier.d.ts +8 -10
  248. package/dist/plugins/verifier.d.ts.map +1 -1
  249. package/dist/plugins/verifier.js +23 -51
  250. package/dist/plugins/verifier.js.map +1 -1
  251. package/dist/plugins/verifier.test.js +1 -37
  252. package/dist/plugins/verifier.test.js.map +1 -1
  253. package/dist/proxy/buyer-proxy.d.ts +2 -1
  254. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  255. package/dist/proxy/buyer-proxy.js +104 -28
  256. package/dist/proxy/buyer-proxy.js.map +1 -1
  257. package/dist/proxy/buyer-proxy.test.js +177 -19
  258. package/dist/proxy/buyer-proxy.test.js.map +1 -1
  259. package/dist/proxy/network-models.d.ts +1 -2
  260. package/dist/proxy/network-models.d.ts.map +1 -1
  261. package/dist/proxy/network-models.js +10 -23
  262. package/dist/proxy/network-models.js.map +1 -1
  263. package/dist/proxy/network-models.test.js +56 -27
  264. package/dist/proxy/network-models.test.js.map +1 -1
  265. package/dist/proxy/tee-control.d.ts +14 -0
  266. package/dist/proxy/tee-control.d.ts.map +1 -0
  267. package/dist/proxy/tee-control.js +100 -0
  268. package/dist/proxy/tee-control.js.map +1 -0
  269. package/dist/proxy/tee-control.test.d.ts +2 -0
  270. package/dist/proxy/tee-control.test.d.ts.map +1 -0
  271. package/dist/proxy/tee-control.test.js +56 -0
  272. package/dist/proxy/tee-control.test.js.map +1 -0
  273. package/dist/proxy/tee-verification.d.ts +24 -0
  274. package/dist/proxy/tee-verification.d.ts.map +1 -0
  275. package/dist/proxy/tee-verification.js +128 -0
  276. package/dist/proxy/tee-verification.js.map +1 -0
  277. package/dist/proxy/tee-verification.test.d.ts +2 -0
  278. package/dist/proxy/tee-verification.test.d.ts.map +1 -0
  279. package/dist/proxy/tee-verification.test.js +241 -0
  280. package/dist/proxy/tee-verification.test.js.map +1 -0
  281. package/package.json +8 -6
  282. package/dist/cli/commands/seller/emissions.d.ts +0 -3
  283. package/dist/cli/commands/seller/emissions.d.ts.map +0 -1
  284. package/dist/cli/commands/seller/emissions.js +0 -5
  285. package/dist/cli/commands/seller/emissions.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ import { registerAntsDashboardAction } from './dashboard.js';
2
+ import { registerAntsStatusCommand } from './status.js';
3
+ import { registerAntsPositionsCommand } from './positions.js';
4
+ import { registerAntsStakeCommand } from './stake.js';
5
+ import { registerAntsMoveCommand } from './move.js';
6
+ import { registerAntsSplitCommand } from './split.js';
7
+ import { registerAntsMergeCommand } from './merge.js';
8
+ import { registerAntsExtendCommand } from './extend.js';
9
+ import { registerAntsMaxLockCommand } from './max-lock.js';
10
+ import { registerAntsWithdrawCommand } from './withdraw.js';
11
+ import { registerAntsRewardsCommand } from './rewards.js';
12
+ import { registerAntsPoolsCommand } from './pools.js';
13
+ import { registerAntsPoolCommand } from './pool.js';
14
+ import { registerAntsUsageCommand } from './usage.js';
15
+ import { registerAntsEmissionsCommand } from './emissions.js';
16
+ import { registerAntsAddressesCommand } from './addresses.js';
17
+ import { registerAntsSellerCommand } from './seller.js';
18
+ import { registerAntsVerifyCommand } from './verify.js';
19
+ /**
20
+ * `antseed ants` opens the local ANTS staking dashboard; every dashboard
21
+ * action is also a subcommand so the dashboard stays optional.
22
+ */
23
+ export function registerAntsCommands(program) {
24
+ const antsCmd = program
25
+ .command('ants')
26
+ .description('ANTS staking: local dashboard (default) or CLI commands for positions, rewards, pools, verification');
27
+ registerAntsDashboardAction(antsCmd);
28
+ registerAntsStatusCommand(antsCmd);
29
+ registerAntsPositionsCommand(antsCmd);
30
+ registerAntsStakeCommand(antsCmd);
31
+ registerAntsMoveCommand(antsCmd);
32
+ registerAntsSplitCommand(antsCmd);
33
+ registerAntsMergeCommand(antsCmd);
34
+ registerAntsExtendCommand(antsCmd);
35
+ registerAntsMaxLockCommand(antsCmd);
36
+ registerAntsWithdrawCommand(antsCmd);
37
+ registerAntsRewardsCommand(antsCmd);
38
+ registerAntsPoolsCommand(antsCmd);
39
+ registerAntsPoolCommand(antsCmd);
40
+ registerAntsUsageCommand(antsCmd);
41
+ registerAntsEmissionsCommand(antsCmd);
42
+ registerAntsAddressesCommand(antsCmd);
43
+ registerAntsSellerCommand(antsCmd);
44
+ registerAntsVerifyCommand(antsCmd);
45
+ }
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qGAAqG,CAAC,CAAC;IAEtH,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { Command } from 'commander';
4
+ import { registerAntsCommands } from './index.js';
5
+ function antsCommand() {
6
+ const program = new Command();
7
+ registerAntsCommands(program);
8
+ return program.commands.find((command) => command.name() === 'ants');
9
+ }
10
+ test('antseed ants registers the dashboard plus every staking, reward, pool, seller, and verification subcommand', () => {
11
+ const ants = antsCommand();
12
+ assert.ok(ants);
13
+ const names = ants.commands.map((command) => command.name()).sort();
14
+ assert.deepEqual(names, [
15
+ 'addresses', 'emissions', 'extend', 'max-lock', 'merge', 'move', 'pool', 'pools', 'positions',
16
+ 'rewards', 'seller', 'split', 'stake', 'status', 'usage', 'verify', 'withdraw',
17
+ ]);
18
+ });
19
+ test('every subcommand has a description', () => {
20
+ for (const command of antsCommand().commands) {
21
+ assert.ok(command.description().length > 0, `${command.name()} description`);
22
+ }
23
+ });
24
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,MAAM,CAAE,CAAC;AACxE,CAAC;AAED,IAAI,CAAC,4GAA4G,EAAE,GAAG,EAAE;IACtH,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;QAC7F,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;KAC/E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAntsMaxLockCommand(antsCmd: Command): void;
3
+ //# sourceMappingURL=max-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-lock.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/max-lock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASjE"}
@@ -0,0 +1,13 @@
1
+ import { maxLock } from '@antseed/ants';
2
+ import { runAction } from './shared.js';
3
+ export function registerAntsMaxLockCommand(antsCmd) {
4
+ antsCmd
5
+ .command('max-lock <id>')
6
+ .description('Enable max lock (constant maximum power) on a position, or disable it with --off')
7
+ .option('--off', 'disable max lock; a fresh full-length countdown starts next epoch', false)
8
+ .action(async (id, options) => runAction(antsCmd, options.off ? 'Disabling max lock...' : 'Enabling max lock...', async ({ ctx }, report) => {
9
+ await maxLock(ctx, { positionId: Number(id), enable: !options.off }, report);
10
+ return options.off ? `Max lock disabled on position ${id}` : `Max lock enabled on position ${id}`;
11
+ }));
12
+ }
13
+ //# sourceMappingURL=max-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-lock.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/max-lock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,OAAO,EAAE,mEAAmE,EAAE,KAAK,CAAC;SAC3F,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE;QACpK,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC,CAAC,gCAAgC,EAAE,EAAE,CAAC;IACpG,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=max-lock.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-lock.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/max-lock.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { Command } from 'commander';
4
+ import { registerAntsMaxLockCommand } from './max-lock.js';
5
+ test('max-lock enables by default and disables with --off', () => {
6
+ const ants = new Command('ants');
7
+ registerAntsMaxLockCommand(ants);
8
+ const maxLock = ants.commands.find((command) => command.name() === 'max-lock');
9
+ assert.ok(maxLock);
10
+ assert.deepEqual(maxLock.registeredArguments.map((argument) => argument.name()), ['id']);
11
+ const off = maxLock.options.find((option) => option.long === '--off');
12
+ assert.ok(off);
13
+ assert.equal(off.defaultValue, false);
14
+ });
15
+ //# sourceMappingURL=max-lock.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-lock.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/max-lock.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC,CAAC;IAC/E,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAntsMergeCommand(antsCmd: Command): void;
3
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ/D"}
@@ -0,0 +1,12 @@
1
+ import { merge } from '@antseed/ants';
2
+ import { parseIds, runAction } from './shared.js';
3
+ export function registerAntsMergeCommand(antsCmd) {
4
+ antsCmd
5
+ .command('merge <ids...>')
6
+ .description('Merge positions in the same pool with the same lock end into one position')
7
+ .action(async (ids) => runAction(antsCmd, 'Merging positions...', async ({ ctx }, report) => {
8
+ await merge(ctx, { positionIds: parseIds(ids) }, report);
9
+ return `Merged ${ids.length} positions; the replacement takes over their power next epoch`;
10
+ }));
11
+ }
12
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/merge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,2EAA2E,CAAC;SACxF,MAAM,CAAC,KAAK,EAAE,GAAa,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE;QACpG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,UAAU,GAAG,CAAC,MAAM,+DAA+D,CAAC;IAC7F,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=merge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/merge.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { Command } from 'commander';
4
+ import { registerAntsMergeCommand } from './merge.js';
5
+ test('merge takes a variadic list of position ids and no options', () => {
6
+ const ants = new Command('ants');
7
+ registerAntsMergeCommand(ants);
8
+ const merge = ants.commands.find((command) => command.name() === 'merge');
9
+ assert.ok(merge);
10
+ const ids = merge.registeredArguments[0];
11
+ assert.ok(ids);
12
+ assert.equal(ids.name(), 'ids');
13
+ assert.ok(ids.variadic);
14
+ assert.deepEqual(merge.options, []);
15
+ });
16
+ //# sourceMappingURL=merge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/merge.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAntsMoveCommand(antsCmd: Command): void;
3
+ //# sourceMappingURL=move.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS9D"}
@@ -0,0 +1,14 @@
1
+ import { parsePositiveInteger } from '../parse-positive-integer.js';
2
+ import { move } from '@antseed/ants';
3
+ import { parseIds, runAction } from './shared.js';
4
+ export function registerAntsMoveCommand(antsCmd) {
5
+ antsCmd
6
+ .command('move <ids...>')
7
+ .description('Move positions to another seller agent pool (principal and lock terms are preserved)')
8
+ .requiredOption('--to <agentId>', 'destination agent ID', parsePositiveInteger)
9
+ .action(async (ids, options) => runAction(antsCmd, 'Moving stake...', async ({ ctx }, report) => {
10
+ await move(ctx, { positionIds: parseIds(ids), toAgentId: options.to }, report);
11
+ return `Moved ${ids.length} position(s) to agent ${options.to}; effective next epoch. Rewards accrued so far stay claimable on the old IDs.`;
12
+ }));
13
+ }
14
+ //# sourceMappingURL=move.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/move.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,sFAAsF,CAAC;SACnG,cAAc,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,oBAAoB,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,GAAa,EAAE,OAAuB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE;QACxH,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,SAAS,GAAG,CAAC,MAAM,yBAAyB,OAAO,CAAC,EAAE,+EAA+E,CAAC;IAC/I,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=move.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/move.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { Command } from 'commander';
4
+ import { registerAntsMoveCommand } from './move.js';
5
+ test('move accepts several position ids and requires a destination pool', () => {
6
+ const ants = new Command('ants');
7
+ registerAntsMoveCommand(ants);
8
+ const move = ants.commands.find((command) => command.name() === 'move');
9
+ assert.ok(move);
10
+ const ids = move.registeredArguments[0];
11
+ assert.ok(ids);
12
+ assert.equal(ids.name(), 'ids');
13
+ assert.ok(ids.variadic);
14
+ assert.ok(move.options.find((option) => option.long === '--to')?.mandatory, '--to is required');
15
+ });
16
+ //# sourceMappingURL=move.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/move.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;IACxE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAntsPoolCommand(antsCmd: Command): void;
3
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6B9D"}
@@ -0,0 +1,21 @@
1
+ import Table from 'cli-table3';
2
+ import { singlePool, formatAnts, formatBps } from '@antseed/ants';
3
+ import { ants, printJson, runRead, usdc } from './shared.js';
4
+ export function registerAntsPoolCommand(antsCmd) {
5
+ antsCmd
6
+ .command('pool <agentId>')
7
+ .description('Show one seller agent pool')
8
+ .option('--json', 'output as JSON', false)
9
+ .action(async (agentId, options) => runRead(antsCmd, 'Loading pool...', async ({ ctx }) => {
10
+ const pool = await singlePool(ctx, Number(agentId));
11
+ if (options.json)
12
+ return printJson(pool);
13
+ const table = new Table({ head: ['Field', 'Value'] });
14
+ table.push(['Agent', pool.agentId], ['Seller', pool.seller ?? 'unknown'], ['Name', pool.profile?.name ?? '—'], ['Stakeable', pool.stakeable ? 'yes (bound in seller registry)' : 'no (seller not bound)'], ['Has pool this epoch', pool.hasPool ? 'yes' : 'no'], ['Active stake', ants(pool.activeStake)], ['Power', `${formatAnts(pool.weight, 0)} (${formatBps(pool.powerShareBps)} of all pools)`], ['Security share', formatBps(pool.securityShareBps)], ['Volume by epoch', pool.volumes.map((row) => `e${row.epoch} ${usdc(row.usdc)}`).join(' ')], ['Usage points (epoch)', `${pool.usagePoints} (weighted ${pool.weightedUsagePoints})`], ['Last epoch pool emission', pool.lastEpochEmission === null ? 'not settled' : `${ants(pool.lastEpochEmission)} (${pool.lastEpochRewardPer1kPower ? formatAnts(pool.lastEpochRewardPer1kPower, 2) : '—'} ANTS per 1k power)`], ['Projected this epoch', pool.projectedRewardPer1kPower ? `${formatAnts(pool.projectedRewardPer1kPower, 2)} ANTS per 1k power` : '—'], ['Your stake / power', `${ants(pool.yourStake)} / ${formatAnts(pool.yourPower, 0)} (${formatBps(pool.yourPoolShareBps)} of pool)${pool.yourPositionIds.length ? ` positions ${pool.yourPositionIds.join(', ')}` : ''}`]);
15
+ if (pool.profile) {
16
+ table.push(['Explorer profile', `${pool.profile.modelsServed ?? '?'} models, ${pool.profile.uniqueBuyers ?? '?'} buyers, lifetime ${usdc(pool.profile.lifetimeVolumeUsdc ?? '0')}, ghost rate ${pool.profile.ghostRate ?? '?'}%`]);
17
+ }
18
+ console.log(table.toString());
19
+ }));
20
+ }
21
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pool.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pool.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { Command } from 'commander';
4
+ import { registerAntsPoolCommand } from './pool.js';
5
+ test('pool takes an agent id and offers JSON output', () => {
6
+ const ants = new Command('ants');
7
+ registerAntsPoolCommand(ants);
8
+ const pool = ants.commands.find((command) => command.name() === 'pool');
9
+ assert.ok(pool);
10
+ assert.deepEqual(pool.registeredArguments.map((argument) => argument.name()), ['agentId']);
11
+ assert.ok(pool.options.some((option) => option.long === '--json'));
12
+ });
13
+ //# sourceMappingURL=pool.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pool.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACzD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;IACxE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from 'commander';
2
+ import { type PoolView } from '@antseed/ants';
3
+ /** Display name for a pool row: explorer name, else a shortened seller address, else "unbound". */
4
+ export declare function poolLabel(pool: Pick<PoolView, 'profile' | 'seller'>): string;
5
+ export declare function registerAntsPoolsCommand(antsCmd: Command): void;
6
+ //# sourceMappingURL=pools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pools.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGhF,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG,MAAM,CAI5E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiC/D"}
@@ -0,0 +1,50 @@
1
+ import chalk from 'chalk';
2
+ import Table from 'cli-table3';
3
+ import { poolsView, formatAnts, formatBps } from '@antseed/ants';
4
+ import { ants, printJson, runRead, usdc } from './shared.js';
5
+ /** Display name for a pool row: explorer name, else a shortened seller address, else "unbound". */
6
+ export function poolLabel(pool) {
7
+ if (pool.profile?.name)
8
+ return pool.profile.name;
9
+ if (pool.seller)
10
+ return `${pool.seller.slice(0, 6)}…${pool.seller.slice(-4)}`;
11
+ return 'unbound';
12
+ }
13
+ export function registerAntsPoolsCommand(antsCmd) {
14
+ antsCmd
15
+ .command('pools')
16
+ .description('Compare seller pools: power, share of network, settled volume, staker reward per power, your position')
17
+ .option('--json', 'output as JSON', false)
18
+ .action(async (options) => runRead(antsCmd, 'Loading pools...', async ({ ctx }) => {
19
+ const view = await poolsView(ctx);
20
+ if (options.json)
21
+ return printJson(view);
22
+ if (view.source === 'chain')
23
+ console.log(chalk.yellow(`Pool statistics unavailable${view.sourceError ? ` (${view.sourceError})` : ' (no explorer configured)'}; listing only pools you stake in.`));
24
+ if (view.pools.length === 0)
25
+ return console.log(chalk.yellow('No seller pools have been staked or registered yet.'));
26
+ const [current, last] = view.networkVolumes;
27
+ const table = new Table({
28
+ head: ['Pool', 'Agent', 'Power', 'Share', `Vol e${current?.epoch ?? '?'}`, `Vol e${last?.epoch ?? '?'}`, 'ANTS/1k pwr (last)', 'ANTS/1k pwr (proj.)', 'Your power', 'Your share'],
29
+ });
30
+ for (const pool of view.pools) {
31
+ const name = poolLabel(pool);
32
+ table.push([
33
+ pool.stakeable ? name : chalk.dim(`${name} (not stakeable)`),
34
+ pool.agentId,
35
+ formatAnts(pool.weight, 0),
36
+ formatBps(pool.powerShareBps),
37
+ usdc(pool.volumes[0]?.usdc ?? '0', 0),
38
+ usdc(pool.volumes[1]?.usdc ?? '0', 0),
39
+ pool.lastEpochRewardPer1kPower === null ? '—' : formatAnts(pool.lastEpochRewardPer1kPower, 2),
40
+ pool.projectedRewardPer1kPower === null ? '—' : formatAnts(pool.projectedRewardPer1kPower, 2),
41
+ formatAnts(pool.yourPower, 0),
42
+ formatBps(pool.yourPoolShareBps),
43
+ ]);
44
+ }
45
+ console.log(table.toString());
46
+ console.log(chalk.dim(`Epoch ${view.currentEpoch}. Network power ${formatAnts(view.totalPowerWeight, 0)}; your power ${formatAnts(view.yourTotalPower, 0)} (${formatBps(view.yourNetworkShareBps)} of all pools). Network volume ${usdc(current?.usdc ?? '0', 0)} this epoch, ${usdc(last?.usdc ?? '0', 0)} last. Staker budget ${ants(view.stakerBudget, 0)}.`));
47
+ console.log(chalk.dim('Volume is settled USDC per epoch. ANTS/1k power = staker rewards paid per 1,000 units of pool power; projected uses this epoch\'s usage so far.'));
48
+ }));
49
+ }
50
+ //# sourceMappingURL=pools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pools.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { Command } from 'commander';
4
+ import { poolLabel, registerAntsPoolsCommand } from './pools.js';
5
+ test('pools offers JSON output', () => {
6
+ const ants = new Command('ants');
7
+ registerAntsPoolsCommand(ants);
8
+ const pools = ants.commands.find((command) => command.name() === 'pools');
9
+ assert.ok(pools);
10
+ assert.ok(pools.options.some((option) => option.long === '--json'));
11
+ });
12
+ test('poolLabel prefers the explorer name, then a short seller address', () => {
13
+ const seller = '0x1234567890abcdef1234567890abcdef12345678';
14
+ assert.equal(poolLabel({ profile: { name: 'Flash' }, seller }), 'Flash');
15
+ assert.equal(poolLabel({ profile: null, seller }), '0x1234…5678');
16
+ assert.equal(poolLabel({ profile: null, seller: null }), 'unbound');
17
+ });
18
+ //# sourceMappingURL=pools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pools.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/pools.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEjE,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACpC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,MAAM,GAAG,4CAA4C,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAW,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAClF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IAClE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from 'commander';
2
+ import { type PositionView } from '@antseed/ants';
3
+ /** Exit-slash column: on-chain value when the contract reports one, otherwise the local estimate. */
4
+ export declare function slashColumn(position: Pick<PositionView, 'state' | 'slashBps' | 'projectedSlashBps'>): string;
5
+ export declare function registerAntsPositionsCommand(antsCmd: Command): void;
6
+ //# sourceMappingURL=positions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positions.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/positions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzE,qGAAqG;AACrG,wBAAgB,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,UAAU,GAAG,mBAAmB,CAAC,GAAG,MAAM,CAG5G;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiCnE"}
@@ -0,0 +1,46 @@
1
+ import chalk from 'chalk';
2
+ import Table from 'cli-table3';
3
+ import { positions, formatAnts } from '@antseed/ants';
4
+ import { ants, pct, printJson, runRead } from './shared.js';
5
+ /** Exit-slash column: on-chain value when the contract reports one, otherwise the local estimate. */
6
+ export function slashColumn(position) {
7
+ if (position.state !== 'active' && position.state !== 'pending')
8
+ return '—';
9
+ return position.slashBps === null ? `${pct(position.projectedSlashBps)} (est.)` : pct(position.slashBps);
10
+ }
11
+ export function registerAntsPositionsCommand(antsCmd) {
12
+ antsCmd
13
+ .command('positions')
14
+ .description('List your lANTS staking positions (closed ones too when the explorer knows them)')
15
+ .option('--json', 'output as JSON', false)
16
+ .action(async (options) => runRead(antsCmd, 'Loading positions...', async ({ ctx }) => {
17
+ const view = await positions(ctx);
18
+ if (options.json)
19
+ return printJson(view);
20
+ if (view.positions.length === 0) {
21
+ console.log(chalk.yellow('No staking positions for this wallet.'));
22
+ console.log(chalk.dim('Stake with: antseed ants stake <amount> --agent <agentId> --epochs <n>'));
23
+ return;
24
+ }
25
+ const table = new Table({ head: ['ID', 'Agent', 'Amount', 'Weight', 'Start', 'End', 'Left', 'State', 'Max lock', 'Pending', 'Exit slash'] });
26
+ for (const position of view.positions) {
27
+ table.push([
28
+ position.id,
29
+ position.agentId,
30
+ formatAnts(position.amount),
31
+ formatAnts(position.weightAmount),
32
+ position.stakeStartEpoch,
33
+ position.stakeEndEpoch,
34
+ position.epochsRemaining,
35
+ position.changePending ? `${position.state} (pending)` : position.state,
36
+ position.maxLocked ? 'yes' : 'no',
37
+ formatAnts(position.pendingReward),
38
+ slashColumn(position),
39
+ ]);
40
+ }
41
+ console.log(table.toString());
42
+ console.log(chalk.dim(`Epoch ${view.currentEpoch}. Active stake ${ants(view.totals.activeStake)}, pending staker rewards ${ants(view.totals.pendingRewards)}.`));
43
+ console.log(chalk.dim(`Lock ${view.config.minStakeEpochs}–${view.config.maxStakeEpochs} epochs; early exit burns ${pct(view.config.minEarlyExitSlashBps)}–${pct(view.config.maxSlashBps)}; changes take effect next epoch.`));
44
+ }));
45
+ }
46
+ //# sourceMappingURL=positions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positions.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/positions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=positions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positions.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/positions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { Command } from 'commander';
4
+ import { registerAntsPositionsCommand, slashColumn } from './positions.js';
5
+ test('positions lists open positions only and offers JSON output', () => {
6
+ const ants = new Command('ants');
7
+ registerAntsPositionsCommand(ants);
8
+ const positions = ants.commands.find((command) => command.name() === 'positions');
9
+ assert.ok(positions);
10
+ assert.equal(positions.options.find((option) => option.long === '--history'), undefined, 'no history scan flag');
11
+ assert.ok(positions.options.some((option) => option.long === '--json'));
12
+ });
13
+ test('slashColumn shows the on-chain slash, marks estimates, and blanks closed positions', () => {
14
+ assert.equal(slashColumn({ state: 'active', slashBps: 2916, projectedSlashBps: 3000 }), '29.16%');
15
+ assert.equal(slashColumn({ state: 'pending', slashBps: null, projectedSlashBps: 3000 }), '30% (est.)');
16
+ assert.equal(slashColumn({ state: 'matured', slashBps: 0, projectedSlashBps: 0 }), '—');
17
+ assert.equal(slashColumn({ state: 'withdrawn', slashBps: null, projectedSlashBps: 0 }), '—');
18
+ });
19
+ //# sourceMappingURL=positions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positions.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/ants/positions.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE3E,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,CAAC;IAClF,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;IACjH,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oFAAoF,EAAE,GAAG,EAAE;IAC9F,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IACvG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACxF,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/F,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Command } from 'commander';
2
+ import { type RewardBucket, type CompoundResult } from '@antseed/ants';
3
+ export declare const REWARD_BUCKETS: readonly RewardBucket[];
4
+ /** Buckets selected by `--staker/--seller/...` flags; an empty list means every bucket. */
5
+ export declare function selectedBuckets(options: Partial<Record<RewardBucket, boolean>>): RewardBucket[];
6
+ export declare function parseUsageSide(side: string): 'seller' | 'buyer';
7
+ export declare function compoundSummary(result: CompoundResult): string;
8
+ export declare function registerAntsRewardsCommand(antsCmd: Command): void;
9
+ //# sourceMappingURL=rewards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewards.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ants/rewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAoE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGzI,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAsD,CAAC;AAEzG,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,GAAG,YAAY,EAAE,CAE/F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAG/D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAQ9D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuEjE"}