UNPKG

homebridge-homeconnect

Version:

A Homebridge plugin that connects Home Connect appliances to Apple HomeKit

92 lines 3.08 kB
import { PlatformConfig } from 'homebridge'; import { ConfigSchemaData, SchemaAppliance, SchemaProgramOptionType, SchemaProgramOptionValue } from './schema-data.js'; export interface JSONSchemaEnumValue<Type> { title: string; const: Type; } export interface JSONSchemaArray { type: 'array'; items: JSONSchema; minItems?: number; maxItems?: number; uniqueItems?: boolean; default?: unknown[]; } export interface JSONSchemaValue { type: SchemaProgramOptionType; default?: SchemaProgramOptionValue; enum?: SchemaProgramOptionValue[]; oneOf?: JSONSchemaEnumValue<SchemaProgramOptionValue>[]; minimum?: number; maximum?: number; multipleOf?: number; minLength?: number; maxLength?: number; pattern?: string; } export type JSONSchemaProperties = Record<string, JSONSchema>; export interface JSONSchemaObject { type: 'object'; properties: JSONSchemaProperties; } export type JSONSchema = (JSONSchemaArray | JSONSchemaValue | JSONSchemaObject) & { required?: boolean; }; export interface FormItemCommon<Type = SchemaProgramOptionValue> { key?: string; title?: string; notitle?: boolean; description?: string; validationMessage?: string; placeholder?: Type; condition?: { functionBody: string; }; expandable?: boolean; expanded?: boolean; startEmpty?: boolean; } export interface FormItemValue<Type = SchemaProgramOptionValue> extends FormItemCommon<Type> { type?: 'input' | 'number' | 'select' | 'checkboxes' | 'radio' | 'radiobuttons'; fieldAddonLeft?: string; fieldAddonRight?: string; minimum?: number; maximum?: number; multipleOf?: number; default?: Type; oneOf?: JSONSchemaEnumValue<Type>[]; titleMap?: Record<string, string>; } export interface FormItemGroup extends FormItemCommon { type: 'fieldset' | 'flex'; items: FormItem[]; 'flex-flow'?: string; } export interface FormItemHelp extends FormItemCommon { type: 'help'; helpvalue: string; } export type FormItem = FormItemValue | FormItemGroup | FormItemHelp; export interface SchemaFormFragment { schema: JSONSchemaProperties; form: FormItem[]; code?: string; } export interface FormSchema { schema: JSONSchema; form?: FormItem[]; layout?: Record<string, unknown>[] | null; } export declare class ConfigSchema extends ConfigSchemaData { getSchemaFragmentPlugin(): SchemaFormFragment; getSchemaHomeConnectLanguages(): JSONSchema; getSchemaFragmentClient(): SchemaFormFragment; getSchemaFragmentDebug(): SchemaFormFragment; getSchemaFragmentApplianceNames(appliance: SchemaAppliance): SchemaFormFragment; getSchemaFragmentApplianceOptionalFeatures(appliance: SchemaAppliance): SchemaFormFragment; getSchemaFragmentAppliancePrograms(appliance: SchemaAppliance): SchemaFormFragment; getConfig(): Promise<PlatformConfig | undefined>; getSchemaGlobal(): Promise<FormSchema>; getSchemaAppliance(haid: string): Promise<FormSchema | undefined>; } //# sourceMappingURL=schema.d.ts.map