import React, { ReactNode, ReactElement } from 'react';
import { StyleProp, ViewProps } from 'react-native';
import GoogleMapView, { Region, MapViewProps } from 'react-native-maps';
import SuperCluster from 'supercluster';
export interface IClusterMapProps extends MapViewProps {
    isClusterExpandClick: boolean;
    superClusterOptions?: object;
    priorityMarker?: ReactElement;
    region: Region;
    children: ReactElement[] | ReactElement;
    style: StyleProp<ViewProps>;
    onZoomChange?: (zoom: number) => void;
    renderClusterMarker: (pointCount: number) => ReactNode;
    onMapReady: () => void;
    onClusterClick: () => void;
    onRegionChangeComplete: (region: Region) => void;
}
interface IClusterMapState {
    markers: Array<SuperCluster.ClusterFeature<any>> | Array<SuperCluster.PointFeature<any>>;
    isMapLoaded: boolean;
}
export declare class ClusterMap extends React.PureComponent<IClusterMapProps, IClusterMapState> {
    static defaultProps: Partial<IClusterMapProps>;
    mapRef: GoogleMapView;
    state: IClusterMapState;
    render(): JSX.Element;
    componentDidMount(): void;
    componentDidUpdate(prevProps: IClusterMapProps): void;
    private generateMarkers;
    private onRegionChangeComplete;
    private clusterize;
    private onClusterMarkerPress;
    private renderMarkers;
    private onMapReady;
}
export {};
