import { EventEmitter } from 'ee-ts';
/**
 * Інтерфейс, що описує структуру повідомлення.
 */
export interface Message {
    event?: string;
    status?: string;
    seq?: number;
    seq_reply?: number;
    data: any;
    error?: object;
    sock_id?: string;
}
/**
 * Інтерфейс, що описує структуру запиту.
 */
export interface Request {
    seq: number;
    action: string;
    data?: object;
}
/**
 * Інтерфейс, що описує події, які можуть виникнути у сокеті.
 */
export interface SocketEvents {
    /**
     * Обробник події надходження повідомлення.
     * @param msg Повідомлення, що надійшло.
     */
    message(msg: Message): void;
    /**
     * Обробник події закриття з'єднання.
     * @param code Код закриття з'єднання.
     */
    close(code: number): void;
    /**
     * Обробник події відкриття з'єднання.
     */
    open(): void;
}
/**
 * Клас для роботи з WebSocket-з'єднанням.
 */
export declare class Socket extends EventEmitter<SocketEvents> {
    private host;
    private appName?;
    private appVer?;
    private socket;
    /**
     * Конструктор класу Socket.
     * @param host Хост для підключення.
     * @param appName Імя підключення.
     */
    constructor(host: string, appName?: string | undefined, appVer?: string | undefined);
    /**
     * Встановлює з'єднання з WebSocket.
     * @param token Токен для авторизації.
     */
    connect(token: string): void;
    /**
     * Відправляє запит через WebSocket.
     * @param request Запит, який необхідно відправити.
     * @returns Ніколи або null.
     */
    send(request: Request): never | null;
    /**
     * Закриває WebSocket-з'єднання.
     * @param code Код закриття з'єднання (необов'язково).
     */
    close(code?: number): void;
    /**
     * Викликається при відкритті з'єднання.
     * Генерує подію 'open'.
     * @private
     */
    private onOpen;
    /**
     * Викликається при закритті з'єднання.
     * Генерує подію 'close' та очищає слухачів подій.
     * @param code Код закриття з'єднання.
     * @private
     */
    private onClose;
    /**
     * Викликається при отриманні повідомлення.
     * Парсує дані повідомлення і генерує подію 'message'.
     * @param data Дані повідомлення у форматі рядка.
     * @private
     */
    private onMessage;
}
//# sourceMappingURL=socket.d.ts.map