/*!
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
* Licensed under the MIT License.
*/
///
import type { LocalReferenceCollection } from "../localReference.js";
import type { MergeTree } from "../mergeTree.js";
import type { MergeBlock } from "../mergeTreeNodes.js";
import { type Perspective } from "../perspective.js";
import type { OperationStamp } from "../stamps.js";
import { ClientTestHelper } from "./clientTestHelper.js";
export declare function loadTextFromFile(filename: string, mergeTree: MergeTree, segLimit?: number): MergeTree;
export declare function loadTextFromFileWithMarkers(filename: string, mergeTree: MergeTree, segLimit?: number): MergeTree;
export interface MockRemoteClient {
perspectiveAt(args: {
refSeq: number;
}): Perspective;
stampAt(args: {
seq: number;
}): OperationStamp;
/**
* Short client id for this client.
*/
id: number;
}
/**
* Creates a "mock remote client" which allows ergonomically generating {@link Perspective}s and {@link OperationStamp}s
* for use in tests that interact directly with a {@link MergeTree}.
*
* Example:
*
* ```typescript
* let seq = 0;
* const remoteClient = makeRemoteClient({ clientId: 18 });
*
* mergeTree.insertSegments(
* 0,
* [TextSegment.make("some text")],
* remoteClient.perspectiveAt({ refSeq: seq }),
* remoteClient.stampAt({ seq: ++seq }),
* undefined
* );
* ```
*/
export declare function makeRemoteClient({ clientId }: {
clientId: number;
}): MockRemoteClient;
export declare function nodeOrdinalsHaveIntegrity(block: MergeBlock): boolean;
/**
* Returns an object that tallies each delta and maintenance operation observed
* for the given 'mergeTree'.
*/
export declare function countOperations(mergeTree: MergeTree): object;
export declare function validatePartialLengths(clientId: number, mergeTree: MergeTree, expectedValues?: {
seq: number;
len: number;
localSeq?: number;
}[], minRefSeqForLocalSeq?: Map, mergeBlock?: MergeBlock): void;
export declare function validateRefCount(collection?: LocalReferenceCollection): void;
/**
* Enable stricter partial length assertions inside tests
*
* Note that these assertions can be expensive, and so should not be enabled in
* production code or tests that run through thousands of ops (e.g. the SharedString
* fuzz tests).
*/
export declare function useStrictPartialLengthChecks(): void;
interface ObliterateTestArgs {
title: string;
action: (helper: ClientTestHelper) => void;
expectedText: string;
}
export declare function itCorrectlyObliterates(args: ObliterateTestArgs): Mocha.Test;
export declare namespace itCorrectlyObliterates {
var skip: (args: ObliterateTestArgs) => Mocha.Test;
var only: (args: ObliterateTestArgs) => Mocha.Test;
}
export {};
//# sourceMappingURL=testUtils.d.ts.map