import { Socket } from "socket.io";
import { HotWebSocketServer } from "./HotWebSocketServer";
/**
 * The server-side websocket connection to the client.
 */
export declare class HotWebSocketServerClient {
    /**
     * The connected socket.
     */
    webSocketServer: HotWebSocketServer;
    /**
     * 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;
    constructor(webSocketServer: HotWebSocketServer, socket: Socket);
    /**
     * This client's id.
     */
    getId(): string;
    /**
     * Get the client's ip.
     */
    getIP(): string;
    /**
     * Tag a client. This is useful when trying to send messages to groups of clients.
     */
    tag(tag: string): 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.
     */
    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;
    /**
     * Send an event to the client. You can optionally receive a response from the client.
     */
    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=HotWebSocketServerClient.d.ts.map