@altostra/core
Version:
Core library for shared types and logic
42 lines (41 loc) • 1.41 kB
TypeScript
import type { Blueprint, BlueprintData } from "../../blueprint";
import type { Project } from "../Types";
export interface IProjectManager {
/**
* @spec
* Determines whether the manager is in a state to perform operations.
* False value indicates that all operations will fail if attempted.
*/
canOperate: boolean;
/**
* @spec
* Determines whether a project is available to perform operations or must be initialized.
* False indicates that all operations that depend on an existing project will fail,
* except for project initialization.
*/
projectAvailable: Promise<boolean>;
/**
* @spec
* Inits a new project and creates all required structures for it.
* If a project is determined to already be initialized, does nothing and returns successfully.
*/
initProject(projectInitializer?: ProjectInitializer): Promise<Project>;
/**
* @spec
* Stores the given Blueprint in the project.
*/
storeBlueprint(blueprint: Blueprint): Promise<void>;
/**
* @spec
* Gets the current Blueprint from the project.
*/
getBlueprint(): Promise<Blueprint | undefined>;
/**
* @spec
* Gets the current Project
*/
getProject(): Promise<Project>;
}
export declare type ProjectInitializer = () => Promise<Project>;
export declare function defaultProject(): Project;
export declare const defaultBlueprintData: BlueprintData;