/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { TreeNodeSchemaIdentifier } from "../core/index.js";
import { FlexAllowedTypes, FlexFieldSchema, FlexTreeNodeSchema, FlexTreeSchema } from "../feature-libraries/index.js";
import { TreeContent } from "../shared-tree/index.js";
import { ImplicitAllowedTypes, ImplicitFieldSchema, TreeNodeSchema } from "./schemaTypes.js";
import { TreeConfiguration } from "./tree.js";
export declare function toFlexConfig(config: TreeConfiguration): TreeContent;
interface SchemaInfo {
    toFlex: () => FlexTreeNodeSchema;
    original: TreeNodeSchema;
}
type SchemaMap = Map<TreeNodeSchemaIdentifier, SchemaInfo>;
/**
 * Generate a {@link FlexTreeSchema} with `root` as the root field.
 *
 * This also has the side effect of populating the cached view schema on the class-based schema.
 */
export declare function toFlexSchema(root: ImplicitFieldSchema): FlexTreeSchema;
/**
 * Return a flex schema for the provided class schema.
 *
 * This also has the side effect of populating the cached view schema on the class based schema.
 */
export declare function getFlexSchema(root: TreeNodeSchema): FlexTreeNodeSchema;
/**
 * Normalizes an {@link ImplicitFieldSchema} into a {@link TreeFieldSchema}.
 */
export declare function convertField(schemaMap: SchemaMap, schema: ImplicitFieldSchema): FlexFieldSchema;
/**
 * Normalizes an {@link ImplicitAllowedTypes} into an {@link AllowedTypes}.
 */
export declare function convertAllowedTypes(schemaMap: SchemaMap, schema: ImplicitAllowedTypes): FlexAllowedTypes;
/**
 * Converts a {@link TreeNodeSchema} into a {@link FlexTreeNodeSchema}.
 * Ensures all types reachable from `schema` are included in `schemaMap`.
 *
 * Return value (and entries in map) are lazy to allow recursive types to work.
 * This laziness does NOT extend to adding entries to `schemaMap`:
 * all referenced types are added to it before this function returns.
 */
export declare function convertNodeSchema(schemaMap: SchemaMap, schema: TreeNodeSchema): () => FlexTreeNodeSchema;
export {};
//# sourceMappingURL=toFlexSchema.d.ts.map