import { IAssetClass, IAbstractionPool, AssetEvent, AbstractionBase, IAsset, IAbstraction } from '@awayjs/core';
import { Stage } from '@awayjs/stage';
import { _IRender_RenderableClass } from './_IRender_RenderableClass';
import { ContainerNode } from '@awayjs/view';
import { RendererBase } from '../RendererBase';
import { _Render_RenderableBase } from './_Render_RenderableBase';
/**
 * @class away.pool.RenderEntity
 */
export declare class RenderEntity extends AbstractionBase implements IAbstractionPool {
    private static _store;
    private static _renderRenderableClassPool;
    private _onInvalidateElementsDelegate;
    private _onInvalidateMaterialDelegate;
    private _onInvalidateStyleDelegate;
    private _renderables;
    /**
     *
     * @returns {RenderGroup}
     */
    stage: Stage;
    /**
     *
     * @returns {ContainerNode}
     */
    get node(): ContainerNode;
    /**
     *
     * @returns {RendererBase}
     */
    get renderer(): RendererBase;
    constructor();
    /**
     * //TODO
     *
     * @param materialClassGL
     */
    init(node: ContainerNode, renderer: RendererBase): void;
    onClear(event: AssetEvent): void;
    onInvalidate(event: AssetEvent): void;
    addRenderable(renderable: _Render_RenderableBase): void;
    removeRenderable(renderable: _Render_RenderableBase): void;
    private _onInvalidateElements;
    private _onInvalidateMaterial;
    private _onInvalidateStyle;
    requestAbstraction(asset: IAsset): IAbstraction;
    storeAbstraction(abstraction: IAbstraction): void;
    /**
     *
     * @param imageObjectClass
     */
    static registerRenderable(renderStateClass: _IRender_RenderableClass, assetClass: IAssetClass): void;
}
//# sourceMappingURL=RenderEntity.d.ts.map