import { default as React } from 'react';
import { TUseValues } from '../../AHooks/useValues';
import { IABaseProps } from '../ABase/ABase';
import { IAWrapProps } from '../AWrap/AWrap';
export declare const AInputTypes: readonly ["Primary", "Secondary", "ReadOnly", "Error"];
export type TAInputTypes = 'Primary' | 'Secondary' | 'ReadOnly' | 'Error';
export interface IAInputProps extends IABaseProps, IAWrapProps {
    /**
     * LeftAddon? : React.ReactNode
     *
     * Description : LeftAddon of AInput
     */
    LeftAddon?: React.ReactNode;
    /**
     * RightAddon? : React.ReactNode
     *
     * Description : RightAddon of AInput
     */
    RightAddon?: React.ReactNode;
    /**
     * autoComplete? : string = 'off'
     *
     * Description : autoComplete of AInput
     */
    autoComplete?: string;
    /**
     * autoFocus? : boolean
     *
     * Description : decides whether the input is focused or not
     */
    autoFocus?: boolean;
    /**
     * dataList? : string[] | readonly string[]
     *
     * Description : dataList of AInput
     */
    dataList?: string[] | readonly string[];
    /**
     * inputProps? : React.InputHTMLAttributes<HTMLInputElement>
     *
     * Description : inputProps of AInput
     */
    inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
    /**
     * inputRef? : React.RefObject<HTMLInputElement | null>
     *
     * Description : inputRef of AInput
     */
    inputRef?: React.RefObject<HTMLInputElement | null>;
    /**
     * isPassword? : boolean
     *
     * Description : decides whether the input is password or not. if true, values will be masked.
     */
    isPassword?: boolean;
    /**
     * isReadonly? : boolean
     *
     * Description : decides whether the input is readonly or not
     */
    isReadonly?: boolean;
    /**
     * maxLength? : number
     *
     * Description : maxLength of AInput
     */
    maxLength?: number;
    /**
     * minLength? : number
     *
     * Description : minLength of AInput
     */
    minLength?: number;
    /**
     * onEnterPress? : (value: string) => void
     *
     * Description : onEnterPress of AInput
     */
    onEnterPress?: (value: string) => void;
    /**
     * pattern? : string
     *
     * Description : pattern of AInput
     */
    pattern?: string;
    /**
     * placeholder? : string
     *
     * Description : placeholder of AInput
     */
    placeholder?: string;
    /**
     * tabIndex? : number
     *
     * Description : tabIndex of AInput
     */
    tabIndex?: number;
    /**
     * type? : TInputType = 'Primary'
     *
     * Description : type of AInput
     */
    type?: TAInputTypes;
    /**
     * useValue? : TUseValues<string | number | readonly string[], string>
     *
     * Description : useValue of AInput
     */
    useValue?: TUseValues<string | number | readonly string[], string>;
}
/**
 * AComponent : AInput
 *
 * Description : AInput is an input component. it has AWrap and ABase inside, so be careful with the styles. I recommend checking out the element hierarchy first.
 *
 * Basic Usage :
 *
 *     const [value, setValue] = useState<string>('');
 *
 *     if (case 1)
 *       <AInput useValue={[value, setValue]}/>
 */
export declare const AInput: (props: IAInputProps) => React.ReactNode;
