import { Document } from '../models/Document';
import { DocumentType } from '../models/DocumentType';
/**
 * Constructor.
 * @class
 * @author eric.wittmann@gmail.com
 */
export declare class ValidationRuleSet {
    static aai20: DocumentType;
    static aai20_$LI$(): DocumentType;
    static oai20: DocumentType;
    static oai20_$LI$(): DocumentType;
    static oai30: DocumentType;
    static oai30_$LI$(): DocumentType;
    static instance: ValidationRuleSet;
    static instance_$LI$(): ValidationRuleSet;
    static md(code: string, name: string, type: string, entity: string, versions: DocumentType[], specMandated: boolean, messageTemplate: string, ruleClass: any): ValidationRuleMetaData;
    rules: Array<ValidationRuleMetaData>;
    constructor();
    /**
     * Verify that there are no duplicate codes in the set of rules.
     * @private
     */
    validateRuleData(): void;
    /**
     * Gets all of the registered rules.
     * @return {ValidationRuleMetaData[]}
     */
    getAllRules(): Array<ValidationRuleMetaData>;
    /**
     * Gets the actual rule instances (visitors) that should be applied to the given document.
     * @param {Document} document
     * @return {ValidationRule[]}
     */
    getRulesFor(document: Document): Array<ValidationRule>;
}
import { ValidationRule } from './ValidationRule';
import { ValidationRuleMetaData } from './ValidationRuleMetaData';
