import { default as React, RefObject } from 'react';
import { InputTheme } from './InputTheme';
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
    /**
     * If true, the input will take up the full width of its container.
     */
    fullWidth?: boolean;
    /**
     * If true, the input will be focused during the first mount.
     */
    selectOnFocus?: boolean;
    /**
     * If true, the input will show an error state.
     */
    error?: boolean;
    /**
     * Additional classname for the input container element.
     */
    containerClassname?: string;
    /**
     * Size of the input.
     * @default 'medium'
     */
    size?: 'small' | 'medium' | 'large' | string;
    /**
     * Content to display before the input.
     */
    start?: React.ReactNode | string;
    /**
     * Content to display after the input.
     */
    end?: React.ReactNode | string;
    /**
     * Shortcut for the onChange value event.
     */
    onValueChange?: (value: string) => void;
    /**
     * Theme for the Input.
     */
    theme?: InputTheme;
}
export interface InputRef {
    /**
     * Reference to the input element.
     */
    inputRef?: RefObject<HTMLInputElement>;
    /**
     * Reference to the container element.
     */
    containerRef?: RefObject<HTMLDivElement>;
    /**
     * Method to blur the input.
     */
    blur?: () => void;
    /**
     * Method to focus the input.
     */
    focus?: () => void;
    /**
     * Method to select the input.
     */
    select?: () => void;
}
export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<InputRef>>;
