export type Scaling = ContinuousScaling | CategoryScaling | LogScaling;
export interface ContinuousScaling<T = 'continuous'> {
    type: T;
    domain: [number, number];
    range: [number, number];
}
export interface LogScaling extends ContinuousScaling<'log'> {
    convert(domain: number): number;
}
/** Standard category scaling with full domain array */
export interface StandardCategoryScaling {
    type: 'category';
    domain: readonly string[] | readonly Date[];
    inset: number;
    step: number;
}
/** Optimized scaling for unit-time with O(1) numeric metadata instead of full domain array */
export interface UnitTimeCategoryScaling {
    type: 'category';
    variant: 'unit-time';
    firstBandTime: number;
    lastBandTime: number;
    bandCount: number;
    intervalMs: number;
    inset: number;
    step: number;
}
export type CategoryScaling = StandardCategoryScaling | UnitTimeCategoryScaling;
export declare function isUnitTimeCategoryScaling(scaling: CategoryScaling): scaling is UnitTimeCategoryScaling;
export declare function areScalingEqual(a: Scaling | undefined, b: Scaling | undefined): boolean;
export declare function isScaleValid(scale?: Scaling): boolean;
