import { Participant } from "../../util/Participant";
import { NetworkQuality } from "./NetworkQuality";
import VideoRemovalReason from "../../util/VideoRemovalReason";
import { CurrentMediaStats } from "../stats/CurrentMediaStats";
import { TotalMediaStats } from "../stats/TotalMediaStats";
import { ErrorCode } from "./ErrorCode";
import { RecordingType } from "../options/RecordingOptions";
export declare enum CallsApiEvent {
    RINGING = "ringing",
    EARLY_MEDIA = "early-media",
    ESTABLISHED = "established",
    HANGUP = "hangup",
    ERROR = "error",
    CAMERA_VIDEO_ADDED = "camera-video-added",
    CAMERA_VIDEO_UPDATED = "camera-video-updated",
    CAMERA_VIDEO_REMOVED = "camera-video-removed",
    SCREEN_SHARE_ADDED = "screen-share-added",
    SCREEN_SHARE_REMOVED = "screen-share-removed",
    CONFERENCE_JOINED = "conference-joined",
    CONFERENCE_LEFT = "conference-left",
    PARTICIPANT_JOINING = "participant-joining",
    PARTICIPANT_JOINED = "participant-joined",
    PARTICIPANT_MUTED = "participant-muted",
    PARTICIPANT_UNMUTED = "participant-unmuted",
    PARTICIPANT_DEAF = "participant-deaf",
    PARTICIPANT_UNDEAF = "participant-undeaf",
    PARTICIPANT_STARTED_TALKING = "participant-started-talking",
    PARTICIPANT_STOPPED_TALKING = "participant-stopped-talking",
    PARTICIPANT_LEFT = "participant-left",
    PARTICIPANT_CAMERA_VIDEO_ADDED = "participant-camera-video-added",
    PARTICIPANT_CAMERA_VIDEO_REMOVED = "participant-camera-video-removed",
    PARTICIPANT_SCREEN_SHARE_ADDED = "participant-screen-share-added",
    PARTICIPANT_SCREEN_SHARE_REMOVED = "participant-screen-share-removed",
    PARTICIPANT_NETWORK_QUALITY_CHANGED = "participant-network-quality-changed",
    PARTICIPANT_DISCONNECTED = "participant-disconnected",
    PARTICIPANT_RECONNECTED = "participant-reconnected",
    ROOM_JOINED = "room-joined",
    ROOM_LEFT = "room-left",
    REMOTE_MUTED = "remote-muted",
    REMOTE_UNMUTED = "remote-unmuted",
    REMOTE_CAMERA_VIDEO_ADDED = "remote-camera-video-added",
    REMOTE_CAMERA_VIDEO_REMOVED = "remote-camera-video-removed",
    REMOTE_SCREEN_SHARE_ADDED = "remote-screen-share-added",
    REMOTE_SCREEN_SHARE_REMOVED = "remote-screen-share-removed",
    NETWORK_QUALITY_CHANGED = "network-quality-changed",
    REMOTE_NETWORK_QUALITY_CHANGED = "remote-network-quality-changed",
    REMOTE_DISCONNECTED = "remote-disconnected",
    REMOTE_RECONNECTED = "remote-reconnected",
    DIALOG_JOINED = "dialog-joined",
    DIALOG_LEFT = "dialog-left",
    RECONNECTING = "reconnecting",
    RECONNECTED = "reconnected",
    CALL_RECORDING_STARTED = "call-recording-started",
    CALL_RECORDING_STOPPED = "call-recording-stopped",
    CONFERENCE_RECORDING_STARTED = "conference-recording-started",
    CONFERENCE_RECORDING_STOPPED = "conference-recording-stopped",
    DIALOG_RECORDING_STARTED = "dialog-recording-started",
    DIALOG_RECORDING_STOPPED = "dialog-recording-stopped",
    ROOM_RECORDING_STARTED = "room-recording-started"
}
export type AnyCallsApiEvent = CallsApiEvent.RINGING | CallsApiEvent.EARLY_MEDIA | CallsApiEvent.ESTABLISHED | CallsApiEvent.HANGUP | CallsApiEvent.ERROR | CallsApiEvent.CAMERA_VIDEO_ADDED | CallsApiEvent.CAMERA_VIDEO_UPDATED | CallsApiEvent.CAMERA_VIDEO_REMOVED | CallsApiEvent.SCREEN_SHARE_ADDED | CallsApiEvent.SCREEN_SHARE_REMOVED | CallsApiEvent.CONFERENCE_JOINED | CallsApiEvent.CONFERENCE_LEFT | CallsApiEvent.ROOM_JOINED | CallsApiEvent.ROOM_LEFT | CallsApiEvent.PARTICIPANT_JOINING | CallsApiEvent.PARTICIPANT_JOINED | CallsApiEvent.PARTICIPANT_MUTED | CallsApiEvent.PARTICIPANT_UNMUTED | CallsApiEvent.PARTICIPANT_DEAF | CallsApiEvent.PARTICIPANT_UNDEAF | CallsApiEvent.PARTICIPANT_STARTED_TALKING | CallsApiEvent.PARTICIPANT_STOPPED_TALKING | CallsApiEvent.PARTICIPANT_LEFT | CallsApiEvent.PARTICIPANT_CAMERA_VIDEO_ADDED | CallsApiEvent.PARTICIPANT_CAMERA_VIDEO_REMOVED | CallsApiEvent.PARTICIPANT_SCREEN_SHARE_ADDED | CallsApiEvent.PARTICIPANT_SCREEN_SHARE_REMOVED | CallsApiEvent.REMOTE_MUTED | CallsApiEvent.REMOTE_UNMUTED | CallsApiEvent.REMOTE_CAMERA_VIDEO_ADDED | CallsApiEvent.REMOTE_CAMERA_VIDEO_REMOVED | CallsApiEvent.REMOTE_SCREEN_SHARE_ADDED | CallsApiEvent.REMOTE_SCREEN_SHARE_REMOVED | CallsApiEvent.REMOTE_DISCONNECTED | CallsApiEvent.REMOTE_RECONNECTED | CallsApiEvent.NETWORK_QUALITY_CHANGED | CallsApiEvent.PARTICIPANT_NETWORK_QUALITY_CHANGED | CallsApiEvent.PARTICIPANT_DISCONNECTED | CallsApiEvent.PARTICIPANT_RECONNECTED | CallsApiEvent.REMOTE_NETWORK_QUALITY_CHANGED | CallsApiEvent.DIALOG_JOINED | CallsApiEvent.DIALOG_LEFT | CallsApiEvent.RECONNECTED | CallsApiEvent.RECONNECTING | CallsApiEvent.CALL_RECORDING_STARTED | CallsApiEvent.CALL_RECORDING_STOPPED | CallsApiEvent.DIALOG_RECORDING_STARTED | CallsApiEvent.DIALOG_RECORDING_STOPPED | CallsApiEvent.CONFERENCE_RECORDING_STARTED | CallsApiEvent.CONFERENCE_RECORDING_STOPPED | CallsApiEvent.ROOM_RECORDING_STARTED;
export declare namespace CallsApiEvents {
    type RingingEvent = {};
    type EarlyMediaEvent = {
        stream: MediaStream;
    };
    type EstablishedEvent = {
        stream: MediaStream;
    };
    type HangupEvent = {
        errorCode: ErrorCode;
        totalMediaStats: TotalMediaStats;
    };
    type ErrorEvent = {
        errorCode: ErrorCode;
    };
    type CameraVideoAddedEvent = {
        stream: MediaStream;
    };
    type CameraVideoUpdatedEvent = {
        stream: MediaStream;
    };
    type CameraVideoRemovedEvent = {};
    type ScreenShareAddedEvent = {
        stream: MediaStream;
    };
    type ScreenShareRemovedEvent = {
        reason: VideoRemovalReason;
    };
    type ConferenceJoinedEvent = {
        id: string;
        name: string;
        participants: Participant[];
        recordingType: RecordingType;
    };
    type ConferenceLeftEvent = {
        errorCode: ErrorCode;
    };
    type RoomJoinedEvent = {
        id: string;
        name: string;
        participants: Participant[];
        stream: MediaStream;
        recordingType: RecordingType;
    };
    type RoomLeftEvent = {
        errorCode: ErrorCode;
        totalMediaStats: TotalMediaStats;
    };
    type ConferenceFinishedEvent = {
        errorCode: ErrorCode;
    };
    type ParticipantJoiningEvent = {
        participant: Participant;
    };
    type ParticipantJoinedEvent = {
        participant: Participant;
    };
    type ParticipantMutedEvent = {
        participant: Participant;
    };
    type ParticipantUnmutedEvent = {
        participant: Participant;
    };
    type ParticipantDeafEvent = {
        participant: Participant;
    };
    type ParticipantUndeafEvent = {
        participant: Participant;
    };
    type ParticipantStartedTalkingEvent = {
        participant: Participant;
    };
    type ParticipantStoppedTalkingEvent = {
        participant: Participant;
    };
    type ParticipantRemovedEvent = {
        participant: Participant;
    };
    type ParticipantCameraVideoAddedEvent = {
        participant: Participant;
        stream: MediaStream;
    };
    type ParticipantCameraVideoRemovedEvent = {
        participant: Participant;
    };
    type ParticipantScreenShareAddedEvent = {
        participant: Participant;
        stream: MediaStream;
    };
    type ParticipantScreenShareRemovedEvent = {
        participant: Participant;
    };
    type NetworkQualityChangedEvent = {
        networkQuality: NetworkQuality;
        currentMediaStats: CurrentMediaStats;
    };
    type ParticipantNetworkQualityChangedEvent = {
        participant: Participant;
        networkQuality: NetworkQuality;
    };
    type ParticipantDisconnectedEvent = {
        participant: Participant;
    };
    type ParticipantReconnectedEvent = {
        participant: Participant;
    };
    type ReconnectedEvent = {};
    type ReconnectingEvent = {};
    type RemoteMutedEvent = {};
    type RemoteUnmutedEvent = {};
    type RemoteCameraVideoAddedEvent = {
        stream: MediaStream;
    };
    type RemoteCameraVideoRemovedEvent = {};
    type RemoteScreenShareAddedEvent = {
        stream: MediaStream;
    };
    type RemoteScreenShareRemovedEvent = {};
    type RemoteNetworkQualityChangedEvent = {
        networkQuality: NetworkQuality;
    };
    type RemoteDisconnectedEvent = {};
    type RemoteReconnectedEvent = {};
    type DialogJoinedEvent = {
        id: string;
        remote: Participant;
        recordingType: RecordingType;
    };
    type DialogLeftEvent = {
        errorCode: ErrorCode;
    };
    type CallRecordingStartedEvent = {
        recordingType: RecordingType;
    };
    type DialogRecordingStartedEvent = {
        recordingType: RecordingType;
    };
    type ConferenceRecordingStartedEvent = {
        recordingType: RecordingType;
    };
    type RoomRecordingStartedEvent = {
        recordingType: RecordingType;
    };
    type CallRecordingStoppedEvent = {};
    type DialogRecordingStoppedEvent = {};
    type ConferenceRecordingStoppedEvent = {};
}
