import View from './bottom-block.view';
import { IEventEmitter } from '../../event-emitter/types';
import { IPlayControl } from '../controls/play/types';
import { ITimeControl } from '../controls/time/types';
import { IProgressControl } from '../controls/progress/types';
import { IVolumeControl } from '../controls/volume/types';
import { IFullScreenControl } from '../controls/full-screen/types';
import { ILogoControl } from '../controls/logo/types';
import { IDownloadButton } from '../controls/download/types';
import { IChromecastButton } from '../controls/chromecast/types';
import { IPictureInPictureControl } from '../controls/picture-in-picture/types';
import { IBottomBlockAPI, IBottomBlock } from './types';
interface IDependencies {
    eventEmitter: IEventEmitter;
    playControl: IPlayControl;
    progressControl: IProgressControl;
    timeControl: ITimeControl;
    volumeControl: IVolumeControl;
    fullScreenControl: IFullScreenControl;
    logo: ILogoControl;
    downloadButton: IDownloadButton;
    chromecastButton: IChromecastButton;
    pictureInPictureControl: IPictureInPictureControl;
}
interface IAddControllOptions {
    position?: 'left' | 'right';
}
declare class BottomBlock implements IBottomBlock {
    static moduleName: string;
    static View: typeof View;
    static dependencies: string[];
    private _eventEmitter;
    private _isBlockFocused;
    private _unbindEvents;
    view: View;
    isHidden: boolean;
    constructor(dependencies: IDependencies);
    private _getControlElements;
    getElement(): HTMLElement;
    addControl(key: string, element: HTMLElement, options?: IAddControllOptions): void;
    private _initUI;
    private _bindEvents;
    private _bindViewCallbacks;
    private _setFocusState;
    private _removeFocusState;
    get isFocused(): boolean;
    showContent(): void;
    hideContent(): void;
    hide(): void;
    show(): void;
    /**
     * Method for allowing logo to be always shown in bottom block
     * @param flag - `true` for showing always
     * @example
     * player.setAlwaysShowLogo(true);
     *
     */
    setAlwaysShowLogo(flag: boolean): void;
    /**
     * Method for hiding logo. If you use `setAlwaysShowLogo` or `setControlsShouldAlwaysShow`, logo would automaticaly appear.
     * @example
     * player.hideLogo();
     */
    hideLogo(): void;
    /**
     * Method for showing logo.
     * @example
     * player.showLogo();
     */
    showLogo(): void;
    /**
     * Method for showing play control.
     * @example
     * player.showPlayControl();
     */
    showPlayControl(): void;
    /**
     * Method for showing volume control.
     * @example
     * player.showVolumeControl();
     */
    showVolumeControl(): void;
    /**
     * Method for showing time control.
     * @example
     * player.showTimeControl();
     */
    showTimeControl(): void;
    /**
     * Method for showing full screen control.
     * @example
     * player.showFullScreenControl();
     */
    showFullScreenControl(): void;
    /**
     * Method for showing picture-in-picture control.
     * @example
     * player.showPictureInPictureControl();
     */
    showPictureInPictureControl(): void;
    /**
     * Method for showing progress control.
     * @example
     * player.showProgressControl();
     */
    showProgressControl(): void;
    /**
     * Method for showing download button.
     * @example
     * player.showDownloadButton();
     */
    showDownloadButton(): void;
    /**
     * Method for hiding play control.
     * @example
     * player.hidePlayControl();
     */
    hidePlayControl(): void;
    /**
     * Method for hiding voluem control.
     * @example
     * player.hideVolumeControl();
     */
    hideVolumeControl(): void;
    /**
     * Method for hiding time control.
     * @example
     * player.hideTimeControl();
     */
    hideTimeControl(): void;
    /**
     * Method for hiding full screen control.
     * @example
     * player.hideFullScreenControl();
     */
    hideFullScreenControl(): void;
    /**
     * Method for hiding picture-in-picture control.
     * @example
     * player.hidePictureInPictureControl();
     */
    hidePictureInPictureControl(): void;
    /**
     * Method for hiding progress control.
     * @example
     * player.hideProgressControl();
     */
    hideProgressControl(): void;
    /**
     * Method for hiding download button.
     * @example
     * player.hideDownloadButton();
     */
    hideDownloadButton(): void;
    destroy(): void;
}
export { IBottomBlockAPI };
export default BottomBlock;
