/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import type { DependencyManager } from '../../../graph/DependencyManager.js';
import type { PureModel } from '../../../graph/PureModel.js';
import { type ObserverContext } from './CoreObserverHelper.js';
export declare const observe_DependencyManager: (metamodel: DependencyManager) => DependencyManager;
/**
 * NOTE: when we observe the graph, it is important to do this synchronously
 * to not mess with `mobx`. Since most of the indices of the graph are computed values
 * we have seen cases where asynchronousity hurts us and causes really ellusive bugs
 * since `mobx` observabilty does not track in asynchronous context and `makeObservable`
 * is sort of equivalent to triggering observability.
 *
 * See https://mobx.js.org/understanding-reactivity.html#understanding-reactivity
 * See https://github.com/finos/legend-studio/issues/1121
 *
 * On the other hand, for performance purpose, we would need to observe all of graph
 * elements asynchronously, as such, we would do that separately in the method
 * {@link observe_GraphElements}
 */
export declare const observe_Graph: (metamodel: PureModel) => PureModel;
/**
 * This method is designed for performance purpose.
 *
 * NOTE: this might have some impact on `mobx` observability, see the note
 * of {@link observe_Graph}
 */
export declare const observe_GraphElements: (metamodel: PureModel, context: ObserverContext) => Promise<void>;
//# sourceMappingURL=GraphObserverHelper.d.ts.map