/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
import { type CodecTree, type CodecWriteOptions, type ICodecFamily } from "../codec/index.js";
import { type ChangeEncodingContext, SchemaFormatVersion } from "../core/index.js";
import { type ModularChangeFormatVersion, type ModularChangeset } from "../feature-libraries/index.js";
import { type Brand } from "../util/index.js";
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
export declare function makeSharedTreeChangeCodecFamily(modularChangeCodecFamily: ICodecFamily<ModularChangeset, ChangeEncodingContext>, options: CodecWriteOptions): ICodecFamily<SharedTreeChange, ChangeEncodingContext>;
interface ChangeFormatDependencies {
    readonly modularChange: ModularChangeFormatVersion;
    readonly schemaChange: SchemaFormatVersion;
}
export type SharedTreeChangeFormatVersion = Brand<3 | 4 | 101, "SharedTreeChangeFormatVersion">;
/**
 * Defines for each SharedTree change format the corresponding dependent formats to use.
 * This is an arbitrary mapping that is injected in the SharedTree change codec.
 * Once an entry is defined and used in production, it cannot be changed.
 * This is because the format for the dependent formats are not explicitly versioned.
 */
export declare const dependenciesForChangeFormat: Map<SharedTreeChangeFormatVersion, ChangeFormatDependencies>;
export declare function getCodecTreeForChangeFormat(version: SharedTreeChangeFormatVersion, clientVersion: MinimumVersionForCollab): CodecTree;
export {};
//# sourceMappingURL=sharedTreeChangeCodecs.d.ts.map