/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
import { type IMergeTreeOptions, type InteriorSequencePlace, type SequencePlace } from "../index.js";
import type { SegmentGroup } from "../mergeTreeNodes.js";
import { IMergeTreeDeltaOp, type IMergeTreeInsertMsg, type IMergeTreeObliterateMsg, type IMergeTreeObliterateSidedMsg, type IMergeTreeRemoveMsg } from "../ops.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];
export declare class ReconnectTestHelper {
    clients: Record<ClientName, TestClient> & {
        all: TestClient[];
    };
    idxFromName(name: ClientName): number;
    logger: TestClientLogger;
    ops: ISequencedDocumentMessage[];
    perClientOps: ISequencedDocumentMessage[][];
    seq: number;
    constructor(options?: IMergeTreeOptions);
    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;
    insertTextLocal(clientName: ClientName, pos: number, text: string): {
        op: IMergeTreeInsertMsg;
        seg: SegmentGroup;
        refSeq: number;
    };
    removeRangeLocal(clientName: ClientName, start: number, end: number): {
        op: IMergeTreeRemoveMsg;
        seg: SegmentGroup;
        refSeq: number;
    };
    obliterateRangeLocal(clientName: ClientName, start: SequencePlace, end: SequencePlace): {
        op: IMergeTreeObliterateMsg | IMergeTreeObliterateSidedMsg;
        seg: SegmentGroup;
        refSeq: number;
    };
    disconnect(clientNames: ClientName[]): void;
    processAllOps(): void;
    reconnect(clientNames: ClientName[]): void;
    submitDisconnectedOp(clientName: ClientName, op: {
        op: IMergeTreeDeltaOp;
        seg: SegmentGroup | SegmentGroup[];
    }): void;
}
export {};
//# sourceMappingURL=reconnectHelper.d.ts.map