import { Simulator } from '@ecoflow/apis/simulations/simulator';
import { AccessoryConfig, PlatformConfig } from 'homebridge';
export interface EcoFlowConfig extends PlatformConfig {
    devices: DeviceConfig[];
}
export declare enum DeviceModel {
    Delta2Max = "Delta 2 Max",
    Delta2 = "Delta 2",
    DeltaPro3 = "Delta Pro 3",
    PowerStream = "PowerStream",
    SmartPlug = "Smart Plug"
}
export declare enum LocationType {
    EU = "EU",
    US = "US"
}
export type SerialNumber = string;
export interface DeviceInfoConfig {
    name: string;
    serialNumber: SerialNumber;
}
export interface DeviceAccessConfig extends DeviceInfoConfig {
    location: LocationType;
    accessKey: string;
    secretKey: string;
    model: DeviceModel;
    reconnectMqttTimeoutMs?: number;
    simulate?: boolean;
    simulator?: new () => Simulator;
    simulateQuotaTimeoutMs?: number;
    simulateStatusTimeoutMs?: number;
}
export interface DeviceConfig extends AccessoryConfig, DeviceAccessConfig {
    disabled: boolean;
    battery?: BatteryDeviceConfig;
    powerStream?: PowerStreamDeviceConfig;
    powerOcean?: PowerOceanDeviceConfig;
    outlet?: OutletDeviceConfig;
    setReplyWaitResponseTimeoutMs?: number;
}
export interface BatteryDeviceConfig {
    additionalCharacteristics: AdditionalBatteryCharacteristicType[];
}
export type AdditionalBatteryCharacteristicType = AdditionalOutletCharacteristicType | AdditionalBatteryOutletCharacteristicType;
export declare enum AdditionalBatteryOutletCharacteristicType {
    BatteryLevel = "Battery Level, %",
    InputConsumptionInWatts = "Input Consumption, W",
    ChargingState = "Charging State",
    StatusLowBattery = "Status Low Battery"
}
export declare enum AdditionalOutletCharacteristicType {
    OutputVoltage = "Output Voltage, V",
    OutputCurrent = "Output Current, A",
    OutputConsumptionInWatts = "Output Consumption, W"
}
export declare enum PowerStreamConsumptionType {
    W600 = 600,
    W800 = 800
}
export interface PowerStreamDeviceConfig extends PowerOceanDeviceConfig {
    type: PowerStreamConsumptionType;
}
export interface PowerOceanDeviceConfig {
    batteryAdditionalCharacteristics?: AdditionalBatteryCharacteristicType[];
    pvAdditionalCharacteristics?: AdditionalBatteryCharacteristicType[];
    inverterAdditionalCharacteristics?: AdditionalBatteryCharacteristicType[];
}
export interface OutletDeviceConfig {
    additionalCharacteristics?: AdditionalOutletCharacteristicType[];
}
