/**
 * Manages state that can be either controlled or uncontrolled.
 *
 * When `value` is provided, the component is controlled — the caller owns
 * the state and `onChange` is called on updates. When omitted, internal
 * state is used with `defaultValue` as the initial value.
 */
export declare function useControllableState<T>({ value: controlledValue, defaultValue, onChange, }: {
    /** Controlled value. When provided, component is controlled. */
    value?: T;
    /** Initial value for uncontrolled mode. */
    defaultValue: T;
    /** Called when the value changes (both modes). */
    onChange?: (value: T) => void;
}): [T, (value: T) => void];
