/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { Static } from "@sinclair/typebox";
import { ChangesetLocalId } from "../../core";
import { JsonCompatibleReadOnly } from "../../util";
export declare const ChangesetLocalIdSchema: import("@sinclair/typebox").TUnsafe<ChangesetLocalId>;
export declare const EncodedChangeAtomId: import("@sinclair/typebox").TObject<{
    /**
     * Uniquely identifies the changeset within which the change was made.
     */
    revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<import("@fluidframework/runtime-definitions").StableId>>;
    /**
     * Uniquely identifies, in the scope of the changeset, the change made to the field.
     */
    localId: import("@sinclair/typebox").TUnsafe<ChangesetLocalId>;
}>;
declare const EncodedFieldChange: import("@sinclair/typebox").TObject<{
    fieldKey: import("@sinclair/typebox").TUnsafe<import("../../core").FieldKey>;
    fieldKind: import("@sinclair/typebox").TUnsafe<import("../../core").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<import("../../core").FieldKey>;
    fieldKind: import("@sinclair/typebox").TUnsafe<import("../../core").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 declare type EncodedFieldChangeMap = Static<typeof EncodedFieldChangeMap>;
export declare const EncodedNodeChangeset: import("@sinclair/typebox").TObject<{
    valueChange: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<import("@fluidframework/runtime-definitions").StableId>>;
        value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
    }>>;
    fieldChanges: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        fieldKey: import("@sinclair/typebox").TUnsafe<import("../../core").FieldKey>;
        fieldKind: import("@sinclair/typebox").TUnsafe<import("../../core").FieldKindIdentifier>;
        change: import("@sinclair/typebox").TAny;
    }>>>;
    valueConstraint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
        violated: import("@sinclair/typebox").TBoolean;
    }>>;
    nodeExistsConstraint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        violated: import("@sinclair/typebox").TBoolean;
    }>>;
}>;
/**
 * Format for encoding as json.
 */
export declare type EncodedNodeChangeset = Static<typeof EncodedNodeChangeset>;
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<import("../../core").FieldKey>;
        fieldKind: import("@sinclair/typebox").TUnsafe<import("../../core").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").TUnsafe<import("@fluidframework/runtime-definitions").StableId>>;
        rollbackOf: import("@sinclair/typebox").TReadonlyOptional<import("@sinclair/typebox").TUnsafe<import("@fluidframework/runtime-definitions").StableId>>;
    }>>>;
}>;
export declare type EncodedModularChangeset = Static<typeof EncodedModularChangeset>;
export {};
//# sourceMappingURL=modularChangeFormat.d.ts.map