export type ProvisioningMethod = 'Remote Account' | 'Local Account' | 'Local Wi-Fi' | 'Local MQTT';
export interface DysonAccountBase {
    china: boolean;
    finishAuth?: boolean;
    startAuth?: boolean;
}
export interface DysonAccountLogin extends DysonAccountBase {
    email: string;
    password: string;
}
export interface DysonAccountToken extends DysonAccountBase {
    token: string;
    email?: string;
    password?: string;
}
export type DysonAccount = DysonAccountLogin | DysonAccountToken;
export interface DeviceConfigNetwork {
    host: string;
    port: number;
}
export interface DeviceConfigLocalAccount extends DeviceConfigNetwork {
    serialNumber: string;
}
export interface DeviceConfigLocalWiFi extends DeviceConfigNetwork {
    name: string;
    ssid: string;
    password: string;
}
export interface DeviceConfigLocalMqtt extends DeviceConfigNetwork {
    name: string;
    serialNumber: string;
    password: string;
    rootTopic: string;
}
export type EntityName = 'Air Purifier' | 'Air Quality Sensor' | 'Composed Air Purifier' | 'Humidity Sensor' | 'Temperature Sensor' | 'Thermostat';
export type DebugFeatures = 'Log Endpoint Debug' | 'Log API Headers' | 'Log API Bodies' | 'Log MQTT Client' | 'Log MQTT Payloads' | 'Log Serial Numbers' | 'Log Debug as Info';
export interface ConfigBase {
    name: string;
    type: string;
    version: string;
    whiteList: string[];
    blackList: string[];
    entityWhiteList: EntityName[];
    entityBlackList: EntityName[];
    deviceEntityBlackList: {
        [serialNumber: string]: EntityName[];
    };
    provisioningMethod: ProvisioningMethod;
    wildcardTopic: boolean;
    debug: boolean;
    debugFeatures: DebugFeatures[];
    unregisterOnShutdown: boolean;
}
export interface ConfigAccount extends ConfigBase {
    dysonAccount: DysonAccount;
}
export interface ConfigRemoteAccount extends ConfigAccount {
    provisioningMethod: 'Remote Account';
}
export interface ConfigLocalAccount extends ConfigAccount {
    provisioningMethod: 'Local Account';
    devices: DeviceConfigLocalAccount[];
}
export interface ConfigLocalWiFi extends ConfigBase {
    provisioningMethod: 'Local Wi-Fi';
    devices: DeviceConfigLocalWiFi[];
}
export interface ConfigLocalMqtt extends ConfigBase {
    provisioningMethod: 'Local MQTT';
    devices: DeviceConfigLocalMqtt[];
}
export type Config = ConfigRemoteAccount | ConfigLocalAccount | ConfigLocalWiFi | ConfigLocalMqtt;
//# sourceMappingURL=config-types.d.ts.map