export class MaterialOptimizationContext {
    /**
     *
     * @type {THREE.Texture[]}
     */
    textures: THREE.Texture[];
    /**
     *
     * @type {THREE.Mesh[]}
     */
    meshes: THREE.Mesh[];
    /**
     *
     * @type {Map<string,Sampler2D>}
     */
    atlases: Map<string, Sampler2D>;
    /**
     *
     * @type {Vector2[]}
     */
    atlas_size: Vector2[];
    /**
     *
     * @param {MaterialDescriptor[]} materials
     */
    pack_atlas(materials: MaterialDescriptor[]): void;
    /**
     *
     * @param {MaterialDescriptor[]} materials
     */
    build_atlas_samplers(materials: MaterialDescriptor[]): void;
    /**
     *
     * @param {MaterialDescriptor} material
     */
    write_material_to_atlas(material: MaterialDescriptor): void;
    /**
     *
     * @param {THREE.Mesh} mesh
     */
    addMesh(mesh: THREE.Mesh): void;
    /**
     *
     * @param {THREE.Object} o
     */
    addObject(o: THREE.Object): void;
    /**
     * Update materials and geometries
     */
    update(): void;
    /**
     *
     * @return {Map<string, THREE.DataTexture>}
     */
    initialize_atlas_textures(): Map<string, THREE.DataTexture>;
    /**
     *
     * @param {THREE.BufferGeometry} bufferGeometry
     * @param {MaterialDescriptor} mat
     */
    apply_geometry_uv_changes(bufferGeometry: THREE.BufferGeometry, mat: MaterialDescriptor): void;
}
export namespace MaterialOptimizationContext {
    let MAX_TEXTURE_SIZE: number;
}
import { Sampler2D } from "../../texture/sampler/Sampler2D.js";
import { MaterialDescriptor } from "./MaterialDescriptor.js";
//# sourceMappingURL=MaterialOptimizationContext.d.ts.map