import { CallStatus } from "./CallStatus";
import { CallOptions } from "./options/CallOptions";
import { Endpoint } from "../util/Endpoint";
import { AudioFilter } from "./options/filters/audio/AudioFilter";
import { CallsApiEvent } from "./event/CallsApiEvents";
import { CallsEventHandlers } from "./event/CallsEventHandlers";
import { CustomData } from "./CustomDataType";
import { AudioQualityMode } from "./options/AudioQualityMode";
export interface Call {
    id(): string;
    options(): CallOptions;
    customData(): CustomData;
    status(): CallStatus;
    duration(): number;
    startTime(): Date;
    establishTime(): Date;
    endTime(): Date;
    mute(shouldMute: boolean): Promise<void>;
    muted(): boolean;
    sendDTMF(dtmf: string): Promise<void>;
    source(): Endpoint;
    destination(): Endpoint;
    counterpart(): Endpoint;
    setAudioInputDevice(deviceId: string): Promise<void>;
    audioFilter(): AudioFilter;
    setAudioFilter(audioFilter: AudioFilter): Promise<void>;
    clearAudioFilter(): Promise<void>;
    setAudioQualityMode(audioQualityMode: AudioQualityMode): void;
    audioQualityMode(): AudioQualityMode;
    hangup(): void;
    on(name: CallsApiEvent.RINGING, handler: CallsEventHandlers.Ringing): void;
    on(name: CallsApiEvent.EARLY_MEDIA, handler: CallsEventHandlers.EarlyMedia): void;
    on(name: CallsApiEvent.ESTABLISHED, handler: CallsEventHandlers.Established): void;
    on(name: CallsApiEvent.HANGUP, handler: CallsEventHandlers.Hangup): void;
    on(name: CallsApiEvent.ERROR, handler: CallsEventHandlers.Error): void;
    on(name: CallsApiEvent.NETWORK_QUALITY_CHANGED, handler: CallsEventHandlers.NetworkQualityChanged): void;
    on(name: CallsApiEvent.CALL_RECORDING_STARTED, handler: CallsEventHandlers.CallRecordingStartedEvent): void;
    on(name: CallsApiEvent.RECONNECTING, handler: CallsEventHandlers.Reconnecting): void;
    on(name: CallsApiEvent.RECONNECTED, handler: CallsEventHandlers.Reconnected): void;
}
