/** * Scale function interface for mapping data values to visual coordinates */ export interface Scale { /** Map a value from domain to range */ (value: T): number; /** Get the scale's domain */ domain(): any[]; /** Get the scale's range */ range(): number[]; /** Map a value from range back to domain (if supported) */ invert?(value: number): T; /** Generate evenly-spaced tick values (if supported) */ ticks?(count?: number): any[]; /** Get the bandwidth for band/point scales */ bandwidth?(): number; } /** * Creates a linear scale that maps numeric values to a range * @param domain - Input domain [min, max] * @param range - Output range [min, max] * @returns Linear scale function with utility methods */ export declare function linearScale(domain: [number, number], range: [number, number]): Scale; /** * Creates a base-10 logarithmic scale that maps positive numeric values to a * range. Non-positive inputs are clamped to a tiny epsilon so the transform * never returns NaN. * @param domain - Input domain [min, max] (positive) * @param range - Output range [min, max] */ export declare function logScale(domain: [number, number], range: [number, number]): Scale; /** * Creates a time scale (domain values are millisecond epochs). Linear under the * hood but generates calendar-aware ticks. * @param domain - Input domain [startMs, endMs] * @param range - Output range [min, max] */ export declare function timeScale(domain: [number, number], range: [number, number]): Scale; /** * Options for band scale configuration */ export interface BandScaleOptions { /** Space between bands (0-1) */ paddingInner?: number; /** Outer padding (0-1) */ paddingOuter?: number; /** Alignment (0=left, 1=right) */ align?: number; } /** * Creates a band scale for categorical data * @param domain - Array of category names * @param range - Output range [min, max] * @param opts - Band scale options * @returns Band scale function with utility methods */ export declare function bandScale(domain: string[], range: [number, number], opts?: BandScaleOptions): Scale; /** * Helper function to generate nice tick values for a linear scale * @param min - Minimum value * @param max - Maximum value * @param target - Target number of ticks (default 5) * @returns Array of evenly-spaced tick values */ export declare function generateNiceTicks(min: number, max: number, target?: number): number[]; /** * Generate 1/2/5-per-decade tick values for a base-10 log scale. * @param min - Domain minimum (positive) * @param max - Domain maximum (positive) * @param count - Target number of ticks (default 6) */ export declare function generateLogTicks(min: number, max: number, count?: number): number[]; /** * Generate calendar-aware tick values for a time scale. * @param start - Domain start (ms epoch) * @param end - Domain end (ms epoch) * @param count - Target number of ticks (default 6) */ export declare function generateTimeTicks(start: number, end: number, count?: number): number[];