/**
 * 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 { EditorStore } from '../editor/EditorStore.js';
import { type GeneratorFn } from '@finos/legend-shared';
import { type ProjectViewerPathParams } from '../../__lib__/LegendStudioNavigation.js';
import { type Entity, type ProjectGAVCoordinates, type EntitiesWithOrigin } from '@finos/legend-storage';
import { Revision, Version } from '@finos/legend-server-sdlc';
import { type WorkflowManagerState } from '../editor/sidebar-state/WorkflowManagerState.js';
export declare class ProjectViewerStore {
    readonly editorStore: EditorStore;
    currentRevision?: Revision | undefined;
    latestVersion?: Version | undefined;
    revision?: Revision | undefined;
    version?: Version | undefined;
    initialEntityPath?: string | undefined;
    projectGAVCoordinates?: ProjectGAVCoordinates | undefined;
    workflowManagerState: WorkflowManagerState | undefined;
    constructor(editorStore: EditorStore);
    get onLatestVersion(): boolean;
    get onCurrentRevision(): boolean;
    /**
     * Since we don't dynamically change the route based on the currently opened element
     * We have to handle the following cases:
     *  1. if the element is found and then the user opens another element
     *  2. if the elemnt is not found
     * in either case, the most suitable behavior at the moment is to internalize/swallow up the entity path param
     */
    internalizeEntityPath(params: ProjectViewerPathParams): void;
    /**
     * Initialize the graph by fetching project information from the SDLC server.
     */
    private initializeWithProjectInformation;
    /**
     * Initialize the viewer store given GAV coordinate of a project.
     * This flow is different than the SDLC flow as we need to fetch the project
     * from Depot server here, where SDLC objects like project configurations
     * are not available.
     */
    private initializeWithGAV;
    buildGraph(entities: Entity[], dependencyEntitiesIndex: Map<string, EntitiesWithOrigin>): GeneratorFn<boolean>;
    initialize(params: ProjectViewerPathParams): GeneratorFn<void>;
}
//# sourceMappingURL=ProjectViewerStore.d.ts.map