/**
 *
 ***********
 * Spot Trading
 ***********
 *
 */
/**
 *
 * Market data
 *
 */
interface Chain {
    chainName: string;
    withdrawalMinSize: string;
    depositMinSize: string | null;
    withdrawFeeRate: string;
    withdrawalMinFee: string;
    isWithdrawEnabled: boolean;
    isDepositEnabled: boolean;
    confirms: number;
    preConfirms: number;
    contractAddress: string;
    withdrawPrecision: number;
    maxWithdraw: string | null;
    maxDeposit: string | null;
    needTag: boolean;
    chainId: string;
}
export interface CurrencyInfo {
    currency: string;
    name: string;
    fullName: string;
    precision: number;
    confirms: number | null;
    contractAddress: string | null;
    isMarginEnabled: boolean;
    isDebitEnabled: boolean;
    chains: Chain[];
}
export interface SymbolInfo {
    symbol: string;
    name: string;
    baseCurrency: string;
    quoteCurrency: string;
    feeCurrency: string;
    market: 'USDS' | 'BTC' | 'ALTS';
    baseMinSize: string;
    quoteMinSize: string;
    baseMaxSize: string;
    quoteMaxSize: string;
    baseIncrement: string;
    quoteIncrement: string;
    priceIncrement: string;
    priceLimitRate: string;
    minFunds: string;
    isMarginEnabled: boolean;
    enableTrading: boolean;
    feeCategory: 1 | 2 | 3;
    makerFeeCoefficient: string;
    takerFeeCoefficient: string;
    st: boolean;
    callauctionIsEnabled: boolean;
    callauctionPriceFloor: string | null;
    callauctionPriceCeiling: string | null;
    callauctionFirstStageStartTime: number | null;
    callauctionSecondStageStartTime: number | null;
    callauctionThirdStageStartTime: number | null;
    tradingStartTime: number | null;
}
export interface Ticker {
    sequence: string;
    price: string;
    size: string;
    bestAsk: string;
    bestAskSize: string;
    bestBid: string;
    bestBidSize: string;
    time: number;
}
export interface AllTickers {
    time: number;
    ticker: Ticker[];
}
export interface AllTickersItem {
    symbol: string;
    symbolName: string;
    buy: string;
    bestBidSize: string;
    sell: string;
    bestAskSize: string;
    changeRate: string;
    changePrice: string;
    high: string;
    low: string;
    vol: string;
    volValue: string;
    last: string;
    averagePrice: string;
    takerFeeRate: string;
    makerFeeRate: string;
    takerCoefficient: string;
    makerCoefficient: string;
}
export interface Symbol24hrStats {
    time: number;
    symbol: string;
    buy: string;
    sell: string;
    changeRate: string;
    changePrice: string;
    high: string;
    low: string;
    vol: string;
    volValue: string;
    last: string;
    averagePrice: string;
    takerFeeRate: string;
    makerFeeRate: string;
    takerCoefficient: string;
    makerCoefficient: string;
}
export interface OrderBookLevel {
    sequence: string;
    time: number;
    bids: [string, string][];
    asks: [string, string][];
}
export interface CallAuctionInfo {
    symbol: string;
    estimatedPrice: string;
    estimatedSize: string;
    sellOrderRangeLowPrice: string;
    sellOrderRangeHighPrice: string;
    buyOrderRangeLowPrice: string;
    buyOrderRangeHighPrice: string;
    time: number;
}
export interface TradeHistory {
    sequence: string;
    time: number;
    price: string;
    size: string;
    side: string;
}
export type Kline = [string, string, string, string, string, string, string];
/**
 *
 * Spot HF trade
 *
 */
export interface SubmitHFOrderSyncResponse {
    orderId: string;
    orderTime: number;
    originSize: string;
    dealSize: string;
    remainSize: string;
    canceledSize: string;
    status: string;
    matchTime: number;
    clientOid: string;
}
export interface SubmitMultipleHFOrdersResponse {
    orderId: string;
    success?: boolean;
    failMsg?: string;
    clientOid: string;
}
export interface SubmitMultipleHFOrdersSyncResponse {
    orderId: string;
    orderTime: number;
    originSize: string;
    dealSize: string;
    remainSize: string;
    canceledSize: string;
    status: string;
    matchTime: number;
    success: boolean;
    clientOid: string;
}
export interface SyncCancelHFOrderResponse {
    clientOid?: string;
    orderId?: string;
    originSize: string;
    dealSize: string;
    remainSize: string;
    canceledSize: string;
    status: string;
}
export interface CancelAllHFOrdersResponse {
    succeedSymbols?: string[];
    failedSymbols?: {
        symbol: string;
        error: string;
    }[];
}
export interface AutoCancelHFOrderSettingQueryResponse {
    timeout: number;
    symbols: string;
    currentTime: number;
    triggerTime: number;
}
export interface HFFilledOrder {
    id: number;
    orderId: string;
    counterOrderId: string;
    tradeId: number;
    symbol: string;
    side: 'buy' | 'sell';
    liquidity: 'taker' | 'maker';
    type: 'limit' | 'market';
    forceTaker: boolean;
    price: string;
    size: string;
    funds: string;
    fee: string;
    feeRate: string;
    feeCurrency: string;
    stop: string;
    tradeType: string;
    taxRate: string;
    tax: string;
    createdAt: number;
}
export interface HFOrder {
    id: string;
    clientOid: string;
    symbol: string;
    opType: string;
    type: 'limit' | 'market';
    side: 'buy' | 'sell';
    price: string;
    size: string;
    funds: string;
    dealSize: string;
    dealFunds: string;
    remainSize: string;
    remainFunds: string;
    cancelledSize: string;
    cancelledFunds: string;
    fee: string;
    feeCurrency: string;
    stp?: 'DC' | 'CO' | 'CN' | 'CB' | null;
    timeInForce: 'GTC' | 'GTT' | 'IOC' | 'FOK';
    postOnly: boolean;
    hidden: boolean;
    iceberg: boolean;
    visibleSize: string;
    cancelAfter: number;
    channel: string;
    remark?: string | null;
    tags?: string | null;
    cancelExist: boolean;
    tradeType: string;
    inOrderBook: boolean;
    active: boolean;
    tax: string;
    createdAt: number;
    lastUpdatedAt: number;
    cancelReason: number;
}
/**
 *
 * Orders
 *
 */
export interface MultipleOrdersResponse {
    symbol: string;
    type?: string;
    side: string;
    price: string;
    size: string;
    funds?: any;
    stp?: string;
    stop?: string;
    stopPrice?: any;
    timeInForce?: string;
    cancelAfter?: number;
    postOnly?: boolean;
    hidden?: boolean;
    iceberg?: boolean;
    visibleSize?: any;
    channel: string;
    id: string;
    status: string;
    failMsg?: any;
    clientOid: string;
}
export interface SpotOrder {
    id: string;
    symbol: string;
    opType: string;
    type: string;
    side: string;
    price: string;
    size: string;
    funds: string;
    dealFunds: string;
    dealSize: string;
    fee: string;
    feeCurrency: string;
    stp: string;
    stop: string;
    stopTriggered: boolean;
    stopPrice: string;
    timeInForce: string;
    postOnly: boolean;
    hidden: boolean;
    iceberg: boolean;
    visibleSize: string;
    cancelAfter: number;
    channel: string;
    clientOid: string;
    remark: string;
    tags: string;
    isActive: boolean;
    cancelExist: boolean;
    createdAt: number;
    tradeType: string;
}
export interface SpotOrderList {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: SpotOrder[];
}
/**
 *
 * Fills
 *
 */
export interface SpotOrderFill {
    symbol: string;
    tradeId: string;
    orderId: string;
    counterOrderId: string;
    side: 'buy' | 'sell';
    price: string;
    size: string;
    funds: string;
    type: 'limit' | 'market' | 'limit_stop' | 'market_stop';
    fee: string;
    feeCurrency: string;
    stop: string;
    liquidity: 'taker' | 'maker';
    forceTaker: boolean;
    createdAt: number;
    tradeType: 'TRADE' | 'MARGIN_TRADE' | 'MARGIN_ISOLATED_TRADE';
}
export interface SpotOrderFills {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: SpotOrderFill[];
}
/**
 *
 * Stop order
 *
 */
export interface StopOrderItem {
    id?: string;
    symbol?: string;
    userId?: string;
    status?: 'NEW' | 'TRIGGERED';
    type?: 'limit' | 'market' | 'limit_stop' | 'market_stop';
    side?: 'buy' | 'sell';
    price?: string;
    size?: string;
    funds?: string | null;
    stp?: string | null;
    timeInForce?: 'GTC' | 'GTT' | 'IOC' | 'FOK';
    cancelAfter?: number;
    postOnly?: boolean;
    hidden?: boolean;
    iceberg?: boolean;
    visibleSize?: string | null;
    channel?: string;
    clientOid?: string;
    remark?: string | null;
    tags?: string | null;
    domainId?: string;
    tradeSource?: 'USER' | 'MARGIN_SYSTEM';
    tradeType?: 'TRADE' | 'MARGIN_TRADE' | 'MARGIN_ISOLATED_TRADE';
    feeCurrency?: string;
    takerFeeRate?: string;
    makerFeeRate?: string;
    createdAt?: number;
    stop?: 'loss' | 'entry';
    stopTriggerTime?: number | null;
    stopPrice?: string;
    orderTime?: number;
}
export interface StopOrders {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: StopOrderItem[];
}
/**
 *
 * OCO order
 *
 */
export interface OCOOrderSubOrder {
    id: string;
    symbol: string;
    side: 'buy' | 'sell';
    price: string;
    stopPrice: string;
    size: string;
    status: 'NEW' | 'DONE' | 'TRIGGERED' | 'CANCELLED';
}
export interface OCOOrderDetails {
    orderId: string;
    symbol: string;
    clientOid: string;
    orderTime: number;
    status: 'NEW' | 'DONE' | 'TRIGGERED' | 'CANCELLED';
    orders: OCOOrderSubOrder[];
}
export interface OCOOrderListItem {
    orderId: string;
    symbol: string;
    clientOid: string;
    orderTime: number;
    status: 'NEW' | 'DONE' | 'TRIGGERED' | 'CANCELLED';
}
export interface OCOOrders {
    currentPage: number;
    pageSize: number;
    totalNum: number;
    totalPage: number;
    items: OCOOrderListItem[];
}
export {};
