import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSPasteboardWriting } from "./NSPasteboardWriting.js";
import type { CGRect } from "../structs/CGRect.js";
export declare class _NSDraggingItem extends _NSObject {
    static alloc(): _NSDraggingItem;
    static new(): _NSDraggingItem;
    init(): _NSDraggingItem;
    /**
     * The designated initializer. When creating an NSDraggingItem the pasteboardWriter must implement the NSPasteboardWriting protocol.
     */
    initWithPasteboardWriter$(pasteboardWriter: _NSPasteboardWriting): _NSDraggingItem;
    /**
     * Alternate single image component setter. This method simplifies modifiying the components of an NSDraggingItem when there is only one component. This method will set the draggingFrame and imageComponentsProvider properties. frame is in the same coordinate space that the draggingFrame property is. To hide this item, set contents to nil.
     */
    setDraggingFrame$contents$(frame: CGRect, contents: NobjcObject | null): void;
    /**
     * When you create an NSDraggingItem, item is the pasteboardWriter passed to initWithPasteboardWriter. However, when enumerating dragging items in an NSDraggingSession or NSDraggingInfo object, item is not the original pasteboardWriter. It is an instance of one of the classes provided to the enumeration method.
     */
    item(): NobjcObject;
    /**
     * The dragging frame that provides the spatial relationship between NSDraggingItems in the NSDraggingFormationNone. Note: The exact coordinate space of this rect depends on where it is used. See NSDraggingSession and NSDraggingInfo.
     */
    draggingFrame(): CGRect;
    setDraggingFrame$(value: CGRect): void;
    /**
     * The dragging image is the composite of an array of NSDraggingImageComponents. The dragging image components may not be set directly. Instead, provide a block to generate the components and the block will be called if necessary. The block may be set to nil, meaning that this drag item has no image. Generally, only dragging destinations do this, and only if there is at least one valid item in the drop, and this is not it. The components are composited in painting order. That is, each component in the array is painted on top of the previous components in the array.
     */
    imageComponentsProvider(): (() => _NSArray) | null;
    setImageComponentsProvider$(value: (() => _NSArray) | null): void;
    /**
     * An array of NSDraggingImageComponents that are used to create the drag image. Note: the array contains copies of the components. Changes made to these copies are not reflected in the drag. If needed, the imageComponentsProvider block is called to generate the image components.
     */
    imageComponents(): _NSArray | null;
}
