export type RepeaterGridBreakpoint = 'base' | 'sm' | 'md' | 'lg' | 'xl';
export type RepeaterGridColumnsFieldBindings = {
    base?: string;
    sm?: string;
    md?: string;
    lg: string;
    xl?: string;
};
export type RepeaterGridItemInput = {
    id: string;
    span: number;
    row: number;
    colStart: number;
};
export type RepeaterGridPlacement = {
    id: string;
    sourceIndex: number;
    span: number;
    row: number;
    colStart: number;
    colEnd: number;
    startCell: number;
};
export type RepeaterGridLayout = {
    columns: number;
    maxRows?: number;
    capacityCells?: number;
    maxRowUsed: number;
    overCapacity: boolean;
    hasCollisions: boolean;
    placements: RepeaterGridPlacement[];
    byId: Record<string, RepeaterGridPlacement>;
};
export type RepeaterGridDropTarget = {
    id: string;
    row: number;
    colStart: number;
    cell: number;
    valid: boolean;
    swapWithId?: string;
};
export type BuildRepeaterGridDropTargetsInput = {
    items: RepeaterGridItemInput[];
    draggedId: string;
    columns: number;
    maxRows?: number;
    rowsToRender?: number;
};
export type RepeaterGridSpanFieldOptions = {
    id?: string;
    label?: string;
    description?: string;
    defaultSpan?: number;
};
export type RepeaterGridRowFieldOptions = {
    id?: string;
    label?: string;
    description?: string;
    defaultRow?: number;
};
export type RepeaterGridColumnFieldOptions = {
    id?: string;
    label?: string;
    description?: string;
    defaultColumn?: number;
};
export type RepeaterGridSpanFieldDefinition = {
    id: string;
    type: 'select';
    label: string;
    description: string;
    options: Array<{
        value: string;
        label: string;
    }>;
    defaultValue: string;
};
export type RepeaterGridPositionFieldDefinition = {
    id: string;
    type: 'number';
    label: string;
    description: string;
    defaultValue: number;
    ui: {
        hidden: true;
    };
};
export type RepeaterGridCellCoordinate = {
    row: number;
    colStart: number;
};
export declare const DEFAULT_REPEATER_GRID_SPAN_FIELD_ID = "gridSpan";
export declare const DEFAULT_REPEATER_GRID_ROW_FIELD_ID = "gridRow";
export declare const DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID = "gridColumn";
export declare function resolveRepeaterGridSpanFieldId(options?: RepeaterGridSpanFieldOptions): string;
export declare function resolveRepeaterGridRowFieldId(options?: RepeaterGridRowFieldOptions): string;
export declare function resolveRepeaterGridColumnFieldId(options?: RepeaterGridColumnFieldOptions): string;
export declare function resolveRepeaterGridBreakpointForWidth(width: number): RepeaterGridBreakpoint;
export declare function createRepeaterGridSpanField(options?: RepeaterGridSpanFieldOptions): RepeaterGridSpanFieldDefinition;
export declare function createRepeaterGridRowField(options?: RepeaterGridRowFieldOptions): RepeaterGridPositionFieldDefinition;
export declare function createRepeaterGridColumnField(options?: RepeaterGridColumnFieldOptions): RepeaterGridPositionFieldDefinition;
export declare function withRepeaterGridSpanField<TField extends {
    id: string;
}>(fields: readonly TField[], options?: RepeaterGridSpanFieldOptions): Array<TField | RepeaterGridSpanFieldDefinition>;
export declare function withRepeaterGridPositionFields<TField extends {
    id: string;
}>(fields: readonly TField[], options?: {
    row?: RepeaterGridRowFieldOptions;
    column?: RepeaterGridColumnFieldOptions;
}): Array<TField | RepeaterGridPositionFieldDefinition>;
export declare function withRepeaterGridSpanFieldOnItemTypes<TItemType extends {
    fields: Array<{
        id: string;
    }>;
}>(itemTypes: Readonly<Record<string, TItemType>>, options?: RepeaterGridSpanFieldOptions): Record<string, TItemType & {
    fields: Array<{
        id: string;
    }>;
}>;
export declare function withRepeaterGridPositionFieldsOnItemTypes<TItemType extends {
    fields: Array<{
        id: string;
    }>;
}>(itemTypes: Readonly<Record<string, TItemType>>, options?: {
    row?: RepeaterGridRowFieldOptions;
    column?: RepeaterGridColumnFieldOptions;
}): Record<string, TItemType & {
    fields: Array<{
        id: string;
    }>;
}>;
export declare function normalizeRepeaterGridColumns(value: unknown): number;
export declare function normalizeRepeaterGridRow(value: unknown): number;
export declare function resolveRepeaterGridColumnsForBreakpoint(values: Record<string, unknown>, bindings: RepeaterGridColumnsFieldBindings, breakpoint: RepeaterGridBreakpoint): number;
export declare function normalizeRepeaterGridSpan(value: unknown, activeColumns: number): number;
export declare function normalizeRepeaterGridColStart(value: unknown, activeColumns: number, span: number): number;
export declare function deriveRepeaterGridMaxRowsForBreakpoint(input: {
    desktopColumns: number;
    desktopMaxRows?: number;
    activeColumns: number;
}): number | undefined;
export declare function buildRepeaterGridLayout(input: {
    items: RepeaterGridItemInput[];
    columns: number;
    maxRows?: number;
}): RepeaterGridLayout;
export declare function findFirstAvailableRepeaterGridPlacement(input: {
    items: RepeaterGridItemInput[];
    newItemSpan: unknown;
    columns: number;
    maxRows?: number;
}): RepeaterGridCellCoordinate | null;
export declare function canAppendRepeaterGridItem(input: {
    items: RepeaterGridItemInput[];
    newItemSpan: unknown;
    columns: number;
    maxRows?: number;
}): boolean;
export declare function buildRepeaterGridDropTargets(input: BuildRepeaterGridDropTargetsInput): RepeaterGridDropTarget[];
