import DragMoveFoundation, { DragMoveAdapter } from '@douyinfe/semi-foundation/lib/es/dragMove/foundation';
import BaseComponent from '../_base/baseComponent';
import { ReactNode } from 'react';
import PropTypes from 'prop-types';
import React from 'react';
export interface DragMoveProps {
    handler?: () => HTMLElement;
    constrainer?: () => HTMLElement | 'parent';
    children?: ReactNode | undefined | any;
    onMouseDown?: (e: MouseEvent) => void;
    onMouseMove?: (e: MouseEvent) => void;
    onMouseUp?: (e: MouseEvent) => void;
    onTouchStart?: (e: TouchEvent) => void;
    onTouchMove?: (e: TouchEvent) => void;
    onTouchEnd?: (e: TouchEvent) => void;
    onTouchCancel?: (e: TouchEvent) => void;
    allowMove?: (e: MouseEvent | TouchEvent, element: HTMLElement) => boolean;
    customMove?: (e: HTMLElement, top: number, left: number) => void;
}
export default class DragMove extends BaseComponent<DragMoveProps> {
    static propTypes: {
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        handler: PropTypes.Requireable<(...args: any[]) => any>;
        allowInputDrag: PropTypes.Requireable<boolean>;
        constrainNode: PropTypes.Requireable<(...args: any[]) => any>;
        constrainer: PropTypes.Requireable<NonNullable<string | ((...args: any[]) => any)>>;
        allowMove: PropTypes.Requireable<(...args: any[]) => any>;
        customMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
        onTouchStart: PropTypes.Requireable<(...args: any[]) => any>;
        onTouchMove: PropTypes.Requireable<(...args: any[]) => any>;
        onTouchEnd: PropTypes.Requireable<(...args: any[]) => any>;
        onTouchCancel: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static __SemiComponentName__: string;
    static defaultProps: {
        allowInputDrag: boolean;
    };
    constructor(props: DragMoveProps);
    elementRef: React.RefObject<unknown>;
    foundation: DragMoveFoundation;
    get adapter(): DragMoveAdapter<DragMoveProps>;
    componentDidMount(): void;
    componentWillUnmount(): void;
    render(): React.FunctionComponentElement<{
        ref: (node: React.ReactNode) => void;
    }>;
}
