import { Vector2, Vector2Tuple, Vector3, Vector3Tuple, Vector4, Vector4Tuple } from 'three';
import { AViewerPluginSync, ThreeViewer } from '../../viewer';
import { IMaterial, IMaterialUserData } from '../../core';
import { MaterialExtension } from '../../materials';
import { GLTFWriter2 } from '../../assetmanager';
import type { GLTFLoaderPlugin, GLTFParser } from 'three/examples/jsm/loaders/GLTFLoader';
/**
 * NoiseBump Materials Extension
 * Adds a material extension to PhysicalMaterial to add support for sparkle bump / noise bump by creating procedural bump map from noise to simulate sparkle flakes.
 * It uses voronoise function from blender along with several additions to generate the noise for the generation.
 * It also adds a UI to the material to edit the settings.
 * It uses WEBGI_materials_noise_bump glTF extension to save the settings in glTF files.
 * @category Plugins
 */
export declare class NoiseBumpMaterialPlugin extends AViewerPluginSync<''> {
    static readonly PluginType = "NoiseBumpMaterialPlugin";
    enabled: boolean;
    private _uniforms;
    static AddNoiseBumpMaterial(material: IMaterial, params?: IMaterialUserData['_noiseBumpMat']): boolean;
    readonly materialExtension: MaterialExtension;
    setDirty: () => void;
    constructor();
    onAdded(v: ThreeViewer): void;
    onRemove(v: ThreeViewer): void;
    /**
     * @deprecated - use {@link noiseBumpMaterialGLTFExtension}
     */
    static readonly NOISE_BUMP_MATERIAL_GLTF_EXTENSION = "WEBGI_materials_noise_bump";
}
declare module '../../core/IMaterial' {
    interface IMaterialUserData {
        _noiseBumpMat?: {
            hasBump?: boolean;
            bumpNoiseParams?: Vector2Tuple | Vector2;
            bumpScale?: number;
            flakeScale?: number;
            flakeClamp?: number;
            flakeRadius?: number;
            useColorFlakes?: boolean;
            flakeParams?: Vector4Tuple | Vector4;
            flakeFallOffParams?: Vector3Tuple | Vector3;
        };
    }
}
/**
 * FragmentClipping Materials Extension
 *
 * Specification: https://webgi.xyz/docs/gltf-extensions/WEBGI_materials_fragment_clipping_extension.html (todo - fix link)
 */
declare class GLTFMaterialsNoiseBumpMaterialImport implements GLTFLoaderPlugin {
    name: string;
    parser: GLTFParser;
    constructor(parser: GLTFParser);
    extendMaterialParams(materialIndex: number, materialParams: any): Promise<void>;
}
export declare const noiseBumpMaterialGLTFExtension: {
    name: string;
    import: (p: GLTFParser) => GLTFMaterialsNoiseBumpMaterialImport;
    export: (w: GLTFWriter2) => {
        writeMaterial: (material: any, materialDef: any) => void;
    };
    textures: undefined;
};
export {};
//# sourceMappingURL=NoiseBumpMaterialPlugin.d.ts.map