import type { TreeColumnsLayoutDescriptor } from "./buildTreeColumnsLayoutDescriptor";
export type BalancedTreeColumnsLayoutInput = {
    descriptor: TreeColumnsLayoutDescriptor;
    availableWidth: number;
    availableHeight: number;
    viewportWidth: number;
    viewportHeight: number;
    referenceWidth: number;
};
export type BalancedTreeColumnsLayout = {
    columnCount: number;
    rowCount: number;
    width: number;
    minWidth: number;
    maxHeight: number;
    placements: readonly TreeColumnPlacement[];
};
/** Явная 1-based CSS-grid координата строки с неизменным option index. */
export type TreeColumnPlacement = {
    column: number;
    row: number;
};
/** Результат одной симуляции packing для заданной логической высоты колонки. */
export type ResolvedTreeColumnsPlacements = {
    placements: TreeColumnPlacement[];
    usedColumnCount: number;
    intentionalGapCount: number;
};
/**
 * Симулирует CSS-grid packing и сохраняет DOM preorder через явные координаты.
 *
 * Намеренный перенос оставляет хвост предыдущей колонки пустым: последующие
 * группы не заполняют gap, поэтому визуальная последовательность не расходится
 * с option indexes, refs и keyboard navigation.
 */
export declare function resolveTreeColumnsPlacements(descriptor: TreeColumnsLayoutDescriptor, rowCount: number): ResolvedTreeColumnsPlacements;
/**
 * Выбирает количество колонок по фактически доступной Floating UI геометрии.
 * Для каждого candidate сначала выполняется group-aware packing. Если переносы
 * по трёхстрочному порогу создали лишнюю колонку, её высота увеличивается до
 * тех пор, пока placements не попадут в объявленный template grid.
 */
export declare function resolveBalancedTreeColumnsLayout({ descriptor, availableWidth, availableHeight, viewportWidth, viewportHeight, referenceWidth }: BalancedTreeColumnsLayoutInput): BalancedTreeColumnsLayout;
//# sourceMappingURL=resolveBalancedTreeColumnsLayout.d.ts.map