import type { ReactNode } from 'react';
import React from 'react';
import type { OverlayProps } from './types';
export interface PositionProps {
    container?: React.ReactNode | Function;
    containerPadding?: number;
    target?: ReactNode | Function;
    placement?: string;
    shouldUpdatePosition?: boolean;
    onUpdatePlacement?: OverlayProps['onUpdatePlacement'];
    offset?: [number?, number?] | {
        x?: number;
        y?: number;
        left?: number;
        top?: number;
    };
    [prop: string]: any;
}
interface PositionState {
    activePlacement?: string;
    arrowOffsetLeft?: number | null;
    arrowOffsetTop?: number | null;
    positionLeft?: number;
    positionTop?: number;
}
export declare class Position extends React.Component<PositionProps, PositionState> {
    props: PositionProps;
    _lastTarget: any;
    resizeDispose: Array<() => void>;
    watchedTarget: any;
    setState: (state: PositionState) => void;
    static defaultProps: PositionProps;
    constructor(props: PositionProps);
    updatePosition(target: any): void;
    componentDidMount(): void;
    getTarget: () => any;
    componentDidUpdate(prevProps: PositionProps, prevState: PositionState): void;
    maybeUpdatePosition: (placementChanged: any) => void;
    componentWillUnmount(): void;
    render(): React.DetailedReactHTMLElement<{
        offset: {
            x: number;
            y: number;
        };
        positionLeft: number | undefined;
        positionTop: number | undefined;
        className: string;
        style: any;
        activePlacement?: string;
        arrowOffsetLeft?: number | null;
        arrowOffsetTop?: number | null;
        container?: React.ReactNode | Function;
        containerPadding?: number;
        target?: ReactNode | Function;
        placement?: string;
        shouldUpdatePosition?: boolean;
    }, HTMLElement>;
}
export {};
