/**
 * Copyright 2023 Kapeta Inc.
 * SPDX-License-Identifier: MIT
 */
import React from 'react';
import { DnDContextType } from './DnDContext';
import { DnDDrag } from './DnDDrag';
import { Dimensions } from '@kapeta/schemas';
interface DnDDropProps {
    children: any;
    droppable?: (value: any) => boolean;
    onDrop: (type: string, value: any, dragDimensions: Dimensions) => void;
    onDrag?: (type: string, value: any, dragDimensions: Dimensions) => void;
    type: string | string[];
}
interface DnDDropState {
    dragging: boolean;
    hovering: boolean;
}
export declare class DnDDrop extends React.Component<DnDDropProps, DnDDropState> {
    static contextType: React.Context<import("./DnDContext").DnDContextData>;
    context: React.ContextType<DnDContextType>;
    private elm;
    constructor(props: DnDDropProps);
    matchesType(drag: DnDDrag): boolean;
    componentDidMount(): void;
    componentWillUnmount(): void;
    private getDimensionsForElement;
    onDragStart(drag: DnDDrag): void;
    onDragEnd(dimensions: Dimensions, dragRect: ClientRect, drag: DnDDrag): boolean;
    onDragMove(dimensions: Dimensions, dragRect: ClientRect, drag: DnDDrag): boolean;
    clearMoveState(): void;
    clearState(): void;
    render(): React.JSX.Element;
}
export {};
