import { KeyboardTypeOptions, TextInputProps } from 'react-native';
import { FieldModelOptions } from './FieldModel';
import InputFieldModel, { InputFieldModelOptions, ParsedInputFieldModelOptions } from './InputFieldModel';
export interface KeyboardInputFieldModelBaseOptions extends Pick<TextInputProps, 'clearTextOnFocus' | 'selectTextOnFocus' | 'clearButtonMode' | 'returnKeyType'> {
    optional?: boolean;
    mode?: 'plain' | 'contained';
}
export interface KeyboardInputFieldModelOwnOptions extends KeyboardInputFieldModelBaseOptions, Pick<TextInputProps, 'textContentType' | 'autoCapitalize' | 'multiline'> {
    type: KeyboardInputFieldType;
    keyboardType: KeyboardTypeOptions;
    /**
     * If true, then the value will be updated as the user types.
     * If false (the default), the value will only update when
     * the user finishes typing.
     *
     * The latter is recommeded when a validator is used.
     */
    submitOnChangeValue?: boolean;
}
export interface KeyboardInputFieldModelOptions<T> extends Partial<KeyboardInputFieldModelOwnOptions>, ParsedInputFieldModelOptions<T, string> {
}
export declare type KeyboardInputFieldType = 'text' | 'secure' | 'email' | 'integer' | 'float' | 'unsignedInteger' | 'unsignedFloat';
export default class KeyboardInputFieldModel<T> extends InputFieldModel<T> implements KeyboardInputFieldModelOwnOptions {
    type: KeyboardInputFieldType;
    mode: KeyboardInputFieldModelOwnOptions['mode'] | undefined;
    keyboardType: KeyboardTypeOptions;
    returnKeyType: TextInputProps['returnKeyType'];
    textContentType: TextInputProps['textContentType'] | undefined;
    optional: boolean;
    multiline: boolean;
    autoFocus: boolean;
    clearTextOnFocus: TextInputProps['clearTextOnFocus'];
    selectTextOnFocus: TextInputProps['selectTextOnFocus'];
    clearButtonMode: TextInputProps['clearButtonMode'];
    autoCapitalize: TextInputProps['autoCapitalize'] | undefined;
    submitOnChangeValue: boolean;
    constructor(options: KeyboardInputFieldModelOptions<T>);
    static defaults<T>(options: KeyboardInputFieldModelOptions<T>): KeyboardInputFieldModelDefaults<T>;
}
export declare type KeyboardInputFieldModelDefaults<T> = Omit<KeyboardInputFieldModelOwnOptions & InputFieldModelOptions<T, string>, keyof FieldModelOptions | 'value' | 'defaultValue'> & Required<Pick<KeyboardInputFieldModelOwnOptions, 'optional'>>;
