import type { SessionPlan } from "../../store/plan.js"; import type { AnyAppEvent } from "../events/app-event.js"; import type { PersistencePort } from "../ports/persistence-port.js"; import type { Disposable } from "./disposable.js"; export type PlanListener = () => void; export declare class PlanController implements Disposable { private readonly persistence; private plan; private loadGeneration; private activeSessionId; private readonly listeners; constructor(persistence: PersistencePort); current(): SessionPlan | undefined; subscribe(listener: PlanListener): () => void; observe(event: AnyAppEvent): void; load(sessionId: string): Promise; refresh(sessionId: string): Promise; clear(): void; approve(): Promise; discard(): Promise; dispose(): void; private notify; }