///
import * as THREE from 'three';
import { SharedCanvasContext, RenderCallback, Camera } from './canvas';
export declare function useFrame(callback: RenderCallback, renderPriority?: number): null;
export declare function useThree(): SharedCanvasContext;
export declare function useUpdate(callback: (props: T) => void, dependents: any[], optionalRef?: React.MutableRefObject): React.MutableRefObject;
export declare function useResource(optionalRef?: React.MutableRefObject): [React.MutableRefObject, T];
declare type Extensions = (loader: THREE.Loader) => void;
export interface Loader extends THREE.Loader {
load(url: string, onLoad?: (result: T) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): unknown;
}
declare type LoaderResult = T extends any[] ? Loader : Loader;
export declare function useLoader(Proto: new () => LoaderResult, url: T extends any[] ? string[] : string, extensions?: Extensions): T;
export declare function useCamera(camera: Camera, props?: Partial): (_: THREE.Raycaster, intersects: THREE.Intersection[]) => void;
export {};