/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { Anchor, TreeNavigationResult, ITreeSubscriptionCursor, FieldAnchor } from "../../core";
import { ProxyContext } from "./editableTreeContext";
/**
 * This is a base class for `NodeProxyTarget` and `FieldProxyTarget`, which uniformly handles cursors and anchors.
 */
export declare abstract class ProxyTarget<T extends Anchor | FieldAnchor> {
    readonly context: ProxyContext;
    private readonly anchor;
    private readonly lazyCursor;
    constructor(context: ProxyContext, cursor: ITreeSubscriptionCursor, anchor: T);
    free(): void;
    getAnchor(): T;
    prepareForEdit(): void;
    isFreed(): boolean;
    get cursor(): ITreeSubscriptionCursor;
    protected abstract tryMoveCursorToAnchor(anchor: T, cursor: ITreeSubscriptionCursor): TreeNavigationResult;
    /**
     * Called when disposing of this target, iff it has an anchor.
     */
    protected abstract forgetAnchor(anchor: T): void;
}
//# sourceMappingURL=ProxyTarget.d.ts.map