import { Mutex } from 'async-mutex'; import { Logger } from 'homebridge'; import { InfinityRestClient } from './rest_client'; import EventEmitter from 'events'; import Config, { Zone as CZone, Activity3 as CActivity } from './interface_config'; import Location from './interface_locations'; import Profile from './interface_profile'; import Status from './interface_status'; declare abstract class BaseModel { protected readonly infinity_client: InfinityRestClient; protected data_object: object; protected data_object_hash?: string; protected HASH_IGNORE_KEYS: Set; protected write_lock: Mutex; protected log: Logger; constructor(infinity_client: InfinityRestClient); abstract getPath(): string; protected hashDataObject(data?: object): string; fetch(): Promise; protected forceFetch(): Promise; protected forceFetchInternal(): Promise<[string, object]>; } export declare class LocationsModel extends BaseModel { protected data_object: Location; getPath(): string; getSystems(): Promise; } declare abstract class BaseSystemModel extends BaseModel { protected readonly infinity_client: InfinityRestClient; readonly serialNumber: string; protected readonly log: Logger; protected readonly events: EventEmitter; private last_updated; protected HASH_IGNORE_KEYS: Set; constructor(infinity_client: InfinityRestClient, serialNumber: string, log: Logger, events: EventEmitter); protected forceFetch(): Promise; } export declare class SystemProfileModel extends BaseSystemModel { protected data_object: Profile; getPath(): string; getName(): Promise; getBrand(): Promise; getModel(): Promise; getFirmware(): Promise; getZones(): Promise>; } export declare class SystemStatusModel extends BaseSystemModel { protected data_object: Status; getPath(): string; getUnits(): Promise; getOutdoorTemp(): Promise; getFilterUsed(): Promise; getMode(): Promise; private getZone; getZoneConditioning(zone: string): Promise; getZoneFan(zone: string): Promise; getZoneOpen(zone: string): Promise; getZoneTemp(zone: string): Promise; getZoneHumidity(zone: string): Promise; getZoneActivity(zone: string): Promise; getZoneCoolSetpoint(zone: string): Promise; getZoneHeatSetpoint(zone: string): Promise; } export declare class SystemConfigModelReadOnly extends BaseSystemModel { protected data_object: Config; getPath(): string; protected static getUnits(data_object: Config): string; getUnits(): Promise; getTempBounds(): Promise<[number, number]>; getMode(): Promise; protected static getZone(data_object: Config, zone: string): CZone; protected getZone(zone: string): Promise; getZoneName(zone: string): Promise; getZoneHoldStatus(zone: string): Promise<[string, string]>; protected static getZoneActivity(data_object: Config, zone: string): string; getZoneActivity(zone: string): Promise; protected static getZoneActivityConfig(data_object: Config, zone: string, activity_name: string): CActivity; protected getZoneActivityConfig(zone: string, activity_name: string): Promise; getZoneActivityFan(zone: string, activity: string): Promise; getZoneActivityCoolSetpoint(zone: string, activity: string): Promise; getZoneActivityHeatSetpoint(zone: string, activity: string): Promise; getZoneNextActivityTime(zone: string): Promise; } interface ConfigMutation { (data_object: Config): void; } export declare class SystemConfigModel extends SystemConfigModelReadOnly { mutations: ConfigMutation[]; fetch(): Promise; private push; private mutate; private forcePush; setMode(mode: string): Promise; private static mutateMode; setZoneActivityHold(zone: string, activity: string, hold_until: string | null): Promise; private static mutateZoneActivityHold; setZoneActivityManualHold(zone: string, clsp: number | null, htsp: number | null, hold_until: string | null, fan?: string | null): Promise; private static mutateZoneActivityManualHold; } export declare class SystemModel { protected readonly infinity_client: InfinityRestClient; readonly serialNumber: string; status: SystemStatusModel; config: SystemConfigModel; profile: SystemProfileModel; log: Logger; events: EventEmitter; constructor(infinity_client: InfinityRestClient, serialNumber: string); } export {}; //# sourceMappingURL=models.d.ts.map