import { CdkTrapFocus } from '@angular/cdk/a11y';
import { CdkScrollable, Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';
import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, InjectionToken, OnInit, TemplateRef, Type } from '@angular/core';
import { KbqComponentColors, KbqPopUp, KbqPopUpTrigger, PopUpPlacements, PopUpSizes } from '@koobiq/components/core';
import * as i0 from "@angular/core";
export declare const defaultOffsetYWithArrow = 8;
export declare class KbqPopoverComponent extends KbqPopUp implements AfterViewInit {
    prefix: string;
    header: string | TemplateRef<any>;
    footer: string | TemplateRef<any>;
    trigger: KbqPopoverTrigger;
    isTrapFocus: boolean;
    hasCloseButton: boolean;
    popoverContent: ElementRef<HTMLDivElement>;
    elementRef: ElementRef;
    cdkTrapFocus: CdkTrapFocus;
    private debounceTime;
    isContentTopOverflow: boolean;
    isContentBottomOverflow: boolean;
    ngAfterViewInit(): void;
    onContentChange(): void;
    checkContentOverflow(contentElement: HTMLElement): void;
    updateClassMap(placement: string, customClass: string, size: PopUpSizes): void;
    updateTrapFocus(isTrapFocus: boolean): void;
    onEscape(): void;
    protected readonly componentColors: typeof KbqComponentColors;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqPopoverComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqPopoverComponent, "kbq-popover-component", never, {}, {}, never, never, false, never>;
}
export declare const KBQ_POPOVER_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>;
/** @docs-private */
export declare function kbqPopoverScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy;
/** @docs-private */
export declare const KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER: {
    provide: InjectionToken<() => ScrollStrategy>;
    deps: (typeof Overlay)[];
    useFactory: typeof kbqPopoverScrollStrategyFactory;
};
/** Creates an error to be thrown if the user supplied an invalid popover position. */
export declare function getKbqPopoverInvalidPositionError(position: string): Error;
export declare class KbqPopoverTrigger extends KbqPopUpTrigger<KbqPopoverComponent> implements AfterContentInit, OnInit {
    protected scrollStrategy: () => ScrollStrategy;
    /** prevents closure by any event */
    preventClose: boolean;
    /** disables default padding for all popover elements (header, content and footer) */
    defaultPaddings: boolean;
    get popoverVisible(): boolean;
    set popoverVisible(value: boolean);
    get popoverPlacement(): PopUpPlacements;
    set popoverPlacement(value: PopUpPlacements);
    get popoverPlacementPriority(): string | string[] | null;
    set popoverPlacementPriority(value: string | string[] | null);
    get hasBackdrop(): boolean;
    set hasBackdrop(value: boolean);
    private _hasBackdrop;
    get header(): string | TemplateRef<any>;
    set header(value: string | TemplateRef<any>);
    private _header;
    get content(): string | TemplateRef<any>;
    set content(value: string | TemplateRef<any>);
    get footer(): string | TemplateRef<any>;
    set footer(value: string | TemplateRef<any>);
    private _footer;
    get disabled(): boolean;
    set disabled(value: boolean);
    get trigger(): string;
    set trigger(value: string);
    private _trigger;
    get size(): PopUpSizes;
    set size(value: PopUpSizes);
    private _size;
    get customClass(): string;
    set customClass(value: string);
    /** Context for popover templates (kbqPopoverHeader, kbqPopoverContent and kbqPopoverFooter). */
    get context(): unknown;
    set context(ctx: unknown);
    private _context;
    get hasCloseButton(): boolean;
    set hasCloseButton(value: boolean);
    private _hasCloseButton;
    /**
     * Controls the behavior of closing the component on scroll.
     * The default value is `false`.
     * Use CloseScrollStrategy as alternative
     */
    get closeOnScroll(): boolean | null;
    set closeOnScroll(value: boolean);
    private _closeOnScroll;
    get hasClickTrigger(): boolean;
    backdropClass: string;
    arrow: boolean;
    offset: number | null;
    /** Delay before closing in milliseconds. The default value for kbqTrigger=PopUpTriggers.Hover is 500 ms. */
    leaveDelay: number;
    readonly placementChange: EventEmitter<any>;
    readonly visibleChange: EventEmitter<boolean>;
    protected originSelector: string;
    protected get overlayConfig(): OverlayConfig;
    ngOnInit(): void;
    ngAfterContentInit(): void;
    updateData(): void;
    /** Updates the position of the current popover. */
    updatePosition(reapplyPosition?: boolean): void;
    getOverlayHandleComponentType(): Type<KbqPopoverComponent>;
    updateClassMap(newPlacement?: string): void;
    closingActionsForClick(): import("rxjs").Observable<MouseEvent>[];
    defaultClosingActions(): import("rxjs").Observable<MouseEvent>[];
    closingActions(): import("rxjs").Observable<void | CdkScrollable | MouseEvent>;
    private hideIfNotInViewPort;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqPopoverTrigger, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPopoverTrigger, "[kbqPopover]", ["kbqPopover"], { "preventClose": { "alias": "kbqPopoverPreventClose"; "required": false; }; "defaultPaddings": { "alias": "defaultPaddings"; "required": false; }; "popoverVisible": { "alias": "kbqPopoverVisible"; "required": false; }; "popoverPlacement": { "alias": "kbqPopoverPlacement"; "required": false; }; "popoverPlacementPriority": { "alias": "kbqPopoverPlacementPriority"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "header": { "alias": "kbqPopoverHeader"; "required": false; }; "content": { "alias": "kbqPopoverContent"; "required": false; }; "footer": { "alias": "kbqPopoverFooter"; "required": false; }; "disabled": { "alias": "kbqPopoverDisabled"; "required": false; }; "trigger": { "alias": "kbqTrigger"; "required": false; }; "size": { "alias": "kbqPopoverSize"; "required": false; }; "customClass": { "alias": "kbqPopoverClass"; "required": false; }; "context": { "alias": "kbqPopoverContext"; "required": false; }; "hasCloseButton": { "alias": "hasCloseButton"; "required": false; }; "closeOnScroll": { "alias": "closeOnScroll"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "arrow": { "alias": "kbqPopoverArrow"; "required": false; }; "offset": { "alias": "kbqPopoverOffset"; "required": false; }; "leaveDelay": { "alias": "kbqLeaveDelay"; "required": false; }; }, { "placementChange": "kbqPopoverPlacementChange"; "visibleChange": "kbqPopoverVisibleChange"; }, never, never, false, never>;
    static ngAcceptInputType_preventClose: unknown;
    static ngAcceptInputType_defaultPaddings: unknown;
    static ngAcceptInputType_arrow: unknown;
    static ngAcceptInputType_offset: unknown;
    static ngAcceptInputType_leaveDelay: unknown;
}
