/** @internal NOTE: Internal APIs. Subject to change. Use of these APIs in production applications is not supported. */
import { Mesh, Color4 } from './babylonjs-import';
import { Materials } from './materials';
/**
 * Represents a single object (hence a single pixel) in the GPU picking texture.
 * Should be created by calling to {@link Materials.createGpuTextureObject} instead of using
 * constructor directly.
 */
export declare class TextureObject {
    private readonly _materials;
    readonly id: number;
    private static _tmp;
    private _isDisposed;
    /**
     * 0b10000000000000000; Bit 16 is set to 1 indicates that its not a IFC product
     * this is used in shaders that tell whether the object being rendered is a IFC product or not.
     */
    static readonly IsNotIfcProductFlag = 65536;
    /**
     * Constructor.
     * @internal Only for internal use. Use {@link Materials.createGpuTextureObject} instead.
     * @param _materials Materials instance
     * @param id Unique object identifier (represents location in GPU picking texture).
     */
    constructor(_materials: Materials, id: number);
    /** Gets the color of the texture object (pixel). */
    get color(): Color4;
    /**
     * Replaces the UV coordiates on the specified mesh. Combined with a call to {@link assignGpuPickingMaterial}
     * this will make sure that the mesh is rendered with a unique color.
     * @param mesh Mesh to replace UV coordinates on.
     */
    assignUVKind(mesh: Mesh): void;
    /**
     * Replaces the material on the mesh with a GPU picking material. Combined with a
     * call to {@link assignUVKind} this will ensure that the mesh is rendered with a unique color.
     * @param mesh Mesh to relace material on.
     */
    assignGpuPickingMaterial(mesh: Mesh): void;
    /**
     * Replaces both material and UV coordinates on the specified mesh. Ensures that the mesh
     * is rendered with a unique color.
     * @param mesh Mesh to render with a unique color.
     */
    buildGpuPickable(mesh: Mesh): void;
    /**
     * Releases the resource that ensures that this {@link TextureObject} has a unique color.
     * This makes it possible to create new {@link TextureObject} that represents this resource.
     * This does not mean that any mesh that was modified by {@link assignUVKind}, {@link assignGpuPickingMaterial}
     * or {@link buildGpuPickable} is restored in any way. They will still have the same UV coordinates and material.
     * It is up to the caller to ensure that the mesh gets other values if needed.
     * Same thing as calling {@link Materials.deleteGpuTextureObject}(this).
     */
    dispose(): void;
    private throwOnIsDisposed;
}
//# sourceMappingURL=texture-object.d.ts.map