/**========================================================================================================================== * FUTURES * ========================================================================================================================== */ export type FuturesSettle = 'btc' | 'usdt' | 'usd' | 'usd1'; export interface GetFuturesOrderBookReq { settle: FuturesSettle; contract: string; interval?: string; limit?: number; with_id?: boolean; } export interface GetFuturesTradesReq { settle: FuturesSettle; contract: string; limit?: number; offset?: number; last_id?: string; from?: number; to?: number; } export interface GetFuturesCandlesReq { settle: FuturesSettle; contract: string; from?: number; to?: number; limit?: number; interval?: string; } export interface GetFuturesStatsReq { settle: FuturesSettle; contract: string; from?: number; interval?: string; limit?: number; } export interface GetFundingRatesReq { settle: FuturesSettle; contract: string; limit?: number; from?: number; to?: number; } export interface BatchFundingRatesReq { settle: 'btc' | 'usdt' | 'usd1'; contracts: string[]; } export interface GetLiquidationHistoryReq { settle: FuturesSettle; contract?: string; from?: number; to?: number; limit?: number; } export interface GetRiskLimitTiersReq { settle: FuturesSettle; contract: string; limit?: number; offset?: number; } export interface GetRiskLimitTableReq { settle: FuturesSettle; table_id: string; } /** Change types for `GET /futures/{settle}/account_book`. */ export type FuturesAccountBookType = 'dnw' | 'pnl' | 'fee' | 'refr' | 'fund' | 'point_dnw' | 'point_fee' | 'point_refr' | 'bonus_offset' | 'dividend'; export interface GetFuturesAccountBookReq { settle: FuturesSettle; contract?: string; limit?: number; offset?: number; from?: number; to?: number; type?: FuturesAccountBookType; } export interface GetFuturesADLRiskStatesReq { settle: 'btc' | 'usdt' | 'usd1'; } export interface GetFuturesPositionsReq { settle: FuturesSettle; holding?: boolean; limit?: number; positions_limit?: number; offset?: number; position_side?: string; hedge_mode?: boolean; } export interface UpdateDualModePositionMarginReq { settle: FuturesSettle; contract: string; change: string; dual_side: 'dual_long' | 'dual_short'; } export interface UpdateDualModePositionLeverageReq { settle: FuturesSettle; contract: string; leverage: string; cross_leverage_limit?: string; } export interface SubmitFuturesOrderReq { xGateExptime?: number; settle: FuturesSettle; contract: string; size: number; iceberg?: number; price?: string; close?: boolean; reduce_only?: boolean; tif?: string; text?: string; auto_size?: string; stp_act?: string; action_mode?: 'ACK' | 'RESULT' | 'FULL'; tpsl_tp_trigger_price?: string; tpsl_sl_trigger_price?: string; /** BBO price type for the take-profit leg */ tpsl_tp_bbo_type?: string; /** BBO price type for the stop-loss leg */ tpsl_sl_bbo_type?: string; pos_margin_mode?: 'isolated' | 'cross'; } export interface GetFuturesOrdersReq { settle: FuturesSettle; contract?: string; status: string; limit?: number; offset?: number; last_id?: string; } export interface DeleteAllFuturesOrdersReq { xGateExptime?: number; settle: FuturesSettle; contract: string; side?: string; action_mode?: 'ACK' | 'RESULT' | 'FULL'; } export interface GetFuturesOrdersByTimeRangeReq { settle: FuturesSettle; contract?: string; from?: number; to?: number; limit?: number; offset?: number; } export interface UpdateFuturesOrderReq { xGateExptime?: number; settle: FuturesSettle; order_id: string; size?: number; price?: string; amend_text?: string; } export interface GetFuturesTradingHistoryReq { settle: FuturesSettle; contract?: string; order?: number; limit?: number; offset?: number; last_id?: string; } export interface GetFuturesTradingHistoryByTimeRangeReq { settle: FuturesSettle; contract?: string; from?: number; to?: number; limit?: number; offset?: number; role?: 'maker' | 'taker'; } export interface GetFuturesPositionHistoryReq { settle: FuturesSettle; contract?: string; limit?: number; offset?: number; from?: number; to?: number; side?: 'long' | 'short'; pnl?: string; } export interface GetFuturesLiquidationHistoryReq { settle: FuturesSettle; contract?: string; limit?: number; at?: number; } export interface SubmitFuturesTriggeredOrderReq { initial: { contract: string; size?: number; /** Decimal contract size; if both `size` and `amount` are set, `amount` takes precedence */ amount?: string; price: string; close?: boolean; tif?: 'gtc' | 'ioc'; text?: string; reduce_only?: boolean; auto_size?: string; }; trigger: { strategy_type?: 0 | 1; price_type?: 0 | 1 | 2; price: string; rule: 1 | 2; expiration?: number; }; order_type?: 'close-long-order' | 'close-short-order' | 'close-long-position' | 'close-short-position' | 'plan-close-long-position' | 'plan-close-short-position'; settle: FuturesSettle; } export interface GetFuturesAutoOrdersReq { settle: FuturesSettle; status: 'open' | 'finished'; contract?: string; limit?: number; offset?: number; } /** * Modify contract order parameters */ export interface BatchAmendOrderReq { order_id?: number; text?: string; size?: number; price?: string; amend_text?: string; } export interface GetFuturesPositionCloseHistoryReq { settle: FuturesSettle; contract?: string; limit?: number; offset?: number; from?: number; to?: number; } export interface GetFuturesInsuranceReq { settle: FuturesSettle; limit?: number; } export interface UpdateFuturesPriceTriggeredOrderReq { settle: FuturesSettle; order_id: number | string; contract?: string; size?: number; /** Same semantics as `size` (decimal contract size) */ amount?: string; price?: string; /** When fully closing in single-position mode, set true */ close?: boolean; trigger_price?: string; price_type?: 0 | 1 | 2; auto_size?: string; } /** GET /futures/{settle}/get_leverage/{contract} — v4.106.43: pos_margin_mode and dual_side required */ export interface GetFuturesContractLeverageReq { settle: FuturesSettle; contract: string; pos_margin_mode: 'isolated' | 'cross'; dual_side: 'dual_long' | 'dual_short'; } /** Trail order (autoorder/v1/trail) request types */ export interface CreateTrailOrderReq { settle: 'btc' | 'usdt'; contract: string; amount: string; activation_price?: string; is_gte?: boolean; price_type?: 1 | 2 | 3; price_offset?: string; reduce_only?: boolean; position_related?: boolean; text?: string; pos_margin_mode?: string; position_mode?: string; } export interface TerminateTrailOrderReq { settle: 'btc' | 'usdt'; id?: number; text?: string; } export interface BatchTerminateTrailOrdersReq { settle: 'btc' | 'usdt'; contract?: string; related_position?: 1 | 2; } export interface GetTrailOrderListReq { settle: 'btc' | 'usdt'; contract?: string; is_finished?: boolean; start_at?: number; end_at?: number; page_num?: number; page_size?: number; sort_by?: 1 | 2; hide_cancel?: boolean; related_position?: 1 | 2; sort_by_trigger?: boolean; reduce_only?: 1 | 2; side?: 1 | 2; } export interface GetTrailOrderDetailReq { settle: 'btc' | 'usdt'; id: number; } export interface UpdateTrailOrderReq { settle: 'btc' | 'usdt'; id: number; amount?: string; activation_price?: string; is_gte_str?: string; price_type?: 0 | 1 | 2 | 3; price_offset?: string; } export interface GetTrailOrderChangeLogReq { settle: 'btc' | 'usdt'; id: number; page_num?: number; page_size?: number; } /** Chase limit order (autoorder/v1/chase) request types */ export interface CreateChaseOrderReq { settle: FuturesSettle; contract: string; amount: string; price_limit: string; offset_limit?: string; reduce_only?: boolean; text?: string; is_dual_mode?: boolean; price_type?: number; price_gap_type?: number; price_gap_value?: string; pos_margin_mode?: 'isolated' | 'cross' | string; position_mode?: string; } export interface StopChaseOrderReq { settle: FuturesSettle; id?: string; text?: string; } export interface StopAllChaseOrdersReq { settle: FuturesSettle; contract?: string; pos_margin_mode?: 'isolated' | 'cross' | string; } export interface GetChaseOrdersReq { settle: FuturesSettle; contract?: string; is_finished?: boolean; start_at?: number; end_at?: number; page_num?: number; page_size?: number; /** 1 ORDER_SORT_CREATED_AT, 2 ORDER_SORT_FINISHED_AT */ sort_by: 1 | 2; hide_cancel?: boolean; reduce_only?: 0 | 1 | 2; side?: 0 | 1 | 2; } export interface GetChaseOrderDetailReq { settle: FuturesSettle; id: string; }