import { type FastifyInstance } from 'fastify'; import type { FleetQueryService } from '../application/fleet-query-service.js'; import type { RoleRepository } from '../application/role-repository.js'; import type { RoleSessionControl } from '../application/session-control.js'; import type { StructuredLogService } from '../application/log-service.js'; import type { RoleCommandService } from '../application/role-command-service.js'; import type { RoleCreationService } from '../application/role-creation-service.js'; import type { WatchdogQueryService } from '../watchdog/query.js'; import { AuditSink } from './audit.js'; import { WebAuth } from './auth.js'; import { FleetEventBus } from './events.js'; import type { FleetConfigService } from './fleet-config-service.js'; import type { MergedTopology } from './topology-model.js'; import type { TopologyDraftStore } from './topology-draft-store.js'; import type { TopologyPromoteService } from './topology-promote.js'; import type { RoleRemovalService } from '../application/role-removal-service.js'; import type { TaskRoomApplicationService } from '../application/task-room-service.js'; export interface WebServices { query: FleetQueryService; repository: RoleRepository; session(roleId: string): Promise; logs: StructuredLogService; commands: RoleCommandService; creation: RoleCreationService; audit?: AuditSink; events?: FleetEventBus; watchdogs?: WatchdogQueryService; configuration?: FleetConfigService; topology?: () => Promise; topologyDrafts?: TopologyDraftStore; topologyPromote?: TopologyPromoteService; removal?: RoleRemovalService; taskRooms?: TaskRoomApplicationService; } export interface WebServer { app: FastifyInstance; auth: WebAuth; audit: AuditSink; events: FleetEventBus; close(): Promise; } export declare function buildWebServer(services: WebServices, boundary: { origin: string; host: string; }, options?: { auth?: WebAuth; }): Promise;