perp-cli 0.11.0 → 0.12.1
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 +30 -25
- package/dist/_stderr-filter.d.ts +0 -0
- package/dist/_stderr-filter.js +30 -0
- package/dist/agent-wallet/expiry.d.ts +15 -0
- package/dist/agent-wallet/expiry.js +26 -0
- package/dist/agent-wallet/lighter-keystore.d.ts +34 -0
- package/dist/agent-wallet/lighter-keystore.js +232 -0
- package/dist/agent-wallet/passphrase.d.ts +13 -0
- package/dist/agent-wallet/passphrase.js +54 -0
- package/dist/agent-wallet/signing-strategy.d.ts +67 -0
- package/dist/agent-wallet/signing-strategy.js +51 -0
- package/dist/agent-wallet/store.d.ts +37 -0
- package/dist/agent-wallet/store.js +172 -0
- package/dist/api/public/_http.d.ts +15 -0
- package/dist/api/public/_http.js +24 -0
- package/dist/api/public/hyperliquid.js +36 -24
- package/dist/api/public/lighter.d.ts +7 -1
- package/dist/api/public/lighter.js +85 -37
- package/dist/api/public/pacifica.js +47 -18
- package/dist/bridge-engine.js +102 -49
- package/dist/cli-spec.js +1 -2
- package/dist/commands/account.js +2 -500
- package/dist/commands/agent.d.ts +8 -2
- package/dist/commands/agent.js +1903 -366
- package/dist/commands/alerts.js +3 -1
- package/dist/commands/arb/index.js +37 -7
- package/dist/commands/arb-auto.js +44 -11
- package/dist/commands/arb.js +83 -34
- package/dist/commands/bot.d.ts +1 -1
- package/dist/commands/bot.js +18 -14
- package/dist/commands/bridge.d.ts +1 -1
- package/dist/commands/bridge.js +4 -4
- package/dist/commands/funds.d.ts +1 -1
- package/dist/commands/funds.js +18 -68
- package/dist/commands/jobs.d.ts +1 -1
- package/dist/commands/jobs.js +2 -2
- package/dist/commands/manage.d.ts +1 -1
- package/dist/commands/manage.js +12 -84
- package/dist/commands/plan.d.ts +1 -1
- package/dist/commands/plan.js +2 -2
- package/dist/commands/portfolio.d.ts +19 -3
- package/dist/commands/portfolio.js +747 -163
- package/dist/commands/rebalance.d.ts +1 -1
- package/dist/commands/rebalance.js +18 -12
- package/dist/commands/risk.js +2 -6
- package/dist/commands/settings.js +30 -53
- package/dist/commands/trade.js +16 -15
- package/dist/commands/wallet.d.ts +2 -1
- package/dist/commands/wallet.js +756 -28
- package/dist/errors.d.ts +64 -0
- package/dist/errors.js +82 -2
- package/dist/event-stream.js +12 -1
- package/dist/exchanges/aster-typed-data.d.ts +156 -0
- package/dist/exchanges/aster-typed-data.js +189 -0
- package/dist/exchanges/aster.d.ts +60 -11
- package/dist/exchanges/aster.js +278 -136
- package/dist/exchanges/hyperliquid.d.ts +14 -0
- package/dist/exchanges/hyperliquid.js +84 -34
- package/dist/exchanges/lighter-spot.js +14 -3
- package/dist/exchanges/lighter.d.ts +66 -0
- package/dist/exchanges/lighter.js +199 -27
- package/dist/exchanges/pacifica-typed-data.d.ts +75 -0
- package/dist/exchanges/pacifica-typed-data.js +74 -0
- package/dist/exchanges/pacifica.d.ts +29 -1
- package/dist/exchanges/pacifica.js +94 -6
- package/dist/funding/rates.js +59 -21
- package/dist/guardrail/perp-guardrail.js +9 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +268 -360
- package/dist/jobs.js +3 -1
- package/dist/mcp-server.js +85 -83
- package/dist/position-history.js +47 -4
- package/dist/settings.d.ts +67 -3
- package/dist/settings.js +1 -2
- package/dist/signer/ows-evm.d.ts +14 -0
- package/dist/signer/ows-evm.js +28 -9
- package/dist/smart-order.d.ts +8 -2
- package/dist/smart-order.js +46 -11
- package/dist/strategies/funding-arb.js +29 -8
- package/dist/trade-validator.js +30 -5
- package/dist/utils.d.ts +10 -0
- package/dist/utils.js +19 -0
- package/package.json +2 -2
- package/skills/perp-cli/SKILL.md +23 -14
- package/skills/perp-cli/references/agent-operations.md +6 -4
- package/skills/perp-cli/references/commands.md +55 -34
- package/skills/perp-cli/scripts/preflight.sh +4 -4
- package/skills/perp-cli/scripts/spot-perp-scan.sh +2 -2
- package/dist/__tests__/alert-logic.test.d.ts +0 -1
- package/dist/__tests__/alert-logic.test.js +0 -107
- package/dist/__tests__/arb-auto-3dex.test.d.ts +0 -1
- package/dist/__tests__/arb-auto-3dex.test.js +0 -397
- package/dist/__tests__/arb-history-stats.test.d.ts +0 -1
- package/dist/__tests__/arb-history-stats.test.js +0 -176
- package/dist/__tests__/arb-logic.test.d.ts +0 -1
- package/dist/__tests__/arb-logic.test.js +0 -84
- package/dist/__tests__/arb-manage.test.d.ts +0 -1
- package/dist/__tests__/arb-manage.test.js +0 -253
- package/dist/__tests__/arb-new-features.test.d.ts +0 -1
- package/dist/__tests__/arb-new-features.test.js +0 -457
- package/dist/__tests__/arb-sizing.test.d.ts +0 -1
- package/dist/__tests__/arb-sizing.test.js +0 -48
- package/dist/__tests__/arb-state.test.d.ts +0 -1
- package/dist/__tests__/arb-state.test.js +0 -284
- package/dist/__tests__/arb-userflow.test.d.ts +0 -1
- package/dist/__tests__/arb-userflow.test.js +0 -945
- package/dist/__tests__/arb-utils.test.d.ts +0 -1
- package/dist/__tests__/arb-utils.test.js +0 -264
- package/dist/__tests__/bot-conditions.test.d.ts +0 -1
- package/dist/__tests__/bot-conditions.test.js +0 -341
- package/dist/__tests__/client-id-tracker.test.d.ts +0 -1
- package/dist/__tests__/client-id-tracker.test.js +0 -137
- package/dist/__tests__/commands/new-atomic-commands.test.d.ts +0 -1
- package/dist/__tests__/commands/new-atomic-commands.test.js +0 -502
- package/dist/__tests__/commands/order-intent.test.d.ts +0 -1
- package/dist/__tests__/commands/order-intent.test.js +0 -600
- package/dist/__tests__/commands/trade-commands.test.d.ts +0 -1
- package/dist/__tests__/commands/trade-commands.test.js +0 -821
- package/dist/__tests__/config.test.d.ts +0 -1
- package/dist/__tests__/config.test.js +0 -86
- package/dist/__tests__/cross-chain-margin.test.d.ts +0 -1
- package/dist/__tests__/cross-chain-margin.test.js +0 -287
- package/dist/__tests__/dex-asset-map.test.d.ts +0 -1
- package/dist/__tests__/dex-asset-map.test.js +0 -191
- package/dist/__tests__/errors.test.d.ts +0 -1
- package/dist/__tests__/errors.test.js +0 -110
- package/dist/__tests__/event-stream.test.d.ts +0 -1
- package/dist/__tests__/event-stream.test.js +0 -276
- package/dist/__tests__/exchanges/interface.test.d.ts +0 -1
- package/dist/__tests__/exchanges/interface.test.js +0 -132
- package/dist/__tests__/exchanges/mock-adapter.d.ts +0 -69
- package/dist/__tests__/exchanges/mock-adapter.js +0 -137
- package/dist/__tests__/execution-log.test.d.ts +0 -1
- package/dist/__tests__/execution-log.test.js +0 -106
- package/dist/__tests__/funding-calc.test.d.ts +0 -1
- package/dist/__tests__/funding-calc.test.js +0 -71
- package/dist/__tests__/funding-history.test.d.ts +0 -1
- package/dist/__tests__/funding-history.test.js +0 -343
- package/dist/__tests__/funding-rates.test.d.ts +0 -1
- package/dist/__tests__/funding-rates.test.js +0 -342
- package/dist/__tests__/funding.test.d.ts +0 -1
- package/dist/__tests__/funding.test.js +0 -173
- package/dist/__tests__/gap-logic.test.d.ts +0 -1
- package/dist/__tests__/gap-logic.test.js +0 -43
- package/dist/__tests__/hip3-dex.test.d.ts +0 -1
- package/dist/__tests__/hip3-dex.test.js +0 -234
- package/dist/__tests__/integration/agent-features.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/agent-features.integration.test.js +0 -553
- package/dist/__tests__/integration/atomic-commands.integration.test.d.ts +0 -13
- package/dist/__tests__/integration/atomic-commands.integration.test.js +0 -246
- package/dist/__tests__/integration/bridge-simulation.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/bridge-simulation.integration.test.js +0 -453
- package/dist/__tests__/integration/bridge-strict.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/bridge-strict.integration.test.js +0 -812
- package/dist/__tests__/integration/bridge.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/bridge.integration.test.js +0 -309
- package/dist/__tests__/integration/cli-e2e.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/cli-e2e.integration.test.js +0 -202
- package/dist/__tests__/integration/dex-arb.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/dex-arb.integration.test.js +0 -116
- package/dist/__tests__/integration/envelope-consistency.integration.test.d.ts +0 -13
- package/dist/__tests__/integration/envelope-consistency.integration.test.js +0 -205
- package/dist/__tests__/integration/hip3-dex.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/hip3-dex.integration.test.js +0 -147
- package/dist/__tests__/integration/hyperliquid.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/hyperliquid.integration.test.js +0 -79
- package/dist/__tests__/integration/lighter.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/lighter.integration.test.js +0 -53
- package/dist/__tests__/integration/new-commands-e2e.integration.test.d.ts +0 -9
- package/dist/__tests__/integration/new-commands-e2e.integration.test.js +0 -236
- package/dist/__tests__/integration/order-verification.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/order-verification.integration.test.js +0 -321
- package/dist/__tests__/integration/pacifica.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/pacifica.integration.test.js +0 -75
- package/dist/__tests__/integration/response-shapes.integration.test.d.ts +0 -1
- package/dist/__tests__/integration/response-shapes.integration.test.js +0 -278
- package/dist/__tests__/liquidity.test.d.ts +0 -1
- package/dist/__tests__/liquidity.test.js +0 -225
- package/dist/__tests__/plan-executor.test.d.ts +0 -1
- package/dist/__tests__/plan-executor.test.js +0 -314
- package/dist/__tests__/position-history.test.d.ts +0 -1
- package/dist/__tests__/position-history.test.js +0 -367
- package/dist/__tests__/retry.test.d.ts +0 -1
- package/dist/__tests__/retry.test.js +0 -310
- package/dist/__tests__/risk-assessment.test.d.ts +0 -1
- package/dist/__tests__/risk-assessment.test.js +0 -288
- package/dist/__tests__/security-adversarial.test.d.ts +0 -1
- package/dist/__tests__/security-adversarial.test.js +0 -574
- package/dist/__tests__/strategies.test.d.ts +0 -1
- package/dist/__tests__/strategies.test.js +0 -539
- package/dist/__tests__/trade-execution.test.d.ts +0 -1
- package/dist/__tests__/trade-execution.test.js +0 -129
- package/dist/__tests__/trade-validator.test.d.ts +0 -1
- package/dist/__tests__/trade-validator.test.js +0 -655
- package/dist/__tests__/utils.test.d.ts +0 -1
- package/dist/__tests__/utils.test.js +0 -76
- package/dist/arb/reconcile.d.ts +0 -28
- package/dist/arb/reconcile.js +0 -162
- package/dist/commands/alert.d.ts +0 -2
- package/dist/commands/alert.js +0 -421
- package/dist/commands/analytics.d.ts +0 -3
- package/dist/commands/analytics.js +0 -311
- package/dist/commands/arb-manage.d.ts +0 -5
- package/dist/commands/arb-manage.js +0 -5
- package/dist/commands/dashboard.d.ts +0 -3
- package/dist/commands/dashboard.js +0 -176
- package/dist/commands/deposit.d.ts +0 -4
- package/dist/commands/deposit.js +0 -573
- package/dist/commands/dex.d.ts +0 -3
- package/dist/commands/dex.js +0 -120
- package/dist/commands/env.d.ts +0 -2
- package/dist/commands/env.js +0 -136
- package/dist/commands/funding.d.ts +0 -3
- package/dist/commands/funding.js +0 -554
- package/dist/commands/gap.d.ts +0 -2
- package/dist/commands/gap.js +0 -305
- package/dist/commands/health.d.ts +0 -2
- package/dist/commands/health.js +0 -67
- package/dist/commands/multileg.d.ts +0 -16
- package/dist/commands/multileg.js +0 -174
- package/dist/commands/ows.d.ts +0 -2
- package/dist/commands/ows.js +0 -887
- package/dist/commands/pnl.d.ts +0 -12
- package/dist/commands/pnl.js +0 -243
- package/dist/commands/run.d.ts +0 -3
- package/dist/commands/run.js +0 -202
- package/dist/commands/stream.d.ts +0 -5
- package/dist/commands/stream.js +0 -200
- package/dist/commands/withdraw.d.ts +0 -3
- package/dist/commands/withdraw.js +0 -187
- package/dist/exchanges/edgex.d.ts +0 -62
- package/dist/exchanges/edgex.js +0 -552
- package/dist/exchanges/nado.d.ts +0 -52
- package/dist/exchanges/nado.js +0 -223
- package/dist/funding/index.d.ts +0 -3
- package/dist/funding/index.js +0 -3
- package/dist/retry.d.ts +0 -74
- package/dist/retry.js +0 -129
- package/dist/ws/market-feed.d.ts +0 -74
- package/dist/ws/market-feed.js +0 -227
package/dist/commands/jobs.js
CHANGED
|
@@ -3,8 +3,8 @@ import { printJson, jsonOk } from "../utils.js";
|
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
5
5
|
import { execSync } from "node:child_process";
|
|
6
|
-
export function
|
|
7
|
-
const jobs = program.command("
|
|
6
|
+
export function registerBackgroundCommands(program, isJson) {
|
|
7
|
+
const jobs = program.command("background").description("Background process supervisor (tmux sessions for strategies, alerts, etc.)");
|
|
8
8
|
jobs
|
|
9
9
|
.command("list", { isDefault: true })
|
|
10
10
|
.description("List all jobs")
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import type { ExchangeAdapter } from "../exchanges/index.js";
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function registerWalletManageCommands(parent: Command, getAdapter: () => Promise<ExchangeAdapter>, isJson: () => boolean, getPacificaAdapter: () => unknown): void;
|
package/dist/commands/manage.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { printJson, jsonOk, jsonError } from "../utils.js";
|
|
2
|
-
import { setEnvVar } from "./init.js";
|
|
3
2
|
import chalk from "chalk";
|
|
4
|
-
import { hasPacificaSdk
|
|
5
|
-
export function
|
|
6
|
-
const manage =
|
|
3
|
+
import { hasPacificaSdk } from "../exchanges/capabilities.js";
|
|
4
|
+
export function registerWalletManageCommands(parent, getAdapter, isJson, getPacificaAdapter) {
|
|
5
|
+
const manage = parent.command("manage").description("Exchange account settings (margin, subaccount, API keys, builder) — Pacifica + Lighter");
|
|
7
6
|
// Ensure adapter is initialized before accessing PacificaAdapter
|
|
8
7
|
async function pac() {
|
|
9
8
|
const adapter = await getAdapter();
|
|
@@ -71,48 +70,10 @@ export function registerManageCommands(program, getAdapter, isJson, getPacificaA
|
|
|
71
70
|
return printJson(jsonOk(result));
|
|
72
71
|
console.log(chalk.green(`\n Transferred $${amount}.\n`));
|
|
73
72
|
});
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.description("Bind an agent wallet")
|
|
79
|
-
.action(async (wallet) => {
|
|
80
|
-
const a = await pac();
|
|
81
|
-
const result = await a.sdk.bindAgentWallet(wallet, a.publicKey, a.signer);
|
|
82
|
-
if (isJson())
|
|
83
|
-
return printJson(jsonOk(result));
|
|
84
|
-
console.log(chalk.green(`\n Agent wallet ${wallet} bound.\n`));
|
|
85
|
-
});
|
|
86
|
-
agent
|
|
87
|
-
.command("list")
|
|
88
|
-
.description("List agent wallets")
|
|
89
|
-
.action(async () => {
|
|
90
|
-
const a = await pac();
|
|
91
|
-
const result = await a.sdk.listAgentWallets(a.publicKey, a.signer);
|
|
92
|
-
if (isJson())
|
|
93
|
-
return printJson(jsonOk(result));
|
|
94
|
-
console.log(JSON.stringify(result, null, 2));
|
|
95
|
-
});
|
|
96
|
-
agent
|
|
97
|
-
.command("revoke <wallet>")
|
|
98
|
-
.description("Revoke an agent wallet")
|
|
99
|
-
.action(async (wallet) => {
|
|
100
|
-
const a = await pac();
|
|
101
|
-
const result = await a.sdk.revokeAgentWallet(wallet, a.publicKey, a.signer);
|
|
102
|
-
if (isJson())
|
|
103
|
-
return printJson(jsonOk(result));
|
|
104
|
-
console.log(chalk.green(`\n Agent wallet ${wallet} revoked.\n`));
|
|
105
|
-
});
|
|
106
|
-
agent
|
|
107
|
-
.command("revoke-all")
|
|
108
|
-
.description("Revoke all agent wallets")
|
|
109
|
-
.action(async () => {
|
|
110
|
-
const a = await pac();
|
|
111
|
-
const result = await a.sdk.revokeAllAgentWallets(a.publicKey, a.signer);
|
|
112
|
-
if (isJson())
|
|
113
|
-
return printJson(jsonOk(result));
|
|
114
|
-
console.log(chalk.green("\n All agent wallets revoked.\n"));
|
|
115
|
-
});
|
|
73
|
+
// Legacy `manage agent` removed in v0.12 (Phase 2c) — superseded by the
|
|
74
|
+
// unified `wallet agent {approve,revoke,rotate,list,verify} pacifica` flow.
|
|
75
|
+
// The unified command tree provides 3-tier signer routing, expiry tracking,
|
|
76
|
+
// and OWS at-rest encryption. See `wallet agent approve pacifica --help`.
|
|
116
77
|
// Lake (liquidity vaults)
|
|
117
78
|
const lake = manage.command("lake").description("Lake (liquidity vault) management");
|
|
118
79
|
lake
|
|
@@ -270,42 +231,9 @@ export function registerManageCommands(program, getAdapter, isJson, getPacificaA
|
|
|
270
231
|
return printJson(jsonOk(result));
|
|
271
232
|
console.log(chalk.green(`\n API key revoked.\n`));
|
|
272
233
|
});
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
.action(async (opts) => {
|
|
279
|
-
const adapter = await getAdapter();
|
|
280
|
-
if (!hasLighterAccount(adapter)) {
|
|
281
|
-
throw new Error("This command requires --exchange lighter");
|
|
282
|
-
}
|
|
283
|
-
const keyIndex = parseInt(opts.keyIndex);
|
|
284
|
-
if (!isJson()) {
|
|
285
|
-
console.log(chalk.cyan.bold("\n Lighter API Key Setup\n"));
|
|
286
|
-
console.log(chalk.gray(` Account: ${adapter.address} (index: ${adapter.accountIndex})`));
|
|
287
|
-
console.log(chalk.gray(` API Key Index: ${keyIndex}\n`));
|
|
288
|
-
console.log(chalk.gray(" Generating key pair + registering on-chain...\n"));
|
|
289
|
-
}
|
|
290
|
-
const { privateKey, publicKey } = await adapter.setupApiKey(keyIndex);
|
|
291
|
-
// Auto-save to .env
|
|
292
|
-
setEnvVar("LIGHTER_API_KEY", privateKey);
|
|
293
|
-
setEnvVar("LIGHTER_ACCOUNT_INDEX", String(adapter.accountIndex));
|
|
294
|
-
setEnvVar("LIGHTER_API_KEY_INDEX", String(keyIndex));
|
|
295
|
-
if (isJson()) {
|
|
296
|
-
return printJson(jsonOk({
|
|
297
|
-
privateKey,
|
|
298
|
-
publicKey,
|
|
299
|
-
address: adapter.address,
|
|
300
|
-
accountIndex: adapter.accountIndex,
|
|
301
|
-
apiKeyIndex: keyIndex,
|
|
302
|
-
savedToEnv: true,
|
|
303
|
-
}));
|
|
304
|
-
}
|
|
305
|
-
console.log(chalk.green(" API Key Registered & saved to ~/.perp/.env\n"));
|
|
306
|
-
console.log(` ${chalk.bold("Private Key:")} ${privateKey}`);
|
|
307
|
-
console.log(` ${chalk.bold("Public Key:")} ${publicKey}`);
|
|
308
|
-
console.log(` ${chalk.bold("Account:")} ${adapter.accountIndex}`);
|
|
309
|
-
console.log();
|
|
310
|
-
});
|
|
234
|
+
// Legacy `manage setup-api-key` removed in v0.12 (Phase 2d) — superseded by
|
|
235
|
+
// the unified `wallet agent approve lighter` flow. The agent flow provides
|
|
236
|
+
// 3-tier signer routing, expiry tracking, free-slot picking, and AgentMeta
|
|
237
|
+
// persistence. The auto-setup path in LighterAdapter.init() remains as the
|
|
238
|
+
// env-key fallback for users who haven't run the unified command yet.
|
|
311
239
|
}
|
package/dist/commands/plan.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import type { ExchangeAdapter } from "../exchanges/index.js";
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function registerStrategyPlanCommands(parent: Command, getAdapter: () => Promise<ExchangeAdapter>, isJson: () => boolean): void;
|
package/dist/commands/plan.js
CHANGED
|
@@ -2,8 +2,8 @@ import { readFileSync } from "fs";
|
|
|
2
2
|
import { printJson, jsonOk, jsonError, withJsonErrors } from "../utils.js";
|
|
3
3
|
import { validatePlan, executePlan } from "../plan-executor.js";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
-
export function
|
|
6
|
-
const plan =
|
|
5
|
+
export function registerStrategyPlanCommands(parent, getAdapter, isJson) {
|
|
6
|
+
const plan = parent.command("plan").description("Composite execution plans (multi-step atomic operations)");
|
|
7
7
|
// ── plan validate ──
|
|
8
8
|
plan
|
|
9
9
|
.command("validate <file>")
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Unified `perp portfolio` command — replaces:
|
|
3
|
+
* - `perp account balance` (single-exchange detail) → `perp portfolio -e <ex>`
|
|
4
|
+
* - prior `perp portfolio` → `perp portfolio` (rebuilt)
|
|
5
|
+
* - `perp status` → `perp portfolio --arb`
|
|
6
|
+
* - `perp status --health` → `perp portfolio --health`
|
|
7
|
+
* - `perp dashboard` → `perp portfolio --serve`
|
|
8
|
+
*
|
|
9
|
+
* Modes (mutually exclusive, picked by flag):
|
|
10
|
+
* snapshot (default) | health | watch | serve
|
|
11
|
+
*
|
|
12
|
+
* I/O contract:
|
|
13
|
+
* - Text mode → human-friendly tables + side-by-side panels (status-like)
|
|
14
|
+
* - JSON mode → canonical envelope (see spec); arb / health / serve keys conditional
|
|
15
|
+
* - --stdin → read JSON args from stdin, overrides CLI flags
|
|
16
|
+
*/
|
|
17
|
+
import type { Command } from "commander";
|
|
18
|
+
import type { ExchangeAdapter } from "../exchanges/index.js";
|
|
19
|
+
export declare function registerPortfolioCommand(program: Command, getAdapterForExchange: (exchange: string) => Promise<ExchangeAdapter>, isJson: () => boolean, version: string, getHLAdapterForDex?: (dex: string) => Promise<ExchangeAdapter>): void;
|