import * as React from "react";
import { Execution } from "@gooddata/typings";
import { IDrillConfig } from "../../../interfaces/DrillEvents";
import { IGeoConfig, IGeoData, IGeoLngLat } from "../../../interfaces/GeoChart";
import { IHeaderPredicate } from "../../../interfaces/HeaderPredicate";
import "../../../../styles/css/geoChart.css";
import { IColorStrategy } from "../../visualizations/chart/colorFactory";
export interface IGeoChartRendererProps {
    config: IGeoConfig;
    drillableItems: IHeaderPredicate[];
    drillConfig: IDrillConfig;
    execution: Execution.IExecutionResponses;
    geoData: IGeoData;
    colorStrategy: IColorStrategy;
    afterRender(): void;
    onCenterPositionChanged(center: IGeoLngLat): void;
    onZoomChanged(zoom: number): void;
}
export default class GeoChartRenderer extends React.Component<IGeoChartRendererProps> {
    static defaultProps: Partial<IGeoChartRendererProps>;
    private chart;
    private tooltip;
    private chartRef;
    private navigationControlButton;
    constructor(props: IGeoChartRendererProps);
    componentDidUpdate(prevProps: IGeoChartRendererProps): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    setChartRef: (ref: HTMLElement) => void;
    createMap: () => void;
    render(): JSX.Element;
    private updateMapWithConfig;
    private resetMap;
    private shouldResetMap;
    private isViewportFrozen;
    private createMapControls;
    private removeMapControls;
    private addMapControls;
    private toggleMapControls;
    private toggleInteractionEvents;
    private updatePanAndZoom;
    private updateViewport;
    private setFilterMap;
    private handleMapEvent;
    private handleMapIdle;
    private setupMap;
    private adjustChartHeight;
    private handleLayerLoaded;
    private createTooltip;
    private cleanupMap;
    private removeLayer;
    private removeMap;
    private handlePushpinMoveEnd;
    private handlePushpinZoomEnd;
    private handleMapClick;
    private handlePushpinMouseEnter;
    private handlePushpinMouseLeave;
}
