import * as _angular_core from '@angular/core';
import { TemplateRef, OnInit, OnDestroy, ElementRef } from '@angular/core';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';

type ZPopoverTrigger = 'click' | 'hover' | 'manual';
type ZPopoverPosition = 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right' | 'left' | 'left-top' | 'left-bottom' | 'right' | 'right-top' | 'right-bottom';
type ZPopoverContent = TemplateRef<unknown>;
interface ZPopoverControl {
    close: () => void;
    closeImmediate: () => void;
    show: () => void;
    toggle: () => void;
    isVisible: () => boolean;
    updatePosition: () => void;
}

declare class ZPopoverComponent implements OnInit, OnDestroy {
    private static readonly _openPopovers;
    private readonly _overlay;
    private readonly _overlayPositionBuilder;
    private readonly _renderer;
    private readonly _destroyRef;
    private readonly _platformId;
    private readonly _document;
    private readonly _overlayContainerService;
    private readonly _trigger;
    readonly zShow: _angular_core.OutputEmitterRef<void>;
    readonly zHide: _angular_core.OutputEmitterRef<void>;
    readonly zControl: _angular_core.OutputEmitterRef<ZPopoverControl>;
    readonly zOutsideClick: _angular_core.OutputEmitterRef<MouseEvent>;
    readonly zContent: _angular_core.InputSignal<ZPopoverContent | null>;
    readonly zPosition: _angular_core.InputSignal<ZPopoverPosition>;
    readonly zTrigger: _angular_core.InputSignal<ZPopoverTrigger>;
    readonly zClass: _angular_core.InputSignal<string>;
    readonly zShowDelay: _angular_core.InputSignal<number>;
    readonly zHideDelay: _angular_core.InputSignal<number>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zOffset: _angular_core.InputSignal<number>;
    readonly zManualClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zOutsideClickClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zScrollClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zShowArrow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    private _overlayRef;
    private _componentRef;
    private _delaySubject;
    private _listenerCleanups;
    private _positionSubscription;
    private _scrollSubscription;
    private _resizeObserver;
    private _hideTimeout;
    private readonly _isVisible;
    ngOnInit(): void;
    private _setupOverlayContainerListener;
    private _emitControl;
    ngOnDestroy(): void;
    show(): void;
    hide(): void;
    hideImmediate(): void;
    toggle(): void;
    isOpen(): boolean;
    updatePosition(): void;
    private _createOverlay;
    private _disposeOverlay;
    private _setupDelayMechanism;
    private _setupTriggers;
    private _setupOutsideClick;
    private _delay;
    private _setupScrollClose;
    private _showPopover;
    private _isNestedPopoverTarget;
    private _setupResizeObserver;
    private _setupPopoverHover;
    private _hidePopover;
    private _clearHideTimeout;
    private _cleanupListeners;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZPopoverComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZPopoverComponent, "z-popover", never, { "zContent": { "alias": "zContent"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zTrigger": { "alias": "zTrigger"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zShowDelay": { "alias": "zShowDelay"; "required": false; "isSignal": true; }; "zHideDelay": { "alias": "zHideDelay"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zManualClose": { "alias": "zManualClose"; "required": false; "isSignal": true; }; "zOutsideClickClose": { "alias": "zOutsideClickClose"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zShowArrow": { "alias": "zShowArrow"; "required": false; "isSignal": true; }; }, { "zShow": "zShow"; "zHide": "zHide"; "zControl": "zControl"; "zOutsideClick": "zOutsideClick"; }, never, ["*"], true, never>;
}

declare class ZPopoverDirective implements OnInit, OnDestroy {
    private static readonly _openPopovers;
    readonly zContent: _angular_core.InputSignal<ZPopoverContent | null>;
    readonly zPosition: _angular_core.InputSignal<ZPopoverPosition>;
    readonly zTrigger: _angular_core.InputSignal<ZPopoverTrigger>;
    readonly zPopoverTrigger: _angular_core.InputSignal<ZPopoverTrigger | undefined>;
    readonly zClass: _angular_core.InputSignal<string>;
    readonly zShowDelay: _angular_core.InputSignal<number>;
    readonly zHideDelay: _angular_core.InputSignal<number>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zOffset: _angular_core.InputSignal<number>;
    readonly zPopoverWidth: _angular_core.InputSignal<number | "trigger" | "auto">;
    readonly zTriggerRef: _angular_core.InputSignal<HTMLElement | ElementRef<HTMLElement> | null>;
    readonly zManualClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zOutsideClickClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zScrollClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zShowArrow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zShow: _angular_core.OutputEmitterRef<void>;
    readonly zHide: _angular_core.OutputEmitterRef<void>;
    readonly zHideStart: _angular_core.OutputEmitterRef<void>;
    readonly zControl: _angular_core.OutputEmitterRef<ZPopoverControl>;
    readonly zPositionChange: _angular_core.OutputEmitterRef<ZPopoverPosition>;
    readonly zOutsideClick: _angular_core.OutputEmitterRef<MouseEvent>;
    private readonly _trigger;
    private readonly _overlay;
    private readonly _overlayPositionBuilder;
    private readonly _elementRef;
    private readonly _renderer;
    private readonly _destroyRef;
    private readonly _platformId;
    private readonly _document;
    private readonly _overlayContainerService;
    private _overlayRef;
    private _componentRef;
    private _delaySubject;
    private _listenerCleanups;
    private _positionSubscription;
    private _scrollSubscription;
    private _resizeObserver;
    private _hideTimeout;
    private readonly _isDestroyed;
    private readonly _isVisible;
    ngOnInit(): void;
    private _setupOverlayContainerListener;
    private _emitControl;
    ngOnDestroy(): void;
    show(): void;
    hide(): void;
    hideImmediate(): void;
    toggle(): void;
    isOpen(): boolean;
    updatePosition(): void;
    private _createOverlay;
    private _getWidthConfig;
    private _getTriggerElement;
    private _disposeOverlay;
    private _setupDelayMechanism;
    private _setupTriggers;
    private _setupOutsideClick;
    private _setupScrollClose;
    private _delay;
    private _showPopover;
    private _isNestedPopoverTarget;
    private _setupResizeObserver;
    private _setupPopoverHover;
    private _hidePopover;
    private _clearHideTimeout;
    private _cleanupListeners;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZPopoverDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZPopoverDirective, "[z-popover]", ["zPopover"], { "zContent": { "alias": "zPopoverContent"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zTrigger": { "alias": "zTrigger"; "required": false; "isSignal": true; }; "zPopoverTrigger": { "alias": "zPopoverTrigger"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zShowDelay": { "alias": "zShowDelay"; "required": false; "isSignal": true; }; "zHideDelay": { "alias": "zHideDelay"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zPopoverWidth": { "alias": "zPopoverWidth"; "required": false; "isSignal": true; }; "zTriggerRef": { "alias": "zTriggerRef"; "required": false; "isSignal": true; }; "zManualClose": { "alias": "zManualClose"; "required": false; "isSignal": true; }; "zOutsideClickClose": { "alias": "zOutsideClickClose"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zShowArrow": { "alias": "zShowArrow"; "required": false; "isSignal": true; }; }, { "zShow": "zShow"; "zHide": "zHide"; "zHideStart": "zHideStart"; "zControl": "zControl"; "zPositionChange": "zPositionChange"; "zOutsideClick": "zOutsideClick"; }, never, never, true, never>;
}

declare const zPopoverVariants: (props?: ({
    zPosition?: "top" | "top-left" | "top-right" | "bottom" | "bottom-left" | "bottom-right" | "left" | "left-top" | "left-bottom" | "right" | "right-top" | "right-bottom" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
type ZPopoverVariants = VariantProps<typeof zPopoverVariants>;

export { ZPopoverComponent, ZPopoverDirective, zPopoverVariants };
export type { ZPopoverContent, ZPopoverControl, ZPopoverPosition, ZPopoverTrigger, ZPopoverVariants };
