perp-cli 0.12.17 → 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 +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 +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 +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 +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 +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 +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 +142 -55
- package/skills/perp-cli/references/agent-operations.md +110 -56
- package/skills/perp-cli/references/commands.md +266 -71
- 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
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ondo Perps adapter — native TradingV2 + legacy ExchangeAdapter shim
|
|
3
|
+
* (design §10.7, §10.10).
|
|
4
|
+
*
|
|
5
|
+
* Signer: HMAC API key only (OndoAgentMeta → ~/.perp/ondo-agents/<keyId>.json).
|
|
6
|
+
* There is no master-key signing path for trading; read-only adapters serve
|
|
7
|
+
* public endpoints only.
|
|
8
|
+
*
|
|
9
|
+
* Order entry:
|
|
10
|
+
* - market orders: IOC LIMIT at the protection price
|
|
11
|
+
* alignProtectionPrice(slippagePrice(mark, side, bps), quoteIncrement, side),
|
|
12
|
+
* bps = the caller's resolveSlippage() value (design §13.2);
|
|
13
|
+
* - TIF (design §13.3): GTC | IOC | ALO, where ALO = GTC + postOnly; FOK is
|
|
14
|
+
* not offered (uniform CAPABILITY_UNSUPPORTED, never emulated); a limit order
|
|
15
|
+
* without a TIF is GTC;
|
|
16
|
+
* - limit orders without a caller clientOrderId get a generated one that
|
|
17
|
+
* encodes post-only (`pcli-p-<hex>` / `pcli-n-<hex>`, see ondoClientOrderId)
|
|
18
|
+
* because the API never reports postOnly back;
|
|
19
|
+
* - TP/SL attached to the entry via takeProfit/stopLoss;
|
|
20
|
+
* - stopMarket = position-level stop (POST /v1/perps/stop_order), reduce-only,
|
|
21
|
+
* mark-triggered; stopLimit is not offered by the venue;
|
|
22
|
+
* - amend = cancel, then place (design §13.10 #10, #11). `size` is the NEW OPEN
|
|
23
|
+
* size. The replacement keeps side / reduceOnly / TIF; post-only comes from
|
|
24
|
+
* the original's generated clientOrderId, or the caller's explicit TIF — an
|
|
25
|
+
* order whose post-only flag is not decodable (placed elsewhere / caller id)
|
|
26
|
+
* and no TIF given is refused before anything is cancelled. Fills that race
|
|
27
|
+
* the cancel reduce the replacement: replace = size − (filledAtCancel −
|
|
28
|
+
* filledAtRead); ≤ 0 (or below the step) → no replacement (reported). Cancel
|
|
29
|
+
* outcome unknown → ORDER_PENDING (nothing placed); cancel ok + replacement
|
|
30
|
+
* refused → ORDER_PARTIAL { cancelled, placed: null }.
|
|
31
|
+
* - cancel-all cancels resting ("open") orders and untriggered stops (position-level
|
|
32
|
+
* and entry-attached TP/SL) — see listWorkingOrders.
|
|
33
|
+
* - a reduce-only limit order must be IOC (capabilities.reduceOnlyTif); a resting one is
|
|
34
|
+
* refused before sending.
|
|
35
|
+
* Limit prices and TP/SL triggers must be on tick (INVALID_TICK); sizes are
|
|
36
|
+
* floored to the step (SIZE_TOO_SMALL when that reaches zero).
|
|
37
|
+
*/
|
|
38
|
+
import type { ExchangeAdapter, ExchangeBalance, ExchangeFundingPayment, ExchangeKline, ExchangeMarketInfo, ExchangeOrder, ExchangePosition, ExchangeTrade } from "../interface.js";
|
|
39
|
+
import type { ResolvedSlippage } from "../slippage.js";
|
|
40
|
+
import type { TradingV2 } from "../trading-v2.js";
|
|
41
|
+
import type { VenueCreateContext, VenueDefinition } from "../venue.js";
|
|
42
|
+
import type { AmendRequest, CancelResult, LeverageResult, Network, OrderRef, OrderRequest, OrderResult, VenueMarket } from "../venue-types.js";
|
|
43
|
+
import { type BuilderFeeGate } from "../builder-fee.js";
|
|
44
|
+
import { OndoClient } from "./client.js";
|
|
45
|
+
interface OndoWithdrawal {
|
|
46
|
+
withdrawal_status: string;
|
|
47
|
+
withdrawal_id: string;
|
|
48
|
+
customer_withdrawal_id: string;
|
|
49
|
+
hash?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare class OndoAdapter implements ExchangeAdapter, TradingV2 {
|
|
52
|
+
readonly name: "ondo";
|
|
53
|
+
readonly aliases: readonly ["ondo-perps"];
|
|
54
|
+
readonly venue: VenueDefinition;
|
|
55
|
+
readonly network: Network;
|
|
56
|
+
private readonly caps;
|
|
57
|
+
private readonly client;
|
|
58
|
+
private pairsCache;
|
|
59
|
+
/**
|
|
60
|
+
* Builder-fee gate (settings builder.ondo; Ondo has no approval step); null = not
|
|
61
|
+
* configured. Set by the venue definition's create — the adapter never reads settings.
|
|
62
|
+
*/
|
|
63
|
+
builderFee: BuilderFeeGate | null;
|
|
64
|
+
/**
|
|
65
|
+
* GET /v1/perps/candles needs the account's API key (docs.ondoperps.xyz rest-spec.json:
|
|
66
|
+
* `security: [{"BearerAuth": []}, {"ApiKeyAuth": []}]` — no anonymous `{}` entry, unlike
|
|
67
|
+
* /v1/perps/depth). `market kline` therefore uses the credentialed adapter (klinesNeedAuth).
|
|
68
|
+
*/
|
|
69
|
+
readonly klinesRequireAuth = true;
|
|
70
|
+
constructor(def: VenueDefinition, ctx: VenueCreateContext);
|
|
71
|
+
/** Raw REST client (same host + HMAC key) — shared with OndoSpotAdapter. */
|
|
72
|
+
get restClient(): OndoClient;
|
|
73
|
+
/** Account id from GET /v1/account — the `from.id`/`to.id` of withdrawals and spot↔perp transfers. */
|
|
74
|
+
accountId(): Promise<string>;
|
|
75
|
+
/** Withdrawal address book (GET /v1/wallet/address_book) — withdrawals go only to these addresses. */
|
|
76
|
+
addressBook(): Promise<string[]>;
|
|
77
|
+
private pairOf;
|
|
78
|
+
/**
|
|
79
|
+
* An order the venue returned as "pending" (not yet open / filled) is read back by id
|
|
80
|
+
* (GET /v1/perps/orders/{id}, bounded 5 × 500 ms) until the venue reports a final status;
|
|
81
|
+
* still pending → the result stays pending (never assumed open).
|
|
82
|
+
*/
|
|
83
|
+
private settlePending;
|
|
84
|
+
private toOrderResult;
|
|
85
|
+
private toExchangeOrder;
|
|
86
|
+
private listOrders;
|
|
87
|
+
/**
|
|
88
|
+
* Resting orders plus untriggered stop orders. The documented `status` filter enum is open /
|
|
89
|
+
* canceled / fullyfilled; `untriggered` is a documented order status and the filter accepts it
|
|
90
|
+
* (live mainnet 2026-10-05) — every returned row's own status is still checked.
|
|
91
|
+
*/
|
|
92
|
+
private listWorkingOrders;
|
|
93
|
+
private markPriceOf;
|
|
94
|
+
/**
|
|
95
|
+
* `builderCode: { code, feeRateBpsFractional }` for the next order, recorded on `exec`
|
|
96
|
+
* (builderFee + the reason a configured fee was not attached). Every order body carries it
|
|
97
|
+
* explicitly — position stops do not inherit it (Ondo integration guide).
|
|
98
|
+
*/
|
|
99
|
+
private attachBuilderCode;
|
|
100
|
+
/** stopMarket → position-level stop (POST /v1/perps/stop_order). */
|
|
101
|
+
private placePositionStop;
|
|
102
|
+
getVenueMarkets(): Promise<VenueMarket[]>;
|
|
103
|
+
placeOrder(input: OrderRequest): Promise<OrderResult>;
|
|
104
|
+
private placeOrderOnVenue;
|
|
105
|
+
amendOrder(req: AmendRequest): Promise<OrderResult>;
|
|
106
|
+
cancelByRef(_symbol: string, ref: OrderRef): Promise<CancelResult>;
|
|
107
|
+
/** Lists resting orders and untriggered stops (listWorkingOrders), then cancels them via the batch endpoint so every result is exact. */
|
|
108
|
+
cancelAllV2(symbol: string | null): Promise<CancelResult>;
|
|
109
|
+
applyLeverage(symbol: string, leverage: number, marginMode: "cross" | "isolated" | null): Promise<LeverageResult>;
|
|
110
|
+
getOrderStatus(_symbol: string, ref: OrderRef): Promise<OrderResult>;
|
|
111
|
+
getMarkets(): Promise<ExchangeMarketInfo[]>;
|
|
112
|
+
getOrderbook(symbol: string): Promise<{
|
|
113
|
+
bids: [string, string][];
|
|
114
|
+
asks: [string, string][];
|
|
115
|
+
}>;
|
|
116
|
+
getRecentTrades(symbol: string, limit?: number): Promise<ExchangeTrade[]>;
|
|
117
|
+
getFundingHistory(symbol: string, limit?: number): Promise<{
|
|
118
|
+
time: number;
|
|
119
|
+
rate: string;
|
|
120
|
+
price: string | null;
|
|
121
|
+
}[]>;
|
|
122
|
+
/** GET /v1/perps/candles — authenticated (see klinesRequireAuth). */
|
|
123
|
+
getKlines(symbol: string, interval: string, startTime: number, endTime: number): Promise<ExchangeKline[]>;
|
|
124
|
+
getBalance(): Promise<ExchangeBalance>;
|
|
125
|
+
/**
|
|
126
|
+
* netQuantity is documented as the unsigned position size ("Size of the
|
|
127
|
+
* position in base currency", example "1.5489" on a short) with the side in
|
|
128
|
+
* `direction`. A signed value is still accepted: the magnitude is used and
|
|
129
|
+
* the sign must agree with `direction` (never dropped, never guessed).
|
|
130
|
+
*/
|
|
131
|
+
getPositions(): Promise<ExchangePosition[]>;
|
|
132
|
+
getOpenOrders(): Promise<ExchangeOrder[]>;
|
|
133
|
+
getOrderHistory(limit?: number): Promise<ExchangeOrder[]>;
|
|
134
|
+
getTradeHistory(limit?: number): Promise<ExchangeTrade[]>;
|
|
135
|
+
/** `amount` is positive when the account received funding. */
|
|
136
|
+
getFundingPayments(limit?: number): Promise<ExchangeFundingPayment[]>;
|
|
137
|
+
marketOrder(symbol: string, side: "buy" | "sell", size: string, opts: {
|
|
138
|
+
reduceOnly: boolean;
|
|
139
|
+
slippage: ResolvedSlippage;
|
|
140
|
+
}): Promise<OrderResult>;
|
|
141
|
+
limitOrder(symbol: string, side: "buy" | "sell", price: string, size: string, opts?: {
|
|
142
|
+
reduceOnly?: boolean;
|
|
143
|
+
tif?: string;
|
|
144
|
+
}): Promise<OrderResult>;
|
|
145
|
+
editOrder(symbol: string, orderId: string, price: string, size: string): Promise<OrderResult>;
|
|
146
|
+
cancelOrder(symbol: string, orderId: string): Promise<CancelResult>;
|
|
147
|
+
cancelAllOrders(symbol?: string): Promise<CancelResult>;
|
|
148
|
+
setLeverage(symbol: string, leverage: number, marginMode?: "cross" | "isolated"): Promise<LeverageResult>;
|
|
149
|
+
stopOrder(symbol: string, side: "buy" | "sell", size: string, triggerPrice: string, opts?: {
|
|
150
|
+
limitPrice?: string;
|
|
151
|
+
reduceOnly?: boolean;
|
|
152
|
+
triggerType?: "mark" | "last" | "mid";
|
|
153
|
+
}): Promise<OrderResult>;
|
|
154
|
+
/**
|
|
155
|
+
* Withdraw USDC from the perps (margin) wallet to an Ethereum address.
|
|
156
|
+
* Requires an API key with the `transfer` scope. The destination may need to
|
|
157
|
+
* be on the account's address book (venue error bad_withdrawal_address).
|
|
158
|
+
*/
|
|
159
|
+
withdraw(amount: string, destination: string, opts?: {
|
|
160
|
+
assetId?: number;
|
|
161
|
+
routeType?: number;
|
|
162
|
+
}): Promise<OndoWithdrawal & {
|
|
163
|
+
withdrawalFeeUSD: string;
|
|
164
|
+
}>;
|
|
165
|
+
}
|
|
166
|
+
export {};
|