/** * Scale interface and implementations * * Scales transform data values to pixel coordinates and vice versa. */ export interface Scale { /** Data domain [min, max] */ domain: [number, number]; /** Pixel range [min, max] */ range: [number, number]; /** Scale type identifier */ type: "linear" | "log"; /** Set the domain */ setDomain(min: number, max: number): void; /** Set the range */ setRange(min: number, max: number): void; /** Transform data value to pixel */ transform(value: number): number; /** Transform pixel to data value */ invert(pixel: number): number; /** Generate nice tick values */ ticks(count?: number): number[]; } /** * Linear scale - proportional mapping */ export declare class LinearScale implements Scale { domain: [number, number]; range: [number, number]; readonly type: "linear"; setDomain(min: number, max: number): void; setRange(min: number, max: number): void; transform(value: number): number; invert(pixel: number): number; ticks(count?: number): number[]; } /** * Logarithmic scale - for exponential data */ export declare class LogScale implements Scale { domain: [number, number]; range: [number, number]; readonly type: "log"; private base; setDomain(min: number, max: number): void; setRange(min: number, max: number): void; transform(value: number): number; invert(pixel: number): number; ticks(count?: number): number[]; } /** * Factory function to create scale by type */ export declare function createScale(type: "linear" | "log"): Scale;