@antseed/cli 0.1.156 → 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/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +27 -8
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/dist/proxy/buyer-proxy.test.js +126 -2
- package/dist/proxy/buyer-proxy.test.js.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
|
@@ -2,13 +2,24 @@ import chalk from 'chalk';
|
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import { getGlobalOptions } from './types.js';
|
|
4
4
|
import { loadConfig } from '../../config/loader.js';
|
|
5
|
-
import { createEmissionsClient, loadCryptoContext, formatAnts, } from '../payment-utils.js';
|
|
5
|
+
import { createEmissionsClient, createAntsTokenClient, createLegacyEmissionsClient, createSellerPoolsClient, createUsageAccountingClient, createUsageRewardsClient, loadCryptoContext, formatAnts, resolveCliContractStack, } from '../payment-utils.js';
|
|
6
|
+
import { legacyEpochs, newEpochs } from '@antseed/node/payments';
|
|
7
|
+
import { claimBuyerEpochRewards, claimEpochRewards, pendingEpochRewards } from '@antseed/node/payments';
|
|
8
|
+
import { RewardClaimProgress } from './reward-actions.js';
|
|
6
9
|
export function pastEpochs(currentEpoch) {
|
|
7
10
|
return Array.from({ length: currentEpoch }, (_, i) => i);
|
|
8
11
|
}
|
|
9
12
|
export function claimablePendingForRole(pending, role) {
|
|
10
13
|
return role === 'seller' ? pending.seller : pending.buyer;
|
|
11
14
|
}
|
|
15
|
+
export function selectedEmissionStacks(options) {
|
|
16
|
+
if (options.legacyOnly && options.newOnly)
|
|
17
|
+
throw new Error('--legacy-only and --new-only cannot be used together');
|
|
18
|
+
return {
|
|
19
|
+
legacy: !options.newOnly,
|
|
20
|
+
recognized: !options.legacyOnly,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
12
23
|
function roleLabel(role) {
|
|
13
24
|
return role === 'seller' ? 'Seller' : 'Buyer';
|
|
14
25
|
}
|
|
@@ -17,39 +28,89 @@ function pendingJsonKey(role) {
|
|
|
17
28
|
}
|
|
18
29
|
export function registerEmissionsCommand(parentCmd, role) {
|
|
19
30
|
const emissions = parentCmd
|
|
20
|
-
.command('emissions')
|
|
31
|
+
.command('emissions', { hidden: role === 'seller' })
|
|
21
32
|
.description('View epoch info and pending ANTS emissions');
|
|
22
33
|
emissions
|
|
23
34
|
.command('info')
|
|
24
35
|
.description('Show current epoch info and pending emissions')
|
|
25
36
|
.option('--json', 'output as JSON', false)
|
|
37
|
+
.option('--legacy-only', 'show only rewards earned before the recognized-usage upgrade', false)
|
|
38
|
+
.option('--new-only', 'show only recognized-usage rewards', false)
|
|
26
39
|
.action(async (options) => {
|
|
27
40
|
const globalOpts = getGlobalOptions(parentCmd);
|
|
28
41
|
const config = await loadConfig(globalOpts.config);
|
|
29
42
|
const { address } = await loadCryptoContext(globalOpts.dataDir);
|
|
30
|
-
const emissionsClient = createEmissionsClient(config);
|
|
31
43
|
const spinner = ora('Fetching emissions info...').start();
|
|
32
44
|
try {
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const
|
|
45
|
+
const selected = selectedEmissionStacks(options);
|
|
46
|
+
const stack = await resolveCliContractStack(config);
|
|
47
|
+
const legacyIds = stack.mode === 'legacy'
|
|
48
|
+
? pastEpochs(stack.currentEpoch)
|
|
49
|
+
: legacyEpochs(stack.currentEpoch, stack.firstRewardedEpoch);
|
|
50
|
+
const recognizedIds = stack.mode === 'recognized-usage'
|
|
51
|
+
? newEpochs(stack.currentEpoch, stack.firstRewardedEpoch)
|
|
52
|
+
: [];
|
|
53
|
+
let legacyPending = 0n;
|
|
54
|
+
let recognizedPending = 0n;
|
|
55
|
+
let emissionRate = 0n;
|
|
56
|
+
let epochDuration = 0;
|
|
57
|
+
if (selected.legacy && (stack.mode === 'legacy' || stack.addresses.legacyEmissionsContractAddress)) {
|
|
58
|
+
const client = stack.mode === 'legacy' ? createEmissionsClient(config) : createLegacyEmissionsClient(config);
|
|
59
|
+
const [epochInfo, pending] = await Promise.all([
|
|
60
|
+
client.getEpochInfo(),
|
|
61
|
+
pendingEpochRewards(legacyIds, async (epochs) => claimablePendingForRole(await client.pendingEmissions(address, epochs), role)),
|
|
62
|
+
]);
|
|
63
|
+
emissionRate = epochInfo.emission;
|
|
64
|
+
epochDuration = epochInfo.epochDuration;
|
|
65
|
+
legacyPending = pending;
|
|
66
|
+
}
|
|
67
|
+
let noCurrentPool = false;
|
|
68
|
+
if (selected.recognized && stack.mode === 'recognized-usage') {
|
|
69
|
+
if (role === 'seller') {
|
|
70
|
+
const usage = createUsageAccountingClient(config);
|
|
71
|
+
recognizedPending = await pendingEpochRewards(recognizedIds, async (epochs) => (await usage.pendingEmissions(address, epochs)).seller);
|
|
72
|
+
const pools = createSellerPoolsClient(config);
|
|
73
|
+
const agentId = await pools.agentIdForSeller(address);
|
|
74
|
+
noCurrentPool = agentId === 0 || !(await pools.hasPoolAtEpoch(agentId, stack.currentEpoch));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const rewards = createUsageRewardsClient(config);
|
|
78
|
+
recognizedPending = await pendingEpochRewards(recognizedIds, async (epochs) => {
|
|
79
|
+
const amounts = await Promise.all(epochs.map(async (epoch) => (await rewards.buyerEpochClaimed(address, epoch) ? 0n : rewards.pendingBuyerReward(address, epoch))));
|
|
80
|
+
return amounts.reduce((total, value) => total + value, 0n);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
36
84
|
spinner.stop();
|
|
37
85
|
if (options.json) {
|
|
38
86
|
console.log(JSON.stringify({
|
|
39
87
|
address,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
88
|
+
mode: stack.mode,
|
|
89
|
+
epoch: stack.currentEpoch,
|
|
90
|
+
firstRewardedEpoch: stack.firstRewardedEpoch ?? null,
|
|
91
|
+
emissionRate: formatAnts(emissionRate),
|
|
92
|
+
epochDuration,
|
|
93
|
+
legacy: { epochs: legacyIds, [pendingJsonKey(role)]: formatAnts(legacyPending) },
|
|
94
|
+
recognizedUsage: { epochs: recognizedIds, [pendingJsonKey(role)]: formatAnts(recognizedPending) },
|
|
95
|
+
[pendingJsonKey(role)]: formatAnts(legacyPending + recognizedPending),
|
|
96
|
+
...(role === 'seller' ? { hasCurrentPool: !noCurrentPool } : {}),
|
|
44
97
|
}, null, 2));
|
|
45
98
|
return;
|
|
46
99
|
}
|
|
47
100
|
console.log(chalk.bold('Emissions Info:\n'));
|
|
48
|
-
console.log(`
|
|
49
|
-
console.log(`
|
|
101
|
+
console.log(` Mode: ${chalk.cyan(stack.mode)}`);
|
|
102
|
+
console.log(` Epoch: ${chalk.cyan(String(stack.currentEpoch))}`);
|
|
103
|
+
if (emissionRate > 0n)
|
|
104
|
+
console.log(` Emission rate: ${chalk.green(formatAnts(emissionRate) + ' ANTS/epoch')}`);
|
|
50
105
|
console.log('');
|
|
51
106
|
console.log(chalk.bold(`${roleLabel(role)} Pending Emissions (${address.slice(0, 10)}...):\n`));
|
|
52
|
-
|
|
107
|
+
if (selected.legacy)
|
|
108
|
+
console.log(` Legacy: ${chalk.green(formatAnts(legacyPending) + ' ANTS')}`);
|
|
109
|
+
if (selected.recognized && stack.mode === 'recognized-usage')
|
|
110
|
+
console.log(` Recognized use: ${chalk.green(formatAnts(recognizedPending) + ' ANTS')}`);
|
|
111
|
+
console.log(` Total: ${chalk.green(formatAnts(legacyPending + recognizedPending) + ' ANTS')}`);
|
|
112
|
+
if (noCurrentPool)
|
|
113
|
+
console.log(chalk.yellow('\n⚠ No active seller pool exists for the current epoch; new usage will not accrue rewards.'));
|
|
53
114
|
}
|
|
54
115
|
catch (err) {
|
|
55
116
|
spinner.fail(chalk.red(`Failed to fetch emissions: ${err.message}`));
|
|
@@ -59,31 +120,48 @@ export function registerEmissionsCommand(parentCmd, role) {
|
|
|
59
120
|
emissions
|
|
60
121
|
.command('claim')
|
|
61
122
|
.description(`Claim pending ${role} ANTS emissions`)
|
|
62
|
-
.
|
|
123
|
+
.option('--legacy-only', 'claim only rewards earned before the recognized-usage upgrade', false)
|
|
124
|
+
.option('--new-only', 'claim only recognized-usage rewards', false)
|
|
125
|
+
.action(async (options) => {
|
|
63
126
|
const globalOpts = getGlobalOptions(parentCmd);
|
|
64
127
|
const config = await loadConfig(globalOpts.config);
|
|
65
128
|
const { wallet, address } = await loadCryptoContext(globalOpts.dataDir);
|
|
66
|
-
const emissionsClient = createEmissionsClient(config);
|
|
67
129
|
console.log(chalk.dim(`Wallet: ${address}`));
|
|
68
130
|
const spinner = ora(`Claiming ${role} emissions...`).start();
|
|
131
|
+
let progress;
|
|
69
132
|
try {
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
133
|
+
const selected = selectedEmissionStacks(options);
|
|
134
|
+
const stack = await resolveCliContractStack(config);
|
|
135
|
+
const legacyIds = stack.mode === 'legacy'
|
|
136
|
+
? pastEpochs(stack.currentEpoch)
|
|
137
|
+
: legacyEpochs(stack.currentEpoch, stack.firstRewardedEpoch);
|
|
138
|
+
const recognizedIds = stack.mode === 'recognized-usage'
|
|
139
|
+
? newEpochs(stack.currentEpoch, stack.firstRewardedEpoch)
|
|
140
|
+
: [];
|
|
141
|
+
const token = createAntsTokenClient(config);
|
|
142
|
+
progress = new RewardClaimProgress((hash) => console.log(chalk.dim(`Claim transaction confirmed: ${hash}`)), (hash) => token.receivedInTransaction(hash, address));
|
|
143
|
+
if (selected.legacy && (stack.mode === 'legacy' || stack.addresses.legacyEmissionsContractAddress)) {
|
|
144
|
+
const client = stack.mode === 'legacy' ? createEmissionsClient(config) : createLegacyEmissionsClient(config);
|
|
145
|
+
await claimEpochRewards(legacyIds, async (epochs) => claimablePendingForRole(await client.pendingEmissions(address, epochs), role), (epochs) => role === 'seller' ? client.claimSellerEmissions(wallet, epochs) : client.claimBuyerEmissions(wallet, address, epochs), progress.record);
|
|
146
|
+
}
|
|
147
|
+
if (selected.recognized && stack.mode === 'recognized-usage') {
|
|
148
|
+
if (role === 'seller') {
|
|
149
|
+
const usage = createUsageAccountingClient(config);
|
|
150
|
+
await claimEpochRewards(recognizedIds, async (epochs) => (await usage.pendingEmissions(address, epochs)).seller, (epochs) => usage.claimSellerEmissions(wallet, epochs), progress.record);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
const rewards = createUsageRewardsClient(config);
|
|
154
|
+
await claimBuyerEpochRewards(recognizedIds, async (epoch) => await rewards.buyerEpochClaimed(address, epoch) ? 0n : rewards.pendingBuyerReward(address, epoch), (epoch) => rewards.claimBuyerReward(wallet, address, epoch), progress.record);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (progress.claimed === 0n) {
|
|
75
158
|
spinner.succeed(chalk.yellow(`No pending ${role} emissions to claim.`));
|
|
76
159
|
return;
|
|
77
160
|
}
|
|
78
|
-
|
|
79
|
-
const txHash = role === 'seller'
|
|
80
|
-
? await emissionsClient.claimSellerEmissions(wallet, epochs)
|
|
81
|
-
: await emissionsClient.claimBuyerEmissions(wallet, address, epochs);
|
|
82
|
-
spinner.succeed(chalk.green(`Claimed ${formatAnts(claimablePending)} ANTS`));
|
|
83
|
-
console.log(chalk.dim(`Transaction: ${txHash}`));
|
|
161
|
+
spinner.succeed(chalk.green(`Claimed ${formatAnts(progress.claimed)} ANTS`));
|
|
84
162
|
}
|
|
85
163
|
catch (err) {
|
|
86
|
-
spinner.fail(chalk.red(`Claim failed: ${err.message}`));
|
|
164
|
+
spinner.fail(chalk.red(progress?.failure(err.message) ?? `Claim failed: ${err.message}`));
|
|
87
165
|
process.exit(1);
|
|
88
166
|
}
|
|
89
167
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emissions.js","sourceRoot":"","sources":["../../../src/cli/commands/emissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,
|
|
1
|
+
{"version":3,"file":"emissions.js","sourceRoot":"","sources":["../../../src/cli/commands/emissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test from 'node:test';
|
|
3
|
-
import { claimablePendingForRole, pastEpochs } from './emissions.js';
|
|
3
|
+
import { claimablePendingForRole, pastEpochs, selectedEmissionStacks } from './emissions.js';
|
|
4
4
|
test('pastEpochs returns finalized epoch ids before current epoch', () => {
|
|
5
5
|
assert.deepEqual(pastEpochs(0), []);
|
|
6
6
|
assert.deepEqual(pastEpochs(4), [0, 1, 2, 3]);
|
|
7
7
|
});
|
|
8
|
+
test('selectedEmissionStacks enforces mutually exclusive filters', () => {
|
|
9
|
+
assert.deepEqual(selectedEmissionStacks({}), { legacy: true, recognized: true });
|
|
10
|
+
assert.deepEqual(selectedEmissionStacks({ legacyOnly: true }), { legacy: true, recognized: false });
|
|
11
|
+
assert.deepEqual(selectedEmissionStacks({ newOnly: true }), { legacy: false, recognized: true });
|
|
12
|
+
assert.throws(() => selectedEmissionStacks({ legacyOnly: true, newOnly: true }));
|
|
13
|
+
});
|
|
8
14
|
test('claimablePendingForRole only selects the requested reward bucket', () => {
|
|
9
15
|
const pending = {
|
|
10
16
|
seller: 10n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emissions.test.js","sourceRoot":"","sources":["../../../src/cli/commands/emissions.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"emissions.test.js","sourceRoot":"","sources":["../../../src/cli/commands/emissions.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7F,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACvE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACpG,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACjG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,GAAG;KACX,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC"}
|
|
@@ -10,10 +10,28 @@ export interface ChainCryptoOverrides {
|
|
|
10
10
|
fallbackRpcUrls?: string[];
|
|
11
11
|
depositsContractAddress?: string;
|
|
12
12
|
channelsContractAddress?: string;
|
|
13
|
+
registryContractAddress?: string;
|
|
13
14
|
freeUsageContractAddress?: string;
|
|
14
15
|
usdcContractAddress?: string;
|
|
15
16
|
stakingContractAddress?: string;
|
|
16
17
|
identityRegistryAddress?: string;
|
|
18
|
+
emissionsContractAddress?: string;
|
|
19
|
+
legacyEmissionsContractAddress?: string;
|
|
20
|
+
legacyStakingContractAddress?: string;
|
|
21
|
+
legacyEmissionsV1ContractAddress?: string;
|
|
22
|
+
antsTokenAddress?: string;
|
|
23
|
+
emissionsGateAddress?: string;
|
|
24
|
+
sellerPoolsAddress?: string;
|
|
25
|
+
sellerRegistryAddress?: string;
|
|
26
|
+
positionInitAddress?: string;
|
|
27
|
+
usageAccountingAddress?: string;
|
|
28
|
+
usageRewardsAddress?: string;
|
|
29
|
+
sellerPoolsRewardsAddress?: string;
|
|
30
|
+
legacyEmissionsEscrowAddress?: string;
|
|
31
|
+
washTradingRegistryAddress?: string;
|
|
32
|
+
pointsPolicyRegistryAddress?: string;
|
|
33
|
+
/** Explorer REST base for seller profiles in `antseed ants`; empty string disables the lookup. */
|
|
34
|
+
explorerApiUrl?: string;
|
|
17
35
|
}
|
|
18
36
|
/**
|
|
19
37
|
* Build the `NodePaymentsConfig` an ad-hoc `AntseedNode` needs to enrich peers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-config-helper.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/network/chain-config-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"chain-config-helper.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/network/chain-config-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,kGAAkG;IAClG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,oBAAoB,GAAG,SAAS,GAChD,kBAAkB,GAAG,SAAS,CA0BhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-config-helper.js","sourceRoot":"","sources":["../../../../src/cli/commands/network/chain-config-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"chain-config-helper.js","sourceRoot":"","sources":["../../../../src/cli/commands/network/chain-config-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AAqCvB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,eAAiD;IAEjD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YAClC,OAAO,EAAE,eAAe,EAAE,OAAO;YACjC,MAAM,EAAE,eAAe,EAAE,MAAM;YAC/B,uBAAuB,EAAE,eAAe,EAAE,uBAAuB;YACjE,uBAAuB,EAAE,eAAe,EAAE,uBAAuB;YACjE,wBAAwB,EAAE,eAAe,EAAE,wBAAwB;YACnE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB;SAC1D,CAAC,CAAC;QACH,MAAM,cAAc,GAAuB;YACzC,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,eAAe,EAAE,QAAQ,CAAC,uBAAuB;YACjD,eAAe,EAAE,QAAQ,CAAC,uBAAuB;YACjD,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrG,WAAW,EAAE,QAAQ,CAAC,mBAAmB;YACzC,OAAO,EAAE,QAAQ,CAAC,UAAU;YAC5B,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3G,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-positive-integer.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/parse-positive-integer.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM1D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InvalidArgumentError } from 'commander';
|
|
2
|
+
export function parsePositiveInteger(value) {
|
|
3
|
+
const parsed = Number(value);
|
|
4
|
+
if (!/^\d+$/.test(value) || !Number.isSafeInteger(parsed) || parsed <= 0) {
|
|
5
|
+
throw new InvalidArgumentError('Must be a positive safe integer.');
|
|
6
|
+
}
|
|
7
|
+
return parsed;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=parse-positive-integer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-positive-integer.js","sourceRoot":"","sources":["../../../src/cli/commands/parse-positive-integer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RewardTransactionRecorder } from '@antseed/node/payments';
|
|
2
|
+
export declare class RewardClaimProgress {
|
|
3
|
+
private readonly report;
|
|
4
|
+
private readonly received;
|
|
5
|
+
claimed: bigint;
|
|
6
|
+
transactions: string[];
|
|
7
|
+
constructor(report: (hash: string, kind: 'claim' | 'accounting') => void, received: (hash: string) => Promise<bigint>);
|
|
8
|
+
record: RewardTransactionRecorder;
|
|
9
|
+
failure(message: string): string;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=reward-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reward-actions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/reward-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,SAAM;IACb,YAAY,EAAE,MAAM,EAAE,CAAM;gBAGT,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,YAAY,KAAK,IAAI,EAC5D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IAG9D,MAAM,EAAE,yBAAyB,CAI/B;IAEF,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIjC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export class RewardClaimProgress {
|
|
2
|
+
report;
|
|
3
|
+
received;
|
|
4
|
+
claimed = 0n;
|
|
5
|
+
transactions = [];
|
|
6
|
+
constructor(report, received) {
|
|
7
|
+
this.report = report;
|
|
8
|
+
this.received = received;
|
|
9
|
+
}
|
|
10
|
+
record = async (hash, kind) => {
|
|
11
|
+
this.transactions.push(hash);
|
|
12
|
+
this.report(hash, kind);
|
|
13
|
+
if (kind === 'claim')
|
|
14
|
+
this.claimed += await this.received(hash);
|
|
15
|
+
};
|
|
16
|
+
failure(message) {
|
|
17
|
+
if (this.transactions.length === 0)
|
|
18
|
+
return `Claim failed: ${message}`;
|
|
19
|
+
return `Claim incomplete: ${this.transactions.length} transaction(s) already confirmed (shown above). ${message}. Re-run the claim to collect remaining rewards.`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=reward-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reward-actions.js","sourceRoot":"","sources":["../../../src/cli/commands/reward-actions.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IAKX;IACA;IALnB,OAAO,GAAG,EAAE,CAAC;IACb,YAAY,GAAa,EAAE,CAAC;IAE5B,YACmB,MAA4D,EAC5D,QAA2C;QAD3C,WAAM,GAAN,MAAM,CAAsD;QAC5D,aAAQ,GAAR,QAAQ,CAAmC;IAC3D,CAAC;IAEJ,MAAM,GAA8B,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACvD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,KAAK,OAAO;YAAE,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,OAAO,CAAC,OAAe;QACrB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,iBAAiB,OAAO,EAAE,CAAC;QACtE,OAAO,qBAAqB,IAAI,CAAC,YAAY,CAAC,MAAM,oDAAoD,OAAO,kDAAkD,CAAC;IACpK,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-clients.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seller/contract-clients.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { createLegacyEmissionsClient, createLegacyStakingClient, requireCryptoConfig } from '../../payment-utils.js';
|
|
4
|
+
const address = '0x0000000000000000000000000000000000000011';
|
|
5
|
+
test('CLI local defaults use the registry nonce rather than the token nonce and preserve overrides', () => {
|
|
6
|
+
const base = { payments: { crypto: { chainId: 'base-local' } } };
|
|
7
|
+
assert.equal(requireCryptoConfig(base).registryContractAddress, '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9');
|
|
8
|
+
assert.equal(requireCryptoConfig({ ...base, payments: { ...base.payments, crypto: { ...base.payments.crypto, registryContractAddress: address } } }).registryContractAddress, address);
|
|
9
|
+
});
|
|
10
|
+
test('legacy factories use V2 and USDC staking with the pre-cutover ledger', () => {
|
|
11
|
+
const config = { payments: { crypto: { chainId: 'base-mainnet', rpcUrl: 'http://127.0.0.1:1' } } };
|
|
12
|
+
const chain = requireCryptoConfig(config);
|
|
13
|
+
const emissions = createLegacyEmissionsClient(config);
|
|
14
|
+
const staking = createLegacyStakingClient(config);
|
|
15
|
+
try {
|
|
16
|
+
assert.equal(emissions.contractAddress, chain.emissionsContractAddress);
|
|
17
|
+
assert.notEqual(emissions.contractAddress, chain.legacyEmissionsContractAddress);
|
|
18
|
+
assert.equal(staking.contractAddress, chain.stakingContractAddress);
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
emissions.provider.destroy();
|
|
22
|
+
staking.provider.destroy();
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
test('legacy factories preserve the active ledger legacy overrides', () => {
|
|
26
|
+
const usage = '0x0000000000000000000000000000000000000021';
|
|
27
|
+
const registry = '0x0000000000000000000000000000000000000022';
|
|
28
|
+
const config = { payments: { crypto: {
|
|
29
|
+
chainId: 'base-local', rpcUrl: 'http://127.0.0.1:1',
|
|
30
|
+
emissionsContractAddress: usage, usageAccountingAddress: usage,
|
|
31
|
+
stakingContractAddress: registry, sellerRegistryAddress: registry,
|
|
32
|
+
legacyEmissionsContractAddress: address, legacyStakingContractAddress: address,
|
|
33
|
+
} } };
|
|
34
|
+
const emissions = createLegacyEmissionsClient(config);
|
|
35
|
+
const staking = createLegacyStakingClient(config);
|
|
36
|
+
try {
|
|
37
|
+
assert.equal(emissions.contractAddress, address);
|
|
38
|
+
assert.equal(staking.contractAddress, address);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
emissions.provider.destroy();
|
|
42
|
+
staking.provider.destroy();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=contract-clients.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-clients.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/seller/contract-clients.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seller/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seller/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAa7D"}
|
|
@@ -3,8 +3,9 @@ import { registerSellerSetupCommand } from './setup.js';
|
|
|
3
3
|
import { registerSellerStatusCommand } from './status.js';
|
|
4
4
|
import { registerSellerRegisterCommand } from './register.js';
|
|
5
5
|
import { registerSellerStakeCommand } from './stake.js';
|
|
6
|
-
import { registerSellerEmissionsCommand } from './emissions.js';
|
|
7
6
|
import { registerSellerDoctorCommand } from './doctor.js';
|
|
7
|
+
import { registerSellerPoolCommand } from './pool.js';
|
|
8
|
+
import { registerSellerRewardsCommand } from './rewards.js';
|
|
8
9
|
export function registerSellerCommands(program) {
|
|
9
10
|
const sellerCmd = program
|
|
10
11
|
.command('seller')
|
|
@@ -14,7 +15,8 @@ export function registerSellerCommands(program) {
|
|
|
14
15
|
registerSellerStatusCommand(sellerCmd);
|
|
15
16
|
registerSellerRegisterCommand(sellerCmd);
|
|
16
17
|
registerSellerStakeCommand(sellerCmd);
|
|
17
|
-
|
|
18
|
+
registerSellerPoolCommand(sellerCmd);
|
|
19
|
+
registerSellerRewardsCommand(sellerCmd);
|
|
18
20
|
registerSellerDoctorCommand(sellerCmd);
|
|
19
21
|
}
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/seller/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/seller/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sDAAsD,CAAC,CAAC;IAEvE,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACtC,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACtC,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACvC,6BAA6B,CAAC,SAAS,CAAC,CAAC;IACzC,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACtC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACrC,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACxC,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import { type SellerPoolPosition } from '@antseed/node/payments';
|
|
3
|
+
export declare function positionState(position: SellerPoolPosition, currentEpoch: number): string;
|
|
4
|
+
export declare function validateStakeEpochs(epochs: number, min: number, max: number): void;
|
|
5
|
+
export declare function registerSellerStarterCommand(legacyCmd: Command): void;
|
|
6
|
+
export declare function registerSellerPoolCommand(sellerCmd: Command): void;
|
|
7
|
+
export interface PoolStakeOptions {
|
|
8
|
+
epochs: number;
|
|
9
|
+
}
|
|
10
|
+
/** Stake ANTS into a seller pool through the primary `seller stake` command. */
|
|
11
|
+
export declare function runPoolStake(global: {
|
|
12
|
+
config: string;
|
|
13
|
+
dataDir: string;
|
|
14
|
+
}, amount: string, options: PoolStakeOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seller/pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAMxF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIlF;AAuBD,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CA2BrE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAsFlE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|