import { Subscription } from "rxjs/Subscription"; import { Form, SecurityScheme } from "./thing-description"; import Servient from "./servient"; import ExposedThing from "./exposed-thing"; import { Content } from "./content"; export type PropertyContentMap = Map; export type ContentListener = (data: Content) => void; export type PropertyHandlers = { readHandler?: WoT.PropertyReadHandler; writeHandler?: WoT.PropertyWriteHandler; observeHandler?: WoT.PropertyReadHandler; unobserveHandler?: WoT.PropertyReadHandler; }; export type PropertyHandlerMap = Map; export type ActionHandlerMap = Map; export type EventHandlers = { subscribe?: WoT.EventSubscriptionHandler; unsubscribe?: WoT.EventSubscriptionHandler; }; export type EventHandlerMap = Map; export type ListenerItem = { [formIndex: number]: ContentListener[]; }; export type ListenerMap = Map; export interface ProtocolClient { readResource(form: Form): Promise; writeResource(form: Form, content: Content): Promise; invokeResource(form: Form, content?: Content): Promise; unlinkResource(form: Form): Promise; subscribeResource(form: Form, next: (content: Content) => void, error?: (error: Error) => void, complete?: () => void): Promise; requestThingDescription(uri: string): Promise; start(): Promise; stop(): Promise; setSecurity(metadata: Array, credentials?: unknown): boolean; } export interface ProtocolClientFactory { readonly scheme: string; getClient(): ProtocolClient; init(): boolean; destroy(): boolean; } export interface ProtocolServer { readonly scheme: string; expose(thing: ExposedThing, tdTemplate?: WoT.ThingDescription): Promise; destroy(thingId: string): Promise; start(servient: Servient): Promise; stop(): Promise; getPort(): number; } export declare enum Endianness { BIG_ENDIAN = "BIG_ENDIAN", LITTLE_ENDIAN = "LITTLE_ENDIAN", BIG_ENDIAN_BYTE_SWAP = "BIG_ENDIAN_BYTE_SWAP", LITTLE_ENDIAN_BYTE_SWAP = "LITTLE_ENDIAN_BYTE_SWAP" }