import { type Dot } from "../../crdt/Dot.ts";
import type VersionVector from "../../crdt/VersionVector.ts";
import type ORSetElementState from "../ORSetElementState.ts";
import TrieCursor from "../trie/TrieCursor.ts";
import TrieFlusher from "../trie/TrieFlusher.ts";
import type FlushResult from "../trie/FlushResult.ts";
export interface ShadowTrieORSetInit {
    readonly cursor: TrieCursor;
    readonly flusher: TrieFlusher;
}
/**
 * Async storage-backed ORSet engine built on the trie substrate.
 *
 * This is an internal engine, not the domain-facing session seam.
 * `StateSession` will own lifetime and compose one or more of these
 * engines later.
 */
export default class ShadowTrieORSet {
    #private;
    constructor(init: ShadowTrieORSetInit);
    contains(element: string): Promise<boolean>;
    getDots(element: string): Promise<ReadonlySet<string>>;
    getElementState(element: string): Promise<ORSetElementState | null>;
    add(element: string, dot: Dot): Promise<void>;
    remove(observedDots: ReadonlySet<string>): Promise<void>;
    compact(includedVV: VersionVector): Promise<void>;
    scan(): AsyncIterable<string>;
    scanElementStates(): AsyncIterable<ORSetElementState>;
    flush(): Promise<FlushResult>;
}
