export class MaterialManager {
    /**
     * Stores links from uncompiled (source) materials to managed containers
     * @type {HashMap<Material, ManagedMaterial>}
     * @private
     */
    private __library;
    /**
     * Cache for unused materials, gives them a second chance to be used before being disposed completely
     * @type {Cache<Material, ManagedMaterial>}
     * @private
     */
    private __cache;
    /**
     * Stores links from compiled materials back to the container
     * @type {HashMap<Material, ManagedMaterial>}
     * @private
     */
    private __reverse_library;
    /**
     *
     * @type {AbstractMaterialTransformer[]}
     * @private
     */
    private __transform_chain;
    /**
     * handle material disposal
     * @param {Material} m
     * @param {ManagedMaterial} managed_material
     * @private
     */
    private __dispose_material;
    /**
     *
     * @param {ManagedMaterial} material
     * @private
     */
    private __handle_last_reference_removed;
    /**
     *
     * @param {Function} klass
     * @return {AbstractMaterialTransformer[]}
     */
    getCompilationSteps(klass: Function): AbstractMaterialTransformer[];
    /**
     *
     * @param {AbstractMaterialTransformer} def
     */
    addCompileStep(def: AbstractMaterialTransformer): void;
    /**
     *
     * @param {AbstractMaterialTransformer} def
     * @returns {boolean}
     */
    removeCompileStep(def: AbstractMaterialTransformer): boolean;
    /**
     *
     * @param {Material} m
     * @returns {Material}
     * @private
     */
    private __compile;
    /**
     *
     * @param {Material} source
     * @returns {Reference<Material>}
     */
    obtain(source: Material): Reference<Material>;
}
//# sourceMappingURL=MaterialManager.d.ts.map