/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { LocalReferenceCollection } from "../localReference.js";
import { MergeTree } from "../mergeTree.js";
import { IMergeTreeDeltaOpArgs } from "../mergeTreeDeltaCallback.js";
import { MergeBlock, ISegmentPrivate } from "../mergeTreeNodes.js";
import { ReferenceType } from "../ops.js";
import { PropertySet } from "../properties.js";
export declare function loadTextFromFile(filename: string, mergeTree: MergeTree, segLimit?: number): MergeTree;
export declare function loadTextFromFileWithMarkers(filename: string, mergeTree: MergeTree, segLimit?: number): MergeTree;
interface InsertMarkerArgs {
    mergeTree: MergeTree;
    pos: number;
    refSeq: number;
    clientId: number;
    seq: number;
    behaviors: ReferenceType;
    props: PropertySet | undefined;
    opArgs: IMergeTreeDeltaOpArgs;
}
export declare function insertMarker({ mergeTree, pos, refSeq, clientId, seq, behaviors, props, opArgs, }: InsertMarkerArgs): void;
interface InsertTextArgs {
    mergeTree: MergeTree;
    pos: number;
    refSeq: number;
    clientId: number;
    seq: number;
    text: string;
    props?: PropertySet;
    opArgs?: IMergeTreeDeltaOpArgs;
}
export declare function insertText({ mergeTree, pos, refSeq, clientId, seq, text, props, opArgs, }: InsertTextArgs): void;
interface InsertSegmentsArgs {
    mergeTree: MergeTree;
    pos: number;
    segments: ISegmentPrivate[];
    refSeq: number;
    clientId: number;
    seq: number;
    opArgs: IMergeTreeDeltaOpArgs | undefined;
}
export declare function insertSegments({ mergeTree, pos, segments, refSeq, clientId, seq, opArgs, }: InsertSegmentsArgs): void;
interface MarkRangeRemovedArgs {
    mergeTree: MergeTree;
    start: number;
    end: number;
    refSeq: number;
    clientId: number;
    seq: number;
    overwrite: boolean;
    opArgs: IMergeTreeDeltaOpArgs;
}
export declare function markRangeRemoved({ mergeTree, start, end, refSeq, clientId, seq, opArgs, }: MarkRangeRemovedArgs): void;
export declare function obliterateRange({ mergeTree, start, end, refSeq, clientId, seq, opArgs, }: {
    mergeTree: MergeTree;
    start: number;
    end: number;
    refSeq: number;
    clientId: number;
    seq: number;
    opArgs: IMergeTreeDeltaOpArgs;
}): void;
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;
}[], localSeq?: number, 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;
export {};
//# sourceMappingURL=testUtils.d.ts.map