import type { RepeaterGridDropTarget, RepeaterGridPlacement } from '../../../../../blocks/src/index';
type Brand<TValue, TBrand extends string> = TValue & {
    readonly __brand: TBrand;
};
export type GridColumns = Brand<number, 'GridColumns'>;
export type LayoutGridDragState = {
    kind: 'idle';
} | {
    kind: 'dragging';
    activeId: string;
};
export type LayoutGridMoveIntent = {
    kind: 'none';
    reason: 'idle' | 'missing-over' | 'unknown-target' | 'invalid-target' | 'missing-active-placement' | 'same-position';
} | {
    kind: 'move';
    activeId: string;
    toRow: number;
    toColStart: number;
    swapWithId?: string;
};
export declare function toGridColumns(value: number): GridColumns;
export declare function createIdleLayoutGridDragState(): LayoutGridDragState;
export declare function createDraggingLayoutGridDragState(activeId: unknown): LayoutGridDragState;
export declare function getActiveLayoutGridDragId(dragState: LayoutGridDragState): string | null;
export declare function resolveLayoutGridMoveIntent(input: {
    dragState: LayoutGridDragState;
    overId: string | null;
    dropTargetsById: ReadonlyMap<string, RepeaterGridDropTarget>;
    itemDropTargetsById: ReadonlyMap<string, RepeaterGridDropTarget>;
    placementsById: ReadonlyMap<string, RepeaterGridPlacement>;
}): LayoutGridMoveIntent;
export declare function buildLayoutGridOccupiedCells(placements: readonly RepeaterGridPlacement[], columns: GridColumns): Set<number>;
export {};
