/** * D3 Scale Polyfill - Lightweight scale generators for chart axes. * * This is a drop-in replacement for d3-scale, implementing only the methods * used in the Vega chart rendering system: scaleLinear, scaleTime, and scaleBand. * * @see VD-5022 - [Zero Dependencies] remove d3 dependency */ import { AxisDomain, AxisScale } from './d3-axis-polyfill'; /** * Common scale interface extending AxisScale for direct * compatibility with chart type declarations. */ export interface ScaleInterface extends AxisScale { ticks(count?: number): AxisDomain[]; tickFormat(...args: unknown[]): (d: AxisDomain) => string; copy(): ScaleInterface; bandwidth(): number; } /** * Creates a linear scale. Mimics d3.scaleLinear(). * * @returns A callable linear scale function with chaining methods. */ export declare function scaleLinear(): ScaleInterface; /** * Creates a time scale. Mimics d3.scaleTime(). * * @returns A callable time scale function with chaining methods. */ export declare function scaleTime(): ScaleInterface; /** * Creates a band scale. Mimics d3.scaleBand(). * * @param domain - Optional initial domain values. * @param range - Optional initial range [min, max]. * @returns A callable band scale function with chaining methods. */ export declare function scaleBand(domain?: AxisDomain[], range?: number[]): ScaleInterface & { padding(p: number): ScaleInterface; bandwidth(): number; };