import type { Row as TanStackRow, Table as TanStackTable } from '@tanstack/table-core'; import { type TableNode, type TableRecord, type TableSetRecordHierarchyOptions } from '../types'; /** * Manages the expanded/collapsed state of rows in the table. * * We must track the expansion state separately from TanStack because: * 1. TanStack does not support having a different initial expansion state per row unless explicitly * specified for each row by ID. This causes problems in the nimble-table because we could have * a different initial expansion state for group rows, parent rows, and parent rows with delay-loaded * children. * 2. TanStack does not remove entries from its expanded state when those rows are no longer present * in the data. This is not ideal because the object maintaining the expansion state can grow unbounded. */ export declare class ExpansionManager { private readonly tanStackTable; private explicitExpansionStates; private hierarchyOptions; private isHierarchyEnabled; private parentRowsWithChildren; constructor(tanStackTable: TanStackTable>); isRowExpanded(row: TanStackRow>): boolean; toggleRowExpansion(row: TanStackRow>): void; collapseAll(): void; resetExpansionState(): void; resetHierarchyOptions(): void; processDataUpdate(rows: TanStackRow>[]): void; setHierarchyOptions(hierarchyOptions: TableSetRecordHierarchyOptions[]): void; isRowExpandable(row: TanStackRow>): boolean; setHierarchyEnabled(isHierarchyEnabled: boolean): void; isLoadingChildren(id: string): boolean; private canLoadDelayedChildren; private getDefaultExpansionState; }