import { TypedSopNode } from './_Base';
import { CoreGroup } from '../../../core/geometry/Group';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { SopType } from '../../poly/registers/nodes/types/Sop';
declare class LODSopParamsConfig extends NodeParamsConfig {
    /** @param distance when switching between high res and mid res (first input and second input) */
    distance0: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param distance when switching between mid res and low res (second input and third input) */
    distance1: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param Threshold used to avoid flickering at LOD boundaries, as a fraction of distance */
    hysteresis: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param sets if the switch is done automatically */
    autoUpdate: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param updates which object is displayed manually */
    update: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param sets which camera will be used when the switch is to be done manually */
    camera: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.NODE_PATH>;
}
export declare class LodSopNode extends TypedSopNode<LODSopParamsConfig> {
    paramsConfig: LODSopParamsConfig;
    static type(): SopType;
    private _lod;
    initializeNode(): void;
    private _createLOD;
    cook(inputCoreGroups: CoreGroup[]): void;
    _addLevel(coreGroup: CoreGroup | undefined, level: number): void;
    private _clearLOD;
    static PARAM_CALLBACK_update(node: LodSopNode): void;
    private _updateLOD;
}
export {};
