import { ICallsettings } from "../types";
import { OngoingCallListener } from "./Listener";
export declare class CallSettings {
    static POSITION_TOP_LEFT: string;
    static POSITION_TOP_RIGHT: string;
    static POSITION_BOTTOM_LEFT: string;
    static POSITION_BOTTOM_RIGHT: string;
    static POSITION: {
        readonly TOP_LEFT: "top-left";
        readonly TOP_RIGHT: "top-right";
        readonly BOTTOM_LEFT: "bottom-left";
        readonly BOTTOM_RIGHT: "bottom-right";
    };
    static ASPECT_RATIO_DEFAULT: string;
    static ASPECT_RATIO_CONTAIN: string;
    static ASPECT_RATIO_COVER: string;
    static ASPECT_RATIO: {
        readonly DEFAULT: "default";
        readonly CONTAIN: "contain";
        readonly COVER: "cover";
    };
    private defaultLayout;
    private isAudioOnly;
    private mode;
    private ShowEndCallButton;
    private ShowMuteAudioButton;
    private ShowPauseVideoButton;
    private ShowScreenShareButton;
    private ShowSwitchModeButton;
    private StartAudioMuted;
    private StartVideoMuted;
    private localizedObject;
    private analyticsSettings;
    private customCSS;
    private ShowRecordingButton;
    private StartRecordingOnCallStart;
    private callListener;
    private ShowSwitchToVideoCallButton;
    private VirtualBackground;
    private ShowVirtualBackgroundSetting;
    private MainVideoContainerSetting;
    constructor(builder?: CallSettingsBuilder);
    getCallListener(): OngoingCallListener;
    isRecordingButtonEnabled(): boolean;
    shouldStartRecordingOnCallStart(): boolean;
    getCustomCSS(): string;
    isAudioOnlyCall(): boolean;
    isDefaultLayoutEnabled(): boolean;
    getMode(): "DEFAULT" | "SPOTLIGHT" | "TILE";
    getStartWithAudioMuted(): boolean;
    getStartWithVideoMuted(): boolean;
    isEndCallButtonEnabled(): boolean;
    isMuteAudioButtonEnabled(): boolean;
    isPauseVideoButtonEnabled(): boolean;
    isScreenShareButtonEnabled(): boolean;
    isModeButtonEnabled(): boolean;
    getLocalizedStringObject(): Object;
    getAnalyticsSettings(): Object;
    isAudioToVideoButtonEnabled(): boolean;
    getVirtualBackground(): VirtualBackground;
    isVirtualBackgroundSettingEnabled(): boolean;
    getMainVideoContainerSetting(): MainVideoContainerSetting;
}
export declare class CallSettingsBuilder {
    /** @private */ defaultLayout: boolean;
    /** @private */ isAudioOnly: boolean;
    /** @private */ mode: ICallsettings["mode"];
    /** @private */ ShowEndCallButton: boolean;
    /** @private */ ShowMuteAudioButton: boolean;
    /** @private */ ShowPauseVideoButton: boolean;
    /** @private */ ShowScreenShareButton: boolean;
    /** @private */ ShowSwitchModeButton: boolean;
    /** @private */ StartAudioMuted: boolean;
    /** @private */ StartVideoMuted: boolean;
    /** @private */ localizedObject: Object;
    /** @private */ analyticsSettings: Object;
    /** @private */ customCSS: string;
    /** @private */ ShowRecordingButton: boolean;
    /** @private */ StartRecordingOnCallStart: boolean;
    /** @private */ ShowSwitchToVideoCallButton: boolean;
    /** @private */ virtualBackground: VirtualBackground;
    /** @private */ ShowVirtualBackgroundSetting: boolean;
    /** @private */ MainVideoContainerSetting: MainVideoContainerSetting;
    /** @private */ callListener: OngoingCallListener;
    /**
     *
     * @param {boolean} defaultLayout
     * This methods shows/hides the default button layout.
     * If set to true the default button layout will be shown.
     * If set to false the default button layout will be hidden.
     * Default value is true
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    enableDefaultLayout(defaultLayout: boolean): this;
    /**
     *
     * @param {boolean} isAudioOnly
     * This methods sets the type(audio/video) of the call.
     * If set to true, the call will be strictly an audio call.
     * If set to false, the call will be an audio-video call.
     * Default value is false
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    setIsAudioOnlyCall(isAudioOnly: boolean): this;
    /**
     *
     * @param {string} mode
     * This method sets the mode of the call.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    setMode(mode: ICallsettings["mode"]): this;
    /**
     *
     * @param {boolean} showEndCallButton
     * This method shows/hides the end call button.
     * If set to true it will display the end call button.
     * If set to false it will hide the end call button.
     * Default value is true.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    showEndCallButton(showEndCallButton: boolean): this;
    /**
     *
     * @param {boolean} showMuteAudioButton
     * This method shows/hides the mute audio button.
     * If set to true it will display the mute audio button.
     * If set to false it will hide the mute audio button.
     * Default value is true.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    showMuteAudioButton(showMuteAudioButton: boolean): this;
    /**
     *
     * @param {boolean} showPauseVideoButton
     * This method shows/hides the pause video button.
     * If set to true it will display the pause video button.
     * If set to false it will hide the pause video button.
     * Default value is true.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    showPauseVideoButton(showPauseVideoButton: boolean): this;
    /**
     *
     * @param {boolean} showScreenShareButton
     * This method shows/hides the screen share button.
     * If set to true it will display the screen share button.
     * If set to false it will hide the screen share button.
     * Default value is true.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    showScreenShareButton(showScreenShareButton: boolean): this;
    /**
     *
     * @param {boolean} showModeButton
     * This method shows/hides the switch mode button.
     * If set to true it will display the switch mode button.
     * If set to false it will hide the switch mode button.
     * Default value is true.
     * @returns
    */
    showModeButton(showModeButton: boolean): this;
    /**
     *
     * @param {Object} localizedStringObject
     * This method will set the localized text in the call screen.
     * @returns
    */
    setLocalizedStringObject(localizedStringObject: Object): this;
    /**
     * @private
     * @param {Object} analyticsSettings
     * This method will set the settings required for analytics.
     * @returns
    */
    setAnalyticsSettings(analyticsSettings: Object): this;
    /**
     *
     * @param {boolean} audioMuted
     * This method allows the call to be started with audio muted.
     * If set to true, the call will start with audio muted.
     * Default value is false.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    startWithAudioMuted(audioMuted: boolean): this;
    /**
     *
     * @param {boolean} videoMuted
     * This method allows the call to be started with video muted.
     * If set to true, the call will start with video muted.
     * Default value is false.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    startWithVideoMuted(videoMuted: boolean): this;
    /**
     *
     * @param {boolean} showRecordingButton
     * This method shows/hides the recording button.
     * If set to true it will display the recording button.
     * If set to false it will hide the recording button.
     * Default value is false.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    showRecordingButton(showRecordingButton: boolean): this;
    /**
     *
     * @param {boolean} startRecordingOnCallStart
     * This method starts the recording as soon as the call start.
     * If set to true it will start the recording as soon as the call start.
     * Default value is false.
     * @returns {CallSettingsBuilder} Returns the CallSettingsBuilder instance
    */
    startRecordingOnCallStart(startRecordingOnCallStart: boolean): this;
    /**
     *
     * @param {boolean} showAudioToVideoSwitchButton
     * This method shows/hides the switch to video call button.
     * If set to true it will display the switch to video call button.
     * If set to false it will hide the switch to video call button.
     * Default value is true.
     * @returns
    */
    showSwitchToVideoCallButton(showAudioToVideoSwitchButton: boolean): this;
    /**
     *
     * @param {VirtualBackground} virtualBackground
     * This method will set the virtual background setting.
     * This methods takes an Object of VirtualBackground Class.
     * @returns
    */
    setVirtualBackground(virtualBackground: VirtualBackground): this;
    /**
     *
     * @param {boolean} showVirtualBackgroundSetting
     * This method shows/hides the virtual background setting button.
     * If set to true it will display the virtual background setting button.
     * If set to false it will hide the virtual background setting button.
     * Default value is true.
     * @returns
    */
    showVirtualBackgroundSetting(showVirtualBackgroundSetting: boolean): this;
    /**
     *
     * @param {MainVideoContainerSetting} mainVideoContainerSetting
     * This method can be used to customize the main video container.
     * @returns
    */
    setMainVideoContainerSetting(mainVideoContainerSetting: MainVideoContainerSetting): this;
    /**
     *
     * @param {OngoingCallListener} callListener
     * This method can be used to subscribe to available callings events
     * @returns
    */
    setCallListener(callListener: OngoingCallListener): this;
    /**
     * This method will return an object of the CallSettings class.
     * @returns {CallSettings} Returns the CallSettings instance
    */
    build(): CallSettings;
}
export declare class VirtualBackground {
    private AllowBackgroundBlur;
    private AllowUserImages;
    private ShowDefaultImages;
    private SetImages;
    private EnforceBackgroundBlur;
    private EnforceBackgroundImage;
    constructor(builder?: VirtualBackgroundBuilder);
    shouldAllowBackgroundBlur(): boolean;
    shouldAllowUserImages(): boolean;
    shouldShowDefaultImages(): boolean;
    getImages(): Array<String>;
    isBackgroundBlurEnforced(): number;
    getEnforcedBackgroundImage(): string;
}
export declare class VirtualBackgroundBuilder {
    /** @private */ AllowBackgroundBlur: boolean;
    /** @private */ AllowUserImages: boolean;
    /** @private */ ShowDefaultImages: boolean;
    /** @private */ SetImages: string[];
    /** @private */ EnforceBackgroundBlur: number;
    /** @private */ EnforceBackgroundImage: string;
    /**
     *
     * @param {boolean} AllowBackgroundBlur
     * This method will show the background blur option in Virtual Background.
     * If set to true it will show the background blur option.
     * Default value is true.
     * @returns
    */
    allowBackgroundBlur(AllowBackgroundBlur: boolean): this;
    /**
     *
     * @param {boolean} AllowUserImage
     * This method will allow the user to add custom images as background.
     * If set to true it will allow the user to add custom images as background.
     * Default value is true.
     * @returns
    */
    allowUserImages(AllowUserImages: boolean): this;
    /**
     *
     * @param {boolean} ShowDefaultImages
     * This method will show the default images to be used as background.
     * If set to true it will show the default images to be used as background.
     * Default value is true.
     * @returns
    */
    showDefaultImages(ShowDefaultImages: boolean): this;
    /**
     *
     * @param {boolean} SetImages
     * This method will allow user to add custom Images to be used as background. It takes in an array of URLs.
     * @returns
    */
    setImages(SetImages: string[]): this;
    /**
     *
     * @param {number} EnforceBackgroundBlur
     * This method will enforce background blur.
     * This method takes number as input which decides the blur level of the background.
     * Default value is 0.
     * @returns
    */
    enforceBackgroundBlur(EnforceBackgroundBlur: number): this;
    /**
     *
     * @param {string} EnforceBackgroundImage
     * This method will enforce background image.
     * If an URL of the image is sent then that image will be set as background.
     * By default no image is set.
     * @returns
    */
    enforceBackgroundImage(EnforceBackgroundImage: string): this;
    /**
     * This method will return an object of the VirtualBackground class.
     * @returns {VirtualBackground}
    */
    build(): VirtualBackground;
}
export declare class MainVideoContainerSetting {
    private videoFit;
    private zoomButton;
    private nameLabel;
    private network;
    /**
     *
     * @param {string} mainVideoAspectRatio
     * This method is used to set the aspect ratio of main video.
     * The default value is `contain`
     * @returns
    */
    setMainVideoAspectRatio(mainVideoAspectRatio: typeof CallSettings.ASPECT_RATIO[keyof typeof CallSettings.ASPECT_RATIO]): void;
    /**
     *
     * @param {string} position
     * @param {boolean} visibility
     * This method is used to set the position & visibility parameter of the full screen button.
     * By default the full screen button is visible in the `bottom-right` position.
     * @returns
    */
    setFullScreenButtonParams(position: typeof CallSettings.POSITION[keyof typeof CallSettings.POSITION], visibility: boolean): void;
    /**
     *
     * @param {string} position
     * @param {boolean} visibility
     * @param {string} backgroundColor
     * This method is used to set the position, visibility & background color of the name label.
     * By default the name label is visible in the `bottom-left` position with a background-color `rgba(27, 27, 27, 0.4)`
     * @returns
    */
    setNameLabelParams(position: typeof CallSettings.POSITION[keyof typeof CallSettings.POSITION], visibility: boolean, backgroundColor: string): void;
    /**
     *
     * @param {string} position
     * @param {boolean} visibility
     * This method is used to set the position, visibility of the network label.
     * By default the network label is visible in the `bottom-right` position.
     * @returns
    */
    setNetworkLabelParams(position: typeof CallSettings.POSITION[keyof typeof CallSettings.POSITION], visibility: boolean): void;
}
