import { AssetEvent, Matrix, Matrix3D, AbstractionBase, IAsset } from '@awayjs/core';
import { Stage, _Stage_ImageBase, ImageSampler } from '@awayjs/stage';
import { ContainerNode } from '@awayjs/view';
import { RenderableEvent } from '../events/RenderableEvent';
import { _Render_MaterialBase } from './_Render_MaterialBase';
import { _Stage_ElementsBase } from './_Stage_ElementsBase';
import { IMaterial } from './IMaterial';
import { RenderEntity } from './RenderEntity';
import { Style } from './Style';
import { IRenderable } from './IRenderable';
/**
 * @class RenderableListItem
 */
export declare class _Render_RenderableBase extends AbstractionBase implements IRenderable {
    private _onInvalidateElementsDelegate;
    private _onInvalidateMaterialDelegate;
    private _onInvalidateStyleDelegate;
    private _materialDirty;
    private _stageElements;
    private _elementsDirty;
    private _styleDirty;
    private _images;
    private _samplers;
    private _uvMatrix;
    JOINT_INDEX_FORMAT: string;
    JOINT_WEIGHT_FORMAT: string;
    _count: number;
    _offset: number;
    protected _stage: Stage;
    protected _renderMaterial: _Render_MaterialBase;
    /**
     *
     */
    get images(): Array<_Stage_ImageBase>;
    /**
     *
     */
    get samplers(): Array<ImageSampler>;
    /**
     *
     */
    renderSceneTransform: Matrix3D;
    /**
     *
     */
    get uvMatrix(): Matrix;
    /**
     *
     */
    next: IRenderable;
    id: number;
    /**
     *
     */
    materialID: number;
    /**
     *
     */
    renderOrderId: number;
    /**
     *
     */
    zIndex: number;
    /**
     *
     */
    private _maskId;
    set maskId(v: number);
    get maskId(): number;
    /**
     *
     */
    maskOwners: ContainerNode[];
    /**
     *
     */
    cascaded: boolean;
    /**
     *
     * @returns {_Stage_ElementsBase}
     */
    get stageElements(): _Stage_ElementsBase;
    /**
     *
     * @returns {_Render_MaterialBase}
     */
    get renderMaterial(): _Render_MaterialBase;
    get entity(): RenderEntity;
    constructor();
    /**
     *
     * @param renderable
     * @param sourceEntity
     * @param surface
     * @param renderer
     */
    init(renderable: IAsset, entity: RenderEntity): void;
    private _updateMaskHack;
    /**
     * Renders an object to the current render target.
     *
     * @private
     */
    executeRender(enableDepthAndStencil?: boolean, surfaceSelector?: number, mipmapSelector?: number, maskConfig?: number): void;
    onClear(event: AssetEvent): void;
    _onInvalidateElements(event?: RenderableEvent): void;
    _onInvalidateMaterial(event?: RenderableEvent): void;
    _onInvalidateStyle(event?: RenderableEvent): void;
    protected _getStageElements(): _Stage_ElementsBase;
    protected _getRenderMaterial(): _Render_MaterialBase;
    protected _getStyle(): Style;
    /**
     * //TODO
     *
     * @private
     */
    private _updateElements;
    protected _updateMaterial(): void;
    protected _updateStyle(): void;
    protected getDefaultMaterial(): IMaterial;
}
//# sourceMappingURL=_Render_RenderableBase.d.ts.map