/**
 * 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<AxisDomain> for direct
 * compatibility with chart type declarations.
 */
export interface ScaleInterface extends AxisScale<AxisDomain> {
  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;
};
