import { A11yRule } from "./rule";
import { A11yReference } from "./reference";
import { QueryResult } from "../query";
export declare enum A11yResultStatus {
    UNKNOWN = "unknown",
    SUCCESS = "success",
    MANUAL = "manual",
    ERROR = "error"
}
export interface NonCompliantNode {
    node?: HTMLElement;
    selector: string;
    html?: string;
}
export interface NodeToCheckManually {
    node: QueryResult;
    selector: string;
    attributes: string;
    html: string;
    help: string;
}
export declare class A11yRuleValidationResult {
    readonly criteria: string;
    status: A11yResultStatus;
    errorNodes: NonCompliantNode[];
    nodesToCheckManually: NodeToCheckManually[];
    constructor(criteria: string);
}
export declare class A11yRuleResult {
    readonly url: string;
    readonly rule: A11yRule;
    status: A11yResultStatus;
    validations: A11yRuleValidationResult[];
    constructor(url: string, rule: A11yRule);
    getOrAddValidation(criteria: string): A11yRuleValidationResult;
    getErrorNodes(): NonCompliantNode[];
    getNodesToCheckManually(): NodeToCheckManually[];
    computeStatus(): void;
    private getStatus;
}
export declare class A11yResult {
    readonly url: string;
    readonly reference: A11yReference;
    status: A11yResultStatus;
    ruleResults: A11yRuleResult[];
    constructor(url: string, reference: A11yReference);
    computeStatus(): void;
    summary(): {
        status: A11yResultStatus;
        criteria: {};
    };
    private buildSummaryForCriterion;
    private getPosition;
    private groupRuleResultByLevel;
    private getKeyOfLevel;
    private groupRuleResultByCriterion;
    private groupRuleResultByTestOfACriterion;
}
