/**
 * REST - ACCOUNT  - BASIC INFO
 * Get Account Ledgers - Futures
 */
export interface FuturesAccountTransaction {
    time: number;
    type: 'RealisedPNL' | 'Deposit' | 'Withdrawal' | 'TransferIn' | 'TransferOut';
    amount: number;
    fee: number | null;
    accountEquity: number;
    status: 'Completed' | 'Pending';
    remark: string;
    offset: number;
    currency: string;
}
/**
 * REST - ACCOUNT  - SUBACCOUNT API
 */
export interface SubAccountAPI {
    apiKey: string;
    createdAt: number;
    ipWhitelist: string;
    permission: string;
    remark: string;
    subName: string;
}
export type CreateSubAccountAPI = SubAccountAPI & {
    apiSecret: string;
    passphrase: string;
};
export interface UpdateSubAccountAPI {
    apiKey: string;
    ipWhitelist: string;
    permission: string;
    subName: string;
}
/**
 * REST - FUNDING - FUNDING OVERVIEW
 */
export interface AccountBalance {
    accountEquity: number;
    unrealisedPNL: number;
    marginBalance: number;
    positionMargin: number;
    orderMargin: number;
    frozenFunds: number;
    availableBalance: number;
    currency: string;
    riskRatio: number;
    maxWithdrawAmount: number;
    availableMargin: number;
}
export interface AccountSummary {
    accountEquityTotal: number;
    unrealisedPNLTotal: number;
    marginBalanceTotal: number;
    positionMarginTotal: number;
    orderMarginTotal: number;
    frozenFundsTotal: number;
    availableBalanceTotal: number;
    currency: string;
}
export interface FuturesSubAccount {
    accountName: string;
    accountEquity: number;
    unrealisedPNL: number;
    marginBalance: number;
    positionMargin: number;
    orderMargin: number;
    frozenFunds: number;
    availableBalance: number;
    currency: string;
}
/**
 * REST - FUNDING - TRANSFER
 */
export interface TransferDetail {
    applyId: string;
    bizNo: string;
    payAccountType: string;
    payTag: string;
    remark: string;
    recAccountType: string;
    recTag: string;
    recRemark: string;
    recSystem: string;
    status: string;
    currency: string;
    amount: string;
    fee: string;
    sn: number;
    reason: string;
    createdAt: number;
    updatedAt: number;
}
interface TransferOutRequestRecord {
    applyId: string;
    currency: string;
    recRemark: string;
    recSystem: string;
    status: string;
    amount: string;
    reason: string;
    offset: number;
    createdAt: number;
    remark: string;
}
export interface FuturesTransferRecords {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: TransferOutRequestRecord[];
}
/**
 *
 * Futures Market Data
 *
 */
export interface FuturesSymbolInfo {
    symbol: string;
    rootSymbol: string;
    type: 'FFWCSX' | 'FFICSX';
    firstOpenDate: number;
    expireDate: number | null;
    settleDate: number | null;
    baseCurrency: string;
    quoteCurrency: string;
    settleCurrency: string;
    /** Display symbol for multilingual compatibility (added 2025.12.26 & 2026.01.12) */
    displaySymbol?: string;
    /** Display base currency for multilingual compatibility (added 2025.12.26 & 2026.01.12) */
    displayBaseCurrency?: string;
    maxOrderQty: number;
    maxPrice: number;
    lotSize: number;
    tickSize: number;
    indexPriceTickSize: number;
    multiplier: number;
    initialMargin: number;
    maintainMargin: number;
    maxRiskLimit: number;
    minRiskLimit: number;
    riskStep: number;
    makerFeeRate: number;
    takerFeeRate: number;
    takerFixFee: number;
    makerFixFee: number;
    settlementFee: number | null;
    isDeleverage: boolean;
    isQuanto: boolean;
    isInverse: boolean;
    markMethod: 'FairPrice';
    fairMethod: 'FundingRate';
    fundingBaseSymbol: string;
    fundingQuoteSymbol: string;
    fundingRateSymbol: string;
    indexSymbol: string;
    settlementSymbol: string | null;
    status: 'Init' | 'Open' | 'BeingSettled' | 'Settled' | 'Paused' | 'Closed' | 'CancelOnly';
    fundingFeeRate: number;
    predictedFundingFeeRate: number;
    fundingRateGranularity: number;
    effectiveFundingRateCycleStartTime: number;
    currentFundingRateGranularity: number;
    openInterest: string;
    turnoverOf24h: number;
    volumeOf24h: number;
    markPrice: number;
    indexPrice: number;
    lastTradePrice: number;
    nextFundingRateTime: number;
    maxLeverage: number;
    sourceExchanges: string[];
    premiumsSymbol1M: string;
    premiumsSymbol8H: string;
    fundingBaseSymbol1M: string;
    fundingQuoteSymbol1M: string;
    lowPrice: number;
    highPrice: number;
    priceChgPct: number;
    priceChg: number;
    k: number;
    m: number;
    f: number;
    mmrLimit: number;
    mmrLevConstant: number;
    supportCross: boolean;
}
export interface TickerDetail {
    sequence: number;
    symbol: string;
    side: string;
    size: number;
    price: string;
    bestBidSize: number;
    bestBidPrice: string;
    bestAskSize: number;
    bestAskPrice: string;
    tradeId: string;
    ts: number;
}
export interface MarketTradeDetail {
    sequence: number;
    tradeId: string;
    takerOrderId: string;
    makerOrderId: string;
    price: string;
    size: number;
    side: string;
    ts: number;
}
export interface FullOrderBookDetail {
    symbol: string;
    sequence: number;
    asks: [number, number][];
    bids: [number, number][];
    ts: number;
}
export type FuturesKline = [
    number,
    number,
    number,
    number,
    number,
    number,
    number
];
export interface InterestRateItem {
    symbol: string;
    granularity: number;
    timePoint: number;
    value: number;
}
export interface IndexListItem {
    symbol: string;
    granularity: number;
    timePoint: number;
    value: number;
    decomposionList: {
        exchange: string;
        price: number;
        weight: number;
    }[];
}
export interface FuturesMarkPrice {
    symbol: string;
    granularity: number;
    timePoint: number;
    value: number;
    indexPrice: number;
}
export interface PremiumIndexItem {
    symbol: string;
    granularity: number;
    timePoint: number;
    value: number;
}
/**
 *
 ***********
 * Account
 ***********
 *
 */
/**
 *
 * Orders
 *
 */
export interface FuturesOrder {
    id: string;
    symbol: string;
    type: 'market' | 'limit';
    side: 'buy' | 'sell';
    price: string;
    size: number;
    value: string;
    dealValue: string;
    dealSize: number;
    stp: 'CN' | 'CO' | 'CB' | '';
    stop: string;
    stopPriceType: 'TP' | 'MP' | 'IP' | '';
    stopTriggered: boolean;
    stopPrice: number | null;
    /**
     * Time in Force. Added 'RPI' as of 2025.01.02
     * - GTC: Good Till Cancel
     * - IOC: Immediate Or Cancel
     * - RPI: Retail Price Improvement Order (Phase 1: Futures only)
     */
    timeInForce: string;
    postOnly: boolean;
    hidden: boolean;
    iceberg: boolean;
    leverage: string;
    forceHold: boolean;
    closeOrder: boolean;
    visibleSize: number;
    clientOid: string;
    remark: string | null;
    tags: string;
    isActive: boolean;
    cancelExist: boolean;
    createdAt: number;
    /** Updated time, standardized to nanoseconds as of 2026.01.12 */
    updatedAt: number;
    endAt: number | null;
    /** Order time, standardized to nanoseconds as of 2026.01.12 */
    orderTime: number;
    settleCurrency: string;
    marginMode: 'ISOLATED' | 'CROSS';
    avgDealPrice: string;
    filledSize: number;
    filledValue: string;
    status: 'open' | 'done';
    reduceOnly: boolean;
}
export interface BatchCancelOrderResult {
    orderId: string | null;
    clientOid: string | null;
    code: string;
    msg: string;
}
export interface SubmitMultipleOrdersFuturesResponse {
    orderId: string;
    clientOid: string;
    symbol: string;
    code: string;
    msg: string;
}
export interface FuturesOrders {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: FuturesOrder[];
}
/**
 *
 * Futures Fills
 *
 */
export interface FuturesFill {
    symbol: string;
    tradeId: string;
    orderId: string;
    side: 'buy' | 'sell';
    liquidity: 'taker' | 'maker';
    forceTaker: boolean;
    price: string;
    size: number;
    value: string;
    openFeePay: string;
    closeFeePay: string;
    stop: string;
    feeRate: string;
    fixFee: string;
    feeCurrency: string;
    marginMode: 'ISOLATED' | 'CROSS';
    fee: string;
    settleCurrency: string;
    orderType: 'market' | 'limit';
    displayType: 'limit' | 'market' | 'limit_stop' | 'market_stop';
    tradeType: 'trade' | 'cancel' | 'liquid' | 'adl' | 'settlement';
    subTradeType: string | null;
    /** Trade time (execution time), standardized to nanoseconds as of 2026.01.12 */
    tradeTime: number;
    createdAt: number;
    /** Whether it is an RPI trade (added 2025.01.02) */
    isRpiTrade?: boolean;
}
export interface FuturesFills {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: FuturesFill[];
}
export interface FuturesActiveOrder {
    openOrderBuySize: number;
    openOrderSellSize: number;
    openOrderBuyCost: string;
    openOrderSellCost: string;
    settleCurrency: string;
}
/**
 *
 * Futures Positions
 *
 */
export interface BatchMarginModeUpdateResponse {
    marginMode: {
        [symbol: string]: 'ISOLATED' | 'CROSS';
    };
    errors: {
        code: string;
        msg: string;
        symbol: string;
    }[];
}
export interface GetPositionModeResponse {
    positionMode: 0 | 1;
}
export interface MaxOpenSize {
    symbol: string;
    maxBuyOpenSize: number;
    maxSellOpenSize: number;
}
export interface FuturesPosition {
    id: string;
    symbol: string;
    marginMode: 'CROSS' | 'ISOLATED';
    crossMode: boolean;
    delevPercentage: number;
    openingTimestamp: number;
    currentTimestamp: number;
    currentQty: number;
    currentCost: number;
    currentComm: number;
    realisedGrossPnl: number;
    realisedGrossCost: number;
    realisedCost: number;
    unrealisedCost: number;
    unrealisedPnlPcnt: number;
    unrealisedPnl: number;
    unrealisedRoePcnt: number;
    isOpen: boolean;
    markPrice: number;
    markValue: number;
    posCost: number;
    posInit: number;
    posMargin: number;
    realisedPnl: number;
    avgEntryPrice: number;
    liquidationPrice: number;
    bankruptPrice: number;
    settleCurrency: string;
    isInverse: boolean;
    positionSide: 'BOTH';
    leverage: number;
    autoDeposit?: boolean;
    maintMarginReq?: number;
    riskLimit?: number;
    realLeverage?: number;
    posCross?: number;
    posCrossMargin?: number;
    posComm?: number;
    posCommCommon?: number;
    posLoss?: number;
    posFunding?: number;
    posMaint?: number;
    maintMargin?: number;
    maintainMargin?: number;
    riskLimitLevel?: number;
}
export interface AddMargin {
    id: string;
    symbol: string;
    autoDeposit: boolean;
    maintMarginReq: number;
    riskLimit: number;
    realLeverage: number;
    crossMode: boolean;
    delevPercentage: number;
    openingTimestamp: number;
    currentTimestamp: number;
    currentQty: number;
    currentCost: number;
    currentComm: number;
    unrealisedCost: number;
    realisedGrossCost: number;
    realisedCost: number;
    isOpen: boolean;
    markPrice: number;
    markValue: number;
    posCost: number;
    posCross: number;
    posInit: number;
    posComm: number;
    posLoss: number;
    posMargin: number;
    posMaint: number;
    maintMargin: number;
    realisedGrossPnl: number;
    realisedPnl: number;
    unrealisedPnl: number;
    unrealisedPnlPcnt: number;
    unrealisedRoePcnt: number;
    avgEntryPrice: number;
    liquidationPrice: number;
    bankruptPrice: number;
    settleCurrency: string;
    userId: number;
}
export interface CrossMarginRiskLimit {
    symbol: string;
    maxOpenSize: number;
    maxOpenValue: string;
    totalMargin: string;
    price: string;
    leverage: string;
    mmr: string;
    imr: string;
    currency: string;
}
export interface CrossMarginRequirement {
    symbol: string;
    imr: string;
    mmr: string;
    size: number;
    positionValue: string;
    price: string;
}
/**
 *
 * Futures risk limit
 *
 */
export interface FuturesRiskLimit {
    symbol: string;
    level: number;
    maxRiskLimit: number;
    minRiskLimit: number;
    maxLeverage: number;
    initialMargin: number;
    maintainMargin: number;
}
/**
 *
 * Futures funding fees
 *
 */
export interface FuturesCurrentFundingRate {
    symbol: string;
    granularity: number;
    timePoint: number;
    value: number;
    predictedValue: number;
    fundingRateCap: number;
    fundingRateFloor: number;
    period: number;
    fundingTime: number;
}
export interface FuturesHistoricFundingRate {
    symbol: string;
    timePoint: number;
    fundingRate: number;
}
export interface FuturesAccountFundingRateHistory {
    id: number;
    symbol: string;
    timePoint: number;
    fundingRate: number;
    markPrice: number;
    positionQty: number;
    positionCost: number;
    funding: number;
    settleCurrency: string;
    context: string;
    marginMode: 'ISOLATED' | 'CROSS';
}
export interface FuturesClosedPosition {
    closeId: string;
    userId: string;
    symbol: string;
    settleCurrency: string;
    leverage: string;
    type: string;
    pnl: string;
    realisedGrossCost: string;
    withdrawPnl: string;
    tradeFee: string;
    fundingFee: string;
    openTime: number;
    closeTime: number;
    openPrice: string;
    closePrice: string;
    marginMode: 'CROSS' | 'ISOLATED';
}
export interface FuturesClosedPositions {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: FuturesClosedPosition[];
}
/**
 *
 * Copy Trading
 *
 */
export interface CopyTradePosition {
    id: string;
    symbol: string;
    autoDeposit: boolean;
    maintMarginReq: string;
    riskLimit: number;
    realLeverage: string;
    crossMode: boolean;
    marginMode: string;
    positionSide: string;
    leverage: string;
    delevPercentage: number;
    openingTimestamp: number;
    currentTimestamp: number;
    currentQty: number;
    currentCost: string;
    currentComm: string;
    unrealisedCost: string;
    realisedGrossCost: string;
    realisedCost: string;
    isOpen: boolean;
    markPrice: string;
    markValue: string;
    posCost: string;
    posCross: string;
    posInit: string;
    posComm: string;
    posLoss: string;
    posMargin: string;
    posMaint: string;
    maintMargin: string;
    realisedGrossPnl: string;
    realisedPnl: string;
    unrealisedPnl: string;
    unrealisedPnlPcnt: string;
    unrealisedRoePcnt: string;
    avgEntryPrice: string;
    liquidationPrice: string;
    bankruptPrice: string;
    settleCurrency: string;
}
/**
 * Switch Margin Mode Response (Copy Trading)
 */
export interface CopyTradeSwitchMarginModeResponse {
    symbol: string;
    marginMode: 'ISOLATED' | 'CROSS';
}
/**
 * Get Cross Margin Requirement Response (Copy Trading)
 */
export interface CopyTradeCrossMarginRequirement {
    imr: string;
    mmr: string;
    positionValue: string;
    price: string;
    size: number;
    symbol: string;
}
/**
 * Switch Position Mode Response (Copy Trading)
 */
export interface CopyTradeSwitchPositionModeResponse {
    positionMode: '0' | '1';
}
export {};
