/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { SessionId } from "@fluidframework/id-compressor";
import { TSchema } from "@sinclair/typebox";
import { EncodedRevisionTag } from "../core/index.js";
import { JsonCompatibleReadOnly } from "../util/index.js";
/**
 * The format of messages that SharedTree sends and receives.
 */
export interface Message {
    /**
     * The revision tag for the change in this message
     */
    readonly revision: EncodedRevisionTag;
    /**
     * The stable ID that identifies the originator of the message.
     */
    readonly originatorId: SessionId;
    /**
     * The changeset to be applied.
     */
    readonly changeset: JsonCompatibleReadOnly;
    /**
     * The version of the message. This controls how the message is encoded.
     *
     * This was not set historically and was added before making any breaking changes to the format.
     * For that reason, absence of a 'version' field is synonymous with version 1.
     */
    readonly version?: number;
}
export declare const Message: <ChangeSchema extends TSchema>(tChange: ChangeSchema) => import("@sinclair/typebox").TObject<{
    revision: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>;
    originatorId: import("@sinclair/typebox").TUnsafe<SessionId>;
    changeset: ChangeSchema;
    version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>;
//# sourceMappingURL=messageFormat.d.ts.map