import { Fetcher } from "../../utils/ajax";
import { LoadResultType } from './shared';
import type { PBMGaussianSplattingObject } from '../objects/pbmGaussianSplattingObject';
/** Convert a float16 stored as a uint16 number back to a float32 */
export declare function fromHalf(h: number): number;
export interface DecodedSpz {
    numPoints: number;
    shDegree: number;
    /**
     * SPZ header flags 的 bit0（FLAG_ANTIALIASED）。
     * true 表示这份数据在训练期启用了 Mip-Splatting / gsplat 的抗锯齿模式
     * （rasterize_mode="antialiased"）：其 opacity 是在「渲染端会做 2D 低通 +
     * opacity 补偿」的前提下拟合出来的，因此渲染端必须做同样的补偿才能得到
     * 正确亮度；若不做补偿，远景 splat 会偏亮。
     * false 表示原始 3DGS 训练，渲染端应改用纯 dilation（不补偿 opacity）。
     */
    flagAntiAlias: boolean;
    positions: Float32Array;
    colors: Uint8Array;
    scales: Float32Array;
    rotations: Float32Array;
    sh1?: Float32Array;
    sh2?: Float32Array;
    sh3?: Float32Array;
    /** worker 中 pack 好的 GPU 数据（8 uint32/splat），主线程构造 PBMGSObject 后可直接用于上传 */
    packedData?: Uint32Array;
}
/** 解码 SPZ 字节流为原始属性数组（gunzip + 逐字段解析） */
export declare function decodeSpz(fileBytes: Uint8Array | ArrayBuffer): Promise<DecodedSpz>;
/**
 * 加载 spz 格式的数据，解码在 Worker 中完成，主线程不阻塞。
 */
export declare function parseSpz(fileBytes: Uint8Array | ArrayBuffer): Promise<PBMGaussianSplattingObject>;
export declare function loadSpz(url: string, options?: {
    modelUpAxis?: 'Y' | 'Z';
    upAxis?: 'Y' | 'Z';
    fetcher?: Fetcher;
    onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
}): Promise<LoadResultType>;
