import { Camera, Scene, WebGLRenderer, WebGLRendererParameters } from "three";
import { WebGPURenderer } from "three/src/Three.WebGPU";
import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
import { DTRender } from "../interface/render";
import { RenderFn } from "../core/executer";
export type WebglRenderer = {
    isPaused: boolean;
    type: "webgl" | "webgpu";
    composer: EffectComposer | undefined;
    amount: (el: string | HTMLElement) => void;
    start: () => void;
    stop: () => void;
    dispose: () => void;
    resize: (width?: number, height?: number) => void;
    onRender: (fn: RenderFn) => () => void;
    onResize: (fn: ResizeFn) => () => void;
} & (WebGLRenderer | WebGPURenderer) & DTRender;
export declare function createDefaultRendererOptoins(): {
    antialias: boolean;
    alpha: boolean;
    precision: string;
};
export type RenderOptions = {
    type: "auto" | "webgl" | "webgpu";
    effect?: boolean;
    autoRender?: boolean;
};
export type ResizeFn = (width: number, height: number) => void;
export default function createRenderer(ro: RenderOptions, options: WebGLRendererParameters | undefined, scene: Scene, camera: Camera): WebglRenderer;
