import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service, Characteristic } from 'homebridge';
import { EcowittAccessory } from './EcowittAccessory';
import express from 'express';
interface SensorType {
    type: string;
    channel: number | undefined;
    accessory: EcowittAccessory | undefined;
    id: string | undefined;
    uuid: string | undefined;
}
interface BaseStationInfoType {
    model: string;
    deviceName: string;
    deviceIP: string;
    serialNumber: string;
    shortSerial: string;
    protocol: string;
    hardwareRevision: string;
    softwareRevision: string;
    firmwareRevision: string;
    frequency: string;
    MAC: string;
    PASSKEY: string;
    sensors: SensorType[];
}
/**
 * HomebridgePlatform
 * This class is the main constructor for your plugin, this is where you should
 * parse the user config and discover/register accessories with Homebridge.
 */
export declare class EcowittPlatform implements DynamicPlatformPlugin {
    readonly log: Logger;
    readonly config: PlatformConfig;
    readonly api: API;
    readonly Service: typeof Service;
    readonly Characteristic: typeof Characteristic;
    readonly accessories: PlatformAccessory[];
    dataReportServer: express.Application;
    lastDataReport: null;
    registeredProperties: string[];
    consumedReportData: string[];
    unconsumedReportData: string[];
    validatorsReportData: string[];
    requiredReportData: string[];
    ignoreableReportData: string[];
    protocolCheckFieldsWU: string[];
    baseStationInfo: BaseStationInfoType;
    constructor(log: Logger, config: PlatformConfig, api: API);
    serviceUuid(name: string): string;
    serviceId(name: string, channel: number | undefined): string;
    shortServiceId(name: string, channel: number | undefined): string;
    isEcowitt(): boolean;
    isAmbient(): boolean;
    /**
     * This function is invoked when homebridge restores cached accessories from disk at startup.
     * It should be used to setup event handlers for characteristics and update respective values.
     */
    configureAccessory(accessory: PlatformAccessory): void;
    onDataReport(dataReport: any): Promise<void>;
    addSensorType(add: boolean, type: string, channel?: number | undefined): void;
    registerAccessories(dataReport: any): void;
    createAccessory(sensor: any, accessory: any): void;
    updateAccessories(dataReport: any): void;
}
export {};
//# sourceMappingURL=EcowittPlatform.d.ts.map