1+ // Type definitions for iotivity-node 1.2.0-2
2+ // Project: iotivity-node
3+ // Definitions by: Hans Bakker https://www.github.com/wind-rider
4+
5+ /// <reference types="node" />
6+
7+ import { EventEmitter } from "events" ;
8+
9+ /*~ If this module has methods, declare them as functions like so.
10+ */
11+ //export function myMethod(a: string): string;
12+ //export function myOtherMethod(a: number): number;
13+
14+ /*~ You can declare types that are available via importing the module */
15+ export interface IPlatformInfo {
16+ id : string ;
17+ osVersion : string ;
18+ model : string ;
19+ manufacturerName : string ;
20+ manufacturerURL : string ;
21+ manufacturerDate : Date ;
22+ platformVersion : string ;
23+ firmwareVersion : string ;
24+ supportURL : string ;
25+ }
26+
27+ export interface IDeviceInfo {
28+ url : string ;
29+ name : string ;
30+ dataModels : string [ ] ;
31+ coreSpecVersion : string ;
32+ uuid : string ;
33+ }
34+
35+ /*~ You can declare properties of the module using const, let, or var */
36+ //export const myField: number;
37+
38+ export var device : IDeviceInfo ;
39+ export var platform : IPlatformInfo ;
40+
41+ /*~ If there are types, properties, or methods inside dotted names
42+ *~ of the module, declare them inside a 'namespace'.
43+ */
44+ //export namespace server {
45+ /*~ For example, given this definition, someone could write:
46+ *~ import { subProp } from 'yourModule';
47+ *~ subProp.foo();
48+ *~ or
49+ *~ import * as yourMod from 'yourModule';
50+ *~ yourMod.subProp.foo();
51+ */
52+ // export function foo(): void;
53+ //}
54+
55+ export const server : Server ;
56+ export const client : Client ;
57+
58+ export class Server {
59+ constructor ( ) ;
60+
61+ oncreate ( handler : RequestHandler ) : Server ;
62+ register ( init : IResourceInfo ) : Promise < ServerResource > | any ; //todo
63+ }
64+
65+ export class Request {
66+ constructor ( init ?: Request ) ;
67+
68+ id ?: any ; // TODO
69+ observe : boolean ;
70+ target ?: ServerResource ; // TODO
71+ type : string ;
72+ data ?: ServerResource | any ; //TODO
73+
74+ respond ( data ?: ServerResource | any ) : Promise < { } > ; //TODO
75+ respondWithError ( error : string ) : Promise < { } > ;
76+ }
77+
78+ export type RequestHandler = ( request : Request ) => void ;
79+
80+ export class ServerResource implements IResourceInfo {
81+ constructor ( ) ;
82+
83+ deviceId : string ;
84+ slow : boolean ;
85+ active : boolean ;
86+ secure : boolean ;
87+
88+ ontranslate ( handler : RequestHandler ) ;
89+ onretrieve ( handler : RequestHandler ) ;
90+ onupdate ( handler : RequestHandler ) ;
91+ ondelete ( handler : RequestHandler ) ;
92+ oncreate ( handler : RequestHandler ) ;
93+
94+ unregister ( ) : Promise < void > ; //TODO
95+ notify ( ) : Promise < void > ;
96+
97+ resourcePath : string ;
98+ resourceTypes : string [ ] ;
99+ interfaces : string [ ] ;
100+ discoverable : boolean ;
101+ observable : boolean ;
102+ properties : any ;
103+ }
104+
105+ export interface IResourceInfo {
106+ deviceId ?: string ;
107+ resourcePath : string ;
108+ resourceTypes : string [ ] ;
109+ interfaces : string [ ] ;
110+ discoverable ?: boolean ;
111+ observable ?: boolean ;
112+ properties : any ;
113+ slow ?: boolean ;
114+ active ?: boolean ;
115+ secure ?: boolean ;
116+ }
117+
118+ export class Client extends EventEmitter implements IClientEvent {
119+ // deviceId could also be an object but this is undocumented
120+ getDeviceInfo ( deviceId : string ) : Promise < { } > ;
121+ getPlatformInfo ( deviceId : string ) : Promise < { } > ;
122+
123+ //TODO
124+ create ( resourceInit ?: IResourceInfo , target ?: any ) : Promise < ClientResource > ;
125+ retrieve ( resourceId : IResourceInfo , listener ?: ClientResourceListener ) : Promise < ClientResource > ;
126+ retrieve ( resourceId : IResourceInfo , query : any , listener ?: ClientResourceListener ) : Promise < ClientResource > ;
127+ update ( resource : ClientResource ) : Promise < ClientResource > ;
128+ delete ( resourceId : IResourceInfo ) : Promise < any > ;
129+
130+ findDevices ( listener ?: DeviceHandler ) : Promise < void > ;
131+ findPlatforms ( listener ?: PlatformHandler ) : Promise < void > ;
132+ findResources ( listener ?: ClientResourceListener ) : Promise < void > ;
133+ findResources ( options ? : any , listener ?: ClientResourceListener ) : Promise < void > ;
134+
135+ on ( event : 'devicefound' , listener : DeviceHandler ) : this;
136+ on ( event : 'platformfound' , listener : PlatformHandler ) : this;
137+ on ( event : 'resourcefound' , listener : ClientResourceListener ) : this;
138+ on ( event : 'error' , listener : ( error : Error ) => void ) : this;
139+ on ( event : string | symbol , listener : Function ) : this;
140+ }
141+
142+ export type DeviceHandler = ( device : IDeviceInfo ) => void ;
143+ export type PlatformHandler = ( platform : IPlatformInfo ) => void ;
144+ export type ClientResourceListener = ( resource : ClientResource ) => void ;
145+
146+ export interface IClientEvent {
147+ on ( event : 'devicefound' , listener : DeviceHandler ) : this;
148+ on ( event : 'platformfound' , listener : PlatformHandler ) : this;
149+ on ( event : 'resourcefound' , listener : ClientResourceListener ) : this;
150+ on ( event : 'error' , listener : ( error : Error ) => void ) : this;
151+ on ( event : string | symbol , listener : Function ) : this;
152+ }
153+
154+ export class ClientResource extends EventEmitter implements IClientResourceEvent , IResourceInfo {
155+ constructor ( init , forceNew ) ;
156+
157+ resourcePath : string ;
158+ resourceTypes : string [ ] ;
159+ interfaces : string [ ] ;
160+ discoverable : boolean ;
161+ observable : boolean ;
162+ properties : any ;
163+
164+ deviceId : string ;
165+ slow : boolean ;
166+ active : boolean ;
167+ secure : boolean ;
168+
169+ on ( event : 'delete' , listener : ClientResourceListener ) : this;
170+ on ( event : 'update' , listener : ClientResourceListener ) : this;
171+ on ( event : 'error' , listener : ( error : Error ) => void ) : this;
172+ on ( event : string , listener : Function ) : this;
173+ }
174+
175+ export interface IClientResourceEvent {
176+ on ( event : 'delete' , listener : ClientResourceListener ) : this;
177+ on ( event : 'update' , listener : ClientResourceListener ) : this;
178+ on ( event : 'error' , listener : ( error : Error ) => void ) : this;
179+ on ( event : string , listener : Function ) : this;
180+ }
0 commit comments