import { Logger } from 'homebridge';
import { LocalStorage } from 'node-persist';
import { HomeAppliance, OptionDefinition, Setting, Status, Value } from './api-types.js';
export type APIKeyValueDefinition = OptionDefinition | Setting | Status;
export type APIKeyType = 'Command' | 'Event' | 'Option' | 'Setting' | 'Status';
export interface APIValueLiteral {
    value: Value;
    report: boolean;
}
export interface APIValue {
    type?: string;
    values: Record<string, APIValueLiteral>;
}
export interface APIKey {
    key: string;
    value?: APIValue;
    report: boolean;
}
export interface APIGroup {
    keys: Record<string, APIKey>;
}
export declare class APIKeyValuesLog {
    readonly log: Logger;
    readonly clientid: string;
    readonly persist: LocalStorage;
    private appliances;
    private readonly applianceReports;
    private readonly groups;
    private readonly keys;
    private readonly persistKey;
    private readonly reported;
    private readonly pending;
    private pendingScheduled?;
    constructor(log: Logger, clientid: string, persist: LocalStorage);
    setAppliances(appliances: HomeAppliance[]): void;
    addDetail(detail: APIKeyValueDefinition): void;
    addKey(haid: string, group: string, subGroup: string | undefined, key: string, report: boolean, restored?: boolean): void;
    addValue(haid: string, key: string, value: Value | null, report: boolean, restored?: boolean): void;
    scheduleSummary(key: string, value: string): void;
    getUnknownTypes(): string[];
    logSummary(): void;
    makeGroupInterface(groupName: string): string[];
    makeValueUnion(value: APIValue): string[];
    makeValueEnum(value: APIValue): string[];
    makeType(value?: APIValue): string;
    isEnumType(value: APIValue): boolean | undefined;
    getTypeof(value?: APIValue): string;
    mergeSameEnums(): void;
    mergeEnumValue(to: APIValue, from: APIValue): void;
    makeEnumName(type: string): string;
    makeIssueURL(title: string, appliances: string): string;
    makeApplianceDescription(haids: string[], style?: 'short' | 'long'): string;
    getValuesOfEnumType(): APIValue[];
    isEnumPreferred(value: APIValue): boolean;
    readPersist(): Promise<void>;
    writePersist(): Promise<void>;
}
//# sourceMappingURL=api-value.log.d.ts.map