import { location as loc } from '@synnaxlabs/x';
import { ReactElement, ReactNode } from 'react';
import { Align } from '../align';
import { Dialog as CoreDialog } from '../dialog';
import { ComponentSize } from '../util/component';
export type UseProps = CoreDialog.UseProps;
export type UseReturn = CoreDialog.UseReturn;
export declare const use: (props?: CoreDialog.UseProps) => CoreDialog.UseReturn;
export type Variant = "connected" | "floating" | "modal";
/** Props for the {@link Dialog} component. */
export interface DialogProps extends Pick<CoreDialog.UseReturn, "visible" | "close">, Partial<Omit<CoreDialog.UseReturn, "visible" | "ref" | "close">>, Omit<Align.PackProps, "ref" | "reverse" | "size" | "empty"> {
    location?: loc.Y | loc.XY;
    children: [ReactNode, ReactNode];
    keepMounted?: boolean;
    variant?: Variant;
    maxHeight?: ComponentSize | number;
    zIndex?: number;
}
/**
 * A controlled dropdown dialog component that wraps its children. For the simplest case, use
 * the {@link use} hook (more behavioral details explained there).
 *
 * @param props - The props for the dropdown component. Unlisted props are passed to the
 * parent element.
 * @param props.visible - Whether the dropdown is visible or not. This is a controlled
 * @param props.children - Two children are expected: the dropdown trigger (often a button
 * or input) and the dropdown content.
 */
export declare const Dialog: {
    ({ visible, children, location: propsLocation, keepMounted, className, variant, close, maxHeight, open, toggle, zIndex, ...props }: DialogProps): ReactElement;
    displayName: string;
};
//# sourceMappingURL=Dropdown.d.ts.map