import { Texture, Vector4 } from "three";
import { type Renderer } from "./Renderer.js";
/**
 * This component is automatically added by the {@link Renderer} component if the object has lightmap uvs AND we have a lightmap.
 *
 * @category Rendering
 * @group Components
 */
export declare class RendererLightmap {
    get lightmap(): Texture | null;
    set lightmap(tex: Texture | null);
    private lightmapIndex;
    private lightmapScaleOffset;
    private readonly renderer;
    private _isApplied;
    private get context();
    private get gameObject();
    private lightmapTexture;
    constructor(renderer: Renderer);
    init(lightmapIndex: number, lightmapScaleOffset: Vector4, lightmapTexture: Texture): void;
    updateLightmapUniforms(_material: any): void;
    /**
     * Apply the lightmap to the object using MaterialPropertyBlock instead of cloning materials.
     * The lightmap texture and its per-object UV transform are set as overrides via PropertyBlock.
     * Three.js reads material.lightMap to determine shader defines and upload uniforms,
     * and uses texture.offset/repeat to compute lightMapTransform in the vertex shader.
     */
    applyLightmap(): void;
    /** Update the lightMap override on all property blocks (e.g. after LOD swap) */
    private updatePropertyBlockTexture;
    /**
     * Remove the lightmap from the object
     */
    onUnset(): void;
    private ensureLightmapUvs;
    private setLightmapDebugMaterial;
}
