/**
 *
 * * Spot | Market
 *
 */
export interface SpotCoinChainV2 {
    chain: string;
    needTag: boolean;
    withdrawable: boolean;
    rechargeable: boolean;
    withdrawFee: string;
    extraWithdrawFee: string;
    depositConfirm: string;
    withdrawConfirm: string;
    minDepositAmount: string;
    minWithdrawAmount: string;
    browserUrl: string;
    contractAddress: string;
    withdrawStep: string;
    withdrawMinScale: string;
    congestion: string;
}
export interface SpotCoinInfoV2 {
    coinId: string;
    coin: string;
    transfer: boolean;
    chains: SpotCoinChainV2[];
}
export interface SpotSymbolInfoV2 {
    symbol: string;
    baseCoin: string;
    quoteCoin: string;
    minTradeAmount: string;
    maxTradeAmount: string;
    takerFeeRate: string;
    makerFeeRate: string;
    pricePrecision: string;
    quantityPrecision: string;
    quotePrecision: string;
    minTradeUSDT: string;
    status: string;
    buyLimitPriceRatio: string;
    sellLimitPriceRatio: string;
    orderQuantity: string;
    areaSymbol: string;
    maxLimitOrderValue?: string;
    maxMarketOrderValue?: string;
}
export interface SpotVipFeeRateV2 {
    level: number;
    dealAmount: string;
    assetAmount: string;
    takerFeeRate: string;
    makerFeeRate: string;
    btcWithdrawAmount: string;
    usdtWithdrawAmount: string;
}
export interface SpotTickerV2 {
    symbol: string;
    high24h: string;
    open: string;
    low24h: string;
    lastPr: string;
    quoteVolume: string;
    baseVolume: string;
    usdtVolume: string;
    bidPr: string;
    askPr: string;
    bidSz: string;
    askSz: string;
    openUtc: string;
    ts: string;
    changeUtc24h: string;
    change24h: string;
}
export interface SpotMergeDepthV2 {
    asks: [string, string][];
    bids: [string, string][];
    ts: string;
    scale: string;
    precision: string;
    isMaxPrecision: string;
}
export interface SpotOrderBookDepthV2 {
    asks: [string, string][];
    bids: [string, string][];
    ts: string;
}
export type SpotCandlestickV2 = [
    string,
    string,
    string,
    string,
    string,
    string,
    string,
    string
];
export interface SpotTradeV2 {
    symbol: string;
    tradeId: string;
    side: string;
    price: string;
    size: string;
    ts: string;
}
/**
 *
 * * Spot | Trade
 *
 */
export interface CancelAndSubmitSpotOrderResponseV2 {
    orderId: string;
    clientOid: string | null;
    success: string;
    msg: string | null;
}
export interface SubmitSpotBatchOrdersResponseV2 {
    successList: {
        orderId: string;
        clientOid: string;
    }[];
    failureList: {
        orderId: string;
        clientOid: string;
        errorMsg: string;
        errorCode?: string;
    }[];
}
export interface SpotOrderInfoV2 {
    userId: string;
    symbol: string;
    orderId: string;
    clientOid: string;
    price: string;
    size: string;
    orderType: string;
    side: string;
    status: string;
    priceAvg: string;
    baseVolume: string;
    quoteVolume: string;
    enterPointSource: string;
    feeDetail: {
        BGB?: {
            deduction: boolean;
            feeCoinCode: string;
            totalDeductionFee: string;
            totalFee: string;
        };
        newFees?: {
            c: number;
            d: number;
            deduction: boolean;
            r: string;
            t: string;
            totalDeductionFee: number;
        };
    };
    orderSource: string;
    cancelReason: string;
    cTime: string;
    uTime: string;
}
export interface SpotOpenOrderV2 {
    userId: string;
    symbol: string;
    orderId: string;
    clientOid: string;
    priceAvg: string;
    size: string;
    orderType: string;
    side: string;
    status: string;
    basePrice: string;
    baseVolume: string;
    quoteVolume: string;
    enterPointSource: string;
    orderSource?: string;
    presetTakeProfitPrice: string;
    executeTakeProfitPrice: string;
    presetStopLossPrice: string;
    executeStopLossPrice: string;
    cTime: string;
    uTime?: string;
    tpslType: string;
    triggerPrice: string | null;
}
export interface SpotFillV2 {
    userId: string;
    symbol: string;
    orderId: string;
    tradeId: string;
    orderType: string;
    side: string;
    priceAvg: string;
    size: string;
    amount: string;
    feeDetail: {
        deduction: string;
        feeCoin: string;
        totalDeductionFee: string;
        totalFee: string;
    };
    tradeScope: string;
    cTime: string;
    uTime: string;
}
/**
 *
 * * Spot | Trigger Orders
 *
 */
export interface SpotCurrentPlanOrderV2 {
    orderId: string;
    clientOid: string;
    symbol: string;
    size: string;
    executePrice: string;
    triggerPrice: string;
    status: string;
    orderType: string;
    side: string;
    planType: string;
    triggerType: string;
    enterPointSource: string;
    uTime: string;
    cTime: string;
}
export interface SpotHistoryPlanOrderV2 {
    orderId: string;
    clientOid: string;
    symbol: string;
    size: string;
    executePrice: string;
    triggerPrice: string;
    status: string;
    orderType: string;
    side: string;
    planType: string;
    triggerType: string;
    enterPointSource: string;
    uTime: string;
    cTime: string;
}
export interface SpotPlanSubOrderV2 {
    orderId: string;
    price: string;
    type: string;
    status: string;
}
export interface SpotCancelPlanOrdersV2 {
    successList: {
        orderId: string;
        clientOid: string;
    }[];
    failureList: {
        orderId: string;
        clientOid: string;
        errorMsg: string;
    }[];
}
/**
 *
 * * Spot | Account
 *
 */
export interface SpotAccountInfoV2 {
    userId: string;
    inviterId: string;
    ips: string;
    authorities: string[];
    parentId: number;
    traderType: string;
    channelCode: string;
    channel: string;
    regisTime: string;
}
export interface SpotAccountAssetV2 {
    coin: string;
    available: string;
    frozen: string;
    locked: string;
    limitAvailable: string;
    uTime: string;
}
export interface SpotSubAccountAssetV2 {
    coin: string;
    available: string;
    limitAvailable: string;
    frozen: string;
    locked: string;
    uTime: string;
}
export interface SpotSubAccountAssetsV2 {
    userId: number;
    assetsList: SpotSubAccountAssetV2[];
}
export interface SpotAccountBillV2 {
    cTime: string;
    coin: string;
    groupType: string;
    businessType: string;
    size: string;
    balance: string;
    fees: string;
    billId: string;
}
export interface SpotMainSubTransferRecordV2 {
    coin: string;
    status: string;
    toType: string;
    fromType: string;
    size: string;
    ts: string;
    clientOid: string;
    transferId: string;
    fromUserId: string;
    toUserId: string;
}
export interface SpotTransferRecordV2 {
    coin: string;
    status: string;
    toType: string;
    toSymbol: string;
    fromType: string;
    fromSymbol: string;
    size: string;
    ts: string;
    clientOid: string;
    transferId: string;
}
export interface SpotDepositAddressV2 {
    address: string;
    chain: string;
    coin: string;
    tag: string;
    url: string;
}
export interface SpotSubAccountDepositRecordV2 {
    orderId: string;
    tradeId: string;
    coin: string;
    size: string;
    status: string;
    toAddress: string;
    dest: string;
    chain: string;
    fromAddress: string;
    clientOid?: string;
    confirm?: string;
    tag?: string;
    cTime: string;
    uTime: string;
}
export interface SpotWithdrawalRecordV2 {
    orderId: string;
    tradeId: string;
    coin: string;
    dest: string;
    clientOid: string;
    type: string;
    tag: string;
    size: string;
    fee: string;
    status: string;
    toAddress: string;
    fromAddress: string;
    confirm: string;
    chain: string;
    cTime: string;
    uTime: string;
}
export interface SpotDepositRecordV2 {
    orderId: string;
    tradeId: string;
    coin: string;
    type: string;
    size: string;
    status: string;
    toAddress: string;
    dest: string;
    chain: string;
    fromAddress: string;
    cTime: string;
    uTime: string;
}
