import { IEventEmitter } from '@breadstone/mosaik-elements';
import type { IDropZoneDataEventDetail } from '../../../events';
import { DropZoneState } from '../../../Types/DropZoneState';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IDropZoneElementProps } from './IDropZoneElementProps';
declare const DropZoneElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * DropZoneElement - An interactive component that defines a target area for drag-and-drop operations.
 *
 * @description
 * The DropZoneElement provides a designated area within the interface where users can drop draggable items.
 * It is commonly used in applications that require file uploads, reordering of elements, or custom drag-and-drop
 * interactions. By offering a clear and accessible drop target, this component helps improve usability and
 * guides users through intuitive drag-and-drop workflows.
 *
 * DropZoneElement can be styled and configured to visually indicate when a draggable item is hovering over it,
 * and it can emit events to notify the application when an item has been dropped. This makes it a flexible
 * building block for implementing custom drag-and-drop experiences across web and application interfaces.
 *
 * @element mosaik-drop-zone
 * @category Interaction
 *
 * @fires dropZoneData {DropZoneDataEvent} - Fired when data is transferred to the drop zone.
 *
 * @slot - The default slot for content displayed inside the drop zone.
 *
 * @example
 * ```html
 * <mosaik-drop-zone>
 *   <p>Drag files here to upload</p>
 * </mosaik-drop-zone>
 * ```
 *
 * @public
 */
export declare class DropZoneElement extends DropZoneElement_base implements IDropZoneElementProps {
    private readonly _dropZoneData;
    private _dragSubscription;
    private _dragOverSubscription;
    private _dragStartSubscription;
    private _dragEndSubscription;
    private _dragEnterSubscription;
    private _dragLeaveSubscription;
    private _dropSubscription;
    private _state;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `state` property.
     *
     * @readonly
     * @attr
     */
    get state(): DropZoneState;
    private set state(value);
    /**
     * Called when the data is transferred to the drop zone.
     * Provides reference to `{@link IDropZoneDataEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get dropZoneData(): IEventEmitter<IDropZoneDataEventDetail>;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    disconnectedCallback(): void;
    /**
     * Emits the {@link dropZoneData} event.
     *
     * @protected
     */
    protected onDropZoneData(args: IDropZoneDataEventDetail): void;
    /**
     * @protected
     */
    protected onDrag(event: DragEvent): void;
    /**
     * @protected
     */
    protected onDragOver(event: DragEvent): void;
    /**
     * @protected
     */
    protected onDragStart(event: DragEvent): void;
    /**
     * @protected
     */
    protected onDragEnd(event: DragEvent): void;
    /**
     * @protected
     */
    protected onDragEnter(event: DragEvent): void;
    /**
     * @protected
     */
    protected onDragLeave(event: DragEvent): void;
    /**
     * @protected
     */
    protected onDrop(event: DragEvent): void;
}
/**
 * @public
 */
export declare namespace DropZoneElement {
    type Props = IDropZoneElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-drop-zone': DropZoneElement;
    }
}
export {};
//# sourceMappingURL=DropZoneElement.d.ts.map