import type { _NSDraggingInfo } from "./NSDraggingInfo.js";
import type { NSDragOperation } from "./NSDragOperation.js";
export interface _NSDraggingDestination {
    draggingEntered$?(sender: _NSDraggingInfo): NSDragOperation;
    draggingUpdated$?(sender: _NSDraggingInfo): NSDragOperation;
    /**
     * - (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender NS_SWIFT_UI_ACTOR; if the destination responded to draggingEntered: but not to draggingUpdated: the return value from draggingEntered: is used
     */
    draggingExited$?(sender: _NSDraggingInfo | null): void;
    prepareForDragOperation$?(sender: _NSDraggingInfo): boolean;
    performDragOperation$?(sender: _NSDraggingInfo): boolean;
    concludeDragOperation$?(sender: _NSDraggingInfo | null): void;
    /** draggingEnded: is implemented as of Mac OS 10.5 */
    draggingEnded$?(sender: _NSDraggingInfo): void;
    /**
     * the receiver of -wantsPeriodicDraggingUpdates should return NO if it does not require periodic -draggingUpdated messages (eg. not autoscrolling or otherwise dependent on draggingUpdated: sent while mouse is stationary)
     */
    wantsPeriodicDraggingUpdates?(): boolean;
    /**
     * While a destination may change the dragging images at any time, it is recommended to wait until this method is called before updating the dragging image. This allows the system to delay changing the dragging images until it is likely that the user will drop on this destination. Otherwise, the dragging images will change too often during the drag which would be distracting to the user. The destination may update the dragging images by calling one of the -enumerateDraggingItems methods on the sender.
     */
    updateDraggingItemsForDrag$?(sender: _NSDraggingInfo | null): void;
}
