@reppo/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +84 -0
- package/dist/api/platform.d.ts +39 -0
- package/dist/api/platform.d.ts.map +1 -0
- package/dist/api/platform.js +148 -0
- package/dist/api/platform.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +60 -0
- package/dist/bin.js.map +1 -0
- package/dist/chain/abis.d.ts +576 -0
- package/dist/chain/abis.d.ts.map +1 -0
- package/dist/chain/abis.js +66 -0
- package/dist/chain/abis.js.map +1 -0
- package/dist/chain/addresses.d.ts +27 -0
- package/dist/chain/addresses.d.ts.map +1 -0
- package/dist/chain/addresses.js +39 -0
- package/dist/chain/addresses.js.map +1 -0
- package/dist/chain/clients.d.ts +46 -0
- package/dist/chain/clients.d.ts.map +1 -0
- package/dist/chain/clients.js +48 -0
- package/dist/chain/clients.js.map +1 -0
- package/dist/chain/contracts.d.ts +28 -0
- package/dist/chain/contracts.d.ts.map +1 -0
- package/dist/chain/contracts.js +70 -0
- package/dist/chain/contracts.js.map +1 -0
- package/dist/chain/errors.d.ts +14 -0
- package/dist/chain/errors.d.ts.map +1 -0
- package/dist/chain/errors.js +72 -0
- package/dist/chain/errors.js.map +1 -0
- package/dist/commands/_base.d.ts +19 -0
- package/dist/commands/_base.d.ts.map +1 -0
- package/dist/commands/_base.js +40 -0
- package/dist/commands/_base.js.map +1 -0
- package/dist/commands/auth.d.ts +9 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +93 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/claim-emissions.d.ts +11 -0
- package/dist/commands/claim-emissions.d.ts.map +1 -0
- package/dist/commands/claim-emissions.js +192 -0
- package/dist/commands/claim-emissions.js.map +1 -0
- package/dist/commands/extend-lock.d.ts +11 -0
- package/dist/commands/extend-lock.d.ts.map +1 -0
- package/dist/commands/extend-lock.js +196 -0
- package/dist/commands/extend-lock.js.map +1 -0
- package/dist/commands/grant-access.d.ts +11 -0
- package/dist/commands/grant-access.d.ts.map +1 -0
- package/dist/commands/grant-access.js +191 -0
- package/dist/commands/grant-access.js.map +1 -0
- package/dist/commands/lock.d.ts +11 -0
- package/dist/commands/lock.d.ts.map +1 -0
- package/dist/commands/lock.js +192 -0
- package/dist/commands/lock.js.map +1 -0
- package/dist/commands/mint-pod.d.ts +15 -0
- package/dist/commands/mint-pod.d.ts.map +1 -0
- package/dist/commands/mint-pod.js +286 -0
- package/dist/commands/mint-pod.js.map +1 -0
- package/dist/commands/query/balance.d.ts +9 -0
- package/dist/commands/query/balance.d.ts.map +1 -0
- package/dist/commands/query/balance.js +91 -0
- package/dist/commands/query/balance.js.map +1 -0
- package/dist/commands/query/datanet.d.ts +10 -0
- package/dist/commands/query/datanet.d.ts.map +1 -0
- package/dist/commands/query/datanet.js +128 -0
- package/dist/commands/query/datanet.js.map +1 -0
- package/dist/commands/query/emissions-due.d.ts +18 -0
- package/dist/commands/query/emissions-due.d.ts.map +1 -0
- package/dist/commands/query/emissions-due.js +170 -0
- package/dist/commands/query/emissions-due.js.map +1 -0
- package/dist/commands/query/pod.d.ts +8 -0
- package/dist/commands/query/pod.d.ts.map +1 -0
- package/dist/commands/query/pod.js +88 -0
- package/dist/commands/query/pod.js.map +1 -0
- package/dist/commands/query/voting-power.d.ts +9 -0
- package/dist/commands/query/voting-power.d.ts.map +1 -0
- package/dist/commands/query/voting-power.js +82 -0
- package/dist/commands/query/voting-power.js.map +1 -0
- package/dist/commands/register-agent.d.ts +9 -0
- package/dist/commands/register-agent.d.ts.map +1 -0
- package/dist/commands/register-agent.js +115 -0
- package/dist/commands/register-agent.js.map +1 -0
- package/dist/commands/unlock.d.ts +11 -0
- package/dist/commands/unlock.d.ts.map +1 -0
- package/dist/commands/unlock.js +181 -0
- package/dist/commands/unlock.js.map +1 -0
- package/dist/commands/vote.d.ts +13 -0
- package/dist/commands/vote.d.ts.map +1 -0
- package/dist/commands/vote.js +174 -0
- package/dist/commands/vote.js.map +1 -0
- package/dist/config/load.d.ts +19 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +66 -0
- package/dist/config/load.js.map +1 -0
- package/dist/output/format.d.ts +43 -0
- package/dist/output/format.d.ts.map +1 -0
- package/dist/output/format.js +58 -0
- package/dist/output/format.js.map +1 -0
- package/dist/state/db.d.ts +47 -0
- package/dist/state/db.d.ts.map +1 -0
- package/dist/state/db.js +169 -0
- package/dist/state/db.js.map +1 -0
- package/dist/state/idempotency.d.ts +66 -0
- package/dist/state/idempotency.d.ts.map +1 -0
- package/dist/state/idempotency.js +173 -0
- package/dist/state/idempotency.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant-access.js","sourceRoot":"","sources":["../../src/commands/grant-access.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseCommand } from './_base.js';
|
|
2
|
+
export declare class LockCommand extends BaseCommand {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
amount: string;
|
|
6
|
+
duration: string;
|
|
7
|
+
idempotencyKey: string | undefined;
|
|
8
|
+
dryRun: boolean;
|
|
9
|
+
execute(): Promise<number>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/commands/lock.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AASzC,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAgB,KAAK,aAAc;IAEnC,OAAgB,KAAK,4BAUlB;IAEH,MAAM,SAAqC;IAC3C,QAAQ,SAA4F;IACpG,cAAc,qBAAsC;IACpD,MAAM,UAAsC;IAEtC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAwKjC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `reppo lock <amount> --duration <seconds>` — lock REPPO into veREPPO
|
|
3
|
+
* for `duration` seconds. Returns voting power proportional to the
|
|
4
|
+
* (amount, duration) curve.
|
|
5
|
+
*
|
|
6
|
+
* Pre-flight checks (all surface error codes BEFORE the cache write so
|
|
7
|
+
* retries under the same --idempotency-key are safe):
|
|
8
|
+
* 1. INVALID_AMOUNT / INVALID_DURATION (parse)
|
|
9
|
+
* 2. DURATION_OUT_OF_BOUNDS (min/maxStakeDuration)
|
|
10
|
+
* 3. INSUFFICIENT_REPPO_BALANCE
|
|
11
|
+
* 4. INSUFFICIENT_ALLOWANCE (caller → veReppo)
|
|
12
|
+
* 5. previewPoints captures the predicted voting-power-gained for the
|
|
13
|
+
* result payload; also surfaces in dry-run.
|
|
14
|
+
*
|
|
15
|
+
* Two-phase write protocol via peekIdempotent.
|
|
16
|
+
*
|
|
17
|
+
* Args fingerprint: { amount, duration } — re-using one --idempotency-key
|
|
18
|
+
* with different (amount, duration) is rejected with IDEMPOTENCY_ARGS_MISMATCH.
|
|
19
|
+
*
|
|
20
|
+
* Note: the new lockupId is NOT decoded from the receipt in this alpha
|
|
21
|
+
* (would require adding the ERC-721 Transfer event to VE_REPPO_ABI).
|
|
22
|
+
* Use `reppo query voting-power` after this command to find the new
|
|
23
|
+
* lockupId — it'll be the highest-numbered token the caller owns.
|
|
24
|
+
*/
|
|
25
|
+
import { Option } from 'clipanion';
|
|
26
|
+
import { formatUnits, parseUnits } from 'viem';
|
|
27
|
+
import { BaseCommand } from './_base.js';
|
|
28
|
+
import { cliError, emit } from '../output/format.js';
|
|
29
|
+
import { createClients, nextNonce } from '../chain/clients.js';
|
|
30
|
+
import { veReppo, reppoToken } from '../chain/contracts.js';
|
|
31
|
+
import { decodeRevert } from '../chain/errors.js';
|
|
32
|
+
import { begin, markSubmitted, markConfirmed, markFailed, peekIdempotent } from '../state/idempotency.js';
|
|
33
|
+
const COMMAND = 'lock';
|
|
34
|
+
export class LockCommand extends BaseCommand {
|
|
35
|
+
static paths = [['lock']];
|
|
36
|
+
static usage = BaseCommand.Usage({
|
|
37
|
+
description: 'Lock REPPO into veREPPO for `duration` seconds to gain voting power.',
|
|
38
|
+
examples: [
|
|
39
|
+
['Lock 1000 REPPO for 2 hours (testnet minimum)',
|
|
40
|
+
'reppo lock 1000 --duration 7200'],
|
|
41
|
+
['With idempotency key',
|
|
42
|
+
'reppo lock 1000 --duration 7200 --idempotency-key lock-1000-2h'],
|
|
43
|
+
['Dry-run',
|
|
44
|
+
'reppo lock 1000 --duration 7200 --dry-run'],
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
amount = Option.String({ required: true });
|
|
48
|
+
duration = Option.String('--duration', { required: true, description: 'Lock duration in seconds' });
|
|
49
|
+
idempotencyKey = Option.String('--idempotency-key');
|
|
50
|
+
dryRun = Option.Boolean('--dry-run', false);
|
|
51
|
+
async execute() {
|
|
52
|
+
try {
|
|
53
|
+
const cfg = this.loadConfig();
|
|
54
|
+
const pk = cfg.privateKey;
|
|
55
|
+
if (!pk) {
|
|
56
|
+
throw cliError('MISSING_PRIVATE_KEY', 'No signing key available.', 'Set REPPO_PRIVATE_KEY in env.');
|
|
57
|
+
}
|
|
58
|
+
// Parse amount as a REPPO-denominated value (18 decimals).
|
|
59
|
+
let amount;
|
|
60
|
+
try {
|
|
61
|
+
amount = parseUnits(this.amount, 18);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw cliError('INVALID_AMOUNT', `Amount must be a numeric REPPO value; got "${this.amount}".`);
|
|
65
|
+
}
|
|
66
|
+
if (amount <= 0n) {
|
|
67
|
+
throw cliError('INVALID_AMOUNT', 'Amount must be greater than 0 REPPO.');
|
|
68
|
+
}
|
|
69
|
+
let duration;
|
|
70
|
+
try {
|
|
71
|
+
duration = BigInt(this.duration);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
throw cliError('INVALID_DURATION', `Duration must be a non-negative integer (seconds); got "${this.duration}".`);
|
|
75
|
+
}
|
|
76
|
+
if (duration <= 0n) {
|
|
77
|
+
throw cliError('INVALID_DURATION', 'Duration must be greater than 0 seconds.');
|
|
78
|
+
}
|
|
79
|
+
const args = { amount: amount.toString(), duration: duration.toString() };
|
|
80
|
+
const decision = await peekIdempotent(this.idempotencyKey, COMMAND, args, this.dryRun);
|
|
81
|
+
if (decision.kind === 'return-confirmed') {
|
|
82
|
+
emit({ ...decision.result, idempotent: true, status: 'confirmed' }, [`(cached, confirmed) tx: ${decision.txHash ?? 'n/a'}`]);
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
if (decision.kind === 'return-submitted') {
|
|
86
|
+
emit({ ...decision.result, idempotent: true, status: 'submitted' }, [`(cached, submitted but not confirmed yet) tx: ${decision.txHash ?? 'n/a'}`,
|
|
87
|
+
`Re-run after the tx confirms, or check the explorer.`]);
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
|
90
|
+
const clients = createClients({
|
|
91
|
+
network: cfg.network,
|
|
92
|
+
privateKey: pk,
|
|
93
|
+
...(cfg.rpcUrl ? { rpcUrl: cfg.rpcUrl } : {}),
|
|
94
|
+
});
|
|
95
|
+
// Throwing variants — write commands must fail loud on TBD.
|
|
96
|
+
const vr = veReppo(cfg.network);
|
|
97
|
+
const reppo = reppoToken(cfg.network);
|
|
98
|
+
// Pre-flight in parallel: 5 reads → 1 round-trip.
|
|
99
|
+
const [minDur, maxDur, balance, allowance, preview] = await Promise.all([
|
|
100
|
+
clients.publicClient.readContract({ address: vr.address, abi: vr.abi, functionName: 'minStakeDuration', args: [] }),
|
|
101
|
+
clients.publicClient.readContract({ address: vr.address, abi: vr.abi, functionName: 'maxStakeDuration', args: [] }),
|
|
102
|
+
clients.publicClient.readContract({ address: reppo.address, abi: reppo.abi, functionName: 'balanceOf', args: [clients.account.address] }),
|
|
103
|
+
clients.publicClient.readContract({ address: reppo.address, abi: reppo.abi, functionName: 'allowance', args: [clients.account.address, vr.address] }),
|
|
104
|
+
clients.publicClient.readContract({ address: vr.address, abi: vr.abi, functionName: 'previewPoints', args: [amount, duration] }),
|
|
105
|
+
]);
|
|
106
|
+
const [previewPower, previewEnd] = preview;
|
|
107
|
+
if (duration < minDur || duration > maxDur) {
|
|
108
|
+
throw cliError('DURATION_OUT_OF_BOUNDS', `Duration ${duration}s is outside the allowed range [${minDur}, ${maxDur}].`, `Pass --duration with a value in seconds between ${minDur} and ${maxDur}.`);
|
|
109
|
+
}
|
|
110
|
+
if (balance < amount) {
|
|
111
|
+
throw cliError('INSUFFICIENT_REPPO_BALANCE', `Caller has ${formatUnits(balance, 18)} REPPO but requested to lock ${formatUnits(amount, 18)} REPPO.`, 'Acquire more REPPO before locking.');
|
|
112
|
+
}
|
|
113
|
+
if (allowance < amount) {
|
|
114
|
+
throw cliError('INSUFFICIENT_ALLOWANCE', `REPPO allowance from ${clients.account.address} to veReppo is ${formatUnits(allowance, 18)}, ` +
|
|
115
|
+
`below the lock amount of ${formatUnits(amount, 18)} REPPO.`, `Approve veReppo (${vr.address}) for at least ${formatUnits(amount, 18)} REPPO. ` +
|
|
116
|
+
`Auto-approval lands in v0.2; for the alpha, send the approve() tx manually.`);
|
|
117
|
+
}
|
|
118
|
+
if (this.dryRun) {
|
|
119
|
+
const sim = await clients.publicClient.simulateContract({
|
|
120
|
+
address: vr.address, abi: vr.abi, functionName: 'stake',
|
|
121
|
+
args: [amount, duration], account: clients.account,
|
|
122
|
+
}).catch((e) => {
|
|
123
|
+
const decoded = decodeRevert(e);
|
|
124
|
+
throw cliError(decoded.code, 'Simulation reverted', decoded.hint);
|
|
125
|
+
});
|
|
126
|
+
emit({
|
|
127
|
+
simulated: true,
|
|
128
|
+
amount: { raw: amount.toString(), formatted: formatUnits(amount, 18) },
|
|
129
|
+
duration: duration.toString(),
|
|
130
|
+
predictedLockupId: sim.result.toString(),
|
|
131
|
+
votingPowerGained: { raw: previewPower.toString(), formatted: formatUnits(previewPower, 18) },
|
|
132
|
+
predictedExpiresAt: previewEnd.toString(),
|
|
133
|
+
gas: sim.request.gas?.toString() ?? null,
|
|
134
|
+
});
|
|
135
|
+
return 0;
|
|
136
|
+
}
|
|
137
|
+
if (this.idempotencyKey)
|
|
138
|
+
await begin(this.idempotencyKey, COMMAND, args);
|
|
139
|
+
let tx;
|
|
140
|
+
try {
|
|
141
|
+
const nonce = await nextNonce(clients.publicClient, clients.account.address);
|
|
142
|
+
tx = await clients.walletClient.writeContract({
|
|
143
|
+
address: vr.address, abi: vr.abi, functionName: 'stake',
|
|
144
|
+
args: [amount, duration],
|
|
145
|
+
chain: clients.walletClient.chain, account: clients.account, nonce,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
const decoded = decodeRevert(e);
|
|
150
|
+
if (this.idempotencyKey)
|
|
151
|
+
await markFailed(this.idempotencyKey, COMMAND, args, decoded.code);
|
|
152
|
+
throw cliError(decoded.code, 'lock tx failed to submit', decoded.hint);
|
|
153
|
+
}
|
|
154
|
+
// markSubmitted BEFORE waitForReceipt — closes the retry-resend window.
|
|
155
|
+
if (this.idempotencyKey)
|
|
156
|
+
await markSubmitted(this.idempotencyKey, COMMAND, args, tx);
|
|
157
|
+
const receipt = await clients.publicClient.waitForTransactionReceipt({ hash: tx, timeout: 120_000 });
|
|
158
|
+
if (receipt.status === 'reverted') {
|
|
159
|
+
if (this.idempotencyKey)
|
|
160
|
+
await markFailed(this.idempotencyKey, COMMAND, args, 'TX_REVERTED', tx);
|
|
161
|
+
throw cliError('TX_REVERTED', `lock tx reverted: ${tx}`);
|
|
162
|
+
}
|
|
163
|
+
const result = {
|
|
164
|
+
txHash: tx,
|
|
165
|
+
amount: { raw: amount.toString(), formatted: formatUnits(amount, 18) },
|
|
166
|
+
duration: duration.toString(),
|
|
167
|
+
votingPowerGained: { raw: previewPower.toString(), formatted: formatUnits(previewPower, 18) },
|
|
168
|
+
expiresAt: previewEnd.toString(),
|
|
169
|
+
block: receipt.blockNumber.toString(),
|
|
170
|
+
basescanUrl: cfg.network === 'mainnet'
|
|
171
|
+
? `https://basescan.org/tx/${tx}`
|
|
172
|
+
: `https://sepolia.basescan.org/tx/${tx}`,
|
|
173
|
+
// Note: the new lockupId is not decoded here. Use
|
|
174
|
+
// `reppo query voting-power` to see the new lockupCount.
|
|
175
|
+
};
|
|
176
|
+
if (this.idempotencyKey)
|
|
177
|
+
await markConfirmed(this.idempotencyKey, COMMAND, args, result, tx);
|
|
178
|
+
emit(result, [
|
|
179
|
+
`✓ Locked ${formatUnits(amount, 18)} REPPO for ${duration}s`,
|
|
180
|
+
` voting power gained: ${formatUnits(previewPower, 18)}`,
|
|
181
|
+
` tx: ${result.basescanUrl}`,
|
|
182
|
+
` block: ${receipt.blockNumber}`,
|
|
183
|
+
` (new lockupId: run \`reppo query voting-power\` to see updated count)`,
|
|
184
|
+
]);
|
|
185
|
+
return 0;
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
this.handleError(err);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/commands/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseCommand } from './_base.js';
|
|
2
|
+
export declare class MintPodCommand extends BaseCommand {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
share: string | undefined;
|
|
6
|
+
datanet: string | undefined;
|
|
7
|
+
token: string;
|
|
8
|
+
to: string | undefined;
|
|
9
|
+
idempotencyKey: string | undefined;
|
|
10
|
+
dryRun: boolean;
|
|
11
|
+
execute(): Promise<number>;
|
|
12
|
+
private mintMainnet;
|
|
13
|
+
private mintTestnet;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=mint-pod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mint-pod.d.ts","sourceRoot":"","sources":["../../src/commands/mint-pod.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AASzC,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAgB,KAAK,aAAkB;IAEvC,OAAgB,KAAK,4BAYlB;IAEH,KAAK,qBAA6F;IAClG,OAAO,qBAAiG;IACxG,KAAK,SAAkH;IACvH,EAAE,qBAA6F;IAC/F,cAAc,qBAAsC;IACpD,MAAM,UAAsC;IAEtC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YAkClB,WAAW;YA0IX,WAAW;CAyH1B"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `reppo mint-pod` — mint a pod NFT. Network-dependent params:
|
|
3
|
+
*
|
|
4
|
+
* - mainnet: `mintPod(to, emissionSharePercent)` — pays `publishingFee()`
|
|
5
|
+
* in REPPO. Required: `--share <0-100>`.
|
|
6
|
+
* - testnet: `mintPodWithREPPO(to, datanetId)` (default) or
|
|
7
|
+
* `mintPodWithPrimaryToken(to, datanetId)` (alt fee asset). The
|
|
8
|
+
* testnet contracts are a fork of mainnet with subnet/datanet logic
|
|
9
|
+
* added for a client experiment — the methods are the same, only the
|
|
10
|
+
* parameters differ. Required: `--datanet <id>`.
|
|
11
|
+
*
|
|
12
|
+
* Pre-flight (mainnet):
|
|
13
|
+
* - MISSING_SHARE / INVALID_SHARE
|
|
14
|
+
* - INVALID_ADDRESS (--to)
|
|
15
|
+
* - INSUFFICIENT_REPPO_BALANCE (publishingFee)
|
|
16
|
+
* - INSUFFICIENT_ALLOWANCE (caller → PodManager for publishingFee)
|
|
17
|
+
*
|
|
18
|
+
* Pre-flight (testnet):
|
|
19
|
+
* - MISSING_DATANET / INVALID_DATANET_ID
|
|
20
|
+
* - INVALID_TOKEN (--token must be "reppo" or "primary")
|
|
21
|
+
* - INVALID_ADDRESS (--to)
|
|
22
|
+
* - DATANET_NOT_FOUND
|
|
23
|
+
*
|
|
24
|
+
* Two-phase write protocol via peekIdempotent.
|
|
25
|
+
*/
|
|
26
|
+
import { Option } from 'clipanion';
|
|
27
|
+
import { formatUnits, isAddress } from 'viem';
|
|
28
|
+
import { BaseCommand } from './_base.js';
|
|
29
|
+
import { cliError, emit } from '../output/format.js';
|
|
30
|
+
import { createClients, nextNonce } from '../chain/clients.js';
|
|
31
|
+
import { podManager, subnetManager, reppoToken } from '../chain/contracts.js';
|
|
32
|
+
import { decodeRevert } from '../chain/errors.js';
|
|
33
|
+
import { begin, markSubmitted, markConfirmed, markFailed, peekIdempotent } from '../state/idempotency.js';
|
|
34
|
+
const COMMAND = 'mint-pod';
|
|
35
|
+
export class MintPodCommand extends BaseCommand {
|
|
36
|
+
static paths = [['mint-pod']];
|
|
37
|
+
static usage = BaseCommand.Usage({
|
|
38
|
+
description: 'Mint a pod NFT. Required params depend on network: --share on mainnet, --datanet on testnet.',
|
|
39
|
+
examples: [
|
|
40
|
+
['Mint a pod on mainnet with 50% emission share',
|
|
41
|
+
'reppo mint-pod --share 50 --network mainnet'],
|
|
42
|
+
['Mint a pod into testnet datanet 19, paid in REPPO',
|
|
43
|
+
'reppo mint-pod --datanet 19 --network testnet'],
|
|
44
|
+
['Pay testnet mint with the datanet primary token instead',
|
|
45
|
+
'reppo mint-pod --datanet 19 --token primary --network testnet'],
|
|
46
|
+
['Mint to a different address',
|
|
47
|
+
'reppo mint-pod --share 50 --to 0x726c…E31d --network mainnet'],
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
share = Option.String('--share', { description: 'Mainnet only: emission share percent (0-100)' });
|
|
51
|
+
datanet = Option.String('--datanet', { description: 'Testnet only: datanet (subnet) id to mint into' });
|
|
52
|
+
token = Option.String('--token', 'reppo', { description: 'Testnet only: fee asset — "reppo" (default) or "primary"' });
|
|
53
|
+
to = Option.String('--to', { description: 'Address to mint the pod to (defaults to caller)' });
|
|
54
|
+
idempotencyKey = Option.String('--idempotency-key');
|
|
55
|
+
dryRun = Option.Boolean('--dry-run', false);
|
|
56
|
+
async execute() {
|
|
57
|
+
try {
|
|
58
|
+
const cfg = this.loadConfig();
|
|
59
|
+
const pk = cfg.privateKey;
|
|
60
|
+
if (!pk) {
|
|
61
|
+
throw cliError('MISSING_PRIVATE_KEY', 'No signing key available.', 'Set REPPO_PRIVATE_KEY in env.');
|
|
62
|
+
}
|
|
63
|
+
const clients = createClients({
|
|
64
|
+
network: cfg.network,
|
|
65
|
+
privateKey: pk,
|
|
66
|
+
...(cfg.rpcUrl ? { rpcUrl: cfg.rpcUrl } : {}),
|
|
67
|
+
});
|
|
68
|
+
const target = this.to
|
|
69
|
+
? (isAddress(this.to)
|
|
70
|
+
? this.to
|
|
71
|
+
: (() => { throw cliError('INVALID_ADDRESS', `Invalid --to address: ${this.to}`); })())
|
|
72
|
+
: clients.account.address;
|
|
73
|
+
return cfg.network === 'mainnet'
|
|
74
|
+
? await this.mintMainnet(clients, target, cfg.network)
|
|
75
|
+
: await this.mintTestnet(clients, target, cfg.network);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
this.handleError(err);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// ── Mainnet path: mintPod(to, share) — pays publishingFee in REPPO ─
|
|
82
|
+
async mintMainnet(clients, target, network) {
|
|
83
|
+
if (this.share === undefined) {
|
|
84
|
+
throw cliError('MISSING_SHARE', '--share is required on mainnet.', 'Pass --share <0-100> to set the pod\'s emission share percent.');
|
|
85
|
+
}
|
|
86
|
+
const shareNum = Number(this.share);
|
|
87
|
+
if (!Number.isInteger(shareNum) || shareNum < 0 || shareNum > 100) {
|
|
88
|
+
throw cliError('INVALID_SHARE', `--share must be an integer 0-100; got "${this.share}".`);
|
|
89
|
+
}
|
|
90
|
+
const share = shareNum;
|
|
91
|
+
const args = { share: share.toString(), to: target.toLowerCase() };
|
|
92
|
+
const decision = await peekIdempotent(this.idempotencyKey, COMMAND, args, this.dryRun);
|
|
93
|
+
if (decision.kind === 'return-confirmed') {
|
|
94
|
+
emit({ ...decision.result, idempotent: true, status: 'confirmed' }, [`(cached, confirmed) tx: ${decision.txHash ?? 'n/a'}`]);
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
if (decision.kind === 'return-submitted') {
|
|
98
|
+
emit({ ...decision.result, idempotent: true, status: 'submitted' }, [`(cached, submitted but not confirmed yet) tx: ${decision.txHash ?? 'n/a'}`,
|
|
99
|
+
`Re-run after the tx confirms, or check the explorer.`]);
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
const pm = podManager(network);
|
|
103
|
+
const reppo = reppoToken(network);
|
|
104
|
+
// Pre-flight: fee + balance + allowance, parallel.
|
|
105
|
+
const [fee, balance, allowance] = await Promise.all([
|
|
106
|
+
clients.publicClient.readContract({
|
|
107
|
+
address: pm.address, abi: pm.abi, functionName: 'publishingFee', args: [],
|
|
108
|
+
}),
|
|
109
|
+
clients.publicClient.readContract({
|
|
110
|
+
address: reppo.address, abi: reppo.abi, functionName: 'balanceOf', args: [clients.account.address],
|
|
111
|
+
}),
|
|
112
|
+
clients.publicClient.readContract({
|
|
113
|
+
address: reppo.address, abi: reppo.abi, functionName: 'allowance', args: [clients.account.address, pm.address],
|
|
114
|
+
}),
|
|
115
|
+
]);
|
|
116
|
+
if (balance < fee) {
|
|
117
|
+
throw cliError('INSUFFICIENT_REPPO_BALANCE', `Caller has ${formatUnits(balance, 18)} REPPO but the publishing fee is ${formatUnits(fee, 18)} REPPO.`, 'Acquire more REPPO before minting.');
|
|
118
|
+
}
|
|
119
|
+
if (allowance < fee) {
|
|
120
|
+
throw cliError('INSUFFICIENT_ALLOWANCE', `REPPO allowance from ${clients.account.address} to PodManager is ${formatUnits(allowance, 18)}, ` +
|
|
121
|
+
`below the publishing fee of ${formatUnits(fee, 18)} REPPO.`, `Approve PodManager (${pm.address}) for at least ${formatUnits(fee, 18)} REPPO. ` +
|
|
122
|
+
`Auto-approval lands in v0.2; for the alpha, send the approve() tx manually.`);
|
|
123
|
+
}
|
|
124
|
+
if (this.dryRun) {
|
|
125
|
+
const sim = await clients.publicClient.simulateContract({
|
|
126
|
+
address: pm.address, abi: pm.abi, functionName: 'mintPod',
|
|
127
|
+
args: [target, share], account: clients.account,
|
|
128
|
+
}).catch((e) => {
|
|
129
|
+
const decoded = decodeRevert(e);
|
|
130
|
+
throw cliError(decoded.code, 'Simulation reverted', decoded.hint);
|
|
131
|
+
});
|
|
132
|
+
emit({
|
|
133
|
+
simulated: true,
|
|
134
|
+
share,
|
|
135
|
+
to: target,
|
|
136
|
+
feeREPPO: { raw: fee.toString(), formatted: formatUnits(fee, 18) },
|
|
137
|
+
predictedPodId: sim.result.toString(),
|
|
138
|
+
gas: sim.request.gas?.toString() ?? null,
|
|
139
|
+
});
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
if (this.idempotencyKey)
|
|
143
|
+
await begin(this.idempotencyKey, COMMAND, args);
|
|
144
|
+
let tx;
|
|
145
|
+
try {
|
|
146
|
+
const nonce = await nextNonce(clients.publicClient, clients.account.address);
|
|
147
|
+
tx = await clients.walletClient.writeContract({
|
|
148
|
+
address: pm.address, abi: pm.abi, functionName: 'mintPod',
|
|
149
|
+
args: [target, share],
|
|
150
|
+
chain: clients.walletClient.chain, account: clients.account, nonce,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch (e) {
|
|
154
|
+
const decoded = decodeRevert(e);
|
|
155
|
+
if (this.idempotencyKey)
|
|
156
|
+
await markFailed(this.idempotencyKey, COMMAND, args, decoded.code);
|
|
157
|
+
throw cliError(decoded.code, 'mint-pod tx failed to submit', decoded.hint);
|
|
158
|
+
}
|
|
159
|
+
if (this.idempotencyKey)
|
|
160
|
+
await markSubmitted(this.idempotencyKey, COMMAND, args, tx);
|
|
161
|
+
const receipt = await clients.publicClient.waitForTransactionReceipt({ hash: tx, timeout: 120_000 });
|
|
162
|
+
if (receipt.status === 'reverted') {
|
|
163
|
+
if (this.idempotencyKey)
|
|
164
|
+
await markFailed(this.idempotencyKey, COMMAND, args, 'TX_REVERTED', tx);
|
|
165
|
+
throw cliError('TX_REVERTED', `mint-pod tx reverted: ${tx}`);
|
|
166
|
+
}
|
|
167
|
+
const result = {
|
|
168
|
+
txHash: tx,
|
|
169
|
+
share,
|
|
170
|
+
to: target,
|
|
171
|
+
feeREPPO: { raw: fee.toString(), formatted: formatUnits(fee, 18) },
|
|
172
|
+
block: receipt.blockNumber.toString(),
|
|
173
|
+
basescanUrl: `https://basescan.org/tx/${tx}`,
|
|
174
|
+
};
|
|
175
|
+
if (this.idempotencyKey)
|
|
176
|
+
await markConfirmed(this.idempotencyKey, COMMAND, args, result, tx);
|
|
177
|
+
emit(result, [
|
|
178
|
+
`✓ Minted pod (mainnet) with ${share}% emission share`,
|
|
179
|
+
` to: ${target}`,
|
|
180
|
+
` fee paid: ${formatUnits(fee, 18)} REPPO`,
|
|
181
|
+
` tx: ${result.basescanUrl}`,
|
|
182
|
+
` block: ${receipt.blockNumber}`,
|
|
183
|
+
` (new podId: check the explorer or run \`reppo query pod <id>\` to verify)`,
|
|
184
|
+
]);
|
|
185
|
+
return 0;
|
|
186
|
+
}
|
|
187
|
+
// ── Testnet path: mintPodWithREPPO / mintPodWithPrimaryToken(to, datanetId) ─
|
|
188
|
+
async mintTestnet(clients, target, network) {
|
|
189
|
+
if (this.datanet === undefined) {
|
|
190
|
+
throw cliError('MISSING_DATANET', '--datanet is required on testnet.', 'Pass --datanet <id> to choose which datanet to mint into.');
|
|
191
|
+
}
|
|
192
|
+
let datanetId;
|
|
193
|
+
try {
|
|
194
|
+
datanetId = BigInt(this.datanet);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
throw cliError('INVALID_DATANET_ID', `Datanet id must be a non-negative integer; got "${this.datanet}".`);
|
|
198
|
+
}
|
|
199
|
+
if (this.token !== 'reppo' && this.token !== 'primary') {
|
|
200
|
+
throw cliError('INVALID_TOKEN', `--token must be "reppo" or "primary"; got "${this.token}".`);
|
|
201
|
+
}
|
|
202
|
+
const functionName = this.token === 'reppo' ? 'mintPodWithREPPO' : 'mintPodWithPrimaryToken';
|
|
203
|
+
const args = { datanetId: datanetId.toString(), token: this.token, to: target.toLowerCase() };
|
|
204
|
+
const decision = await peekIdempotent(this.idempotencyKey, COMMAND, args, this.dryRun);
|
|
205
|
+
if (decision.kind === 'return-confirmed') {
|
|
206
|
+
emit({ ...decision.result, idempotent: true, status: 'confirmed' }, [`(cached, confirmed) tx: ${decision.txHash ?? 'n/a'}`]);
|
|
207
|
+
return 0;
|
|
208
|
+
}
|
|
209
|
+
if (decision.kind === 'return-submitted') {
|
|
210
|
+
emit({ ...decision.result, idempotent: true, status: 'submitted' }, [`(cached, submitted but not confirmed yet) tx: ${decision.txHash ?? 'n/a'}`,
|
|
211
|
+
`Re-run after the tx confirms, or check the explorer.`]);
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
const pm = podManager(network);
|
|
215
|
+
const sm = subnetManager(network);
|
|
216
|
+
// Pre-flight: validate the datanet exists.
|
|
217
|
+
const valid = await clients.publicClient.readContract({
|
|
218
|
+
address: sm.address, abi: sm.abi, functionName: 'validSubnet', args: [datanetId],
|
|
219
|
+
});
|
|
220
|
+
if (!valid) {
|
|
221
|
+
throw cliError('DATANET_NOT_FOUND', `Datanet ${datanetId} does not exist on ${network}.`, `Verify the id; check \`reppo query datanet ${datanetId}\` before minting.`);
|
|
222
|
+
}
|
|
223
|
+
if (this.dryRun) {
|
|
224
|
+
const sim = await clients.publicClient.simulateContract({
|
|
225
|
+
address: pm.address, abi: pm.abi, functionName,
|
|
226
|
+
args: [target, datanetId], account: clients.account,
|
|
227
|
+
}).catch((e) => {
|
|
228
|
+
const decoded = decodeRevert(e);
|
|
229
|
+
throw cliError(decoded.code, 'Simulation reverted', decoded.hint);
|
|
230
|
+
});
|
|
231
|
+
emit({
|
|
232
|
+
simulated: true,
|
|
233
|
+
datanetId: datanetId.toString(),
|
|
234
|
+
token: this.token,
|
|
235
|
+
to: target,
|
|
236
|
+
predictedPodId: sim.result.toString(),
|
|
237
|
+
gas: sim.request.gas?.toString() ?? null,
|
|
238
|
+
});
|
|
239
|
+
return 0;
|
|
240
|
+
}
|
|
241
|
+
if (this.idempotencyKey)
|
|
242
|
+
await begin(this.idempotencyKey, COMMAND, args);
|
|
243
|
+
let tx;
|
|
244
|
+
try {
|
|
245
|
+
const nonce = await nextNonce(clients.publicClient, clients.account.address);
|
|
246
|
+
tx = await clients.walletClient.writeContract({
|
|
247
|
+
address: pm.address, abi: pm.abi, functionName,
|
|
248
|
+
args: [target, datanetId],
|
|
249
|
+
chain: clients.walletClient.chain, account: clients.account, nonce,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
catch (e) {
|
|
253
|
+
const decoded = decodeRevert(e);
|
|
254
|
+
if (this.idempotencyKey)
|
|
255
|
+
await markFailed(this.idempotencyKey, COMMAND, args, decoded.code);
|
|
256
|
+
throw cliError(decoded.code, 'mint-pod tx failed to submit', decoded.hint);
|
|
257
|
+
}
|
|
258
|
+
if (this.idempotencyKey)
|
|
259
|
+
await markSubmitted(this.idempotencyKey, COMMAND, args, tx);
|
|
260
|
+
const receipt = await clients.publicClient.waitForTransactionReceipt({ hash: tx, timeout: 120_000 });
|
|
261
|
+
if (receipt.status === 'reverted') {
|
|
262
|
+
if (this.idempotencyKey)
|
|
263
|
+
await markFailed(this.idempotencyKey, COMMAND, args, 'TX_REVERTED', tx);
|
|
264
|
+
throw cliError('TX_REVERTED', `mint-pod tx reverted: ${tx}`);
|
|
265
|
+
}
|
|
266
|
+
const result = {
|
|
267
|
+
txHash: tx,
|
|
268
|
+
datanetId: datanetId.toString(),
|
|
269
|
+
token: this.token,
|
|
270
|
+
to: target,
|
|
271
|
+
block: receipt.blockNumber.toString(),
|
|
272
|
+
basescanUrl: `https://sepolia.basescan.org/tx/${tx}`,
|
|
273
|
+
};
|
|
274
|
+
if (this.idempotencyKey)
|
|
275
|
+
await markConfirmed(this.idempotencyKey, COMMAND, args, result, tx);
|
|
276
|
+
emit(result, [
|
|
277
|
+
`✓ Minted pod into datanet ${datanetId} (paid in ${this.token})`,
|
|
278
|
+
` to: ${target}`,
|
|
279
|
+
` tx: ${result.basescanUrl}`,
|
|
280
|
+
` block: ${receipt.blockNumber}`,
|
|
281
|
+
` (new podId: check the explorer or run \`reppo query pod <id>\` to verify)`,
|
|
282
|
+
]);
|
|
283
|
+
return 0;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=mint-pod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mint-pod.js","sourceRoot":"","sources":["../../src/commands/mint-pod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseCommand } from '../_base.js';
|
|
2
|
+
export declare class QueryBalanceCommand extends BaseCommand {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
address: string | undefined;
|
|
6
|
+
execute(): Promise<number>;
|
|
7
|
+
private resolveAddress;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=balance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/commands/query/balance.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa1C,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAgB,KAAK,aAA0B;IAE/C,OAAgB,KAAK,4BAOlB;IAEH,OAAO,qBAAsC;IAEvC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAsDhC,OAAO,CAAC,cAAc;CAgBvB"}
|