/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
import type { IMergeTreeOptions, InteriorSequencePlace } from "../index.js";
import type { TestClient } from "./testClient.js";
import { TestClientLogger } from "./testClientLogger.js";
declare const ClientIds: readonly ["A", "B", "C", "D"];
type ClientName = (typeof ClientIds)[number];
/**
 * Like `ReconnectHelper`, but:
 * - does not support reconnecting clients
 * - supports advancing only some clients to a given sequence number (not all clients must be synchronized at the same time).
 *
 * This allows testing sequences of operations where clients have varying refSeqs, rather than having all clients advance refSeq
 * in lockstep.
 */
export declare class PartialSyncTestHelper {
    clients: Record<ClientName, TestClient> & {
        all: TestClient[];
    };
    idxFromName(name: ClientName): number;
    logger: TestClientLogger;
    ops: ISequencedDocumentMessage[];
    clientToLastAppliedSeq: Map<"A" | "C" | "B" | "D", number>;
    perClientOps: ISequencedDocumentMessage[][];
    private seq;
    constructor(options?: IMergeTreeOptions);
    private addMessage;
    insertText(clientName: ClientName, pos: number, text: string): void;
    removeRange(clientName: ClientName, start: number, end: number): void;
    obliterateRange(clientName: ClientName, start: number | InteriorSequencePlace, end: number | InteriorSequencePlace): void;
    advanceClientToSeq(clientName: ClientName, seq: number): void;
    /**
     * Sends all known ops to the procieded client ids.
     */
    advanceClients(...clientNames: ClientName[]): void;
    processAllOps(): void;
}
export {};
//# sourceMappingURL=partialSyncHelper.d.ts.map