/// <reference types="googlemaps" />
import * as React from 'react';
interface OverlayViewState {
    paneEl: Element | null;
    containerStyle: React.CSSProperties;
}
export declare type PaneNames = keyof google.maps.MapPanes;
export interface OverlayViewProps {
    mapPaneName: PaneNames;
    getPixelPositionOffset?: (offsetWidth: number, offsetHeight: number) => {
        x: number;
        y: number;
    };
    bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral;
    position?: google.maps.LatLng | google.maps.LatLngLiteral;
    onLoad?: (overlayView: google.maps.OverlayView) => void;
    onUnmount?: (overlayView: google.maps.OverlayView) => void;
}
export declare class OverlayView extends React.PureComponent<OverlayViewProps, OverlayViewState> {
    static FLOAT_PANE: PaneNames;
    static MAP_PANE: PaneNames;
    static MARKER_LAYER: PaneNames;
    static OVERLAY_LAYER: PaneNames;
    static OVERLAY_MOUSE_TARGET: PaneNames;
    static contextType: React.Context<google.maps.Map<Element> | null>;
    state: OverlayViewState;
    overlayView: google.maps.OverlayView;
    containerRef: React.RefObject<HTMLDivElement>;
    updatePane: () => void;
    onAdd: () => void;
    onPositionElement: () => void;
    draw: () => void;
    onRemove: () => void;
    constructor(props: OverlayViewProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: OverlayViewProps): void;
    componentWillUnmount(): void;
    render(): React.ReactPortal | React.ReactNode;
}
export default OverlayView;
