import { PluginConfig } from '@homebridge/plugin-ui-utils/ui.interface';
import { Logger, PlatformConfig } from 'homebridge';
import { ApplianceConfig, ConfigAppliances, ConfigPlugin } from '../../config-types.js';
import { ClientIPC } from './client-ipc.js';
export interface ConfigDiff {
    key: string;
    from: unknown;
    to: unknown;
}
export declare class Config {
    readonly log: Logger;
    readonly ipc: ClientIPC;
    savedConfig?: PluginConfig;
    global: Partial<ConfigPlugin>;
    appliances: ConfigAppliances;
    onGlobal?: (global: Partial<ConfigPlugin>) => void;
    readyPromise: Promise<void>;
    activePromise: Promise<PlatformConfig>;
    constructor(log: Logger, ipc: ClientIPC);
    getConfig(): Promise<void>;
    getActiveConfig(): Promise<PlatformConfig>;
    putConfig(save?: boolean): Promise<void>;
    diffObject(to: object, from: object, keyPrefix?: string): ConfigDiff[];
    diffArray(to: unknown[], from: unknown[], keyPrefix?: string): ConfigDiff[];
    checkIfModified(config: PluginConfig): Promise<void>;
    showRestartRequired(changes: ConfigDiff[], isUnsaved: boolean): void;
    getGlobal(): Promise<Partial<ConfigPlugin>>;
    setGlobal(config: ConfigPlugin): Promise<void>;
    getAppliance(haid: string): Promise<ApplianceConfig>;
    setAppliance(haid: string, config: ApplianceConfig): Promise<void>;
}
//# sourceMappingURL=config.d.ts.map