import * as React from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog';
type DialogSize = 'small' | 'medium';
declare const DialogRoot: React.FC<DialogPrimitive.DialogProps>;
declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
declare const DialogOverlay: {
    ({ className, ...props }: React.ComponentPropsWithRef<typeof DialogPrimitive.Overlay>): React.JSX.Element;
    displayName: string | undefined;
};
interface DialogContentProps extends React.ComponentPropsWithRef<typeof DialogPrimitive.Content> {
    closeButton?: boolean;
    /** Dialog 크기 (small: 320px, medium: 400px) */
    size?: DialogSize;
}
declare const DialogContent: {
    ({ children, className, closeButton, size, style, ...props }: DialogContentProps): React.JSX.Element;
    displayName: string | undefined;
};
declare const DialogHeader: {
    ({ className, ...props }: React.ComponentPropsWithRef<"div">): React.JSX.Element;
    displayName: string;
};
declare const DialogBody: {
    ({ className, children, ...props }: React.ComponentPropsWithRef<"div">): React.JSX.Element;
    displayName: string;
};
declare const DialogFooter: {
    ({ className, ...props }: React.ComponentPropsWithRef<"div">): React.JSX.Element;
    displayName: string;
};
declare const DialogTitle: {
    ({ className, ...props }: React.ComponentPropsWithRef<typeof DialogPrimitive.Title>): React.JSX.Element;
    displayName: string | undefined;
};
declare const DialogDescription: {
    ({ className, ...props }: React.ComponentPropsWithRef<typeof DialogPrimitive.Description>): React.JSX.Element;
    displayName: string | undefined;
};
type ActionVariant = 'primary' | 'negative';
interface DialogProps extends DialogPrimitive.DialogProps {
    trigger?: React.ReactNode;
    closeButton?: boolean;
    overlay?: boolean;
    title?: string;
    description?: string;
    /** 취소 버튼 텍스트 (간편 모드) */
    cancelLabel?: string;
    /** 취소 버튼 클릭 핸들러 */
    onCancel?: () => Promise<void> | void;
    /** 액션 버튼 텍스트 (간편 모드) */
    actionLabel?: string;
    /** 액션 버튼 클릭 핸들러 */
    onAction?: () => Promise<void> | void;
    /** 액션 버튼 스타일 (primary: 파란색, negative: 빨간색) */
    actionVariant?: ActionVariant;
    /**
     * true이면 onAction이 async일 때 완료될 때까지 Dialog가 열린 상태를 유지하고,
     * 액션 버튼이 disabled됩니다. false(기본)이면 클릭 즉시 Dialog가 닫힙니다.
     * @default false
     */
    asyncAction?: boolean;
    /** Body에 들어갈 커스텀 콘텐츠 또는 DialogFooter */
    children?: React.ReactNode;
    contentClassName?: string;
    /** Dialog 크기 (small: 320px, medium: 400px) */
    size?: DialogSize;
}
declare const Dialog: {
    ({ trigger, closeButton, overlay, title, description, cancelLabel, onCancel, actionLabel, onAction, actionVariant, asyncAction, contentClassName, size, open, defaultOpen, onOpenChange, modal, children, }: DialogProps): React.JSX.Element;
    displayName: string;
};
export { Dialog, DialogRoot, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogBody, DialogFooter, DialogTitle, DialogDescription, };
export type { DialogProps, DialogContentProps, DialogSize };
//# sourceMappingURL=Dialog.d.ts.map