import { OrderIdRequest } from './types/rest/request/trade.js';
import { OrderResult } from './types/rest/response/private-trade.js';
import { WSAPIResponse } from './types/websockets/ws-api.js';
import { WSAPIAmendOrderRequestV5, WSAPIAmendSpreadOrderRequestV5, WSAPICancelSpreadOrderRequestV5, WSAPIMassCancelOrdersRequestV5, WSAPIPlaceOrderRequestV5, WSAPIPlaceSpreadOrderRequestV5, WSAPISpreadMassCancelOrdersRequestV5 } from './types/websockets/ws-api-request.js';
import { WSAPICancelOrderResultV5, WSAPISpreadAmendOrderResultV5, WSAPISpreadCancelOrderResultV5, WSAPISpreadPlaceOrderResultV5 } from './types/websockets/ws-api-response.js';
import { WSClientConfigurableOptions } from './types/websockets/ws-general.js';
import { DefaultLogger } from './util/logger.js';
import { WebsocketClient } from './websocket-client.js';
/**
 * Configurable options specific to only the REST-like WebsocketAPIClient
 */
export interface WSAPIClientConfigurableOptions {
    /**
     * Default: true
     *
     * Attach default event listeners, which will console log any high level
     * events (opened/reconnecting/reconnected/etc).
     *
     * If you disable this, you should set your own event listeners
     * on the embedded WS Client `wsApiClient.getWSClient().on(....)`.
     */
    attachEventListeners: boolean;
}
/**
 * This is a minimal Websocket API wrapper around the WebsocketClient. It allows you to use the WebSocket API in a promise-driven way, send a request and await the response.
 *
 * Note: You can also directly use the sendWSAPIRequest() method to make WS API calls, but some
 * may find the below methods slightly more intuitive.
 *
 * Refer to the WS API promises example for a more detailed example on using sendWSAPIRequest() directly:
 * https://github.com/tiagosiebler/okx-api/blob/master/examples/ws-api-trade-raw.ts
 */
export declare class WebsocketAPIClient {
    private wsClient;
    private options;
    constructor(options?: WSClientConfigurableOptions & Partial<WSAPIClientConfigurableOptions>, logger?: DefaultLogger);
    getWSClient(): WebsocketClient;
    setTimeOffsetMs(newOffset: number): void;
    /**
     *
     *
     * OKX WebSocket API Methods
     *
     *
     */
    /**
     * Submit a new order
     *
     * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-place-order
     */
    submitNewOrder(params: WSAPIPlaceOrderRequestV5): Promise<WSAPIResponse<[OrderResult], 'order'>>;
    /**
     * Submit multiple orders in a batch
     *
     * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-place-multiple-orders
     */
    submitMultipleOrders(params: WSAPIPlaceOrderRequestV5[]): Promise<WSAPIResponse<OrderResult[], 'batch-orders'>>;
    /**
     * Cancel a single order
     *
     * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-cancel-order
     */
    cancelOrder(params: OrderIdRequest): Promise<WSAPIResponse<[WSAPICancelOrderResultV5], 'cancel-order'>>;
    /**
     * Cancel multiple orders
     *
     * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-cancel-multiple-orders
     */
    cancelMultipleOrders(params: OrderIdRequest[]): Promise<WSAPIResponse<WSAPICancelOrderResultV5[], 'batch-cancel-orders'>>;
    /**
     * Amend a single order
     *
     * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-amend-order
     */
    amendOrder(params: WSAPIAmendOrderRequestV5): Promise<WSAPIResponse<[OrderResult], 'amend-order'>>;
    /**
     * Amend multiple orders
     *
     * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-amend-multiple-orders
     */
    amendMultipleOrders(params: WSAPIAmendOrderRequestV5[]): Promise<WSAPIResponse<[OrderResult], 'batch-amend-orders'>>;
    /**
     * Mass cancel orders
     *
     * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-mass-cancel-order
     */
    massCancelOrders(params: WSAPIMassCancelOrdersRequestV5): Promise<WSAPIResponse<[{
        result: boolean;
    }], 'mass-cancel'>>;
    /**
     * Submit a new spread order
     *
     * https://www.okx.com/docs-v5/en/#spread-trading-websocket-trade-api-ws-place-order
     */
    submitSpreadOrder(params: WSAPIPlaceSpreadOrderRequestV5): Promise<WSAPIResponse<[WSAPISpreadPlaceOrderResultV5], 'sprd-order'>>;
    /**
     * Amend a spread order
     *
     * https://www.okx.com/docs-v5/en/#spread-trading-websocket-trade-api-ws-amend-order
     */
    amendSpreadOrder(params: WSAPIAmendSpreadOrderRequestV5): Promise<WSAPIResponse<[WSAPISpreadAmendOrderResultV5], 'sprd-amend-order'>>;
    /**
     * Cancel a spread order
     *
     * https://www.okx.com/docs-v5/en/#spread-trading-websocket-trade-api-ws-cancel-order
     */
    cancelSpreadOrder(params: WSAPICancelSpreadOrderRequestV5): Promise<WSAPIResponse<[WSAPISpreadCancelOrderResultV5], 'sprd-cancel-order'>>;
    /**
     * Mass cancel spread orders
     *
     * https://www.okx.com/docs-v5/en/#spread-trading-websocket-trade-api-ws-cancel-all-orders
     */
    massCancelSpreadOrders(params: WSAPISpreadMassCancelOrdersRequestV5): Promise<WSAPIResponse<[{
        result: boolean;
    }], 'sprd-mass-cancel'>>;
    /**
     *
     *
     *
     *
     *
     *
     *
     * Private methods for handling some of the convenience/automation provided by the WS API Client
     *
     *
     *
     *
     *
     *
     *
     */
    connectWSAPI(): Promise<unknown[]>;
    private setupDefaultEventListeners;
}
