import type { ObservableEvents } from 'modern-idoc'; import type { GlRenderingContext } from '../types'; import type { WebGLRenderer } from '../WebGLRenderer'; import { Observable } from 'modern-idoc'; export interface GlSystemEvents extends ObservableEvents { updateContext: [gl: GlRenderingContext]; setup: []; } export interface GlSystem { on: (event: K, listener: (...args: GlSystemEvents[K]) => void) => this; once: (event: K, listener: (...args: GlSystemEvents[K]) => void) => this; off: (event: K, listener: (...args: GlSystemEvents[K]) => void) => this; emit: (event: K, ...args: GlSystemEvents[K]) => this; } export declare abstract class GlSystem extends Observable { protected _renderer: WebGLRenderer; protected get _gl(): GlRenderingContext; constructor(); install(renderer: WebGLRenderer): void; protected _updateContext(gl: GlRenderingContext): void; protected _setup(): void; flush(): void; reset(): void; }