import * as THREE from 'three';
import { type PBMCustomShader, type PBMPanoPicture, type PBMPanoDepth, type PBMRefinedScreen, type PBMTransition, type PBMFloorStyle, type PBMColorStyle, type PBMClipperParameter, type PBMPanoFilter, type PBMPointShape, type PBMPointSize, type PBMPointBack } from './materials/pbmMaterial';
import type { TileRequestOrder } from './tile3d/types';
import type { Camera } from '../core/camera';
export interface ParameterMaterialValue {
    /** 自定义材质*/
    customShaders: readonly PBMCustomShader[];
    /**
     * 是否生效标注
     * 开启后，模型顶点上会预置 `_feature_id_rsmask` 标记。
     * _feature_id_rsmask=1，在俯视等特定视角下，引擎会自动隐藏被标记的顶点对应的 Mesh，从而实现“开盖”效果，让室内布局观测更加清晰、观感更好。
     */
    vertexMarks: boolean;
    /** 起始点 */
    pano0: PBMPanoPicture | null;
    /** 结束点 */
    pano1: PBMPanoPicture | null;
    /** 起始点深度 */
    pano0Depth: PBMPanoDepth | null;
    /** 结束点深度 */
    pano1Depth: PBMPanoDepth | null;
    /** 全景图滤镜 */
    panoFilter: PBMPanoFilter | null;
    /** 细化瓦片的屏幕渲染 */
    refinedScreen: PBMRefinedScreen | null;
    /** 模型贴图和全景图的混合程度 [0-1] */
    modelAlpha: number;
    /** 全景图混合程度 [0-1] */
    progress: number;
    /** 全景图过度混合 */
    transition: PBMTransition;
    /** 模型透明度 */
    opacity: number;
    /** 楼层样式 */
    floorStyle: PBMFloorStyle;
    /** 颜色样式 */
    colorStyle: PBMColorStyle;
    /** 模型颜色*/
    constantColor: THREE.Vector3;
    /** 楼层参数*/
    shownFloorIndex: number;
    /** 模型裁切参数（工程侧调用）*/
    clippers: readonly PBMClipperParameter[];
    /** 亮度 */
    brightness: number;
    /** 是否使用HQ*/
    useHQWeight: boolean;
    /** 是否使用HQ_DEPTH_MASK*/
    useHQDepth: boolean;
    /** 点云形状*/
    pointShape: PBMPointShape;
    /** 点云大小绘制方式*/
    pointSize: PBMPointSize;
    /** 点云背面绘制方式*/
    pointBack: PBMPointBack;
    /** 点云基础大小*/
    pointScale: number;
    /** 点云最小尺寸*/
    pointMinPixel: number;
    /** 点云最大尺寸*/
    pointMaxPixel: number;
    /** 点云出现动画 */
    pointAppearAnimation: boolean;
    /** 饱和度调整值*/
    colorSaturation: number;
    /** 亮度调整值*/
    colorBrightness: number;
    /** outline增益*/
    outlineGain: number;
    /** distance增益*/
    distanceGain: number;
    /** 高程着色材质*/
    gradientTexture: THREE.Texture | null;
    /** 是否产生阴影 */
    castShadow: boolean;
    /** 是否接受阴影 */
    receiveShadow: boolean;
    /** 半透明叠加渲染*/
    useAddBlend: boolean;
    /** 包围盒 */
    boundingBox: THREE.Box3;
    /** 3dgs球谐阶数*/
    gaussianSplattingSHDegree: number;
}
export interface ParameterTilesetValue {
    /** 模型显示最小细化层级 */
    minLevelOfDetail: number;
    /** 模型显示最大细化层级 */
    maxLevelOfDetail: number;
    /** 模型显示最小细化误差 */
    minGeometricError: number;
    /** 模型显示最大细化误差 */
    maxGeometricError: number;
    /** 全景态下模型显示最小细化误差 */
    panoramaMinGeometricError: number;
    /** 模型越层级加载 */
    skipLevelOfDetail: boolean;
    /** 模型是否最密 */
    mostDetail: boolean;
    /** 模型加载不在视野中的兄弟节点 */
    loadSiblings: boolean;
    /** 模型不加载在不在视野中的节点 */
    cameraCulling: boolean;
    /** 模型最大内存缓存 */
    maxMemoryUsage: number;
    /** 模型网络最大请求并发数 */
    maxRequests: number;
    /** 模型网络请求顺序 */
    requestOrder: TileRequestOrder;
    /** 模型屏幕空间误差计算最大值 */
    maxScreenSpaceError: number;
    memoryAdjustedScreenSpaceError: boolean;
    /** 缓存相机 */
    cacheCameras: readonly (Camera | THREE.PerspectiveCamera)[];
}
export interface ParameterValue extends ParameterMaterialValue, ParameterTilesetValue {
}
export interface ResolvedParameterValue extends ParameterValue {
    versionNumber: number;
}
export interface Parameter extends Readonly<Partial<ParameterValue>> {
}
export declare class Parameter {
    static createDefault(): Required<ParameterValue>;
    static resolveValueTo(target: Partial<ResolvedParameterValue>, ...parameterValues: Partial<ParameterValue>[]): ResolvedParameterValue;
    static resolveValue<T extends keyof ParameterValue>(name: T, ...parameterValues: Partial<ParameterValue>[]): ParameterValue[T];
    static resolveValue(...parameterValues: Partial<ParameterValue>[]): ResolvedParameterValue;
    id: string;
    versionNumber: number;
    private value;
    private unbind;
    constructor(initialValue?: Partial<ParameterValue>);
    resolveValue<T extends keyof ParameterValue>(name: T, ...values: Partial<ParameterValue>[]): ParameterValue[T];
    resolveValue(...baseValues: Partial<ParameterValue>[]): ResolvedParameterValue;
    private assignValue;
    set<T extends keyof ParameterValue>(name: T, value: ParameterValue[T]): this;
    set(values: Partial<ParameterValue>): this;
    reset(...names: (keyof ParameterValue)[]): this;
    resetAll(): this;
    copy(value: Partial<ParameterValue>): this;
}
