import * as THREE from 'three';
import type { PBMGaussianSplattingObject } from '../model/objects/pbmGaussianSplattingObject';
/**
 * 每对象渲染参数的 GPU 存储，与 TransformStore 并列，共用同一套 transformIndex。
 *
 * texel 0: [preBlurAmount, blurAmount, reserved, reserved]
 *
 * 为什么不并入 TransformStore：
 * - TransformStore 的职责是每对象变换矩阵，其内容随 matrixWorld 变化被每帧检查/重传；
 * - 这里的值来自数据本身（SPZ antiAlias flag），加载后就不再变，只有业务方手动覆盖
 *   preBlurAmount / blurAmount 时才需要更新。两者生命周期不同，混在一张纹理里会
 *   让「改个 blur 参数」被迫走 transform 的重传路径。
 *
 * 注意槽位是易变的：transformIndex 就是对象在当前布局中的序号，对象增删（如 3d-tile
 * 流式加载）都会重新分配并重新烘进 SplatAssembler 的大纹理。因此 sync() 必须紧随
 * TransformStore.sync() 调用，并直接复用它分配出的索引，避免两套索引各自推导而错位。
 */
export declare class ObjectParamsStore {
    texture: THREE.DataTexture | null;
    readonly width = 1;
    private data;
    private indexMap;
    private count;
    get objectCount(): number;
    /**
     * 按 TransformStore 已分配的索引写入每对象参数并重建纹理。
     * @param resolveIndex 返回对象的 transformIndex（须与 TransformStore 一致）
     */
    sync(objects: readonly PBMGaussianSplattingObject[], resolveIndex: (object: PBMGaussianSplattingObject) => number | undefined): void;
    /** 单对象渲染参数变化（手动覆盖 blur 参数），就地更新 + 标记整张重传。 */
    updateOne(object: PBMGaussianSplattingObject): void;
    private write;
    private rebuildTexture;
    dispose(): void;
}
