/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { ChangeAtomId, ChangeFamilyEditor, EditorOptions, RevisionTag, TaggedChange, TreeChunk, TreeStoredSchema } from "../core/index.js";
import { DefaultIdBasedDataEditor, LocationBasedDataEditor, type DetachedRootIds, type DetachedRootLocation, type DetachedRootsLocation, type Locator, type DataEditor, type ModularChangeFamily } from "../feature-libraries/index.js";
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
/**
 * Editor for schema changes.
 * The only currently supported operation is to replace the stored schema.
 */
export interface ISchemaEditor {
    /**
     * Updates the stored schema.
     * @param oldSchema - The schema being overwritten.
     * @param newSchema - The new schema to apply.
     */
    setStoredSchema(oldSchema: TreeStoredSchema, newSchema: TreeStoredSchema): void;
}
/**
 * SharedTree editor for transactional tree data and schema changes.
 */
export interface IIdBasedSharedTreeEditor extends DataEditor<TreeChunk, ChangeAtomId, DetachedRootIds> {
    /**
     * Editor for schema changes.
     */
    schema: ISchemaEditor;
}
export interface ILocationBasedSharedTreeEditor extends DataEditor<TreeChunk, DetachedRootLocation, DetachedRootsLocation> {
    /**
     * Editor for schema changes.
     */
    schema: ISchemaEditor;
}
/**
 * Implementation of {@link DataEditor} based on the default set of supported field kinds.
 * @sealed
 */
export declare class IdBasedSharedTreeEditBuilder extends DefaultIdBasedDataEditor implements ChangeFamilyEditor, IIdBasedSharedTreeEditor {
    private readonly changeReceiver;
    readonly schema: ISchemaEditor;
    constructor(modularChangeFamily: ModularChangeFamily, mintRevisionTag: () => RevisionTag, changeReceiver: (change: TaggedChange<SharedTreeChange>) => void, options?: EditorOptions);
}
export declare class LocationBasedSharedTreeEditBuilder extends LocationBasedDataEditor implements ILocationBasedSharedTreeEditor {
    readonly schema: ISchemaEditor;
    constructor(idBasedEditor: IIdBasedSharedTreeEditor, locator: Locator);
}
//# sourceMappingURL=sharedTreeEditBuilder.d.ts.map