interface IFieldMeta { focused: boolean; active: boolean; blurred: boolean; changed: boolean; warning: string; error: string; } type MetaState = { [key in keyof Values]?: Values[key] extends object ? MetaState : IFieldMeta; }; type MapMessages = { [key in keyof Values]?: Values[key] extends object ? MapMessages : string | null; }; interface IFormState { submitted: boolean; focused: boolean; blurred: boolean; changed: boolean; errorsMap: MapMessages; hasErrors: boolean; warningsMap: MapMessages; hasWarnings: boolean; activeField: string; } interface IReduxFormState { form: IFormState; meta: MetaState; values: Values; } type ValidateMethod = (value?: any) => string | undefined | null; type ValidateProps = Array | ValidateMethod; interface IFullReduxFormState { [key: string]: IReduxFormState | IReduxFormWizard | undefined; } interface IMapValidate { [key: string]: ValidateProps; } interface IMapErrorsAndWarningsMessages { errors?: MapMessages; warnings?: MapMessages; } interface IReduxFormSubmitEvent { values: Values; actions: IReduxFormActions; state: IReduxFormState; wizard?: IReduxFormWizard; } interface IReduxFormActions { registerForm(form: string, wizard?: string): any; registerField(form: string, field: string, value: any, wizard?: string): any; change(form: string, field: string, value: any, wizard?: string): any; focus(form: string, field: string): any; blur(form: string, field: string): any; updateValidateMessage(form: string, field: string, value: any, wizard?: string): any; updateValidateMessages(form: string, errorsMap: MapMessages, submitted?: boolean, wizard?: string): any; updateWarningMessage(form: string, field: string, value?: string, wizard?: string): any; updateWarningMessages(form: string, warningMap: MapMessages, submitted?: string, wizard?: string): any; updateValidateAndWarningMessages( form: string, map: IMapErrorsAndWarningsMessages, submitted?: boolean, wizard?: string, ): any; changeSubmitted(form: string, value: boolean): any; updateFormState( form: string, state: IReduxFormState, wizard?: string, wizardState?: IReduxFormWizard, ): any; removeField(form: string, field: string): any; removeForm(form: string): any; setInitialValues(form: string, initialValues: any, wizard?: string): any; resetForm(form: string, wizard?: string); arrayPush(form: string, field: string, value: any): any; } type SubmitValidate = (values: Values) => MapMessages; interface IReduxFormParams { form: string; wizard?: string; destroyOnUnmount?: boolean; validate?: SubmitValidate; warn?: SubmitValidate; initialValues?: Values; } interface IWizardState { errorsMap: MapMessages; hasErrors: boolean; warningsMap: MapMessages; hasWarnings: boolean; } interface IReduxFormWizard { wizard: IWizardState; values: Values; } interface IReduxFormInjected { handleSubmit(): void; formParams: IReduxFormParams; formActions: IReduxFormActions; formState: IReduxFormState; } declare const reducer: () => IFullReduxFormState; // declare const reduxForm: ()