import { ChangeDetectorRef, ElementRef, NgZone, OnDestroy, TemplateRef, OnInit, Renderer2, InjectionToken } from '@angular/core';
import { LyFocusState, LyOverlay, LyTheme2, Placement, ThemeVariables, XPosition, YPosition, StyleCollection, LyClasses, StyleTemplate, ThemeRef } from '@alyle/ui';
import { ScrollDispatcher } from '@angular/cdk/scrolling';
import { Platform } from '@angular/cdk/platform';
import { NumberInput } from '@angular/cdk/coercion';
import * as i0 from "@angular/core";
export interface LyTooltipDefaultOptions {
    /** Default delay when the tooltip is shown. */
    showDelay: number;
    /** Default delay when the tooltip is hidden. */
    hideDelay: number;
    /** Default delay when hiding the tooltip on a touch device. */
    touchendHideDelay: number;
}
export declare const LY_TOOLTIP_DEFAULT_OPTIONS: InjectionToken<LyTooltipDefaultOptions>;
/** Possible positions for a tooltip. */
export type LyTooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';
export interface LyTooltipTheme {
    /** Styles for Tooltip Component */
    root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)> | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);
}
export interface LyTooltipVariables {
    tooltip?: LyTooltipTheme;
}
export declare const STYLES: (theme: ThemeVariables & LyTooltipVariables, ref: ThemeRef) => {
    $priority: number;
    root: () => StyleTemplate;
};
export declare class LyTooltip implements OnInit, OnDestroy {
    private _theme;
    private _overlay;
    private _el;
    private _renderer;
    private _cd;
    private _focusState;
    private _defaults;
    private _platform;
    /** @docs-private */
    readonly classes: LyClasses<(theme: ThemeVariables & LyTooltipVariables, ref: ThemeRef) => {
        $priority: number;
        root: () => StyleTemplate;
    }>;
    private _tooltip;
    private _tooltipOverlay;
    private _listeners;
    private _scrollSub;
    private _scrollVal;
    private _showTimeoutId;
    private _hideTimeoutId;
    set tooltip(val: string | TemplateRef<any> | null);
    get tooltip(): string | TemplateRef<any> | null;
    get showDelay(): number;
    set showDelay(value: NumberInput);
    private _showDelay;
    get hideDelay(): number;
    set hideDelay(value: NumberInput);
    private _hideDelay;
    placement: Placement;
    xPosition: `${XPosition}`;
    yPosition: `${YPosition}`;
    constructor(_theme: LyTheme2, _overlay: LyOverlay, _el: ElementRef, _renderer: Renderer2, _cd: ChangeDetectorRef, _focusState: LyFocusState, _defaults: LyTooltipDefaultOptions, ngZone: NgZone, scroll: ScrollDispatcher, _platform: Platform);
    ngOnInit(): void;
    ngOnDestroy(): void;
    show(delay?: number): void;
    hide(delay?: number): void;
    toggle(): void;
    private _markForCheck;
    private _updatePosition;
    private _addListeners;
    private _platformSupportsMouseEvents;
    static ɵfac: i0.ɵɵFactoryDeclaration<LyTooltip, [null, null, null, null, null, null, { optional: true; }, null, null, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LyTooltip, "[lyTooltip]", ["lyTooltip"], { "tooltip": { "alias": "lyTooltip"; "required": false; }; "showDelay": { "alias": "lyTooltipShowDelay"; "required": false; }; "hideDelay": { "alias": "lyTooltipHideDelay"; "required": false; }; "placement": { "alias": "lyTooltipPlacement"; "required": false; }; "xPosition": { "alias": "lyTooltipXPosition"; "required": false; }; "yPosition": { "alias": "lyTooltipYPosition"; "required": false; }; }, {}, never, never, false, never>;
}
