homebridge-homeconnect
Version:
A Homebridge plugin that connects Home Connect appliances to Apple HomeKit
97 lines • 6.52 kB
TypeScript
import { Service } from 'homebridge';
import { ApplianceBase } from './appliance-generic.js';
import { Constructor } from './utils.js';
import { OptionValues, ProgramKey } from './api-value-types.js';
import { OptionDefinitionKV, OptionKey, OptionValue, ProgramDefinitionKV } from './api-value.js';
import { Value } from './api-types.js';
import { ApplianceProgramConfig } from './config-types.js';
import { SchemaProgramOption } from './homebridge-ui/schema-data.js';
export interface CheckedProgramConfig extends Omit<ApplianceProgramConfig, 'options'> {
key: ProgramKey;
options?: OptionValues;
}
declare const RELATIVE_OPTION_KEY: readonly ["BSH.Common.Option.StartInRelative", "BSH.Common.Option.FinishInRelative"];
type RelativeOptionKey<Index extends number = 0 | 1> = typeof RELATIVE_OPTION_KEY[Index];
export declare function HasPrograms<TBase extends Constructor<ApplianceBase & {
activeService?: Service;
}>>(Base: TBase): {
new (...args: any[]): {
readonly programService: Service[];
programs: (ProgramDefinitionKV & {
selected?: boolean;
})[];
supportsPowerOn: boolean;
autoSelectingPrograms: boolean;
initHasPrograms(): Promise<void>;
initPrograms(): Promise<void>;
refreshPrograms(active?: boolean): Promise<void>;
missingOptionsHelp(programs: ProgramDefinitionKV[]): void;
updateProgramsWithoutSelecting(programKeys: ProgramKey[]): Promise<void>;
updateProgramsSelectFirst(programKeys: ProgramKey[]): Promise<void>;
updateCachedProgram<Key extends ProgramKey>(details: ProgramDefinitionKV<Key>, selected: boolean): void;
selectAndGetAvailableProgram<Key extends ProgramKey>(programKey: Key): Promise<ProgramDefinitionKV<Key>>;
getAvailableProgram<Key extends ProgramKey>(programKey: Key): Promise<ProgramDefinitionKV<Key>>;
requireProgramReady(programKey: ProgramKey): void;
savePrograms(): Promise<void>;
updateSelectedProgram(programKey: ProgramKey | null): Promise<void>;
addAllPrograms(): void;
addConfiguredPrograms(config: ApplianceProgramConfig[]): void;
assertIsProgramKey<Key extends ProgramKey>(programKey: string): asserts programKey is Key;
assertIsOptionKey<Key extends OptionKey>(programKey: ProgramKey, optionKey: string): asserts optionKey is Key;
assertIsOptionValue<Key extends OptionKey>(programKey: ProgramKey, optionKey: Key, value: string | number | boolean): asserts value is OptionValue<Key>;
addPrograms(programs: CheckedProgramConfig[]): void;
addProgram({ name, key, selectonly, options }: CheckedProgramConfig): Service;
addActiveProgramControl(supportsPause?: boolean, supportsResume?: boolean): void;
identify(): Promise<void>;
makeConfigOption<Key extends OptionKey>(option: OptionDefinitionKV<Key>): Record<string, unknown>;
setSchemaPrograms(allPrograms: ProgramDefinitionKV[]): void;
setSchemaProgramOptions<Key extends ProgramKey>(program: ProgramDefinitionKV<Key>): void;
makeSchemaOption<Key extends OptionKey>(option: OptionDefinitionKV<Key>): SchemaProgramOption;
makeName(name: string | undefined, key: ProgramKey | Value): string;
simpleName(name: string | undefined, key: string): string;
isOptionRelative(key: OptionKey): key is RelativeOptionKey;
timeToSeconds(value: string | number): number;
readonly Service: typeof Service;
readonly Characteristic: typeof import("homebridge").Characteristic;
readonly config: import("./config-types.js").ApplianceConfig;
readonly schema: import("./homebridge-ui/schema-data.js").ConfigSchemaData;
readonly optionalFeatures: import("./homebridge-ui/schema-data.js").SchemaOptionalFeature[];
readonly cache: import("./persist-cache.js").PersistCache;
readonly cachedOperation: Record<string, string>;
readonly cachedPromise: Map<string, Promise<unknown>>;
readonly asyncInitTasks: {
name: string;
promise: Promise<void>;
}[];
serviceNames: import("./service-name.js").ServiceNames;
readonly accessoryInformationService: Service;
readonly obsoleteServices: Service[];
readonly log: import("homebridge").Logger;
readonly platform: import("./platform.js").HomeConnectPlatform;
readonly device: import("./homeconnect-device.js").HomeConnectDevice;
readonly accessory: import("homebridge").PlatformAccessory;
asyncInitialise(name: string, promise: Promise<void>): void;
waitAsyncInitialisation(): Promise<void>;
makeService(serviceConstructor: typeof Service & {
new (displayName?: string, subtype?: string): Service;
UUID: string;
}, suffix?: string, subtype?: string): Service;
cleanupServices(): void;
cleanupOldVersions(): void;
unregister(): void;
hasOptionalFeature(service: string, name: string, group?: string, enableByDefault?: boolean): boolean;
setOptionalFeatures(): void;
getCached<Type>(key: string, operation: () => Promise<Type>): Promise<Type>;
doCachedOperation<Type>(key: string, operation: () => Promise<Type>): Promise<Type>;
makeSerialised<Value extends import("./serialised.js").SerialisedValue, Returns = void>(operation: import("./serialised.js").SerialisedOperation<Value, Returns>, defaultValue?: Value): (value?: Value) => Promise<Returns>;
makeSerialisedObject<Value extends object, Returns = void>(operation: import("./serialised.js").SerialisedOperation<Value, Returns>): (value?: Value) => Promise<Returns>;
onSet<Type>(handler: import("./appliance-generic.js").OnSetHandler<Type>, assertIsType: (value: unknown) => asserts value is Type): import("homebridge").CharacteristicSetHandler;
onSetBoolean(handler: import("./appliance-generic.js").OnSetHandler<boolean>): import("homebridge").CharacteristicSetHandler;
onSetNumber(handler: import("./appliance-generic.js").OnSetHandler<number>): import("homebridge").CharacteristicSetHandler;
onSetString(handler: import("./appliance-generic.js").OnSetHandler<string>): import("homebridge").CharacteristicSetHandler;
trap<Type>(when: string, promise: Promise<Type> | Type, canThrow?: boolean): Promise<Type | undefined>;
activeService?: Service;
};
} & TBase;
export {};
//# sourceMappingURL=has-programs.d.ts.map