import * as React from 'react'; export interface IFormCreateFormConfig { formValidations?: { [key: string]: any; }; onChange?: (values?: {}, isChanged?: boolean) => void; onSubmitSuccess?: () => void; onSubmitFail?: () => void; scrollToError?: boolean; willScrollToError?: (zentForm: any) => void | IFormScrollToErrorOptions | Promise; } export interface IFormScrollToErrorOptions { offsetX?: number; offsetY?: number; } export interface IFormCreateFormWrapperProps { onSubmit?: (values: any, zentForm: any) => void; onSubmitSuccess?: () => void; onSubmitFail?: () => void; onValid?: () => void; onInvalid?: () => void; onChange?: (values?: object, isChanged?: boolean) => void; validationErrors?: { [key: string]: string; }; scrollToError?: boolean; willScrollToError?: (zentForm: any) => void | IFormScrollToErrorOptions | Promise; [key: string]: any; } export interface IFormCreateFormWrapperState { isFormValid: boolean; isSubmitting: boolean; submitFail: boolean; submitSuccess: boolean; } declare const createForm: (config?: IFormCreateFormConfig) => (WrappedForm: any) => { new (props: any): { fields: any[]; fieldArrays: any[]; _isMounted: boolean; prevFieldNames: string[]; wrappedForm: React.ReactInstance; submitPromise: Promise; getFormProp: () => { getFormValues: () => any; getFieldError: (name: any) => any; setFieldExternalErrors: (errors: any, updateDirty?: boolean) => void; resetFieldsValue: (data: any) => void; setFieldsValue: (data: any) => void; setFormDirty: (isDirty?: boolean) => void; setFormPristine: (isPristine?: boolean) => void; initialize: (data: any) => void; isFieldDirty: (name: any) => any; isFieldTouched: (name: any) => any; isFieldValidating: (name: any) => any; isValid: () => boolean; isValidating: () => boolean; isSubmitting: () => boolean; isFormAsyncValidated: () => boolean; validateForm: (forceValidate?: boolean, callback?: () => void, relatedFields?: string[]) => void; asyncValidateForm: (resolve: any, reject: any) => void; isFormSubmitFail: () => boolean; isFormSubmitSuccess: () => boolean; updateFormSubmitStatus: (submitSuccess: any) => void; }; getFormContext: () => { zentForm: { attachToForm: (field: any, options: any) => void; detachFromForm: (field: any, options: any) => void; validate: (field: any) => void; asyncValidate: (field: any, value: any) => Promise; getFormValues: () => any; getFieldError: (name: any) => any; isValidValue: (field: any, value: any) => boolean; setFieldExternalErrors: (errors: any, updateDirty?: boolean) => void; resetFieldsValue: (data: any) => void; setFormDirty: (isDirty?: boolean) => void; setFormPristine: (isPristine?: boolean) => void; setFieldArrayMembers: (fieldArrayName: any, value: any) => void; isValid: () => boolean; isSubmitting: () => boolean; validateForm: (forceValidate?: boolean, callback?: () => void, relatedFields?: string[]) => void; asyncValidateForm: (resolve: any, reject: any) => void; isFormSubmitFail: () => boolean; isFormSubmitSuccess: () => boolean; updateFormSubmitStatus: (submitSuccess: any) => void; }; }; componentDidMount(): void; componentWillUpdate(): void; componentDidUpdate(): void; submitCompleted: (result: any) => any; submitFailed: (error: any) => never; listenToSubmit: (promise: any) => any; submit: (submitOrEvent: any) => any; isSubmitting: () => boolean; isValid: () => boolean; setFieldValidationErrors: (errors: any, updateDirty?: boolean) => void; setFieldExternalErrors: (errors: any, updateDirty?: boolean) => void; setFormDirty: (isDirty?: boolean) => void; setFormPristine: (isPristine?: boolean) => void; initialize: (data: any) => void; resetFieldsValue: (data: any) => void; setFieldsValue: (data: any) => void; setFieldArrayMembers: (fieldArrayName: any, value: any) => void; reset: (data: any) => void; isFieldDirty: (name: any) => any; isFieldValidating: (name: any) => any; getFieldError: (name: any) => any; getFormValues: () => any; getValidationErrors: () => any; getInitialValues: () => any; isChanged: () => boolean; isValidating: () => boolean; isValidValue: (field: any, value: any) => boolean; updateFormSubmitStatus: (submitSuccess: any) => void; isFormSubmitFail: () => boolean; isFormSubmitSuccess: () => boolean; runValidation: (field: any, value?: any) => { isValid: boolean; error: string | any[]; }; runRules: (value: any, currentValues: any, validations?: any[]) => { errors: any[]; failed: any[]; }; validate: (field: any) => void; asyncValidate: (field: any, value: any) => Promise; isFormAsyncValidated: () => boolean; asyncValidateForm: (resolve: any, reject: any) => void; validateForm: (forceValidate?: boolean, callback?: () => void, relatedFields?: string[]) => void; attachToForm: (field: any, options: any) => void; detachFromForm: (field: any, options: any) => void; getWrappedForm: () => React.ReactInstance; saveWrappedFormRef: (ref: any) => void; render(): JSX.Element; context: any; setState(state: IFormCreateFormWrapperState | ((prevState: Readonly, props: Readonly) => IFormCreateFormWrapperState | Pick) | Pick, callback?: () => void): void; forceUpdate(callback?: () => void): void; readonly props: Readonly & Readonly<{ children?: React.ReactNode; }>; state: Readonly; refs: { [key: string]: React.ReactInstance; }; shouldComponentUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): boolean; componentWillUnmount?(): void; componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void; getSnapshotBeforeUpdate?(prevProps: Readonly, prevState: Readonly): any; componentWillMount?(): void; UNSAFE_componentWillMount?(): void; componentWillReceiveProps?(nextProps: Readonly, nextContext: any): void; UNSAFE_componentWillReceiveProps?(nextProps: Readonly, nextContext: any): void; UNSAFE_componentWillUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): void; }; displayName: string; WrappedForm: any; defaultProps: { onSubmit: (...args: any[]) => void; onSubmitSuccess: (...args: any[]) => void; onSubmitFail: (...args: any[]) => void; onValid: (...args: any[]) => void; onInvalid: (...args: any[]) => void; onChange: (...args: any[]) => void; validationErrors: any; scrollToError: boolean; willScrollToError: (...args: any[]) => void; }; contextType?: React.Context; }; export default createForm;