import { ManagerOptions, Socket, SocketOptions } from "socket.io-client";
/**
 * The client-side websocket client that can be used to connect to the server.
 */
export declare class HotWebSocketClient {
    /**
     * The url to the websocket server.
     */
    url: string;
    /**
     * The connected socket.
     */
    socket: Socket;
    /**
     * Any data that this client socket should contain.
     */
    persistentData: any;
    /**
     * The response received from authorizing a client. Can be a JWT token, api key, etc.
     * DO NOT STORE SENSITIVE INFORMATION HERE SUCH AS PASSWORDS.
     */
    authorizedValue: any;
    /**
     * The callback to call when the client connected.
     */
    onConnect: () => void;
    /**
     * The callback to call when the client has an error while connecting. This will
     * prevent an exception from being thrown.
     */
    onConnectError: (err: any) => void;
    /**
     * The callback to call when the client has an error. This will
     * prevent an exception from being thrown.
     */
    onError: (err: any) => void;
    /**
     * The callback to call when the client disconnects.
     */
    onDisconnect: () => void;
    constructor(url: string, socket?: Socket);
    /**
     * Use an already connected socket.
     */
    useSocket(socket: Socket): void;
    /**
     * Connect to the websocket server.
     */
    connect(auth?: any, query?: any, options?: Partial<ManagerOptions & SocketOptions> | undefined): Promise<void>;
    /**
     * Listen for a client event.
     */
    on(event: string, callback: (data: any, uuid?: string) => void, uuid?: string): void;
    /**
     * Listen for a client event without any intervention. The event will not have any
     * interaction with the event uuid.
     */
    onRaw(event: string, callback: (data: any) => void): void;
    /**
     * Stop listening for a client event.
     */
    off(event: string): void;
    /**
     * Listen for a client event once.
     */
    once(event: string, callback: (data: any, uuid?: string) => void, uuid?: string): void;
    /**
     * Listen for a client event once without any intervention.
     */
    onceRaw(event: string, callback: (data: any) => void): void;
    /**
     * Get the socket's id.
     */
    getId(): string;
    /**
     * Is the socket connected?
     */
    isConnected(): boolean;
    /**
     * Send an event to the client. You can optionally receive a response from the client.
     *
     * @returns The uuid of the event sent.
     */
    send(event: string, data: any, uuid?: string): string;
    /**
     * Send an event to the client, and wait for a response. Every time
     * data is received from this event, the callback will be called.
     */
    sendOn(event: string, data: any, callback: (data: any, uuid?: string) => void, uuid?: string): Promise<any>;
    /**
     * Send an event to the client, and wait for a response once.
     */
    sendOnce(event: string, data: any, uuid?: string): Promise<any>;
    /**
     * Disconnect the client.
     */
    disconnect(removeFromServer?: boolean): void;
}
//# sourceMappingURL=HotWebSocketClient.d.ts.map