import { AnimationEvent } from '@angular/animations';
import { ChangeDetectorRef, DestroyRef, ElementRef, EventEmitter, OnDestroy, Renderer2, TemplateRef } from '@angular/core';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { PopUpVisibility } from './constants';
import { KbqPopUpTrigger } from './pop-up-trigger';
import * as i0 from "@angular/core";
export declare abstract class KbqPopUp implements OnDestroy {
    protected readonly renderer: Renderer2;
    protected readonly elementRef: ElementRef<HTMLElement>;
    protected readonly changeDetectorRef: ChangeDetectorRef;
    readonly destroyRef: DestroyRef;
    /** Stream that emits when the popup item is hovered. */
    readonly hovered: BehaviorSubject<boolean>;
    trigger: KbqPopUpTrigger<unknown>;
    header: string | TemplateRef<any>;
    content: string | TemplateRef<any>;
    context: {
        $implicit: any;
    } | null;
    classMap: {};
    warning: boolean;
    arrow: boolean;
    defaultPaddings: boolean;
    offset: number | null;
    visibility: PopUpVisibility;
    visibleChange: EventEmitter<boolean>;
    protected prefix: string;
    /** Subject for notifying that the tooltip has been hidden from the view */
    protected readonly onHideSubject: Subject<void>;
    protected closeOnInteraction: boolean;
    private showTimeoutId;
    private hideTimeoutId;
    ngOnDestroy(): void;
    isTemplateRef(value: any): boolean;
    show(delay: number): void;
    /**
     * Hides the popup after a specified delay.
     *
     * The hide timeout triggers the hiding of the popup by updating visibility and emitting relevant events.
     * Also, it marks for check to ensure proper change detection, especially for parent components with OnPush strategy.
     * @param delay - The delay in milliseconds before hiding the popup.
     */
    hide(delay: number): void;
    isVisible(): boolean;
    updateClassMap(placement: string, customClass: string, classMap?: any): void;
    /** Returns an observable that notifies when the tooltip has been hidden from view. */
    afterHidden(): Observable<void>;
    markForCheck(): void;
    detectChanges(): void;
    animationStart(): void;
    animationDone({ toState }: AnimationEvent): void;
    handleBodyInteraction(): void;
    protected addEventListenerForHide(): void;
    protected setStickPosition(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqPopUp, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPopUp, never, never, {}, {}, never, never, false, never>;
}
