import * as _angular_core from '@angular/core';
import { AfterViewInit, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { AvatarItem } from '@agorapulse/ui-components/avatar';

declare const CustomTooltipType: {
    DEFAULT: string;
    PRESENTATION: string;
    LIST: string;
};
type CustomTooltipType = (typeof CustomTooltipType)[keyof typeof CustomTooltipType];
type CustomTooltipPresentationItem = {
    title: string;
    description: string;
};
type CustomTooltipAvatarItem = AvatarItem & {
    caption?: string;
};

declare class TooltipDirective implements AfterViewInit, OnDestroy, OnInit {
    private readonly elementRef;
    private readonly zone;
    private readonly viewContainerRef;
    private readonly destroyRef;
    private documentClickListener?;
    apTooltip: _angular_core.InputSignal<string | TemplateRef<HTMLElement> | null | undefined>;
    apTooltipPosition: _angular_core.InputSignal<"left" | "right" | "top" | "bottom" | "bottom-left" | "bottom-right" | "top-left" | "top-right">;
    apTooltipShowDelay: _angular_core.InputSignal<number>;
    apTooltipHideDelay: _angular_core.InputSignal<number>;
    apTooltipDuration: _angular_core.InputSignal<number>;
    apTooltipDisabled: _angular_core.InputSignal<boolean>;
    apTooltipTruncatedTextOnly: _angular_core.InputSignal<boolean>;
    apTooltipTemplateContext: _angular_core.InputSignal<any>;
    apTooltipVirtualScrollElement: _angular_core.InputSignal<CdkVirtualScrollViewport | undefined>;
    apTooltipTrigger: _angular_core.InputSignal<"click" | "hover">;
    apTooltipType: _angular_core.InputSignal<string>;
    apTooltipPresentationContext: _angular_core.InputSignal<CustomTooltipPresentationItem | undefined>;
    apTooltipListItems: _angular_core.InputSignal<CustomTooltipAvatarItem[]>;
    apTooltipShowAvatarCaption: _angular_core.InputSignal<boolean>;
    isDefaultTooltipType: _angular_core.Signal<boolean>;
    isValidPredefinedTooltip: _angular_core.Signal<string | boolean>;
    triggeredByClick: _angular_core.Signal<boolean>;
    clickListener: (() => void) | undefined;
    container: HTMLElement | undefined;
    hideTimeout: number | undefined;
    mouseEnterListener: (() => void) | undefined;
    mouseLeaveListener: (() => void) | undefined;
    nativeElement: HTMLElement;
    showTimeout: number | undefined;
    tooltipText: HTMLElement | undefined;
    _externallyTriggerred: boolean;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    private setupEventListeners;
    private cleanupEventListeners;
    ngOnDestroy(): void;
    onMouseEnter(): void;
    onMouseLeave(): void;
    onInputClick(): void;
    activate(): void;
    deactivate(): void;
    show(): void;
    create(): void;
    createDefaultTooltip(): void;
    createPredefinedTooltip(): void;
    createSvgElement(): SVGElement;
    align(): void;
    alignRight(): void;
    alignLeft(): void;
    alignTop(): void;
    alignTopLeft(): void;
    alignTopRight(): void;
    alignBottom(): void;
    alignBottomLeft(): void;
    alignBottomRight(): void;
    preAlign(position: string): void;
    getHostOffset(): {
        left: number;
        top: number;
    };
    isOutOfBounds(): boolean;
    remove(): void;
    clearShowTimeout(): void;
    clearHideTimeout(): void;
    clearTimeouts(): void;
    updateText(): void;
    setCssVariables(): void;
    private removePreviousAlignHtmlClasses;
    private addDocumentClickListener;
    private removeDocumentClickListener;
    get externallyTriggerred(): boolean;
    set externallyTriggerred(value: boolean);
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[apTooltip]", ["apTooltip"], { "apTooltip": { "alias": "apTooltip"; "required": true; "isSignal": true; }; "apTooltipPosition": { "alias": "apTooltipPosition"; "required": false; "isSignal": true; }; "apTooltipShowDelay": { "alias": "apTooltipShowDelay"; "required": false; "isSignal": true; }; "apTooltipHideDelay": { "alias": "apTooltipHideDelay"; "required": false; "isSignal": true; }; "apTooltipDuration": { "alias": "apTooltipDuration"; "required": false; "isSignal": true; }; "apTooltipDisabled": { "alias": "apTooltipDisabled"; "required": false; "isSignal": true; }; "apTooltipTruncatedTextOnly": { "alias": "apTooltipTruncatedTextOnly"; "required": false; "isSignal": true; }; "apTooltipTemplateContext": { "alias": "apTooltipTemplateContext"; "required": false; "isSignal": true; }; "apTooltipVirtualScrollElement": { "alias": "apTooltipVirtualScrollElement"; "required": false; "isSignal": true; }; "apTooltipTrigger": { "alias": "apTooltipTrigger"; "required": false; "isSignal": true; }; "apTooltipType": { "alias": "apTooltipType"; "required": false; "isSignal": true; }; "apTooltipPresentationContext": { "alias": "apTooltipPresentationContext"; "required": false; "isSignal": true; }; "apTooltipListItems": { "alias": "apTooltipListItems"; "required": false; "isSignal": true; }; "apTooltipShowAvatarCaption": { "alias": "apTooltipShowAvatarCaption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * Directive that triggers a tooltip to show/hide
 *
 * ```html
 * <div #myTooltip="apTooltip" apTooltip>Content</div>
 * <div [apTooltipExternalTrigger]="myTooltip">Click me</div>
 * ```
 */
declare class TooltipExternalTriggerDirective implements AfterViewInit, OnDestroy {
    private readonly elementRef;
    private readonly zone;
    apTooltipExternalTrigger: _angular_core.InputSignal<TooltipDirective | undefined>;
    private clickListener;
    private get targetTooltip();
    ngAfterViewInit(): void;
    private setupEventListeners;
    private cleanupEventListeners;
    ngOnDestroy(): void;
    private onClick;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipExternalTriggerDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipExternalTriggerDirective, "[apTooltipExternalTrigger]", ["apTooltipExternalTrigger"], { "apTooltipExternalTrigger": { "alias": "apTooltipExternalTrigger"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { CustomTooltipType, TooltipDirective, TooltipExternalTriggerDirective };
export type { CustomTooltipAvatarItem, CustomTooltipPresentationItem };
