import * as THREE from 'three';
export declare const PROBE_BATCH_COUNT = 8;
export interface LightProbeSettings {
    targetSize: number;
    offset: number;
    near: number;
    far: number;
}
export declare const DEFAULT_LIGHT_PROBE_SETTINGS: LightProbeSettings;
export declare type ProbeDataReport = {
    rgbaData: Float32Array;
    rowPixelStride: number;
    probeBox: THREE.Vector4;
    originX: number;
    originY: number;
};
export interface ProbeTexel {
    texelIndex: number;
    originalMesh: THREE.Mesh;
    originalBuffer: THREE.BufferGeometry;
    faceIndex: number;
    pU: number;
    pV: number;
}
export declare type ProbeBatcher = (gl: THREE.WebGLRenderer, lightScene: THREE.Scene, texelIterator: Iterator<ProbeTexel | null>) => Generator<{
    texelIndex: number;
    rgba: THREE.Vector4;
}>;
export declare function generatePixelAreaLookup(probeTargetSize: number): number[];
export declare function withLightProbe(aoMode: boolean, aoDistance: number, settings: LightProbeSettings, taskCallback: (renderLightProbeBatch: ProbeBatcher, debugLightProbeTexture: THREE.Texture) => Promise<void>): Promise<void>;
