perp-cli 0.12.15 → 0.14.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/README.md +278 -31
- package/dist/_stderr-filter.js +0 -1
- package/dist/agent-wallet/lighter-keystore.d.ts +11 -0
- package/dist/agent-wallet/lighter-keystore.js +92 -10
- package/dist/agent-wallet/passphrase.d.ts +1 -1
- package/dist/agent-wallet/passphrase.js +16 -3
- package/dist/agent-wallet/store.d.ts +37 -4
- package/dist/agent-wallet/store.js +132 -0
- package/dist/agent-wallet/venue-keystore.d.ts +14 -0
- package/dist/agent-wallet/venue-keystore.js +121 -0
- package/dist/api/public/hyperliquid.js +4 -4
- package/dist/api/public/lighter.js +5 -5
- package/dist/api/public/pacifica.d.ts +0 -1
- package/dist/api/public/pacifica.js +4 -13
- package/dist/api/public/urls.d.ts +9 -1
- package/dist/api/public/urls.js +35 -13
- package/dist/arb/file-lock.d.ts +11 -0
- package/dist/arb/file-lock.js +74 -0
- package/dist/arb/index.d.ts +2 -2
- package/dist/arb/index.js +2 -2
- package/dist/arb/pending-entry.d.ts +32 -0
- package/dist/arb/pending-entry.js +77 -0
- package/dist/arb/sizing.d.ts +6 -13
- package/dist/arb/sizing.js +12 -51
- package/dist/arb/state.d.ts +45 -12
- package/dist/arb/state.js +214 -42
- package/dist/arb/utils.d.ts +20 -6
- package/dist/arb/utils.js +43 -39
- package/dist/bot/conditions.d.ts +4 -4
- package/dist/bot/conditions.js +11 -6
- package/dist/bot/config.d.ts +17 -1
- package/dist/bot/config.js +48 -12
- package/dist/bot/engine.d.ts +61 -2
- package/dist/bot/engine.js +610 -144
- package/dist/bot/fill-size.d.ts +7 -0
- package/dist/bot/fill-size.js +18 -0
- package/dist/bot/index.d.ts +1 -1
- package/dist/bot/index.js +1 -1
- package/dist/bot/perp-order.d.ts +99 -0
- package/dist/bot/perp-order.js +299 -0
- package/dist/bot/presets.d.ts +7 -0
- package/dist/bot/presets.js +17 -0
- package/dist/bot/quarantine.d.ts +75 -0
- package/dist/bot/quarantine.js +190 -0
- package/dist/bot/quote-rules.d.ts +23 -0
- package/dist/bot/quote-rules.js +69 -0
- package/dist/bot/strategies/avellaneda-mm.d.ts +32 -2
- package/dist/bot/strategies/avellaneda-mm.js +72 -70
- package/dist/bot/strategies/basis-arb.js +2 -0
- package/dist/bot/strategies/dca-strategy.d.ts +2 -0
- package/dist/bot/strategies/dca-strategy.js +5 -0
- package/dist/bot/strategies/funding-arb-strategy.d.ts +43 -3
- package/dist/bot/strategies/funding-arb-strategy.js +571 -380
- package/dist/bot/strategies/funding-arb-utils.d.ts +48 -23
- package/dist/bot/strategies/funding-arb-utils.js +159 -195
- package/dist/bot/strategies/funding-arb-v2.d.ts +32 -0
- package/dist/bot/strategies/funding-arb-v2.js +258 -47
- package/dist/bot/strategies/funding-auto.js +215 -194
- package/dist/bot/strategies/spot-perp-arb-strategy.d.ts +14 -0
- package/dist/bot/strategies/spot-perp-arb-strategy.js +217 -50
- package/dist/bot/strategies/spot-perp-executor.d.ts +73 -19
- package/dist/bot/strategies/spot-perp-executor.js +319 -120
- package/dist/bot/strategies/spot-perp-state.d.ts +43 -0
- package/dist/bot/strategies/spot-perp-state.js +70 -0
- package/dist/bot/strategy-types.d.ts +6 -0
- package/dist/bot/tui/BotDashboard.d.ts +7 -2
- package/dist/bot/tui/BotDashboard.js +6 -3
- package/dist/bridge-engine.d.ts +120 -19
- package/dist/bridge-engine.js +710 -422
- package/dist/bridge-signers.d.ts +54 -0
- package/dist/bridge-signers.js +161 -0
- package/dist/cache.d.ts +4 -1
- package/dist/cache.js +11 -0
- package/dist/cli-flags.d.ts +50 -0
- package/dist/cli-flags.js +104 -0
- package/dist/cli-program.d.ts +35 -0
- package/dist/cli-program.js +286 -0
- package/dist/cli-spec.js +1 -1
- package/dist/client-id-tracker.js +11 -2
- package/dist/commands/account.d.ts +7 -1
- package/dist/commands/account.js +74 -84
- package/dist/commands/agent-import.d.ts +114 -0
- package/dist/commands/agent-import.js +794 -0
- package/dist/commands/agent.d.ts +232 -2
- package/dist/commands/agent.js +1858 -955
- package/dist/commands/alerts.d.ts +1 -0
- package/dist/commands/alerts.js +31 -28
- package/dist/commands/arb/index.d.ts +60 -1
- package/dist/commands/arb/index.js +381 -384
- package/dist/commands/arb-auto.d.ts +132 -4
- package/dist/commands/arb-auto.js +1474 -967
- package/dist/commands/arb.d.ts +3 -1
- package/dist/commands/arb.js +62 -30
- package/dist/commands/bot.js +127 -47
- package/dist/commands/bridge.d.ts +2 -1
- package/dist/commands/bridge.js +339 -192
- package/dist/commands/builder.d.ts +55 -0
- package/dist/commands/builder.js +387 -0
- package/dist/commands/funds-onchain.d.ts +32 -0
- package/dist/commands/funds-onchain.js +286 -0
- package/dist/commands/funds.d.ts +25 -0
- package/dist/commands/funds.js +939 -245
- package/dist/commands/history.js +72 -45
- package/dist/commands/init.d.ts +107 -15
- package/dist/commands/init.js +1116 -249
- package/dist/commands/jobs.d.ts +2 -1
- package/dist/commands/jobs.js +77 -15
- package/dist/commands/manage.js +136 -91
- package/dist/commands/market.d.ts +4 -1
- package/dist/commands/market.js +35 -32
- package/dist/commands/outcome.d.ts +10 -0
- package/dist/commands/outcome.js +396 -0
- package/dist/commands/plan.js +52 -12
- package/dist/commands/portfolio.d.ts +1 -0
- package/dist/commands/portfolio.js +60 -72
- package/dist/commands/rebalance.d.ts +2 -1
- package/dist/commands/rebalance.js +33 -43
- package/dist/commands/risk.js +46 -19
- package/dist/commands/settings.d.ts +1 -0
- package/dist/commands/settings.js +246 -51
- package/dist/commands/trade.d.ts +50 -0
- package/dist/commands/trade.js +1943 -695
- package/dist/commands/wallet.d.ts +30 -1
- package/dist/commands/wallet.js +316 -337
- package/dist/config.d.ts +60 -9
- package/dist/config.js +252 -82
- package/dist/constants.d.ts +29 -4
- package/dist/constants.js +62 -20
- package/dist/dashboard/server.d.ts +2 -0
- package/dist/dashboard/server.js +9 -6
- package/dist/dashboard/ui.js +6 -4
- package/dist/dashboard/ws-feeds.js +20 -8
- package/dist/dex-asset-map.js +5 -3
- package/dist/errors.d.ts +122 -0
- package/dist/errors.js +194 -0
- package/dist/event-stream.js +75 -19
- package/dist/evm-master-tx.d.ts +59 -0
- package/dist/evm-master-tx.js +154 -0
- package/dist/exchanges/adapter-network.d.ts +10 -0
- package/dist/exchanges/adapter-network.js +10 -0
- package/dist/exchanges/arcus/adapter.d.ts +196 -0
- package/dist/exchanges/arcus/adapter.js +1092 -0
- package/dist/exchanges/arcus/agent.d.ts +55 -0
- package/dist/exchanges/arcus/agent.js +188 -0
- package/dist/exchanges/arcus/client.d.ts +63 -0
- package/dist/exchanges/arcus/client.js +285 -0
- package/dist/exchanges/arcus/public.d.ts +65 -0
- package/dist/exchanges/arcus/public.js +138 -0
- package/dist/exchanges/arcus/signing.d.ts +176 -0
- package/dist/exchanges/arcus/signing.js +288 -0
- package/dist/exchanges/arcus/spot-chain.d.ts +60 -0
- package/dist/exchanges/arcus/spot-chain.js +241 -0
- package/dist/exchanges/arcus/spot-router.d.ts +177 -0
- package/dist/exchanges/arcus/spot-router.js +183 -0
- package/dist/exchanges/arcus/spot.d.ts +109 -0
- package/dist/exchanges/arcus/spot.js +645 -0
- package/dist/exchanges/aster-funds.d.ts +127 -0
- package/dist/exchanges/aster-funds.js +252 -0
- package/dist/exchanges/aster-nonce.d.ts +2 -0
- package/dist/exchanges/aster-nonce.js +107 -0
- package/dist/exchanges/aster-spot.d.ts +117 -0
- package/dist/exchanges/aster-spot.js +686 -0
- package/dist/exchanges/aster-typed-data.d.ts +133 -7
- package/dist/exchanges/aster-typed-data.js +121 -7
- package/dist/exchanges/aster.d.ts +219 -6
- package/dist/exchanges/aster.js +1023 -153
- package/dist/exchanges/builder-fee.d.ts +254 -0
- package/dist/exchanges/builder-fee.js +421 -0
- package/dist/exchanges/canonical-symbols.d.ts +32 -0
- package/dist/exchanges/canonical-symbols.js +96 -0
- package/dist/exchanges/capabilities.d.ts +7 -1
- package/dist/exchanges/capabilities.js +7 -0
- package/dist/exchanges/hl-signing.d.ts +165 -0
- package/dist/exchanges/hl-signing.js +158 -0
- package/dist/exchanges/hyperliquid-outcome.d.ts +211 -0
- package/dist/exchanges/hyperliquid-outcome.js +646 -0
- package/dist/exchanges/hyperliquid-spot.d.ts +44 -5
- package/dist/exchanges/hyperliquid-spot.js +308 -117
- package/dist/exchanges/hyperliquid.d.ts +462 -57
- package/dist/exchanges/hyperliquid.js +1575 -449
- package/dist/exchanges/index.d.ts +6 -0
- package/dist/exchanges/index.js +4 -0
- package/dist/exchanges/interface.d.ts +63 -10
- package/dist/exchanges/interface.js +18 -3
- package/dist/exchanges/ioc-outcome.d.ts +44 -0
- package/dist/exchanges/ioc-outcome.js +57 -0
- package/dist/exchanges/legacy-trading-v2.d.ts +39 -0
- package/dist/exchanges/legacy-trading-v2.js +940 -0
- package/dist/exchanges/lighter-public.d.ts +43 -0
- package/dist/exchanges/lighter-public.js +276 -0
- package/dist/exchanges/lighter-rh-deposit.d.ts +62 -0
- package/dist/exchanges/lighter-rh-deposit.js +185 -0
- package/dist/exchanges/lighter-signer.d.ts +123 -0
- package/dist/exchanges/lighter-signer.js +215 -0
- package/dist/exchanges/lighter-spot.d.ts +91 -13
- package/dist/exchanges/lighter-spot.js +595 -233
- package/dist/exchanges/lighter.d.ts +611 -39
- package/dist/exchanges/lighter.js +1890 -649
- package/dist/exchanges/ondo/adapter.d.ts +166 -0
- package/dist/exchanges/ondo/adapter.js +835 -0
- package/dist/exchanges/ondo/agent.d.ts +31 -0
- package/dist/exchanges/ondo/agent.js +101 -0
- package/dist/exchanges/ondo/client.d.ts +60 -0
- package/dist/exchanges/ondo/client.js +297 -0
- package/dist/exchanges/ondo/funds.d.ts +122 -0
- package/dist/exchanges/ondo/funds.js +290 -0
- package/dist/exchanges/ondo/public.d.ts +95 -0
- package/dist/exchanges/ondo/public.js +214 -0
- package/dist/exchanges/ondo/spot.d.ts +127 -0
- package/dist/exchanges/ondo/spot.js +392 -0
- package/dist/exchanges/outcome-interface.d.ts +140 -0
- package/dist/exchanges/outcome-interface.js +16 -0
- package/dist/exchanges/pacifica-spot.d.ts +83 -0
- package/dist/exchanges/pacifica-spot.js +324 -0
- package/dist/exchanges/pacifica-typed-data.d.ts +30 -13
- package/dist/exchanges/pacifica-typed-data.js +57 -9
- package/dist/exchanges/pacifica.d.ts +288 -4
- package/dist/exchanges/pacifica.js +1013 -76
- package/dist/exchanges/precision.d.ts +47 -0
- package/dist/exchanges/precision.js +209 -0
- package/dist/exchanges/qfex/adapter.d.ts +341 -0
- package/dist/exchanges/qfex/adapter.js +1383 -0
- package/dist/exchanges/qfex/agent.d.ts +58 -0
- package/dist/exchanges/qfex/agent.js +188 -0
- package/dist/exchanges/qfex/client.d.ts +54 -0
- package/dist/exchanges/qfex/client.js +138 -0
- package/dist/exchanges/qfex/errors.d.ts +70 -0
- package/dist/exchanges/qfex/errors.js +236 -0
- package/dist/exchanges/qfex/public.d.ts +122 -0
- package/dist/exchanges/qfex/public.js +268 -0
- package/dist/exchanges/qfex/signing.d.ts +160 -0
- package/dist/exchanges/qfex/signing.js +283 -0
- package/dist/exchanges/qfex/ws-transport.d.ts +294 -0
- package/dist/exchanges/qfex/ws-transport.js +798 -0
- package/dist/exchanges/rate-limiter.d.ts +12 -0
- package/dist/exchanges/rate-limiter.js +64 -0
- package/dist/exchanges/registry.d.ts +14 -2
- package/dist/exchanges/registry.js +20 -32
- package/dist/exchanges/slippage.d.ts +37 -0
- package/dist/exchanges/slippage.js +70 -0
- package/dist/exchanges/spot-factory.d.ts +166 -0
- package/dist/exchanges/spot-factory.js +431 -0
- package/dist/exchanges/spot-interface.d.ts +98 -4
- package/dist/exchanges/spot-interface.js +27 -1
- package/dist/exchanges/spot-result.d.ts +79 -0
- package/dist/exchanges/spot-result.js +273 -0
- package/dist/exchanges/trading-v2.d.ts +117 -0
- package/dist/exchanges/trading-v2.js +301 -0
- package/dist/exchanges/venue-types.d.ts +231 -0
- package/dist/exchanges/venue-types.js +87 -0
- package/dist/exchanges/venue.d.ts +211 -0
- package/dist/exchanges/venue.js +132 -0
- package/dist/exchanges/venues/arcus.d.ts +8 -0
- package/dist/exchanges/venues/arcus.js +109 -0
- package/dist/exchanges/venues/aster.d.ts +49 -0
- package/dist/exchanges/venues/aster.js +176 -0
- package/dist/exchanges/venues/create-helpers.d.ts +18 -0
- package/dist/exchanges/venues/create-helpers.js +199 -0
- package/dist/exchanges/venues/hyperliquid.d.ts +23 -0
- package/dist/exchanges/venues/hyperliquid.js +126 -0
- package/dist/exchanges/venues/index.d.ts +16 -0
- package/dist/exchanges/venues/index.js +26 -0
- package/dist/exchanges/venues/lighter-family.d.ts +92 -0
- package/dist/exchanges/venues/lighter-family.js +166 -0
- package/dist/exchanges/venues/lighter-rh.d.ts +7 -0
- package/dist/exchanges/venues/lighter-rh.js +58 -0
- package/dist/exchanges/venues/lighter.d.ts +6 -0
- package/dist/exchanges/venues/lighter.js +55 -0
- package/dist/exchanges/venues/ondo.d.ts +34 -0
- package/dist/exchanges/venues/ondo.js +140 -0
- package/dist/exchanges/venues/pacifica.d.ts +8 -0
- package/dist/exchanges/venues/pacifica.js +95 -0
- package/dist/exchanges/venues/qfex.d.ts +28 -0
- package/dist/exchanges/venues/qfex.js +132 -0
- package/dist/execution-log.js +10 -2
- package/dist/funding/legacy-public.d.ts +31 -0
- package/dist/funding/legacy-public.js +369 -0
- package/dist/funding/normalize.d.ts +28 -16
- package/dist/funding/normalize.js +61 -29
- package/dist/funding/rates.d.ts +46 -11
- package/dist/funding/rates.js +228 -277
- package/dist/guardrail/perp-guardrail.js +0 -0
- package/dist/index.js +157 -682
- package/dist/jobs.d.ts +84 -6
- package/dist/jobs.js +239 -41
- package/dist/landing.d.ts +14 -0
- package/dist/landing.js +36 -0
- package/dist/mcp-server.d.ts +14 -4
- package/dist/mcp-server.js +820 -402
- package/dist/mcp-trade-guard.d.ts +16 -0
- package/dist/mcp-trade-guard.js +59 -0
- package/dist/pacifica/client.d.ts +41 -10
- package/dist/pacifica/client.js +167 -63
- package/dist/pacifica/constants.d.ts +0 -1
- package/dist/pacifica/constants.js +0 -5
- package/dist/pacifica/deposit.d.ts +30 -3
- package/dist/pacifica/deposit.js +119 -2
- package/dist/pacifica/faucet.d.ts +29 -0
- package/dist/pacifica/faucet.js +100 -0
- package/dist/pacifica/sign-tx.d.ts +15 -0
- package/dist/pacifica/sign-tx.js +41 -0
- package/dist/pacifica/types/account.d.ts +28 -4
- package/dist/pacifica/types/lake.d.ts +20 -5
- package/dist/pacifica/types/lake.js +4 -0
- package/dist/pacifica/types/market.d.ts +5 -0
- package/dist/pacifica/types/order.d.ts +4 -1
- package/dist/pacifica/types/position.d.ts +9 -1
- package/dist/plan-executor.d.ts +10 -5
- package/dist/plan-executor.js +165 -54
- package/dist/position-history.js +13 -0
- package/dist/rebalance.d.ts +26 -2
- package/dist/rebalance.js +86 -7
- package/dist/relay-swap.d.ts +232 -0
- package/dist/relay-swap.js +630 -0
- package/dist/risk.js +5 -1
- package/dist/secret-env.d.ts +15 -0
- package/dist/secret-env.js +36 -0
- package/dist/settings.d.ts +169 -6
- package/dist/settings.js +219 -38
- package/dist/signer/ows-evm.d.ts +13 -0
- package/dist/signer/ows-evm.js +22 -0
- package/dist/smart-order.d.ts +9 -0
- package/dist/smart-order.js +53 -8
- package/dist/strategies/dca.d.ts +6 -2
- package/dist/strategies/dca.js +66 -26
- package/dist/strategies/funding-arb.d.ts +11 -1
- package/dist/strategies/funding-arb.js +202 -89
- package/dist/strategies/grid.d.ts +31 -0
- package/dist/strategies/grid.js +89 -11
- package/dist/strategies/pending-stop.d.ts +8 -0
- package/dist/strategies/pending-stop.js +12 -0
- package/dist/strategies/split-order.d.ts +45 -17
- package/dist/strategies/split-order.js +157 -91
- package/dist/strategies/trailing-stop.d.ts +2 -1
- package/dist/strategies/trailing-stop.js +52 -6
- package/dist/strategies/twap.d.ts +6 -1
- package/dist/strategies/twap.js +39 -11
- package/dist/trade-validator.d.ts +22 -0
- package/dist/trade-validator.js +119 -15
- package/dist/utils/numeric.d.ts +46 -0
- package/dist/utils/numeric.js +79 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.js +96 -19
- package/dist/withdraw-gate.d.ts +49 -0
- package/dist/withdraw-gate.js +131 -0
- package/package.json +15 -6
- package/skills/perp-cli/SKILL.md +338 -134
- package/skills/perp-cli/references/agent-operations.md +181 -92
- package/skills/perp-cli/references/commands.md +475 -132
- package/skills/perp-cli/references/strategies.md +44 -38
- package/skills/perp-cli/scripts/arb-monitor.sh +22 -17
- package/skills/perp-cli/scripts/funding-analysis.sh +20 -10
- package/skills/perp-cli/scripts/preflight.sh +21 -14
- package/skills/perp-cli/scripts/spot-perp-scan.sh +12 -7
- package/skills/perp-cli/scripts/validate-arb.sh +33 -16
- package/vendor/lighter-signer/SHA256SUMS +2 -0
- package/vendor/lighter-signer/VERSION +8 -0
- package/vendor/lighter-signer/lighter-signer.wasm +0 -0
- package/vendor/lighter-signer/wasm_exec.js +575 -0
- package/dist/bot/strategies/funding-arb-v2-strategy.d.ts +0 -42
- package/dist/bot/strategies/funding-arb-v2-strategy.js +0 -864
package/dist/commands/agent.d.ts
CHANGED
|
@@ -1,4 +1,168 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
1
|
+
import { Command, Option } from "commander";
|
|
2
|
+
import { loadSettings, type OndoAgentMeta, type ArcusAgentMeta, type QfexAgentMeta } from "../settings.js";
|
|
3
|
+
import "../exchanges/venues/index.js";
|
|
4
|
+
import type { Network, VenueId } from "../exchanges/venue-types.js";
|
|
5
|
+
import { type LighterVenueId } from "../exchanges/venues/lighter-family.js";
|
|
6
|
+
import { OwsSolanaSigner } from "../signer/ows-solana.js";
|
|
7
|
+
/**
|
|
8
|
+
* Subcommand `--passphrase <pp>`: still accepted (existing scripts) but deprecated like the root
|
|
9
|
+
* flag — hidden from help, and a stderr warning when it was given on the command line (it is
|
|
10
|
+
* visible in ps / shell history). Use with `.hook("preAction", warnDeprecatedPassphrase)`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function deprecatedPassphraseOption(what?: string, flags?: string): Option;
|
|
13
|
+
export declare const ARGV_PASSPHRASE_WARNING = "[warn] --passphrase on the command line is DEPRECATED and visible in ps / shell history. Use the OWS_PASSPHRASE env var or pipe it on stdin.\n";
|
|
14
|
+
/** preAction hook paired with deprecatedPassphraseOption(): warns once per command run. */
|
|
15
|
+
export declare function warnDeprecatedPassphrase(cmd: Command): void;
|
|
16
|
+
export declare function isLighterFamilyVenue(v: VenueId): v is LighterVenueId;
|
|
17
|
+
/** Validate an explicit Lighter-family API key slot: 4..254, minus venue-reserved indexes. */
|
|
18
|
+
export declare function assertLighterSlot(venue: LighterVenueId, n: number): void;
|
|
19
|
+
/** Read one line from a TTY without echo (raw mode). */
|
|
20
|
+
export declare function promptHidden(question: string): Promise<string>;
|
|
21
|
+
export interface VerifyResult {
|
|
22
|
+
registered: boolean;
|
|
23
|
+
count: number;
|
|
24
|
+
items: unknown[];
|
|
25
|
+
warnings?: string[];
|
|
26
|
+
}
|
|
27
|
+
/** Extract the agent list from a Pacifica /agent/list envelope; throws on an unrecognized shape. */
|
|
28
|
+
export declare function parsePacAgentList(json: unknown): unknown[];
|
|
29
|
+
/**
|
|
30
|
+
* Confirmation of the account a QFEX key was resolved to (design §14.12 #9). In a terminal: a
|
|
31
|
+
* y/N prompt showing the UUID. Without one (piped stdin, --json): only an explicit --account-id
|
|
32
|
+
* that equals the resolved account counts — the resolved UUID is printed on stderr either way.
|
|
33
|
+
*/
|
|
34
|
+
export declare function confirmImportAccount(explicitAccountId: string | null, json: boolean): (binding: {
|
|
35
|
+
accountId: string;
|
|
36
|
+
isPrimaryAccount: boolean;
|
|
37
|
+
method: string;
|
|
38
|
+
}) => Promise<boolean>;
|
|
39
|
+
/** Agent-management operation gated per venue/network. */
|
|
40
|
+
export type AgentOp = "approve" | "revoke" | "rotate";
|
|
41
|
+
/**
|
|
42
|
+
* Why agent `op` cannot run for `venue` on `network`; null when it can. Every
|
|
43
|
+
* other venue resolves endpoints / signing chain from the selected network
|
|
44
|
+
* (venue definition) — never a mainnet fallback.
|
|
45
|
+
*
|
|
46
|
+
* Aster testnet: approve uses POST /fapi/v3/registerAndApproveAgent, documented
|
|
47
|
+
* for testnet (asterdex/api-docs V3 aster-finance-futures-api-testnet.md,
|
|
48
|
+
* 2026-05-12). Revoke / rotate need the master-signed DelAgent (AsterChain,
|
|
49
|
+
* Domain A) flow, which the testnet docs do not document.
|
|
50
|
+
*/
|
|
51
|
+
export declare function agentApproveUnsupportedReason(venue: VenueId, network: Network, op: AgentOp): string | null;
|
|
52
|
+
/** Throws the uniform CAPABILITY_UNSUPPORTED error when agentApproveUnsupportedReason() is non-null. */
|
|
53
|
+
export declare function assertAgentApproveSupported(venue: VenueId, network: Network, op: AgentOp): void;
|
|
54
|
+
/** Default agent name per venue and network (the `--agent-name` default of `wallet agent approve`). */
|
|
55
|
+
export declare function defaultAgentName(venue: VenueId, network: Network): string;
|
|
56
|
+
export interface ApproveAgentParams {
|
|
57
|
+
venue: VenueId;
|
|
58
|
+
network: Network;
|
|
59
|
+
/** Master OWS wallet; null → settings.owsActiveWallet. Unused for Ondo. */
|
|
60
|
+
master: string | null;
|
|
61
|
+
/** null → defaultAgentName(venue). */
|
|
62
|
+
agentName: string | null;
|
|
63
|
+
/** 30d, 90d, 180d, 1y, or ISO-8601 datetime. */
|
|
64
|
+
expiresIn: string;
|
|
65
|
+
canPerp: boolean;
|
|
66
|
+
canSpot: boolean;
|
|
67
|
+
canWithdraw: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Replace an existing agent of the same name. Ondo / Arcus: re-register in place;
|
|
70
|
+
* Pacifica / Hyperliquid / Aster: the `wallet agent rotate` path (rotateVenueAgent).
|
|
71
|
+
*/
|
|
72
|
+
rotate: boolean;
|
|
73
|
+
/** Resolved master passphrase. null → PASSPHRASE_REQUIRED for every venue except Ondo / Arcus. */
|
|
74
|
+
passphrase: string | null;
|
|
75
|
+
/** Lighter / Lighter RH slot; null → next free slot (free locally AND on-chain). */
|
|
76
|
+
apiKeyIndex: number | null;
|
|
77
|
+
/** Lighter / Lighter RH: allow an explicit apiKeyIndex whose slot already holds an on-chain key (`--force`). */
|
|
78
|
+
forceSlot: boolean;
|
|
79
|
+
/** Arcus subaccount: 0-9, or 255 for all. */
|
|
80
|
+
accountIndex: number;
|
|
81
|
+
/** Aster-only IP whitelist. (Builder approval: `perp wallet builder approve aster`.) */
|
|
82
|
+
aster: {
|
|
83
|
+
ipWhitelist?: string;
|
|
84
|
+
};
|
|
85
|
+
/** Ondo key id + secret; null → read from stdin (TTY prompt, or 2 piped lines). Never a flag. */
|
|
86
|
+
ondoKey: {
|
|
87
|
+
keyId: string;
|
|
88
|
+
secret: string;
|
|
89
|
+
} | null;
|
|
90
|
+
}
|
|
91
|
+
export type ApproveAgentOutcome = {
|
|
92
|
+
venue: "ondo";
|
|
93
|
+
meta: OndoAgentMeta;
|
|
94
|
+
} | {
|
|
95
|
+
venue: "arcus";
|
|
96
|
+
meta: ArcusAgentMeta;
|
|
97
|
+
} | {
|
|
98
|
+
venue: LighterVenueId;
|
|
99
|
+
agentName: string;
|
|
100
|
+
expiresAt: string;
|
|
101
|
+
result: LtApproveFlowResult;
|
|
102
|
+
} | {
|
|
103
|
+
venue: "pacifica";
|
|
104
|
+
agentName: string;
|
|
105
|
+
expiresAt: string;
|
|
106
|
+
result: PacApproveFlowResult;
|
|
107
|
+
} | {
|
|
108
|
+
venue: "hyperliquid";
|
|
109
|
+
agentName: string;
|
|
110
|
+
expiresAt: string;
|
|
111
|
+
result: HlApproveFlowResult;
|
|
112
|
+
} | {
|
|
113
|
+
venue: "aster";
|
|
114
|
+
agentName: string;
|
|
115
|
+
expiresAt: string;
|
|
116
|
+
result: ApproveFlowResult;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Register one agent wallet / API key on `venue`. Throws on any failure (the
|
|
120
|
+
* caller decides whether to exit or continue with other venues). Holds the
|
|
121
|
+
* per-venue lock for the duration of the venue round-trip.
|
|
122
|
+
*/
|
|
123
|
+
export declare function approveVenueAgent(p: ApproveAgentParams): Promise<ApproveAgentOutcome>;
|
|
124
|
+
/**
|
|
125
|
+
* Loud warning for a QFEX key that has — or may have (it cannot be checked without acting) — the
|
|
126
|
+
* "Deposit and withdraw" permission. Such a key can withdraw with the key alone, and imported keys
|
|
127
|
+
* are stored with an empty passphrase (file permissions only). Not a block: a funding key is needed
|
|
128
|
+
* for a QFEX withdrawal. Shown at import and in `wallet agent list`. null = no warning.
|
|
129
|
+
*/
|
|
130
|
+
export declare function qfexWithdrawKeyWarning(meta: Pick<QfexAgentMeta, "agentName" | "permissions">): string | null;
|
|
131
|
+
/** Venues `wallet agent rotate` (and `approve --rotate`) can rotate. */
|
|
132
|
+
type RotatableVenue = "aster" | "hyperliquid" | "pacifica" | LighterVenueId;
|
|
133
|
+
type RotatedAgentOutcome = Exclude<ApproveAgentOutcome, {
|
|
134
|
+
venue: "ondo" | "arcus";
|
|
135
|
+
}>;
|
|
136
|
+
export interface RotateAgentParams {
|
|
137
|
+
exchange: RotatableVenue;
|
|
138
|
+
network: Network;
|
|
139
|
+
agentNameToRotate: string;
|
|
140
|
+
/** null → the old agent's master, then settings.owsActiveWallet. */
|
|
141
|
+
master: string | null;
|
|
142
|
+
/** Resolved lazily, after the record / master checks (null → PASSPHRASE_REQUIRED). */
|
|
143
|
+
passphrase: () => Promise<string | null>;
|
|
144
|
+
expiresIn: string;
|
|
145
|
+
/** Both undefined → inherit the old agent's trade permissions. */
|
|
146
|
+
canPerp: boolean | undefined;
|
|
147
|
+
canSpot: boolean | undefined;
|
|
148
|
+
/** Never inherited: true only when --can-withdraw was passed explicitly (Aster: needs ipWhitelist). */
|
|
149
|
+
canWithdraw: boolean | undefined;
|
|
150
|
+
/** Aster-only IP whitelist. */
|
|
151
|
+
ipWhitelist: string | undefined;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Rotate an agent: venue-confirmed revoke of the existing agent (when one is recorded), delete
|
|
155
|
+
* its dead OWS wallet and local record, then approve a fresh agent under the same name. The single
|
|
156
|
+
* path of `wallet agent rotate` and `wallet agent approve --rotate`.
|
|
157
|
+
*/
|
|
158
|
+
export declare function rotateVenueAgent(p: RotateAgentParams): Promise<RotatedAgentOutcome>;
|
|
159
|
+
/** Live (read-only) registration check for `venue` — `wallet agent verify <venue>`. */
|
|
160
|
+
export declare function verifyVenueAgent(venue: VenueId, network: Network, opts: {
|
|
161
|
+
master: string | null;
|
|
162
|
+
passphrase: string;
|
|
163
|
+
}): Promise<VerifyResult>;
|
|
164
|
+
/** Human-readable summary of a successful approve (no secrets — public ids/addresses only). */
|
|
165
|
+
export declare function printApproveOutcome(outcome: ApproveAgentOutcome): void;
|
|
2
166
|
/**
|
|
3
167
|
* Register the per-DEX agent-wallet management subtree (`approve` /
|
|
4
168
|
* `list` / `revoke` / `rotate` / `verify`) under the supplied parent
|
|
@@ -7,6 +171,34 @@ import { Command } from "commander";
|
|
|
7
171
|
* relocates it to `wallet agent ...`.
|
|
8
172
|
*/
|
|
9
173
|
export declare function registerWalletAgentCommands(walletCmd: Command, isJson: () => boolean): void;
|
|
174
|
+
export interface ApproveFlowResult {
|
|
175
|
+
agentAddress: `0x${string}`;
|
|
176
|
+
agentName: string;
|
|
177
|
+
expiresAt: string;
|
|
178
|
+
owsApiKeyId: string;
|
|
179
|
+
policyId: string;
|
|
180
|
+
asterApprovalNonce: string;
|
|
181
|
+
userEvmAddress: `0x${string}`;
|
|
182
|
+
}
|
|
183
|
+
/** Aster: an API wallet with withdraw permission must carry an IP whitelist (pre-flight, nothing signed). */
|
|
184
|
+
export declare function assertAsterWithdrawIpWhitelist(canWithdraw: boolean, ipWhitelist: string | undefined): void;
|
|
185
|
+
/**
|
|
186
|
+
* Normalize the `--ip-whitelist` flag (comma- or space-separated) to the
|
|
187
|
+
* space-delimited form registerAndApproveAgent signs; "" when absent.
|
|
188
|
+
*/
|
|
189
|
+
export declare function asterSpaceIpWhitelist(raw: string | undefined): string;
|
|
190
|
+
/**
|
|
191
|
+
* Parse an expires-in string to a Date.
|
|
192
|
+
* Accepts: "30d", "90d", "180d", "1y", or any ISO-8601 datetime string.
|
|
193
|
+
* Throws if malformed.
|
|
194
|
+
*/
|
|
195
|
+
export declare function parseExpiresIn(value: string): Date;
|
|
196
|
+
export interface HlApproveFlowResult {
|
|
197
|
+
agentAddress: `0x${string}`;
|
|
198
|
+
agentName: string;
|
|
199
|
+
expiresAt: string;
|
|
200
|
+
userEvmAddress: `0x${string}`;
|
|
201
|
+
}
|
|
10
202
|
/** Public abstraction modes (CLI surface) → HL on-wire string. */
|
|
11
203
|
declare const HL_ABSTRACTION_TO_WIRE: {
|
|
12
204
|
readonly unified: "unifiedAccount";
|
|
@@ -32,7 +224,7 @@ interface HlSetAbstractionFlowResult {
|
|
|
32
224
|
* Send a Hyperliquid `userSetAbstraction` action.
|
|
33
225
|
*
|
|
34
226
|
* Reuses the same EIP-712 user-signed domain (`HyperliquidSignTransaction`,
|
|
35
|
-
*
|
|
227
|
+
* per-network signatureChainId) and `OwsEvmSigner.signTypedData` plumbing as
|
|
36
228
|
* `runHlApproveFlow`; the only differences are the type struct
|
|
37
229
|
* (`UserSetAbstraction` vs `ApproveAgent`) and the action payload.
|
|
38
230
|
*
|
|
@@ -40,4 +232,42 @@ interface HlSetAbstractionFlowResult {
|
|
|
40
232
|
* failure (Rule #2: no fallback, no silent retry).
|
|
41
233
|
*/
|
|
42
234
|
export declare function runHlSetAbstractionFlow(opts: HlSetAbstractionFlowOpts): Promise<HlSetAbstractionFlowResult>;
|
|
235
|
+
export interface PacApproveFlowResult {
|
|
236
|
+
agentSolanaAddress: string;
|
|
237
|
+
userSolanaAddress: string;
|
|
238
|
+
agentName: string;
|
|
239
|
+
expiresAt: string;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Revoke a Pacifica agent wallet.
|
|
243
|
+
*
|
|
244
|
+
* Endpoint + operation type follow the official Pacifica SDK
|
|
245
|
+
* (`rest/api_agent_keys_detailed.py`): `revoke_agent_wallet` → POST
|
|
246
|
+
* /agent/revoke. A missing agent address is refused (it must never widen into
|
|
247
|
+
* `revoke_all_agent_wallets`, which would also kill agents this CLI does not own).
|
|
248
|
+
*
|
|
249
|
+
* Rule #2: this THROWS on a rejected revoke. It previously POSTed an
|
|
250
|
+
* `unbind_agent_wallet` type to /agent/bind — neither of which Pacifica
|
|
251
|
+
* exposes — and discarded the response entirely, so a refused revoke was
|
|
252
|
+
* reported to the user as success while the agent key stayed authorized to
|
|
253
|
+
* trade. Callers that genuinely want best-effort must catch explicitly.
|
|
254
|
+
*/
|
|
255
|
+
export declare function revokePacAgent(masterSigner: OwsSolanaSigner, agentSolanaAddress: string | null, network: Network): Promise<void>;
|
|
256
|
+
export interface LtApproveFlowResult {
|
|
257
|
+
apiKeyIndex: number;
|
|
258
|
+
publicKey: string;
|
|
259
|
+
accountIndex: number;
|
|
260
|
+
agentName: string;
|
|
261
|
+
expiresAt: string;
|
|
262
|
+
userEvmAddress: `0x${string}`;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Pick the first free Lighter slot in [5, 254].
|
|
266
|
+
*
|
|
267
|
+
* A slot is used when any local agent record (any network — conservative) holds it,
|
|
268
|
+
* when the venue reserves it, or when the account's on-chain key list shows a key on
|
|
269
|
+
* it (`onChainOccupied`) — an auto pick must never overwrite a key some other client
|
|
270
|
+
* (web app, another machine) is using.
|
|
271
|
+
*/
|
|
272
|
+
export declare function pickNextFreeLtSlot(settings: ReturnType<typeof loadSettings>, venue: LighterVenueId, onChainOccupied: ReadonlySet<number>): number;
|
|
43
273
|
export {};
|