import React from 'react';
import type { AttendanceLocation } from '../types';
export declare type GoogleMapLatLng = {
    lat: number;
    lng: number;
};
export declare type GoogleMapConfig = {
    center: GoogleMapLatLng;
    zoom: number;
    [key: string]: any;
};
export declare type GoogleMapMarker = {
    id?: string;
    coordinate: GoogleMapLatLng;
    title?: string;
    snippet?: string;
    iconUrl?: string;
    iconSize?: {
        width: number;
        height: number;
    };
    iconAnchor?: {
        x: number;
        y: number;
    };
    draggable?: boolean;
};
export declare type GoogleMapCircle = {
    id?: string;
    center: GoogleMapLatLng;
    radius: number;
    strokeColor?: string;
    strokeOpacity?: number;
    strokeWeight?: number;
    fillColor?: string;
    fillOpacity?: number;
    clickable?: boolean;
};
export declare type GoogleMapRef = {
    getMap: () => any | null;
    addMarker: (marker: GoogleMapMarker) => Promise<string | null>;
    addMarkers: (markers: GoogleMapMarker[]) => Promise<string[]>;
    removeMarker: (markerId: string) => Promise<void>;
    removeMarkers: (markerIds: string[]) => Promise<void>;
    addCircle: (circle: GoogleMapCircle) => Promise<string | null>;
    addCircles: (circles: GoogleMapCircle[]) => Promise<string[]>;
    removeCircle: (circleId: string) => Promise<void>;
    removeCircles: (circleIds: string[]) => Promise<void>;
    setCamera: (config: {
        coordinate: GoogleMapLatLng;
        zoom?: number;
        animate?: boolean;
    }) => Promise<void>;
    fitBounds: (bounds: {
        southwest: GoogleMapLatLng;
        northeast: GoogleMapLatLng;
        padding?: number;
    }) => Promise<void>;
};
export interface MapFieldProps {
    value?: AttendanceLocation[];
    onChange?: (value: AttendanceLocation[]) => void;
    defaultRadius?: number;
    className?: string;
}
export interface MapFieldRef {
    onAddLocation: () => void;
}
export interface LocationFormMapProps {
    value?: any;
    onChange?: (values: any) => void;
    defaultRadius?: number;
}
export interface LocationFormMapRef {
    validate: () => Promise<any>;
}
declare const MapField: React.ForwardRefExoticComponent<MapFieldProps & React.RefAttributes<MapFieldRef>>;
export default MapField;
