/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { brand, brandedStringType } from "../../util";
export const TreeSchemaIdentifierSchema = brandedStringType();
export const FieldKeySchema = brandedStringType();
export const FieldKindIdentifierSchema = brandedStringType();
/**
 * Schema for what {@link TreeValue} is allowed on a Leaf node.
 * @alpha
 */
export var ValueSchema;
(function (ValueSchema) {
    ValueSchema[ValueSchema["Number"] = 0] = "Number";
    ValueSchema[ValueSchema["String"] = 1] = "String";
    ValueSchema[ValueSchema["Boolean"] = 2] = "Boolean";
    ValueSchema[ValueSchema["FluidHandle"] = 3] = "FluidHandle";
})(ValueSchema || (ValueSchema = {}));
/**
 * Identifier used for the FieldKind for fields which must be empty.
 *
 * @remarks
 * This mainly show up in:
 * 1. The root default field for documents.
 * 2. The schema used for out of schema fields (which thus must be empty/not exist) on a struct and leaf nodes.
 *
 * @alpha
 */
export const forbiddenFieldKindIdentifier = "Forbidden";
export const storedEmptyFieldSchema = {
    kind: { identifier: brand(forbiddenFieldKindIdentifier) },
    types: undefined,
};
//# sourceMappingURL=schema.js.map