import { Controller, type ElementPart, type HTMLTemplateResult, type PartInfo, type ReactiveElement } from '@a11d/lit';
import type { DataGrid } from './DataGrid.js';
import type { DataRecord } from './DataRecord.js';
export declare enum ReorderabilityState {
Idle = "idle",
Dragging = "dragging",
DropBefore = "drop-before",
DropAfter = "drop-after"
}
type ReorderabilityControllerItemDirectiveOptions = {
readonly index: number;
readonly disabled?: boolean;
readonly dragImage?: HTMLTemplateResult;
};
export declare class ReorderabilityController extends Controller {
readonly host: ReactiveElement;
readonly options: {
handleReorder?: (source: number, destination: number) => void;
};
constructor(host: ReactiveElement, options: {
handleReorder?: (source: number, destination: number) => void;
});
private readonly items;
private draggingItem?;
get item(): (options: ReorderabilityControllerItemDirectiveOptions) => import("lit-html/directive.js").DirectiveResult<{
new (partInfo: PartInfo): {
host?: HTMLElement;
part?: ElementPart;
options?: ReorderabilityControllerItemDirectiveOptions;
render(options: ReorderabilityControllerItemDirectiveOptions): symbol;
update(part: ElementPart, [options]: [ReorderabilityControllerItemDirectiveOptions]): symbol;
get state(): ReorderabilityState;
disconnected(): void;
reconnected(): void;
addEventListeners(): void;
removeEventListeners(): void;
isConnected: boolean;
_$initialize(part: import("lit-html").Part, parent: import("lit-html").Disconnectable, attributeIndex: number | undefined): void;
setValue(value: unknown): void;
get _$isConnected(): boolean;
};
}>;
handleEvent(e: DragEvent): void;
private handleDragStart;
private handleDropOver;
private handleDrop;
private handleDragEnd;
protected handleReorder(source: number, destination: number): void;
}
export type DataGridReorderChange = {
readonly type: 'move' | 'shift';
readonly record: DataRecord;
readonly oldIndex: number;
};
export declare class DataGridReorderabilityController extends ReorderabilityController {
readonly host: DataGrid;
constructor(host: DataGrid);
get visible(): boolean | undefined;
get enabled(): boolean | undefined;
reorder(source: number, destination: number): void;
protected handleReorder(source: number, destination: number): void;
}
export {};
//# sourceMappingURL=DataGridReorderabilityController.d.ts.map