import { ClientInfo } from "../model/client_info";
import { Client } from "../model/client_model";
import { NewClientJoinedToRoom } from "../model/messages/NewClientJoined";
import { SessionDescription } from "../model/session_description";
import { Signaling } from "./interface";
export declare class WebSocketSignaling implements Signaling {
    OnServerSendOffer: ((sdp: SessionDescription) => void) | undefined;
    OnServerSendAnswer: ((sdp: SessionDescription) => void) | undefined;
    OnNewClientJoined: ((client: Client) => void) | undefined;
    OnClientLeave: ((client: Client) => void) | undefined;
    OnClientChangeMicrophoneStatus: ((enabled: boolean, client: Client) => void) | undefined;
    OnCloseConnection: (() => void) | undefined;
    OnJoinedInRoom: ((room: NewClientJoinedToRoom) => void) | undefined;
    private _clientsLock;
    private readonly _url;
    private _clientInfo?;
    private _clients;
    private _wsConnection;
    private _connectionPromiseSource;
    constructor(address: string, token: string, port: number, url: string, protocol: 'ws' | 'wss');
    get Clients(): ReadonlyArray<Client>;
    Close(): void;
    Connect(): Promise<ClientInfo>;
    SendMyOffer(sdp: SessionDescription): void;
    SendMyAnswer(sdp: SessionDescription): void;
    SendMyIceCandidate(ice: RTCIceCandidate): void;
    private OnMessage;
    private OnWebSocketClientInfoEventCalled;
    private OnWebSocketNewClientJoinedEventCalled;
    private OnWebSocketClientLeaveEventCalled;
    private JoinToRoomCompleted;
    private SendMessage;
}
//# sourceMappingURL=web_socket.d.ts.map