import * as React from 'react';
import { InlineCombinatorProps, QueryBuilderContextProviderProps, RuleProps, RuleGroupProps } from 'react-querybuilder';
import * as react_dnd_html5_backend from 'react-dnd-html5-backend';
import * as react_dnd from 'react-dnd';

declare const InlineCombinatorDnD: {
    ({ component: CombinatorSelectorComponent, path, independentCombinators, ...props }: InlineCombinatorProps): React.JSX.Element;
    displayName: string;
};

type UseReactDnD = typeof react_dnd & typeof react_dnd_html5_backend;
type QueryBuilderDndProps = QueryBuilderContextProviderProps & {
    /**
     * Provide this prop if `enableDragAndDrop` is `true` for the child element and
     * you want the component to render immediately with drag-and-drop enabled.
     * Otherwise, the component will asynchronously load `react-dnd` and
     * `react-dnd-html5-backend` and drag-and-drop features will only be enabled
     * once those packages have loaded.
     */
    dnd?: UseReactDnD;
};

declare const QueryBuilderDnD: {
    (props: QueryBuilderDndProps): React.JSX.Element;
    displayName: string;
};
declare const QueryBuilderDndWithoutProvider: {
    (props: QueryBuilderDndProps): React.JSX.Element;
    displayName: string;
};

declare const RuleDnD: {
    (props: RuleProps): React.JSX.Element;
    displayName: string;
};

declare const RuleGroupDnD: {
    (props: RuleGroupProps): React.JSX.Element;
    displayName: string;
};

export { InlineCombinatorDnD, QueryBuilderDnD, QueryBuilderDndWithoutProvider, RuleDnD, RuleGroupDnD };
