import * as _angular_core from '@angular/core';
import { TemplateRef, OnInit, OnDestroy } from '@angular/core';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';

type ZTooltipPosition = 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right' | 'left' | 'left-top' | 'left-bottom' | 'right' | 'right-top' | 'right-bottom';

declare const zTooltipVariants: (props?: ({
    zType?: "default" | "dark" | "light" | "primary" | "success" | "warning" | "error" | "info" | null | undefined;
    zSize?: "default" | "sm" | "lg" | null | undefined;
    zPosition?: "top" | "top-left" | "top-right" | "bottom" | "bottom-left" | "bottom-right" | "left" | "left-top" | "left-bottom" | "right" | "right-top" | "right-bottom" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
type ZTooltipVariants = VariantProps<typeof zTooltipVariants>;

type ZTooltipTrigger = 'hover' | 'click';
type ZTooltipContent = string | TemplateRef<unknown>;
interface ZTooltipConfig {
    content?: ZTooltipContent;
    position?: ZTooltipPosition;
    type?: ZTooltipVariants['zType'];
    size?: ZTooltipVariants['zSize'];
    class?: string;
    showDelay?: number;
    hideDelay?: number;
    arrow?: boolean;
    offset?: number;
    autoDetect?: boolean;
    alwaysShow?: boolean;
    maxWidth?: string;
}

declare class ZTooltipDirective implements OnInit, OnDestroy {
    readonly zContent: _angular_core.InputSignal<ZTooltipContent>;
    readonly zPosition: _angular_core.InputSignal<ZTooltipPosition>;
    readonly zTooltipPosition: _angular_core.InputSignal<ZTooltipPosition | undefined>;
    readonly zTrigger: _angular_core.InputSignal<ZTooltipTrigger>;
    readonly zTooltipTrigger: _angular_core.InputSignal<ZTooltipTrigger | undefined>;
    readonly zType: _angular_core.InputSignal<"default" | "dark" | "light" | "primary" | "success" | "warning" | "error" | "info" | null | undefined>;
    readonly zSize: _angular_core.InputSignal<"default" | "sm" | "lg" | null | undefined>;
    readonly zClass: _angular_core.InputSignal<string>;
    readonly zTooltipClass: _angular_core.InputSignal<string | undefined>;
    readonly zShowDelay: _angular_core.InputSignal<number>;
    readonly zTooltipShowDelay: _angular_core.InputSignal<number | undefined>;
    readonly zHideDelay: _angular_core.InputSignal<number>;
    readonly zTooltipHideDelay: _angular_core.InputSignal<number | undefined>;
    readonly zArrow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zTooltipArrow: _angular_core.InputSignal<boolean | undefined>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zTooltipDisabled: _angular_core.InputSignal<boolean | undefined>;
    readonly zOffset: _angular_core.InputSignal<number>;
    readonly zTooltipOffset: _angular_core.InputSignal<number | undefined>;
    readonly zAutoDetect: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zTriggerElement: _angular_core.InputSignal<HTMLElement | null>;
    readonly zAlwaysShow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zMaxWidth: _angular_core.InputSignal<string>;
    private readonly _position;
    private readonly _trigger;
    private readonly _class;
    private readonly _showDelay;
    private readonly _hideDelay;
    private readonly _arrow;
    private readonly _disabled;
    private readonly _offset;
    readonly zShow: _angular_core.OutputEmitterRef<void>;
    readonly zHide: _angular_core.OutputEmitterRef<void>;
    private readonly _overlay;
    private readonly _overlayPositionBuilder;
    private readonly _elementRef;
    private readonly _renderer;
    private readonly _destroyRef;
    private readonly _platformId;
    private readonly _document;
    private _overlayRef;
    private _componentRef;
    private _delaySubject;
    private _listenerCleanups;
    private _positionSubscription;
    private _hideTimeout;
    private readonly _isVisible;
    constructor();
    ngOnInit(): void;
    ngOnDestroy(): void;
    show(): void;
    private _isTextTruncated;
    private _isElementTruncated;
    private _isFormControlValueTruncated;
    hide(): void;
    toggle(): void;
    private _createOverlay;
    private _disposeOverlay;
    private _setupDelayMechanism;
    private _setupTriggers;
    private _setupOutsideClick;
    private _delay;
    private _showTooltip;
    private _setupTooltipHover;
    private _hideTooltip;
    private _clearHideTimeout;
    private _cleanupListeners;
    private _calculateArrowOffset;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTooltipDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZTooltipDirective, "[z-tooltip], [zTooltip]", ["zTooltip"], { "zContent": { "alias": "zContent"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zTooltipPosition": { "alias": "zTooltipPosition"; "required": false; "isSignal": true; }; "zTrigger": { "alias": "zTrigger"; "required": false; "isSignal": true; }; "zTooltipTrigger": { "alias": "zTooltipTrigger"; "required": false; "isSignal": true; }; "zType": { "alias": "zTooltipType"; "required": false; "isSignal": true; }; "zSize": { "alias": "zTooltipSize"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zTooltipClass": { "alias": "zTooltipClass"; "required": false; "isSignal": true; }; "zShowDelay": { "alias": "zShowDelay"; "required": false; "isSignal": true; }; "zTooltipShowDelay": { "alias": "zTooltipShowDelay"; "required": false; "isSignal": true; }; "zHideDelay": { "alias": "zHideDelay"; "required": false; "isSignal": true; }; "zTooltipHideDelay": { "alias": "zTooltipHideDelay"; "required": false; "isSignal": true; }; "zArrow": { "alias": "zArrow"; "required": false; "isSignal": true; }; "zTooltipArrow": { "alias": "zTooltipArrow"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zTooltipDisabled": { "alias": "zTooltipDisabled"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zTooltipOffset": { "alias": "zTooltipOffset"; "required": false; "isSignal": true; }; "zAutoDetect": { "alias": "zAutoDetect"; "required": false; "isSignal": true; }; "zTriggerElement": { "alias": "zTriggerElement"; "required": false; "isSignal": true; }; "zAlwaysShow": { "alias": "zAlwaysShow"; "required": false; "isSignal": true; }; "zMaxWidth": { "alias": "zMaxWidth"; "required": false; "isSignal": true; }; }, { "zShow": "zShow"; "zHide": "zHide"; }, never, never, true, never>;
}

export { ZTooltipDirective, zTooltipVariants };
export type { ZTooltipConfig, ZTooltipContent, ZTooltipTrigger, ZTooltipVariants };
