import { MessageEvent } from "ws";
import { AccountInfo, Candle, CandleResolution, ClientParams, Order, Orderbook, OrderSide } from "../context";
import { AbstractClient } from "../clients";
export declare class OkxClient extends AbstractClient {
    private okxAccInfo;
    private publicEndpoint;
    private privateEndpoint;
    private businessEndpoint;
    private accountHandler;
    private candlesHandler;
    private tickerHandler;
    private orderbookHandler;
    private okxHttpClient;
    private publicWss;
    private privateWss;
    private businessWss;
    private instInfo;
    constructor(clientParams: ClientParams);
    initialize(): Promise<void>;
    private initialCandle;
    private initialInstInfo;
    /**
     * 创建websocket连接
     *
     * @param onOpen - Callback function invoked when the WebSocket connection is opened.
     * @param onClose - Callback function invoked when the WebSocket connection is closed.
     * @param onMessage - Callback function invoked when a message is received from the WebSocket.
     * @returns The SocketClient instance.
     */
    createSocketClient(): void;
    /**
     * 登录
     */
    login(): Promise<void>;
    handleMessage(message: MessageEvent): Promise<void>;
    getPrice(): number;
    getOrderbook(): Orderbook;
    getAccountInfo(): AccountInfo;
    getCandles(resolution: CandleResolution): Candle[];
    /**
     * 下单
     * @param clientId 客户端id，clOrdId
     * @param side 买卖方向
     * @param ordType 订单类型market/limit
     * @param size
     * @param px
     * @param reduceOnly
     * @param tdMode 交易模式，保证金模式 isolated
     */
    private placeOrder;
    /**
     * 市价下单
     * @param clientId
     * @param side
     * @param size
     * @param reduceOnly
     */
    private placeMarketOrder;
    /**
     * 市价买
     * @param clientId
     * @param size
     */
    buy(clientId: number, price: number, size: number): Promise<void>;
    /**
     * 市价卖
     * @param clientId
     * @param size
     */
    sell(clientId: number, price: number, size: number): Promise<void>;
    /**
     * 市价平仓
     * @param side
     * @param price
     * @param size
     */
    close(clientId: number, side: OrderSide, size: number): Promise<void>;
    /**
     * 限价下单
     * @param clientId
     * @param side
     * @param size
     * @param reduceOnly
     */
    private placeLimitOrder;
    /**
     * 限价买
     * @param price
     * @param size
     * @param goodTillTime
     */
    buyLimit(clientId: number, price: number, size: number): Promise<void>;
    /**
     * 限价卖
     * @param price
     * @param size
     * @param clientId
     * @param goodTillTime
     */
    sellLimit(clientId: number, price: number, size: number): Promise<void>;
    /**
     * 限价平仓
     * @param side
     * @param price
     * @param size
     */
    closeLimit(clientId: number, side: OrderSide, price: number, size: number): Promise<void>;
    /**
     * 撤单
     * @param order 原订单
     */
    cancel(order: Order): Promise<void>;
    private calculateSize;
    destroy(): void;
}
