/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type Context, type FlexTreeField, type NodeKeyManager, type FlexTreeHydratedContext, type FullSchemaPolicy } from "../feature-libraries/index.js";
import { disposeSymbol } from "../util/index.js";
import type { ITreeCheckout, ITreeCheckoutFork } from "./treeCheckout.js";
/**
 * An editable view of a (version control style) branch of a shared tree.
 */
export declare class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout = ITreeCheckout> {
    /**
     * Access non-view schema specific aspects of this branch.
     *
     * @remarks
     * This is a non-owning reference: disposing of this view does not impact the branch.
     */
    readonly checkout: TCheckout;
    readonly schema: FullSchemaPolicy;
    readonly nodeKeyManager: NodeKeyManager;
    private readonly onDispose?;
    /**
     * Context for controlling the FlexTree nodes produced from {@link FlexTreeView.flexTree}.
     *
     * @remarks
     * This is an owning reference: disposing of this view disposes its context.
     */
    readonly context: Context;
    /**
     * Get a typed view of the tree content using the flex-tree API.
     */
    readonly flexTree: FlexTreeField;
    constructor(
    /**
     * Access non-view schema specific aspects of this branch.
     *
     * @remarks
     * This is a non-owning reference: disposing of this view does not impact the branch.
     */
    checkout: TCheckout, schema: FullSchemaPolicy, nodeKeyManager: NodeKeyManager, onDispose?: (() => void) | undefined);
    [disposeSymbol](): void;
    /**
     * Spawn a new view which is based off of the current state of this view.
     * Any mutations of the new view will not apply to this view until the new view is merged back into this view via `merge()`.
     */
    fork(): CheckoutFlexTreeView<ITreeCheckout & ITreeCheckoutFork>;
}
/**
 * Retrieve the {@link CheckoutFlexTreeView | view} for the given {@link FlexTreeHydratedContext | context}.
 * @remarks Every {@link CheckoutFlexTreeView} is associated with its context upon creation.
 */
export declare function getCheckoutFlexTreeView(context: FlexTreeHydratedContext): CheckoutFlexTreeView;
//# sourceMappingURL=checkoutFlexTreeView.d.ts.map