type DescendantOptions = T & { /** * If `true`, the item will be registered in all nodes map * but omitted from enabled nodes map */ disabled?: boolean; /** * The id of the item */ id?: string; }; type Descendant = DescendantOptions & { /** * DOM element of the item */ node: T; /** * index of item in all nodes map and enabled nodes map */ index: number; }; /** * @internal * * Class to manage descendants and their relative indices in the DOM. * It uses `node.compareDocumentPosition(...)` under the hood */ declare class DescendantsManager = {}> { private descendants; register: (nodeOrOptions: T | null | DescendantOptions) => void | ((node: T | null) => void); unregister: (node: T) => void; destroy: () => void; private assignIndex; count: () => number; enabledCount: () => number; values: () => Descendant[]; enabledValues: () => Descendant[]; item: (index: number) => Descendant | undefined; enabledItem: (index: number) => Descendant | undefined; first: () => Descendant | undefined; firstEnabled: () => Descendant | undefined; last: () => Descendant | undefined; lastEnabled: () => Descendant | undefined; indexOf: (node: T | null) => number; enabledIndexOf: (node: T | null) => number; next: (index: number, loop?: boolean) => Descendant | undefined; nextEnabled: (index: number, loop?: boolean) => Descendant | undefined; prev: (index: number, loop?: boolean) => Descendant | undefined; prevEnabled: (index: number, loop?: boolean) => Descendant | undefined; private registerNode; } export { Descendant, DescendantOptions, DescendantsManager };