export interface PinState { pin: number; state: number; name: string; timestamp: Date; } export interface PinChange { pin: number; previousState: number; currentState: number; timestamp: Date; } export interface BedHardwareConfig { type: 'serial' | 'mqtt'; serial?: { portPath: string; baudRate?: number; }; mqtt?: { topics?: { pinState: string; pinChange: string; initialization: string; }; }; } export interface IBedHardware { connect(): Promise; disconnect(): Promise; getPinState(pin: number): PinState | undefined; getAllPinStates(): PinState[]; isConnected(): boolean; // Event emitter methods on(event: 'connected', listener: () => void): this; on(event: 'disconnected', listener: () => void): this; on(event: 'error', listener: (error: Error) => void): this; on(event: 'initialized', listener: () => void): this; on(event: 'pinInitialized', listener: (pinState: PinState) => void): this; on(event: 'pinChanged', listener: (pinChange: PinChange) => void): this; on(event: string, listener: (...args: unknown[]) => void): this; emit(event: 'connected'): boolean; emit(event: 'disconnected'): boolean; emit(event: 'error', error: Error): boolean; emit(event: 'initialized'): boolean; emit(event: 'pinInitialized', pinState: PinState): boolean; emit(event: 'pinChanged', pinChange: PinChange): boolean; emit(event: string, ...args: unknown[]): boolean; } export type BedHardwareType = 'serial' | 'mqtt';