import type { CoreNode } from '../CoreNode.js'; import type { Stage } from '../Stage.js'; import type { CoreShaderProgram } from './CoreShaderProgram.js'; import type { Texture, TextureCoords } from '../textures/Texture.js'; import { CoreContextTexture } from './CoreContextTexture.js'; import type { CoreShaderType, CoreShaderNode } from './CoreShaderNode.js'; export interface BufferInfo { totalUsed: number; totalAvailable: number; } export declare abstract class CoreRenderer { mode: 'webgl' | 'canvas' | undefined; defaultTextureCoords: TextureCoords | undefined; readonly stage: Stage; rttNodes: CoreNode[]; constructor(stage: Stage); abstract reset(): void; abstract render(surface?: 'screen' | CoreContextTexture): void; abstract addQuad(node: CoreNode): void; abstract createCtxTexture(textureSource: Texture): CoreContextTexture; abstract createShaderProgram(shaderConfig: Readonly, props?: Record): CoreShaderProgram | null; abstract createShaderNode(shaderKey: string, shaderType: Readonly, props?: Record, program?: CoreShaderProgram): CoreShaderNode; abstract supportsShaderType(shaderType: Readonly): boolean; abstract getDefaultShaderNode(): CoreShaderNode | null; abstract get renderToTextureActive(): boolean; abstract get activeRttNode(): CoreNode | null; abstract renderRTTNodes(): void; abstract removeRTTNode(node: CoreNode): void; abstract renderToTexture(node: CoreNode): void; abstract getBufferInfo(): BufferInfo | null; abstract getQuadCount(): number | null; abstract updateViewport(): void; abstract updateClearColor(color: number): void; getTextureCoords?(node: CoreNode): TextureCoords | undefined; }