import { AxiosRequestConfig } from 'axios';
import { BaseRestClient, RestClientType } from './lib/BaseRestClient.js';
import { RestClientOptions } from './lib/requestUtils.js';
import { FuturesAccountHistoricOrderRequest, FuturesAccountHistoricTransactionRequest, FuturesAccountOpenOrdersRequest, FuturesAccountOrderRequest, FuturesAccountPlanOrdersRequest, FuturesAccountTradesRequest, FuturesAccountTransfersRequest, FuturesAffiliateRebatesRequest, FuturesAffiliateTradesRequest, FuturesKlinesRequest, FuturesSubTransfersRequest, FuturesSubWalletRequest, SetFuturesLeverageRequest, SubmitFuturesOrderRequest, SubmitFuturesPlanOrderRequest, SubmitFuturesSubToMainSubFromSubRequest, SubmitFuturesTPSLOrderRequest, SubmitFuturesTrailOrderRequest, SubmitFuturesTransferRequest, TransferFuturesAssetsRequest, UpdateFuturesLimitOrderRequest, UpdateFuturesPlanOrderRequest, UpdateFuturesPresetPlanOrderRequest, UpdateFuturesTPSLOrderRequest } from './types/request/futures.types.js';
import { FuturesAccountAsset, FuturesAccountHistoricOrder, FuturesAccountHistoricTransaction, FuturesAccountOpenOrder, FuturesAccountOrder, FuturesAccountPlanOrders, FuturesAccountPosition, FuturesAccountSetLeverageResult, FuturesAccountSubTransfer, FuturesAccountTrade, FuturesAccountTransfer, FuturesContractDepth, FuturesContractDetails, FuturesFundingRate, FuturesFundingRateHistory, FuturesKline, FuturesOpenInterest, FuturesOrderSubmitResult, FuturesTransferSubmitResult, PositionRisk } from './types/response/futures.types.js';
import { AccountCurrencyBalanceV1, APIResponse } from './types/response/shared.types.js';
import { ServiceStatus } from './types/response/spot.types.js';
/**
 * REST API client for Bitmart's V2 Futures APIs via the "api-cloud-v2.bitmart.com" domain
 */
export declare class FuturesClientV2 extends BaseRestClient {
    constructor(restClientOptions?: RestClientOptions, requestOptions?: AxiosRequestConfig);
    getClientType(): RestClientType;
    /**
     *
     * System Status Endpoints
     *
     **/
    getSystemTime(): Promise<APIResponse<{
        server_time: number;
    }>>;
    getSystemStatus(): Promise<APIResponse<{
        service: ServiceStatus[];
    }>>;
    /**
     *
     *****************
     * USD-M Futures V2 *
     *****************
     *
     */
    /**
     *
     * Futures Market Data
     *
     */
    /**
     * Get a list of all symbols, including most recent price, rules (min/max precision/volume/etc) and other metrics (funding rate, open interest, contract expiry, etc).
     */
    getFuturesContractDetails(params?: {
        symbol?: string;
    }): Promise<APIResponse<{
        symbols: FuturesContractDetails[];
    }>>;
    getFuturesContractDepth(params: {
        symbol: string;
    }): Promise<APIResponse<FuturesContractDepth>>;
    getFuturesOpenInterest(params: {
        symbol: string;
    }): Promise<APIResponse<FuturesOpenInterest>>;
    getFuturesFundingRate(params: {
        symbol: string;
    }): Promise<APIResponse<FuturesFundingRate>>;
    getFuturesKlines(params: FuturesKlinesRequest): Promise<APIResponse<FuturesKline[]>>;
    getFuturesMarkPriceKlines(params: FuturesKlinesRequest): Promise<APIResponse<FuturesKline[]>>;
    getFuturesFundingRateHistory(params: {
        symbol: string;
        limit?: string;
    }): Promise<APIResponse<{
        list: FuturesFundingRateHistory[];
    }>>;
    /**
     *
     * Futures Account Data
     *
     */
    getFuturesAccountAssets(): Promise<APIResponse<FuturesAccountAsset[]>>;
    /**
     *
     * Futures Trading
     *
     */
    getFuturesTradeFeeRate(params: {
        symbol: string;
    }): Promise<APIResponse<{
        symbol: string;
        taker_fee_rate: string;
        maker_fee_rate: string;
    }>>;
    getFuturesAccountOrder(params: FuturesAccountOrderRequest): Promise<APIResponse<FuturesAccountOrder>>;
    getFuturesAccountOrderHistory(params: FuturesAccountHistoricOrderRequest): Promise<APIResponse<FuturesAccountHistoricOrder>>;
    getFuturesAccountOpenOrders(params?: FuturesAccountOpenOrdersRequest): Promise<APIResponse<FuturesAccountOpenOrder[]>>;
    getFuturesAccountPlanOrders(params?: FuturesAccountPlanOrdersRequest): Promise<APIResponse<FuturesAccountPlanOrders[]>>;
    getFuturesAccountPositions(params?: {
        symbol?: string;
        account?: string;
    }): Promise<APIResponse<FuturesAccountPosition[]>>;
    /**
     * Get current position risk details
     */
    getPositionRiskDetails(params?: {
        symbol?: string;
        account?: string;
    }): Promise<APIResponse<PositionRisk[]>>;
    getFuturesAccountTrades(params: FuturesAccountTradesRequest): Promise<APIResponse<FuturesAccountTrade[]>>;
    getFuturesAccountTransactionHistory(params: FuturesAccountHistoricTransactionRequest): Promise<APIResponse<FuturesAccountHistoricTransaction[]>>;
    getFuturesTransfers(params: FuturesAccountTransfersRequest): Promise<APIResponse<{
        records: FuturesAccountTransfer[];
    }>>;
    submitFuturesOrder(params: SubmitFuturesOrderRequest): Promise<APIResponse<FuturesOrderSubmitResult>>;
    updateFuturesLimitOrder(params: UpdateFuturesLimitOrderRequest): Promise<APIResponse<{
        order_id: number;
        client_order_id?: string;
    }>>;
    cancelFuturesOrder(params: FuturesAccountOrderRequest): Promise<APIResponse<any>>;
    cancelAllFuturesOrders(params: {
        symbol: string;
    }): Promise<APIResponse<any>>;
    cancelAllFuturesOrdersAfter(params: {
        timeout: number;
        symbol: string;
    }): Promise<APIResponse<any>>;
    submitFuturesPlanOrder(params: SubmitFuturesPlanOrderRequest): Promise<APIResponse<{
        order_id: number;
    }>>;
    cancelFuturesPlanOrder(params: FuturesAccountOrderRequest): Promise<APIResponse<any>>;
    submitFuturesTransfer(params: SubmitFuturesTransferRequest): Promise<APIResponse<FuturesTransferSubmitResult>>;
    setFuturesLeverage(params: SetFuturesLeverageRequest): Promise<APIResponse<FuturesAccountSetLeverageResult>>;
    submitFuturesTPSLOrder(params: SubmitFuturesTPSLOrderRequest): Promise<APIResponse<{
        order_id: string;
        client_order_id?: string;
    }>>;
    updateFuturesPlanOrder(params: UpdateFuturesPlanOrderRequest): Promise<APIResponse<{
        order_id: string;
    }>>;
    updateFuturesPresetPlanOrder(params: UpdateFuturesPresetPlanOrderRequest): Promise<APIResponse<{
        order_id: string;
    }>>;
    updateFuturesTPSLOrder(params: UpdateFuturesTPSLOrderRequest): Promise<APIResponse<{
        order_id: string;
    }>>;
    submitFuturesTrailOrder(params: SubmitFuturesTrailOrderRequest): Promise<APIResponse<{
        order_id: number;
    }>>;
    cancelFuturesTrailOrder(params: FuturesAccountOrderRequest): Promise<APIResponse<any>>;
    /**
     * Set position mode (hedge_mode or one_way_mode)
     */
    setPositionMode(params: {
        position_mode: 'hedge_mode' | 'one_way_mode';
    }): Promise<APIResponse<{
        position_mode: 'hedge_mode' | 'one_way_mode';
    }>>;
    /**
     * Get current position mode
     */
    getPositionMode(): Promise<APIResponse<{
        position_mode: 'hedge_mode' | 'one_way_mode';
    }>>;
    /**
     *
     * Futures Sub-Account Endpoints
     *
     */
    submitFuturesSubToMainTransferFromMain(params: TransferFuturesAssetsRequest): Promise<APIResponse<any>>;
    submitFuturesMainToSubTransferFromMain(params: TransferFuturesAssetsRequest): Promise<APIResponse<any>>;
    submitFuturesSubToMainSubFromSub(params: SubmitFuturesSubToMainSubFromSubRequest): Promise<APIResponse<any>>;
    getFuturesSubWallet(params?: FuturesSubWalletRequest): Promise<APIResponse<{
        wallet: AccountCurrencyBalanceV1[];
    }>>;
    getFuturesSubTransfers(params: FuturesSubTransfersRequest): Promise<APIResponse<FuturesAccountSubTransfer[]>>;
    getFuturesSubTransferHistory(params: {
        limit: number;
    }): Promise<APIResponse<FuturesAccountSubTransfer[]>>;
    /**
     *
     * Futures Affiliate Endpoints
     *
     */
    getFuturesAffiliateRebates(params: FuturesAffiliateRebatesRequest): Promise<APIResponse<any>>;
    getFuturesAffiliateTrades(params: FuturesAffiliateTradesRequest): Promise<APIResponse<any>>;
}
