import { DragDropCore, IElement, IPanel, ISurveyElement, JsonObject, PageModel, QuestionRowModel } from "survey-core";
import { IQuestionToolboxItem } from "./toolbox";
import { SurveyElementAdornerBase } from "./components/survey-element-adorner-base";
import { DropIndicatorPosition } from "./drag-drop-enums";
export declare function calculateIsEdge(dropTargetNode: HTMLElement, clientY: number): boolean;
export declare function calculateIsSide(dropTargetNode: HTMLElement, clientX: number): boolean;
export declare function calculateDragOverLocation(clientX: number, clientY: number, rect: DOMRectInit, direction?: "top-bottom" | "left-right"): DropIndicatorPosition;
export declare class DragDropSurveyElements extends DragDropCore<any> {
    static newGhostPage: PageModel;
    static restrictDragQuestionBetweenPages: boolean;
    static edgeHeight: number;
    static nestedPanelDepth: number;
    static ghostSurveyElementName: string;
    insideElement: any;
    protected prevIsEdge: any;
    protected dragOverIndicatorElement: any;
    protected dragOverLocation: DropIndicatorPosition;
    protected get draggedElementAdorner(): SurveyElementAdornerBase | null;
    protected get dropTargetAdorner(): SurveyElementAdornerBase | null;
    protected get draggedElementType(): string;
    protected isDraggedElementSelected: boolean;
    onGetMaxNestedPanels: () => number;
    onDragOverLocationCalculating: (options: any) => void;
    get maxNestedPanels(): number;
    startDragToolboxItem(event: PointerEvent, draggedElementJson: JsonObject, toolboxItemModel: IQuestionToolboxItem): void;
    startDragSurveyElement(event: PointerEvent, draggedElement: any, isElementSelected?: boolean): void;
    protected getShortcutText(draggedElement: any): string;
    protected createDraggedElementShortcut(text: string, draggedElementNode?: HTMLElement, event?: PointerEvent): HTMLElement;
    protected createDraggedElementIcon(): HTMLElement;
    protected getDraggedElementClass(): string;
    protected createElementFromJson(json: object): HTMLElement;
    private createNewElement;
    private isPanelDynamic;
    protected findDropTargetNodeByDragOverNode(dragOverNode: HTMLElement): HTMLElement;
    protected getDropTargetByDataAttributeValue(dataAttributeValue: string, dropTargetNode: HTMLElement, event: PointerEvent): any;
    protected isDropTargetValid(dropTarget: any, dropTargetNode?: HTMLElement, dragOverLocation?: DropIndicatorPosition): boolean;
    private getMaximumNestedPanelCount;
    protected doBanDropHere: () => void;
    private shouldRestricDragQuestionBetweenPages;
    protected findDeepestDropTargetChild(parent: HTMLElement): HTMLElement;
    private isAllowDragOver;
    dragOverCore(dropTarget: ISurveyElement, dragOverLocation: DropIndicatorPosition): void;
    private dragDropFindRow;
    private isSameElement;
    private isDragInsideItself;
    private getDragDropElementType;
    dragOver(event: PointerEvent): void;
    protected onStartDrag(): void;
    moveElementInPanel(panel: IPanel, src: IElement, target: IElement, targetIndex: number): void;
    protected doDrop: () => any;
    private removeDragOverMarker;
    clear(): void;
    private getTargetParent;
    protected getTargetRow(dropTarget: any): QuestionRowModel;
}
