import { Option } from "../types/config/options"; import { ServiceContainer, bootstrapContainer } from "./bootstrap"; import { uuidv7 } from "./shared"; import { IOptionManager, IAuthManager, ISocketChannelManager, } from "../types/services/managers"; import { ILogger, ILoggerFactory, } from "../types/services/clients"; import { IConnection } from "../types/services/connection"; export class Socket { private instanceId: string; private container: ServiceContainer; private abortController: AbortController; // Add abort controller for cancellation // Public API - expose through interfaces for clean contracts public readonly optionManager: IOptionManager; public readonly auth: IAuthManager; public readonly connection: IConnection; public readonly channels: ISocketChannelManager; private logger: ILogger; constructor(options?: Partial