/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { ValueSchema } from "../core";
/**
 * Schema for the built-in {@link Leaf} node types.
 * @alpha
 */
export declare const leaf: {
    /**
     * {@link TreeNodeSchema} for a {@link Leaf} holding a JavaScript `number`.
     *
     * @remarks
     * The number is a [double-precision 64-bit binary format IEEE 754](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) value, however there are some exceptions:
     * - `NaN`, and the infinities should not be used.
     * - `-0` may be converted to `0` in some cases.
     *
     * These limitations match the limitations of JSON.
     * @privateRemarks
     * TODO:
     * We should be much more clear about what happens if you use problematic values.
     * We should validate and/or normalize them when inserting content.
     */
    number: import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.number", {
        leafValue: ValueSchema.Number;
    }>;
    /**
     * {@link TreeNodeSchema} for a {@link Leaf} holding a boolean.
     */
    boolean: import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.boolean", {
        leafValue: ValueSchema.Boolean;
    }>;
    /**
     * {@link TreeNodeSchema} for a {@link Leaf} holding a JavaScript `string`.
     *
     * @remarks
     * Strings containing unpaired UTF-16 surrogate pair code units may not be handled correctly.
     *
     * These limitations come from the use of UTF-8 encoding of the strings, which requires them to be valid unicode.
     * JavaScript does not make this requirement for its strings so not all possible JavaScript strings are supported.
     * @privateRemarks
     * TODO:
     * We should be much more clear about what happens if you use problematic values.
     * We should validate and/or normalize them when inserting content.
     */
    string: import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.string", {
        leafValue: ValueSchema.String;
    }>;
    /**
     * {@link TreeNodeSchema} for a {@link Leaf} holding an {@link @fluidframework/core-interfaces#IFluidHandle}.
     */
    handle: import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.handle", {
        leafValue: ValueSchema.FluidHandle;
    }>;
    /**
     * JavaScript `null`.
     *
     * @remarks
     * There are good [reasons to avoid using null](https://www.npmjs.com/package/%40rushstack/eslint-plugin#rushstackno-new-null) in JavaScript, however sometimes it is desired.
     * This {@link Leaf} node provide the option to include nulls in trees when desired.
     * Unless directly inter-operating with existing data using null, consider other approaches, like wrapping the value in an optional field, or using a more specifically named empty object node.
     */
    null: import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.null", {
        leafValue: ValueSchema.Null;
    }>;
    /**
     * The set of leaf schema which correspond to JavaScript primitive (non-object) types.
     */
    primitives: readonly [import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.number", {
        leafValue: ValueSchema.Number;
    }>, import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.boolean", {
        leafValue: ValueSchema.Boolean;
    }>, import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.string", {
        leafValue: ValueSchema.String;
    }>];
    /**
     * Types allowed as roots of Json content.
     */
    all: readonly [import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.handle", {
        leafValue: ValueSchema.FluidHandle;
    }>, import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.null", {
        leafValue: ValueSchema.Null;
    }>, import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.number", {
        leafValue: ValueSchema.Number;
    }>, import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.boolean", {
        leafValue: ValueSchema.Boolean;
    }>, import("../feature-libraries").TreeNodeSchema<"com.fluidframework.leaf.string", {
        leafValue: ValueSchema.String;
    }>];
    /**
     * {@link SchemaLibrary} of the Leaf Schema types.
     *
     * @remarks
     * This is included by default in schema produced with {@link SchemaBuilder}.
     */
    library: import("../feature-libraries").SchemaLibrary;
};
//# sourceMappingURL=leafDomain.d.ts.map