import { Color, Vector3 } from "three";
import { Lut } from "three/examples/jsm/math/Lut";
export interface SegmentMetadata {
    segmentStart: Vector3;
    segmentEnd: Vector3;
    radius: number;
    temp: number;
    speed: number;
    gCodeLine: number;
}
export interface SegmentColorizer {
    getColor(meta: SegmentMetadata): Color;
}
export interface LineColorizerOptions {
    defaultColor: Color;
}
export declare type LineColorConfig = {
    toLine: number;
    color: Color;
}[];
export declare class LineColorizer {
    private readonly lineColorConfig;
    private readonly options?;
    private currentConfigIndex;
    constructor(lineColorConfig: LineColorConfig, options?: LineColorizerOptions | undefined);
    getColor(meta: SegmentMetadata): Color;
}
export declare class SimpleColorizer implements SegmentColorizer {
    private readonly color;
    constructor(color?: Color);
    getColor(): Color;
}
export declare abstract class LutColorizer implements SegmentColorizer {
    protected readonly lut: Lut;
    constructor(lut?: Lut);
    abstract getColor(meta: SegmentMetadata): Color;
}
export declare class SpeedColorizer extends LutColorizer {
    constructor(minSpeed: number, maxSpeed: number);
    getColor(meta: SegmentMetadata): Color;
}
export declare class TempColorizer extends LutColorizer {
    constructor(minTemp: number, maxTemp: number);
    getColor(meta: SegmentMetadata): Color;
}
