import { TypeColumn } from '../../types.js'; export type AllocateColumnWidthsArgs = { /** Visible columns in rendered order. */ columns: readonly TypeColumn[]; /** Width available to the rendered columns, normally the body viewport. */ availableWidth: number; /** * Widths resolved by the caller before flex allocation, such as manual, * autosized, or deterministic fallback widths. */ preferredWidths?: Readonly>; /** * Grid-owned flex values. A numeric value replaces `defaultFlex`; `null` * explicitly converts an uncontrolled flex column to fixed sizing. The * controlled `column.flex` value always remains authoritative. */ preferredFlexes?: Readonly>; defaultWidth?: number; defaultMinWidth?: number; }; export type ColumnWidthAllocation = { widths: Record; flexWeights: Record; totalWidth: number; /** Positive only when max-width constraints leave viewport space unused. */ unallocatedWidth: number; }; /** * Allocates the available viewport width using Inovua-style sizing rules. * * A positive controlled `column.width` is fixed and authoritative. Remaining * fixed columns use `preferredWidths`, `defaultWidth`, or the configured * fallback. Columns without a controlled width and with a positive * `flex`/`defaultFlex` share the remaining space. Flex columns that hit a * min/max bound are removed from the pool before the rest is redistributed. * Rounding follows rendered column order, with the final flex column absorbing * the remaining pixel. */ export declare function allocateColumnWidths({ columns, availableWidth, preferredWidths, preferredFlexes, defaultWidth, defaultMinWidth, }: AllocateColumnWidthsArgs): ColumnWidthAllocation; //# sourceMappingURL=columnSizing.d.ts.map