/**
 * Creates a Points Material, which can be extended with GL nodes.
 *
 * @remarks
 * This node can create children, which will be GL nodes. The GLSL code generated by the nodes will extend the Material.
 *
 */
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { UniformsTransparencyControllers } from './utils/UniformsTransparencyController';
import { AdvancedCommonControllers } from './utils/AdvancedCommonController';
import { ShaderAssemblerPoints } from '../gl/code/assemblers/materials/Points';
import { TypedBuilderMatNode } from './_BaseBuilder';
import { AssemblerName } from '../../poly/registers/assemblers/_BaseRegister';
import { UniformFogControllers } from './utils/UniformsFogController';
import { CustomMaterialName } from '../../../core/geometry/Material';
import { Material } from 'three';
import { PointsMaterial } from 'three';
import { PointsSizeControllers } from './utils/PointsSizeController';
import { MatType } from '../../poly/registers/nodes/types/Mat';
interface PointsBuilderControllers extends AdvancedCommonControllers, PointsSizeControllers, UniformFogControllers, UniformsTransparencyControllers {
}
interface PointsBuilderMaterial extends PointsMaterial {
    vertexShader: string;
    fragmentShader: string;
    customMaterials: {
        [key in CustomMaterialName]?: Material;
    };
}
declare const PointsBuilderMatParamsConfig_base: {
    new (...args: any[]): {
        overrideCustomMaterials: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        createCustomMatDistance: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        createCustomMatDepth: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        createCustomMatDepthDOF: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    };
} & {
    new (...args: any[]): {
        useFog: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    };
} & {
    new (...args: any[]): {
        doubleSided: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        front: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        overrideShadowSide: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        shadowDoubleSided: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        shadowFront: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        colorWrite: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        depthWrite: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        depthTest: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        premultipliedAlpha: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        blending: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        dithering: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        polygonOffset: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        polygonOffsetFactor: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        polygonOffsetUnits: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & {
    new (...args: any[]): {
        setBuilderNode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        builderNode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.NODE_PATH>;
    };
} & {
    new (...args: any[]): {
        advanced: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    };
} & {
    new (...args: any[]): {
        transparent: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        opacity: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
        alphaTest: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    };
} & {
    new (...args: any[]): {
        size: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
        sizeAttenuation: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    };
} & {
    new (...args: any[]): {
        default: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    };
} & typeof NodeParamsConfig;
declare class PointsBuilderMatParamsConfig extends PointsBuilderMatParamsConfig_base {
}
export declare class PointsBuilderMatNode extends TypedBuilderMatNode<PointsBuilderMaterial, ShaderAssemblerPoints, PointsBuilderMatParamsConfig> {
    paramsConfig: PointsBuilderMatParamsConfig;
    static type(): MatType;
    usedAssembler(): Readonly<AssemblerName.GL_POINTS>;
    protected _createAssemblerController(): import("../gl/code/Controller").GlAssemblerController<ShaderAssemblerPoints> | undefined;
    customMaterialRequested(customName: CustomMaterialName): boolean;
    readonly controllers: PointsBuilderControllers;
    protected controllersList: any[];
    cook(): Promise<void>;
}
export {};
