import { ApexTestResultOutcome, TestResult } from '@salesforce/apex-node';
import { ApexTestRunResultStatus } from '@salesforce/apex-node/lib/src/tests/types.js';
export type RunResult = {
    summary: Summary;
    tests: CliTestResult[];
    coverage?: CliCoverageResult;
};
type Summary = {
    outcome: ApexTestRunResultStatus;
    testsRan: number;
    passing: number;
    failing: number;
    skipped: number;
    passRate: string;
    failRate: string;
    testStartTime: string;
    testExecutionTime: string;
    testTotalTime: string;
    commandTime: string;
    hostname: string;
    orgId: string;
    username: string;
    testRunId: string;
    userId: string;
    orgWideCoverage?: string;
    testRunCoverage?: string;
};
type CliTestResult = {
    Id: string;
    QueueItemId: string;
    StackTrace: string;
    Message: string;
    AsyncApexJobId: string;
    MethodName: string;
    Outcome: ApexTestResultOutcome;
    ApexClass: {
        Id: string;
        Name: string;
        NamespacePrefix: string;
    };
    RunTime: number;
    FullName: string;
};
type ClassCoverage = {
    id: string;
    name: string;
    totalLines: number;
    lines: Record<string, number>;
    totalCovered: number;
    coveredPercent: number;
};
type PerClassCoverage = {
    ApexTestClass: {
        Id: string;
        Name: string;
    };
    Coverage?: {
        coveredLines: number[];
        uncoveredLines: number[];
    };
    TestMethodName: string;
    NumLinesCovered: number;
    ApexClassOrTrigger: {
        Id: string;
        Name: string;
    };
    NumLinesUncovered: number;
};
type CliCoverageResult = {
    coverage: ClassCoverage[];
    records: PerClassCoverage[];
    summary: {
        totalLines?: number;
        coveredLines?: number;
        testRunCoverage?: string;
        orgWideCoverage?: string;
    };
};
export declare class JsonReporter {
    format(result: TestResult): RunResult;
    private formatCoverage;
}
export {};
