/// export interface Validation { valid: boolean; message?: any; } export declare type ValidateFunc = (value: any, values: any) => Promise | boolean | Validation; declare type ValidationResult = Promise; export declare type ExtractProps = TComponentOrTProps extends React.ComponentType ? TProps : TComponentOrTProps; export interface WrapperChildProps { value: any; onChange: (event: any) => any; } export interface FormController { attachComponent: (name: any, conmponent: any, defaultValue?: any) => void; attachContext: (conmponent: any) => void; validate: () => ValidationResult; validateByName: (name: string, values: { [name: string]: any; }) => ValidationResult; set: (name: string, opts: { value?: any; message?: any; valid?: boolean; }) => void; get: (name: string) => { value: any; valid: boolean; message?: any; }; } export interface FormField { validate?: ValidateFunc; Context: React.Context; } export interface FormProviderContext { errors: { [name: string]: boolean; }; values: { [name: string]: any; }; onChange: (event: any) => void; } export interface Provider extends React.Component { onChange: (event: React.SyntheticEvent) => void; update: (errorFields: { [name: string]: any; }) => void; context: React.Context; } export interface FormFieldProps extends React.HTMLProps { validate?: ValidateFunc; controller?: FormController; name: string; } export interface SimpleWrapperProps extends FormFieldProps { children: React.ReactElement; } export interface WrapperProps extends FormFieldProps { children?: (props: WrapperChildProps & { name?: string; error: boolean; message?: any; }) => React.ReactElement; } export interface FormProps extends React.HTMLProps { controller: FormController; } export {};