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<V = string> = (value: string) => V;
export type InputResolver<V = string> = (value?: V) => string;
export interface InputSuggestion<V = string> {
    value: V;
}
export interface SuggestionsNamespace<V = string, S extends InputSuggestion<V> = InputSuggestion<V>> {
    namespace: string;
    suggestions?: S[];
}
export interface SuggestionProps<V = string, S extends InputSuggestion<V> = InputSuggestion<V>> {
    suggestion: S;
}
export interface InputProps<V = string, S extends InputSuggestion<V> = InputSuggestion<V>> extends FieldComponentProps<V> {
    adapter?: InputAdapter<V>;
    resolver?: InputResolver<V>;
    format?: InputResolver<V>;
    type?: HTMLInputTypeAttribute;
    shape?: InputShape;
    theme?: InputTheme;
    size?: InputSize;
    label?: string;
    placeholder?: string;
    instructions?: string;
    autoComplete?: AutoComplete | string;
    spellCheck?: boolean;
    suggestions?: S[] | SuggestionsNamespace<V, S>[];
    SuggestionItem?: FC<SuggestionProps<V, S>>;
    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<V = string, S extends InputSuggestion<V> = InputSuggestion<V>>({ 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<V, S>): ReactElement;
