import { type Evalite } from "@evalite/core";
import { type SQLiteDatabase } from "@evalite/core/db";
import type { RunnerTask, RunnerTestFile, TaskResultPack, Test } from "vitest";
import { BasicReporter } from "vitest/reporters";
export interface EvaliteReporterOptions {
    isWatching: boolean;
    port: number;
    logNewState: (event: Evalite.ServerState) => void;
    db: SQLiteDatabase;
    scoreThreshold: number | undefined;
    modifyExitCode: (exitCode: number) => void;
}
export declare function withLabel(color: "red" | "green" | "blue" | "cyan", label: string, message: string): string;
type ReporterEvent = {
    type: "RUN_BEGUN";
    filepaths: string[];
    runType: Evalite.RunType;
} | {
    type: "RUN_ENDED";
} | {
    type: "RESULT_SUBMITTED";
    result: Evalite.Result;
} | {
    type: "RESULT_STARTED";
    initialResult: Evalite.InitialResult;
};
export default class EvaliteReporter extends BasicReporter {
    private opts;
    private state;
    private didLastRunFailThreshold;
    constructor(opts: EvaliteReporterOptions);
    onInit(ctx: any): void;
    onWatcherStart(files?: RunnerTestFile[], errors?: unknown[]): void;
    updateState(state: Evalite.ServerState): void;
    /**
     * Handles the state management for the reporter
     */
    sendEvent(event: ReporterEvent): void;
    onWatcherRerun(files: string[], trigger?: string): void;
    onFinished: (files?: RunnerTestFile[], errors?: unknown[]) => Promise<void>;
    protected printTask(file: RunnerTask): void;
    reportTestSummary(files: RunnerTestFile[], errors: unknown[]): void;
    private renderTable;
    onTestStart(test: Test): void;
    onTestFinished(test: Test): void;
    onTestFilePrepare(file: RunnerTestFile): void;
    onTestFileFinished(file: RunnerTestFile): void;
    onTaskUpdate(packs: TaskResultPack[]): void;
}
export {};
//# sourceMappingURL=reporter.d.ts.map