@reppo/cli 0.8.4 → 0.8.5

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 CHANGED
@@ -47,7 +47,7 @@ Errors **always** emit JSON on stderr regardless of mode, with a stable `code` f
47
47
  - `reppo query balance [address]` — ETH + REPPO + veREPPO + USDC
48
48
  - `reppo query voting-power [address]` — veREPPO voting power + lockup count
49
49
  - `reppo query pod <podId>` — pod existence + owner address
50
- - `reppo query datanet <datanetId> [--for <addr>]` — on-chain validity + REPPO access fee (optionally check access for an address) + the current on-chain epoch, plus off-chain catalog metadata: name, description, native token (symbol/address/decimals), per-epoch emissions, vote volumes, publisher/voter onboarding guidance, and the platform `subnetUuid` (the `--subnet-uuid` for `mint-pod` publishing). Catalog enrichment is best-effort — a platform outage degrades `metadata` to `{ unavailable }` without affecting the on-chain answer.
50
+ - `reppo query datanet <datanetId> [--for <addr>]` — on-chain validity + REPPO access fee (`accessFeeREPPO`) and, for datanets that charge in their own token, the primary-token access fee (`accessFeePrimaryToken` + `primaryToken: { address, decimals }`; best-effort — `{ unavailable }` when the datanet has no primary token or the read fails) (optionally check access for an address) + the current on-chain epoch, plus off-chain catalog metadata: name, description, native token (symbol/address/decimals), per-epoch emissions, vote volumes, publisher/voter onboarding guidance, and the platform `subnetUuid` (the `--subnet-uuid` for `mint-pod` publishing). Catalog enrichment is best-effort — a platform outage degrades `metadata` to `{ unavailable }` without affecting the on-chain answer.
51
51
  - `reppo query epoch` — current on-chain epoch, read directly from `veReppo.currentEpoch()` (the protocol's epoch time-base). JSON: `{ network, epoch, epochStart, epochDurationSeconds, secondsRemaining }`. Epochs are fixed ~48h windows; the timing fields are derived from `epochEnd`/`epochLength` and degrade to `null` if those getters are unavailable. Pure read — no signer, no gas. Honor `--rpc-url` against a private RPC (the public Base RPC rate-limits).
52
52
  - `reppo query emissions-due` — list unclaimed REPPO emissions across all pods owned by the configured wallet (uses platform API)
53
53
 
@@ -65,7 +65,7 @@ Errors **always** emit JSON on stderr regardless of mode, with a stable `code` f
65
65
  - `reppo lock <amount> --duration <seconds>` — lock REPPO into veREPPO for voting power
66
66
  - `reppo unlock <lockupId> [--to <addr>]` — withdraw an expired veREPPO lockup, returning the locked REPPO
67
67
  - `reppo extend-lock <lockupId> --duration <seconds>` — extend an existing veREPPO lockup
68
- - `reppo grant-access --datanet <id> [--to <addr>]` — pay the REPPO access fee and grant `--to` access to a datanet
68
+ - `reppo grant-access --datanet <id> [--to <addr>] [--token reppo|primary]` — pay the datanet access fee and grant `--to` access. Defaults to REPPO; `--token primary` pays in the datanet's primary token (e.g. $EXY). Output: `feeAmount` (on-chain fee quote), `feePaid` (receipt-derived actual), `feeToken: { symbol, address, decimals }`, and `token`. On the REPPO path the legacy `reppoFee` field is also emitted for back-compat (pre-0.8.5 consumers).
69
69
  - `reppo claim-emissions --pod <id> --epoch <n>` — claim a pod's emissions for an epoch
70
70
  - `reppo register-agent --name <s> --description <s>` — register a new agent identity on the Reppo platform; returns `{ id, apiKey }`. The apiKey is the Bearer token for subsequent agent-scoped calls (`/agents/[id]/subnets`, `/agents/[id]/pods`). On-chain mints use your `REPPO_PRIVATE_KEY` wallet; the platform no longer provisions one server-side.
71
71
  - `reppo auth [--force]` — sign in to the platform API (api.reppo.xyz); caches a 24h Bearer token used by `query emissions-due` and other platform-API commands
@@ -191,6 +191,18 @@ export declare const SUBNET_MANAGER_ABI: readonly [{
191
191
  readonly name: "to";
192
192
  }];
193
193
  readonly outputs: readonly [];
194
+ }, {
195
+ readonly name: "accessSubnetWithPrimaryTokenFee";
196
+ readonly type: "function";
197
+ readonly stateMutability: "nonpayable";
198
+ readonly inputs: readonly [{
199
+ readonly type: "uint256";
200
+ readonly name: "subnetId";
201
+ }, {
202
+ readonly type: "address";
203
+ readonly name: "to";
204
+ }];
205
+ readonly outputs: readonly [];
194
206
  }, {
195
207
  readonly name: "hasSubnetAccess";
196
208
  readonly type: "function";
@@ -227,6 +239,28 @@ export declare const SUBNET_MANAGER_ABI: readonly [{
227
239
  readonly outputs: readonly [{
228
240
  readonly type: "uint256";
229
241
  }];
242
+ }, {
243
+ readonly name: "getAccessFeePrimaryToken";
244
+ readonly type: "function";
245
+ readonly stateMutability: "view";
246
+ readonly inputs: readonly [{
247
+ readonly type: "uint256";
248
+ readonly name: "subnetId";
249
+ }];
250
+ readonly outputs: readonly [{
251
+ readonly type: "uint256";
252
+ }];
253
+ }, {
254
+ readonly name: "getSubnetPrimaryToken";
255
+ readonly type: "function";
256
+ readonly stateMutability: "view";
257
+ readonly inputs: readonly [{
258
+ readonly type: "uint256";
259
+ readonly name: "subnetId";
260
+ }];
261
+ readonly outputs: readonly [{
262
+ readonly type: "address";
263
+ }];
230
264
  }];
231
265
  export declare const VE_REPPO_ABI: readonly [{
232
266
  readonly name: "currentEpoch";
@@ -1 +1 @@
1
- {"version":3,"file":"abis.d.ts","sourceRoot":"","sources":["../../src/chain/abis.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK7B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBvB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUpB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErB,CAAC"}
1
+ {"version":3,"file":"abis.d.ts","sourceRoot":"","sources":["../../src/chain/abis.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBvB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUpB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErB,CAAC"}
@@ -32,9 +32,12 @@ export const POD_MANAGER_ABI = parseAbi([
32
32
  ]);
33
33
  export const SUBNET_MANAGER_ABI = parseAbi([
34
34
  'function accessSubnetWithREPPOFee(uint256 subnetId, address to)',
35
+ 'function accessSubnetWithPrimaryTokenFee(uint256 subnetId, address to)',
35
36
  'function hasSubnetAccess(uint256 subnetId, address address_) view returns (bool)',
36
37
  'function validSubnet(uint256 subnetId) view returns (bool)',
37
38
  'function getAccessFeeREPPO(uint256 subnetId) view returns (uint256)',
39
+ 'function getAccessFeePrimaryToken(uint256 subnetId) view returns (uint256)',
40
+ 'function getSubnetPrimaryToken(uint256 subnetId) view returns (address)',
38
41
  ]);
39
42
  export const VE_REPPO_ABI = parseAbi([
40
43
  // veReppo is the protocol's epoch time-base: PodManagerV2 and SubnetManager
@@ -1 +1 @@
1
- {"version":3,"file":"abis.js","sourceRoot":"","sources":["../../src/chain/abis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;IACtC,iFAAiF;IACjF,wFAAwF;IACxF,0DAA0D;IAC1D,+DAA+D;IAC/D,2EAA2E;IAC3E,0DAA0D;IAC1D,sDAAsD;IACtD,oEAAoE;IACpE,oFAAoF;IACpF,sFAAsF;IACtF,wFAAwF;IACxF,kGAAkG;IAClG,mFAAmF;CACpF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,iEAAiE;IACjE,kFAAkF;IAClF,4DAA4D;IAC5D,qEAAqE;CACtE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;IACnC,4EAA4E;IAC5E,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,mDAAmD;IACnD,gDAAgD;IAChD,+CAA+C;IAC/C,yDAAyD;IACzD,wDAAwD;IACxD,6EAA6E;IAC7E,sDAAsD;IACtD,yDAAyD;IACzD,gDAAgD;IAChD,qGAAqG;IACrG,oDAAoD;IACpD,oDAAoD;IACpD,6HAA6H;IAC7H,oDAAoD;IACpD,0DAA0D;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;IAChC,uCAAuC;IACvC,yCAAyC;IACzC,0CAA0C;IAC1C,+CAA+C;IAC/C,oDAAoD;IACpD,2EAA2E;IAC3E,kEAAkE;IAClE,8DAA8D;IAC9D,yEAAyE;CAC1E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,0MAA0M;IAC1M,sGAAsG;CACvG,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,wOAAwO;CACzO,CAAC,CAAC"}
1
+ {"version":3,"file":"abis.js","sourceRoot":"","sources":["../../src/chain/abis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;IACtC,iFAAiF;IACjF,wFAAwF;IACxF,0DAA0D;IAC1D,+DAA+D;IAC/D,2EAA2E;IAC3E,0DAA0D;IAC1D,sDAAsD;IACtD,oEAAoE;IACpE,oFAAoF;IACpF,sFAAsF;IACtF,wFAAwF;IACxF,kGAAkG;IAClG,mFAAmF;CACpF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,iEAAiE;IACjE,wEAAwE;IACxE,kFAAkF;IAClF,4DAA4D;IAC5D,qEAAqE;IACrE,4EAA4E;IAC5E,yEAAyE;CAC1E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;IACnC,4EAA4E;IAC5E,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,mDAAmD;IACnD,gDAAgD;IAChD,+CAA+C;IAC/C,yDAAyD;IACzD,wDAAwD;IACxD,6EAA6E;IAC7E,sDAAsD;IACtD,yDAAyD;IACzD,gDAAgD;IAChD,qGAAqG;IACrG,oDAAoD;IACpD,oDAAoD;IACpD,6HAA6H;IAC7H,oDAAoD;IACpD,0DAA0D;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;IAChC,uCAAuC;IACvC,yCAAyC;IACzC,0CAA0C;IAC1C,+CAA+C;IAC/C,oDAAoD;IACpD,2EAA2E;IAC3E,kEAAkE;IAClE,8DAA8D;IAC9D,yEAAyE;CAC1E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,0MAA0M;IAC1M,sGAAsG;CACvG,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,wOAAwO;CACzO,CAAC,CAAC"}
@@ -23,6 +23,12 @@ export declare function subnetManager(network: Network): Contract<typeof SUBNET_
23
23
  export declare function veReppo(network: Network): Contract<typeof VE_REPPO_ABI>;
24
24
  export declare function reppoToken(network: Network): Contract<typeof ERC20_ABI>;
25
25
  export declare function usdcToken(network: Network): Contract<typeof ERC20_ABI>;
26
+ /**
27
+ * Generic ERC20 resolver for a token whose address is discovered at runtime
28
+ * (e.g. a datanet's primary token via getSubnetPrimaryToken), not pinned in
29
+ * addresses.ts. No TBD check — the caller already holds a concrete address.
30
+ */
31
+ export declare function erc20(address: Address): Contract<typeof ERC20_ABI>;
26
32
  export declare function tryPodManager(network: Network): Contract<typeof POD_MANAGER_ABI> | null;
27
33
  export declare function trySubnetManager(network: Network): Contract<typeof SUBNET_MANAGER_ABI> | null;
28
34
  export declare function tryVeReppo(network: Network): Contract<typeof VE_REPPO_ABI> | null;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/chain/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACV,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,QAAQ,CAAC,IAAI;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,IAAI,CAAC;CACX;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,eAAe,CAAC,CAM7E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,kBAAkB,CAAC,CAMnF;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAMvE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAMvE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAMtE;AAeD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,GACf,QAAQ,CAAC,OAAO,eAAe,CAAC,GAAG,IAAI,CAIzC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,kBAAkB,CAAC,GAAG,IAAI,CAG7F;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,GAAG,IAAI,CAGjF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,GAAG,IAAI,CAGjF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,GAAG,IAAI,CAGhF"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/chain/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACV,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,QAAQ,CAAC,IAAI;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,IAAI,CAAC;CACX;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,eAAe,CAAC,CAM7E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,kBAAkB,CAAC,CAMnF;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAMvE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAMvE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAMtE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAElE;AAeD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,GACf,QAAQ,CAAC,OAAO,eAAe,CAAC,GAAG,IAAI,CAIzC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,kBAAkB,CAAC,GAAG,IAAI,CAG7F;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,GAAG,IAAI,CAGjF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,GAAG,IAAI,CAGjF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,GAAG,IAAI,CAGhF"}
@@ -35,6 +35,14 @@ export function usdcToken(network) {
35
35
  abi: ERC20_ABI,
36
36
  };
37
37
  }
38
+ /**
39
+ * Generic ERC20 resolver for a token whose address is discovered at runtime
40
+ * (e.g. a datanet's primary token via getSubnetPrimaryToken), not pinned in
41
+ * addresses.ts. No TBD check — the caller already holds a concrete address.
42
+ */
43
+ export function erc20(address) {
44
+ return { address, abi: ERC20_ABI };
45
+ }
38
46
  // ── Non-throwing variants ──────────────────────────────────────────────
39
47
  //
40
48
  // Read commands (e.g. `query balance`) need to render an `unavailable`
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/chain/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/chain/contracts.ts"],"names":[],"mappings":"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"}
@@ -16,10 +16,17 @@ type ReceiptWaitClient = {
16
16
  */
17
17
  export declare function receiptGasEth(receipt: TransactionReceipt): string;
18
18
  /**
19
- * Actual REPPO paid in a confirmed tx, as a decimal-ether string: sums the
20
- * token's Transfer events where `from` is the caller. Surfaced in write-command
21
- * JSON (like gasEth) so consumers can reconcile budget accounting to ACTUAL
22
- * fees instead of estimates. Returns "0" when no transfer from caller exists.
19
+ * Actual amount of `token` paid by `caller` in a confirmed tx, as a decimal
20
+ * string at the token's `decimals`: sums the token's Transfer events where
21
+ * `from` is the caller. Surfaced in write-command JSON (like gasEth) so
22
+ * consumers can reconcile budget accounting to ACTUAL fees instead of
23
+ * estimates. Returns "0" when no transfer from the caller exists. Generalizes
24
+ * reppoFeeFromReceipt to non-18-decimal fee tokens (a datanet's primary token).
25
+ */
26
+ export declare function tokenFeeFromReceipt(receipt: TransactionReceipt, token: Address, caller: Address, decimals: number): string;
27
+ /**
28
+ * Actual REPPO paid in a confirmed tx (18 decimals), as a decimal string. Thin
29
+ * wrapper over tokenFeeFromReceipt; kept for existing REPPO-path callers.
23
30
  */
24
31
  export declare function reppoFeeFromReceipt(receipt: TransactionReceipt, reppoToken: Address, caller: Address): string;
25
32
  export declare function waitForWriteReceipt(publicClient: ReceiptWaitClient, hash: Hash, timeoutMs?: number): Promise<TransactionReceipt>;
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../src/chain/receipt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAI9D,KAAK,iBAAiB,GAAG;IACvB,yBAAyB,CAAC,IAAI,EAAE;QAC9B,IAAI,EAAE,IAAI,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAEjE;AAKD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAW7G;AAED,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,iBAAiB,EAC/B,IAAI,EAAE,IAAI,EACV,SAAS,SAAU,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAa7B"}
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../src/chain/receipt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAI9D,KAAK,iBAAiB,GAAG;IACvB,yBAAyB,CAAC,IAAI,EAAE;QAC9B,IAAI,EAAE,IAAI,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAEjE;AAKD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GACf,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAE7G;AAED,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,iBAAiB,EAC/B,IAAI,EAAE,IAAI,EACV,SAAS,SAAU,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAa7B"}
@@ -1,4 +1,4 @@
1
- import { WaitForTransactionReceiptTimeoutError, formatEther } from 'viem';
1
+ import { WaitForTransactionReceiptTimeoutError, formatEther, formatUnits } from 'viem';
2
2
  import { cliError } from '../output/format.js';
3
3
  /**
4
4
  * Gas cost of a confirmed tx in ETH, as a decimal string: gasUsed ×
@@ -11,17 +11,19 @@ export function receiptGasEth(receipt) {
11
11
  // keccak256("Transfer(address,address,uint256)") — the ERC20 Transfer topic.
12
12
  const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
13
13
  /**
14
- * Actual REPPO paid in a confirmed tx, as a decimal-ether string: sums the
15
- * token's Transfer events where `from` is the caller. Surfaced in write-command
16
- * JSON (like gasEth) so consumers can reconcile budget accounting to ACTUAL
17
- * fees instead of estimates. Returns "0" when no transfer from caller exists.
14
+ * Actual amount of `token` paid by `caller` in a confirmed tx, as a decimal
15
+ * string at the token's `decimals`: sums the token's Transfer events where
16
+ * `from` is the caller. Surfaced in write-command JSON (like gasEth) so
17
+ * consumers can reconcile budget accounting to ACTUAL fees instead of
18
+ * estimates. Returns "0" when no transfer from the caller exists. Generalizes
19
+ * reppoFeeFromReceipt to non-18-decimal fee tokens (a datanet's primary token).
18
20
  */
19
- export function reppoFeeFromReceipt(receipt, reppoToken, caller) {
20
- const token = reppoToken.toLowerCase();
21
+ export function tokenFeeFromReceipt(receipt, token, caller, decimals) {
22
+ const tokenAddr = token.toLowerCase();
21
23
  const from = caller.toLowerCase().slice(2).padStart(64, '0');
22
24
  let total = 0n;
23
25
  for (const log of receipt.logs ?? []) {
24
- if (log.address.toLowerCase() !== token)
26
+ if (log.address.toLowerCase() !== tokenAddr)
25
27
  continue;
26
28
  if ((log.topics?.[0] ?? '').toLowerCase() !== TRANSFER_TOPIC)
27
29
  continue;
@@ -32,7 +34,14 @@ export function reppoFeeFromReceipt(receipt, reppoToken, caller) {
32
34
  }
33
35
  catch { /* malformed log data — skip */ }
34
36
  }
35
- return formatEther(total);
37
+ return formatUnits(total, decimals);
38
+ }
39
+ /**
40
+ * Actual REPPO paid in a confirmed tx (18 decimals), as a decimal string. Thin
41
+ * wrapper over tokenFeeFromReceipt; kept for existing REPPO-path callers.
42
+ */
43
+ export function reppoFeeFromReceipt(receipt, reppoToken, caller) {
44
+ return tokenFeeFromReceipt(receipt, reppoToken, caller, 18);
36
45
  }
37
46
  export async function waitForWriteReceipt(publicClient, hash, timeoutMs = 120_000) {
38
47
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/chain/receipt.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qCAAqC,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAS/C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAA2B;IACvD,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAClE,CAAC;AAED,6EAA6E;AAC7E,MAAM,cAAc,GAAG,oEAAoE,CAAC;AAE5F;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA2B,EAAE,UAAmB,EAAE,MAAe;IACnG,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK;YAAE,SAAS;QAClD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,cAAc;YAAE,SAAS;QACvE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,SAAS;QACtE,IAAI,CAAC;YAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAA+B,EAC/B,IAAU,EACV,SAAS,GAAG,OAAO;IAEnB,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qCAAqC,EAAE,CAAC;YACzD,MAAM,QAAQ,CACZ,oBAAoB,EACpB,mBAAmB,SAAS,GAAG,IAAI,0BAA0B,IAAI,EAAE,EACnE,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/chain/receipt.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qCAAqC,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAS/C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAA2B;IACvD,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAClE,CAAC;AAED,6EAA6E;AAC7E,MAAM,cAAc,GAAG,oEAAoE,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA2B,EAC3B,KAAc,EACd,MAAe,EACf,QAAgB;IAEhB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS;YAAE,SAAS;QACtD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,cAAc;YAAE,SAAS;QACvE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,SAAS;QACtE,IAAI,CAAC;YAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA2B,EAAE,UAAmB,EAAE,MAAe;IACnG,OAAO,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAA+B,EAC/B,IAAU,EACV,SAAS,GAAG,OAAO;IAEnB,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qCAAqC,EAAE,CAAC;YACzD,MAAM,QAAQ,CACZ,oBAAoB,EACpB,mBAAmB,SAAS,GAAG,IAAI,0BAA0B,IAAI,EAAE,EACnE,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,8 +1,14 @@
1
1
  import { BaseCommand } from './_base.js';
2
+ /** Maps the --token choice to the SubnetManager access method + fee getter. */
3
+ export declare function accessFns(token: 'reppo' | 'primary'): {
4
+ access: 'accessSubnetWithREPPOFee' | 'accessSubnetWithPrimaryTokenFee';
5
+ feeGetter: 'getAccessFeeREPPO' | 'getAccessFeePrimaryToken';
6
+ };
2
7
  export declare class GrantAccessCommand extends BaseCommand {
3
8
  static paths: string[][];
4
9
  static usage: import("clipanion").Usage;
5
10
  datanet: string;
11
+ token: string;
6
12
  to: string | undefined;
7
13
  idempotencyKey: string | undefined;
8
14
  dryRun: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"grant-access.d.ts","sourceRoot":"","sources":["../../src/commands/grant-access.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWzC,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,OAAgB,KAAK,aAAsB;IAE3C,OAAgB,KAAK,4BAYlB;IAEH,OAAO,SAAyG;IAChH,EAAE,qBAA6H;IAC/H,cAAc,qBAAsC;IACpD,MAAM,UAAsC;IAEtC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CA0MjC"}
1
+ {"version":3,"file":"grant-access.d.ts","sourceRoot":"","sources":["../../src/commands/grant-access.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWzC,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG;IACrD,MAAM,EAAE,0BAA0B,GAAG,iCAAiC,CAAC;IACvE,SAAS,EAAE,mBAAmB,GAAG,0BAA0B,CAAC;CAC7D,CAIA;AAED,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,OAAgB,KAAK,aAAsB;IAE3C,OAAgB,KAAK,4BAclB;IAEH,OAAO,SAAyG;IAChH,KAAK,SAAoG;IACzG,EAAE,qBAA6H;IAC/H,cAAc,qBAAsC;IACpD,MAAM,UAAsC;IAEtC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAyOjC"}
@@ -1,45 +1,52 @@
1
1
  /**
2
- * `reppo grant-access --datanet <id> [--to <addr>]` — pay the REPPO
3
- * access fee and grant `--to` access to the datanet. Defaults `--to`
4
- * to the address derived from REPPO_PRIVATE_KEY.
2
+ * `reppo grant-access --datanet <id> [--to <addr>] [--token reppo|primary]` —
3
+ * pay the datanet access fee and grant `--to` access. Paid in REPPO by default,
4
+ * or in the datanet's primary token with `--token primary` (mirrors
5
+ * `mint-pod --token`). Defaults `--to` to the address from REPPO_PRIVATE_KEY.
5
6
  *
6
- * "Datanet" is the user-facing term; on-chain it's a "subnet" (the
7
- * function is `accessSubnetWithREPPOFee` and we read `validSubnet` /
8
- * `hasSubnetAccess` / `getAccessFeeREPPO`). The CLI surface translates.
7
+ * On-chain the concept is a "subnet". For REPPO we call
8
+ * `accessSubnetWithREPPOFee` + `getAccessFeeREPPO`; for the primary token,
9
+ * `accessSubnetWithPrimaryTokenFee` + `getAccessFeePrimaryToken`, with the token
10
+ * address resolved via `getSubnetPrimaryToken` and its `decimals()` read on-chain
11
+ * (never assumed 18).
9
12
  *
10
- * Pre-flight checks (all surface error codes BEFORE the cache write,
11
- * so retries under the same --idempotency-key are safe):
12
- * 1. validSubnet(datanetId) → DATANET_NOT_FOUND
13
- * 2. hasSubnetAccess(datanetId, to) → ACCESS_ALREADY_GRANTED (cheap savings)
14
- * 3. getAccessFeeREPPO(datanetId) → fee amount (also surfaced in the result)
15
- * 4. REPPO balance >= fee → INSUFFICIENT_REPPO_BALANCE
16
- * 5. REPPO allowance(caller→sm) ≥ → INSUFFICIENT_ALLOWANCE (matches the
17
- * fee 0xfb8f41b2 selector errors.ts decodes)
13
+ * Pre-flight (all surface error codes BEFORE the cache write):
14
+ * 1. INVALID_TOKEN (--token not reppo|primary)
15
+ * 2. validSubnet(datanetId) → DATANET_NOT_FOUND
16
+ * 3. hasSubnetAccess(datanetId, to) → ACCESS_ALREADY_GRANTED
17
+ * 4. fee getter → fee amount (in the fee token)
18
+ * 5. feeToken balance >= fee → INSUFFICIENT_REPPO_BALANCE / INSUFFICIENT_TOKEN_BALANCE
19
+ * 6. feeToken allowance(caller→sm) ≥ → INSUFFICIENT_ALLOWANCE
18
20
  *
19
- * Idempotency two-phase write protocol:
20
- * begin submit tx markSubmitted wait receipt → markConfirmed
21
- *
22
- * Args fingerprint: { datanetId, to } — re-using one --idempotency-key
23
- * for a different (datanetId, to) is rejected with IDEMPOTENCY_ARGS_MISMATCH.
21
+ * Idempotency: begin submit → markSubmitted → wait → markConfirmed.
22
+ * Args fingerprint: { datanetId, to, token }.
24
23
  */
25
24
  import { Option } from 'clipanion';
26
25
  import { formatUnits, isAddress } from 'viem';
27
26
  import { BaseCommand } from './_base.js';
28
27
  import { cliError, emit } from '../output/format.js';
29
28
  import { createClients, nextNonce } from '../chain/clients.js';
30
- import { subnetManager, reppoToken } from '../chain/contracts.js';
29
+ import { subnetManager, reppoToken, erc20 } from '../chain/contracts.js';
31
30
  import { decodeRevert } from '../chain/errors.js';
32
31
  import { handleSubmittedCacheDecision } from './write-cache.js';
33
- import { waitForWriteReceipt, receiptGasEth, reppoFeeFromReceipt } from '../chain/receipt.js';
32
+ import { waitForWriteReceipt, receiptGasEth, tokenFeeFromReceipt } from '../chain/receipt.js';
34
33
  import { begin, markSubmitted, markConfirmed, markFailed, peekIdempotent } from '../state/idempotency.js';
35
34
  const COMMAND = 'grant-access';
35
+ /** Maps the --token choice to the SubnetManager access method + fee getter. */
36
+ export function accessFns(token) {
37
+ return token === 'reppo'
38
+ ? { access: 'accessSubnetWithREPPOFee', feeGetter: 'getAccessFeeREPPO' }
39
+ : { access: 'accessSubnetWithPrimaryTokenFee', feeGetter: 'getAccessFeePrimaryToken' };
40
+ }
36
41
  export class GrantAccessCommand extends BaseCommand {
37
42
  static paths = [['grant-access']];
38
43
  static usage = BaseCommand.Usage({
39
- description: 'Pay the REPPO access fee and grant a datanet access to an address.',
44
+ description: 'Pay the datanet access fee (REPPO or the datanet primary token) and grant an address access.',
40
45
  examples: [
41
- ['Grant the wallet derived from REPPO_PRIVATE_KEY access to datanet 19',
46
+ ['Grant the wallet derived from REPPO_PRIVATE_KEY access to datanet 19 (paid in REPPO)',
42
47
  'reppo grant-access --datanet 19'],
48
+ ['Pay the access fee in the datanet primary token instead',
49
+ 'reppo grant-access --datanet 19 --token primary'],
43
50
  ['Grant a different address access',
44
51
  'reppo grant-access --datanet 19 --to 0x726c…E31d'],
45
52
  ['With idempotency key',
@@ -49,6 +56,7 @@ export class GrantAccessCommand extends BaseCommand {
49
56
  ],
50
57
  });
51
58
  datanet = Option.String('--datanet', { required: true, description: 'Datanet (subnet) ID to grant access to' });
59
+ token = Option.String('--token', 'reppo', { description: 'Fee asset — "reppo" (default) or "primary"' });
52
60
  to = Option.String('--to', { description: 'Address to grant access to (defaults to address derived from REPPO_PRIVATE_KEY)' });
53
61
  idempotencyKey = Option.String('--idempotency-key');
54
62
  dryRun = Option.Boolean('--dry-run', false);
@@ -66,6 +74,10 @@ export class GrantAccessCommand extends BaseCommand {
66
74
  catch {
67
75
  throw cliError('INVALID_DATANET_ID', `Datanet id must be a non-negative integer; got "${this.datanet}".`);
68
76
  }
77
+ if (this.token !== 'reppo' && this.token !== 'primary') {
78
+ throw cliError('INVALID_TOKEN', `--token must be "reppo" or "primary"; got "${this.token}".`);
79
+ }
80
+ const fns = accessFns(this.token);
69
81
  const clients = createClients({
70
82
  network: cfg.network,
71
83
  privateKey: pk,
@@ -76,80 +88,112 @@ export class GrantAccessCommand extends BaseCommand {
76
88
  ? this.to
77
89
  : (() => { throw cliError('INVALID_ADDRESS', `Invalid --to address: ${this.to}`); })())
78
90
  : clients.account.address;
79
- const args = { datanetId: datanetId.toString(), to: target.toLowerCase() };
91
+ const args = { datanetId: datanetId.toString(), to: target.toLowerCase(), token: this.token };
80
92
  const decision = await peekIdempotent(this.idempotencyKey, COMMAND, args, this.dryRun);
81
93
  if (decision.kind === 'return-confirmed') {
82
94
  emit({ ...decision.result, idempotent: true, status: 'confirmed' }, [`(cached, confirmed) tx: ${decision.txHash ?? 'n/a'}`]);
83
95
  return 0;
84
96
  }
85
97
  if (decision.kind === 'return-submitted') {
86
- const clients = createClients({
87
- network: cfg.network,
88
- privateKey: pk,
89
- ...(cfg.rpcUrl ? { rpcUrl: cfg.rpcUrl } : {}),
90
- });
98
+ // Reuse `clients` (already built above); recompute feePaid/gasEth from the
99
+ // receipt so a reconciled-confirmed result has the same keys as a
100
+ // fresh-confirmed one. feeToken {address,decimals} survives on the cached
101
+ // submitted record (markSubmitted stored feeFields).
102
+ const ftMeta = decision.result.feeToken;
91
103
  return handleSubmittedCacheDecision(decision, {
92
104
  idempotencyKey: this.idempotencyKey,
93
105
  command: COMMAND,
94
106
  args,
95
107
  network: cfg.network,
96
108
  publicClient: clients.publicClient,
97
- buildResult: async () => {
98
- try {
99
- const smLocal = subnetManager(cfg.network);
100
- const fee = await clients.publicClient.readContract({
101
- address: smLocal.address, abi: smLocal.abi, functionName: 'getAccessFeeREPPO', args: [datanetId],
102
- });
103
- return {
104
- datanetId: datanetId.toString(),
105
- to: target,
106
- feeREPPO: { raw: fee.toString(), formatted: formatUnits(fee, 18) },
107
- };
108
- }
109
- catch {
110
- return { datanetId: datanetId.toString(), to: target };
109
+ buildResult: (receipt) => {
110
+ const base = {
111
+ datanetId: datanetId.toString(),
112
+ to: target,
113
+ token: this.token,
114
+ gasEth: receiptGasEth(receipt),
115
+ };
116
+ if (ftMeta) {
117
+ const feePaid = tokenFeeFromReceipt(receipt, ftMeta.address, clients.account.address, ftMeta.decimals);
118
+ base.feePaid = feePaid;
119
+ if (this.token === 'reppo')
120
+ base.reppoFee = feePaid;
111
121
  }
122
+ return base;
112
123
  },
113
124
  });
114
125
  }
115
- // Throwing variants — write commands must fail loud on TBD.
116
126
  const sm = subnetManager(cfg.network);
117
- const reppo = reppoToken(cfg.network);
127
+ // Resolve the fee token: REPPO (pinned) or the datanet's primary token
128
+ // (discovered on-chain). decimals MUST be read for the primary token,
129
+ // never assumed 18 — a non-18-decimal token would otherwise corrupt every
130
+ // amount.
131
+ let feeTokenAddress;
132
+ let feeTokenDecimals;
133
+ let feeTokenSymbol;
134
+ if (this.token === 'reppo') {
135
+ feeTokenAddress = reppoToken(cfg.network).address;
136
+ feeTokenDecimals = 18;
137
+ feeTokenSymbol = 'REPPO';
138
+ }
139
+ else {
140
+ let primaryAddr;
141
+ try {
142
+ primaryAddr = await clients.publicClient.readContract({
143
+ address: sm.address, abi: sm.abi, functionName: 'getSubnetPrimaryToken', args: [datanetId],
144
+ });
145
+ }
146
+ catch {
147
+ throw cliError('DATANET_HAS_NO_PRIMARY_TOKEN', `Could not resolve a primary token for datanet ${datanetId} on ${cfg.network}.`, 'This datanet likely charges access in REPPO only — retry without `--token primary`.');
148
+ }
149
+ // getSubnetPrimaryToken returns address(0) for REPPO-only datanets.
150
+ if (BigInt(primaryAddr) === 0n) {
151
+ throw cliError('DATANET_HAS_NO_PRIMARY_TOKEN', `Datanet ${datanetId} has no primary token configured.`, 'This datanet charges access in REPPO only — retry without `--token primary`.');
152
+ }
153
+ feeTokenAddress = primaryAddr;
154
+ const ft = erc20(feeTokenAddress);
155
+ const dec = await clients.publicClient.readContract({ ...ft, functionName: 'decimals' });
156
+ feeTokenDecimals = Number(dec);
157
+ // symbol is cosmetic — best-effort: some tokens return bytes32, which would
158
+ // fail to decode against the `string` ABI and abort the whole command.
159
+ feeTokenSymbol = await clients.publicClient
160
+ .readContract({ ...ft, functionName: 'symbol' })
161
+ .catch(() => `${feeTokenAddress.slice(0, 6)}…${feeTokenAddress.slice(-4)}`);
162
+ }
163
+ const feeToken = erc20(feeTokenAddress);
118
164
  // Pre-flight in parallel where independent.
119
165
  const [valid, alreadyHasAccess, fee, balance, allowance] = await Promise.all([
120
- clients.publicClient.readContract({
121
- address: sm.address, abi: sm.abi, functionName: 'validSubnet', args: [datanetId],
122
- }),
123
- clients.publicClient.readContract({
124
- address: sm.address, abi: sm.abi, functionName: 'hasSubnetAccess', args: [datanetId, target],
125
- }),
126
- clients.publicClient.readContract({
127
- address: sm.address, abi: sm.abi, functionName: 'getAccessFeeREPPO', args: [datanetId],
128
- }),
129
- clients.publicClient.readContract({
130
- address: reppo.address, abi: reppo.abi, functionName: 'balanceOf', args: [clients.account.address],
131
- }),
132
- clients.publicClient.readContract({
133
- address: reppo.address, abi: reppo.abi, functionName: 'allowance', args: [clients.account.address, sm.address],
134
- }),
166
+ clients.publicClient.readContract({ address: sm.address, abi: sm.abi, functionName: 'validSubnet', args: [datanetId] }),
167
+ clients.publicClient.readContract({ address: sm.address, abi: sm.abi, functionName: 'hasSubnetAccess', args: [datanetId, target] }),
168
+ clients.publicClient.readContract({ address: sm.address, abi: sm.abi, functionName: fns.feeGetter, args: [datanetId] }),
169
+ clients.publicClient.readContract({ ...feeToken, functionName: 'balanceOf', args: [clients.account.address] }),
170
+ clients.publicClient.readContract({ ...feeToken, functionName: 'allowance', args: [clients.account.address, sm.address] }),
135
171
  ]);
136
172
  if (!valid) {
137
- throw cliError('DATANET_NOT_FOUND', `Datanet ${datanetId} does not exist on ${cfg.network}.`, `Verify the id; check \`reppo query subnet ${datanetId}\` before granting access.`);
173
+ throw cliError('DATANET_NOT_FOUND', `Datanet ${datanetId} does not exist on ${cfg.network}.`, `Verify the id; check \`reppo query datanet ${datanetId}\` before granting access.`);
138
174
  }
139
175
  if (alreadyHasAccess) {
140
176
  throw cliError('ACCESS_ALREADY_GRANTED', `${target} already has access to datanet ${datanetId}.`, 'Nothing to do — skip the call.');
141
177
  }
142
178
  if (balance < fee) {
143
- throw cliError('INSUFFICIENT_REPPO_BALANCE', `Caller has ${formatUnits(balance, 18)} REPPO but the fee is ${formatUnits(fee, 18)} REPPO.`, 'Acquire more REPPO before granting access.');
179
+ throw cliError(this.token === 'reppo' ? 'INSUFFICIENT_REPPO_BALANCE' : 'INSUFFICIENT_TOKEN_BALANCE', `Caller has ${formatUnits(balance, feeTokenDecimals)} ${feeTokenSymbol} but the fee is ${formatUnits(fee, feeTokenDecimals)} ${feeTokenSymbol}.`, `Acquire more ${feeTokenSymbol} before granting access.`);
144
180
  }
145
181
  if (allowance < fee) {
146
- throw cliError('INSUFFICIENT_ALLOWANCE', `REPPO allowance from ${clients.account.address} to SubnetManager is ${formatUnits(allowance, 18)}, ` +
147
- `below the fee of ${formatUnits(fee, 18)} REPPO.`, `Approve the SubnetManager (${sm.address}) for at least ${formatUnits(fee, 18)} REPPO. ` +
148
- `Auto-approval lands in v0.2; for the alpha, send the approve() tx manually (e.g. via cast).`);
182
+ throw cliError('INSUFFICIENT_ALLOWANCE', `${feeTokenSymbol} allowance from ${clients.account.address} to SubnetManager is ${formatUnits(allowance, feeTokenDecimals)}, ` +
183
+ `below the fee of ${formatUnits(fee, feeTokenDecimals)} ${feeTokenSymbol}.`, `Approve the SubnetManager (${sm.address}) for at least ${formatUnits(fee, feeTokenDecimals)} ${feeTokenSymbol} ` +
184
+ `(send the approve() tx manually, e.g. via cast).`);
149
185
  }
186
+ const feeFields = {
187
+ feeToken: { symbol: feeTokenSymbol, address: feeTokenAddress, decimals: feeTokenDecimals },
188
+ feeAmount: { raw: fee.toString(), formatted: formatUnits(fee, feeTokenDecimals) },
189
+ // Legacy REPPO field for back-compat with existing consumers; only set on the REPPO path.
190
+ ...(this.token === 'reppo'
191
+ ? { feeREPPO: { raw: fee.toString(), formatted: formatUnits(fee, 18) } }
192
+ : {}),
193
+ };
150
194
  if (this.dryRun) {
151
195
  const sim = await clients.publicClient.simulateContract({
152
- address: sm.address, abi: sm.abi, functionName: 'accessSubnetWithREPPOFee',
196
+ address: sm.address, abi: sm.abi, functionName: fns.access,
153
197
  args: [datanetId, target], account: clients.account,
154
198
  }).catch((e) => {
155
199
  const decoded = decodeRevert(e);
@@ -159,7 +203,8 @@ export class GrantAccessCommand extends BaseCommand {
159
203
  simulated: true,
160
204
  datanetId: datanetId.toString(),
161
205
  to: target,
162
- feeREPPO: { raw: fee.toString(), formatted: formatUnits(fee, 18) },
206
+ token: this.token,
207
+ ...feeFields,
163
208
  gas: sim.request.gas?.toString() ?? null,
164
209
  });
165
210
  return 0;
@@ -170,7 +215,7 @@ export class GrantAccessCommand extends BaseCommand {
170
215
  try {
171
216
  const nonce = await nextNonce(clients.publicClient, clients.account.address);
172
217
  tx = await clients.walletClient.writeContract({
173
- address: sm.address, abi: sm.abi, functionName: 'accessSubnetWithREPPOFee',
218
+ address: sm.address, abi: sm.abi, functionName: fns.access,
174
219
  args: [datanetId, target],
175
220
  chain: clients.walletClient.chain, account: clients.account, nonce,
176
221
  });
@@ -181,12 +226,9 @@ export class GrantAccessCommand extends BaseCommand {
181
226
  await markFailed(this.idempotencyKey, COMMAND, args, decoded.code);
182
227
  throw cliError(decoded.code, 'grant-access tx failed to submit', decoded.hint);
183
228
  }
184
- // markSubmitted BEFORE waitForReceipt — closes the retry-resend window.
185
229
  if (this.idempotencyKey) {
186
230
  await markSubmitted(this.idempotencyKey, COMMAND, args, tx, {
187
- datanetId: datanetId.toString(),
188
- to: target,
189
- feeREPPO: { raw: fee.toString(), formatted: formatUnits(fee, 18) },
231
+ datanetId: datanetId.toString(), to: target, token: this.token, ...feeFields,
190
232
  });
191
233
  }
192
234
  const receipt = await waitForWriteReceipt(clients.publicClient, tx);
@@ -195,13 +237,18 @@ export class GrantAccessCommand extends BaseCommand {
195
237
  await markFailed(this.idempotencyKey, COMMAND, args, 'TX_REVERTED', tx);
196
238
  throw cliError('TX_REVERTED', `grant-access tx reverted: ${tx}`);
197
239
  }
240
+ const feePaid = tokenFeeFromReceipt(receipt, feeTokenAddress, clients.account.address, feeTokenDecimals);
198
241
  const result = {
199
242
  txHash: tx,
200
243
  gasEth: receiptGasEth(receipt),
201
- reppoFee: reppoFeeFromReceipt(receipt, reppoToken(cfg.network).address, clients.account.address),
244
+ feePaid,
245
+ // Legacy top-level field for back-compat with pre-0.8.5 consumers that
246
+ // read `reppoFee`; only meaningful on the REPPO path.
247
+ ...(this.token === 'reppo' ? { reppoFee: feePaid } : {}),
202
248
  datanetId: datanetId.toString(),
203
249
  to: target,
204
- feeREPPO: { raw: fee.toString(), formatted: formatUnits(fee, 18) },
250
+ token: this.token,
251
+ ...feeFields,
205
252
  block: receipt.blockNumber.toString(),
206
253
  basescanUrl: cfg.network === 'mainnet'
207
254
  ? `https://basescan.org/tx/${tx}`
@@ -209,9 +256,11 @@ export class GrantAccessCommand extends BaseCommand {
209
256
  };
210
257
  if (this.idempotencyKey)
211
258
  await markConfirmed(this.idempotencyKey, COMMAND, args, result, tx);
259
+ // Show the on-chain fee quote (always correct); feePaid in JSON is the
260
+ // receipt-derived actual, which can read 0 for non-standard transfer flows.
212
261
  emit(result, [
213
262
  `✓ Granted ${target} access to datanet ${datanetId}`,
214
- ` fee paid: ${formatUnits(fee, 18)} REPPO`,
263
+ ` fee: ${result.feeAmount.formatted} ${feeTokenSymbol}`,
215
264
  ` tx: ${result.basescanUrl}`,
216
265
  ` block: ${receipt.blockNumber}`,
217
266
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"grant-access.js","sourceRoot":"","sources":["../../src/commands/grant-access.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grant-access.js","sourceRoot":"","sources":["../../src/commands/grant-access.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"datanet.d.ts","sourceRoot":"","sources":["../../../src/commands/query/datanet.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgC1C,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAgB,KAAK,aAA0B;IAE/C,OAAgB,KAAK,4BAUlB;IAEH,OAAO,SAAqC;IAC5C,IAAI,qBAA+H;IAE7H,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA6GhC,OAAO,CAAC,oBAAoB;IAW5B;;;;;OAKG;YACW,aAAa;IAW3B,OAAO,CAAC,UAAU;IAsBlB,uDAAuD;IACvD,OAAO,CAAC,aAAa;CAyBtB"}
1
+ {"version":3,"file":"datanet.d.ts","sourceRoot":"","sources":["../../../src/commands/query/datanet.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgC1C,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAgB,KAAK,aAA0B;IAE/C,OAAgB,KAAK,4BAUlB;IAEH,OAAO,SAAqC;IAC5C,IAAI,qBAA+H;IAE7H,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAyIhC,OAAO,CAAC,oBAAoB;IAW5B;;;;;OAKG;YACW,aAAa;IAW3B,OAAO,CAAC,UAAU;IAsBlB,uDAAuD;IACvD,OAAO,CAAC,aAAa;CAyBtB"}
@@ -22,7 +22,7 @@ import { privateKeyToAddress } from 'viem/accounts';
22
22
  import { BaseCommand } from '../_base.js';
23
23
  import { cliError, emit } from '../../output/format.js';
24
24
  import { createReadClient } from '../../chain/clients.js';
25
- import { trySubnetManager, tryVeReppo } from '../../chain/contracts.js';
25
+ import { trySubnetManager, tryVeReppo, erc20 } from '../../chain/contracts.js';
26
26
  import { DEFAULT_PUBLIC_API_URL } from '../../api/public.js';
27
27
  import { fetchSubnetByTokenId, numericToString } from '../../api/subnets.js';
28
28
  function unavailable(reason) {
@@ -98,6 +98,32 @@ export class QueryDatanetCommand extends BaseCommand {
98
98
  ? await client.readContract({ ...sm, functionName: 'getAccessFeeREPPO', args: [datanetId] })
99
99
  .then((v) => ({ raw: v.toString(), formatted: formatUnits(v, 18) }))
100
100
  : unavailable('datanet does not exist');
101
+ // Primary-token access fee — for datanets that charge access in their own
102
+ // token rather than REPPO. Best-effort and decimals-aware: a revert here
103
+ // (or a datanet with no primary token) must NOT break the REPPO answer.
104
+ let accessFeePrimaryToken = unavailable('not read');
105
+ let primaryToken;
106
+ if (valid) {
107
+ try {
108
+ const primaryAddr = await client.readContract({
109
+ ...sm, functionName: 'getSubnetPrimaryToken', args: [datanetId],
110
+ });
111
+ const ft = erc20(primaryAddr);
112
+ const [dec, pFee] = await Promise.all([
113
+ client.readContract({ ...ft, functionName: 'decimals' }),
114
+ client.readContract({ ...sm, functionName: 'getAccessFeePrimaryToken', args: [datanetId] }),
115
+ ]);
116
+ const decimals = Number(dec);
117
+ primaryToken = { address: primaryAddr, decimals };
118
+ accessFeePrimaryToken = { raw: pFee.toString(), formatted: formatUnits(pFee, decimals) };
119
+ }
120
+ catch {
121
+ // Either the datanet has no primary token (revert) or the read failed
122
+ // (transport). Best-effort — don't assert which, and never break the
123
+ // REPPO answer above.
124
+ accessFeePrimaryToken = unavailable('no primary token, or read failed');
125
+ }
126
+ }
101
127
  // Optional caller-access check.
102
128
  const callerAddr = this.resolveCallerAddress(cfg.privateKey);
103
129
  const callerAccess = callerAddr && valid
@@ -114,6 +140,8 @@ export class QueryDatanetCommand extends BaseCommand {
114
140
  valid,
115
141
  currentEpoch,
116
142
  accessFeeREPPO,
143
+ accessFeePrimaryToken,
144
+ ...(primaryToken ? { primaryToken } : {}),
117
145
  ...(callerAccess ? { callerAccess } : {}),
118
146
  metadata,
119
147
  };
@@ -1 +1 @@
1
- {"version":3,"file":"datanet.js","sourceRoot":"","sources":["../../../src/commands/query/datanet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datanet.js","sourceRoot":"","sources":["../../../src/commands/query/datanet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reppo/cli",
3
- "version": "0.8.4",
3
+ "version": "0.8.5",
4
4
  "description": "Command-line interface for Reppo — mint pods, vote, lock REPPO, manage datanets. Built for AI agents.",
5
5
  "license": "MIT",
6
6
  "author": "Reppo Labs",