import { FC, HTMLInputTypeAttribute, ReactElement, ReactNode } from 'react';
import { FieldComponentProps } from '@cezembre/forms';
import { IconName } from './icon';
export type AutoComplete = 'off' | 'on' | 'name' | 'honorific-prefix' | 'given-name' | 'additional-name' | 'family-name' | 'honorific-suffix' | 'nickname' | 'email' | 'username' | 'new-password' | 'current-password' | 'one-time-code' | 'organization-title' | 'organization' | 'street-address' | 'address-line1' | 'address-line2' | 'address-line3' | 'address-level4' | 'address-level3' | 'address-level2' | 'address-level1' | 'country' | 'country-name' | 'postal-code' | 'cc-name' | 'cc-additional-name' | 'cc-family-name' | 'cc-number' | 'cc-exp' | 'cc-exp-month' | 'cc-exp-year' | 'cc-csc' | 'cc-type' | 'pack-currency' | 'pack-amount' | 'language' | 'bday' | 'bday-day' | 'bday-month' | 'bday-year' | 'sex' | 'tel' | 'tel-country-code' | 'tel-national' | 'tel-area-code' | 'tel-local' | 'tel-extension' | 'impp' | 'url' | 'photo';
export type InputShape = 'square' | 'round';
export type InputTheme = 'light' | 'darker' | 'lighter' | 'dark';
export type InputSize = 'small' | 'medium' | 'big';
export type InputAdapter = (value: string) => V;
export type InputResolver = (value?: V) => string;
export interface InputSuggestion {
value: V;
}
export interface SuggestionsNamespace = InputSuggestion> {
namespace: string;
suggestions?: S[];
}
export interface SuggestionProps = InputSuggestion> {
suggestion: S;
}
export interface InputProps = InputSuggestion> extends FieldComponentProps {
adapter?: InputAdapter;
resolver?: InputResolver;
format?: InputResolver;
type?: HTMLInputTypeAttribute;
shape?: InputShape;
theme?: InputTheme;
size?: InputSize;
label?: string;
placeholder?: string;
instructions?: string;
autoComplete?: AutoComplete | string;
spellCheck?: boolean;
suggestions?: S[] | SuggestionsNamespace[];
SuggestionItem?: FC>;
suggestionsKeyExtractor?: (suggestion: S) => string;
suggestionsHeader?: ReactNode;
suggestionsFooter?: ReactNode;
onSelectSuggestion?: (suggestion: S) => void;
leftComponent?: ReactNode | IconName;
rightComponent?: ReactNode | IconName;
autoCorrect?: boolean;
autoCapitalize?: string;
}
export declare function Input = InputSuggestion>({ value, error, warning, isActive, visited, submitted, onFocus, name, onChange, onBlur, type, shape, theme, size, adapter, resolver, format, label, placeholder, instructions, autoComplete, spellCheck, suggestions, SuggestionItem, suggestionsKeyExtractor, suggestionsHeader, suggestionsFooter, onSelectSuggestion, leftComponent, rightComponent, autoCorrect, autoCapitalize, }: InputProps): ReactElement;