import { type ComponentProps, type ReactElement, type ReactNode } from 'react';
import { type TooltipRoot as BaseUITooltipRoot } from '@base-ui/react/tooltip';
import { type GDSComponentProps } from '@graphprotocol/gds-css';
import { type RenderProp } from './base/Render.tsx';
import { TooltipMeta } from './Tooltip.meta.ts';
type Content = Exclude<ReactNode, undefined>;
type SetDeferredContentFunction = (content: Content, priority?: number) => void;
type OpenChangeReason = BaseUITooltipRoot.ChangeEventDetails['reason'];
export interface TooltipProps extends Omit<ComponentProps<'div'>, 'content'>, GDSComponentProps<typeof TooltipMeta> {
    /**
     * The content to display in the tooltip. If not provided, defaults to any content collected from
     * `Tooltip.Content` or `Tooltip.Collector` descendants.
     */
    content?: Content | undefined;
    /** Force the tooltip to be open or closed. */
    open?: boolean | undefined;
    /** Called when the tooltip is opened or closed. */
    onOpenChange?: ((open: boolean, reason: OpenChangeReason) => void) | undefined;
    /** The element that triggers the tooltip. */
    children: ReactElement;
    /**
     * Props to merge with the trigger element. Set to `'forward'` to have the trigger automatically
     * receive applicable props passed to the `Tooltip` itself (excluding tooltip-specific props like
     * `content`, `side` and other positioning props, `open`, `disabled`, etc.).
     */
    triggerProps?: ComponentProps<'button'> | 'forward' | undefined;
}
export declare function TooltipRoot({ ref: passedRef, content: passedContent, side, gap, align, alignOffset, open: controlledOpen, onOpenChange, disabled, overrideDescendants, className, style, children, triggerProps: passedTriggerProps, ...passedProps }: TooltipProps): import("react/jsx-runtime").JSX.Element;
export interface TooltipContentProps {
    children: ReactNode;
    priority?: number | undefined;
    render?: RenderProp | undefined;
}
/**
 * Wrap any text or `ReactNode` with this component to use it as the default `content` of the
 * closest `Tooltip`, in addition to rendering it inline. It is meant to be wrapped in a `sr-only`
 * element, so that the content rendered inline is visually hidden but accessible to screen readers,
 * unlike the content rendered in the tooltip itself, which is hidden from the accessibility tree
 * since most tooltips are decorative. This allows a tooltip to be non-decorative, in the rare case
 * where the information it provides is not otherwise available to screen readers (i.e. different
 * from the trigger's accessible name).
 */
export declare function TooltipContent({ children, priority, render }: TooltipContentProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
export declare namespace TooltipContent {
    var displayName: string;
}
export interface TooltipCollectorProps {
    children: ReactNode;
}
export declare function TooltipCollector({ children }: TooltipCollectorProps): import("react/jsx-runtime").JSX.Element;
export declare namespace TooltipCollector {
    var displayName: string;
}
/** Hook for components to send tooltip content up to a collector. */
export declare function useTooltipCollector(): SetDeferredContentFunction | null;
export {};
//# sourceMappingURL=Tooltip.parts.d.ts.map