import React, { InputHTMLAttributes, ReactElement, ReactNode } from 'react';
import { AriaFocusProps } from '../../types/common';
import { InputAffixProps } from './InputAffix';
import { InputAlignment, InputSize, InputStatus } from './types';
import { IconProps } from '../icons/generated';
import { CSSValueWithLength } from '../../styles';
export interface InputBaseType {
/** @default 'medium' */
size?: InputSize;
/** @default 'left' */
alignment?: InputAlignment;
/** @default 'info' */
status?: InputStatus;
/** 좌측 영역에 렌더링 될 요소 */
startElement?: ReactElement | ReactNode;
/** 우측 영역에 렌더링 될 요소 */
endElement?: ReactElement | ReactNode;
/** Input prefix 요소 */
leftAddon?: InputAffixProps['prefix'];
/** Input suffix 요소 */
rightAddon?: InputAffixProps['suffix'];
width?: CSSValueWithLength;
/**
* 입력된 value count 노출 여부
* @default false
*/
showCounter?: boolean;
/**
* 아이콘 노출 여부
* @default true
*/
showStatusIcon?: boolean;
/**
* HTML에 전달되는 size 값
*/
htmlSize?: number;
}
export type InputBaseProps = Omit, 'width' | 'size'> & InputBaseType & AriaFocusProps;
export declare const controlledInputValue: (value?: string | number | readonly string[]) => string;
export declare const InputBase: React.ForwardRefExoticComponent, "width" | "size"> & InputBaseType & AriaFocusProps & React.RefAttributes>;