import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, OnDestroy, QueryList, TemplateRef } from '@angular/core';
import { MenuItem, PrimeTemplate, TooltipOptions } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import { ButtonProps } from 'primeng/button';
import { SpeedDialStyle } from './style/speeddialstyle';
import * as i0 from "@angular/core";
import * as i1 from "primeng/api";
/**
 * When pressed, a floating action button can display multiple primary actions that can be performed on a page.
 * @group Components
 */
export declare class SpeedDial extends BaseComponent implements AfterViewInit, AfterContentInit, OnDestroy {
    /**
     * List of items id.
     * @group Props
     */
    id: string | undefined;
    /**
     * MenuModel instance to define the action items.
     * @group Props
     */
    model: MenuItem[] | null;
    /**
     * Specifies the visibility of the overlay.
     * @defaultValue false
     * @group Props
     */
    get visible(): boolean;
    set visible(value: boolean);
    /**
     * Inline style of the element.
     * @group Props
     */
    style: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Style class of the element.
     * @group Props
     */
    className: string | undefined;
    /**
     * Specifies the opening direction of actions.
     * @gruop Props
     */
    direction: 'up' | 'down' | 'left' | 'right' | 'up-left' | 'up-right' | 'down-left' | 'down-right' | undefined;
    /**
     * Transition delay step for each action item.
     * @group Props
     */
    transitionDelay: number;
    /**
     * Specifies the opening type of actions.
     * @group Props
     */
    type: 'linear' | 'circle' | 'semi-circle' | 'quarter-circle' | undefined;
    /**
     * Radius for *circle types.
     * @group Props
     */
    radius: number;
    /**
     * Whether to show a mask element behind the speeddial.
     * @group Props
     */
    mask: boolean;
    /**
     * Whether the component is disabled.
     * @group Props
     */
    disabled: boolean;
    /**
     * Whether the actions close when clicked outside.
     * @group Props
     */
    hideOnClickOutside: boolean;
    /**
     * Inline style of the button element.
     * @group Props
     */
    buttonStyle: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Style class of the button element.
     * @group Props
     */
    buttonClassName: string | undefined;
    /**
     * Inline style of the mask element.
     * @group Props
     */
    maskStyle: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Style class of the mask element.
     * @group Props
     */
    maskClassName: string | undefined;
    /**
     * Show icon of the button element.
     * @group Props
     */
    showIcon: string | undefined;
    /**
     * Hide icon of the button element.
     * @group Props
     */
    hideIcon: string | undefined;
    /**
     * Defined to rotate showIcon when hideIcon is not present.
     * @group Props
     */
    rotateAnimation: boolean;
    /**
     * Defines a string value that labels an interactive element.
     * @group Props
     */
    ariaLabel: string | undefined;
    /**
     * Identifier of the underlying input element.
     * @group Props
     */
    ariaLabelledBy: string | undefined;
    /**
     * Whether to display the tooltip on items. The modifiers of Tooltip can be used like an object in it. Valid keys are 'event' and 'position'.
     * @group Props
     */
    tooltipOptions: TooltipOptions;
    /**
     * Used to pass all properties of the ButtonProps to the Button component.
     * @group Props
     */
    buttonProps: ButtonProps;
    /**
     * Fired when the visibility of element changed.
     * @param {boolean} boolean - Visibility value.
     * @group Emits
     */
    onVisibleChange: EventEmitter<boolean>;
    /**
     * Fired when the visibility of element changed.
     * @param {boolean} boolean - Visibility value.
     * @group Emits
     */
    visibleChange: EventEmitter<boolean>;
    /**
     * Fired when the button element clicked.
     * @param {MouseEvent} event - Mouse event.
     * @group Emits
     */
    onClick: EventEmitter<MouseEvent>;
    /**
     * Fired when the actions are visible.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onShow: EventEmitter<Event>;
    /**
     * Fired when the actions are hidden.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onHide: EventEmitter<Event>;
    container: ElementRef | undefined;
    list: ElementRef | undefined;
    /**
     * Template of the button.
     * @group Templates
     */
    buttonTemplate: TemplateRef<any> | undefined;
    /**
     * Template of the item.
     * @group Templates
     */
    itemTemplate: TemplateRef<any> | undefined;
    /**
     * Template of the item.
     * @group Templates
     */
    iconTemplate: TemplateRef<any> | undefined;
    templates: QueryList<PrimeTemplate> | undefined;
    _buttonTemplate: TemplateRef<any> | undefined;
    _itemTemplate: TemplateRef<any> | undefined;
    _iconTemplate: TemplateRef<any> | undefined;
    isItemClicked: boolean;
    _visible: boolean;
    documentClickListener: any;
    focusedOptionIndex: import("@angular/core").WritableSignal<any>;
    focused: boolean;
    _componentStyle: SpeedDialStyle;
    get focusedOptionId(): any;
    get rootStyles(): {};
    get listStyles(): {};
    getTooltipOptions(item: MenuItem): {
        tooltipLabel: string;
        disabled: boolean;
        tooltipPosition?: "right" | "left" | "top" | "bottom";
        tooltipEvent?: "hover" | "focus";
        appendTo?: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;
        positionStyle?: string;
        tooltipStyleClass?: string;
        tooltipZIndex?: string;
        escape?: boolean;
        positionTop?: number;
        positionLeft?: number;
        showDelay?: number;
        hideDelay?: number;
        life?: number;
        id?: string;
    };
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    show(): void;
    hide(): void;
    onButtonClick(event: MouseEvent): void;
    onItemClick(e: Event, item: MenuItem): void;
    onKeyDown(event: KeyboardEvent): void;
    onFocus(event: any): void;
    onBlur(event: any): void;
    onArrowUp(event: any): void;
    onArrowDown(event: any): void;
    onArrowLeft(event: any): void;
    onArrowRight(event: any): void;
    onEndKey(event: any): void;
    onHomeKey(event: any): void;
    onEnterKey(event: any): void;
    onEscapeKey(event: KeyboardEvent): void;
    onTogglerKeydown(event: KeyboardEvent): void;
    onTogglerArrowUp(event: any): void;
    onTogglerArrowDown(event: any): void;
    navigateNextItem(event: any): void;
    navigatePrevItem(event: any): void;
    findPrevOptionIndex(index: any): number;
    findNextOptionIndex(index: any): number;
    changeFocusedOptionIndex(index: any): void;
    calculatePointStyle(index: number): {
        left: string;
        top: string;
        bottom?: undefined;
        right?: undefined;
    } | {
        left: string;
        bottom: string;
        top?: undefined;
        right?: undefined;
    } | {
        right: string;
        top: string;
        left?: undefined;
        bottom?: undefined;
    } | {
        right: string;
        bottom: string;
        left?: undefined;
        top?: undefined;
    } | {
        left?: undefined;
        top?: undefined;
        bottom?: undefined;
        right?: undefined;
    };
    calculateTransitionDelay(index: number): number;
    containerClass(): {
        [x: string]: boolean;
        'p-speeddial-open': boolean;
        'p-disabled': boolean;
    };
    buttonClass(): string;
    get buttonIconClass(): string;
    getItemStyle(index: number): {
        left: string;
        top: string;
        bottom?: undefined;
        right?: undefined;
        transitionDelay: string;
    } | {
        left: string;
        bottom: string;
        top?: undefined;
        right?: undefined;
        transitionDelay: string;
    } | {
        right: string;
        top: string;
        left?: undefined;
        bottom?: undefined;
        transitionDelay: string;
    } | {
        right: string;
        bottom: string;
        left?: undefined;
        top?: undefined;
        transitionDelay: string;
    } | {
        left?: undefined;
        top?: undefined;
        bottom?: undefined;
        right?: undefined;
        transitionDelay: string;
    };
    isClickableRouterLink(item: MenuItem): boolean;
    isOutsideClicked(event: Event): boolean;
    bindDocumentClickListener(): void;
    unbindDocumentClickListener(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SpeedDial, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SpeedDial, "p-speeddial, p-speedDial, p-speed-dial", never, { "id": { "alias": "id"; "required": false; }; "model": { "alias": "model"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "style": { "alias": "style"; "required": false; }; "className": { "alias": "className"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "transitionDelay": { "alias": "transitionDelay"; "required": false; }; "type": { "alias": "type"; "required": false; }; "radius": { "alias": "radius"; "required": false; }; "mask": { "alias": "mask"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "hideOnClickOutside": { "alias": "hideOnClickOutside"; "required": false; }; "buttonStyle": { "alias": "buttonStyle"; "required": false; }; "buttonClassName": { "alias": "buttonClassName"; "required": false; }; "maskStyle": { "alias": "maskStyle"; "required": false; }; "maskClassName": { "alias": "maskClassName"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "hideIcon": { "alias": "hideIcon"; "required": false; }; "rotateAnimation": { "alias": "rotateAnimation"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "tooltipOptions": { "alias": "tooltipOptions"; "required": false; }; "buttonProps": { "alias": "buttonProps"; "required": false; }; }, { "onVisibleChange": "onVisibleChange"; "visibleChange": "visibleChange"; "onClick": "onClick"; "onShow": "onShow"; "onHide": "onHide"; }, ["buttonTemplate", "itemTemplate", "iconTemplate", "templates"], never, true, never>;
    static ngAcceptInputType_transitionDelay: unknown;
    static ngAcceptInputType_radius: unknown;
    static ngAcceptInputType_mask: unknown;
    static ngAcceptInputType_disabled: unknown;
    static ngAcceptInputType_hideOnClickOutside: unknown;
    static ngAcceptInputType_rotateAnimation: unknown;
}
export declare class SpeedDialModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SpeedDialModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SpeedDialModule, never, [typeof SpeedDial, typeof i1.SharedModule], [typeof SpeedDial, typeof i1.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SpeedDialModule>;
}
