perp-cli 0.12.17 → 0.14.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 +247 -27
- 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 +303 -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 +70 -92
- 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 +248 -0
- package/dist/commands/funds.d.ts +25 -0
- package/dist/commands/funds.js +925 -245
- package/dist/commands/history.js +102 -54
- 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 +357 -459
- 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 +240 -6
- package/dist/exchanges/aster.js +1139 -195
- 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 +152 -0
- package/dist/exchanges/ondo/adapter.js +811 -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 +95 -0
- package/dist/exchanges/ondo/funds.js +198 -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 +293 -4
- package/dist/exchanges/pacifica.js +1044 -90
- 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 +1386 -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 +29 -0
- package/dist/exchanges/venues/ondo.js +136 -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 +39 -0
- package/dist/exchanges/venues/qfex.js +140 -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 +156 -684
- package/dist/jobs.d.ts +84 -6
- package/dist/jobs.js +239 -41
- package/dist/landing.d.ts +7 -2
- package/dist/landing.js +19 -3
- package/dist/mcp-server.d.ts +14 -4
- package/dist/mcp-server.js +821 -403
- package/dist/mcp-trade-guard.d.ts +16 -0
- package/dist/mcp-trade-guard.js +59 -0
- package/dist/onchain-balances.d.ts +40 -0
- package/dist/onchain-balances.js +173 -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 +159 -55
- package/skills/perp-cli/references/agent-operations.md +112 -58
- package/skills/perp-cli/references/commands.md +269 -73
- package/skills/perp-cli/references/strategies.md +34 -31
- package/skills/perp-cli/scripts/arb-monitor.sh +10 -5
- package/skills/perp-cli/scripts/funding-analysis.sh +14 -9
- 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 +31 -15
- 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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Network } from "../exchanges/venue-types.js";
|
|
1
2
|
import { Command } from "commander";
|
|
2
3
|
import type { ExchangeAdapter } from "../exchanges/index.js";
|
|
3
4
|
interface FundingSnapshot {
|
|
@@ -14,7 +15,132 @@ interface FundingSnapshot {
|
|
|
14
15
|
hlMarkPrice: number;
|
|
15
16
|
ltMarkPrice: number;
|
|
16
17
|
astMarkPrice: number;
|
|
18
|
+
/** Aster per-symbol funding interval (= basis and settlement interval) from /fapi/v3/fundingInfo; null when Aster has no rate. */
|
|
19
|
+
astHours: number | null;
|
|
17
20
|
}
|
|
21
|
+
export interface LegOrderMinimums {
|
|
22
|
+
exchange: string;
|
|
23
|
+
minSize: string | null;
|
|
24
|
+
minNotional: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The venue's published order minimums for `sym` (VenueMarket.minSize / minNotional — the same
|
|
28
|
+
* source `trade scale-in` checks its levels against); null = the venue publishes none.
|
|
29
|
+
* A market missing from the venue's list throws (Rule #2: no assumed minimum).
|
|
30
|
+
*/
|
|
31
|
+
export declare function venueOrderMinimums(adapter: ExchangeAdapter, sym: string, network: Network): Promise<{
|
|
32
|
+
minSize: string | null;
|
|
33
|
+
minNotional: string | null;
|
|
34
|
+
}>;
|
|
35
|
+
/** The pair's minimums: the larger of the two legs' (both legs trade the same size); 0 = none published. */
|
|
36
|
+
export declare function pairOrderMinimums(legs: readonly LegOrderMinimums[]): {
|
|
37
|
+
minNotional: number;
|
|
38
|
+
minSize: number;
|
|
39
|
+
describe: string;
|
|
40
|
+
legs: readonly LegOrderMinimums[];
|
|
41
|
+
};
|
|
42
|
+
export type PerpPairOpenResult =
|
|
43
|
+
/** Both legs open and hedged at `hedged` (base units, both legs). */
|
|
44
|
+
{
|
|
45
|
+
status: "opened";
|
|
46
|
+
hedged: string;
|
|
47
|
+
longFilled: number;
|
|
48
|
+
shortFilled: number;
|
|
49
|
+
trimmed: string;
|
|
50
|
+
}
|
|
51
|
+
/** Nothing left open: the long failed definitively, or the short failed and the long was rolled back in full. */
|
|
52
|
+
/** lotSize: the long was definitely rejected for lot size (nothing placed) — the caller may re-size once. */
|
|
53
|
+
| {
|
|
54
|
+
status: "not_opened";
|
|
55
|
+
reason: string;
|
|
56
|
+
rolledBack: string | null;
|
|
57
|
+
lotSize: number | null;
|
|
58
|
+
}
|
|
59
|
+
/** Exposure is unknown or unhedged: the symbol was quarantined; `exposure` says what may be open. */
|
|
60
|
+
| {
|
|
61
|
+
status: "quarantined";
|
|
62
|
+
reason: string;
|
|
63
|
+
exposure: string;
|
|
64
|
+
};
|
|
65
|
+
export type PerpPairCloseResult = {
|
|
66
|
+
status: "closed";
|
|
67
|
+
}
|
|
68
|
+
/** The long close failed definitively: nothing changed, both legs still open (hedged). */
|
|
69
|
+
| {
|
|
70
|
+
status: "failed";
|
|
71
|
+
reason: string;
|
|
72
|
+
}
|
|
73
|
+
/** Outcome unknown or a leg left unhedged: the symbol was quarantined. */
|
|
74
|
+
| {
|
|
75
|
+
status: "quarantined";
|
|
76
|
+
reason: string;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Open long `size` on longExch, then short the long's verified fill on shortExch.
|
|
80
|
+
* `smart` sends the opening legs as IOC limits (smartOrder); rollback / trim are
|
|
81
|
+
* always reduce-only market orders.
|
|
82
|
+
*/
|
|
83
|
+
export declare function openPerpPairVerified(p: {
|
|
84
|
+
/** Quarantine source; `sym` is the quarantine (canonical) symbol, longSym / shortSym the venue order symbols. */
|
|
85
|
+
source: string;
|
|
86
|
+
sym: string;
|
|
87
|
+
longAdapter: ExchangeAdapter;
|
|
88
|
+
longExch: string;
|
|
89
|
+
longSym: string;
|
|
90
|
+
shortAdapter: ExchangeAdapter;
|
|
91
|
+
shortExch: string;
|
|
92
|
+
shortSym: string;
|
|
93
|
+
size: string;
|
|
94
|
+
smart: boolean;
|
|
95
|
+
log: (m: string) => void;
|
|
96
|
+
/**
|
|
97
|
+
* When the short is DEFINITELY rejected for lot size (rejectedLotSize), place ONE short of
|
|
98
|
+
* the long's verified fill floored to that lot (never resubmitting the long), then trim the
|
|
99
|
+
* long's excess as usual. Off → the long is rolled back.
|
|
100
|
+
*/
|
|
101
|
+
shortLotRetry?: boolean;
|
|
102
|
+
}): Promise<PerpPairOpenResult>;
|
|
103
|
+
/**
|
|
104
|
+
* Close a perp-perp pair: long first, then short — reduce-only, verified, no retry.
|
|
105
|
+
* A definite failure of the long close changes nothing ("failed": the caller may retry
|
|
106
|
+
* later and should quarantine after repeated failures). Once the long is closed, any
|
|
107
|
+
* short failure, an unknown outcome, or a residual that survives one reduce-only residual
|
|
108
|
+
* close (closePerpVerified) quarantines.
|
|
109
|
+
*/
|
|
110
|
+
export declare function closePerpPairVerified(p: {
|
|
111
|
+
source: string;
|
|
112
|
+
sym: string;
|
|
113
|
+
longAdapter: ExchangeAdapter;
|
|
114
|
+
longExch: string;
|
|
115
|
+
longSym: string;
|
|
116
|
+
longSize: string;
|
|
117
|
+
shortAdapter: ExchangeAdapter;
|
|
118
|
+
shortExch: string;
|
|
119
|
+
shortSym: string;
|
|
120
|
+
shortSize: string;
|
|
121
|
+
/** Send each close as a reduce-only IOC limit (smartOrder) instead of a reduce-only market order. */
|
|
122
|
+
smart: boolean;
|
|
123
|
+
log: (m: string) => void;
|
|
124
|
+
}): Promise<PerpPairCloseResult>;
|
|
125
|
+
/**
|
|
126
|
+
* Graceful stop of a daemon loop: SIGINT / SIGTERM (`perp background stop`, Ctrl+C) only REQUEST
|
|
127
|
+
* the stop — the leg sequence (or rollback) in flight finishes, nothing new starts, then the loop
|
|
128
|
+
* ends. A repeated signal never exits between two legs (it is logged).
|
|
129
|
+
*/
|
|
130
|
+
export declare function gracefulStop(name: string): {
|
|
131
|
+
requested: () => boolean;
|
|
132
|
+
dispose: () => void;
|
|
133
|
+
};
|
|
134
|
+
/** Sleep `ms`, waking within 250 ms once `stop()` is true. */
|
|
135
|
+
export declare function interruptibleSleep(ms: number, stop: () => boolean): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Startup: pending-entry records `source` left behind by a process that died mid-entry → the
|
|
138
|
+
* symbol is quarantined (legs may be open), then the record is cleared. An unreadable pending
|
|
139
|
+
* file throws (the daemon does not start on unknown exposure).
|
|
140
|
+
*/
|
|
141
|
+
export declare function quarantineOrphanedEntries(network: Network, source: string, log: (m: string) => void): void;
|
|
142
|
+
/** The entry's outcome is recorded: drop its pending record (a failed drop is logged — the next start quarantines it). */
|
|
143
|
+
export declare function finishPendingEntry(network: Network, source: string, symbol: string, log: (m: string) => void): void;
|
|
18
144
|
/**
|
|
19
145
|
* Compute the estimated round-trip cost as a percentage of notional.
|
|
20
146
|
* Round-trip = 4 × taker fee + 2 × slippage (entry + exit for both legs).
|
|
@@ -33,15 +159,17 @@ export declare function computeRoundTripCostPct(longExchange: string, shortExcha
|
|
|
33
159
|
*/
|
|
34
160
|
export declare function computeNetSpread(grossAnnualPct: number, holdDays: number, roundTripCostPct: number, bridgeCostUsd?: number, positionSizeUsd?: number): number;
|
|
35
161
|
/**
|
|
36
|
-
* Get the next settlement time for an exchange.
|
|
37
|
-
*
|
|
162
|
+
* Get the next settlement time for an exchange (schedule anchored at 00:00 UTC).
|
|
163
|
+
* `marketIntervalHours` is the market's settlement interval; required for
|
|
164
|
+
* per-market venues (Aster). Unknown venues throw UNKNOWN_VENUE.
|
|
165
|
+
* A settlement exactly at `now` counts as the next one.
|
|
38
166
|
*/
|
|
39
|
-
export declare function getNextSettlement(exchange: string, now?: Date): Date;
|
|
167
|
+
export declare function getNextSettlement(exchange: string, now?: Date, marketIntervalHours?: number | null): Date;
|
|
40
168
|
/**
|
|
41
169
|
* Check if we are within N minutes before a settlement event on either exchange.
|
|
42
170
|
* If so, we should avoid entering positions (rates may change).
|
|
43
171
|
*/
|
|
44
|
-
export declare function isNearSettlement(longExchange: string, shortExchange: string, bufferMinutes?: number, now?: Date): {
|
|
172
|
+
export declare function isNearSettlement(longExchange: string, shortExchange: string, bufferMinutes?: number, now?: Date, marketIntervalFor?: (exchange: string) => number | null): {
|
|
45
173
|
blocked: boolean;
|
|
46
174
|
exchange?: string;
|
|
47
175
|
minutesUntil?: number;
|