perp-cli 0.9.8 → 0.12.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 +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/bot/engine.js +23 -4
- package/dist/bot/presets.js +3 -3
- package/dist/bot/strategies/funding-arb-strategy.d.ts +0 -23
- package/dist/bot/strategies/funding-arb-strategy.js +41 -176
- package/dist/bot/strategies/funding-auto.js +2 -2
- 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 +20 -16
- 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 +1122 -176
- package/dist/config.d.ts +9 -0
- package/dist/config.js +55 -9
- 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 +88 -34
- package/dist/exchanges/lighter-spot.js +19 -5
- package/dist/exchanges/lighter.d.ts +66 -0
- package/dist/exchanges/lighter.js +213 -31
- 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/contracts.d.ts +14 -0
- package/dist/guardrail/contracts.js +72 -0
- package/dist/guardrail/perp-guardrail.d.ts +21 -0
- package/dist/guardrail/perp-guardrail.js +145 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +307 -362
- package/dist/jobs.js +3 -1
- package/dist/mcp-server.js +92 -88
- package/dist/position-history.js +47 -4
- package/dist/settings.d.ts +69 -3
- package/dist/settings.js +3 -2
- package/dist/signer/index.d.ts +2 -0
- package/dist/signer/index.js +2 -0
- package/dist/signer/ows-evm.d.ts +32 -0
- package/dist/signer/ows-evm.js +86 -0
- package/dist/signer/ows-loader.d.ts +2 -0
- package/dist/signer/ows-loader.js +6 -0
- package/dist/signer/ows-solana.d.ts +25 -0
- package/dist/signer/ows-solana.js +56 -0
- 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 +4 -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/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
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { printJson, formatUsd, jsonOk } from "../utils.js";
|
|
3
|
-
import { PacificaAdapter } from "../exchanges/pacifica.js";
|
|
4
|
-
import { HyperliquidAdapter } from "../exchanges/hyperliquid.js";
|
|
5
|
-
import { logExecution } from "../execution-log.js";
|
|
6
|
-
export function registerWithdrawCommands(program, getAdapter, isJson) {
|
|
7
|
-
const withdraw = program.command("withdraw").description("Withdraw funds from exchange accounts");
|
|
8
|
-
// ── Pacifica ──
|
|
9
|
-
withdraw
|
|
10
|
-
.command("pacifica <amount>")
|
|
11
|
-
.description("Withdraw USDC from Pacifica to your Solana wallet")
|
|
12
|
-
.option("--to <address>", "Destination Solana address (default: your wallet)")
|
|
13
|
-
.action(async (amount, opts) => {
|
|
14
|
-
const amountNum = parseFloat(amount);
|
|
15
|
-
if (isNaN(amountNum) || amountNum <= 0)
|
|
16
|
-
throw new Error("Invalid amount");
|
|
17
|
-
const adapter = await getAdapter();
|
|
18
|
-
if (!(adapter instanceof PacificaAdapter))
|
|
19
|
-
throw new Error("Requires --exchange pacifica");
|
|
20
|
-
const dest = opts.to || adapter.publicKey;
|
|
21
|
-
if (!isJson()) {
|
|
22
|
-
console.log(chalk.cyan(`\n Withdrawing $${formatUsd(amountNum)} USDC from Pacifica...\n`));
|
|
23
|
-
console.log(` Destination: ${dest}`);
|
|
24
|
-
}
|
|
25
|
-
try {
|
|
26
|
-
const result = await adapter.sdk.withdraw({ amount: String(amountNum), dest_address: dest }, adapter.publicKey, adapter.signer);
|
|
27
|
-
logExecution({
|
|
28
|
-
type: "bridge", exchange: "pacifica", symbol: "USDC", side: "withdraw",
|
|
29
|
-
size: String(amountNum), status: "success", dryRun: false,
|
|
30
|
-
meta: { action: "withdraw", destination: dest },
|
|
31
|
-
});
|
|
32
|
-
if (isJson())
|
|
33
|
-
return printJson(jsonOk(result));
|
|
34
|
-
console.log(chalk.green(`\n Withdrawal submitted!`));
|
|
35
|
-
console.log(` Amount: $${formatUsd(amountNum)} USDC`);
|
|
36
|
-
console.log(chalk.gray(`\n Funds arrive in your Solana wallet shortly.\n`));
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
logExecution({
|
|
40
|
-
type: "bridge", exchange: "pacifica", symbol: "USDC", side: "withdraw",
|
|
41
|
-
size: String(amountNum), status: "failed", dryRun: false,
|
|
42
|
-
error: err instanceof Error ? err.message : String(err),
|
|
43
|
-
meta: { action: "withdraw", destination: dest },
|
|
44
|
-
});
|
|
45
|
-
throw err;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
// ── Hyperliquid ──
|
|
49
|
-
withdraw
|
|
50
|
-
.command("hyperliquid <amount>")
|
|
51
|
-
.description("Withdraw USDC from Hyperliquid to your Arbitrum wallet")
|
|
52
|
-
.option("--to <address>", "Destination EVM address (default: your wallet)")
|
|
53
|
-
.action(async (amount, opts) => {
|
|
54
|
-
const amountNum = parseFloat(amount);
|
|
55
|
-
if (isNaN(amountNum) || amountNum <= 0)
|
|
56
|
-
throw new Error("Invalid amount");
|
|
57
|
-
const adapter = await getAdapter();
|
|
58
|
-
if (!(adapter instanceof HyperliquidAdapter))
|
|
59
|
-
throw new Error("Requires --exchange hyperliquid");
|
|
60
|
-
const dest = opts.to || adapter.address;
|
|
61
|
-
if (!isJson()) {
|
|
62
|
-
console.log(chalk.cyan(`\n Withdrawing $${formatUsd(amountNum)} USDC from Hyperliquid...\n`));
|
|
63
|
-
console.log(` Destination: ${dest}`);
|
|
64
|
-
}
|
|
65
|
-
// Check withdrawable balance
|
|
66
|
-
const balance = await adapter.getBalance();
|
|
67
|
-
const available = Number(balance.available);
|
|
68
|
-
if (amountNum > available) {
|
|
69
|
-
console.error(chalk.red(` Insufficient withdrawable balance. Available: $${formatUsd(available)}`));
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
const result = await adapter.withdraw(String(amountNum), dest);
|
|
74
|
-
logExecution({
|
|
75
|
-
type: "bridge", exchange: "hyperliquid", symbol: "USDC", side: "withdraw",
|
|
76
|
-
size: String(amountNum), status: "success", dryRun: false,
|
|
77
|
-
meta: { action: "withdraw", destination: dest },
|
|
78
|
-
});
|
|
79
|
-
if (isJson())
|
|
80
|
-
return printJson(jsonOk(result));
|
|
81
|
-
console.log(chalk.green(`\n Withdrawal submitted!`));
|
|
82
|
-
console.log(` Amount: $${formatUsd(amountNum)} USDC`);
|
|
83
|
-
console.log(chalk.gray(`\n Processing may take a few minutes.\n`));
|
|
84
|
-
}
|
|
85
|
-
catch (err) {
|
|
86
|
-
logExecution({
|
|
87
|
-
type: "bridge", exchange: "hyperliquid", symbol: "USDC", side: "withdraw",
|
|
88
|
-
size: String(amountNum), status: "failed", dryRun: false,
|
|
89
|
-
error: err instanceof Error ? err.message : String(err),
|
|
90
|
-
meta: { action: "withdraw", destination: dest },
|
|
91
|
-
});
|
|
92
|
-
throw err;
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
// ── Lighter ──
|
|
96
|
-
withdraw
|
|
97
|
-
.command("lighter <amount>")
|
|
98
|
-
.description("Withdraw USDC from Lighter to your Ethereum L1 wallet")
|
|
99
|
-
.option("--asset-id <id>", "Asset ID (default: 2 = USDC)", "2")
|
|
100
|
-
.option("--route <type>", "Route type: 0=perp, 1=spot (default: 0)", "0")
|
|
101
|
-
.action(async (amount, opts) => {
|
|
102
|
-
const amountNum = parseFloat(amount);
|
|
103
|
-
if (isNaN(amountNum) || amountNum <= 0)
|
|
104
|
-
throw new Error("Invalid amount");
|
|
105
|
-
const adapter = await getAdapter();
|
|
106
|
-
// Lazy-import to check instance
|
|
107
|
-
const { LighterAdapter } = await import("../exchanges/lighter.js");
|
|
108
|
-
if (!(adapter instanceof LighterAdapter))
|
|
109
|
-
throw new Error("Requires --exchange lighter");
|
|
110
|
-
if (!isJson()) {
|
|
111
|
-
console.log(chalk.cyan(`\n Withdrawing $${formatUsd(amountNum)} USDC from Lighter...\n`));
|
|
112
|
-
console.log(` Account Index: ${adapter.accountIndex}`);
|
|
113
|
-
console.log(` Address: ${adapter.address}`);
|
|
114
|
-
}
|
|
115
|
-
try {
|
|
116
|
-
const result = await adapter.withdraw(amountNum, parseInt(opts.assetId), parseInt(opts.route));
|
|
117
|
-
logExecution({
|
|
118
|
-
type: "bridge", exchange: "lighter", symbol: "USDC", side: "withdraw",
|
|
119
|
-
size: String(amountNum), status: "success", dryRun: false,
|
|
120
|
-
meta: { action: "withdraw" },
|
|
121
|
-
});
|
|
122
|
-
if (isJson())
|
|
123
|
-
return printJson(jsonOk(result));
|
|
124
|
-
console.log(chalk.green(`\n Withdrawal submitted!`));
|
|
125
|
-
console.log(` Amount: $${formatUsd(amountNum)} USDC`);
|
|
126
|
-
console.log(chalk.gray(`\n Standard withdrawal takes ~12 hours. Use Lighter web for fast withdrawal.\n`));
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
logExecution({
|
|
130
|
-
type: "bridge", exchange: "lighter", symbol: "USDC", side: "withdraw",
|
|
131
|
-
size: String(amountNum), status: "failed", dryRun: false,
|
|
132
|
-
error: err instanceof Error ? err.message : String(err),
|
|
133
|
-
meta: { action: "withdraw" },
|
|
134
|
-
});
|
|
135
|
-
throw err;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
// ── Transfer (HL internal) ──
|
|
139
|
-
withdraw
|
|
140
|
-
.command("transfer <amount> <destination>")
|
|
141
|
-
.description("Transfer USDC between Hyperliquid accounts (internal, instant)")
|
|
142
|
-
.action(async (amount, destination) => {
|
|
143
|
-
const amountNum = parseFloat(amount);
|
|
144
|
-
if (isNaN(amountNum) || amountNum <= 0)
|
|
145
|
-
throw new Error("Invalid amount");
|
|
146
|
-
const adapter = await getAdapter();
|
|
147
|
-
if (!(adapter instanceof HyperliquidAdapter))
|
|
148
|
-
throw new Error("Requires --exchange hyperliquid");
|
|
149
|
-
if (!isJson())
|
|
150
|
-
console.log(chalk.cyan(`\n Transferring $${formatUsd(amountNum)} USDC to ${destination}...\n`));
|
|
151
|
-
const result = await adapter.usdTransfer(amountNum, destination);
|
|
152
|
-
if (isJson())
|
|
153
|
-
return printJson(jsonOk(result));
|
|
154
|
-
console.log(chalk.green(` Transfer complete!`));
|
|
155
|
-
console.log(` Amount: $${formatUsd(amountNum)} USDC`);
|
|
156
|
-
console.log(` To: ${destination}\n`);
|
|
157
|
-
});
|
|
158
|
-
// ── Info ──
|
|
159
|
-
withdraw
|
|
160
|
-
.command("info")
|
|
161
|
-
.description("Show withdrawal info & limits")
|
|
162
|
-
.action(async () => {
|
|
163
|
-
if (isJson()) {
|
|
164
|
-
return printJson(jsonOk({
|
|
165
|
-
exchanges: {
|
|
166
|
-
pacifica: { chain: "Solana", token: "USDC", speed: "~10s", fee: "none" },
|
|
167
|
-
hyperliquid: { chain: "Arbitrum", token: "USDC", speed: "minutes", fee: "$1" },
|
|
168
|
-
lighter: { chain: "Ethereum L1", token: "USDC", speed: "~12 hours (standard), minutes (fast)", fee: "varies" },
|
|
169
|
-
},
|
|
170
|
-
}));
|
|
171
|
-
}
|
|
172
|
-
console.log(chalk.cyan.bold("\n Withdrawal Info\n"));
|
|
173
|
-
console.log(chalk.white.bold(" Pacifica") + chalk.gray(" → Solana"));
|
|
174
|
-
console.log(` Speed: ~10s | Fee: none`);
|
|
175
|
-
console.log(` Command: ${chalk.green("perp withdraw pacifica <amount>")}`);
|
|
176
|
-
console.log(chalk.white.bold("\n Hyperliquid") + chalk.gray(" → Arbitrum"));
|
|
177
|
-
console.log(` Speed: minutes | Fee: ~$1`);
|
|
178
|
-
console.log(` Command: ${chalk.green("perp -e hyperliquid withdraw hyperliquid <amount>")}`);
|
|
179
|
-
console.log(chalk.white.bold("\n Lighter") + chalk.gray(" → Ethereum L1"));
|
|
180
|
-
console.log(` Speed: ~12h (standard) | Fee: varies`);
|
|
181
|
-
console.log(` Command: ${chalk.green("perp -e lighter withdraw lighter <amount>")}`);
|
|
182
|
-
console.log(chalk.white.bold("\n Internal Transfer") + chalk.gray(" (Hyperliquid → Hyperliquid)"));
|
|
183
|
-
console.log(` Speed: instant | Fee: none`);
|
|
184
|
-
console.log(` Command: ${chalk.green("perp -e hyperliquid withdraw transfer <amount> <address>")}`);
|
|
185
|
-
console.log();
|
|
186
|
-
});
|
|
187
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* edgeX DEX adapter — StarkEx-based perpetual futures exchange.
|
|
3
|
-
* Base: https://pro.edgex.exchange
|
|
4
|
-
*/
|
|
5
|
-
import type { ExchangeAdapter, ExchangeMarketInfo, ExchangePosition, ExchangeOrder, ExchangeBalance, ExchangeTrade, ExchangeFundingPayment, ExchangeKline } from "./interface.js";
|
|
6
|
-
export declare class EdgeXAdapter implements ExchangeAdapter {
|
|
7
|
-
readonly name = "edgex";
|
|
8
|
-
readonly chain = "starkex";
|
|
9
|
-
readonly aliases: readonly ["ex"];
|
|
10
|
-
private _accountId;
|
|
11
|
-
private _starkPrivateKey;
|
|
12
|
-
private _baseUrl;
|
|
13
|
-
private _contracts;
|
|
14
|
-
private _contractById;
|
|
15
|
-
private _marketsCache;
|
|
16
|
-
private static CACHE_TTL;
|
|
17
|
-
constructor(accountId?: string, starkPrivateKey?: string);
|
|
18
|
-
get isReadOnly(): boolean;
|
|
19
|
-
/** CLI symbol -> API symbol: ETH -> ETHUSD */
|
|
20
|
-
private _toApi;
|
|
21
|
-
/** API symbol -> CLI symbol: ETHUSD -> ETH, DOGE2USD -> DOGE2 */
|
|
22
|
-
private _fromApi;
|
|
23
|
-
private _getContract;
|
|
24
|
-
init(): Promise<void>;
|
|
25
|
-
getMarkets(): Promise<ExchangeMarketInfo[]>;
|
|
26
|
-
getOrderbook(symbol: string): Promise<{
|
|
27
|
-
bids: [string, string][];
|
|
28
|
-
asks: [string, string][];
|
|
29
|
-
}>;
|
|
30
|
-
getRecentTrades(symbol: string, limit?: number): Promise<ExchangeTrade[]>;
|
|
31
|
-
getFundingHistory(symbol: string, _limit?: number): Promise<{
|
|
32
|
-
time: number;
|
|
33
|
-
rate: string;
|
|
34
|
-
price: string | null;
|
|
35
|
-
}[]>;
|
|
36
|
-
getKlines(symbol: string, _interval: string, _startTime: number, _endTime: number): Promise<ExchangeKline[]>;
|
|
37
|
-
getBalance(): Promise<ExchangeBalance>;
|
|
38
|
-
getPositions(): Promise<ExchangePosition[]>;
|
|
39
|
-
getOpenOrders(): Promise<ExchangeOrder[]>;
|
|
40
|
-
getOrderHistory(_limit?: number): Promise<ExchangeOrder[]>;
|
|
41
|
-
getTradeHistory(_limit?: number): Promise<ExchangeTrade[]>;
|
|
42
|
-
getFundingPayments(_limit?: number): Promise<ExchangeFundingPayment[]>;
|
|
43
|
-
marketOrder(symbol: string, side: "buy" | "sell", size: string): Promise<unknown>;
|
|
44
|
-
limitOrder(symbol: string, side: "buy" | "sell", price: string, size: string, opts?: {
|
|
45
|
-
reduceOnly?: boolean;
|
|
46
|
-
tif?: string;
|
|
47
|
-
}): Promise<unknown>;
|
|
48
|
-
editOrder(symbol: string, orderId: string, price: string, size: string): Promise<unknown>;
|
|
49
|
-
cancelOrder(_symbol: string, orderId: string): Promise<unknown>;
|
|
50
|
-
cancelAllOrders(symbol?: string): Promise<unknown>;
|
|
51
|
-
setLeverage(symbol: string, leverage: number, _marginMode?: "cross" | "isolated"): Promise<unknown>;
|
|
52
|
-
stopOrder(symbol: string, side: "buy" | "sell", size: string, triggerPrice: string, opts?: {
|
|
53
|
-
limitPrice?: string;
|
|
54
|
-
reduceOnly?: boolean;
|
|
55
|
-
}): Promise<unknown>;
|
|
56
|
-
withdraw(_amount: string, _destination: string): Promise<unknown>;
|
|
57
|
-
private _computeL2OrderFields;
|
|
58
|
-
private _signRequest;
|
|
59
|
-
private _publicGet;
|
|
60
|
-
private _authGet;
|
|
61
|
-
private _authPost;
|
|
62
|
-
}
|