import type { FeatureCollection, MultiPolygon, Polygon } from 'geojson';
import type { RegionData as ChoroplethRegionData } from '../../ChoroplethMap/ChoroplethMap.types/index';
import type { MapFilters, MapDataBounds, MapDataApiResponse } from '../../types/mapData';
/**
 * Hook return type for useMapData
 */
export interface UseMapDataReturn {
    /** Transformed region data for ChoroplethMap */
    data: ChoroplethRegionData[];
    /** Map bounds from API */
    bounds: MapDataBounds | null;
    /** Complete GeoJSON with NRE field for each municipality */
    geoJSON: FeatureCollection<Polygon | MultiPolygon> | null;
    /** Loading state */
    loading: boolean;
    /** Error message if request failed */
    error: string | null;
    /** Refetch data from API */
    refetch: () => Promise<void>;
}
/**
 * Factory function to create useMapData hook
 *
 * @param fetchMapDataApi - Function to fetch map data from API
 * @returns Hook for managing map data with auto-fetch on filter change
 *
 * @example
 * ```tsx
 * // In your app setup
 * const fetchMapDataApi = async (filters: MapFilters) => {
 *   const response = await api.post('/access-report/access/map', filters);
 *   return response.data;
 * };
 *
 * export const useMapData = createUseMapData(fetchMapDataApi);
 *
 * // In your component
 * const { data, bounds, loading, error } = useMapData(filters);
 * ```
 */
export declare const createUseMapData: (fetchMapDataApi: (filters: MapFilters) => Promise<MapDataApiResponse>) => (filters: MapFilters) => UseMapDataReturn;
//# sourceMappingURL=useMapData.d.ts.map