import type { LayerName } from '../canvas-layer'; import type { RenderContext } from '../render-context'; export type RendererBackend = 'canvas2d' | 'webgl'; export interface RenderLayer { readonly name: LayerName; readonly canvas: HTMLCanvasElement; readonly rc: RenderContext; dirty: boolean; /** For legacy code that still needs raw ctx (drawings, etc.) */ readonly ctx: CanvasRenderingContext2D | null; } export declare class WebGLLayerManager { private container; private layers; private webglBatch; private _width; private _height; private _dpr; private _backend; get width(): number; get height(): number; get dpr(): number; get logicalWidth(): number; get logicalHeight(): number; get backend(): RendererBackend; constructor(container: HTMLElement, backend?: RendererBackend); private initWebGL; private initCanvas2D; private createCanvas; /** Get a layer by name */ get(name: LayerName): RenderLayer; /** Get the RenderContext for a layer */ getRenderContext(name: LayerName): RenderContext; /** * Get raw CanvasRenderingContext2D for legacy code. * For WebGL layers, returns null — caller must use RenderContext. */ getCtx(name: LayerName): CanvasRenderingContext2D | null; /** Mark a layer as needing repaint */ markDirty(name: LayerName): void; /** Mark all layers dirty */ markAllDirty(): void; /** Clear a layer */ clear(name: LayerName): void; /** Resize all canvases to match container */ resize(): void; /** Iterate dirty layers, call render callback, clear dirty flag */ renderDirty(renderFn: (layer: RenderLayer) => void): void; /** Remove all canvases from DOM */ destroy(): void; }