export class ShaderManager {
    /**
     *
     * @param {AssetManager} asset_manager
     * @param {MaterialManager} material_manager
     * @constructor
     */
    constructor(asset_manager: AssetManager, material_manager: MaterialManager);
    /**
     *
     * @type {MaterialManager}
     * @private
     */
    private __material_manager;
    /**
     *
     * @type {ManagedAtlas}
     */
    spriteAtlas: ManagedAtlas;
    /**
     *
     * @type {DataTexture|null}
     */
    spriteTexture: DataTexture | null;
    /**
     *
     * @type {Texture|null}
     */
    depthTexture: Texture | null;
    /**
     * material map is identified by parameter hash
     * @readonly
     * @private
     * @type {HashMap<ParticleEmitter, MaterialRecord>}
     */
    private readonly materialMap;
    /**
     * Number of unused records to keep, this allows reused of records avoiding shader recompilation
     * @type {number}
     */
    recordGraveyardSize: number;
    /**
     * @readonly
     * @private
     * @type {HashMap<ParticleEmitter, MaterialRecord>}
     */
    private readonly recordGraveyard;
    /**
     *
     * @type {Vector2}
     */
    viewportSize: Vector2;
    /**
     * Common shader uniforms, inherited by every material and updated centrally (here)
     * @private
     */
    private __common_uniforms;
    /**
     * Should be called before using shaders managed by this
     */
    update(): void;
    /**
     * @private
     */
    private updateSpriteTexture;
    /**
     * @private
     * @returns {Material}
     * @param {ParticleEmitter} emitter
     */
    private buildMaterial;
    /**
     *
     * @param {ParticleEmitter} emitter
     */
    register(emitter: ParticleEmitter): void;
    /**
     * Perform intenal cleanup, remove unused material records
     */
    cleanup(): void;
    /**
     *
     * @param {ParticleEmitter} emitter
     */
    deregister(emitter: ParticleEmitter): void;
    /**
     *
     * @param {Camera} camera THREE.js Camera object
     */
    setCamera(camera: Camera): void;
    camera: Camera;
    /**
     *
     * @param {Texture} texture
     */
    setDepthTexture(texture: Texture): void;
    /**
     *
     * @param {number} x
     * @param {number} y
     */
    setViewportSize(x: number, y: number): void;
    /**
     * Dispose of any used resources
     */
    dispose(): void;
    #private;
}
import { ManagedAtlas } from "../../../../texture/atlas/ManagedTextureAtlas.js";
import { DataTexture } from "three";
import Vector2 from "../../../../../../core/geom/Vector2.js";
//# sourceMappingURL=ShaderManager.d.ts.map