import type { Camera, EventDispatcher, Scene, WebGLRenderer } from 'three';
import { Raycaster } from 'three';
import type { ComputedRef, DeepReadonly, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
import type { UseRendererOptions } from '../useRenderer';
export interface TresContext {
    scene: ShallowRef<Scene>;
    sizes: {
        height: Ref<number>;
        width: Ref<number>;
        aspectRatio: ComputedRef<number>;
    };
    extend: (objects: any) => void;
    camera: ComputedRef<Camera | undefined>;
    cameras: DeepReadonly<Ref<Camera[]>>;
    controls: Ref<(EventDispatcher & {
        enabled: boolean;
    }) | null>;
    renderer: ShallowRef<WebGLRenderer>;
    raycaster: ShallowRef<Raycaster>;
    registerCamera: (camera: Camera) => void;
    setCameraActive: (cameraOrUuid: Camera | string) => void;
    deregisterCamera: (camera: Camera) => void;
}
export declare function useTresContextProvider({ scene, canvas, windowSize, disableRender, rendererOptions, }: {
    scene: Scene;
    canvas: MaybeRef<HTMLCanvasElement>;
    windowSize: MaybeRefOrGetter<boolean>;
    disableRender: MaybeRefOrGetter<boolean>;
    rendererOptions: UseRendererOptions;
}): TresContext;
export declare function useTresContext(): TresContext;
export declare const useTres: typeof useTresContext;
