import { callEvents } from '../protocol/events/call-events'; import * as proto from '../protocol/protocol'; import * as wireEntities from '../protocol/wire-entities'; import { ArtichokeApi } from '../artichoke/artichoke-api'; import { CallReason } from './call-reason'; import { CallType } from './call-type'; import { PeerConnectionStatus, PeerDataChannelMessage, RemoteTrack, RTCPool } from '../rtc/rtc-pool'; import { Observable } from 'rxjs'; import { DataChannelMessage } from '../rtc/data-channel'; import { LoggerService } from '../logger/logger-service'; import { MediaTrackOptimizer } from '../rtc/media-track-optimizer'; export declare abstract class Call implements wireEntities.Call { private logger; private mediaTrackOptimizer; protected artichokeApi: ArtichokeApi; private pool; readonly id: proto.ID; readonly created: proto.Timestamp; readonly creator: proto.ID; readonly direct: boolean; ended?: proto.Timestamp; users: ReadonlyArray; readonly invitees: ReadonlyArray; readonly orgId?: proto.ID; abstract readonly callType: CallType; addTracks(tracks: ReadonlyArray): void; addTrack(track: MediaStreamTrack): void; removeTrack(track: MediaStreamTrack): void; get remoteTrack$(): Observable; replaceTrackByKind(track: MediaStreamTrack): Promise; broadcast(message: DataChannelMessage): void; get message$(): Observable; get peerStatus$(): Observable; getCachedUsers(): ReadonlyArray; getUsers(): Promise>; getMessages(): Promise>; answer(tracks: ReadonlyArray): Promise; reject(reason: CallReason): Promise; pull(tracks: ReadonlyArray): Promise; leave(reason: CallReason): Promise; setAudioToggle(enabled: boolean, timestamp: proto.Timestamp): void; setVideoToggle(enabled: boolean, timestamp: proto.Timestamp, content?: proto.VideoContentType): void; get answered$(): Observable; get rejected$(): Observable; get left$(): Observable; get offline$(): Observable; get online$(): Observable; get joined$(): Observable; get activeDevice$(): Observable; get end$(): Observable; get audioToggle$(): Observable; get videoToggle$(): Observable; protected constructor(call: wireEntities.Call, logger: LoggerService, mediaTrackOptimizer: MediaTrackOptimizer, artichokeApi: ArtichokeApi, pool: RTCPool, tracks?: ReadonlyArray); protected getInvited$(): Observable; private getCallEvent; private establishRTCWithOldUsers; }