import type { PropertyValues } from '@lit/reactive-element';
import type { CSSResult } from 'lit';
import Popover from '../popover/popover.component';
import type { TooltipType } from './tooltip.types';
/**
 * A Tooltip is a special type of popovers that provide additional context to content on the screen. <br/>
 * Tooltip is triggered by mouse hover or by keyboard focus and will disappear upon mouse exit or focus change.
 *
 * Because of this, tooltips cannot contain content that can be focused or interacted with.
 * When a tooltip must contain a focusable element like a link or button, use a toggle tip instead.
 *
 * A tooltip is triggered by mouse hover or by keyboard focus
 * and will disappear upon mouse exit or focus change.
 *
 * Note:
 *  - Tooltips cannot contain content that can be focused or interacted with.
 *  - Tooltips will contain the default `aria-hidden="true"` so that VO will never focus the tooltip.
 *
 * @tagname mdc-tooltip
 *
 * @event shown - (React: onShown) This event is dispatched when the tooltip is shown
 * @event hidden - (React: onHidden) This event is dispatched when the tooltip is hidden
 * @event created - (React: onCreated) This event is dispatched when the tooltip is created (added to the DOM)
 * @event destroyed - (React: onDestroyed) This event is dispatched when the tooltip is destroyed (removed from the DOM)
 *
 * @cssproperty --mdc-tooltip-max-width - The maximum width of the tooltip.
 * @cssproperty --mdc-tooltip-padding - The padding of the tooltip.
 * @cssproperty --mdc-tooltip-text-color - The text color of the tooltip.
 * @cssproperty --mdc-tooltip-text-color-contrast - The text color of the tooltip when the color is contrast.
 *
 */
declare class Tooltip extends Popover {
    /**
     * The type of tooltip.
     * - **description** sets aria-describedby on the trigger component which refers to the tooltip id.
     * - **label** sets aria-labelledby on the trigger component which refers to the tooltip id.
     * - **none** no aria props set on trigger component referring to the tooltip id.
     * @default 'description'
     */
    tooltipType: TooltipType;
    /**
     * If true, the tooltip will only be shown when the trigger element's content is overflowing on the x-axis.
     *
     * Supports the following components:
     * - mdc-button
     * - mdc-text
     *
     * @default false
     */
    onlyShowWhenTriggerOverflows: boolean;
    connectedCallback(): void;
    /**
     * Sets the type attribute for the tooltip component.
     * If the provided type is not included in the TOOLTIP_TYPES,
     * it defaults to the value specified in DEFAULTS.TOOLTIP_TYPE.
     *
     * @param type - The type to set.
     */
    private setTooltipType;
    /**
     * Cached auto-generated id so that if the consumer (or a React wrapper that re-passes props
     * on every render) clears the id we restore the same value instead of minting a fresh UUID
     * on every cycle.
     */
    private autoGeneratedId;
    /**
     * Ensures the tooltip has a non-empty id. Called from `willUpdate` so the assignment is folded
     * into the in-flight update cycle (no extra render pass, no risk of an update loop).
     *
     * - If the consumer provides an explicit id, we drop the cached auto id so a future clear can
     *   regenerate a fresh one.
     * - If the id is empty, we reuse the cached auto id when present, otherwise generate one.
     */
    private ensureId;
    /**
     * Writes the appropriate aria attribute on the trigger element based on the current tooltipType.
     * Used when only the id changed (tooltipType-driven aria updates are handled in
     * `onTooltipTypeUpdated`).
     */
    private syncTriggerAriaForId;
    /**
     * Updates the placement attribute if it is not a valid placement.
     * Overriding the default from Popover
     */
    private onPlacementUpdated;
    /**
     * Updates the tooltip type attribute and sets the appropriate aria props on the trigger component.
     * @param changedProperties - The changed properties.
     */
    private onTooltipTypeUpdated;
    protected isOpenUpdated(oldValue: boolean, newValue: boolean): Promise<void>;
    protected willUpdate(changedProperties: PropertyValues<this>): void;
    show(): void;
    static styles: Array<CSSResult>;
}
export default Tooltip;
