import { Nullable } from '../../types';
import { MaybeRef } from 'vue';
import { Map, AnimationOptions, CameraOptions } from 'maplibre-gl';

/**
 * Zoom animation status enum for better state management
 */
export declare enum ZoomStatus {
    NotStarted = "not-started",
    Zooming = "zooming",
    Completed = "completed",
    Error = "error"
}
interface ZoomToProps {
    map: MaybeRef<Nullable<Map>>;
    zoom?: number;
    options?: AnimationOptions;
    debug?: boolean;
    autoZoom?: boolean;
}
interface ZoomToActions {
    zoomTo: (zoom: number, options?: AnimationOptions) => Promise<void>;
    stopZooming: () => void;
    getCurrentZoom: () => number | null;
    getCurrentCamera: () => CameraOptions | null;
    validateZoomLevel: (zoom: number) => boolean;
    zoomStatus: Readonly<ZoomStatus>;
    isZooming: boolean;
}
interface ZoomInProps {
    map: MaybeRef<Nullable<Map>>;
    options?: AnimationOptions;
    debug?: boolean;
    autoZoom?: boolean;
}
interface ZoomInActions {
    zoomIn: (options?: AnimationOptions) => Promise<void>;
    stopZooming: () => void;
    getCurrentZoom: () => number | null;
    getCurrentCamera: () => CameraOptions | null;
    zoomStatus: Readonly<ZoomStatus>;
    isZooming: boolean;
}
interface ZoomOutProps {
    map: MaybeRef<Nullable<Map>>;
    options?: AnimationOptions;
    debug?: boolean;
    autoZoom?: boolean;
}
interface ZoomOutActions {
    zoomOut: (options?: AnimationOptions) => Promise<void>;
    stopZooming: () => void;
    getCurrentZoom: () => number | null;
    getCurrentCamera: () => CameraOptions | null;
    zoomStatus: Readonly<ZoomStatus>;
    isZooming: boolean;
}
/**
 * Composable for managing map zoom-to operations with enhanced error handling
 * Provides reactive zoom-to functionality with validation and debugging capabilities
 *
 * @param props - Configuration options for zoom-to functionality
 * @returns Enhanced actions and state for zoom-to operations
 */
export declare function useZoomTo(props: ZoomToProps): ZoomToActions;
/**
 * Legacy overload for backward compatibility
 * @deprecated Use the new props-based interface for better type safety and features
 */
export declare function useZoomTo(map: MaybeRef<Nullable<Map>>, options?: AnimationOptions & {
    zoom: number;
}): {
    zoomTo: (zoomVal: number, options?: AnimationOptions) => void;
};
/**
 * Composable for managing map zoom-in operations with enhanced error handling
 * Provides reactive zoom-in functionality with validation and debugging capabilities
 *
 * @param props - Configuration options for zoom-in functionality
 * @returns Enhanced actions and state for zoom-in operations
 */
export declare function useZoomIn(props: ZoomInProps): ZoomInActions;
/**
 * Legacy overload for backward compatibility
 * @deprecated Use the new props-based interface for better type safety and features
 */
export declare function useZoomIn(map: MaybeRef<Nullable<Map>>, options?: AnimationOptions): {
    zoomIn: (options?: AnimationOptions) => void;
};
/**
 * Composable for managing map zoom-out operations with enhanced error handling
 * Provides reactive zoom-out functionality with validation and debugging capabilities
 *
 * @param props - Configuration options for zoom-out functionality
 * @returns Enhanced actions and state for zoom-out operations
 */
export declare function useZoomOut(props: ZoomOutProps): ZoomOutActions;
/**
 * Legacy overload for backward compatibility
 * @deprecated Use the new props-based interface for better type safety and features
 */
export declare function useZoomOut(map: MaybeRef<Nullable<Map>>, options?: AnimationOptions): {
    zoomOut: (options?: AnimationOptions) => void;
};
export {};
//# sourceMappingURL=useZoom.d.ts.map