import { TimedEventMarker } from '@neurodevs/node-lsl'; import { DeviceFactory, DeviceName } from './BiosensorDeviceFactory.js'; export default class BiosensorStreamingOrchestrator implements StreamingOrchestrator { static Class?: StreamingOrchestratorConstructor; private deviceNames; private xdfRecordPath?; private webSocketPortStart?; private eventMarkers?; private factory; private devices; private recorder?; private gateway?; private emitter?; protected constructor(options: StreamingOrchestratorConstructorOptions); static Create(options: StreamingOrchestratorOptions): Promise; start(): Promise; private initialize; private createDeviceBundle; private get deviceSpecifications(); private startXdfRecorderIfExists; private openWebSocketGatewayIfExists; private startStreamingDevices; stop(): Promise; private disconnectDevices; private destroyEmitterIfExists; private destroyGatewayIfExists; private finishRecorderIfExists; private static BiosensorDeviceFactory; } export interface StreamingOrchestrator { start(): Promise; stop(): Promise; } export type StreamingOrchestratorConstructor = new (options: StreamingOrchestratorConstructorOptions) => StreamingOrchestrator; export interface StreamingOrchestratorOptions { deviceNames: DeviceName[]; xdfRecordPath?: string; webSocketPortStart?: number; eventMarkers?: TimedEventMarker[]; } export interface StreamingOrchestratorConstructorOptions extends StreamingOrchestratorOptions { factory: DeviceFactory; }