import * as node from 'hsnode'; declare const log: node.Log; import { CfgSettings } from '../core/CfgSettings'; import { FtpSettings } from '../comm/ftpSrv'; export interface DeviceSettings { id: string; name: string; type: string; host: string; prot?: string; port: number; useAlarm?: boolean; recDir?: string; user?: string; passwd?: string; } export interface Device { initDevice(settings: CfgSettings): Promise; setTime(): Promise; getSettings(): DeviceSettings; getName(): string; hasVideo(): boolean; hasAudio(): boolean; hasAlarm(): boolean; } export interface AlarmDevice extends Device { hasAlarm(): boolean; armStatus(): Promise; arm(arm: boolean): Promise; isArmed(): boolean; setAudible(audible: boolean): Promise; getAudible(): boolean; } export interface Camera extends Device { hasVideo(): boolean; hasAudio(): boolean; hasPTZ(): boolean; setRecordingDir(recDir: string): Promise; getRecordingDir(): Promise; snapPicture(): Promise; getFtpCfg(): Promise; ptzPreset(index: number): Promise; setFtpCfg(ftpSettings: FtpSettings): Promise; testFtpServer(): Promise; } export declare abstract class AbstractDevice implements Device { private settings; protected log: typeof log; hasVideo(): boolean; hasAudio(): boolean; hasAlarm(): boolean; hasMotionAlarm(): boolean; abstract setTime(): Promise; constructor(deviceSettings: DeviceSettings, settings: CfgSettings); initDevice(settings: CfgSettings): Promise; getSettings(): DeviceSettings; getName(): string; } export declare abstract class AbstractCamera extends AbstractDevice implements Camera, AlarmDevice { private audible; protected armed: boolean; constructor(device: DeviceSettings, settings: CfgSettings); initDevice(settings: CfgSettings): Promise; hasVideo(): boolean; hasAlarm(): boolean; isArmed(): boolean; hasPTZ(): boolean; setRecordingDir(recDir: string): Promise; getRecordingDir(): Promise; abstract snapPicture(): Promise; ptzPreset(index: number): Promise; abstract getFtpCfg(): Promise; abstract setFtpCfg(): Promise; abstract testFtpServer(): Promise; abstract armStatus(): Promise; abstract arm(arm: boolean): Promise; setAudible(audible: boolean): Promise; getAudible(): boolean; protected sendCommandToDevice(cmd: string, referer?: string): Promise; } export declare class DeviceList { private static list; static addDevice(device: Device): void; static getDevice(name: string): Device; static getDevices(): Device[]; } export {};