import { Env } from "../../dists/env.js"; import { ImmutableMap } from "../../utility/immutable.js"; import { SqLinker } from "../SqLinker.js"; import { Import, SqModule } from "./SqModule.js"; import { SqModuleOutput } from "./SqModuleOutput.js"; export type SqProjectHead = { hash: string; }; export type ModulePointer = { name: string; hash: string | undefined; }; type LoadingStatus = { type: "not-loaded"; } | { type: "loaded"; } | { type: "circular"; path: Import[]; } | { type: "failed"; }; type ResolutionData = { type: "loading"; } | { type: "failed"; value: string; } | { type: "loaded"; value: string; }; export type ModuleData = { type: "loading"; } | { type: "failed"; value: string; } | { type: "loaded"; value: SqModule; }; type ProjectStateData = { heads: ImmutableMap; resolutions: ImmutableMap; modules: ImmutableMap; environment: Env; outputs: ImmutableMap; linker: SqLinker; }; export declare class ProjectState implements ProjectStateData { readonly heads: ProjectStateData["heads"]; readonly modules: ProjectStateData["modules"]; readonly resolutions: ProjectStateData["resolutions"]; readonly outputs: ProjectStateData["outputs"]; readonly environment: ProjectStateData["environment"]; readonly linker: ProjectStateData["linker"]; private constructor(); static init(params: { linker: SqLinker; environment?: Env; }): ProjectState; withEnvironment(environment: Env): ProjectState; clone(params: Partial>): ProjectState; withModule(module: SqModule): ProjectState; withOutput(output: SqModuleOutput): ProjectState; getModuleDataByPointer(modulePointer: ModulePointer): ModuleData | undefined; getParents(modulePointer: ModulePointer): string[]; getLoadingStatus(modulePointer: ModulePointer): LoadingStatus; getOutput(module: SqModule, environment: Env): SqModuleOutput | undefined; gc(): ProjectState; } export {}; //# sourceMappingURL=ProjectState.d.ts.map