import { Camera, Vector2, WebGLRenderer } from 'three';
import { PolyScene } from '../../engine/scene/PolyScene';
import { AbstractRenderer } from '../../engine/viewers/Common';
import type { PathTracingRendererRopNode } from '../../engine/nodes/rop/PathTracingRenderer';
import type { WebGLRendererRopNode } from '../../engine/nodes/rop/WebGLRenderer';
import { PathTracingRendererContainer } from '../../engine/nodes/rop/utils/pathTracing/PathTracingRendererContainer';
interface RendererRopOptions {
    camera: Camera;
    scene: PolyScene;
}
interface RendererConfigOptions {
    camera: Camera;
    scene: PolyScene;
    canvas: HTMLCanvasElement;
}
interface RendererConfigWebGL {
    renderer: WebGLRenderer;
    rendererNode?: WebGLRendererRopNode;
}
interface RendererConfigPathtracing {
    renderer: PathTracingRendererContainer;
    rendererNode?: PathTracingRendererRopNode;
}
export type AvailableRenderConfig = RendererConfigWebGL | RendererConfigPathtracing;
export declare class CoreCameraRendererController {
    private static _defaultRendererByContext;
    private static _renderersByCanvas;
    static renderer(canvas: HTMLCanvasElement): AbstractRenderer | undefined;
    static rendererNode(options: RendererRopOptions): import("../graph/CoreGraphNode").CoreGraphNode | undefined;
    static rendererConfig<A extends AvailableRenderConfig>(options: RendererConfigOptions): A | undefined;
    static setRendererSize(canvas: HTMLCanvasElement, size: Vector2): void;
    static createDefaultRenderer(canvas: HTMLCanvasElement, gl: WebGLRenderingContext): WebGLRenderer;
}
export {};
