import { InlineFieldMode } from '../InlineField.context.js';
export interface UseInlineFieldModeProps {
    /**
     * Controlled mode value. When provided, the component operates in controlled mode.
     */
    mode?: InlineFieldMode;
    /**
     * Default mode value for uncontrolled mode.
     * @default 'read'
     */
    defaultMode?: InlineFieldMode;
    /**
     * Callback fired when mode changes.
     */
    onModeChange?: (mode: InlineFieldMode) => void;
    /**
     * Callback to intercept and potentially prevent mode changes.
     * Return `false` to prevent the mode transition.
     * Return `true` or `undefined` to allow the transition.
     */
    shouldModeChange?: (fromMode: InlineFieldMode, toMode: InlineFieldMode) => boolean | undefined;
}
export interface UseInlineFieldModeReturn {
    /** Current mode value */
    mode: InlineFieldMode;
    /** Switch to edit mode */
    enterEditMode: () => void;
    /** Exit edit mode (return to read mode) */
    exitEditMode: () => void;
    /** Check if component is in controlled mode */
    isControlled: boolean;
}
/**
 * Hook to manage the mode state (read/edit) for InlineField.
 * Supports both controlled and uncontrolled modes, following the pattern
 * established by NavGroup.tsx
 * @param props - Configuration for the mode hook
 * @param props.mode - Controlled mode value. When provided, the component operates in controlled mode.
 * @param props.defaultMode - Default mode value for uncontrolled mode.
 * @param props.onModeChange - Callback fired when mode changes.
 * @param props.shouldModeChange - Callback to intercept and potentially prevent mode changes.
 * Return `false` to prevent the mode transition.
 * Return `true` or `undefined` to allow the transition.
 * @returns Mode state and handlers
 */
export declare function useInlineFieldMode({ mode: controlledMode, defaultMode, onModeChange, shouldModeChange, }: UseInlineFieldModeProps): UseInlineFieldModeReturn;
