import type { Column, TableState, Table as TanStackTable } from "@tanstack/react-table";
export type BaseTableColumnLayoutItem<TData extends object> = {
    id: string;
    column: Column<TData, unknown>;
    width: string;
};
/**
 * Реактивный срез состояния колонок, от которого зависит физический layout BaseTable.
 *
 * TanStack table instance остаётся стабильным объектом, поэтому BaseTable получает
 * этот срез отдельным prop: React Compiler не должен кэшировать разметку колонок
 * поверх изменившихся order/sizing/pinning/visibility.
 */
export type BaseTableColumnState = Pick<TableState, "columnOrder" | "columnPinning" | "columnSizing" | "columnVisibility">;
/**
 * Публичное состояние закрепления колонок для shared-таблиц.
 *
 * В первой итерации поддерживается только закрепление слева.
 */
export interface TableColumnPinningState {
    /**
     * Идентификаторы колонок, закреплённых слева, в порядке отображения.
     */
    left?: string[];
}
/**
 * Нормализует публичное состояние закрепления к формату TanStack Table.
 *
 * Правая зона принудительно очищается, чтобы не открывать неподдерживаемый API.
 */
export declare function normalizeTableColumnPinning(state?: TableColumnPinningState): {
    left: string[];
    right: string[];
};
/**
 * Возвращает ширину колонки в том же формате, что и colgroup базовой таблицы.
 */
export declare function resolveBaseTableColumnWidth<TData extends object>(column: Column<TData, unknown>, columnSizing?: Readonly<Record<string, number>>): string;
/**
 * Собирает видимые leaf-колонки в фактическом порядке рендера: pinned-left -> center -> pinned-right.
 *
 * В отличие от отдельных TanStack getters, порядок явно строится из одного
 * источника `columnOrder`, поэтому `<colgroup>`, header и body получают один
 * и тот же layout после drag&drop.
 */
export declare function getOrderedVisibleLeafColumns<TData extends object>(table: TanStackTable<TData>, columnState: BaseTableColumnState): Column<TData, unknown>[];
export declare function buildBaseTableColumnLayout<TData extends object>(table: TanStackTable<TData>, columnState: BaseTableColumnState): BaseTableColumnLayoutItem<TData>[];
/**
 * Вычисляет sticky-offset для закреплённых слева колонок.
 *
 * Значения возвращаются как CSS-length, чтобы корректно суммировать `em`, `px` и `calc(...)`.
 */
export declare function getLeftPinnedColumnOffsets<TData extends object>(table: TanStackTable<TData>, columnState: BaseTableColumnState): Readonly<Record<string, string>>;
//# sourceMappingURL=columnPinning.d.ts.map