/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type FieldKind, type NodeKind } from "./schemaTypes.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("./schemaTypes.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("./schemaTypes.js").TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
}, "Test Recursive Domain.testObject">, object & import("./typesUnsafe.js").InsertableObjectFromSchemaRecordUnsafe<{
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => typeof RecursiveObject]>;
    readonly number: import("./schemaTypes.js").TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
}>, false, {
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => typeof RecursiveObject]>;
    readonly number: import("./schemaTypes.js").TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
}>;
/**
 * @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("./schemaTypes.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<{
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => import("./schemaTypes.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject">, object & import("./typesUnsafe.js").InsertableObjectFromSchemaRecordUnsafe<any>, false, any>]>;
    readonly number: import("./schemaTypes.js").TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
}, "Test Recursive Domain.testPOJOObject">, object & import("./typesUnsafe.js").InsertableObjectFromSchemaRecordUnsafe<{
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => import("./schemaTypes.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject">, object & import("./typesUnsafe.js").InsertableObjectFromSchemaRecordUnsafe<any>, false, any>]>;
    readonly number: import("./schemaTypes.js").TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
}>, false, {
    readonly recursive: import("./typesUnsafe.js").FieldSchemaUnsafe<FieldKind.Optional, readonly [() => import("./schemaTypes.js").TreeNodeSchemaClass<"Test Recursive Domain.testPOJOObject", NodeKind.Object, import("./typesUnsafe.js").TreeObjectNodeUnsafe<any, "Test Recursive Domain.testPOJOObject">, object & import("./typesUnsafe.js").InsertableObjectFromSchemaRecordUnsafe<any>, false, any>]>;
    readonly number: import("./schemaTypes.js").TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
}>;
//# sourceMappingURL=testRecursiveDomain.d.ts.map