import { Overlay, OverlayRef } from '@angular/cdk/overlay';
import { ComponentType } from '@angular/cdk/portal';
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
import { ReplaySubject, Subject } from 'rxjs';
import { AnimationType } from './animations';
import { TooltipComponent } from './tooltip.component';
import { TooltipTrigger, TooltipType } from './tooltip.types';
import * as i0 from "@angular/core";
export interface TooltipInterface {
    content: TemplateRef<any> | string;
    context: any;
    class: string;
    type: TooltipType;
    position: string;
    trigger: TooltipTrigger;
    disabled: boolean;
    hideOnClick: boolean;
    visibleChange: EventEmitter<boolean>;
}
export declare const DISPLAY_DELAY = 50;
export declare const HIDDEN_DELAY = 150;
export declare class BaseTooltip<T = any> implements TooltipInterface, AfterViewInit, OnDestroy {
    protected overlay: Overlay;
    protected viewContainerRef: ViewContainerRef;
    protected elRef: ElementRef<HTMLInputElement>;
    protected renderer: Renderer2;
    protected cdr: ChangeDetectorRef;
    protected ngZone: NgZone;
    set content(value: TemplateRef<any> | string);
    get content(): TemplateRef<any> | string;
    set context(value: T);
    get context(): T;
    set class(value: string);
    set type(value: TooltipType);
    set position(value: string);
    get position(): string;
    set trigger(value: TooltipTrigger);
    get trigger(): TooltipTrigger;
    set disabled(value: boolean);
    get disabled(): boolean;
    hideOnClick: boolean;
    animationType: AnimationType;
    visibleChange: EventEmitter<boolean>;
    overlayRef: OverlayRef;
    protected componentClass: ComponentType<any>;
    protected componentIns: TooltipComponent;
    protected hostHovered: boolean;
    protected tooltipHovered: boolean;
    protected listeners: Array<() => void>;
    protected unlistenBody: () => void;
    protected inputContent$$: ReplaySubject<string | TemplateRef<any>>;
    protected inputType$$: ReplaySubject<TooltipType>;
    protected inputPosition$$: ReplaySubject<string>;
    protected inputClass$$: ReplaySubject<string>;
    protected inputContext$$: ReplaySubject<any>;
    protected tooltipChanged$: import("rxjs").Observable<any>;
    protected destroy$: Subject<unknown>;
    protected _position: string;
    protected _trigger: TooltipTrigger;
    protected _disabled: boolean;
    protected _context: T;
    protected _content: TemplateRef<unknown> | string;
    get isCreated(): boolean;
    constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, elRef: ElementRef<HTMLInputElement>, renderer: Renderer2, cdr: ChangeDetectorRef, ngZone: NgZone);
    private _updateTransformOrigin;
    _createTooltip(): void;
    _disposeTooltip(): void;
    toggleTooltip(): void;
    show(): void;
    hide(): void;
    updatePosition(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    protected updateListeners(): void;
    protected clearListeners(): void;
    protected createOverlay(): OverlayRef;
    protected onMouseEnter(): Promise<void>;
    protected onMouseLeave(): Promise<void>;
    protected onTooltipHovered(hovered: boolean): Promise<void>;
    protected onClick(): void;
    protected onBodyClick(event: Event): void;
    protected onFocus(): void;
    protected onBlur(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseTooltip<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseTooltip<any>, never, never, {}, {}, never, never, true, never>;
}
