import { IConnection } from "./remote-calls"; import { IUser } from "./user"; import { Event } from "./events"; export interface ISDIExchange { connectionId: string; fromDevice: string; toDevice: string; iceCandidates: RTCIceCandidate[]; sdi: RTCSessionDescriptionInit; user?: IUser; } export interface IDeviceRegistration { deviceId: string; user: IUser; groups: string[]; } export interface IDeviceConnection extends IConnection { id: string; pc: RTCPeerConnection; dc: RTCDataChannel; lastAck: number; onAnswer: ((sdi: ISDIExchange) => void); handlers: { [key: string]: ((err: any, result: any) => void); }; remoteUser?: IUser; waitForDataChannel: (label: string) => Promise; } export declare let deviceId: string; export declare let me: IUser; export declare const deviceConnections: { [deviceId: string]: IDeviceConnection; }; export declare const connections: () => IDeviceConnection[]; export declare function init(_deviceId: string, _me: IUser, serverUrl?: string): Promise; export declare function registerDevice(): Promise; export declare function getAvailableDevices(): Promise; export declare const events: { deviceDiscovered: Event; deviceConnected: Event; deviceDisconnected: Event; signalingReconnected: Event; }; export interface IRemoteChunk { type: 'chunk'; id: string; iChunk: number; totalChunks: number; chunk: string; } export declare const chunkSize = 16384; export declare function checkConnection(connection: IDeviceConnection): Promise; export declare function connectToDevice(toDeviceId: any): Promise; export declare function emit(messageType: string, args: any): Promise; export declare function onMessage(messageType: string, handler: (...args: any[]) => any): void;