import type { ReactiveController } from 'lit';
import type IgcTooltipComponent from './tooltip.js';
declare class TooltipController implements ReactiveController {
    private static readonly _listeners;
    private readonly _host;
    private readonly _options;
    private _hostAbortController;
    private _anchorAbortController;
    private _showTriggers;
    private _hideTriggers;
    private _anchor;
    private _initialAnchor;
    private _isTransient;
    private _open;
    /** Whether the tooltip is in shown state. */
    get open(): boolean;
    /** Sets the shown state of the current tooltip. */
    set open(value: boolean);
    /**
     * Returns the current tooltip anchor target if any.
     */
    get anchor(): TooltipAnchor;
    /**
     * Returns the current set of hide triggers as a comma-separated string.
     */
    get hideTriggers(): string;
    /**
     * Sets a new set of hide triggers from a comma-separated string.
     *
     * @remarks
     * If the tooltip already has an `anchor` bound it will remove the old
     * set of triggers from it and rebind it with the new one.
     */
    set hideTriggers(value: string);
    /**
     * Returns the current set of show triggers as a comma-separated string.
     */
    get showTriggers(): string;
    /**
     * Sets a new set of show triggers from a comma-separated string.
     *
     * @remarks
     * If the tooltip already has an `anchor` bound it will remove the old
     * set of triggers from it and rebind it with the new one.
     */
    set showTriggers(value: string);
    constructor(tooltip: IgcTooltipComponent, options: TooltipCallbacks);
    private _addAnchorListeners;
    private _removeAnchorListeners;
    private _addTooltipListeners;
    private _removeTooltipListeners;
    private _handleTooltipEvent;
    private _handleAnchorEvent;
    /** @internal */
    handleEvent(event: Event): void;
    private _dispose;
    /**
     * Removes all triggers from the previous `anchor` target and rebinds the current
     * sets back to the new value if it exists.
     */
    setAnchor(value: TooltipAnchor | string, transient?: boolean): void;
    resolveAnchor(value: TooltipAnchor | string): void;
    /** @internal */
    hostConnected(): void;
    /** @internal */
    hostDisconnected(): void;
}
export declare const TooltipRegexes: Readonly<{
    /** Used for parsing the strings passed in the tooltip `show/hide-trigger` properties. */
    triggers: RegExp;
    /** Matches horizontal `PopoverPlacement` start positions. */
    horizontalStart: RegExp;
    /** Matches horizontal `PopoverPlacement` end positions. */
    horizontalEnd: RegExp;
    /** Matches vertical `PopoverPlacement` start positions. */
    start: RegExp;
    /** Matches vertical `PopoverPlacement` end positions. */
    end: RegExp;
}>;
export declare function addTooltipController(host: IgcTooltipComponent, options: TooltipCallbacks): TooltipController;
type TooltipAnchor = Element | null | undefined;
type TooltipCallbacks = {
    onShow: (event?: Event) => unknown;
    onHide: (event?: Event) => unknown;
    onEscape: (event?: Event) => unknown;
};
export {};
