/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type Static } from "@sinclair/typebox";
import { type ChangesetLocalId, schemaFormatV1 } from "../../core/index.js";
import { type JsonCompatibleReadOnly } from "../../util/index.js";
export declare const ChangesetLocalIdSchema: import("@sinclair/typebox").TUnsafe<ChangesetLocalId>;
export declare const EncodedChangeAtomId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, import("@sinclair/typebox").TUnsafe<ChangesetLocalId>]>;
export type EncodedChangeAtomId = Static<typeof EncodedChangeAtomId>;
declare const EncodedFieldChange: import("@sinclair/typebox").TObject<{
    fieldKey: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKey>;
    fieldKind: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKindIdentifier>;
    change: import("@sinclair/typebox").TAny;
}>;
export interface EncodedFieldChange extends Static<typeof EncodedFieldChange> {
    /**
     * Encoded in format selected by `fieldKind`
     */
    change: JsonCompatibleReadOnly;
}
declare const EncodedFieldChangeMap: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
    fieldKey: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKey>;
    fieldKind: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKindIdentifier>;
    change: import("@sinclair/typebox").TAny;
}>>;
/**
 * Format for encoding as json.
 *
 * This chooses to use lists of named objects instead of maps:
 * this choice is somewhat arbitrary, but avoids user data being used as object keys,
 * which can sometimes be an issue (for example handling that for "__proto__" can require care).
 */
export type EncodedFieldChangeMap = Static<typeof EncodedFieldChangeMap>;
export declare const EncodedNodeChangeset: import("@sinclair/typebox").TObject<{
    fieldChanges: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        fieldKey: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKey>;
        fieldKind: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKindIdentifier>;
        change: import("@sinclair/typebox").TAny;
    }>>>;
    nodeExistsConstraint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        violated: import("@sinclair/typebox").TBoolean;
    }>>;
}>;
/**
 * Format for encoding as json.
 */
export type EncodedNodeChangeset = Static<typeof EncodedNodeChangeset>;
export declare const EncodedRevisionInfo: import("@sinclair/typebox").TObject<{
    revision: import("@sinclair/typebox").TReadonly<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
    rollbackOf: import("@sinclair/typebox").TReadonlyOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
}>;
export type EncodedRevisionInfo = Static<typeof EncodedRevisionInfo>;
/**
 * Index of field in an EncodedFieldBatch.
 */
export declare const EncodedTreeIndex: import("@sinclair/typebox").TNumber;
export declare const CommitBuilds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>;
export type CommitBuilds = Static<typeof CommitBuilds>;
export declare const EncodedBuildsArray: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>, import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>]>]>>;
export type EncodedBuildsArray = Static<typeof EncodedBuildsArray>;
export declare const EncodedBuilds: import("@sinclair/typebox").TObject<{
    builds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>, import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>]>]>>;
    /**
     * Fields indexed by the EncodedTreeIndexes above.
     * TODO: Strongly typing this here may result in redundant schema validation of this data.
     */
    trees: import("@sinclair/typebox").TObject<{
        data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
        version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
        identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
        shapes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
            a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
            b: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
                length: import("@sinclair/typebox").TNumber;
                shape: import("@sinclair/typebox").TNumber;
            }>>;
            c: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
                type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>>;
                value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>, import("@sinclair/typebox").TEnum<typeof import("../chunked-forest/codec/format.js").SpecialField>]>>; /**
                 * The number of constraints within this changeset that are violated.
                 */
                fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>, import("@sinclair/typebox").TNumber]>>>;
                extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
            }>>;
            d: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<0>>;
        }>>;
    }>;
}>;
export type EncodedBuilds = Static<typeof EncodedBuilds>;
export declare const EncodedModularChangeset: import("@sinclair/typebox").TObject<{
    maxId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<ChangesetLocalId>>;
    changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        fieldKey: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKey>;
        fieldKind: import("@sinclair/typebox").TUnsafe<schemaFormatV1.FieldKindIdentifier>;
        change: import("@sinclair/typebox").TAny;
    }>>;
    revisions: import("@sinclair/typebox").TReadonlyOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        revision: import("@sinclair/typebox").TReadonly<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
        rollbackOf: import("@sinclair/typebox").TReadonlyOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
    }>>>;
    builds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        builds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>, import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>]>]>>;
        /**
         * Fields indexed by the EncodedTreeIndexes above.
         * TODO: Strongly typing this here may result in redundant schema validation of this data.
         */
        trees: import("@sinclair/typebox").TObject<{
            data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
            version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
            identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
            shapes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
                a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
                b: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
                    length: import("@sinclair/typebox").TNumber;
                    shape: import("@sinclair/typebox").TNumber;
                }>>;
                c: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
                    type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>>;
                    value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>, import("@sinclair/typebox").TEnum<typeof import("../chunked-forest/codec/format.js").SpecialField>]>>; /**
                     * The number of constraints within this changeset that are violated.
                     */
                    fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>, import("@sinclair/typebox").TNumber]>>>;
                    extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
                }>>;
                d: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<0>>;
            }>>;
        }>;
    }>>;
    refreshers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        builds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>, import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TNumber]>>]>]>>;
        /**
         * Fields indexed by the EncodedTreeIndexes above.
         * TODO: Strongly typing this here may result in redundant schema validation of this data.
         */
        trees: import("@sinclair/typebox").TObject<{
            data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
            version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
            identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
            shapes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
                a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
                b: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
                    length: import("@sinclair/typebox").TNumber;
                    shape: import("@sinclair/typebox").TNumber;
                }>>;
                c: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
                    type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>>;
                    value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>, import("@sinclair/typebox").TEnum<typeof import("../chunked-forest/codec/format.js").SpecialField>]>>; /**
                     * The number of constraints within this changeset that are violated.
                     */
                    fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>, import("@sinclair/typebox").TNumber]>>>;
                    extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
                }>>;
                d: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<0>>;
            }>>;
        }>;
    }>>;
    /**
     * The number of constraints within this changeset that are violated.
     */
    violations: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>;
export type EncodedModularChangeset = Static<typeof EncodedModularChangeset>;
export {};
//# sourceMappingURL=modularChangeFormat.d.ts.map