/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type CodecTree, type DependentFormatVersion, type ICodecFamily, type ICodecOptions, type IJsonCodec } from "../codec/index.js";
import type { ChangeEncodingContext, EncodedRevisionTag, RevisionTag, SchemaAndPolicy } from "../core/index.js";
import { type Brand, type JsonCompatibleReadOnly } from "../util/index.js";
import type { DecodedMessage } from "./messageTypes.js";
import type { IIdCompressor } from "@fluidframework/id-compressor";
export interface MessageEncodingContext {
    idCompressor: IIdCompressor;
    schema?: SchemaAndPolicy;
}
export declare function makeMessageCodec<TChangeset>(changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>, dependentChangeFormatVersion: DependentFormatVersion<MessageFormatVersion>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: ICodecOptions, writeVersion?: MessageFormatVersion): IJsonCodec<DecodedMessage<TChangeset>, JsonCompatibleReadOnly, JsonCompatibleReadOnly, MessageEncodingContext>;
/**
 * @privateRemarks Exported for testing.
 */
export declare function makeMessageCodecs<TChangeset>(changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>, dependentChangeFormatVersion: DependentFormatVersion<MessageFormatVersion>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: ICodecOptions): ICodecFamily<DecodedMessage<TChangeset>, MessageEncodingContext>;
export type MessageFormatVersion = Brand<undefined | 1 | 2 | 3 | 4 | 5, "MessageFormatVersion">;
export declare const messageFormatVersions: ReadonlySet<MessageFormatVersion>;
export declare function getCodecTreeForMessageFormatWithChange(version: MessageFormatVersion, changeFormat: CodecTree): CodecTree;
//# sourceMappingURL=messageCodecs.d.ts.map