///
export declare type ValidatorFunction = (val: any) => void | string | ErrorLikeObject | Promise;
declare function extendValidators(name: string, fn: ValidatorFunction): void;
export declare type ModelOption = {
value: any;
validate: Array;
};
declare function model(value: any, ...validate: Array): ModelOption;
export { extendValidators, model };
export declare type ParseOptions = {
[key: string]: any;
};
declare type ErrorState = {
[P in keyof T]: boolean | string;
};
export declare type ErrorLikeObject = {
message: string;
};
export declare type Options = {
[k: string]: ModelOption | Options | any;
};
export default function useModels(options?: Options): {
input: (name: string, type?: string) => {
onChange: (e: Event) => void;
value: T;
name: string;
type: string;
};
checkbox: (name: string, truevalue?: any, falsevalue?: any) => {
onChange: (e: Event) => void;
checked: boolean;
type: string;
name: string;
value: any;
};
radio: (name: string, value?: any) => {
onChange: (e: Event) => void;
checked: boolean;
type: string;
name: string;
value: any;
};
submit: (cb: (state: any) => any | void) => (e: Event) => Promise;
error: (cb: (errors: any, state: any) => any | void) => () => void;
errors: ErrorState;
state: T;
watch: (path: string, fn: (newVal: any, oldVal: any) => any) => () => void;
hydrate: (_state: any, _errors?: any) => void;
set: (name: string, value: any, validate?: boolean, watchers?: boolean) => void;
get: (name: string) => T;
getState: () => T;
getErrors: () => ErrorState;
setState: import("react").Dispatch>;
setErrors: import("react").Dispatch>>;
};