import * as React from 'react'; import { FieldDescriptors, FieldStates, ValidationFunction } from './types'; import { List, Nested } from './components'; export interface RemoteError { field?: string[] | null; message: string; } declare type MaybeArray = T | T[]; declare type MaybePromise = T | Promise; interface SubmitHandler { (formDetails: FormData): MaybePromise | MaybePromise; } export declare type Validator = MaybeArray>; export declare type ValidatorDictionary = { [FieldPath in keyof FieldMap]: Validator; }; export interface FormData { fields: FieldDescriptors; dirty: boolean; valid: boolean; errors: RemoteError[]; } export interface FormDetails extends FormData { submitting: boolean; reset(): void; submit(): void; } interface Props { initialValues: Fields; validators?: Partial>; onSubmit?: SubmitHandler; validateOnSubmit?: boolean; onInitialValuesChange?: 'reset-all' | 'reset-where-changed' | 'ignore'; children(form: FormDetails): React.ReactNode; } interface State { submitting: boolean; fields: FieldStates; dirtyFields: (keyof Fields)[]; errors: RemoteError[]; } export default class FormState extends React.PureComponent, State> { static List: typeof List; static Nested: typeof Nested; static getDerivedStateFromProps(newProps: Props, oldState: State): State | null; state: State; private mounted; componentDidMount(): void; componentWillUnmount(): void; render(): React.ReactNode; private readonly formData; validateForm(): Promise<{}>; reset(): Promise<{}>; private readonly dirty; private readonly valid; private readonly hasClientErrors; private readonly fields; private submit; private fieldWithHandlers; private updateField; private getUpdatedDirtyFields; private getUpdatedField; private blurField; private validateFieldValue; private updateRemoteErrors; } export {};