import { AbstractObject } from '../object';
import { Bone, Color, Mesh, Object3D, Scene } from 'three';
import { Wheel, WheelConfig } from '../../model/wheel';
import { Paintable } from '../paintable';
import { PaintConfig } from '../../model/paint-config';
import { WheelAssets } from '../../loader/wheel/wheel-assets';
import { RimMaterial } from '../../webgl/rim-material';
import { TireMaterial } from '../../webgl/tire-material';
export declare class WheelModelInternal {
    model: Object3D;
    config: WheelConfig;
    spinnerJoint: Bone;
}
/**
 * Class that handles loading the 3D model of the car wheels.
 */
export declare class WheelsModel extends AbstractObject implements Paintable {
    protected assets?: WheelAssets;
    rimMesh: Mesh;
    tireMesh: Mesh;
    rimMaterial: RimMaterial;
    tireMaterial: TireMaterial;
    constructor(assets?: WheelAssets, wheel?: Wheel, paints?: PaintConfig);
    dispose(): void;
    handleModel(scene: Scene): void;
    setPaintColor(paint: Color): void;
    /**
     * Animate the wheels. This is a safe no-op if the wheels are not animated.
     * @param t time in milliseconds
     * @param wheel the thing containing the wheel to animate
     * @param roll of the wheel
     */
    animate(t: number, wheel: WheelModelInternal, roll: number): void;
    clone(): WheelsModel;
}
//# sourceMappingURL=wheels-model.d.ts.map