homebridge-homeconnect
Version:
A Homebridge plugin that connects Home Connect appliances to Apple HomeKit
55 lines • 1.93 kB
TypeScript
import { LogLevel, Logger, PlatformConfig } from 'homebridge';
import { HomebridgePluginUiServer } from '@homebridge/plugin-ui-utils';
import { FormSchema } from './schema.js';
import { ConfigPlugin } from '../config-types.js';
import { ClientIDStatus } from './server-clientid.js';
export interface ServerRequests {
'/log': {
request: LogLevel;
response: string;
};
'/clientid': {
request: ConfigPlugin;
response: ClientIDStatus;
};
'/clientid/retry': {
request: null;
response: ClientIDStatus;
};
'/config': {
request: null;
response: PlatformConfig;
};
'/schema/global': {
request: null;
response: FormSchema;
};
'/schema/appliance': {
request: string;
response: FormSchema;
};
}
export type ServerPath = keyof ServerRequests;
export type ServerRequest<Path extends ServerPath> = ServerRequests[Path]['request'];
export type ServerResponse<Path extends ServerPath> = ServerRequests[Path]['response'];
export type ServerResponseAsync<Path extends ServerPath> = Promise<ServerResponse<Path>> | ServerResponse<Path>;
export interface ServerEvents {
ready: undefined;
log: ServerLogMessage[];
status: ClientIDStatus;
}
export type ServerEvent = keyof ServerEvents;
export type ServerEventData<Event extends ServerEvent> = ServerEvents[Event];
export interface ServerLogMessage {
level: LogLevel;
message: string;
params: unknown[];
}
export declare class ServerIPC {
readonly log: Logger;
readonly server: HomebridgePluginUiServer;
constructor(log: Logger, server: HomebridgePluginUiServer);
onRequest<Path extends ServerPath>(path: Path, fn: (data: ServerRequest<Path>) => ServerResponseAsync<Path>): void;
pushEvent<Event extends keyof ServerEvents>(event: Event, data: ServerEventData<Event>): void;
}
//# sourceMappingURL=server-ipc.d.ts.map