import { ActionMoveBase, FiltersMap } from '@wix/bex-core';
import { OptimisticPatch } from '@wix/bex-core/dist/types/state/CollectionOptimisticPatch';
import { DragAndDropCollection, DragAndDropParentState } from './DragAndDropState';
export interface CollectionDragAndDropBIParams<T, F extends FiltersMap> {
    state: DragAndDropParentState<T, F>;
    collection: DragAndDropCollection<F>;
    getCollectionSnapshot?: () => {
        [key: string]: string | number | undefined;
    };
    getBulkSelectCount: () => number;
    getPendingMovePatchesCount: () => number | null | undefined;
}
export declare class CollectionDragAndDropBI<T, F extends FiltersMap> {
    readonly state: DragAndDropParentState<T, F>;
    readonly collection: DragAndDropCollection<F>;
    readonly getCollectionSnapshot: (() => {
        [key: string]: string | number | undefined;
    }) | undefined;
    readonly getBulkSelectCount: () => number;
    readonly getPendingMovePatchesCount: () => number | null | undefined;
    startTime: number;
    constructor(params: CollectionDragAndDropBIParams<T, F>);
    get dnd(): import("./DragAndDropState").DragAndDropState<T, F> | null | undefined;
    get reportBi(): import("@wix/bex-core").ReportBI;
    onAttemptDragStart: (itemId: string) => () => void;
    onDragStart(): ((params: {
        endType?: 'clicked ESC' | 'drop outside' | null;
    }) => void) | undefined;
    onMoveFailure(params: {
        reason: 'Update failed' | 'Window closed' | 'Left page';
        patches: OptimisticPatch<T>[];
    }): void;
    onMoveCancelled(move: ActionMoveBase<T>): void;
    onMoveRetry(params: {
        patches: OptimisticPatch<T>[];
    }): void;
}
//# sourceMappingURL=CollectionDragAndDropBI.d.ts.map