import ViewarApi from "@viewar/api"; import { Observable } from "rxjs"; declare module "@viewar/call" { interface JSONType { [key: string]: string | number | boolean | JSONType | JSONType[] } interface CallClientArgs { host?: string, debug?: boolean } interface JoinArgs { sessionId: string, username?: string, password?: string, userData: ClientData } enum ClientChange { JOIN = 'joined', LEFT = 'left', UPDATED = 'updated' } interface CallArgs { id: string, role: "receiver" | "sender" } interface AnswerCallArgs { syncScene?: boolean, data?: ClientData, } enum UserRole { Client = "Client", Admin = "Admin", } interface ClientData extends JSONType { available: boolean, timestamp: number, } interface Client { id: string, data: ClientData, role: UserRole, } interface CallClient { connect: () => boolean, join: (args: JoinArgs) => Promise, leave: () => Promise, setData: (data: ClientData) => void, call: (args: CallArgs) => Promise, endCall: () => Promise, answerCall: (args: AnswerCallArgs) => Promise, rejectCall: () => Promise, sendData: (type: string, data: JSONType) => Promise, getData: (type: string) => Observable, reconnect: (attempt: number) => Promise, readonly connected: boolean, readonly id: string, readonly session: string, readonly callActive: boolean, readonly incomingCall: Observable<{ id: string, userData: ClientData}>, readonly acceptedCall: Observable<{ id: string, data: JSONType}>, readonly refusedCall: Observable, readonly endedCall: Observable, readonly lineBusy: Observable, readonly disconnect: Observable, readonly clientsUpdate: Observable<{ clients: Client[], id: string, type: ClientChange }>, readonly error: Observable<{ message: string }>, readonly isSupportAgent: boolean, readonly isUser: boolean, readonly clients: Client[], } function createCallClient(viewarApi: typeof ViewarApi, args: CallClientArgs): CallClient; }