import { ReactiveController, ReactiveElement } from 'lit'; export type DraggableItem = HTMLElement & { bpDraggableItem?: 'item' | 'dropzone'; }; export declare function draggableList(fn?: (host: T) => DraggableListControllerConfig): (target: typeof ReactiveElement, _context?: ClassDecoratorContext) => void; export interface DraggableListControllerConfig { layout?: 'both' | 'horizontal' | 'vertical'; items?: NodeListOf | DraggableItem[]; dropZones?: NodeListOf | DraggableItem[]; manageFocus?: boolean; manageTabindex?: boolean; } export interface BpDraggableChangeEvent { source?: HTMLElement | null | undefined; target?: HTMLElement | null | undefined; type: BpDraggableChangeType; interaction?: BpDraggableInteractionType; } export type BpDraggableChangeType = 'start' | 'drag' | 'over' | 'drop' | 'enter' | 'leave' | 'end'; export type BpDraggableInteractionType = 'pointer' | 'key'; export declare class DraggableListController implements ReactiveController { #private; private host; private fn; constructor(host: T, fn: (host: T) => DraggableListControllerConfig); hostConnected(): Promise; hostDisconnected(): void; }