import { AViewerPluginSync, ThreeViewer } from '../../viewer';
import { IMaterial, ITexture } from '../../core';
import { MaterialExtension } from '../../materials';
import { GLTFWriter2 } from '../../assetmanager';
import type { GLTFLoaderPlugin, GLTFParser } from 'three/examples/jsm/loaders/GLTFLoader';
/**
 * Custom Bump Map Plugin
 * Adds a material extension to PhysicalMaterial to support custom bump maps.
 * A Custom bump map is similar to the built-in bump map, but allows using an extra bump map and scale to give a combined effect.
 * This plugin also has support for bicubic filtering of the custom bump map and is enabled by default.
 * It also adds a UI to the material to edit the settings.
 * It uses WEBGI_materials_custom_bump_map glTF extension to save the settings in glTF files.
 * @category Plugins
 */
export declare class CustomBumpMapPlugin extends AViewerPluginSync<''> {
    static readonly PluginType = "CustomBumpMapPlugin";
    enabled: boolean;
    bicubicFiltering: boolean;
    private _defines;
    private _uniforms;
    enableCustomBump(material: IMaterial, map?: ITexture, scale?: number): boolean;
    readonly materialExtension: MaterialExtension;
    setDirty: () => void;
    constructor();
    onAdded(v: ThreeViewer): void;
    onRemove(v: ThreeViewer): void;
    /**
     * @deprecated use {@link customBumpMapGLTFExtension}
     */
    static readonly CUSTOM_BUMP_MAP_GLTF_EXTENSION = "WEBGI_materials_custom_bump_map";
}
declare module '../../core/IMaterial' {
    interface IMaterialUserData {
        _hasCustomBump?: boolean;
        _customBumpMap?: ITexture | null;
        _customBumpScale?: number;
    }
}
/**
 * FragmentClipping Materials Extension
 *
 * Specification: https://webgi.xyz/docs/gltf-extensions/WEBGI_materials_fragment_clipping_extension.html
 */
declare class GLTFMaterialsCustomBumpMapImport implements GLTFLoaderPlugin {
    name: string;
    parser: GLTFParser;
    constructor(parser: GLTFParser);
    extendMaterialParams(materialIndex: number, materialParams: any): Promise<void[] | undefined>;
}
export declare const customBumpMapGLTFExtension: {
    name: string;
    import: (p: GLTFParser) => GLTFMaterialsCustomBumpMapImport;
    export: (w: GLTFWriter2) => {
        writeMaterial: (material: any, materialDef: any) => void;
    };
    textures: {
        customBumpMap: string;
    };
};
export {};
//# sourceMappingURL=CustomBumpMapPlugin.d.ts.map