/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type TreeValue, ValueSchema } from "../core/index.js";
import { type FlexTreeNode } from "../feature-libraries/index.js";
import { NodeKind, type TreeNodeSchema, type TreeNodeSchemaNonClass } from "./core/index.js";
/**
 * Instances of this class are schema for leaf nodes.
 * @remarks
 * Unlike other schema, leaf schema are class instances instead of classes themselves.
 * This is because the instance type (the tree node type) for leaves are not objects,
 * so those instances can't be instances of a schema based class.
 * @privateRemarks
 * This class refers to the underlying flex tree schema in its constructor, so this class can't be included in the package API.
 */
export declare class LeafNodeSchema<Name extends string, const T extends ValueSchema> implements TreeNodeSchemaNonClass<Name, NodeKind.Leaf, TreeValue<T>, TreeValue<T>> {
    readonly identifier: Name;
    readonly kind = NodeKind.Leaf;
    readonly info: T;
    readonly implicitlyConstructable: true;
    create(data: TreeValue<T> | FlexTreeNode): TreeValue<T>;
    constructor(name: Name, t: T);
}
export declare const stringSchema: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
export declare const numberSchema: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
export declare const booleanSchema: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
export declare const nullSchema: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
export declare const handleSchema: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, import("@fluidframework/core-interfaces").IFluidHandle<unknown>, import("@fluidframework/core-interfaces").IFluidHandle<unknown>>;
//# sourceMappingURL=leafNodeSchema.d.ts.map