/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { IIdCompressor } from "@fluidframework/id-compressor";
import { type CodecTree, type CodecWriteOptions, type DependentFormatVersion, type ICodecFamily, type ICodecOptions, type IJsonCodec } from "../codec/index.js";
import type { ChangeEncodingContext, EncodedRevisionTag, RevisionTag, SchemaAndPolicy } from "../core/index.js";
import { type JsonCompatibleReadOnly } from "../util/index.js";
import type { SummaryData } from "./editManager.js";
import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
import { EditManagerFormatVersion } from "./editManagerFormatCommons.js";
export interface EditManagerEncodingContext {
    idCompressor: IIdCompressor;
    readonly schema?: SchemaAndPolicy;
}
/**
 * Convert a MinimumVersionForCollab to an EditManagerFormatVersion.
 * @param clientVersion - The MinimumVersionForCollab to convert.
 * @returns The EditManagerFormatVersion that corresponds to the provided MinimumVersionForCollab.
 */
export declare function clientVersionToEditManagerFormatVersion(clientVersion: MinimumVersionForCollab, writeVersionOverride?: EditManagerFormatVersion): EditManagerFormatVersion;
/**
 * Returns the version that should be used for testing shared branches.
 */
export declare function editManagerFormatVersionSelectorForSharedBranches(clientVersion: MinimumVersionForCollab): EditManagerFormatVersion;
/**
 * Returns the version that should be used for testing shared branches.
 */
export declare function editManagerFormatVersionSelectorForDetachedRootEditing(clientVersion: MinimumVersionForCollab): EditManagerFormatVersion;
export interface EditManagerCodecOptions {
    readonly editManagerFormatSelector?: (minVersionForCollab: MinimumVersionForCollab) => EditManagerFormatVersion;
}
export declare function makeEditManagerCodec<TChangeset>(changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>, dependentChangeFormatVersion: DependentFormatVersion<EditManagerFormatVersion>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: EditManagerCodecOptions & CodecWriteOptions): IJsonCodec<SummaryData<TChangeset>, JsonCompatibleReadOnly, JsonCompatibleReadOnly, EditManagerEncodingContext>;
export declare function makeEditManagerCodecs<TChangeset>(changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>, dependentChangeFormatVersion: DependentFormatVersion<EditManagerFormatVersion>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: ICodecOptions): ICodecFamily<SummaryData<TChangeset>, EditManagerEncodingContext>;
export declare function getCodecTreeForEditManagerFormatWithChange(clientVersion: MinimumVersionForCollab, changeFormat: CodecTree): CodecTree;
//# sourceMappingURL=editManagerCodecs.d.ts.map