/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { FieldKind } from "../schemaTypes.js";
import type { NodeKind } from "../core/index.js";
/**
 * To make API-Extractor happy, the base type has to be exported in addition to the actual schema class.
 * Ideally this would be inlined into the class definition below.
 *
 * TODO:
 * Fix API-Extractor to support class based schema, and remove this workaround (inline this type into `RecursiveObject extends` below).
 * Error: src/class-tree/testRecursiveDomain.ts:32:1 - (ae-forgotten-export) The symbol "RecursiveObject_base" needs to be exported by the entry point index.d.ts
 * See https://github.com/microsoft/rushstack/issues/4429
 * @internal
 */
export declare const base: import("../core/treeNodeSchema.js").TreeNodeSchemaClass<"Test Recursive Domain.testObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<{
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => typeof RecursiveObject]>;
    readonly number: import("../core/treeNodeSchema.js").TreeNodeSchemaNonClass<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number, true, unknown, never, unknown>;
}, "Test Recursive Domain.testObject">, object & {
    readonly number: number;
} & {
    readonly recursive?: RecursiveObject | undefined;
}, false, {
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => typeof RecursiveObject]>;
    readonly number: import("../core/treeNodeSchema.js").TreeNodeSchemaNonClass<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number, true, unknown, never, unknown>;
}>;
/**
 * @internal
 */
export declare class RecursiveObject extends base {
}
/**
 * Due to https://github.com/microsoft/TypeScript/issues/55832 this is expected to compile to a d.ts file which contain `any`, and therefore the other (above) approach using class definitions is recommended for recursive schema.
 * See {@link SchemaFactory} for documentation covering this detail.
 * @internal
 */
export declare const RecursiveObjectPojoMode: import("../core/treeNodeSchema.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<{
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => import("../core/treeNodeSchema.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject">, object & {
        readonly number: number;
    } & {
        readonly recursive?: import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject"> | undefined;
    }, false, any>]>;
    readonly number: import("../core/treeNodeSchema.js").TreeNodeSchemaNonClass<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number, true, unknown, never, unknown>;
}, "Test Recursive Domain.testPOJOObject">, object & {
    readonly number: number;
} & {
    readonly recursive?: import("./typesUnsafe.js").TreeObjectNodeUnsafe<{
        readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => import("../core/treeNodeSchema.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject">, object & {
            readonly number: number;
        } & any, false, any>]>;
        readonly number: import("../core/treeNodeSchema.js").TreeNodeSchemaNonClass<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number, true, unknown, never, unknown>;
    }, "Test Recursive Domain.testPOJOObject"> | undefined;
}, false, {
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => import("../core/treeNodeSchema.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject">, object & {
        readonly number: number;
    } & {
        readonly recursive?: import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject"> | undefined;
    }, false, any>]>;
    readonly number: import("../core/treeNodeSchema.js").TreeNodeSchemaNonClass<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number, true, unknown, never, unknown>;
}>;
//# sourceMappingURL=testRecursiveDomain.d.ts.map