import { Reporter, FullConfig, Suite, TestCase, TestResult, FullResult, TestError } from '@playwright/test/reporter';

type TestTracerFeature = {
    displayName: string;
    uniqueName: string;
};
type TestTracerOptions = {
    projectName?: string;
    externalReference?: string;
    environment?: string;
    revision?: string;
    version?: string;
    branch?: string;
    noUpload?: boolean;
    runAlias?: string;
    metaData: string;
};

declare class TestTracerReporter implements Reporter {
    private options;
    private testCount;
    private testTracerBaseUrl;
    private uploadKey;
    private results;
    private featureUniqueName;
    private featureDisplayName;
    private resultsDir;
    constructor();
    onBegin(config: FullConfig, suite: Suite): void;
    validateParams(options: TestTracerOptions): void;
    onTestEnd(test: TestCase, result: TestResult): void;
    onEnd(result: FullResult): Promise<void | {
        status?: FullResult['status'];
    } | undefined>;
    onError(error: TestError): Promise<void>;
    findName: (suite: Suite) => void;
    calculateFeatureName(test: TestCase): TestTracerFeature;
    zipResults: () => Promise<void>;
    processResults: () => Promise<void>;
    uploadResults: () => Promise<void>;
}

export { TestTracerReporter as default };
