import { type LocalAppPreviewSnapshot } from '@xopcai/gateway-contract'; import type { Config } from '../config/schema.js'; import type { ExtensionLoader } from '../extensions/index.js'; import type { ProjectService } from '../projects/index.js'; import { LocalAppStore } from './store.js'; import { LocalAppSnapshotStore } from './snapshot-store.js'; import type { CreateLocalAppInput, LocalApp, LocalAppAcceptanceRun, LocalAppDetail, LocalAppFixGuidance, LocalAppFixGuidanceInput, LocalAppPreviewTarget, LocalAppValidationResult, LocalAppUiGrant, RecordLocalAppAcceptanceInput } from './types.js'; export declare class LocalAppRevisionConflictError extends Error { } export declare class LocalAppAcceptanceValidationError extends Error { } export interface LocalAppServiceOptions { projects: ProjectService; workspaceRoot: string; getConfig: () => Config; saveConfig: (config: Config) => Promise<{ saved: boolean; error?: string; }>; getExtensionLoader: () => ExtensionLoader | null; emit: (type: string, payload: unknown) => void; } export declare class LocalAppService { private readonly options; private readonly store; private readonly snapshots; constructor(options: LocalAppServiceOptions, store?: LocalAppStore, snapshots?: LocalAppSnapshotStore); private recoveryRoot; private recoveryMarker; /** Reconcile interrupted mutations before any extension code or request can run. */ recoverPendingReleases(): Promise; private recoverReleases; private mutateRelease; list(): LocalApp[]; get(id: string): LocalAppDetail | null; getUiGrant(extensionId: string): LocalAppUiGrant; getCapabilityAccess(extensionId: string, expectedManifestDigest: string): { releaseId: string; bindings: { id: "xopc.notes.get" | "xopc.notes.list" | "xopc.tasks.get" | "xopc.tasks.list" | "xopc.notes.create" | "xopc.notes.update" | "xopc.notes.append"; majorVersion: number; descriptorDigest: string; }[]; }; grantUiPermissions(extensionId: string, expectedManifestDigest: string): LocalAppUiGrant; create(input: CreateLocalAppInput): LocalAppDetail; createFromPreview(input: CreateLocalAppInput & { markup: string; styles: string; script: string; }): LocalAppDetail; private createInternal; resolveDraftPreview(previewToken: string): LocalAppPreviewTarget | null; resolveSnapshotPreview(previewToken: string, sourceHash: string): LocalAppPreviewTarget | null; private validateRoot; validate(id: string): LocalAppValidationResult; materializeSnapshot(id: string): LocalAppPreviewSnapshot; getSnapshot(id: string, sourceHash: string): LocalAppPreviewSnapshot | null; private withSnapshotPreviewUrl; getFixGuidance(id: string, input: LocalAppFixGuidanceInput): LocalAppFixGuidance; recordAcceptance(id: string, input: RecordLocalAppAcceptanceInput): LocalAppAcceptanceRun; flushAcceptanceEvents(): void; private releaseRoot; private refreshExtensions; private assertInstalledRuntime; private activateArtifact; install(id: string): Promise; private installRelease; rollback(id: string, releaseId: string): Promise; private rollbackRelease; setEnabled(id: string, enabled: boolean): Promise; private setReleaseEnabled; uninstall(id: string): Promise; private uninstallRelease; }