import { type Scene } from "../../scene.js";
import { type AbstractMesh } from "../../Meshes/abstractMesh.js";
import { type Nullable } from "../../types.js";
import { Vector3 } from "../../Maths/math.vector.pure.js";
import { type IAssetContainer } from "../../IAssetContainer.js";
import { RenderTargetTexture } from "../../Materials/Textures/renderTargetTexture.pure.js";
/**
 * Options for creating a ReflectionProbeTexture
 */
export interface IReflectionProbeTextureOptions {
    /**
     * The texture resolution (for each face)
     */
    size: number;
    /**
     * Defines if mip maps should be generated automatically (true by default)
     */
    generateMipMaps?: boolean;
    /**
     * Defines if HDR data (float data) should be used to store colors (false by default)
     */
    useFloat?: boolean;
    /**
     * Defines if the probe should be generated in linear space or not (false by default)
     */
    linearSpace?: boolean;
}
/**
 * Class used to generate realtime reflection / refraction cube textures.
 * This is a simplified version of ReflectionProbe that can be used directly as a RenderTargetTexture.
 * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/reflectionProbes
 */
export declare class ReflectionProbeTexture extends RenderTargetTexture {
    private _projectionMatrix;
    private _viewMatrix;
    private _target;
    private _add;
    private _sceneUBOs;
    private _currentSceneUBO;
    private _invertYAxis;
    private _options;
    private _attachedMesh;
    /** Gets or sets probe position (center of the cube map) */
    position: Vector3;
    /** @internal */
    _parentContainer: Nullable<IAssetContainer>;
    /**
     * Creates a new reflection probe texture
     * @param name defines the name of the probe
     * @param options defines the options for creating the texture
     * @param scene defines the hosting scene
     */
    constructor(
    /** defines the name of the probe */
    name: string, options: number | IReflectionProbeTextureOptions, scene: Scene);
    /**
     * Attach the probe to a specific mesh (Rendering will be done from attached mesh's position)
     * @param mesh defines the mesh to attach to
     */
    attachToMesh(mesh: Nullable<AbstractMesh>): void;
    /**
     * Gets the mesh attached to this probe
     * @returns the attached mesh or null
     */
    get attachedMesh(): Nullable<AbstractMesh>;
    /**
     * Gets the class name of the reflection probe texture
     * @returns "ReflectionProbeTexture"
     */
    getClassName(): string;
    /**
     * Converts the reflection probe texture information to a readable string for debug purpose
     * @param fullDetails Supports for multiple levels of logging within scene loading
     * @returns the human readable reflection probe texture info
     */
    toString(fullDetails?: boolean): string;
    /**
     * Used for serializing the probe texture
     * @returns any
     */
    serialize(): any;
    /**
     * Clean all associated resources
     */
    dispose(): void;
}
/**
 * Register side effects for renderTargetTexture.
 * Safe to call multiple times; only the first call has an effect.
 */
export declare function RegisterReflectionProbeTexture(): void;
