/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type TreeFieldStoredSchema, Multiplicity, type SchemaAndPolicy } from "../../core/index.js";
import type { MapTreeFieldViewGeneric, MinimalMapTreeNodeView } from "../mapTreeCursor.js";
export declare enum SchemaValidationError {
    Field_KindNotInSchemaPolicy = 0,
    Field_MissingRequiredChild = 1,
    Field_MultipleChildrenNotAllowed = 2,
    Field_ChildInForbiddenField = 3,
    Field_NodeTypeNotAllowed = 4,
    LeafNode_InvalidValue = 5,
    LeafNode_FieldsNotAllowed = 6,
    ObjectNode_FieldNotInSchema = 7,
    NonLeafNode_ValueNotAllowed = 8,
    Node_MissingSchema = 9
}
/**
 * Throws a UsageError if maybeError indicates a tree is out of schema.
 */
export declare function inSchemaOrThrow(maybeError: SchemaValidationError | undefined): void;
/**
 * Deeply checks that the provided node complies with the schema based on its identifier.
 */
export declare function isNodeInSchema(node: MinimalMapTreeNodeView, schemaAndPolicy: SchemaAndPolicy): SchemaValidationError | undefined;
/**
 * Deeply checks that the nodes comply with the field schema and included schema.
 */
export declare function isFieldInSchema(childNodes: MapTreeFieldViewGeneric<MinimalMapTreeNodeView>, schema: TreeFieldStoredSchema, schemaAndPolicy: SchemaAndPolicy): SchemaValidationError | undefined;
/**
 * Validates that a given number of items complies with the specified {@link Multiplicity | multiplicity}.
 * @param numberOfItems - Number of items.
 * @param multiplicity - Kind of multiplicity to validate against.
 * @returns `true` if the specified number of items complies with the specified multiplicity; otherwise, `false`.
 */
export declare function compliesWithMultiplicity(numberOfItems: number, multiplicity: Multiplicity): SchemaValidationError | undefined;
//# sourceMappingURL=schemaChecker.d.ts.map