/*!
 * 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 { EncodedSharedBranch, EditManagerFormatVersion } from "./editManagerFormatCommons.js";
export interface EncodedEditManager<TChangeset> {
    readonly version: typeof EditManagerFormatVersion.vSharedBranches;
    readonly originator: SessionId;
    readonly main: EncodedSharedBranch<TChangeset>;
    readonly branches?: readonly EncodedSharedBranch<TChangeset>[];
}
export declare const EncodedEditManager: <ChangeSchema extends TSchema>(tChange: ChangeSchema) => import("@sinclair/typebox").TObject<{
    version: import("@sinclair/typebox").TLiteral<import("../util/brand.js").Brand<"shared-branches|v0.1", "editManager.FormatVersion">>;
    originator: import("@sinclair/typebox").TUnsafe<SessionId>;
    main: import("@sinclair/typebox").TObject<{
        id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        session: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<SessionId>>;
        author: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        base: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
        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>;
        }>>;
        peers: 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>;
            }>>;
        }>]>>;
    }>;
    branches: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        session: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<SessionId>>;
        author: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        base: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
        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_2 ? T_2 extends import("@sinclair/typebox").Assert<ChangeSchema, TSchema> ? T_2 extends import("@sinclair/typebox").TNever ? [] : [T_2] : 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>;
        }>>;
        peers: 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_3 ? T_3 extends import("@sinclair/typebox").Assert<ChangeSchema, TSchema> ? T_3 extends import("@sinclair/typebox").TNever ? [] : [T_3] : never : never>;
                sessionId: import("@sinclair/typebox").TUnsafe<SessionId>;
            }>>;
        }>]>>;
    }>>>;
}>;
//# sourceMappingURL=editManagerFormatVSharedBranches.d.ts.map