import { box, CrudeTimeSpan, dimensions, location, xy } from '@synnaxlabs/x';
import { ComponentPropsWithoutRef, ReactElement, ReactNode } from 'react';
import { RenderProp } from '../util/renderProp';
export interface DialogProps extends Omit<ComponentPropsWithoutRef<"div">, "children"> {
    delay?: CrudeTimeSpan;
    location?: location.Outer | Partial<location.XY>;
    hide?: boolean;
    children: [ReactNode | RenderProp<ContentProps>, ReactElement];
}
interface State {
    location: location.XY;
    position: xy.XY;
    triggerDims: dimensions.Dimensions;
}
export interface ContentProps extends State {
}
export declare const chooseLocation: (cornerOrLocation: location.Outer | Partial<location.XY> | undefined, target: box.Box, window: box.Box) => location.XY;
/**
 * A tooltip that appears when the user hovers over an element.
 *
 * @param props - The props for the tooltip. Unlisted props are passed to the underlying
 * div element.
 * @param props.children - A ReactNode to render as the tooltip's content, followed by
 * a ReactElement to attach the tooltip to.
 * @param props.location - The location for the tooltip to appear relative to the
 * element it is attached to. If unspecified, the tooltip automatically chooses a
 * location based on the element's position on the screen.
 * @param props.hide - Force the tooltip to remain hidden, even when the user hovers
 * over the element it is attached to.
 * @default false.
 * @param props.delay - The delay before the tooltip appears, in milliseconds. This prop
 * overrides the value set in Tooltip.Config.
 * @default the value set in Tooltip.Config, which defaults to 500ms.
 */
export declare const Dialog: ({ delay, children, location: cornerOrLocation, hide, }: DialogProps) => ReactElement;
export declare const formatTip: (tip: ReactNode) => ReactNode;
export {};
//# sourceMappingURL=Dialog.d.ts.map