import { DependencyList, Dispatch } from 'react';
import { IInitialState, INextState } from '../util/resolveHookState';
export interface IValidityState extends Record<any, any> {
    isValid: boolean | undefined;
}
export declare type IValidatorImmediate<V extends IValidityState = IValidityState> = () => V;
export declare type IValidatorDeferred<V extends IValidityState = IValidityState> = (done: Dispatch<INextState<V>>) => any;
export declare type IValidator<V extends IValidityState = IValidityState> = IValidatorImmediate<V> | IValidatorDeferred<V>;
export declare type IUseValidatorReturn<V extends IValidityState> = [V, () => void];
/**
 * Performs validation when any of provided dependencies has changed.
 *
 * @param validator Function that performs validation.
 * @param deps Dependencies list that passed straight to underlying `useEffect`.
 * @param initialValidity Initial validity state.
 */
export declare function useValidator<V extends IValidityState>(validator: IValidator<V>, deps: DependencyList, initialValidity?: IInitialState<V>): IUseValidatorReturn<V>;
