import type { ComponentProps, SyntheticEvent } from 'react';
export declare const CLEAR_BUTTON_MODES: {
    readonly never: "never";
    readonly whileEditing: "whileEditing";
    readonly always: "always";
};
export declare const INPUT_TYPES: {
    readonly text: "text";
    readonly email: "email";
    readonly number: "number";
    readonly password: "password";
    readonly tel: "tel";
};
type InputProps = {
    /**
     * **Required:** The id attribute of the input.
     */
    id: string;
    /**
     * **Required:** The name attribute of the input.
     */
    name: string;
    /**
     * **Required:** The value attribute of the input.
     */
    value: string | number;
    type?: (typeof INPUT_TYPES)[keyof typeof INPUT_TYPES];
};
type BaseProps = InputProps & ComponentProps<'input'> & {
    valid?: boolean | null;
    large?: boolean;
    docked?: boolean;
    dockedFirst?: boolean;
    dockedMiddle?: boolean;
    dockedLast?: boolean;
    inputRef?: ((ref: HTMLInputElement) => void) | null;
};
export type PropsWithoutClearButonMode = BaseProps & {
    clearButtonMode?: 'never';
    clearButtonLabel?: string | null;
    onClear?: ((e?: SyntheticEvent<HTMLButtonElement>) => void) | null;
};
export type PropsWithClearButtonMode = BaseProps & {
    /**
     * When `clearButtonMode` is set to `always`, validity icons will not appear.
     */
    clearButtonMode: (typeof CLEAR_BUTTON_MODES)[keyof Omit<typeof CLEAR_BUTTON_MODES, 'never'>];
    clearButtonLabel: string;
    onClear: (e?: SyntheticEvent<HTMLButtonElement>) => void;
};
export type Props = PropsWithoutClearButonMode | PropsWithClearButtonMode;
export {};
