import * as react_jsx_runtime from 'react/jsx-runtime';
import react__default, { InputHTMLAttributes } from 'react';
import { UseDelayOptionsResolved } from '../../hooks/useDelay.js';
import { LabelProps } from './Label.js';

type EditCompleteOptionsResolved = {
    onBlur: boolean;
    afterDelay: boolean;
} & Omit<UseDelayOptionsResolved, 'disabled'>;
type EditCompleteOptions = Partial<EditCompleteOptionsResolved>;
type InputProps = {
    /**
     * used for the label's `for` attribute
     */
    label?: Omit<LabelProps, 'id'>;
    /**
     * Callback for when the input's value changes
     * This is pretty much required but made optional for the rare cases where it actually isn't need such as when used with disabled
     * That could be enforced through a union type but that seems a bit overkill
     * @default noop
     */
    onChangeText?: (text: string) => void;
    className?: string;
    onEditCompleted?: (text: string) => void;
    allowEnterComplete?: boolean;
    expanded?: boolean;
    containerClassName?: string;
    editCompleteOptions?: EditCompleteOptions;
} & Omit<InputHTMLAttributes<HTMLInputElement>, 'label'>;
/**
 * A Component for inputting text or other information
 *
 * Its state is managed must be managed by the parent
 */
declare const Input: react__default.ForwardRefExoticComponent<{
    /**
     * used for the label's `for` attribute
     */
    label?: Omit<LabelProps, "id">;
    /**
     * Callback for when the input's value changes
     * This is pretty much required but made optional for the rare cases where it actually isn't need such as when used with disabled
     * That could be enforced through a union type but that seems a bit overkill
     * @default noop
     */
    onChangeText?: (text: string) => void;
    className?: string;
    onEditCompleted?: (text: string) => void;
    allowEnterComplete?: boolean;
    expanded?: boolean;
    containerClassName?: string;
    editCompleteOptions?: EditCompleteOptions;
} & Omit<react__default.InputHTMLAttributes<HTMLInputElement>, "label"> & react__default.RefAttributes<HTMLInputElement>>;
/**
 * A Component for inputting text or other information
 *
 * Its state is managed by the component itself
 */
declare const InputUncontrolled: ({ value, onChangeText, ...props }: InputProps) => react_jsx_runtime.JSX.Element;
type FormInputProps = InputHTMLAttributes<HTMLInputElement> & {
    id: string;
    labelText?: string;
    errorText?: string;
    labelClassName?: string;
    errorClassName?: string;
    containerClassName?: string;
};
declare const FormInput: react__default.ForwardRefExoticComponent<react__default.InputHTMLAttributes<HTMLInputElement> & {
    id: string;
    labelText?: string;
    errorText?: string;
    labelClassName?: string;
    errorClassName?: string;
    containerClassName?: string;
} & react__default.RefAttributes<HTMLInputElement>>;

export { type EditCompleteOptions, type EditCompleteOptionsResolved, FormInput, type FormInputProps, Input, type InputProps, InputUncontrolled };
