import { FlexFieldSchema, typeNameSymbol } from "../feature-libraries/index.js";
import { FlexTreeView, TreeContent } from "../shared-tree/index.js";
import { FieldKey, UpPath } from "../core/index.js";
/**
 * Test trees which can be parametrically scaled to any size.
 */
/**
 * Arbitrary key used when a field key is needed in this file.
 */
export declare const localFieldKey: FieldKey;
declare const linkedListSchema: import("../feature-libraries/index.js").FlexObjectNodeSchema<"scalable.linkedList", {
    readonly foo: FlexFieldSchema<import("../feature-libraries/index.js").Required, readonly [() => import("../feature-libraries/index.js").FlexObjectNodeSchema<"scalable.linkedList", any>, import("../feature-libraries/index.js").LeafNodeSchema<"com.fluidframework.leaf.number", import("../core/index.js").ValueSchema.Number>]>;
}>;
export declare const wideRootSchema: import("../feature-libraries/index.js").FlexObjectNodeSchema<"scalable.WideRoot", {
    readonly foo: FlexFieldSchema<import("../feature-libraries/index.js").Sequence, readonly [import("../feature-libraries/index.js").LeafNodeSchema<"com.fluidframework.leaf.number", import("../core/index.js").ValueSchema.Number>]>;
}>;
export declare const wideSchema: import("../feature-libraries/index.js").FlexTreeSchema<FlexFieldSchema<import("../feature-libraries/index.js").Required, readonly [import("../feature-libraries/index.js").FlexObjectNodeSchema<"scalable.WideRoot", {
    readonly foo: FlexFieldSchema<import("../feature-libraries/index.js").Sequence, readonly [import("../feature-libraries/index.js").LeafNodeSchema<"com.fluidframework.leaf.number", import("../core/index.js").ValueSchema.Number>]>;
}>]>>;
export declare const deepSchema: import("../feature-libraries/index.js").FlexTreeSchema<FlexFieldSchema<import("../feature-libraries/index.js").Required, readonly [import("../feature-libraries/index.js").FlexObjectNodeSchema<"scalable.linkedList", {
    readonly foo: FlexFieldSchema<import("../feature-libraries/index.js").Required, readonly [() => import("../feature-libraries/index.js").FlexObjectNodeSchema<"scalable.linkedList", any>, import("../feature-libraries/index.js").LeafNodeSchema<"com.fluidframework.leaf.number", import("../core/index.js").ValueSchema.Number>]>;
}>, import("../feature-libraries/index.js").LeafNodeSchema<"com.fluidframework.leaf.number", import("../core/index.js").ValueSchema.Number>]>>;
/**
 * JS object like a deep tree.
 * Compatible with ContextuallyTypedNodeData
 */
export interface JSDeepTree {
    [typeNameSymbol]?: typeof linkedListSchema.name | undefined;
    foo: JSDeepTree | number;
}
/**
 * JS object like a wide tree.
 * Compatible with ContextuallyTypedNodeData
 */
export interface JSWideTree {
    foo: number[];
}
export declare function makeJsDeepTree(depth: number, leafValue: number): JSDeepTree | number;
export declare function makeDeepContent(depth: number, leafValue?: number): TreeContent<typeof deepSchema.rootFieldSchema>;
/**
 *
 * @param numberOfNodes - number of nodes of the tree
 * @param endLeafValue - the value of the end leaf of the tree
 * @returns a tree with specified number of nodes, with the end leaf node set to the endLeafValue
 */
export declare function makeWideContentWithEndValue(numberOfNodes: number, endLeafValue: number): TreeContent<typeof wideSchema.rootFieldSchema>;
/**
 *
 * @param numberOfNodes - number of nodes of the tree
 * @param endLeafValue - the value of the end leaf of the tree
 * @returns a tree with specified number of nodes, with the end leaf node set to the endLeafValue
 */
export declare function makeJsWideTreeWithEndValue(numberOfNodes: number, endLeafValue: number): JSWideTree;
export declare function readDeepTreeAsJSObject(tree: JSDeepTree): {
    depth: number;
    value: number;
};
export declare function readWideTreeAsJSObject(tree: JSWideTree): {
    nodesCount: number;
    sum: number;
};
export declare function readWideCursorTree(tree: FlexTreeView<typeof wideSchema.rootFieldSchema>): {
    nodesCount: number;
    sum: number;
};
export declare function readDeepCursorTree(tree: FlexTreeView<typeof deepSchema.rootFieldSchema>): {
    depth: number;
    value: number;
};
/**
 * Path to linked list node at provided depth.
 * Depth 1 points to the root node.
 */
export declare function deepPath(depth: number): UpPath;
/**
 * Path to linked list node at provided depth.
 * Depth 1 points to the root node.
 */
export declare function wideLeafPath(index: number): UpPath;
export declare function readWideEditableTree(tree: FlexTreeView<typeof wideSchema.rootFieldSchema>): {
    nodesCount: number;
    sum: number;
};
export declare function readDeepEditableTree(tree: FlexTreeView<typeof deepSchema.rootFieldSchema>): {
    depth: number;
    value: number;
};
export {};
//# sourceMappingURL=scalableTestTrees.d.ts.map