import type { Mesh, Geometry, TextureSourceOptions, RenderPass, spec, Engine } from '@galacean/effects';
import { Texture } from '@galacean/effects';
import type { ModelSkyboxOptions } from '../index';
import type { PMaterialBase } from './material';
import type { PSkyboxParams } from './skybox';
/**
 * 合成缓存类，负责管理插件 WebGL 相关资源加载和创建
 */
export declare class CompositionCache {
    private engine;
    private loadSkybox;
    private brdfLutTexture?;
    private meshCache;
    private textureCache;
    private geometryCache;
    private renderPassCache;
    private static brdfLutTexOptions?;
    private static skyboxOptions?;
    /**
     * 加载静态的纹理数据
     * @returns
     */
    static loadStaticResources(): Promise<void>;
    /**
     * 创建天空盒数据，如果传入的 params 为空，会使用内置的天空盒参数
     * @param engine - 引擎
     * @param params - 天空盒参数
     * @returns 天空盒数据
     */
    static genSkyboxOptions(engine: Engine, params?: PSkyboxParams): Promise<ModelSkyboxOptions>;
    constructor(engine: Engine);
    /**
     * 记录是否加载天空盒，缓存天空盒相关的查询纹理
     * @param loadSkybox - 是否加载天空盒
     */
    setup(loadSkybox: boolean): void;
    /**
     * 获取缓存的纹理对象
     * @param name - 名称
     * @returns 纹理对象
     */
    getTexture(name: string): Texture | undefined;
    /**
     * 设置纹理对象缓存
     * @param name - 名称
     * @param tex - 纹理对象
     */
    setTexture(name: string, tex: Texture): void;
    /**
     * 获取或者创建纹理对象
     * @param name - 名称
     * @param options - 纹理参数
     * @returns 纹理对象
     */
    getOrCreateTexture(name: string, options: TextureSourceOptions): Texture;
    /**
     * 根据名称删除纹理对象
     * @param name - 名称
     * @returns 是否删除成功
     */
    deleteTexture(name: string): boolean;
    /**
     * 获取或者创建几何体
     * @param name - 名称
     * @param geomJson - 几何体参数
     * @param bins - 几何体数据
     * @returns 几何体
     */
    getOrCreateGeometry(name: string, geomJson: spec.GeometryOptionsJSON, bins: ArrayBuffer[]): Geometry;
    /**
     * 获取滤波 Mesh
     * @param name - 名称
     * @param material - 材质
     * @returns
     */
    getFilterMesh(name: string, material: PMaterialBase): Mesh;
    /**
     * 销毁缓存，释放所有缓存的对象
     */
    dispose(): void;
    /**
     * 获取所有的渲染 Pass
     * @returns
     */
    getRenderPasses(): RenderPass[];
    /**
     * 获取纹理对象，用户 IBL 渲染
     * @returns
     */
    getBrdfLutTexture(): Texture | undefined;
    /**
     * 获取天空盒参数
     * @returns
     */
    getSkyboxOptions(): ModelSkyboxOptions | undefined;
}
