import type { SqliteClient } from '../sqlite-client';
import { ReporterTestResult } from '../test-adapter';
import { ReporterConfig } from '../types';
import { HtmlReporter } from '../plugin-api';
import { TestAttemptManager } from '../test-attempt-manager';
import { RegisterWorkers } from '../workers/create-workers';
import { ImagesInfoSaver } from '../images-info-saver';
export interface StaticReportBuilderOptions {
    dbClient: SqliteClient;
    imagesInfoSaver: ImagesInfoSaver;
}
export declare class StaticReportBuilder {
    protected _htmlReporter: HtmlReporter;
    protected _pluginConfig: ReporterConfig;
    protected _dbClient: SqliteClient;
    protected _imagesInfoSaver: ImagesInfoSaver;
    protected _testAttemptManager: TestAttemptManager;
    private _workers?;
    static create<T extends StaticReportBuilder>(this: new (htmlReporter: HtmlReporter, pluginConfig: ReporterConfig, options: StaticReportBuilderOptions) => T, htmlReporter: HtmlReporter, pluginConfig: ReporterConfig, options: StaticReportBuilderOptions): T;
    constructor(htmlReporter: HtmlReporter, pluginConfig: ReporterConfig, { dbClient, imagesInfoSaver }: StaticReportBuilderOptions);
    saveStaticFiles(): Promise<void>;
    registerWorkers(workers: RegisterWorkers<['saveDiffTo']>): void;
    /** If passed test result doesn't have attempt, this method registers new attempt and sets attempt number */
    provideAttempt(testResultOriginal: ReporterTestResult): ReporterTestResult;
    private _saveTestResultData;
    addTestResult(formattedResultOriginal: ReporterTestResult): Promise<ReporterTestResult>;
    protected _deleteTestResultFromDb(...args: Parameters<typeof this._dbClient.delete>): void;
    finalize(): Promise<void>;
}
