import { WebGLRenderer, WebGLRendererParameters, WebGLRenderTarget, RenderTargetOptions } from 'three';
import type { AbstractRenderer } from '../viewers/Common';
import { PolyEngine } from '../Poly';
export interface WithPolyId {
    _polygonId?: number;
}
export interface WithContextId {
    _polygonjsContextId?: number;
}
export interface POLYAbstractRenderer extends AbstractRenderer, WithPolyId {
}
export interface CanvasContext extends WebGLRenderingContext, WithContextId {
}
export declare class RenderersController {
    readonly poly: PolyEngine;
    private static _nextGlContextId;
    private _printDebug;
    private _requireWebGL2;
    private _webgl2_available;
    private _webGLContextByCanvas;
    private _defaultRendererByCanvas;
    constructor(poly: PolyEngine);
    dispose(): void;
    setPrintDebug(state?: boolean): void;
    printDebug(): boolean;
    printDebugMessage(message: any): void;
    setRequireWebGL2(): void;
    webGL2Available(canvas?: HTMLCanvasElement): boolean;
    private _getWebGL2Available;
    defaultWebGLRendererForCanvas(canvas: HTMLCanvasElement): WebGLRenderer;
    createWebGLRenderer(params: WebGLRendererParameters): WebGLRenderer;
    assignIdToRenderer(renderer: AbstractRenderer): void;
    rendererId(renderer: AbstractRenderer): number | undefined;
    getRenderingContext(canvas: HTMLCanvasElement): WebGLRenderingContext | null;
    private _getRenderingContextWebgl;
    createRenderTarget(width: number, height: number, parameters: RenderTargetOptions): WebGLRenderTarget<import("three").Texture>;
    private _linearRenderer;
    linearRenderer(): WebGLRenderer | undefined;
    private _createLinearRenderer;
}
