import { Bubble } from "./Bubble";
import { WebConferenceParticipant } from "./webConferenceParticipant";
/**
 * @module
 * @name WebConferenceSession
 * @description
 * This class is used to represent a web conference session containing
 * all the relevant information to the current conference session
 */
export declare class WebConferenceSession {
    /**
     * @public
     * @name id
     * @description Conference Session ID. This is a global reference of the conference session
     * @type {string}
     * @readonly
     */
    id: string;
    /**
     * @public
     * @name bubble
     * @description The Bubble object related to the conference
     * @type {Bubble}
     * @readonly
     */
    bubble: Bubble;
    /**
     * @public
     * @name status
     * @description The current status of the conference. It could be "connecting", "connected", "reconnecting", "ended"
     * @type {string}
     * @readonly
     */
    status: string;
    /**
     * @public
     * @name duration
     * @description The current duration of the conference (in seconds)
     * @type {number}
     * @readonly
     */
    duration: number;
    /**
     * @public
     * @name localParticipant
     * @description Yourself in the conference
     * @type {WebConferenceParticipant}
     * @readonly
     */
    localParticipant: WebConferenceParticipant;
    /**
     * @public
     * @name participants
     * @description The list of other participants currently connected in the conference
     * @type {WebConferenceParticipant[]}
     * @readonly
     */
    participants: WebConferenceParticipant[];
    /**
     * @public
     * @name hasLocalSharing
     * @description Boolean indicating whether the current user is currently sharing his screen
     * @type {boolean}
     * @readonly
     */
    hasLocalSharing: boolean;
    /**
     * @public
     * @name localSharingSession
     * @description The local sharing session (as a JINGLE SESSION object) or null
     * @type {any}
     * @readonly
     */
    localSharingSession: any;
    /**
     * @public
     * @name audioSession
     * @description The Audio session related to the web conference. (represented as a Jingle Session object)
     * @type {any}
     * @readonly
     */
    audioSession: any;
    private sharingParticipant;
    private pinnedParticipant;
    type: string;
    haveJoined: boolean;
    isInExternalWindow: boolean;
    conferenceView: string;
    externalWindowRef: any;
    isOnlySharingWindow: boolean;
    control: any;
    conferenceLayoutSize: any;
    record: any;
    recordingStarted: boolean;
    currentRecordingState: string;
    isMyConference: boolean;
    dimLocalSharingScreen: boolean;
    localStreams: any;
    jingleJid: string;
    originalVideoStream: any;
    metricsId: string;
    metricsState: string;
    private durationTimer;
    private locked;
    static create(id: string, bubble: Bubble): WebConferenceSession;
    constructor(id: string, bubble: Bubble);
    /**
     * @public
     * @function getParticipants
     * @instance
     * @description
     *    Get a list of all connected participants in the conference (except for yourself)
     * @returns {WebConferenceParticipant[]} Return an array of all WebConferenceParticipants taking part of the web conference
     */
    getParticipants(): WebConferenceParticipant[];
    /**
     * @public
     * @function getLocalParticipant
     * @instance
     * @description
     *    Get yourself as a web conference participant
     * @returns {WebConferenceParticipant} Return the current user as a web conference participant connected to the conference
     */
    getLocalParticipant(): WebConferenceParticipant;
    /**
     * @public
     * @function getBubble
     * @instance
     * @description
     *    Get the bubble related to the web conference session
     * @returns {Bubble} Get the bubble related to the web conference session
     */
    getBubble(): Bubble;
    /**
     * @public
     * @function getAudioSession
     * @instance
     * @description
     *    Get the jingle audio session related to the conference session
     * @returns {any} The jingle audio session related to the conference session
     */
    getAudioSession(): any;
    /**
     * @public
     * @function getSharingParticipant
     * @instance
     * @description
     *    Get web conference participant object that is currently sharing in the conference (could not be myself)
     * @returns {WebConferenceParticipant} Web conference participant object that is currently sharing (could not be myself)
     */
    getSharingParticipant(): WebConferenceParticipant;
    /**
     * @public
     * @function getLocalSharingSession
     * @instance
     * @description
     *    Get the local sharing session (if any)
     * @returns {any} The local sharing session (or null)
     */
    getLocalSharingSession(): any;
    /**
     * @public
     * @function getRemoteSharingSession
     * @instance
     * @description
     *    Get the remote sharing session (if any)
     * @returns {any} The remote sharing session (or null) from the sharing participant object
     */
    getRemoteSharingSession(): any;
    /**
     * @public
     * @function getParticipantById
     * @instance
     * @param {string} participantId the ID of the participant to find
     * @description
     *    Find and return a participant by his Id
     * @returns {WebConferenceParticipant} The WebConferenceParticipant (if found) by his id
     */
    getParticipantById(participantId: string): WebConferenceParticipant;
    /**
     * @public
     * @function isLock
     * @instance
     * @description
     *    Check if the current web conference is locked. In case it's locked, no other user is allowed to join it
     * @returns {boolean} Return a boolean value indicating whether the web conference is currently locked
     */
    isLocked(): boolean;
    /**
     * @public
     * @function getDelegateParticipantsList
     * @instance
     * @description
     *    Get the list of participants to whom we can delegate the current conference. Delegation means that we give
     *    the ownership of the conference to another user
     * @returns {Array} Return an array of WebConferenceParticipant to whom we can delegate the conference
     */
    getDelegateParticipantsList(): WebConferenceParticipant[];
    addOrUpdateParticipant(participant: WebConferenceParticipant): void;
    startDuration(): void;
    stopDuration(): void;
    getPinnedParticipant(): any;
    updatePinnedParticipant(participant?: WebConferenceParticipant, mediaType?: string): void;
    setLocked(lock?: boolean): void;
    setSharingParticipant(participant?: WebConferenceParticipant): void;
    private getParticipantByIdAndMediaType;
}
