/// import { EventEmitter } from 'events'; import { Deferred } from '../internal/promise'; import { Room } from '../room'; import { RemotePeer } from '../remote_peer'; import { LocalPeer } from '../local_peer'; import { PeerConnection } from '../peer_connection'; import { Channel, Signaling, SignalingPeer } from '../types'; export declare type CallingStatus = Record; declare type DataCb = (error: Error | undefined, data?: any) => void; export declare type CallingState = "idle" | "connecting" | "connected" | "closed" | "failed"; export interface CallingOptions { pingInterval: number; timeout: number; remotePing?: number; remoteTimeout?: number; } export declare class Calling extends EventEmitter { id?: string; channel: Channel; room_options: Record; calling_options: CallingOptions; next_tid: number; answers: Record | DataCb>; hello_p: Promise; ping_timeout?: ReturnType; timeout_timeout?: ReturnType; state: CallingState; constructor(channel: Channel, room_options: Record, calling_options?: Partial); connect(): Promise; request(msg: any, cb: DataCb): void; request(msg: any): Promise; ping(): Promise; connectionAlive(): void; resetPing(): void; resetTimeout(): void; subscribe(nsid: string): Promise; register(namespace: string): Promise; unregister(namespace: string): Promise; room(room?: string, options?: Record): CallingRoom; room_signaling(room?: string): CallingSignaling; setStatus(status: Record): Promise; close(): Promise; private setState; } export declare class CallingNamespace extends EventEmitter { calling: Calling; id: string; users: Record; rooms: Record; constructor(calling: Calling, id: string); addUser(id: string, status: Record): CallingNamespaceUser; addRoom(id: string, status: Record, peers: any): CallingNamespaceRoom; unsubscribe(): Promise; } export declare class CallingNamespaceUser extends EventEmitter { id: string; status: CallingStatus; pending: boolean; constructor(id: string, status: Record, pending?: boolean); } export declare class CallingNamespaceRoom extends EventEmitter { id: string; status: CallingStatus; peers: Record; constructor(id: string, status: Record); addPeer(id: string, status: Record, pending: boolean): CallingNamespaceUser; } export declare class CallingNamespaceRoomPeer extends EventEmitter { id: string; status: CallingStatus; pending: boolean; accepted_d: Deferred; constructor(id: string, status: Record, pending: boolean); accepted(): Promise; } export declare class CallingSignaling extends EventEmitter implements Signaling { id?: string; calling: Calling; connect_fun: (peer_status: Record, cb: DataCb) => void; status: CallingStatus; peer_status: CallingStatus; peers: Record; initialized: boolean; connect_p?: Promise; constructor(calling: Calling, connect_fun: (peer_status: Record, cb: DataCb) => void); init(data: any): void; connect(): Promise; addPeer(id: string, status: Record, pending: boolean, first: boolean): CallingSignalingPeer; close(): Promise; setStatus(status: Record): Promise; invite(user: CallingNamespaceUser | string, data?: any): Promise; setRoomStatusSafe(key: string, value: any, previous: any): Promise; setRoomStatus(key: string, value: any): Promise; register(namespace: string): Promise; unregister(namespace: string): Promise; } export declare class CallingSignalingPeer extends EventEmitter implements SignalingPeer { room: CallingSignaling; id: string; status: CallingStatus; pending: boolean; first: boolean; accepted_d: Deferred; constructor(room: CallingSignaling, id: string, status: Record, pending: boolean, first: boolean); accepted(): Promise; send(event: string, data: any): Promise; } export declare class CallingInInvitation extends EventEmitter { calling: Calling; handle: string; sender: string; data: any; cancelled: boolean; constructor(calling: Calling, handle: string, sender: string, data: any); signaling(): CallingSignaling; deny(): Promise; } export declare class CallingOutInvitation { calling: Calling; handle: string; user: string; defer: Deferred; pending: boolean; constructor(calling: Calling, handle: string, user: string); response(): Promise; cancel(): Promise; } export declare class CallingRoom extends Room { peers: Record; constructor(signaling: CallingSignaling, options: Record); createPeer(pc: PeerConnection, signaling: CallingSignalingPeer): CallingPeer; invite(user: CallingNamespaceUser | string, data: any): Promise; register(nsid: string): Promise; unregister(nsid: string): Promise; } export declare class CallingInvitationRoom extends CallingRoom { invitation: CallingInInvitation; sender_id: string; data: any; constructor(invitation: CallingInInvitation, options: Record, sender_id: string, data: any); sender(): CallingPeer; deny(): Promise; } export declare class CallingPeer extends RemotePeer { signaling: CallingSignalingPeer; constructor(pc: PeerConnection, signaling: CallingSignalingPeer, local: LocalPeer, options: Record); connect(): Promise; } export {};