import { Directionality } from '@angular/cdk/bidi';
import { CdkScrollable, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollDispatcher, ScrollStrategy } from '@angular/cdk/overlay';
import { ComponentPortal } from '@angular/cdk/portal';
import { DestroyRef, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, TemplateRef, Type, ViewContainerRef } from '@angular/core';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler';
import { PopUpPlacements } from './constants';
import * as i0 from "@angular/core";
export declare abstract class KbqPopUpTrigger<T> implements OnInit, OnDestroy {
    /** Stream that emits when the popupTrigger is hovered. */
    readonly hovered: BehaviorSubject<boolean>;
    protected readonly scheduler: AsyncScheduler | undefined;
    protected readonly overlay: Overlay;
    protected readonly elementRef: ElementRef<HTMLElement>;
    protected readonly ngZone: NgZone;
    protected readonly scrollDispatcher: ScrollDispatcher;
    protected readonly hostView: ViewContainerRef;
    protected readonly direction: Directionality | null;
    protected readonly destroyRef: DestroyRef;
    protected readonly scrollable: CdkScrollable | null;
    protected abstract scrollStrategy: () => ScrollStrategy;
    isOpen: boolean;
    enterDelay: number;
    leaveDelay: number;
    triggerName: string;
    abstract disabled: boolean;
    abstract arrow: boolean;
    abstract trigger: string;
    abstract customClass: string;
    abstract content: string | TemplateRef<any>;
    abstract placementChange: EventEmitter<string>;
    abstract visibleChange: EventEmitter<boolean>;
    protected abstract originSelector: string;
    protected abstract overlayConfig: OverlayConfig;
    protected placement: PopUpPlacements;
    protected placementPriority: string | string[] | null;
    protected visible: boolean;
    protected _content: string | TemplateRef<any>;
    protected _disabled: boolean;
    protected _customClass: string;
    protected overlayRef: OverlayRef | null;
    protected portal: ComponentPortal<T>;
    protected instance: any | null;
    protected listeners: Map<string, EventListener>;
    protected closingActionsSubscription: Subscription;
    protected readonly availablePositions: {
        [key: string]: ConnectionPositionPair;
    };
    protected mouseEvent?: MouseEvent;
    protected strategy: FlexibleConnectedPositionStrategy;
    /** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger */
    protected hideWithTimeout: boolean;
    /** prevents closure by any event */
    protected preventClose: boolean;
    abstract updateClassMap(newPlacement?: string): void;
    abstract updateData(): void;
    abstract closingActions(): Observable<any>;
    abstract getOverlayHandleComponentType(): Type<T>;
    ngOnInit(): void;
    ngOnDestroy(): void;
    updatePlacement(value: PopUpPlacements): void;
    updatePlacementPriority(value: any): void;
    updateVisible(externalValue: boolean): void;
    keydownHandler(event: KeyboardEvent): void;
    touchendHandler(): void;
    show(delay?: number): void;
    hide: (delay?: number) => void;
    detach: () => void;
    /** Create the overlay config and position strategy */
    createOverlay(): OverlayRef;
    resetOrigin(): void;
    onPositionChange: ($event: ConnectedOverlayPositionChange) => void;
    initListeners(): void;
    getMouseLeaveListener(): (delay?: number) => void;
    /** Updates the position of the current popover. */
    updatePosition(reapplyPosition?: boolean): void;
    focus(): void;
    /**
     * Returns a list of positions that are aligned with the element's dimensions and offsets.
     * @protected
     */
    protected getAdjustedPositions(): ConnectionPositionPair[];
    protected getPriorityPlacementStrategy(value: string | string[]): ConnectionPositionPair[];
    protected getPrioritizedPositions(): ConnectionPositionPair[];
    protected clearListeners(): void;
    private createListener;
    private saveMouseEvent;
    private addEventListener;
    private removeEventListener;
    private subscribeOnClosingActions;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqPopUpTrigger<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPopUpTrigger<any>, never, never, {}, {}, never, never, false, never>;
}
