import type { Router, Application } from 'express' import type { ServiceContainer } from './container.js' export interface ModuleMetadata { id: string name: string version: string basePath: string dependencies?: string[] order?: number } export interface ModuleLifecycle { onLoad?(container: ServiceContainer): void | Promise onUnload?(container: ServiceContainer): void | Promise onActivate?(container: ServiceContainer): void | Promise onDeactivate?(container: ServiceContainer): void | Promise } export interface ApiModule { metadata: ModuleMetadata lifecycle?: ModuleLifecycle createRouter: (container: ServiceContainer) => Router | Promise } export interface LegacyApiModule { name: string basePath: string init?: (app: Application, container: ServiceContainer) => void | Promise createRouter: (container: ServiceContainer) => Router | Promise }