import { WorkbenchHostHandle, WorkbenchContribution } from '@tutti-os/workbench-surface'; type WorkbenchHostDiagnosticEvent = "workbench.host.coordinator.dispose_failed" | "workbench.host.session.dispose_failed"; interface WorkbenchDiagnosticsPort { report(input: { readonly error: unknown; readonly event: WorkbenchHostDiagnosticEvent; }): Promise | void; } interface WorkbenchScope { readonly id: string; readonly kind: "room" | "workspace"; } interface WorkbenchAuthenticatedPrincipalSnapshot { readonly id: string; } interface WorkbenchSnapshotPartition { readonly principal?: WorkbenchAuthenticatedPrincipalSnapshot; readonly scope: WorkbenchScope; } interface WorkbenchHostSessionResolution { readonly hostInput: THostInput; readonly state: TState; } interface WorkbenchHostSessionOptions { readonly diagnostics?: WorkbenchDiagnosticsPort; readonly partition: WorkbenchSnapshotPartition; readonly resolve: (update: TUpdate, current: WorkbenchHostSessionResolution | null) => WorkbenchHostSessionResolution; } declare class WorkbenchHostSession { readonly partition: WorkbenchSnapshotPartition; private current; private disposed; private readonly disposalCallbacks; private readonly diagnostics?; private readonly listeners; private readonly resolve; private surfaceHandle; private surfaceOwner; constructor(options: WorkbenchHostSessionOptions); get isDisposed(): boolean; attachSurface(handle: WorkbenchHostHandle | null, owner: object): void; getAttachedSurface(): WorkbenchHostHandle | null; getHostInput(): THostInput; registerDisposable(dispose: () => void): () => void; subscribe(listener: () => void): () => void; update(update: TUpdate): THostInput; dispose(): void; private assertActive; private reportDisposalError; } declare function areWorkbenchSnapshotPartitionsEqual(left: WorkbenchSnapshotPartition, right: WorkbenchSnapshotPartition): boolean; declare const workbenchHostSessionConfigurationBrand: unique symbol; interface WorkbenchHostSessionConfiguration { readonly [workbenchHostSessionConfigurationBrand]: { readonly hostInput: THostInput; readonly state: TState; readonly update: TUpdate; }; readonly createSession: (partition: WorkbenchSnapshotPartition) => WorkbenchHostSession; } interface WorkbenchHostSessionOpenInput { readonly configuration: WorkbenchHostSessionConfiguration; readonly partition: WorkbenchSnapshotPartition; } interface WorkbenchHostSessionLease { readonly release: () => void; readonly session: WorkbenchHostSession; } interface WorkbenchHostCoordinatorOptions { readonly diagnostics?: WorkbenchDiagnosticsPort; } declare function createWorkbenchHostSessionConfiguration(input: { readonly createSession: (partition: WorkbenchSnapshotPartition) => WorkbenchHostSession; }): WorkbenchHostSessionConfiguration; declare class WorkbenchHostCoordinator { private disposed; private readonly options; private readonly sessionsByScope; constructor(options?: WorkbenchHostCoordinatorOptions); open(input: WorkbenchHostSessionOpenInput): WorkbenchHostSessionLease; get(configuration: WorkbenchHostSessionConfiguration, partition: WorkbenchSnapshotPartition): WorkbenchHostSession | null; dispose(): void; private assertActive; private release; private disposeSession; private reportDisposalError; } interface WorkbenchCapabilityFactoryDescriptor { readonly id: string; readonly order: number; readonly create: () => WorkbenchContribution | null; } interface WorkbenchCapabilityRegistryInput { readonly capabilityFactories: readonly WorkbenchCapabilityFactoryDescriptor[]; } interface WorkbenchCapabilityRegistryResult { readonly contributions: readonly WorkbenchContribution[]; } declare function resolveWorkbenchCapabilityRegistry(input: WorkbenchCapabilityRegistryInput): WorkbenchCapabilityRegistryResult; export { type WorkbenchAuthenticatedPrincipalSnapshot, type WorkbenchCapabilityFactoryDescriptor, type WorkbenchCapabilityRegistryInput, type WorkbenchCapabilityRegistryResult, type WorkbenchDiagnosticsPort, WorkbenchHostCoordinator, type WorkbenchHostCoordinatorOptions, type WorkbenchHostDiagnosticEvent, WorkbenchHostSession, type WorkbenchHostSessionConfiguration, type WorkbenchHostSessionLease, type WorkbenchHostSessionOpenInput, type WorkbenchHostSessionOptions, type WorkbenchHostSessionResolution, type WorkbenchScope, type WorkbenchSnapshotPartition, areWorkbenchSnapshotPartitionsEqual, createWorkbenchHostSessionConfiguration, resolveWorkbenchCapabilityRegistry };