/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type Anchor, type AnchorNode, type FieldKey, type ITreeCursorSynchronous, type ITreeSubscriptionCursor, type TreeNavigationResult, type TreeNodeSchemaIdentifier, type Value } from "../../core/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 extends LazyEntity<Anchor> implements FlexTreeNode {
    #private;
    readonly schema: TreeNodeSchemaIdentifier;
    readonly anchorNode: AnchorNode;
    get [flexTreeMarker](): FlexTreeEntityKind.Node;
    private readonly storedSchema;
    constructor(context: Context, schema: TreeNodeSchemaIdentifier, cursor: ITreeSubscriptionCursor, anchorNode: AnchorNode, anchor: Anchor);
    borrowCursor(): ITreeCursorSynchronous;
    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