import { Component, ReactNode } from 'react';
import EventManager from '../_util/EventManager';
import TaskRunner from '../_util/TaskRunner';
export declare type AlignPoint = {
    pageX?: number;
    pageY?: number;
    clientX?: number;
    clientY?: number;
};
export declare type AlignTarget = (() => Element | Text | null) | AlignPoint;
export declare type ChildrenFunction = (innerRef: (node: any) => void) => ReactNode;
export interface AlignProps {
    childrenProps?: object;
    childrenRef?: (node: any) => void;
    align: object;
    target?: AlignTarget;
    onAlign?: (source: Element | Text | null, align: object, target: HTMLElement | null, translate: {
        x: number;
        y: number;
    }, point: AlignPoint | null) => void;
    monitorBufferTime?: number;
    monitorWindowResize?: boolean;
    hidden?: boolean;
    children?: ReactNode | ChildrenFunction;
}
export default class Align extends Component<AlignProps, any> {
    static displayName: string;
    static defaultProps: {
        target: () => Window & typeof globalThis;
        monitorBufferTime: number;
        monitorWindowResize: boolean;
        hidden: boolean;
    };
    resizeHandler: EventManager | null;
    bufferMonitor: TaskRunner | null;
    source?: HTMLElement;
    sourceRect: ClientRect | DOMRect | null;
    saveSourceRef: (node: any) => void;
    componentDidMount(): void;
    componentDidUpdate(prevProps: any): void;
    componentWillUnmount(): void;
    startMonitorWindowResize(): void;
    stopMonitorWindowResize(): void;
    forceAlign(): void;
    render(): {} | null | undefined;
}
