export type UseConfirmationDraftOptions<T> = {
    value: T;
    onCommit: (value: T) => void;
    isOpen: boolean;
    enabled: boolean;
    isEqual?: (a: T, b: T) => boolean;
};
export type UseConfirmationDraftResult<T> = {
    displayValue: T;
    setDraft: (next: T) => void;
    apply: () => void;
    cancel: () => void;
    isDirty: boolean;
};
/**
 * Holds a draft copy of a controlled value while a menu is open, so that
 * selections can be confirmed (`apply`) or discarded (`cancel`). When
 * `enabled` is false, `setDraft` passes through directly to `onCommit` and
 * `displayValue` always reflects the controlled `value`.
 */
export declare function useConfirmationDraft<T>({ value, onCommit, isOpen, enabled, isEqual, }: UseConfirmationDraftOptions<T>): UseConfirmationDraftResult<T>;
