import { type SceneActivation, type ScenePermission, type ScenePrincipal } from './contracts.js'; import type { SceneContextProvider } from './execution.js'; import { SceneCapabilityRegistry } from './registry.js'; import { SceneRepository } from './repository.js'; export declare class SceneSetupError extends Error { readonly missing: string[]; constructor(missing: string[]); } /** User-facing operations share one authorization boundary, independent of the UI. */ export declare class SceneApplicationService { private readonly repository; private readonly providers; private readonly authorize; private readonly clock; private readonly modelReadiness; constructor(repository: SceneRepository, providers: SceneCapabilityRegistry, authorize: (activation: SceneActivation) => Promise, clock?: () => number, modelReadiness?: () => string[]); get database(): import("node:sqlite").DatabaseSync; preflight(principal: ScenePrincipal, value: unknown): Promise<{ ready: boolean; missing: string[]; }>; private checkReadiness; start(principal: ScenePrincipal, value: unknown, requestId: string): Promise; /** Commit only after a successful preflight; contains no asynchronous effects. */ startAfterPreflight(principal: ScenePrincipal, value: unknown, requestId: string): SceneActivation; check(principal: ScenePrincipal, activationId: string, requestId: string): string; transition(principal: ScenePrincipal, id: string, value: unknown): Promise; prepareTransition(principal: ScenePrincipal, id: string, value: unknown): Promise; /** The exact revision fences changes made while asynchronous readiness checks were running. */ transitionAfterPreflight(principal: ScenePrincipal, id: string, value: unknown): SceneActivation; configure(principal: ScenePrincipal, id: string, value: unknown): SceneActivation; writeNotes(principal: ScenePrincipal, id: string, value: unknown): number; createWorkItem(principal: ScenePrincipal, id: string, value: unknown): import("./repository.js").SceneWorkItem; setSchedule(principal: ScenePrincipal, id: string, triggerKey: string, value: unknown): number; updateWorkItem(principal: ScenePrincipal, id: string, value: unknown): import("./repository.js").SceneWorkItem; }