export type Extractor = (item: T) => Result; export type KeyExtractor = Extractor; export declare class LinkedList> { readonly keyExtractor: KeyExtractor; private isStrictOrder$; private map; items$: LinkedSubList; private renovation$; constructor(keyExtractor: KeyExtractor, isStrictOrder?: boolean); get isStrictOrder(): boolean; set isStrictOrder(value: boolean); get renovation(): LinkedListRenovation; get isRenovationInProgress(): boolean; get count(): number; get firstItem(): T | undefined; get lastItem(): T | undefined; items(after?: T): Generator; tryLookup(key: string): T | undefined; lookup(key: string): T; add(item: T, before?: T): void; move(item: T, before: T | undefined): void; remove(item: T): void; beginRenovation(diff?: Array): LinkedListRenovation; endRenovation(error?: unknown): LinkedListRenovation; extractKey(item: T): string; static move$>(list: LinkedList, item: T, before: T | undefined): void; static remove$>(list: LinkedList, item: T): void; static removeKey$>(list: LinkedList, key: string): void; } export declare enum Mark { reaffirmed = 0, added = 1, moved = 2, removed = 3 } export declare class LinkedItem> { private list$; private next$; private prev$; private status; constructor(); get list(): LinkedSubList | undefined; get next(): T | undefined; get prev(): T | undefined; get mark(): Mark; get rank(): number; get isManagedExternally(): boolean; static setStatus$>(item: T, mark: Mark, rank: number): void; static link$>(list: LinkedSubList | undefined, item: T, before: T | undefined): void; private static unlink; } export declare class LinkedSubList> { count: number; first?: T; last?: T; items(after?: T): Generator; clear(): void; grab(from: LinkedSubList, join: boolean): void; } export declare class LinkedListRenovation> { readonly list: LinkedList; readonly diff: Array | undefined; private former; private expected; private absent; constructor(list: LinkedList, former: LinkedSubList, diff?: Array); tryLookup(key: string): T | undefined; tryReaffirm(key: string, resolution?: { isDuplicate: boolean; }, error?: string): T | undefined; thisIsAdded(item: T, before?: T): T; thisIsModified(item: T): void; thisIsMoved(item: T, before: T | undefined): void; thisIsRemoved(item: T): void; get lostItemCount(): number; lostItems(): Generator; }