// src/types/react-simple-maps.d.ts
declare module "react-simple-maps" {
  import * as React from "react";

  export interface ComposableMapProps extends React.SVGProps<SVGSVGElement> {
    projection?: any;
    projectionConfig?: Record<string, any>;
    width?: number;
    height?: number;
    style?: React.CSSProperties;
  }
  export const ComposableMap: React.FC<ComposableMapProps>;

  export interface GeographiesProps {
    geography: string | object;
    children?: (args: { geographies: any[]; projection: any }) => React.ReactNode;
  }
  export const Geographies: React.FC<GeographiesProps>;

  export interface GeographyProps extends React.SVGProps<SVGPathElement> {
    geography: any;
    style?: {
      default?: React.CSSProperties & { outline?: string };
      hover?: React.CSSProperties & { outline?: string };
      pressed?: React.CSSProperties & { outline?: string };
    };
  }
  export const Geography: React.FC<GeographyProps>;

  export interface MarkerProps extends React.SVGProps<SVGGElement> {
    coordinates: [number, number];
    children?: React.ReactNode;
  }
  export const Marker: React.FC<MarkerProps>;

  export interface AnnotationProps extends React.SVGProps<SVGGElement> {
    subject: [number, number];
    dx?: number;
    dy?: number;
    connectorProps?: Record<string, any>;
    children?: React.ReactNode;
  }
  export const Annotation: React.FC<AnnotationProps>;

  export interface ZoomableGroupProps extends React.SVGProps<SVGGElement> {
    center?: [number, number];
    zoom?: number;
    minZoom?: number;
    maxZoom?: number;
    translateExtent?: [[number, number], [number, number]];
    onMoveStart?: (pos: { coordinates: [number, number]; zoom: number }) => void;
    onMove?: (pos: { coordinates: [number, number]; zoom: number }) => void;   // ← добавили
    onMoveEnd?: (pos: { coordinates: [number, number]; zoom: number }) => void;
    filterZoomEvent?: (e: any) => boolean;
  }
  export const ZoomableGroup: React.FC<ZoomableGroupProps>;
}
