import EventEmitter from 'events';
import { Minipass } from 'minipass';
import { Parser, Result } from 'tap-parser';
export declare class Case {
    result: Result;
    constructor(result: Result);
    get failures(): 0 | 1;
    get skipped(): 0 | 1;
    get tests(): number;
    toJSON(): Record<string, any> | undefined;
}
export declare class Suite extends EventEmitter {
    parser: Parser;
    suites: Suite[];
    cases: Case[];
    name: string;
    results?: Record<string, any>;
    summary?: Record<string, any>;
    constructor(parser: Parser);
    onAssert(a: Result): void;
    toJSON(): Record<string, any> | undefined;
    get tests(): number;
    get failures(): number;
    get assertions(): number;
    get skipped(): number;
}
export declare class Suites extends Suite {
    constructor(p: Parser);
}
export declare class JSONReport extends Minipass<string> {
    parser: Parser;
    constructor();
    write(chunk: Minipass.ContiguousData, cb?: (() => void) | undefined): boolean;
    write(chunk: Minipass.ContiguousData, encoding?: Minipass.Encoding | undefined, cb?: (() => void) | undefined): boolean;
    end(cb?: (() => void) | undefined): this;
    end(chunk: Minipass.ContiguousData, cb?: (() => void) | undefined): this;
    end(chunk: Minipass.ContiguousData, encoding?: Minipass.Encoding | undefined, cb?: (() => void) | undefined): this;
}
export declare class JSONStream extends Minipass<string> {
    parser: Parser;
    constructor();
    onCase(c: Case): void;
    suiteStart(s: Suite): void;
    suiteEnd(s: Suite): void;
    write(chunk: Minipass.ContiguousData, cb?: (() => void) | undefined): boolean;
    write(chunk: Minipass.ContiguousData, encoding?: Minipass.Encoding | undefined, cb?: (() => void) | undefined): boolean;
    end(cb?: (() => void) | undefined): this;
    end(chunk: Minipass.ContiguousData, cb?: (() => void) | undefined): this;
    end(chunk: Minipass.ContiguousData, encoding?: Minipass.Encoding | undefined, cb?: (() => void) | undefined): this;
}
//# sourceMappingURL=json.d.ts.map