//#region src/BenchmarkScatterChart/utils.d.ts export type ScaleType = 'linear' | 'log'; export interface Scale { domain: [number, number]; map: (value: number) => number; ticks: number[]; } export declare const getLinearTicks: (min: number, max: number, count?: number) => number[]; export declare const getLogTicks: (min: number, max: number) => number[]; export declare const createScale: ({ values, type, range, min, max, padding, tickCount }: { max?: number; min?: number; padding?: number; range: [number, number]; tickCount?: number; type?: ScaleType; values: number[]; }) => Scale; /** * Pareto frontier: points not dominated by any other point. * `xDirection = 'lower'` treats smaller X as better (e.g. cost / latency). * Returns keys ordered by ascending X. */ export declare const getParetoFrontier: (points: T[], xDirection?: "lower" | "higher") => T[]; export type LabelPlacement = 'right' | 'left' | 'top' | 'bottom' | 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'; export interface Box { height: number; width: number; x: number; y: number; } export interface LabelCandidate { height: number; key: string | number; px: number; py: number; radius: number; width: number; } export interface PlacedLabel extends Box { key: string | number; placement: LabelPlacement; } /** * Greedy label placement: candidates are processed in the given order, * each picks the position with the least overlap against markers, * already-placed labels and the outer bounds. */ export declare const placeLabels: (candidates: LabelCandidate[], bounds: Box, { gap, lines }?: { gap?: number; lines?: Box[]; }) => Map; //#endregion //# sourceMappingURL=utils.d.mts.map