import { type ChangeEvent } from 'react'; /** Options for {@link useInput}. @public */ export interface UseInputOptions { /** Initial value for an uncontrolled input. Captured on the first render. */ readonly initialValue?: string; /** Controlled value. A defined first value enables controlled mode. */ readonly value?: string; /** Called whenever an action requests a value change. */ readonly onChange?: (value: string) => void; } /** Value and stable actions returned by {@link useInput}. @public */ export interface UseInputResult { /** Current controlled or uncontrolled value. */ readonly value: string; /** Accepts a React text-input event or a plain string. */ readonly onChange: (event: ChangeEvent | string) => void; /** Requests the initially captured value. */ readonly reset: () => void; /** Requests an empty string. */ readonly clear: () => void; } /** * Manages a text input in either controlled or uncontrolled mode. * * The mode is fixed by the first render. Later mode changes are ignored and * produce one development warning, matching React's input ownership model. * * @param options - Initial, controlled, and change-notification options. * @returns The current string and input-compatible stable actions. * @public */ export declare function useInput(options?: UseInputOptions): UseInputResult;