import { FocusMonitor } from '@angular/cdk/a11y';
import { Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';
import { AfterViewInit, ElementRef, EventEmitter, InjectionToken, OnDestroy, TemplateRef, Type } from '@angular/core';
import { KbqComponentColors, KbqParentPopup, KbqPopUp, KbqPopUpTrigger, PopUpPlacements } from '@koobiq/components/core';
import * as i0 from "@angular/core";
export declare enum TooltipModifier {
    Default = "default",
    Warning = "warning",
    Extended = "extended"
}
export declare const KBQ_TOOLTIP_OPEN_TIME: InjectionToken<() => ScrollStrategy>;
/** @docs-private */
export declare const KBQ_TOOLTIP_OPEN_TIME_PROVIDER: {
    provide: InjectionToken<() => ScrollStrategy>;
    useValue: {
        value: number;
    };
};
export declare const MIN_TIME_FOR_DELAY = 2000;
export declare class KbqTooltipComponent extends KbqPopUp {
    private openTime;
    prefix: string;
    elementRef: ElementRef;
    constructor(openTime: any);
    show(delay: number): void;
    updateClassMap(placement: string, customClass: string, { modifier }: {
        modifier: any;
    }): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqTooltipComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqTooltipComponent, "kbq-tooltip-component", never, {}, {}, never, never, true, never>;
}
export declare const KBQ_TOOLTIP_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>;
/** @docs-private */
export declare function kbqTooltipScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy;
/** @docs-private */
export declare const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER: {
    provide: InjectionToken<() => ScrollStrategy>;
    deps: (typeof Overlay)[];
    useFactory: typeof kbqTooltipScrollStrategyFactory;
};
export declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> implements AfterViewInit, OnDestroy {
    protected scrollStrategy: () => ScrollStrategy;
    protected parentPopup: KbqParentPopup | null;
    protected focusMonitor: FocusMonitor;
    /**
     * Changes hiding behavior. By default, tooltip is hidden on mouseleave from trigger.
     * Setting hideWithTimeout to true will delay tooltip hiding and will not hide when the mouse moves from trigger
     * to tooltip.
     */
    hideWithTimeout: boolean;
    get tooltipVisible(): boolean;
    set tooltipVisible(value: boolean);
    get tooltipPlacement(): PopUpPlacements;
    /**
     * Positions the tooltip relative to the mouse cursor. Only available for top and bottom kbqPlacement.
     * Does not work with kbqPlacementPriority.
     */
    relativeToPointer: boolean;
    set tooltipPlacement(value: PopUpPlacements);
    get tooltipPlacementPriority(): string | string[] | null;
    set tooltipPlacementPriority(value: string | string[] | null);
    get content(): string | TemplateRef<any>;
    set content(content: string | TemplateRef<any>);
    get disabled(): boolean;
    set disabled(value: boolean);
    enterDelay: number;
    leaveDelay: number;
    get trigger(): string;
    set trigger(value: string);
    protected _trigger: string;
    get customClass(): string;
    set customClass(value: string);
    get context(): any;
    set context(ctx: any);
    private _context;
    get color(): string;
    set color(value: KbqComponentColors | string);
    private _color;
    arrow: boolean;
    offset: number | null;
    readonly placementChange: EventEmitter<any>;
    readonly visibleChange: EventEmitter<boolean>;
    private get hasClickInTrigger();
    protected originSelector: string;
    protected overlayConfig: OverlayConfig;
    protected modifier: TooltipModifier;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    show(delay?: number): void;
    /**
     * method allows to show the tooltip relative to the element
     * Use this approach when it is not possible to define a trigger in the template.
     *
     * For example:
     * const tooltip = new KbqTooltipTrigger();
     * tooltip.showForElement(element);
     */
    showForElement(element: HTMLElement): void;
    updateData(): void;
    closingActions(): import("rxjs").Observable<void | MouseEvent>;
    getOverlayHandleComponentType(): Type<KbqTooltipComponent>;
    updateClassMap(newPlacement?: string): void;
    protected applyRelativeToPointer(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqTooltipTrigger, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTooltipTrigger, "[kbqTooltip]", ["kbqTooltip"], { "hideWithTimeout": { "alias": "hideWithTimeout"; "required": false; }; "tooltipVisible": { "alias": "kbqVisible"; "required": false; }; "tooltipPlacement": { "alias": "kbqPlacement"; "required": false; }; "relativeToPointer": { "alias": "kbqRelativeToPointer"; "required": false; }; "tooltipPlacementPriority": { "alias": "kbqPlacementPriority"; "required": false; }; "content": { "alias": "kbqTooltip"; "required": false; }; "disabled": { "alias": "kbqTooltipDisabled"; "required": false; }; "enterDelay": { "alias": "kbqEnterDelay"; "required": false; }; "leaveDelay": { "alias": "kbqLeaveDelay"; "required": false; }; "trigger": { "alias": "kbqTrigger"; "required": false; }; "customClass": { "alias": "kbqTooltipClass"; "required": false; }; "context": { "alias": "kbqTooltipContext"; "required": false; }; "color": { "alias": "kbqTooltipColor"; "required": false; }; "arrow": { "alias": "kbqTooltipArrow"; "required": false; }; "offset": { "alias": "kbqTooltipOffset"; "required": false; }; }, { "placementChange": "kbqPlacementChange"; "visibleChange": "kbqVisibleChange"; }, never, never, true, never>;
    static ngAcceptInputType_hideWithTimeout: unknown;
    static ngAcceptInputType_relativeToPointer: unknown;
    static ngAcceptInputType_arrow: unknown;
    static ngAcceptInputType_offset: unknown;
}
export declare class KbqWarningTooltipTrigger extends KbqTooltipTrigger {
    get content(): string | TemplateRef<any>;
    set content(content: string | TemplateRef<any>);
    protected modifier: TooltipModifier;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqWarningTooltipTrigger, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqWarningTooltipTrigger, "[kbqWarningTooltip]", ["kbqWarningTooltip"], { "content": { "alias": "kbqWarningTooltip"; "required": false; }; }, {}, never, never, true, never>;
}
export declare class KbqExtendedTooltipTrigger extends KbqTooltipTrigger {
    get content(): string | TemplateRef<any>;
    set content(content: string | TemplateRef<any>);
    get header(): string | TemplateRef<any>;
    set header(header: string | TemplateRef<any>);
    private _header;
    protected modifier: TooltipModifier;
    updateData(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqExtendedTooltipTrigger, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqExtendedTooltipTrigger, "[kbqExtendedTooltip]", ["kbqExtendedTooltip"], { "content": { "alias": "kbqExtendedTooltip"; "required": false; }; "header": { "alias": "kbqTooltipHeader"; "required": false; }; }, {}, never, never, true, never>;
}
