import { Stage, ShaderRegisterCache, ShaderRegisterData } from '@awayjs/stage';
import { AbstractionSet, AssetBase, IAbstractionPool, IAsset } from '@awayjs/core';
import { ShaderBase } from './ShaderBase';
import { RendererBase } from '../RendererBase';
import { _Render_MaterialBase } from './_Render_MaterialBase';
/**
 * @class away.pool.MaterialPoolBase
 */
export declare class _Render_ElementsBase extends AssetBase implements IAbstractionPool {
    private _materialStore;
    private _materialClassPool;
    readonly abstractions: AbstractionSet;
    readonly renderer: RendererBase;
    readonly stage: Stage;
    /**
     * //TODO
     *
     * @param materialClassGL
     */
    constructor(renderer: RendererBase);
    requestAbstraction(asset: IAsset): _Render_MaterialBase;
    storeAbstraction(abstraction: _Render_MaterialBase, assetType: string): void;
    clear(): void;
    _includeDependencies(shader: ShaderBase): void;
    _getVertexCode(shader: ShaderBase, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
    _getFragmentCode(shader: ShaderBase, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
}
//# sourceMappingURL=_Render_ElementsBase.d.ts.map