import { Logger } from 'homebridge';
import { LocalStorage } from 'node-persist';
import { ConfigPlugin } from './config-types.js';
import { HomeAppliance } from './api-types.js';
import { AuthorisationStatus } from './api-ua-auth.js';
import { CommandKey, CommandKV, EventKV, OptionKey, OptionKV, ProgramDefinitionKV, ProgramKV, ProgramsKV, SettingKey, SettingKV, SettingValue, StatusKey, StatusKV, OptionValue } from './api-value.js';
import { ProgramKey } from './api-value-types.js';
export interface HomeConnectAPI {
    hasScope(scope: string): boolean;
    getAppliances(): Promise<HomeAppliance[]>;
    getAppliance(haid: string): Promise<HomeAppliance>;
    getPrograms(haid: string): Promise<ProgramsKV>;
    getAvailablePrograms(haid: string): Promise<ProgramsKV>;
    getAvailableProgram<Key extends ProgramKey>(haid: string, key: Key): Promise<ProgramDefinitionKV<Key>>;
    getActiveProgram(haid: string): Promise<ProgramKV>;
    setActiveProgram(haid: string, key: ProgramKey, options: OptionKV[]): Promise<void>;
    stopActiveProgram(haid: string): Promise<void>;
    getActiveProgramOptions(haid: string): Promise<OptionKV[]>;
    setActiveProgramOptions(haid: string, options: OptionKV[]): Promise<void>;
    getActiveProgramOption<Key extends OptionKey>(haid: string, key: Key): Promise<OptionKV<Key>>;
    setActiveProgramOption<Key extends OptionKey>(haid: string, key: Key, value: OptionValue<Key>): Promise<void>;
    getSelectedProgram(haid: string): Promise<ProgramKV>;
    setSelectedProgram(haid: string, key: ProgramKey, options: OptionKV[]): Promise<void>;
    getSelectedProgramOptions(haid: string): Promise<OptionKV[]>;
    setSelectedProgramOptions(haid: string, options: OptionKV[]): Promise<void>;
    getSelectedProgramOption<Key extends OptionKey>(haid: string, key: Key): Promise<OptionKV<Key>>;
    setSelectedProgramOption<Key extends OptionKey>(haid: string, key: Key, value: OptionValue<Key>): Promise<void>;
    getStatus(haid: string): Promise<StatusKV[]>;
    getStatusSpecific<Key extends StatusKey>(haid: string, key: Key): Promise<StatusKV<Key>>;
    getSettings(haid: string): Promise<SettingKV[]>;
    getSetting<Key extends SettingKey>(haid: string, key: Key): Promise<SettingKV<Key>>;
    setSetting<Key extends SettingKey>(haid: string, key: Key, value: SettingValue<Key>): Promise<void>;
    getCommands(haid: string): Promise<CommandKV[]>;
    setCommand(haid: string, key: CommandKey): Promise<void>;
    getEvents(haid?: string): AsyncGenerator<EventKV, void, void>;
    getAuthorisationStatus(immediate?: boolean): Promise<AuthorisationStatus>;
    retryAuthorisation(): void;
}
export declare class CloudAPI implements HomeConnectAPI {
    readonly log: Logger;
    readonly config: ConfigPlugin;
    readonly persist: LocalStorage;
    private readonly ua;
    private readonly events;
    private readonly checkValues;
    constructor(log: Logger, config: ConfigPlugin, persist: LocalStorage);
    hasScope(scope: string): boolean;
    getAppliances(): Promise<HomeAppliance[]>;
    getAppliance(haid: string): Promise<HomeAppliance>;
    getPrograms(haid: string): Promise<ProgramsKV>;
    getAvailablePrograms(haid: string): Promise<ProgramsKV>;
    getAvailableProgram<Key extends ProgramKey>(haid: string, key: Key): Promise<ProgramDefinitionKV<Key>>;
    getActiveProgram(haid: string): Promise<ProgramKV>;
    setActiveProgram(haid: string, key: ProgramKey, options?: OptionKV[]): Promise<void>;
    stopActiveProgram(haid: string): Promise<void>;
    getActiveProgramOptions(haid: string): Promise<OptionKV[]>;
    setActiveProgramOptions(haid: string, options: OptionKV[]): Promise<void>;
    getActiveProgramOption<Key extends OptionKey>(haid: string, key: Key): Promise<OptionKV<Key>>;
    setActiveProgramOption<Key extends OptionKey>(haid: string, key: Key, value: OptionValue<Key>): Promise<void>;
    getSelectedProgram(haid: string): Promise<ProgramKV>;
    setSelectedProgram(haid: string, key: ProgramKey, options: OptionKV[]): Promise<void>;
    getSelectedProgramOptions(haid: string): Promise<OptionKV[]>;
    setSelectedProgramOptions(haid: string, options: OptionKV[]): Promise<void>;
    getSelectedProgramOption<Key extends OptionKey>(haid: string, key: Key): Promise<OptionKV<Key>>;
    setSelectedProgramOption<Key extends OptionKey>(haid: string, key: Key, value: OptionValue<Key>): Promise<void>;
    getStatus(haid: string): Promise<StatusKV[]>;
    getStatusSpecific<Key extends StatusKey>(haid: string, key: Key): Promise<StatusKV<Key>>;
    getSettings(haid: string): Promise<SettingKV[]>;
    getSetting<Key extends SettingKey>(haid: string, key: Key): Promise<SettingKV<Key>>;
    setSetting<Key extends SettingKey>(haid: string, key: Key, value: SettingValue<Key>): Promise<void>;
    getCommands(haid: string): Promise<CommandKV[]>;
    setCommand(haid: string, key: CommandKey): Promise<void>;
    getEvents(haid?: string): AsyncGenerator<EventKV, void, void>;
    getAuthorisationStatus(immediate?: boolean): Promise<AuthorisationStatus>;
    retryAuthorisation(): void;
}
//# sourceMappingURL=api.d.ts.map