import { ChangeSubscription, CoreCommandStack, CoreModelManager } from '../core';
import { WorkingCopyManager } from './core-command-stack-impl';
export declare class CoreModelManagerImpl<K> implements CoreModelManager<K> {
    /** Model storage. */
    private readonly _modelStore;
    /** A pointer to the commandStack for editing the models. */
    private readonly _commandStack;
    private _subscriptions;
    private _allSubscriptions;
    constructor(commandStackFactory?: (workingCopyManager: WorkingCopyManager<K>) => CoreCommandStack<K>);
    /**
     * The callback provided to the CoreCommandStackImpl to be able to notify
     * subscribers of any command executed (execute, executeAndAppend, undo, redo )
     *
     * @param deltas the command result sent by 'execute, executeAndAppend, undo or redo' done in CoreCommandStackImpl
     */
    private changeOnCommandStack;
    getModelId(model: object): K | undefined;
    getModel<M extends object = object>(modelId: K): M | undefined;
    setModel(modelId: K, model: object): void;
    getModelIds(): K[];
    removeModel<M extends object = object>(modelId: K): M | undefined;
    getCommandStack(): CoreCommandStack<K>;
    private addSubscription;
    private addAllSubscription;
    private deleteSubscription;
    private deleteAllSubscription;
    subscribe<M extends object = object>(modelId?: K): ChangeSubscription<K, M>;
    /**
     * Obtain an iterable over all subscriptions pertaining to the given
     * model ID.
     *
     * @param modelId a model ID for which to get subscriptions
     * @returns an iterator over all subscriptions specific to the `modelId` (if any)
     *   followed by the general subscriptions
     */
    protected subscriptions<M extends object = object>(modelId: K): Iterable<ChangeSubscription<K, M>>;
}
//# sourceMappingURL=core-model-manager-impl.d.ts.map