import ColumnDef, { Accessor } from "../types/ColumnDef"; import { PinnedSectionsState } from "../types/PinnedSectionsState"; import { PanelSection } from "../types/PanelSection"; export type { PinnedSectionsState, PanelSection }; /** Root-level columns only, preserving order within each pin group. */ export declare function partitionRootHeadersByPin(headers: ColumnDef[]): { pinnedLeft: ColumnDef[]; unpinned: ColumnDef[]; pinnedRight: ColumnDef[]; }; export declare function isHeaderEssential(header: ColumnDef, essentialAccessors: ReadonlySet): boolean; /** Accessors for every header with `essential` in the tree (including nested). */ export declare function collectEssentialAccessors(headers: ColumnDef[]): Set; /** Within one sibling list: all essential columns must form a left prefix. */ export declare function hasEssentialPrefixOrder(siblings: ColumnDef[], essentialAccessors: ReadonlySet): boolean; /** Root array mixes pin sections; validate each pin group separately, then recurse into children. */ export declare function validateFullHeaderTreeEssentialOrder(headers: ColumnDef[], essentialAccessors: ReadonlySet): boolean; export declare function getPinnedSectionsState(headers: ColumnDef[]): PinnedSectionsState; /** * Rebuilds root `headers` order and `pinned` flags from section accessor lists. * Clamps essential columns to the left within each section. Returns null if accessors don't match roots. */ export declare function rebuildHeadersFromPinnedState(headers: ColumnDef[], state: PinnedSectionsState, essentialAccessors: ReadonlySet): ColumnDef[] | null; /** * Move a root column to another pin section. * Appends within left/right targets. For `main`, left-pinned columns are inserted at the * start of main; right-pinned (and other) columns are inserted at the end of main. */ export declare function moveRootColumnPinSide(headers: ColumnDef[], accessor: Accessor, target: Exclude | "main", essentialAccessors: ReadonlySet): ColumnDef[] | null;