import { DryRunResult } from '@stryker-mutator/api/test-runner';
import { MutantCoverage } from '@stryker-mutator/api/core';
import type karma from 'karma';
export interface KarmaSpec {
    description: string;
    id: string;
    skipped: boolean;
    success: boolean;
    time: number;
    suite: string[];
    log: string[];
}
export interface Browser {
    id: string;
    state: string;
}
export declare function strykerReporterFactory(karmaServer: karma.Server, config: karma.Config): StrykerReporter;
export declare namespace strykerReporterFactory {
    var $inject: string[];
}
/**
 * This is a singleton implementation of a KarmaReporter.
 * It is loaded by karma and functions as a bridge between the karma world and the stryker world
 *
 * It uses properties as functions because karma is not able to find actual methods.
 *
 * i.e. use `public readonly onFoo = () => {}` instead of `onFoo() { }`.
 */
export declare class StrykerReporter implements karma.Reporter {
    adapters: any[];
    karmaServer: karma.Server | undefined;
    karmaConfig: karma.Config | undefined;
    runResultHandler: ((result: DryRunResult) => void) | undefined;
    private testResults;
    private errorMessage;
    private mutantCoverage;
    private hitCount;
    private hitLimit;
    private initTask;
    private runTask;
    private karmaRunResult;
    private browserIsRestarting;
    private static readonly _instance;
    static get instance(): StrykerReporter;
    readonly onBrowsersReady: () => void;
    configureHitLimit(hitLimit: number | undefined): void;
    whenBrowsersReady(): Promise<void>;
    whenRunCompletes(): Promise<DryRunResult>;
    readonly onSpecComplete: (_browser: unknown, spec: KarmaSpec) => void;
    readonly onRunStart: () => void;
    readonly onRunComplete: (_browsers: unknown, runResult: karma.TestResults) => void;
    readonly onBrowserComplete: (_browser: unknown, result: {
        mutantCoverage: MutantCoverage | undefined;
        hitCount: number | undefined;
    }) => void;
    readonly onBrowserError: (browser: Browser, error: any) => void;
    private collectRunResult;
}
//# sourceMappingURL=stryker-reporter.d.ts.map