import EventsEmitter2 from 'eventemitter2';
import { PluginEvents, ToolName } from './constants';
import { downloadDatabases, getTestsTreeFromDatabase, mergeDatabases } from './db-utils/server';
import { ImageFileSaver, ReporterConfig, ReportsSaver } from './types';
export interface HtmlReporterValues {
    toolName: ToolName;
    extraItems: Record<string, string>;
    metaInfoExtenders: Record<string, string>;
    imagesSaver: ImageFileSaver;
    reportsSaver: ReportsSaver | null;
}
interface ReporterOptions {
    toolName: ToolName;
}
type ParametersExceptFirst<F> = F extends (arg0: any, ...rest: infer R) => any ? R : never;
export declare class HtmlReporter extends EventsEmitter2 {
    protected _config: ReporterConfig;
    protected _values: HtmlReporterValues;
    protected _version: string;
    static create<T extends HtmlReporter>(this: new (config: ReporterConfig, options?: Partial<ReporterOptions>) => T, config: ReporterConfig, options?: Partial<ReporterOptions>): T;
    constructor(config: ReporterConfig, { toolName }?: Partial<ReporterOptions>);
    get config(): ReporterConfig;
    get version(): string;
    get events(): typeof PluginEvents;
    addExtraItem(key: string, value: string): void;
    get extraItems(): Record<string, string>;
    addMetaInfoExtender(key: string, value: string): void;
    get metaInfoExtenders(): Record<string, string>;
    set imagesSaver(imagesSaver: ImageFileSaver);
    get imagesSaver(): ImageFileSaver;
    set reportsSaver(reportsSaver: ReportsSaver);
    get reportsSaver(): ReportsSaver | null;
    get values(): HtmlReporterValues;
    downloadDatabases(...args: Parameters<typeof downloadDatabases>): ReturnType<typeof downloadDatabases>;
    mergeDatabases(...args: Parameters<typeof mergeDatabases>): ReturnType<typeof mergeDatabases>;
    getTestsTreeFromDatabase(...args: ParametersExceptFirst<typeof getTestsTreeFromDatabase>): ReturnType<typeof getTestsTreeFromDatabase>;
}
export {};
