import * as React from 'react';
import { Rect } from '@shopify/javascript-utilities/geometry';
import { PreferredPosition, PreferredAlignment } from './utilities/math';
export { PreferredPosition, PreferredAlignment };
export declare type Positioning = 'above' | 'below';
export interface OverlayDetails {
    left: number;
    desiredHeight: number;
    positioning: Positioning;
    measuring: boolean;
    activatorRect: Rect;
}
export interface Props {
    active: boolean;
    activator: HTMLElement;
    preferredPosition?: PreferredPosition;
    preferredAlignment?: PreferredAlignment;
    fullWidth?: boolean;
    fixed?: boolean;
    render(overlayDetails: OverlayDetails): React.ReactNode;
    onScrollOut?(): void;
}
export interface State {
    measuring: boolean;
    activatorRect: Rect;
    left: number;
    top: number;
    height: number;
    width: number | null;
    positioning: Positioning;
    zIndex: number | null;
    outsideScrollableContainer: boolean;
    lockPosition: boolean;
}
export default class PositionedOverlay extends React.PureComponent<Props, State> {
    state: State;
    private overlay;
    private scrollableContainer;
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentWillReceiveProps(): void;
    componentDidUpdate(): void;
    render(): JSX.Element;
    private overlayDetails;
    private setOverlay;
    private handleMeasurement;
}
