import { IAssetClass } from '@awayjs/core';
import { ContainerNode, INode } from '@awayjs/view';
import { IMaterial } from './base/IMaterial';
import { ITexture } from './base/ITexture';
import { Style } from './base/Style';
import { _IRender_MaterialClass } from './base/_IRender_MaterialClass';
import { _Render_RenderableBase } from './base/_Render_RenderableBase';
import { _Render_RendererMaterial } from './base/_Render_RendererMaterial';
import { _Stage_ElementsBase } from './base/_Stage_ElementsBase';
import { RendererBase } from './RendererBase';
import { RenderGroup } from './RenderGroup';
import { ImageTexture2D } from './textures/ImageTexture2D';
import { IRenderable } from './base/IRenderable';
export declare class CacheRenderer extends RendererBase implements IMaterial, IRenderable {
    static assetType: string;
    private _texture;
    private _textures;
    private _onTextureInvalidate;
    private _onInvalidateSceneTransform;
    private _onInvalidateColorTransform;
    animateUVs: boolean;
    bothSides: boolean;
    curves: boolean;
    imageRect: boolean;
    useColorTransform: boolean;
    alphaBlending: boolean;
    alphaThreshold: number;
    get assetType(): string;
    /**
    * The 2d texture to use as a bitmap cache.
    */
    get texture(): ImageTexture2D;
    set texture(value: ImageTexture2D);
    constructor();
    _onInvalidateElements(): void;
    _onInvalidateMaterial(): void;
    init(node: INode, group: RenderGroup): void;
    render(enableDepthAndStencil?: boolean, surfaceSelector?: number, mipmapSelector?: number, maskConfig?: number): void;
    _updateBounds(): void;
    preActivateRenderPass(): void;
    getNumTextures(): number;
    getTextureAt(index: number): ITexture;
    addTexture(texture: ITexture): void;
    removeTexture(texture: ITexture): void;
    /**
     * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.
     *
     * @private
     */
    invalidatePasses(): void;
    /**
     *
     */
    enterNode(node: ContainerNode): boolean;
    onInvalidate(): void;
    onInvalidateSceneTransform(): void;
    onInvalidateColorTransform(): void;
    onClear(): void;
    static registerMaterial(renderMaterialClass: _IRender_MaterialClass, materialClass: IAssetClass): void;
}
export declare class _Render_Renderer extends _Render_RenderableBase {
    static assetType: string;
    private _elements;
    protected _getStageElements(): _Stage_ElementsBase;
    draw(enableDepthAndStencil?: boolean, surfaceSelector?: number, mipmapSelector?: number, maskConfig?: number): void;
    protected _getRenderMaterial(): _Render_RendererMaterial;
    protected _getStyle(): Style;
}
//# sourceMappingURL=CacheRenderer.d.ts.map