/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { SessionId } from "@fluidframework/id-compressor";
import { type TSchema } from "@sinclair/typebox";
import { EditManagerFormatVersion, type EncodedSummarySessionBranch, SequencedCommit } from "./editManagerFormatCommons.js";
export interface EncodedEditManager<TChangeset> {
    readonly trunk: readonly Readonly<SequencedCommit<TChangeset>>[];
    readonly branches: readonly [SessionId, Readonly<EncodedSummarySessionBranch<TChangeset>>][];
    readonly version: typeof EditManagerFormatVersion.v1 | typeof EditManagerFormatVersion.v2 | typeof EditManagerFormatVersion.v3 | typeof EditManagerFormatVersion.v4 | typeof EditManagerFormatVersion.v6;
}
export declare const EncodedEditManager: <ChangeSchema extends TSchema>(tChange: ChangeSchema) => import("@sinclair/typebox").TObject<{
    version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<import("../util/brand.js").Brand<1, "editManager.FormatVersion">>, import("@sinclair/typebox").TLiteral<import("../util/brand.js").Brand<2, "editManager.FormatVersion">>, import("@sinclair/typebox").TLiteral<import("../util/brand.js").Brand<3, "editManager.FormatVersion">>, import("@sinclair/typebox").TLiteral<import("../util/brand.js").Brand<4, "editManager.FormatVersion">>, import("@sinclair/typebox").TLiteral<import("../util/brand.js").Brand<6, "editManager.FormatVersion">>]>;
    trunk: import("@sinclair/typebox").TArray<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">>]>;
        change: import("@sinclair/typebox").TIntersectEvaluated<import("@sinclair/typebox").Assert<ChangeSchema, TSchema> extends infer T ? T extends import("@sinclair/typebox").Assert<ChangeSchema, TSchema> ? T extends import("@sinclair/typebox").TNever ? [] : [T] : never : never>;
        sessionId: import("@sinclair/typebox").TUnsafe<SessionId>;
        sequenceNumber: import("@sinclair/typebox").TUnsafe<import("./editManagerFormatCommons.js").SeqNumber>;
        indexInBatch: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>>;
    branches: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<SessionId>, import("@sinclair/typebox").TObject<{
        base: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>;
        commits: import("@sinclair/typebox").TArray<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">>]>;
            change: import("@sinclair/typebox").TIntersectEvaluated<import("@sinclair/typebox").Assert<ChangeSchema, TSchema> extends infer T_1 ? T_1 extends import("@sinclair/typebox").Assert<ChangeSchema, TSchema> ? T_1 extends import("@sinclair/typebox").TNever ? [] : [T_1] : never : never>;
            sessionId: import("@sinclair/typebox").TUnsafe<SessionId>;
        }>>;
    }>]>>;
}>;
//# sourceMappingURL=editManagerFormatV1toV4.d.ts.map