export type S7DataType = 'bool' | 'byte' | 'int' | 'word' | 'dint' | 'dword' | 'lint' | 'ulint' | 'real' | 'string' | 'wstring'; export interface ReadPoint { address: string; dataType: S7DataType; stringLen?: number; } export interface WritePoint extends ReadPoint { value: any; } export interface PollPoint { address: string; dataType: S7DataType; stringLen?: number; name?: string; } export interface ChangeRecord { address: string; dataType: S7DataType; oldValue: any; newValue: any; name?: string; } export interface EnhancedClientOptions { ip: string; port: number; rack: number; slot: number; interval?: number; reconnectInterval?: number; } export interface ParsedAddr { dbNumber: number; addrType: 'DBX' | 'DBB' | 'DBW' | 'DBD'; byteOffset: number; bitOffset: number; } export interface GroupedItem { addr: ParsedAddr; item: T; } export type ChangeHandler = (changes: ChangeRecord[]) => void; export type ErrorHandler = (error: any) => void; export type ConnectHandler = () => void;