/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type Anchor, type AnchorNode, type FieldKey, type ITreeSubscriptionCursor, type TreeNavigationResult, type TreeNodeSchemaIdentifier, type Value } from "../../core/index.js";
import { type FlexTreeNodeSchema } from "../typed-schema/index.js";
import type { Context } from "./context.js";
import { FlexTreeEntityKind, type FlexTreeField, type FlexTreeNode, flexTreeMarker } from "./flexTreeTypes.js";
import { LazyEntity, forgetAnchorSymbol, tryMoveCursorToAnchorSymbol } from "./lazyEntity.js";
/**
 * @param cursor - This does not take ownership of this cursor: Node will fork it as needed.
 */
export declare function makeTree(context: Context, cursor: ITreeSubscriptionCursor): LazyTreeNode;
/**
 * Lazy implementation of {@link FlexTreeNode}.
 */
export declare class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchema> extends LazyEntity<TSchema, Anchor> implements FlexTreeNode {
    #private;
    readonly anchorNode: AnchorNode;
    get [flexTreeMarker](): FlexTreeEntityKind.Node;
    get schema(): TreeNodeSchemaIdentifier;
    constructor(context: Context, schema: TSchema, cursor: ITreeSubscriptionCursor, anchorNode: AnchorNode, anchor: Anchor);
    is(schema: FlexTreeNodeSchema): boolean;
    protected [tryMoveCursorToAnchorSymbol](cursor: ITreeSubscriptionCursor): TreeNavigationResult;
    protected [forgetAnchorSymbol](): void;
    get value(): Value;
    tryGetField(fieldKey: FieldKey): FlexTreeField | undefined;
    getBoxed(key: FieldKey): FlexTreeField;
    boxedIterator(): IterableIterator<FlexTreeField>;
    get parentField(): {
        readonly parent: FlexTreeField;
        readonly index: number;
    };
    keys(): IterableIterator<FieldKey>;
}
//# sourceMappingURL=lazyNode.d.ts.map