import type { DependencyList, ReactNode } from "react"; declare type IFieldObjectCustomConfig = Pick>>; interface IFieldValidationStateBase { changed: boolean; cue: boolean; cueInvalid: boolean; errors: ReactNode[]; label?: string; required: boolean; valid: boolean; value: T; } interface IFieldObjectBase extends IFieldValidationStateBase { restore: () => void; setCue: (cue: boolean) => void; setValue: (newValue: T) => void; } export declare type IFieldObject = IFieldObjectCustomConfig & IFieldObjectBase; export declare type RuleCallback = (value: T) => boolean; interface IFieldValidationConfigBase { cueDelay?: number; deps?: DependencyList; label?: string; required?: boolean | ReactNode; rules?: [RuleCallback, ReactNode?][]; } export declare type IFieldValidationConfig = P & IFieldValidationConfigBase; export declare const useStateValidate: >(initial: T, config: P) => IFieldObject; export declare const fieldBagChanged: (fieldBag: object) => boolean; export declare const fieldBagValid: (fieldBag: object) => boolean; export declare const fieldBagReduceToValues: (fieldBag: F) => { [key in keyof F]: string; }; export declare const fieldBagTraverse: (fieldBag: object, cb: (field: IFieldObject) => void) => void; export declare const ruleEmail: () => (value: string) => boolean; export declare const ruleEnum: (list: string[]) => (value: string) => boolean; export declare const ruleLength: ({ min, max }: { min?: number | undefined; max?: number | undefined; }) => (value: string) => boolean; export declare const ruleMatch: (pattern: RegExp) => (value: string) => boolean; export declare const ruleNumeric: () => (value: string) => boolean; export declare const rulePhone: () => (value: string) => boolean; export declare const ruleZip: () => (value: string) => boolean; export declare const defineConfig: (rule: IFieldValidationConfig) => IFieldValidationConfig; export default useStateValidate;