/// <reference types="node" />
import * as $dara from '@darabonba/typescript';
import { AwapMessage, AwapMessageType } from './awap';
import { GeneralMessage } from './general';
export declare class WebSocketClient {
    private wsClient;
    private response;
    private pendingRequests;
    constructor(wsClient: $dara.DefaultWebSocketClient, response: $dara.Response);
    static createWebSocketClient(client: any): WebSocketClient | null;
    getResponse(): $dara.Response;
    close(): Promise<void>;
    reconnect(): Promise<$dara.Response>;
    reconnectGracefully(): Promise<$dara.Response>;
    disconnect(): Promise<void>;
    isConnected(): boolean;
    validate(): void;
    getSessionInfo(): $dara.WebSocketSessionInfo | null;
    sendAwapTextMessage(message: AwapMessage): Promise<void>;
    sendRawAwapTextMessage(msgType: AwapMessageType, payload: any): Promise<void>;
    sendRawAwapTextMessageWithId(msgType: AwapMessageType, id: string, payload: any): Promise<void>;
    sendAwapBinaryMessage(message: AwapMessage): Promise<void>;
    sendRawAwapBinaryMessage(msgType: AwapMessageType, payload: any): Promise<void>;
    sendRawAwapBinaryMessageWithId(msgType: AwapMessageType, id: string, payload: any): Promise<void>;
    sendAwapRequestWithAck(message: AwapMessage, timeoutMs: number): Promise<any>;
    sendRequest(ackID: string, messageText: string, timeoutMs: number): Promise<any>;
    completeRequest(ackID: string, response: any): boolean;
    sendGeneralTextMessage(text: string): Promise<void>;
    sendGeneralBinaryMessage(data: Buffer): Promise<void>;
}
export declare function createWebSocketClient(client: any): WebSocketClient | null;
export declare function newWebSocketClient(wsClient: $dara.DefaultWebSocketClient, response: $dara.Response): WebSocketClient;
export type { AwapMessage, GeneralMessage };
