/*! Copyright (c) 2018 Siemens AG. Licensed under the MIT License. */ import { Observable } from "rxjs"; import { Controller, Uuid } from ".."; import { Thing } from "./objects"; /** * Observes Things and Thing-related objects. * * This controller is designed to be used by a client with a corresponding * controller (e.g. ThingSourceController) that answers to its events. */ export declare class ThingObserverController extends Controller { /** * Returns an observable of the Things in the system. * * This is performed by sending a Discovery event with the object type of * Thing. * * This method does not perform any kind of caching and it should be * performed on the application-side. */ discoverThings(): Observable; /** * Returns an observable emitting advertised Things. * * This method does not perform any kind of caching and it should be * performed on the application-side. */ observeAdvertisedThings(): Observable; /** * Returns an observable of the Things that are located at the given * Location. * * This is performed by sending a Query event for Thing objects with the * locationId matching the objectId of the Location. * * This method does not perform any kind of caching and it should be * performed on the application-side. */ queryThingsAtLocation(locationId: Uuid): Observable; }