import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
import { AssetLoader } from '../loaders/AssetLoader';
export type CameraMode = 'isometric' | 'perspective' | 'top-down';
export interface UseThreeOptions {
    /** Camera mode for viewing the scene */
    cameraMode?: CameraMode;
    /** Initial camera position [x, y, z] */
    cameraPosition?: [number, number, number];
    /** Background color */
    backgroundColor?: string;
    /** Enable shadows */
    shadows?: boolean;
    /** Enable grid helper */
    showGrid?: boolean;
    /** Grid size */
    gridSize?: number;
    /** Asset loader instance */
    assetLoader?: AssetLoader;
}
export interface UseThreeReturn {
    /** Canvas element reference (for React Three Fiber) */
    canvasRef: React.RefObject<HTMLCanvasElement | null>;
    /** Three.js renderer */
    renderer: THREE.WebGLRenderer | null;
    /** Three.js scene */
    scene: THREE.Scene | null;
    /** Three.js camera */
    camera: THREE.Camera | null;
    /** Orbit controls */
    controls: OrbitControls | null;
    /** Is scene ready */
    isReady: boolean;
    /** Canvas dimensions */
    dimensions: {
        width: number;
        height: number;
    };
    /** Set camera position */
    setCameraPosition: (x: number, y: number, z: number) => void;
    /** Look at a specific point */
    lookAt: (x: number, y: number, z: number) => void;
    /** Reset camera to initial position */
    resetCamera: () => void;
    /** Fit view to bounds */
    fitView: (bounds: {
        minX: number;
        maxX: number;
        minZ: number;
        maxZ: number;
    }) => void;
}
/**
 * Hook for managing a Three.js scene
 * This is a lower-level hook used by GameCanvas3D
 */
export declare function useThree(options?: UseThreeOptions): UseThreeReturn;
export default useThree;
