import ModbusRTU from "modbus-serial"; import { ReadCoilResult, ReadRegisterResult } from "modbus-serial/ModbusRTU"; import { ModbusEntity, ModbusFunction, ModbusForm } from "./modbus"; import { Content, Endianness } from "@node-wot/core"; declare class ModbusTransaction { connection: ModbusConnection; unitId: number; registerType: ModbusEntity; function: ModbusFunction; base: number; quantity: number; content?: Buffer; operations: Array; endianness: Endianness; constructor(connection: ModbusConnection, unitId: number, registerType: ModbusEntity, func: ModbusFunction, base: number, quantity: number, endianness: Endianness, content?: Buffer); inform(op: PropertyOperation): void; trigger(): void; execute(): Promise; } export type ModbusFormWithDefaults = ModbusForm & Required>; export declare class ModbusConnection { host: string; port: number; client: ModbusRTU; connecting: boolean; connected: boolean; timer: NodeJS.Timeout | null; currentTransaction: ModbusTransaction | null; queue: Array; config: { connectionTimeout: number; operationTimeout: number; connectionRetryTime: number; maxRetries: number; }; constructor(host: string, port: number, config?: { connectionTimeout?: number; operationTimeout?: number; connectionRetryTime?: number; maxRetries?: number; }); enqueue(op: PropertyOperation): void; connect(): Promise; trigger(): Promise; close(): void; readModbus(transaction: ModbusTransaction): Promise; writeModbus(transaction: ModbusTransaction): Promise; private modbusstop; } export declare class PropertyOperation { unitId: number; registerType: ModbusEntity; base: number; quantity: number; function: ModbusFunction; content?: Buffer; endianness: Endianness; transaction: ModbusTransaction | null; contentType: string; resolve?: (value?: Content | PromiseLike) => void; reject?: (reason?: Error) => void; constructor(form: ModbusFormWithDefaults, endianness: Endianness, content?: Buffer); execute(): Promise<(Content | PromiseLike) | undefined>; done(base?: number, buffer?: Buffer): void; failed(reason: Error): void; } export {};