import { type TBellConfig } from './subscribe_widget.types';
import { type Pushwoosh } from '../../core/Pushwoosh';
export declare class PWSubscriptionButtonWidget {
    widget: HTMLElement;
    tooltip: HTMLElement;
    popover: HTMLElement;
    style: HTMLElement;
    pw: Pushwoosh;
    config: TBellConfig;
    constructor(pw: Pushwoosh);
    run(): Promise<void>;
    /**
     * Apply styles to element
     * @param styles
     * @param {HTMLElement} element
     */
    private addStylesToElement;
    /**
     * Create container element
     * @returns {HTMLElement}
     */
    private createContainer;
    /**
     * Create styles element
     * @returns {HTMLElement}
     */
    private createStyle;
    /**
     * Create cell button element
     * @returns {HTMLElement}
     */
    private createBell;
    /**
     * Create tooltip element
     * @returns {Promise<HTMLElement>}
     */
    private createTooltip;
    /**
     * Create tooltip content element
     * @returns {Promise<HTMLElement>}
     */
    private createTooltipContent;
    /**
     * Tooltip text content depending of the permissions
     * @returns {Promise<string>}
     */
    private tooltipTextFactory;
    /**
     * Create permission denied popover element
     * @returns {HTMLElement}
     */
    private createPopover;
    private getBrowserName;
    /**
     * Create permission denied popover content element
     * @returns {HTMLElement}
     */
    private createPopoverContent;
    /**
     * Return source of help images depending of the browser
     * @returns {string}
     */
    getImageSrc(img: string): string;
    private render;
    addEventListeners(): void;
    /**
     * Toggle visibility of popover
     */
    toggleHelpPopover(): void;
    /**
     * Click bell button event callback
     * @returns {Promise<void>}
     */
    private clickBell;
    /**
     * On subscribe event callback
     * @returns {Promise<void>}
     */
    private onSubscribeEvent;
    /**
     * On permission denied event
     * @returns {Promise<void>}
     */
    private onPermissionDeniedEvent;
    /**
     * Out of popover click event
     * @param {MessageEvent} ev
     */
    clickOutOfPopover(ev: MessageEvent): void;
    private onUnsubscribeEvent;
}
