import { IJSONExpression } from "../..";
import { IKeyPath } from "../../helper/immutable";
import { ISimplePayload } from "./simple";
export interface IValidation<IData = {}, IContext = {}> {
    logic: IJSONExpression<IData, IContext>;
    err: string;
}
export interface IValidationResult {
    isValid: boolean;
    errors: {
        key: IKeyPath;
        msgs: string[];
    }[];
    payload: IPayload;
}
export interface IPayload<IData = any, IContext = any> {
    data: IData;
    context?: IContext;
}
export interface IFlowConfig {
    aggressive?: boolean;
    typeCheck?: boolean;
    normalize?: boolean;
}
export declare const ErrorMsgs: {
    required: string;
    type: string;
};
export declare function executeValidation(validation: IValidation, payload: ISimplePayload): string | null;
export declare function executeValidations(validations: IValidation[], payload: ISimplePayload): string[];
export declare function uniqueId(prefix?: string): string;
