/**
 * @module vim-loader
 */
import * as THREE from 'three';
import { Vim } from './vim';
import { WebglAttributeTarget } from './webglAttribute';
export declare class WebglColorAttribute {
    readonly vim: Vim;
    private _meshes;
    private _value;
    constructor(meshes: WebglAttributeTarget[] | undefined, value: THREE.Color | undefined, vim: Vim | undefined);
    updateMeshes(meshes: WebglAttributeTarget[] | undefined): void;
    get value(): THREE.Color;
    apply(color: THREE.Color | undefined): void;
    /**
     * Writes new color to the appropriate section of merged mesh color buffer.
     * @param index index of the merged mesh instance
     * @param color rgb representation of the color to apply
     */
    private applyMergedColor;
    /**
     * Repopulates the color buffer of the merged mesh from original g3d data.
     * @param index index of the merged mesh instance
     */
    private resetMergedColor;
    private resetMergedInsertableColor;
    /**
     * Adds an instanceColor buffer to the instanced mesh and sets new color for given instance
     * @param index index of the instanced instance
     * @param color rgb representation of the color to apply
     */
    private applyInstancedColor;
    private getOrAddInstanceColorAttribute;
}
