/** * expandedIds is the single source of truth for "open nodes", same model * as the Sidebar's expandedItems: a plain Set of ids, with expand/collapse * no-ops guarded so an already-open (or already-closed) node doesn't * trigger a re-render. Supports both controlled (`controlledIds` + * `onChange`, mirroring the Sidebar's activeLink-driven expansion) and * uncontrolled usage. */ export declare function useTreeExpansion(defaultExpandedIds?: string[], controlledIds?: string[], onChange?: (ids: string[]) => void): { expandedIds: Set; setExpandedIds: (ids: string[]) => void; expand: (id: string) => void; collapse: (id: string) => void; toggle: (id: string) => void; expandAll: (ids: string[]) => void; collapseAll: () => void; isExpanded: (id: string) => boolean; };