import { PopoverPassThrough, PopoverContentTemplateContext } from 'primeng/types/popover';
export * from 'primeng/types/popover';
import * as _angular_core from '@angular/core';
import { TemplateRef } from '@angular/core';
import { MotionOptions, MotionEvent } from '@primeuix/motion';
import * as i2 from 'primeng/api';
import { OverlayService } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { ConnectedOverlayScrollHandler } from 'primeng/dom';
import { CSSProperties, AppendTo } from 'primeng/types/shared';
import { Nullable, VoidListener } from 'primeng/ts-helpers';
import { Subscription } from 'rxjs';
import { BaseStyle } from 'primeng/base';

declare class PopoverStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: string;
        content: string;
    };
    inlineStyles: {
        root: ({ instance }: {
            instance: any;
        }) => any;
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<PopoverStyle>;
}

/**
 * Popover is a container component that can overlay other components on page.
 * @group Components
 */
declare class Popover extends BaseComponent<PopoverPassThrough> {
    componentName: string;
    $pcPopover: Popover | undefined;
    bindDirectiveInstance: Bind;
    onAfterViewChecked(): void;
    /**
     * Defines a string that labels the input for accessibility.
     * @group Props
     */
    ariaLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
     * @group Props
     */
    ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
    /**
     * Enables to hide the overlay when outside is clicked.
     * @group Props
     */
    dismissable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Inline style of the component.
     * @group Props
     */
    style: _angular_core.InputSignal<CSSProperties>;
    /**
     * Style class of the component.
     * @group Props
     */
    styleClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
     * @defaultValue 'body'
     * @group Props
     */
    appendTo: _angular_core.InputSignal<AppendTo>;
    /**
     * Whether to automatically manage layering.
     * @group Props
     */
    autoZIndex: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Aria label of the close icon.
     * @group Props
     */
    ariaCloseLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Base zIndex value to use in layering.
     * @group Props
     */
    baseZIndex: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * When enabled, first button receives focus on show.
     * @group Props
     */
    focusOnShow: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: _angular_core.InputSignal<MotionOptions | undefined>;
    computedMotionOptions: _angular_core.Signal<MotionOptions>;
    /**
     * Callback to invoke when an overlay becomes visible.
     * @group Emits
     */
    onShow: _angular_core.OutputEmitterRef<any>;
    /**
     * Callback to invoke when an overlay gets hidden.
     * @group Emits
     */
    onHide: _angular_core.OutputEmitterRef<any>;
    $appendTo: _angular_core.Signal<AppendTo>;
    container: Nullable<HTMLDivElement>;
    overlayVisible: _angular_core.WritableSignal<boolean>;
    render: _angular_core.WritableSignal<boolean>;
    selfClick: boolean;
    documentClickListener: VoidListener;
    target: HTMLElement | null;
    willHide: Nullable<boolean>;
    scrollHandler: Nullable<ConnectedOverlayScrollHandler>;
    documentResizeListener: VoidListener;
    /**
     * Custom content template.
     * @param {PopoverContentTemplateContext} context - content context.
     * @see {@link PopoverContentTemplateContext}
     * @group Templates
     */
    contentTemplate: _angular_core.Signal<TemplateRef<PopoverContentTemplateContext> | undefined>;
    onCloseClickCallback: any;
    contentTemplateContext: _angular_core.Signal<PopoverContentTemplateContext>;
    destroyCallback: Nullable<Function>;
    overlayEventListener: Nullable<(event?: any) => void>;
    overlaySubscription: Subscription | undefined;
    _componentStyle: PopoverStyle;
    overlayService: OverlayService;
    bindDocumentClickListener(): void;
    unbindDocumentClickListener(): void;
    /**
     * Toggles the visibility of the panel.
     * @param {Event} event - Browser event
     * @param {Target} target - Target element.
     * @group Method
     */
    toggle(event: any, target?: any): void;
    /**
     * Displays the panel.
     * @param {Event} event - Browser event
     * @param {Target} target - Target element.
     * @group Method
     */
    show(event: any, target?: any): void;
    onOverlayClick(event: MouseEvent): void;
    onContentClick(event: MouseEvent): void;
    hasTargetChanged(event: any, target: any): boolean;
    appendOverlay(): void;
    restoreAppend(): void;
    setZIndex(): void;
    align(): void;
    onAnimationStart(event: MotionEvent): void;
    onAnimationEnd(): void;
    focus(): void;
    /**
     * Hides the panel.
     * @group Method
     */
    hide(): void;
    onCloseClick(event: MouseEvent): void;
    onEscapeKeydown(_event: KeyboardEvent): void;
    onWindowResize(): void;
    bindDocumentResizeListener(): void;
    unbindDocumentResizeListener(): void;
    bindScrollListener(): void;
    unbindScrollListener(): void;
    onContainerDestroy(): void;
    onDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Popover, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Popover, "p-popover", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "dismissable": { "alias": "dismissable"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "autoZIndex": { "alias": "autoZIndex"; "required": false; "isSignal": true; }; "ariaCloseLabel": { "alias": "ariaCloseLabel"; "required": false; "isSignal": true; }; "baseZIndex": { "alias": "baseZIndex"; "required": false; "isSignal": true; }; "focusOnShow": { "alias": "focusOnShow"; "required": false; "isSignal": true; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; }, { "onShow": "onShow"; "onHide": "onHide"; }, ["contentTemplate"], ["*"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class PopoverModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<PopoverModule, never, [typeof Popover, typeof i2.SharedModule], [typeof Popover, typeof i2.SharedModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<PopoverModule>;
}

export { Popover, PopoverModule, PopoverStyle };
