import type { UltimateSlicerStats } from '../data';
import type { MergeableRecord } from '../../../util/objects';
interface BenchmarkGraphEntry extends MergeableRecord {
    name: string;
    unit: string;
    value: number;
    range?: string;
    extra?: string;
}
/**
 * Whether an entry describes what the release *is* rather than how fast it *was*.
 *
 * The benchmark action compares every entry it uploads against the release before and calls a value that grew
 * a regression. That is right for a runtime and wrong for a counter: a release with ten more linting rules or a
 * larger signature database is not slower. Those entries are written to {@link infoGraphPath} instead and are
 * uploaded under a suite of their own, where nothing alerts on them. The page merges the two back together.
 *
 * The failures are counters too, but a run that fails to re-parse more slices than the one before is exactly
 * what an alert is for, so they stay with the measurements.
 */
export declare function isInfoEntry({ name, unit }: Pick<BenchmarkGraphEntry, 'name' | 'unit'>): boolean;
/** where the counters of `path` go, next to it, so that one upload can alert and the other cannot */
export declare function infoGraphPath(path: string): string;
/**
 * Write the graph output for the ultimate slicer stats to a file
 * @param ultimate - The ultimate slicer stats
 * @param outputGraphPath - The path to write the graph output to
 */
export declare function writeGraphOutput(ultimate: UltimateSlicerStats, outputGraphPath: string): Promise<void>;
export {};
