import { type ReactNode } from "react";
import { type DialogSize } from "../Dialog";
export type ConfirmDialogTone = "danger" | "primary" | "warning";
export interface ConfirmDialogProps {
    /** Whether the dialog is open. */
    open: boolean;
    /** Fires when the dialog should close (Esc / overlay-click / cancel). */
    onClose: () => void;
    /** Title (heading) — required for both UX clarity and a11y labelling. */
    title: ReactNode;
    /** Body content (description, consequences, warning text). */
    description?: ReactNode;
    /**
     * Confirm action. Sync OR async. When the returned Promise rejects,
     * the dialog stays open so the consumer can show an inline error;
     * on resolve, the dialog closes automatically.
     */
    onConfirm: () => void | Promise<void>;
    /** Confirm button label. Default depends on tone. */
    confirmLabel?: ReactNode;
    /** Cancel button label. Default `"Cancel"`. */
    cancelLabel?: ReactNode;
    /** Visual tone. Default `"danger"` — it's the most common case. */
    tone?: ConfirmDialogTone;
    /** Force the confirm button into a loading state (e.g. external state). */
    loading?: boolean;
    /** Disable the confirm button (e.g. validation gate). */
    disableConfirm?: boolean;
    /**
     * Require the user to type a specific phrase before the confirm
     * button enables. Used for high-stakes ops ("type the pipeline name
     * to delete"). Comparison is case-sensitive.
     */
    requireConfirmText?: string;
    /** Override the required-text input label. */
    requireConfirmLabel?: ReactNode;
    /** Which button gets initial focus. Default `"cancel"` (safer). */
    defaultFocus?: "cancel" | "confirm";
    /** Optional leading icon in the header. */
    icon?: ReactNode;
    /** Dialog size. Default `"sm"`. */
    size?: DialogSize;
    /** Fires when the user clicks Cancel (in addition to onClose). */
    onCancel?: () => void;
}
export declare const ConfirmDialog: import("react").ForwardRefExoticComponent<ConfirmDialogProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=ConfirmDialog.d.ts.map