homebridge-homeconnect
Version:
A Homebridge plugin that connects Home Connect appliances to Apple HomeKit
92 lines • 3.08 kB
TypeScript
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