import { ControllerBase, type ControllerHost } from '../../Controls/Controllers/Abstracts/ControllerBase';
import type { DragRef } from '../Core/DragRef';
import { type DropListRef } from '../Core/DropListRef';
import type { IDropListRefConfig } from '../Core/Types';
/**
 * Lit Reactive Controller for drop list functionality.
 * Wraps DropListRef to integrate with Lit components.
 *
 * @public
 */
export declare class DropListController<TData = unknown, TItem = any> extends ControllerBase {
    private _dropListRef;
    private _config;
    private _initialized;
    private readonly _listeners;
    private _groupController;
    constructor(host: ControllerHost, config?: IDropListRefConfig);
    /**
     * Called when the host connects to the DOM.
     *
     * @public
     * @override
     */
    hostConnected(): void;
    /**
     * Called when the host disconnects from the DOM.
     *
     * @public
     * @override
     */
    hostDisconnected(): void;
    /**
     * Get the underlying DropListRef.
     *
     * @public
     */
    get dropListRef(): DropListRef<TData, TItem> | null;
    /**
     * Get/set disabled state.
     *
     * @public
     */
    get disabled(): boolean;
    set disabled(value: boolean);
    /**
     * Get/set orientation.
     *
     * @public
     */
    get orientation(): 'horizontal' | 'vertical' | 'mixed';
    set orientation(value: 'horizontal' | 'vertical' | 'mixed');
    /**
     * Get/set associated data.
     *
     * @public
     */
    get data(): TData | undefined;
    set data(value: TData | undefined);
    /**
     * Get items.
     *
     * @public
     */
    get items(): ReadonlyArray<DragRef<TItem>>;
    /**
     * Get ID.
     *
     * @public
     */
    get id(): string;
    /**
     * Update configuration.
     *
     * @param config - New configuration.
     *
     * @public
     */
    updateConfig(config: Partial<IDropListRefConfig>): void;
    /**
     * Set items in the list.
     *
     * @param items - Drag items.
     *
     * @public
     */
    withItems(items: Array<DragRef<TItem>>): void;
    /**
     * Connect to other drop lists.
     *
     * @param lists - Connected lists.
     *
     * @public
     */
    connectTo(lists: Array<DropListRef<unknown, TItem>>): void;
    /**
     * Connect to other drop list controllers.
     *
     * @param controllers - Connected controllers.
     *
     * @public
     */
    connectToControllers(controllers: Array<DropListController<unknown, TItem>>): void;
    /**
     * Initialize the controller.
     *
     * @private
     */
    private _initialize;
    /**
     * Register with parent drop list group (if any).
     *
     * @private
     */
    private _registerWithGroup;
    /**
     * Set up event forwarding from DropListRef to host.
     *
     * @private
     */
    private _setupEventForwarding;
    /**
     * Add an event listener and track it for cleanup.
     *
     * @param type - Event type.
     * @param handler - Event handler.
     *
     * @private
     */
    private _addListener;
    /**
     * Cleanup resources.
     *
     * @private
     */
    private _cleanup;
}
//# sourceMappingURL=DropListController.d.ts.map