import * as React from "react";
import Dragger from "@daybrush/drag";
import { MoveableManagerProps, MoveableManagerState, Able } from "./types";
import CustomDragger from "./CustomDragger";
declare const ControlBoxElement: {
    new (props: any): {
        element: HTMLDivElement;
        render(): React.DOMElement<{
            children?: React.ReactNode;
            className: string;
        }, Element>;
        componentDidMount(): void;
        componentWillUnmount(): void;
        getElement(): HTMLDivElement;
        context: any;
        setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<{
            [key: string]: any;
        }>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
        forceUpdate(callBack?: (() => void) | undefined): void;
        readonly props: Readonly<{
            [key: string]: any;
        }> & Readonly<{
            children?: React.ReactNode;
        }>;
        state: Readonly<{}>;
        refs: {
            [key: string]: React.ReactInstance;
        };
    };
    contextType?: React.Context<any> | undefined;
};
export default class MoveableManager<T = {}, U = {}> extends React.PureComponent<MoveableManagerProps<T>, MoveableManagerState<U>> {
    static defaultProps: Required<MoveableManagerProps>;
    state: MoveableManagerState<U>;
    targetAbles: Array<Able<T>>;
    controlAbles: Array<Able<T>>;
    controlBox: typeof ControlBoxElement extends new (...args: any[]) => infer K ? K : never;
    areaElement: HTMLElement;
    targetDragger: Dragger;
    controlDragger: Dragger;
    customDragger: CustomDragger;
    render(): JSX.Element;
    componentDidMount(): void;
    componentDidUpdate(prevProps: MoveableManagerProps<T>, prevState: MoveableManagerState<U>): void;
    componentWillUnmount(): void;
    getContainer(): HTMLElement | SVGElement;
    isMoveableElement(target: HTMLElement): boolean;
    dragStart(e: MouseEvent | TouchEvent): void;
    isInside(clientX: number, clientY: number): boolean;
    updateRect(type?: "Start" | "" | "End", isTarget?: boolean, isSetState?: boolean): void;
    updateEvent(prevProps: MoveableManagerProps<T>): void;
    updateTarget(type?: "Start" | "" | "End"): void;
    checkUpdate(): void;
    triggerEvent(name: string, e: any): any;
    protected unsetAbles(): void;
    protected updateAbles(ables?: Able[], eventAffix?: string): void;
    protected updateState(nextState: any, isSetState?: boolean): void;
    protected renderAbles(): any[];
}
export {};
