import { ReconciliationList, LinkedItem, ReconciliationListReader } from "../util/ReconciliationList.js";
import { RxObject } from "./Mvcc.js";
export declare abstract class RxReconciliationList<T> extends RxObject implements ReconciliationListReader<T> {
    protected abstract impl: ReconciliationList<T>;
    get isStrict(): boolean;
    get count(): number;
    get countOfAdded(): number;
    get countOfRemoved(): number;
    get isReconciliationInProgress(): boolean;
    lookup(key: string): LinkedItem<T> | undefined;
    tryReuse(key: string): LinkedItem<T> | undefined;
    add(instance: T): LinkedItem<T>;
    remove(item: LinkedItem<T>): void;
    move(item: LinkedItem<T>, after: LinkedItem<T>): void;
    beginReconciliation(): void;
    endReconciliation(error?: unknown): void;
    clearAddedAndRemovedLists(): void;
    firstItem(): LinkedItem<T> | undefined;
    lastItem(): LinkedItem<T> | undefined;
    items(): Generator<LinkedItem<T>>;
    itemsAdded(clear?: boolean): Generator<LinkedItem<T>>;
    itemsRemoved(clear?: boolean): Generator<LinkedItem<T>>;
    isAdded(item: LinkedItem<T>): boolean;
    isMoved(item: LinkedItem<T>): boolean;
    isRemoved(item: LinkedItem<T>): boolean;
    isActual(item: LinkedItem<T>): boolean;
    isExternal(item: LinkedItem<T>): boolean;
}
