//@ts-ignore
import { AppContextType, Coordinates, PropsWithDefaults, StaticDefaultProps } from '@grapecity/core-ui';
/// <reference path="../vendor/react/react.d.ts" />
//@ts-ignore
import * as React from 'react';
type ParentElement = {
    type: 'element';
    element: HTMLDivElement;
};
type ParentMouse = {
    type: 'mouse';
    position: Coordinates;
};
type ParentViewport = {
    type: 'viewport';
};
export type PositionerAlignment = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
export type PositionerProps = {
    parent: ParentElement | ParentMouse | ParentViewport;
    align: PositionerAlignment;
    offset?: false | number;
    edgeSnapOffset?: number;
    flippable?: boolean;
    fillContainer?: boolean;
    onSide?: boolean;
    onReady?: () => void;
};
type PositionerStyle = {
    position?: 'absolute' | 'fixed';
    top?: number;
    bottom?: number;
    left?: number;
    right?: number;
};
type PositionerState = {
    hasCalculatedStyle: boolean;
};
type PositionerDefaultProps = keyof Pick<PositionerProps, 'edgeSnapOffset' | 'offset'>;
export declare class Positioner extends React.Component<PositionerProps, PositionerState> {
//@ts-ignore
    static contextType: React.Context<import("@grapecity/core-ui/lib/types/utils").AppContextValue>;
    context: AppContextType;
    static defaultProps: StaticDefaultProps<PositionerProps, PositionerDefaultProps>;
    props: PropsWithDefaults<PositionerProps, PositionerDefaultProps>;
    private _disposables;
    private _item;
    state: PositionerState;
    componentDidMount(): void;
    componentWillUnmount(): void;
    getNode: () => HTMLDivElement | null;
    setupScrollSpy: () => void;
    onScrollAndResize: () => void;
    setViewportRelativePosition: () => void;
    updatePosition: (initial?: boolean) => void;
    applyStyle: ({ position, ...pixelValues }: PositionerStyle) => void;
    render(): React.JSX.Element;
}
export {};
