import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service, Characteristic, WithUUID } from 'homebridge';
import { KodiLogger, TelevisionAccessoryType, KodiSwitchAccessoryInterface, KodiTelevisionAccessoryInterface, KodiCommandSwitchAccessoryInterface } from './internal';
import setIntervalPlus = require('setinterval-plus');
export declare class KodiPlatform implements DynamicPlatformPlugin {
    readonly config: PlatformConfig;
    readonly api: API;
    readonly Service: typeof Service;
    readonly Characteristic: typeof Characteristic;
    customCharacteristics: {
        [key: string]: WithUUID<new () => Characteristic>;
    };
    readonly accessories: PlatformAccessory[];
    readonly shownAccessories: PlatformAccessory[];
    subscribed: boolean;
    closedByPlugin: boolean;
    intervalKodiSubscriptions: setIntervalPlus;
    intervalKodiStatus: setIntervalPlus;
    intervalKodiUpdate: setIntervalPlus;
    powerSwitchService: Service | undefined;
    televisionControlsService: Service | undefined;
    televisionControlsSpeakerService: Service | undefined;
    televisionChannelsService: Service | undefined;
    televisionChannelsSpeakerService: Service | undefined;
    playerLightbulbService: Service | undefined;
    playerPlaySwitchService: Service | undefined;
    playerPauseSwitchService: Service | undefined;
    playerStopSwitchService: Service | undefined;
    applicationVolumeLightbulbService: Service | undefined;
    videoLibraryScanSwitchService: Service | undefined;
    videoLibraryCleanSwitchService: Service | undefined;
    audioLibraryScanSwitchService: Service | undefined;
    audioLibraryCleanSwitchService: Service | undefined;
    log: KodiLogger;
    constructor(log: Logger, config: PlatformConfig, api: API);
    configureAccessory(accessory: PlatformAccessory): void;
    discoverDevices(): void;
    addAccessory(name: string, configCheck: boolean, KodiAccessory: KodiSwitchAccessoryInterface): PlatformAccessory | undefined;
    addCommandAccessory(name: string, interval: number, sequence: string, KodiCommandAccessory: KodiCommandSwitchAccessoryInterface): void;
    addTelevisionAccessory(name: string, type: TelevisionAccessoryType, inputNames: string[], inputIdentifiers: number[], KodiTelevisionAccessory: KodiTelevisionAccessoryInterface): PlatformAccessory | undefined;
    getAccessory(name: string): PlatformAccessory | undefined;
    removeAllAccessoriesNotNeededAnymore(): void;
    checkKodiStatus: (this: KodiPlatform) => Promise<void>;
    subscribeToKodiNotifications: (this: KodiPlatform, api: API) => Promise<void>;
    onSubscribe: (this: KodiPlatform) => void;
    onUnsubscribe: (this: KodiPlatform) => void;
    updateKodiPlayer: (this: KodiPlatform, onplay: boolean) => Promise<void>;
    resetAllCharacteristics: (this: KodiPlatform, completely: boolean) => void;
    updateApplicationVolumeService: (this: KodiPlatform) => void;
    updateTelevisionChannelsService: (this: KodiPlatform) => void;
}
//# sourceMappingURL=platform.d.ts.map