import type * as Inspector from "inspector";
import { Summary } from "../testRunner/testRunner";
import { CoverageOptions } from "../coverage/processCoverage";
export declare const enum TestType {
    TEST = 0,
    DESCRIBE = 1,
    ASSERT = 2
}
export declare const enum MessageType {
    FILE_START = 0,
    FILE_END = 1,
    ADDED = 2,
    START = 3,
    END = 4,
    COVERAGE = 5
}
export type TestInfo = {
    parentId: number;
    description: string;
    type: TestType;
};
export type MessageBase = {
    id: number;
};
export type MessageCoverage = {
    type: MessageType.COVERAGE;
    coverage: Inspector.Profiler.ScriptCoverage[];
};
export type MessageFileStart = {
    type: MessageType.FILE_START;
};
export type MessageFileEnd = {
    type: MessageType.FILE_END;
};
export type MessageAdded = MessageBase & {
    type: MessageType.ADDED;
    test: TestInfo;
};
export type MessageStart = MessageBase & {
    type: MessageType.START;
};
export type MessageEnd = MessageBase & {
    type: MessageType.END;
    error?: string;
};
export type Messages = MessageCoverage | MessageFileStart | MessageFileEnd | MessageAdded | MessageStart | MessageEnd;
export type FormatterOptions = {
    excludeFiles: string[];
    exclude: RegExp[];
    branches: boolean;
};
export type FormatSummaryResult = void | {
    ok: boolean;
};
export interface Formatter {
    formatSummary?(summary: Summary, coverageOptions: CoverageOptions): FormatSummaryResult | Promise<FormatSummaryResult>;
    format(fileId: string, msg: Messages): void;
}
