declare enum EarlType {
    WebPage = "WebPage",
    Assertion = "Assertion",
    TestCase = "TestCase",
    TestResult = "TestResult"
}
interface EarlResult {
    '@context': object;
    '@type': EarlType.WebPage;
    url: string;
    assertions: Assertion[];
}
interface Assertion {
    '@type': EarlType.Assertion;
    mode: 'earl:automatic';
    assertedBy: {};
    test: {
        '@type': EarlType.TestCase;
        '@id': string;
    };
    result: TestResult;
}
interface TestResult {
    '@type': EarlType.TestResult;
    outcome: string;
    pointer?: string;
    info?: string;
}
interface RawResult {
    id: string;
    helpUrl: string;
    description: string;
    violations?: RawNodeResult[];
    passes?: RawNodeResult[];
    incomplete?: RawNodeResult[];
}
interface RawNodeResult {
    node: {
        selector: Selector;
    };
    result?: 'passed' | 'failed' | 'inapplicable' | 'incomplete';
}
type SelectorItem = string[] | string;
type Selector = SelectorItem[];

declare function createEarlReport(rawResults: RawResult[], url?: string): EarlResult;
declare function axeReporterEarl(rawResults: RawResult[], {}: {}, callback: (result: EarlResult) => unknown): void;

export { createEarlReport, axeReporterEarl as default };
