import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service, Characteristic } from 'homebridge'; import { SmartThingsClient, Device, Component, RefreshTokenStore, AuthData, RefreshData, Authenticator } from '@smartthings/core-sdk'; /** * Class implements the configured Device to mac and ip address mappings. */ declare class DeviceMapping { readonly deviceId: string; readonly nameOverride: string; readonly macAddress: string; readonly ipAddress: string; readonly inputSources: [{ name: string; id: string; }]; readonly applications: [{ name: string; ids: [string]; }]; readonly validateApplications: boolean; readonly infoKey: string; readonly category: number; constructor(deviceId: string, nameOverride: string, macAddress: string, ipAddress: string, inputSources: [{ name: string; id: string; }], applications: [{ name: string; ids: [string]; }], validateApplications: boolean, infoKey: string, category: number); } /** * Class implements the plugin platform. */ export declare class SmartThingsPlatform implements DynamicPlatformPlugin, RefreshTokenStore { readonly log: Logger; readonly config: PlatformConfig; readonly api: API; readonly Service: typeof Service; readonly Characteristic: typeof Characteristic; private configPath; private authData; readonly accessories: PlatformAccessory[]; constructor(log: Logger, config: PlatformConfig, api: API); /** * @inheritdoc */ getRefreshData(): Promise; /** * @inheritdoc */ putAuthData(data: AuthData): Promise; /** * @inheritdoc */ configureAccessory(accessory: PlatformAccessory): void; /** * Reads the platform configuration from the file system. * * @returns the platform configuration */ getPlatformConfig(): any; /** * Writes the platform configuration passed in to the file system. * * @param platformConfig the new platform configuration */ savePlatformConfig(platformConfig: unknown): void; /** * Uses the SmartThings API to discover and register the available devices. * * @param token the SmartThings API token * @param deviceBlocklist the device ids to be ignored * @param deviceMappings the array of configured DeviceMapping * @param tvDeviceTypes the array of configured TV device types * @param soundbarDeviceTypes the array of configured SoundBar device types */ discoverDevices(authenticator: Authenticator, deviceBlocklist: [string], deviceMappings: [DeviceMapping], tvDeviceTypes: [string], soundbarDeviceTypes: [string]): Promise; /** * Registers a SmartThings Device for Homebridge. * * @param client the SmartThingsClient used to send API calls * @param device the SmartThings Device * @param deviceMappings the array of configured DeviceMapping * @param tvDeviceTypes the array of configured TV device types * @param soundbarDeviceTypes the array of configured SoundBar device types * @returns the PlatformAccessory that must be published as external accessory or undefined * if accessory must not be published as external accessory */ registerDevice(client: SmartThingsClient, device: Device, deviceMappings: [DeviceMapping], tvDeviceTypes: [string], soundbarDeviceTypes: [string]): Promise; /** * Registers a SmartThings TV Device for Homebridge. * * @param client the SmartThingsClient used to send API calls * @param device the SmartThings Device * @param accessory the cached PlatformAccessory or undefined if no cached PlatformAccessory exists * @param deviceMappings the array of configured DeviceMapping * @returns the PlatformAccessory that must be published as external accessory or undefined * if device could not be registered */ registerTvDevice(client: SmartThingsClient, device: Device, deviceMapping: DeviceMapping | undefined): Promise; /** * Registers a SmartThings Soundbar Device for Homebridge. * * @param client the SmartThingsClient used to send API calls * @param device the SmartThings Device * @param accessory the cached PlatformAccessory or undefined if no cached PlatformAccessory exists * @param deviceMappings the array of configured DeviceMapping * @returns the PlatformAccessory that must be published as external accessory or undefined * if device could not be registered */ registerSoundbarDevice(client: SmartThingsClient, device: Device, deviceMapping: DeviceMapping | undefined): Promise; /** * Register the modes of the device passed in as platform accessories. * Handles caching of accessories as well. * * @param client the SmartThingsClient used to send API calls * @param device the SmartThings Device * @param component the SmartThings Device's Component * @param stateful flag if switch will be stateful (set to TRUE to get capability status and reflect changes in switch) * @param modes the modes to register */ registerModeSwitches(client: SmartThingsClient, device: Device, component: Component, stateful: boolean, modes: { capability: string; command: string; prefix: string; values: { id: string; name: string; value: string; }[]; }): void; /** * Registers a switch for parameters passed in. * Handles caching of accessories as well. * * @param client the SmartThingsClient used to send API calls * @param device the SmartThings Device * @param component the SmartThings Device's Component * @param name the switch's name * @param id the switch's id * @param capability the capability identifier * @param command the command identifier * @param value the value to set * @param stateful flag if switch will be stateful (set to TRUE to get capability status and reflect changes in switch) */ registerSwitch(client: SmartThingsClient, device: Device, component: Component, name: string, id: string, capability: string, command: string, value: string | undefined, stateful: boolean): void; /** * Register the volume of the device passed in as platform accessory. * Handles caching of accessories as well. * * @param client the SmartThingsClient used to send API calls * @param device the SmartThings Device * @param component the SmartThings Device's Component */ registerVolumeSlider(client: SmartThingsClient, device: Device, component: Component): void; /** * Validates the config and returns validation result. * Basically checks that authentication token setup is correct. * * @param config the PlatformConfig * @returns TRUE in case config is valid - FALSE otherwise */ private validateConfig; } export {};