import { IAssetClass, IAsset, IAbstractionPool, IAbstraction } from '@awayjs/core';
import { _IRender_ElementsClass } from './base/_IRender_ElementsClass';
import { RendererBase } from './RendererBase';
import { INode } from '@awayjs/view';
import { _IRender_MaterialClass } from './base/_IRender_MaterialClass';
import { IRendererClass } from './base/IRendererClass';
export declare class RenderGroup implements IAbstractionPool {
    static _renderGroupPool: Record<string, RenderGroup>;
    private static _renderElementsClassPool;
    private _rendererClass;
    private _store;
    readonly materialStore: Record<string, IAbstraction[]>;
    readonly materialClassPool: Record<string, _IRender_MaterialClass>;
    readonly id: number;
    constructor(rendererClass: IRendererClass);
    requestAbstraction(asset: IAsset): IAbstraction;
    storeAbstraction(abstraction: IAbstraction): void;
    getRenderer<T extends RendererBase>(node: INode): T;
    static getInstance(rendererClass: IRendererClass): RenderGroup;
    registerMaterial(renderMaterialClass: _IRender_MaterialClass, materialClass: IAssetClass): void;
    /**
     *
     * @param imageObjectClass
     */
    static registerElements(renderElementsClass: _IRender_ElementsClass, elementsClass: IAssetClass): void;
    static getRenderElementsClass(asset: IAsset): _IRender_ElementsClass;
}
//# sourceMappingURL=RenderGroup.d.ts.map