import { UseLoadModelReturn } from './types';
import { useOptimizeModel } from '../use-optimize-model';
/**
 * Custom hook to load and manage 3D models with optional optimization integration.
 *
 * Supports GLTF, GLB, and USDZ formats via file upload or server-side scene loading.
 * When an optimizer is provided, each load path initialises the optimizer so texture
 * names and URIs are preserved for subsequent compression or simplification passes.
 *
 * **Type Safety:**
 * - With optimizer: `optimizer` property is fully typed with optimization methods
 * - Without optimizer: `optimizer` property is typed as `null`
 *
 * @template T - The type of the optimizer parameter (inferred automatically)
 * @param optimizer - Optional optimizer hook returned from useOptimizeModel
 * @returns Model loading state and methods, with conditionally typed optimizer property
 */
declare function useLoadModel<T extends ReturnType<typeof useOptimizeModel> | undefined>(optimizer?: T): UseLoadModelReturn<T extends undefined ? false : true>;
export default useLoadModel;
