import * as React from "react";
import Dragger from "@daybrush/drag";
import { MoveableManagerProps, MoveableManagerState, Able, RectInfo, Requester, HitRect } from "./types";
import { IObject } from "@daybrush/utils";
export default class MoveableManager<T = {}> extends React.PureComponent<MoveableManagerProps<T>, MoveableManagerState> {
    static defaultProps: Required<MoveableManagerProps>;
    state: MoveableManagerState;
    targetAbles: Able[];
    controlAbles: Able[];
    controlBox: {
        getElement(): HTMLElement;
    };
    areaElement: HTMLElement;
    targetDragger: Dragger;
    controlDragger: Dragger;
    rotation: number;
    scale: number[];
    isUnmounted: boolean;
    render(): JSX.Element;
    componentDidMount(): void;
    componentDidUpdate(prevProps: MoveableManagerProps): void;
    componentWillUnmount(): void;
    getContainer(): HTMLElement | SVGElement;
    isMoveableElement(target: Element): boolean;
    dragStart(e: MouseEvent | TouchEvent): this;
    hitTest(el: Element | HitRect): number;
    isInside(clientX: number, clientY: number): boolean;
    updateRect(type?: "Start" | "" | "End", isTarget?: boolean, isSetState?: boolean): void;
    updateEvent(prevProps: MoveableManagerProps): void;
    isDragging(): boolean;
    updateTarget(type?: "Start" | "" | "End"): void;
    getRect(): RectInfo;
    getRotation(): number;
    request(ableName: string, param?: IObject<any>, isInstant?: boolean): Requester;
    destroy(): void;
    updateRenderPoses(): 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 getEnabledAbles(): Able<IObject<any>, IObject<any>>[];
    protected renderAbles(): any[];
    protected updateCheckInput(): void;
}
