@antseed/cli 0.1.157 → 0.1.158
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.
- package/README.md +135 -6
- package/dist/cli/commands/ants/addresses.d.ts +3 -0
- package/dist/cli/commands/ants/addresses.d.ts.map +1 -0
- package/dist/cli/commands/ants/addresses.js +20 -0
- package/dist/cli/commands/ants/addresses.js.map +1 -0
- package/dist/cli/commands/ants/addresses.test.d.ts +2 -0
- package/dist/cli/commands/ants/addresses.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/addresses.test.js +12 -0
- package/dist/cli/commands/ants/addresses.test.js.map +1 -0
- package/dist/cli/commands/ants/arguments.test.d.ts +2 -0
- package/dist/cli/commands/ants/arguments.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/arguments.test.js +51 -0
- package/dist/cli/commands/ants/arguments.test.js.map +1 -0
- package/dist/cli/commands/ants/dashboard.d.ts +4 -0
- package/dist/cli/commands/ants/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/ants/dashboard.js +45 -0
- package/dist/cli/commands/ants/dashboard.js.map +1 -0
- package/dist/cli/commands/ants/dashboard.test.d.ts +2 -0
- package/dist/cli/commands/ants/dashboard.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/dashboard.test.js +14 -0
- package/dist/cli/commands/ants/dashboard.test.js.map +1 -0
- package/dist/cli/commands/ants/emissions.d.ts +5 -0
- package/dist/cli/commands/ants/emissions.d.ts.map +1 -0
- package/dist/cli/commands/ants/emissions.js +44 -0
- package/dist/cli/commands/ants/emissions.js.map +1 -0
- package/dist/cli/commands/ants/emissions.test.d.ts +2 -0
- package/dist/cli/commands/ants/emissions.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/emissions.test.js +17 -0
- package/dist/cli/commands/ants/emissions.test.js.map +1 -0
- package/dist/cli/commands/ants/extend.d.ts +3 -0
- package/dist/cli/commands/ants/extend.d.ts.map +1 -0
- package/dist/cli/commands/ants/extend.js +14 -0
- package/dist/cli/commands/ants/extend.js.map +1 -0
- package/dist/cli/commands/ants/extend.test.d.ts +2 -0
- package/dist/cli/commands/ants/extend.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/extend.test.js +13 -0
- package/dist/cli/commands/ants/extend.test.js.map +1 -0
- package/dist/cli/commands/ants/index.d.ts +7 -0
- package/dist/cli/commands/ants/index.d.ts.map +1 -0
- package/dist/cli/commands/ants/index.js +46 -0
- package/dist/cli/commands/ants/index.js.map +1 -0
- package/dist/cli/commands/ants/index.test.d.ts +2 -0
- package/dist/cli/commands/ants/index.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/index.test.js +24 -0
- package/dist/cli/commands/ants/index.test.js.map +1 -0
- package/dist/cli/commands/ants/max-lock.d.ts +3 -0
- package/dist/cli/commands/ants/max-lock.d.ts.map +1 -0
- package/dist/cli/commands/ants/max-lock.js +13 -0
- package/dist/cli/commands/ants/max-lock.js.map +1 -0
- package/dist/cli/commands/ants/max-lock.test.d.ts +2 -0
- package/dist/cli/commands/ants/max-lock.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/max-lock.test.js +15 -0
- package/dist/cli/commands/ants/max-lock.test.js.map +1 -0
- package/dist/cli/commands/ants/merge.d.ts +3 -0
- package/dist/cli/commands/ants/merge.d.ts.map +1 -0
- package/dist/cli/commands/ants/merge.js +12 -0
- package/dist/cli/commands/ants/merge.js.map +1 -0
- package/dist/cli/commands/ants/merge.test.d.ts +2 -0
- package/dist/cli/commands/ants/merge.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/merge.test.js +16 -0
- package/dist/cli/commands/ants/merge.test.js.map +1 -0
- package/dist/cli/commands/ants/move.d.ts +3 -0
- package/dist/cli/commands/ants/move.d.ts.map +1 -0
- package/dist/cli/commands/ants/move.js +14 -0
- package/dist/cli/commands/ants/move.js.map +1 -0
- package/dist/cli/commands/ants/move.test.d.ts +2 -0
- package/dist/cli/commands/ants/move.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/move.test.js +16 -0
- package/dist/cli/commands/ants/move.test.js.map +1 -0
- package/dist/cli/commands/ants/pool.d.ts +3 -0
- package/dist/cli/commands/ants/pool.d.ts.map +1 -0
- package/dist/cli/commands/ants/pool.js +21 -0
- package/dist/cli/commands/ants/pool.js.map +1 -0
- package/dist/cli/commands/ants/pool.test.d.ts +2 -0
- package/dist/cli/commands/ants/pool.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/pool.test.js +13 -0
- package/dist/cli/commands/ants/pool.test.js.map +1 -0
- package/dist/cli/commands/ants/pools.d.ts +6 -0
- package/dist/cli/commands/ants/pools.d.ts.map +1 -0
- package/dist/cli/commands/ants/pools.js +50 -0
- package/dist/cli/commands/ants/pools.js.map +1 -0
- package/dist/cli/commands/ants/pools.test.d.ts +2 -0
- package/dist/cli/commands/ants/pools.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/pools.test.js +18 -0
- package/dist/cli/commands/ants/pools.test.js.map +1 -0
- package/dist/cli/commands/ants/positions.d.ts +6 -0
- package/dist/cli/commands/ants/positions.d.ts.map +1 -0
- package/dist/cli/commands/ants/positions.js +46 -0
- package/dist/cli/commands/ants/positions.js.map +1 -0
- package/dist/cli/commands/ants/positions.test.d.ts +2 -0
- package/dist/cli/commands/ants/positions.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/positions.test.js +19 -0
- package/dist/cli/commands/ants/positions.test.js.map +1 -0
- package/dist/cli/commands/ants/rewards.d.ts +9 -0
- package/dist/cli/commands/ants/rewards.d.ts.map +1 -0
- package/dist/cli/commands/ants/rewards.js +93 -0
- package/dist/cli/commands/ants/rewards.js.map +1 -0
- package/dist/cli/commands/ants/rewards.test.d.ts +2 -0
- package/dist/cli/commands/ants/rewards.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/rewards.test.js +46 -0
- package/dist/cli/commands/ants/rewards.test.js.map +1 -0
- package/dist/cli/commands/ants/seller.d.ts +3 -0
- package/dist/cli/commands/ants/seller.d.ts.map +1 -0
- package/dist/cli/commands/ants/seller.js +32 -0
- package/dist/cli/commands/ants/seller.js.map +1 -0
- package/dist/cli/commands/ants/seller.test.d.ts +2 -0
- package/dist/cli/commands/ants/seller.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/seller.test.js +16 -0
- package/dist/cli/commands/ants/seller.test.js.map +1 -0
- package/dist/cli/commands/ants/shared.d.ts +26 -0
- package/dist/cli/commands/ants/shared.d.ts.map +1 -0
- package/dist/cli/commands/ants/shared.js +94 -0
- package/dist/cli/commands/ants/shared.js.map +1 -0
- package/dist/cli/commands/ants/shared.test.d.ts +2 -0
- package/dist/cli/commands/ants/shared.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/shared.test.js +25 -0
- package/dist/cli/commands/ants/shared.test.js.map +1 -0
- package/dist/cli/commands/ants/split.d.ts +3 -0
- package/dist/cli/commands/ants/split.d.ts.map +1 -0
- package/dist/cli/commands/ants/split.js +12 -0
- package/dist/cli/commands/ants/split.js.map +1 -0
- package/dist/cli/commands/ants/split.test.d.ts +2 -0
- package/dist/cli/commands/ants/split.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/split.test.js +13 -0
- package/dist/cli/commands/ants/split.test.js.map +1 -0
- package/dist/cli/commands/ants/stake.d.ts +3 -0
- package/dist/cli/commands/ants/stake.d.ts.map +1 -0
- package/dist/cli/commands/ants/stake.js +15 -0
- package/dist/cli/commands/ants/stake.js.map +1 -0
- package/dist/cli/commands/ants/stake.test.d.ts +2 -0
- package/dist/cli/commands/ants/stake.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/stake.test.js +17 -0
- package/dist/cli/commands/ants/stake.test.js.map +1 -0
- package/dist/cli/commands/ants/status.d.ts +9 -0
- package/dist/cli/commands/ants/status.d.ts.map +1 -0
- package/dist/cli/commands/ants/status.js +43 -0
- package/dist/cli/commands/ants/status.js.map +1 -0
- package/dist/cli/commands/ants/status.test.d.ts +2 -0
- package/dist/cli/commands/ants/status.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/status.test.js +23 -0
- package/dist/cli/commands/ants/status.test.js.map +1 -0
- package/dist/cli/commands/ants/usage.d.ts +4 -0
- package/dist/cli/commands/ants/usage.d.ts.map +1 -0
- package/dist/cli/commands/ants/usage.js +31 -0
- package/dist/cli/commands/ants/usage.js.map +1 -0
- package/dist/cli/commands/ants/usage.test.d.ts +2 -0
- package/dist/cli/commands/ants/usage.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/usage.test.js +15 -0
- package/dist/cli/commands/ants/usage.test.js.map +1 -0
- package/dist/cli/commands/ants/verify.d.ts +3 -0
- package/dist/cli/commands/ants/verify.d.ts.map +1 -0
- package/dist/cli/commands/ants/verify.js +51 -0
- package/dist/cli/commands/ants/verify.js.map +1 -0
- package/dist/cli/commands/ants/verify.test.d.ts +2 -0
- package/dist/cli/commands/ants/verify.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/verify.test.js +51 -0
- package/dist/cli/commands/ants/verify.test.js.map +1 -0
- package/dist/cli/commands/ants/withdraw.d.ts +16 -0
- package/dist/cli/commands/ants/withdraw.d.ts.map +1 -0
- package/dist/cli/commands/ants/withdraw.js +48 -0
- package/dist/cli/commands/ants/withdraw.js.map +1 -0
- package/dist/cli/commands/ants/withdraw.test.d.ts +2 -0
- package/dist/cli/commands/ants/withdraw.test.d.ts.map +1 -0
- package/dist/cli/commands/ants/withdraw.test.js +30 -0
- package/dist/cli/commands/ants/withdraw.test.js.map +1 -0
- package/dist/cli/commands/emissions.d.ts +7 -0
- package/dist/cli/commands/emissions.d.ts.map +1 -1
- package/dist/cli/commands/emissions.js +105 -27
- package/dist/cli/commands/emissions.js.map +1 -1
- package/dist/cli/commands/emissions.test.js +7 -1
- package/dist/cli/commands/emissions.test.js.map +1 -1
- package/dist/cli/commands/network/chain-config-helper.d.ts +18 -0
- package/dist/cli/commands/network/chain-config-helper.d.ts.map +1 -1
- package/dist/cli/commands/network/chain-config-helper.js.map +1 -1
- package/dist/cli/commands/parse-positive-integer.d.ts +2 -0
- package/dist/cli/commands/parse-positive-integer.d.ts.map +1 -0
- package/dist/cli/commands/parse-positive-integer.js +9 -0
- package/dist/cli/commands/parse-positive-integer.js.map +1 -0
- package/dist/cli/commands/reward-actions.d.ts +11 -0
- package/dist/cli/commands/reward-actions.d.ts.map +1 -0
- package/dist/cli/commands/reward-actions.js +22 -0
- package/dist/cli/commands/reward-actions.js.map +1 -0
- package/dist/cli/commands/seller/contract-clients.test.d.ts +2 -0
- package/dist/cli/commands/seller/contract-clients.test.d.ts.map +1 -0
- package/dist/cli/commands/seller/contract-clients.test.js +45 -0
- package/dist/cli/commands/seller/contract-clients.test.js.map +1 -0
- package/dist/cli/commands/seller/index.d.ts.map +1 -1
- package/dist/cli/commands/seller/index.js +4 -2
- package/dist/cli/commands/seller/index.js.map +1 -1
- package/dist/cli/commands/seller/pool.d.ts +15 -0
- package/dist/cli/commands/seller/pool.d.ts.map +1 -0
- package/dist/cli/commands/seller/pool.js +201 -0
- package/dist/cli/commands/seller/pool.js.map +1 -0
- package/dist/cli/commands/seller/pool.test.d.ts +2 -0
- package/dist/cli/commands/seller/pool.test.d.ts.map +1 -0
- package/dist/cli/commands/seller/pool.test.js +16 -0
- package/dist/cli/commands/seller/pool.test.js.map +1 -0
- package/dist/cli/commands/seller/register.d.ts.map +1 -1
- package/dist/cli/commands/seller/register.js +38 -8
- package/dist/cli/commands/seller/register.js.map +1 -1
- package/dist/cli/commands/seller/rewards.d.ts +13 -0
- package/dist/cli/commands/seller/rewards.d.ts.map +1 -0
- package/dist/cli/commands/seller/rewards.js +115 -0
- package/dist/cli/commands/seller/rewards.js.map +1 -0
- package/dist/cli/commands/seller/rewards.test.d.ts +2 -0
- package/dist/cli/commands/seller/rewards.test.d.ts.map +1 -0
- package/dist/cli/commands/seller/rewards.test.js +21 -0
- package/dist/cli/commands/seller/rewards.test.js.map +1 -0
- package/dist/cli/commands/seller/setup.d.ts.map +1 -1
- package/dist/cli/commands/seller/setup.js +2 -1
- package/dist/cli/commands/seller/setup.js.map +1 -1
- package/dist/cli/commands/seller/stake.d.ts.map +1 -1
- package/dist/cli/commands/seller/stake.js +104 -65
- package/dist/cli/commands/seller/stake.js.map +1 -1
- package/dist/cli/commands/seller/stake.test.d.ts +2 -0
- package/dist/cli/commands/seller/stake.test.d.ts.map +1 -0
- package/dist/cli/commands/seller/stake.test.js +99 -0
- package/dist/cli/commands/seller/stake.test.js.map +1 -0
- package/dist/cli/commands/seller/start.d.ts.map +1 -1
- package/dist/cli/commands/seller/start.js +6 -0
- package/dist/cli/commands/seller/start.js.map +1 -1
- package/dist/cli/commands/seller/status.d.ts.map +1 -1
- package/dist/cli/commands/seller/status.js +44 -2
- package/dist/cli/commands/seller/status.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/payment-utils.d.ts +33 -2
- package/dist/cli/payment-utils.d.ts.map +1 -1
- package/dist/cli/payment-utils.js +101 -2
- package/dist/cli/payment-utils.js.map +1 -1
- package/dist/config/types.d.ts +20 -0
- package/dist/config/types.d.ts.map +1 -1
- package/package.json +7 -6
- package/dist/cli/commands/seller/emissions.d.ts +0 -3
- package/dist/cli/commands/seller/emissions.d.ts.map +0 -1
- package/dist/cli/commands/seller/emissions.js +0 -5
- package/dist/cli/commands/seller/emissions.js.map +0 -1
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|