import type { FormInstance, NamePath, Store, WatchOptions } from './interface'; type ReturnPromise = T extends Promise ? ValueType : never; type GetGeneric = ReturnPromise>; export declare function stringify(value: any): string | number; declare function useWatch, TForm extends FormInstance, TDependencies2 extends keyof GetGeneric[TDependencies1], TDependencies3 extends keyof GetGeneric[TDependencies1][TDependencies2], TDependencies4 extends keyof GetGeneric[TDependencies1][TDependencies2][TDependencies3]>(dependencies: [TDependencies1, TDependencies2, TDependencies3, TDependencies4], form?: TForm | WatchOptions): GetGeneric[TDependencies1][TDependencies2][TDependencies3][TDependencies4]; declare function useWatch, TForm extends FormInstance, TDependencies2 extends keyof GetGeneric[TDependencies1], TDependencies3 extends keyof GetGeneric[TDependencies1][TDependencies2]>(dependencies: [TDependencies1, TDependencies2, TDependencies3], form?: TForm | WatchOptions): GetGeneric[TDependencies1][TDependencies2][TDependencies3]; declare function useWatch, TForm extends FormInstance, TDependencies2 extends keyof GetGeneric[TDependencies1]>(dependencies: [TDependencies1, TDependencies2], form?: TForm | WatchOptions): GetGeneric[TDependencies1][TDependencies2]; declare function useWatch, TForm extends FormInstance>(dependencies: TDependencies | [TDependencies], form?: TForm | WatchOptions): GetGeneric[TDependencies]; declare function useWatch(dependencies: [], form?: TForm | WatchOptions): GetGeneric; declare function useWatch(dependencies: NamePath, form?: TForm | WatchOptions): any; declare function useWatch(dependencies: NamePath, form?: FormInstance | WatchOptions): ValueType; export default useWatch;