import type { RunMatFilesystemProvider } from "../fs/provider-types.js"; import { type BrowserProjectResolveRequest, type BrowserProjectResolverConfig, type BrowserProjectResolverNative, type BrowserResolvedProject } from "./browser-resolver.js"; import type { PackageCacheGcPlan, PackageCacheStatus, RunMatPackageCacheProvider } from "./provider-types.js"; export interface BrowserProjectSessionHandle { setFsProvider?(provider: RunMatFilesystemProvider): Promise | void; installProjectHandoff(handoff: unknown): Promise; clearProjectHandoff(): Promise; projectRevision(): Promise; } export interface BrowserProjectSessionNative extends BrowserProjectResolverNative { decodePackageLock(input: string): unknown; encodePackageLock(lock: unknown): string; handoffFromFrozenProject(project: unknown): unknown; packageCacheStatus(provider: RunMatPackageCacheProvider): Promise; packageCacheGc(provider: RunMatPackageCacheProvider, targetBytes: bigint, retainRecentMs: bigint): Promise; } export interface BrowserProjectSessionConfig extends Omit { native: BrowserProjectSessionNative; session: BrowserProjectSessionHandle; } export interface BrowserProjectSessionResolveRequest extends BrowserProjectResolveRequest { /** * Defaults to `runmat.lock` beside the manifest. Set to `null` only for an * intentionally ephemeral embedding that must neither read nor write a lock. */ lockPath?: string | null; } export interface BrowserProjectSessionResolution { project: BrowserResolvedProject; handoff: unknown; revision: unknown; lockPath: string | null; lockWritten: boolean; } /** * Owns one resolved browser project and its immutable cache lease/mount table. * * Rust remains authoritative for lock parsing, solving, graph construction, * handoff validation, and cache policy. This class only coordinates host ports * and makes teardown explicit. */ export declare class BrowserProjectSession { private readonly config; private readonly resolver; private active; private disposed; constructor(config: BrowserProjectSessionConfig); get resolution(): BrowserProjectSessionResolution | null; get filesystem(): RunMatFilesystemProvider; get cacheLeaseError(): unknown; resolve(request: BrowserProjectSessionResolveRequest): Promise; sourceRevision(): Promise; cacheStatus(): Promise; collectCache(targetBytes: bigint, retainRecentMs?: bigint): Promise; dispose(): Promise; private readExistingLock; private writeLock; private pathExists; private rollback; } //# sourceMappingURL=project-session.d.ts.map