/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type DetachedFieldIndex, type IEditableForest, type IForestSubscription, type ReadOnlyDetachedFieldIndex, type RevisionTag, type TreeStoredSchemaRepository } from "../core/index.js";
import { disposeSymbol } from "../util/index.js";
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
import type { ChangeEnricherMutableCheckout, ChangeEnricherReadonlyCheckout } from "../shared-tree-core/index.js";
import type { IIdCompressor } from "@fluidframework/id-compressor";
export declare class SharedTreeReadonlyChangeEnricher implements ChangeEnricherReadonlyCheckout<SharedTreeChange> {
    protected readonly borrowedForest: IForestSubscription;
    private readonly schema;
    protected readonly borrowedRemovedRoots: ReadOnlyDetachedFieldIndex;
    private readonly idCompressor?;
    /**
     * @param borrowedForest - The state based on which to enrich changes.
     * Not owned by the constructed instance.
     * @param schema - The schema that corresponds to the forest.
     * @param borrowedRemovedRoots - The set of removed roots based on which to enrich changes.
     * Not owned by the constructed instance.
     * @param idCompressor - The id compressor to use when chunking trees.
     */
    constructor(borrowedForest: IForestSubscription, schema: TreeStoredSchemaRepository, borrowedRemovedRoots: ReadOnlyDetachedFieldIndex, idCompressor?: IIdCompressor | undefined);
    fork(): ChangeEnricherMutableCheckout<SharedTreeChange>;
    updateChangeEnrichments(change: SharedTreeChange): SharedTreeChange;
    private readonly getDetachedRoot;
}
export declare class SharedTreeMutableChangeEnricher extends SharedTreeReadonlyChangeEnricher implements ChangeEnricherMutableCheckout<SharedTreeChange> {
    private readonly forest;
    private readonly removedRoots;
    /**
     * @param forest - The state based on which to enrich changes.
     * Owned by the constructed instance.
     * @param schema - The schema that corresponds to the forest.
     * @param removedRoots - The set of removed roots based on which to enrich changes.
     * Owned by the constructed instance.
     * @param idCompressor - The id compressor to use when chunking trees.
     */
    constructor(forest: IEditableForest, schema: TreeStoredSchemaRepository, removedRoots: DetachedFieldIndex, idCompressor?: IIdCompressor);
    applyTipChange(change: SharedTreeChange, revision?: RevisionTag): void;
    [disposeSymbol](): void;
}
//# sourceMappingURL=sharedTreeChangeEnricher.d.ts.map