import { AxiosRequestConfig } from 'axios';
import { BaseRestClient, RestClientType } from './lib/BaseRestClient.js';
import { RestClientOptions } from './lib/requestUtils.js';
import { CancelFuturesOrderRequest, CancelFuturesPlanOrderRequest, CancelFuturesTrailOrderRequest, FuturesAccountHistoricOrderRequest, FuturesAccountHistoricTransactionRequest, FuturesAccountOpenOrdersRequest, FuturesAccountPlanOrdersRequest, FuturesAccountTradesRequest, FuturesAccountTransfersRequest, FuturesAffiliateDepositWithdrawalListRequest, FuturesAffiliateRebateApiRequest, FuturesAffiliateRebateInviteUserRequest, FuturesAffiliateRebatesRequest, FuturesAffiliateRebateUserRequest, FuturesAffiliateTradesRequest, FuturesAutoRepaymentRequest, FuturesCrossCollateralInterestLogRequest, FuturesKlinesRequest, FuturesSubTransfersRequest, FuturesSubWalletRequest, GetFuturesOrderRequest, SetFuturesLeverageRequest, SubmitFuturesOrderRequest, SubmitFuturesPlanOrderRequest, SubmitFuturesSimulatedClaimRequest, SubmitFuturesSubToMainSubFromSubRequest, SubmitFuturesTPSLOrderRequest, SubmitFuturesTrailOrderRequest, SubmitFuturesTransferRequest, TransferFuturesAssetsRequest, UpdateFuturesLimitOrderRequest, UpdateFuturesPlanOrderRequest, UpdateFuturesPresetPlanOrderRequest, UpdateFuturesTPSLOrderRequest } from './types/request/futures.types.js';
import { FuturesAccountAsset, FuturesAccountHistoricOrder, FuturesAccountHistoricTransaction, FuturesAccountOpenOrder, FuturesAccountOrder, FuturesAccountPlanOrders, FuturesAccountPosition, FuturesAccountPositionV2, FuturesAccountSetLeverageResult, FuturesAccountSubTransfer, FuturesAccountTrade, FuturesAccountTransfer, FuturesAffiliateDepositWithdrawalListResult, FuturesAffiliateRebateApiResponse, FuturesAffiliateRebateInviteUserResponse, FuturesAffiliateRebateUserResponse, FuturesAutoRepaymentApiResponse, FuturesContractDepth, FuturesContractDetails, FuturesCrossCollateralInterestLogApiResponse, FuturesFundingRate, FuturesFundingRateHistory, FuturesKline, FuturesLeverageBracketRule, FuturesMarketTrade, FuturesOpenInterest, FuturesOrderSubmitResult, FuturesSimulatedClaimResponse, 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>>;
    getFuturesMarketTrade(params: {
        symbol: string;
        limit?: number;
    }): Promise<APIResponse<FuturesMarketTrade[]>>;
    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[];
    }>>;
    /**
     * Get current leverage risk limit for a specified contract
     * @param params Optional parameters including symbol
     * @returns Promise with leverage bracket information
     */
    getFuturesLeverageBracket(params?: {
        symbol?: string;
    }): Promise<APIResponse<{
        rules: FuturesLeverageBracketRule[];
    }>>;
    /**
     *
     * 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: GetFuturesOrderRequest): 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[]>>;
    getFuturesAccountPositionsV2(params?: {
        symbol?: string;
        account?: string;
    }): Promise<APIResponse<FuturesAccountPositionV2[]>>;
    /**
     * 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[]>>;
    /**
     * Query auto repayment records (KEYED). Defaults to last 7 days if times omitted; max 20 records per request.
     */
    getFuturesAutoRepayment(params?: FuturesAutoRepaymentRequest): Promise<FuturesAutoRepaymentApiResponse>;
    /**
     * Query cross margin interest accrual logs (KEYED). Defaults to last 7 days; max interval 90 days; max 20 records per request.
     */
    getFuturesCrossCollateralInterestLog(params?: FuturesCrossCollateralInterestLogRequest): Promise<FuturesCrossCollateralInterestLogApiResponse>;
    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: CancelFuturesOrderRequest): 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: CancelFuturesPlanOrderRequest): 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: CancelFuturesTrailOrderRequest): 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>>;
    /**
     * Get single user rebate data (KEYED)
     * GET `contract/private/affiliate/rebate-user`
     */
    getFuturesAffiliateRebateUser(params: FuturesAffiliateRebateUserRequest): Promise<APIResponse<FuturesAffiliateRebateUserResponse>>;
    /**
     * Get invited customer list (KEYED)
     * GET `contract/private/affiliate/rebate-inviteUser`
     * Feature: list entries include `accountAssetTotal` (exchange update 2026-04-07).
     */
    getFuturesAffiliateRebateInviteUser(params: FuturesAffiliateRebateInviteUserRequest): Promise<APIResponse<FuturesAffiliateRebateInviteUserResponse>>;
    /**
     * Get API Rebate Data (KEYED)
     * Used for API affiliates to query contract API rebate data within a certain time range
     * Feature: Query up to 60 days of data
     */
    getFuturesAffiliateRebateApi(params: FuturesAffiliateRebateApiRequest): Promise<APIResponse<FuturesAffiliateRebateApiResponse>>;
    /**
     * Deposit and withdrawal information of invited users (KEYED)
     * Feature: Query up to 60 days; max 50 records per page (exchange update 2026-04-07).
     */
    getFuturesAffiliateDepositWithdrawalList(params: FuturesAffiliateDepositWithdrawalListRequest): Promise<FuturesAffiliateDepositWithdrawalListResult>;
    /**
     * Simulated Claim (SIGNED)
     * Add available funds to the futures account (Only available in the Simulated-Environment)
     *
     * Note: This endpoint is only available in the Simulated Trading environment.
     * To use this endpoint, create a client instance with demoTrading: true
     * Example:
     *   const simulatedClient = new FuturesClientV2({
     *     apiKey: 'your-api-key',
     *     apiSecret: 'your-api-secret',
     *     apiMemo: 'your-api-memo',
     *     demoTrading: true
     *   });
     *
     * Alternatively, you can manually set baseUrl: 'https://demo-api-cloud-v2.bitmart.com'
     */
    submitFuturesSimulatedClaim(params?: SubmitFuturesSimulatedClaimRequest): Promise<APIResponse<FuturesSimulatedClaimResponse>>;
}
