import { Base } from '../mixins';
import { Rules } from './validationRules';
export declare const DEFAULT_ZONE_KEY = "default";
export declare enum ValidationLevel {
    Info = "info",
    Warning = "warning",
    Error = "error"
}
export interface ValidationComponent {
    zoneToResults: Record<string, Array<ValidationResult>>;
    addResult(result: ValidationResult, zoneKey?: string): void;
    /**
     * Filter results by level.
     *
     * @param level Result level to filter by.
     * @param zoneKey Zone to check for results. Defaults to DEFAULT_ZONE_KEY.
     */
    filterResults(level: ValidationLevel, zoneKey?: string): Array<ValidationResult>;
    /**
     * Retrieve results by zone and/or max level.
     *
     * @param zoneKey Zone to check for results. Defaults to DEFAULT_ZONE_KEY.
     * @param maxLevel Max result level to retrieve.
     */
    getResults(zoneKey?: string, maxLevel?: ValidationLevel): Array<ValidationResult>;
    /**
     * Check if a zone has any results or if any zone has results.
     *
     * @param zoneKey Zone to check for results. Defaults to DEFAULT_ZONE_KEY. Provide null to check all zones.
     * @param level Max result level to check against.
     */
    hasAnyResults(zoneKey?: string | null, maxLevel?: ValidationLevel): boolean;
    /**
     * Runs the validation rules against the value.
     *
     * @param value Value to validate.
     * @param zoneKey Zone to store validation result.
     */
    validate(value: any, zoneKey?: string): boolean;
}
export declare class Validation implements ValidationComponent {
    zoneToResults: Record<string, Array<ValidationResult>>;
    rules: Rules;
    constructor(rules: Rules);
    addResult(result: ValidationResult, zoneKey?: string): void;
    filterResults(level: ValidationLevel, zoneKey?: string): Array<ValidationResult>;
    /**
     * Checks each of the rules to see if the field is required.
     */
    isRequired(zoneKey?: string): boolean;
    getResults(zoneKey?: string, maxLevel?: ValidationLevel): Array<ValidationResult>;
    hasAnyResults(zoneKey?: string | null, maxLevel?: ValidationLevel): boolean;
    validate(value: any, zoneKey?: string): boolean;
    get zones(): Array<string>;
}
declare const ValidationResult_base: {
    new (...args: any[]): {
        _uuid?: string | undefined;
        readonly uuid: string;
        readonly uid: string;
    };
} & typeof Base;
export declare class ValidationResult extends ValidationResult_base {
    level: ValidationLevel;
    message: string;
    constructor(message: string, level?: ValidationLevel);
}
export {};
