/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type CodecTree, type ICodecFamily, type ICodecOptions } from "../codec/index.js";
import type { ChangeEncodingContext } from "../core/index.js";
import { type ModularChangeFormatVersion, type ModularChangeset, type SchemaChangeFormatVersion } 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: ICodecOptions): ICodecFamily<SharedTreeChange, ChangeEncodingContext>;
interface ChangeFormatDependencies {
    readonly modularChange: ModularChangeFormatVersion;
    readonly schemaChange: SchemaChangeFormatVersion;
}
export type SharedTreeChangeFormatVersion = Brand<1 | 2 | 3 | 4, "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): CodecTree;
export {};
//# sourceMappingURL=sharedTreeChangeCodecs.d.ts.map