brilliantsole 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -0
  3. package/build/brilliantsole.cjs +5957 -0
  4. package/build/brilliantsole.cjs.map +1 -0
  5. package/build/brilliantsole.js +5448 -0
  6. package/build/brilliantsole.js.map +1 -0
  7. package/build/brilliantsole.ls.js +4872 -0
  8. package/build/brilliantsole.ls.js.map +1 -0
  9. package/build/brilliantsole.min.js +6 -0
  10. package/build/brilliantsole.min.js.map +1 -0
  11. package/build/brilliantsole.module.d.ts +908 -0
  12. package/build/brilliantsole.module.js +5412 -0
  13. package/build/brilliantsole.module.js.map +1 -0
  14. package/build/brilliantsole.module.min.d.ts +908 -0
  15. package/build/brilliantsole.module.min.js +6 -0
  16. package/build/brilliantsole.module.min.js.map +1 -0
  17. package/build/brilliantsole.node.module.d.ts +908 -0
  18. package/build/brilliantsole.node.module.js +5906 -0
  19. package/build/brilliantsole.node.module.js.map +1 -0
  20. package/build/dts/BS.d.ts +25 -0
  21. package/build/dts/Device.d.ts +136 -0
  22. package/build/dts/DeviceInformationManager.d.ts +56 -0
  23. package/build/dts/DeviceManager.d.ts +67 -0
  24. package/build/dts/FileTransferManager.d.ts +84 -0
  25. package/build/dts/FirmwareManager.d.ts +71 -0
  26. package/build/dts/InformationManager.d.ts +66 -0
  27. package/build/dts/TfliteManager.d.ts +92 -0
  28. package/build/dts/connection/BaseConnectionManager.d.ts +59 -0
  29. package/build/dts/connection/ClientConnectionManager.d.ts +23 -0
  30. package/build/dts/connection/WebSocketClientConnectionManager.d.ts +23 -0
  31. package/build/dts/connection/bluetooth/BluetoothConnectionManager.d.ts +10 -0
  32. package/build/dts/connection/bluetooth/NobleConnectionManager.d.ts +42 -0
  33. package/build/dts/connection/bluetooth/WebBluetoothConnectionManager.d.ts +20 -0
  34. package/build/dts/connection/bluetooth/bluetoothUUIDs.d.ts +14 -0
  35. package/build/dts/connection/webSocket/ClientConnectionManager.d.ts +23 -0
  36. package/build/dts/connection/webSocket/WebSocketClientConnectionManager.d.ts +23 -0
  37. package/build/dts/devicePair/DevicePair.d.ts +60 -0
  38. package/build/dts/devicePair/DevicePairPressureSensorDataManager.d.ts +25 -0
  39. package/build/dts/devicePair/DevicePairSensorDataManager.d.ts +33 -0
  40. package/build/dts/scanner/BaseScanner.d.ts +66 -0
  41. package/build/dts/scanner/NobleScanner.d.ts +17 -0
  42. package/build/dts/scanner/Scanner.d.ts +3 -0
  43. package/build/dts/sensor/BarometerSensorDataManager.d.ts +16 -0
  44. package/build/dts/sensor/MotionSensorDataManager.d.ts +69 -0
  45. package/build/dts/sensor/PressureSensorDataManager.d.ts +36 -0
  46. package/build/dts/sensor/SensorConfigurationManager.d.ts +44 -0
  47. package/build/dts/sensor/SensorDataManager.d.ts +40 -0
  48. package/build/dts/server/BaseClient.d.ts +85 -0
  49. package/build/dts/server/BaseServer.d.ts +48 -0
  50. package/build/dts/server/ServerUtils.d.ts +23 -0
  51. package/build/dts/server/udp/UDPServer.d.ts +11 -0
  52. package/build/dts/server/udp/UDPUtils.d.ts +9 -0
  53. package/build/dts/server/websocket/WebSocketClient.d.ts +17 -0
  54. package/build/dts/server/websocket/WebSocketServer.d.ts +13 -0
  55. package/build/dts/server/websocket/WebSocketUtils.d.ts +9 -0
  56. package/build/dts/utils/ArrayBufferUtils.d.ts +7 -0
  57. package/build/dts/utils/ArrayUtils.d.ts +2 -0
  58. package/build/dts/utils/CenterOfPressureHelper.d.ts +15 -0
  59. package/build/dts/utils/Console.d.ts +34 -0
  60. package/build/dts/utils/EventDispatcher.d.ts +50 -0
  61. package/build/dts/utils/EventUtils.d.ts +6 -0
  62. package/build/dts/utils/MathUtils.d.ts +21 -0
  63. package/build/dts/utils/ParseUtils.d.ts +5 -0
  64. package/build/dts/utils/RangeHelper.d.ts +8 -0
  65. package/build/dts/utils/Text.d.ts +6 -0
  66. package/build/dts/utils/Timer.d.ts +14 -0
  67. package/build/dts/utils/TypeScriptUtils.d.ts +19 -0
  68. package/build/dts/utils/cbor.d.ts +6 -0
  69. package/build/dts/utils/checksum.d.ts +3 -0
  70. package/build/dts/utils/environment.d.ts +13 -0
  71. package/build/dts/utils/mcumgr.d.ts +88 -0
  72. package/build/dts/utils/stringUtils.d.ts +2 -0
  73. package/build/dts/vibration/VibrationManager.d.ts +45 -0
  74. package/build/dts/vibration/VibrationWaveformEffects.d.ts +2 -0
  75. package/build/index.d.ts +908 -0
  76. package/build/index.node.d.ts +908 -0
  77. package/examples/3d/index.html +109 -0
  78. package/examples/3d/scene.html +57 -0
  79. package/examples/3d/script.js +419 -0
  80. package/examples/balance/index.html +138 -0
  81. package/examples/balance/script.js +243 -0
  82. package/examples/basic/index.html +327 -0
  83. package/examples/basic/script.js +1093 -0
  84. package/examples/center-of-pressure/index.html +132 -0
  85. package/examples/center-of-pressure/script.js +207 -0
  86. package/examples/device-pair/index.html +72 -0
  87. package/examples/device-pair/script.js +187 -0
  88. package/examples/edge-impulse/index.html +94 -0
  89. package/examples/edge-impulse/script.js +1033 -0
  90. package/examples/graph/index.html +83 -0
  91. package/examples/graph/script.js +469 -0
  92. package/examples/machine-learning/index.html +366 -0
  93. package/examples/machine-learning/script.js +1774 -0
  94. package/examples/pressure/index.html +145 -0
  95. package/examples/pressure/script.js +201 -0
  96. package/examples/recording/index.html +187 -0
  97. package/examples/recording/script.js +736 -0
  98. package/examples/server/index.html +266 -0
  99. package/examples/server/script.js +925 -0
  100. package/examples/utils/aframe/fingertip-button-component.js +201 -0
  101. package/examples/utils/aframe/fingertip-collider-target-component.js +102 -0
  102. package/examples/utils/aframe/fingertip-colliders-component.js +147 -0
  103. package/examples/utils/three/three.module.min.js +24846 -0
  104. package/examples/webxr/index.html +221 -0
  105. package/examples/webxr/script.js +1127 -0
  106. package/package.json +83 -0
  107. package/src/BS.ts +68 -0
  108. package/src/Device.ts +734 -0
  109. package/src/DeviceInformationManager.ts +146 -0
  110. package/src/DeviceManager.ts +354 -0
  111. package/src/FileTransferManager.ts +452 -0
  112. package/src/FirmwareManager.ts +357 -0
  113. package/src/InformationManager.ts +283 -0
  114. package/src/TfliteManager.ts +450 -0
  115. package/src/connection/BaseConnectionManager.ts +255 -0
  116. package/src/connection/ClientConnectionManager.ts +120 -0
  117. package/src/connection/bluetooth/BluetoothConnectionManager.ts +34 -0
  118. package/src/connection/bluetooth/NobleConnectionManager.ts +302 -0
  119. package/src/connection/bluetooth/WebBluetoothConnectionManager.ts +269 -0
  120. package/src/connection/bluetooth/bluetoothUUIDs.ts +218 -0
  121. package/src/devicePair/DevicePair.ts +253 -0
  122. package/src/devicePair/DevicePairPressureSensorDataManager.ts +82 -0
  123. package/src/devicePair/DevicePairSensorDataManager.ts +90 -0
  124. package/src/scanner/BaseScanner.ts +189 -0
  125. package/src/scanner/NobleScanner.ts +195 -0
  126. package/src/scanner/Scanner.ts +16 -0
  127. package/src/sensor/BarometerSensorDataManager.ts +41 -0
  128. package/src/sensor/MotionSensorDataManager.ts +151 -0
  129. package/src/sensor/PressureSensorDataManager.ts +112 -0
  130. package/src/sensor/SensorConfigurationManager.ts +177 -0
  131. package/src/sensor/SensorDataManager.ts +166 -0
  132. package/src/server/BaseClient.ts +368 -0
  133. package/src/server/BaseServer.ts +344 -0
  134. package/src/server/ServerUtils.ts +93 -0
  135. package/src/server/udp/UDPServer.ts +229 -0
  136. package/src/server/udp/UDPUtils.ts +20 -0
  137. package/src/server/websocket/WebSocketClient.ts +179 -0
  138. package/src/server/websocket/WebSocketServer.ts +184 -0
  139. package/src/server/websocket/WebSocketUtils.ts +20 -0
  140. package/src/utils/ArrayBufferUtils.ts +88 -0
  141. package/src/utils/ArrayUtils.ts +15 -0
  142. package/src/utils/CenterOfPressureHelper.ts +39 -0
  143. package/src/utils/Console.ts +156 -0
  144. package/src/utils/EventDispatcher.ts +153 -0
  145. package/src/utils/EventUtils.ts +41 -0
  146. package/src/utils/MathUtils.ts +53 -0
  147. package/src/utils/ParseUtils.ts +46 -0
  148. package/src/utils/RangeHelper.ts +38 -0
  149. package/src/utils/Text.ts +30 -0
  150. package/src/utils/Timer.ts +72 -0
  151. package/src/utils/TypeScriptUtils.ts +22 -0
  152. package/src/utils/cbor.js +429 -0
  153. package/src/utils/checksum.ts +41 -0
  154. package/src/utils/environment.ts +46 -0
  155. package/src/utils/mcumgr.js +444 -0
  156. package/src/utils/stringUtils.ts +11 -0
  157. package/src/vibration/VibrationManager.ts +308 -0
  158. package/src/vibration/VibrationWaveformEffects.ts +128 -0
@@ -0,0 +1,908 @@
1
+ import * as ws from 'ws';
2
+ import * as dgram from 'dgram';
3
+
4
+ interface ConsoleLevelFlags {
5
+ log?: boolean;
6
+ warn?: boolean;
7
+ error?: boolean;
8
+ assert?: boolean;
9
+ table?: boolean;
10
+ }
11
+ /** @throws {Error} if no console with type is found */
12
+ declare function setConsoleLevelFlagsForType(type: string, levelFlags: ConsoleLevelFlags): void;
13
+ declare function setAllConsoleLevelFlags(levelFlags: ConsoleLevelFlags): void;
14
+
15
+ declare const isInProduction: boolean;
16
+ declare const isInDev: boolean;
17
+ declare const isInBrowser: boolean;
18
+ declare const isInNode: boolean;
19
+ declare let isBluetoothSupported: boolean;
20
+ declare const isInBluefy: boolean;
21
+ declare const isInWebBLE: boolean;
22
+ declare const isAndroid: boolean;
23
+ declare const isSafari: boolean;
24
+ declare const isIOS: boolean;
25
+ declare const isMac: boolean;
26
+ declare const isInLensStudio: boolean;
27
+
28
+ declare const environment_d_isAndroid: typeof isAndroid;
29
+ declare const environment_d_isBluetoothSupported: typeof isBluetoothSupported;
30
+ declare const environment_d_isIOS: typeof isIOS;
31
+ declare const environment_d_isInBluefy: typeof isInBluefy;
32
+ declare const environment_d_isInBrowser: typeof isInBrowser;
33
+ declare const environment_d_isInDev: typeof isInDev;
34
+ declare const environment_d_isInLensStudio: typeof isInLensStudio;
35
+ declare const environment_d_isInNode: typeof isInNode;
36
+ declare const environment_d_isInProduction: typeof isInProduction;
37
+ declare const environment_d_isInWebBLE: typeof isInWebBLE;
38
+ declare const environment_d_isMac: typeof isMac;
39
+ declare const environment_d_isSafari: typeof isSafari;
40
+ declare namespace environment_d {
41
+ export { environment_d_isAndroid as isAndroid, environment_d_isBluetoothSupported as isBluetoothSupported, environment_d_isIOS as isIOS, environment_d_isInBluefy as isInBluefy, environment_d_isInBrowser as isInBrowser, environment_d_isInDev as isInDev, environment_d_isInLensStudio as isInLensStudio, environment_d_isInNode as isInNode, environment_d_isInProduction as isInProduction, environment_d_isInWebBLE as isInWebBLE, environment_d_isMac as isMac, environment_d_isSafari as isSafari };
42
+ }
43
+
44
+ interface Vector2 {
45
+ x: number;
46
+ y: number;
47
+ }
48
+ interface Vector3 extends Vector2 {
49
+ z: number;
50
+ }
51
+ interface Quaternion {
52
+ x: number;
53
+ y: number;
54
+ z: number;
55
+ w: number;
56
+ }
57
+ interface Euler {
58
+ heading: number;
59
+ pitch: number;
60
+ roll: number;
61
+ }
62
+
63
+ type EventMap<Target extends any, EventType extends string, EventMessages extends Partial<Record<EventType, any>>> = {
64
+ [T in keyof EventMessages]: {
65
+ type: T;
66
+ target: Target;
67
+ message: EventMessages[T];
68
+ };
69
+ };
70
+ type EventListenerMap<Target extends any, EventType extends string, EventMessages extends Partial<Record<EventType, any>>> = {
71
+ [T in keyof EventMessages]: (event: {
72
+ type: T;
73
+ target: Target;
74
+ message: EventMessages[T];
75
+ }) => void;
76
+ };
77
+ type Event<Target extends any, EventType extends string, EventMessages extends Partial<Record<EventType, any>>> = EventMap<Target, EventType, EventMessages>[keyof EventMessages];
78
+ type SpecificEvent<Target extends any, EventType extends string, EventMessages extends Partial<Record<EventType, any>>, SpecificEventType extends EventType> = {
79
+ type: SpecificEventType;
80
+ target: Target;
81
+ message: EventMessages[SpecificEventType];
82
+ };
83
+ type BoundEventListeners<Target extends any, EventType extends string, EventMessages extends Partial<Record<EventType, any>>> = {
84
+ [SpecificEventType in keyof EventMessages]?: (event: SpecificEvent<Target, EventType, EventMessages, SpecificEventType>) => void;
85
+ };
86
+ declare class EventDispatcher<Target extends any, EventType extends string, EventMessages extends Partial<Record<EventType, any>>> {
87
+ private target;
88
+ private validEventTypes;
89
+ private listeners;
90
+ constructor(target: Target, validEventTypes: readonly EventType[]);
91
+ private isValidEventType;
92
+ private updateEventListeners;
93
+ addEventListener<T extends EventType>(type: T, listener: (event: {
94
+ type: T;
95
+ target: Target;
96
+ message: EventMessages[T];
97
+ }) => void, options?: {
98
+ once?: boolean;
99
+ }): void;
100
+ removeEventListener<T extends EventType>(type: T, listener: (event: {
101
+ type: T;
102
+ target: Target;
103
+ message: EventMessages[T];
104
+ }) => void): void;
105
+ dispatchEvent<T extends EventType>(type: T, message: EventMessages[T]): void;
106
+ waitForEvent<T extends EventType>(type: T): Promise<{
107
+ type: T;
108
+ target: Target;
109
+ message: EventMessages[T];
110
+ }>;
111
+ }
112
+
113
+ type FileLike = number[] | ArrayBuffer | DataView | URL | string | File;
114
+
115
+ declare const FirmwareStatuses: readonly ["idle", "uploading", "uploaded", "pending", "testing", "erasing"];
116
+ type FirmwareStatus = (typeof FirmwareStatuses)[number];
117
+ interface FirmwareImage {
118
+ slot: number;
119
+ active: boolean;
120
+ confirmed: boolean;
121
+ pending: boolean;
122
+ permanent: boolean;
123
+ bootable: boolean;
124
+ version: string;
125
+ hash?: Uint8Array;
126
+ empty?: boolean;
127
+ }
128
+ interface FirmwareEventMessages {
129
+ smp: {
130
+ dataView: DataView;
131
+ };
132
+ firmwareImages: {
133
+ firmwareImages: FirmwareImage[];
134
+ };
135
+ firmwareUploadProgress: {
136
+ progress: number;
137
+ };
138
+ firmwareStatus: {
139
+ firmwareStatus: FirmwareStatus;
140
+ };
141
+ }
142
+
143
+ type CenterOfPressure = Vector2;
144
+
145
+ type PressureSensorPosition = Vector2;
146
+
147
+ interface PressureSensorValue {
148
+ position: PressureSensorPosition;
149
+ rawValue: number;
150
+ scaledValue: number;
151
+ normalizedValue: number;
152
+ weightedValue: number;
153
+ }
154
+ interface PressureData {
155
+ sensors: PressureSensorValue[];
156
+ scaledSum: number;
157
+ normalizedSum: number;
158
+ center?: CenterOfPressure;
159
+ normalizedCenter?: CenterOfPressure;
160
+ }
161
+ interface PressureDataEventMessages {
162
+ pressure: {
163
+ pressure: PressureData;
164
+ };
165
+ }
166
+ declare const DefaultNumberOfPressureSensors = 8;
167
+
168
+ type ValueOf<T> = T[keyof T];
169
+ type AddProperty<T, Key extends string, Value> = T & {
170
+ [K in Key]: Value;
171
+ };
172
+ type AddKeysAsPropertyToInterface<Interface, Key extends string> = {
173
+ [Value in keyof Interface]: AddProperty<Interface[Value], Key, Value>;
174
+ };
175
+ type ExtendInterfaceValues<Interface, T> = {
176
+ [Key in keyof Interface]: Interface[Key] & T;
177
+ };
178
+ type CapitalizeFirstLetter<S extends string> = S extends `${infer First}${infer Rest}` ? `${Uppercase<First>}${Rest}` : S;
179
+ type AddPrefix<P extends string, S extends string> = `${P}${CapitalizeFirstLetter<S>}`;
180
+ type AddPrefixToInterfaceKeys<Interface, P extends string> = {
181
+ [Key in keyof Interface as `${AddPrefix<P, Key & string>}`]: Interface[Key];
182
+ };
183
+
184
+ interface Activity {
185
+ still: boolean;
186
+ walking: boolean;
187
+ running: boolean;
188
+ bicycle: boolean;
189
+ vehicle: boolean;
190
+ tilting: boolean;
191
+ }
192
+ declare const DeviceOrientations: readonly ["portraitUpright", "landscapeLeft", "portraitUpsideDown", "landscapeRight", "unknown"];
193
+ type DeviceOrientation = (typeof DeviceOrientations)[number];
194
+ interface MotionSensorDataEventMessages {
195
+ acceleration: {
196
+ acceleration: Vector3;
197
+ };
198
+ gravity: {
199
+ gravity: Vector3;
200
+ };
201
+ linearAcceleration: {
202
+ linearAcceleration: Vector3;
203
+ };
204
+ gyroscope: {
205
+ gyroscope: Vector3;
206
+ };
207
+ magnetometer: {
208
+ magnetometer: Vector3;
209
+ };
210
+ gameRotation: {
211
+ gameRotation: Quaternion;
212
+ };
213
+ rotation: {
214
+ rotation: Quaternion;
215
+ };
216
+ orientation: {
217
+ orientation: Euler;
218
+ };
219
+ stepDetector: {
220
+ stepDetector: Object;
221
+ };
222
+ stepCounter: {
223
+ stepCounter: number;
224
+ };
225
+ activity: {
226
+ activity: Activity;
227
+ };
228
+ deviceOrientation: {
229
+ deviceOrientation: DeviceOrientation;
230
+ };
231
+ }
232
+
233
+ interface BarometerSensorDataEventMessages {
234
+ barometer: {
235
+ barometer: number;
236
+ };
237
+ }
238
+
239
+ declare const SensorTypes: readonly ["pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation", "barometer"];
240
+ type SensorType = (typeof SensorTypes)[number];
241
+ declare const ContinuousSensorTypes: readonly ["pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "barometer"];
242
+ type ContinuousSensorType = (typeof ContinuousSensorTypes)[number];
243
+ interface BaseSensorDataEventMessage {
244
+ timestamp: number;
245
+ }
246
+ type BaseSensorDataEventMessages = BarometerSensorDataEventMessages & MotionSensorDataEventMessages & PressureDataEventMessages;
247
+ type _SensorDataEventMessages = ExtendInterfaceValues<AddKeysAsPropertyToInterface<BaseSensorDataEventMessages, "sensorType">, BaseSensorDataEventMessage>;
248
+ type SensorDataEventMessage = ValueOf<_SensorDataEventMessages>;
249
+ interface AnySensorDataEventMessages {
250
+ sensorData: SensorDataEventMessage;
251
+ }
252
+ type SensorDataEventMessages = _SensorDataEventMessages & AnySensorDataEventMessages;
253
+
254
+ declare const TfliteTasks: readonly ["classification", "regression"];
255
+ type TfliteTask = (typeof TfliteTasks)[number];
256
+ interface TfliteEventMessages {
257
+ getTfliteName: {
258
+ tfliteName: string;
259
+ };
260
+ getTfliteTask: {
261
+ tfliteTask: TfliteTask;
262
+ };
263
+ getTfliteSampleRate: {
264
+ tfliteSampleRate: number;
265
+ };
266
+ getTfliteSensorTypes: {
267
+ tfliteSensorTypes: SensorType[];
268
+ };
269
+ tfliteIsReady: {
270
+ tfliteIsReady: boolean;
271
+ };
272
+ getTfliteCaptureDelay: {
273
+ tfliteCaptureDelay: number;
274
+ };
275
+ getTfliteThreshold: {
276
+ tfliteThreshold: number;
277
+ };
278
+ getTfliteInferencingEnabled: {
279
+ tfliteInferencingEnabled: boolean;
280
+ };
281
+ tfliteInference: {
282
+ tfliteInference: TfliteInference;
283
+ };
284
+ }
285
+ interface TfliteInference {
286
+ timestamp: number;
287
+ values: number[];
288
+ maxValue?: number;
289
+ maxIndex?: number;
290
+ }
291
+ declare const TfliteSensorTypes: SensorType[];
292
+ type TfliteSensorType = (typeof TfliteSensorTypes)[number];
293
+
294
+ interface PnpId {
295
+ source: "Bluetooth" | "USB";
296
+ vendorId: number;
297
+ productId: number;
298
+ productVersion: number;
299
+ }
300
+ interface DeviceInformation {
301
+ manufacturerName: string;
302
+ modelNumber: string;
303
+ softwareRevision: string;
304
+ hardwareRevision: string;
305
+ firmwareRevision: string;
306
+ pnpId: PnpId;
307
+ serialNumber: string;
308
+ }
309
+ interface DeviceInformationEventMessages {
310
+ manufacturerName: {
311
+ manufacturerName: string;
312
+ };
313
+ modelNumber: {
314
+ modelNumber: string;
315
+ };
316
+ softwareRevision: {
317
+ softwareRevision: string;
318
+ };
319
+ hardwareRevision: {
320
+ hardwareRevision: string;
321
+ };
322
+ firmwareRevision: {
323
+ firmwareRevision: string;
324
+ };
325
+ pnpId: {
326
+ pnpId: PnpId;
327
+ };
328
+ serialNumber: {
329
+ serialNumber: string;
330
+ };
331
+ deviceInformation: {
332
+ deviceInformation: DeviceInformation;
333
+ };
334
+ }
335
+
336
+ declare const ConnectionTypes: readonly ["webBluetooth", "noble", "client"];
337
+ type ConnectionType = (typeof ConnectionTypes)[number];
338
+ declare const ConnectionStatuses: readonly ["notConnected", "connecting", "connected", "disconnecting"];
339
+ type ConnectionStatus = (typeof ConnectionStatuses)[number];
340
+ interface ConnectionStatusEventMessages {
341
+ notConnected: any;
342
+ connecting: any;
343
+ connected: any;
344
+ disconnecting: any;
345
+ connectionStatus: {
346
+ connectionStatus: ConnectionStatus;
347
+ };
348
+ isConnected: {
349
+ isConnected: boolean;
350
+ };
351
+ }
352
+ interface TxMessage {
353
+ type: TxRxMessageType;
354
+ data?: ArrayBuffer;
355
+ }
356
+ declare const TxRxMessageTypes: readonly ["isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime", "getSensorConfiguration", "setSensorConfiguration", "getPressurePositions", "getSensorScalars", "sensorData", "triggerVibration", "getTfliteName", "setTfliteName", "getTfliteTask", "setTfliteTask", "getTfliteSampleRate", "setTfliteSampleRate", "getTfliteSensorTypes", "setTfliteSensorTypes", "tfliteIsReady", "getTfliteCaptureDelay", "setTfliteCaptureDelay", "getTfliteThreshold", "setTfliteThreshold", "getTfliteInferencingEnabled", "setTfliteInferencingEnabled", "tfliteInference", "maxFileLength", "getFileType", "setFileType", "getFileLength", "setFileLength", "getFileChecksum", "setFileChecksum", "setFileTransferCommand", "fileTransferStatus", "getFileBlock", "setFileBlock", "fileBytesTransferred"];
357
+ type TxRxMessageType = (typeof TxRxMessageTypes)[number];
358
+ declare const ConnectionMessageTypes: readonly ["batteryLevel", "manufacturerName", "modelNumber", "softwareRevision", "hardwareRevision", "firmwareRevision", "pnpId", "serialNumber", "rx", "tx", "isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime", "getSensorConfiguration", "setSensorConfiguration", "getPressurePositions", "getSensorScalars", "sensorData", "triggerVibration", "getTfliteName", "setTfliteName", "getTfliteTask", "setTfliteTask", "getTfliteSampleRate", "setTfliteSampleRate", "getTfliteSensorTypes", "setTfliteSensorTypes", "tfliteIsReady", "getTfliteCaptureDelay", "setTfliteCaptureDelay", "getTfliteThreshold", "setTfliteThreshold", "getTfliteInferencingEnabled", "setTfliteInferencingEnabled", "tfliteInference", "maxFileLength", "getFileType", "setFileType", "getFileLength", "setFileLength", "getFileChecksum", "setFileChecksum", "setFileTransferCommand", "fileTransferStatus", "getFileBlock", "setFileBlock", "fileBytesTransferred", "smp"];
359
+ type ConnectionMessageType = (typeof ConnectionMessageTypes)[number];
360
+ type ConnectionStatusCallback = (status: ConnectionStatus) => void;
361
+ type MessageReceivedCallback = (messageType: ConnectionMessageType, dataView: DataView) => void;
362
+ declare abstract class BaseConnectionManager {
363
+ #private;
364
+ abstract get bluetoothId(): string;
365
+ onStatusUpdated?: ConnectionStatusCallback;
366
+ onMessageReceived?: MessageReceivedCallback;
367
+ protected get baseConstructor(): typeof BaseConnectionManager;
368
+ static get isSupported(): boolean;
369
+ get isSupported(): boolean;
370
+ static type: ConnectionType;
371
+ get type(): ConnectionType;
372
+ constructor();
373
+ get status(): "notConnected" | "connecting" | "connected" | "disconnecting";
374
+ protected set status(newConnectionStatus: "notConnected" | "connecting" | "connected" | "disconnecting");
375
+ get isConnected(): boolean;
376
+ connect(): Promise<void>;
377
+ get canReconnect(): boolean;
378
+ reconnect(): Promise<void>;
379
+ disconnect(): Promise<void>;
380
+ sendSmpMessage(data: ArrayBuffer): Promise<void>;
381
+ sendTxMessages(messages: TxMessage[] | undefined, sendImmediately?: boolean): Promise<void>;
382
+ mtu?: number;
383
+ sendTxData(data: ArrayBuffer): Promise<void>;
384
+ parseRxMessage(dataView: DataView): void;
385
+ }
386
+
387
+ type SensorConfiguration = {
388
+ [sensorType in SensorType]?: number;
389
+ };
390
+ declare const MaxSensorRate: number;
391
+ declare const SensorRateStep = 5;
392
+ interface SensorConfigurationEventMessages {
393
+ getSensorConfiguration: {
394
+ sensorConfiguration: SensorConfiguration;
395
+ };
396
+ }
397
+
398
+ declare const VibrationWaveformEffects: readonly ["none", "strongClick100", "strongClick60", "strongClick30", "sharpClick100", "sharpClick60", "sharpClick30", "softBump100", "softBump60", "softBump30", "doubleClick100", "doubleClick60", "tripleClick100", "softFuzz60", "strongBuzz100", "alert750ms", "alert1000ms", "strongClick1_100", "strongClick2_80", "strongClick3_60", "strongClick4_30", "mediumClick100", "mediumClick80", "mediumClick60", "sharpTick100", "sharpTick80", "sharpTick60", "shortDoubleClickStrong100", "shortDoubleClickStrong80", "shortDoubleClickStrong60", "shortDoubleClickStrong30", "shortDoubleClickMedium100", "shortDoubleClickMedium80", "shortDoubleClickMedium60", "shortDoubleSharpTick100", "shortDoubleSharpTick80", "shortDoubleSharpTick60", "longDoubleSharpClickStrong100", "longDoubleSharpClickStrong80", "longDoubleSharpClickStrong60", "longDoubleSharpClickStrong30", "longDoubleSharpClickMedium100", "longDoubleSharpClickMedium80", "longDoubleSharpClickMedium60", "longDoubleSharpTick100", "longDoubleSharpTick80", "longDoubleSharpTick60", "buzz100", "buzz80", "buzz60", "buzz40", "buzz20", "pulsingStrong100", "pulsingStrong60", "pulsingMedium100", "pulsingMedium60", "pulsingSharp100", "pulsingSharp60", "transitionClick100", "transitionClick80", "transitionClick60", "transitionClick40", "transitionClick20", "transitionClick10", "transitionHum100", "transitionHum80", "transitionHum60", "transitionHum40", "transitionHum20", "transitionHum10", "transitionRampDownLongSmooth2_100", "transitionRampDownLongSmooth1_100", "transitionRampDownMediumSmooth1_100", "transitionRampDownMediumSmooth2_100", "transitionRampDownShortSmooth1_100", "transitionRampDownShortSmooth2_100", "transitionRampDownLongSharp1_100", "transitionRampDownLongSharp2_100", "transitionRampDownMediumSharp1_100", "transitionRampDownMediumSharp2_100", "transitionRampDownShortSharp1_100", "transitionRampDownShortSharp2_100", "transitionRampUpLongSmooth1_100", "transitionRampUpLongSmooth2_100", "transitionRampUpMediumSmooth1_100", "transitionRampUpMediumSmooth2_100", "transitionRampUpShortSmooth1_100", "transitionRampUpShortSmooth2_100", "transitionRampUpLongSharp1_100", "transitionRampUpLongSharp2_100", "transitionRampUpMediumSharp1_100", "transitionRampUpMediumSharp2_100", "transitionRampUpShortSharp1_100", "transitionRampUpShortSharp2_100", "transitionRampDownLongSmooth1_50", "transitionRampDownLongSmooth2_50", "transitionRampDownMediumSmooth1_50", "transitionRampDownMediumSmooth2_50", "transitionRampDownShortSmooth1_50", "transitionRampDownShortSmooth2_50", "transitionRampDownLongSharp1_50", "transitionRampDownLongSharp2_50", "transitionRampDownMediumSharp1_50", "transitionRampDownMediumSharp2_50", "transitionRampDownShortSharp1_50", "transitionRampDownShortSharp2_50", "transitionRampUpLongSmooth1_50", "transitionRampUpLongSmooth2_50", "transitionRampUpMediumSmooth1_50", "transitionRampUpMediumSmooth2_50", "transitionRampUpShortSmooth1_50", "transitionRampUpShortSmooth2_50", "transitionRampUpLongSharp1_50", "transitionRampUpLongSharp2_50", "transitionRampUpMediumSharp1_50", "transitionRampUpMediumSharp2_50", "transitionRampUpShortSharp1_50", "transitionRampUpShortSharp2_50", "longBuzz100", "smoothHum50", "smoothHum40", "smoothHum30", "smoothHum20", "smoothHum10"];
399
+ type VibrationWaveformEffect = (typeof VibrationWaveformEffects)[number];
400
+
401
+ declare const VibrationLocations: readonly ["front", "rear"];
402
+ type VibrationLocation = (typeof VibrationLocations)[number];
403
+ declare const VibrationTypes: readonly ["waveformEffect", "waveform"];
404
+ type VibrationType = (typeof VibrationTypes)[number];
405
+ interface VibrationWaveformEffectSegment {
406
+ effect?: VibrationWaveformEffect;
407
+ delay?: number;
408
+ loopCount?: number;
409
+ }
410
+ interface VibrationWaveformSegment {
411
+ duration: number;
412
+ amplitude: number;
413
+ }
414
+ declare const MaxNumberOfVibrationWaveformEffectSegments = 8;
415
+ declare const MaxVibrationWaveformSegmentDuration = 2550;
416
+ declare const MaxVibrationWaveformEffectSegmentDelay = 1270;
417
+ declare const MaxVibrationWaveformEffectSegmentLoopCount = 3;
418
+ declare const MaxNumberOfVibrationWaveformSegments = 20;
419
+ declare const MaxVibrationWaveformEffectSequenceLoopCount = 6;
420
+ interface BaseVibrationConfiguration {
421
+ type: VibrationType;
422
+ locations?: VibrationLocation[];
423
+ }
424
+ interface VibrationWaveformEffectConfiguration extends BaseVibrationConfiguration {
425
+ type: "waveformEffect";
426
+ segments: VibrationWaveformEffectSegment[];
427
+ loopCount?: number;
428
+ }
429
+ interface VibrationWaveformConfiguration extends BaseVibrationConfiguration {
430
+ type: "waveform";
431
+ segments: VibrationWaveformSegment[];
432
+ }
433
+ type VibrationConfiguration = VibrationWaveformEffectConfiguration | VibrationWaveformConfiguration;
434
+
435
+ declare const FileTypes: readonly ["tflite"];
436
+ type FileType = (typeof FileTypes)[number];
437
+ declare const FileTransferStatuses: readonly ["idle", "sending", "receiving"];
438
+ type FileTransferStatus = (typeof FileTransferStatuses)[number];
439
+ declare const FileTransferDirections: readonly ["sending", "receiving"];
440
+ type FileTransferDirection = (typeof FileTransferDirections)[number];
441
+ interface FileTransferEventMessages {
442
+ maxFileLength: {
443
+ maxFileLength: number;
444
+ };
445
+ getFileType: {
446
+ fileType: FileType;
447
+ };
448
+ getFileLength: {
449
+ fileLength: number;
450
+ };
451
+ getFileChecksum: {
452
+ fileChecksum: number;
453
+ };
454
+ fileTransferStatus: {
455
+ fileTransferStatus: FileTransferStatus;
456
+ };
457
+ getFileBlock: {
458
+ fileTransferBlock: DataView;
459
+ };
460
+ fileTransferProgress: {
461
+ progress: number;
462
+ };
463
+ fileTransferComplete: {
464
+ direction: FileTransferDirection;
465
+ };
466
+ fileReceived: {
467
+ file: File | Blob;
468
+ };
469
+ }
470
+
471
+ declare const DeviceTypes: readonly ["leftInsole", "rightInsole"];
472
+ type DeviceType = (typeof DeviceTypes)[number];
473
+ declare const InsoleSides: readonly ["left", "right"];
474
+ type InsoleSide = (typeof InsoleSides)[number];
475
+ declare const MinNameLength = 2;
476
+ declare const MaxNameLength = 30;
477
+ declare const InformationMessageTypes: readonly ["isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime"];
478
+ type InformationMessageType = (typeof InformationMessageTypes)[number];
479
+ declare const InformationEventTypes: readonly ["isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime"];
480
+ type InformationEventType = (typeof InformationEventTypes)[number];
481
+ interface InformationEventMessages {
482
+ isCharging: {
483
+ isCharging: boolean;
484
+ };
485
+ getBatteryCurrent: {
486
+ batteryCurrent: number;
487
+ };
488
+ getMtu: {
489
+ mtu: number;
490
+ };
491
+ getId: {
492
+ id: string;
493
+ };
494
+ getName: {
495
+ name: string;
496
+ };
497
+ getType: {
498
+ type: DeviceType;
499
+ };
500
+ getCurrentTime: {
501
+ currentTime: number;
502
+ };
503
+ }
504
+ type InformationEventDispatcher = EventDispatcher<Device, InformationEventType, InformationEventMessages>;
505
+ type SendInformationMessageCallback = SendMessageCallback<InformationMessageType>;
506
+ declare class InformationManager {
507
+ #private;
508
+ constructor();
509
+ sendMessage: SendInformationMessageCallback;
510
+ eventDispatcher: InformationEventDispatcher;
511
+ get waitForEvent(): <T extends "isCharging" | "getBatteryCurrent" | "getMtu" | "getId" | "getName" | "setName" | "getType" | "setType" | "getCurrentTime" | "setCurrentTime">(type: T) => Promise<{
512
+ type: T;
513
+ target: Device;
514
+ message: InformationEventMessages[T];
515
+ }>;
516
+ get isCharging(): boolean;
517
+ get batteryCurrent(): number;
518
+ getBatteryCurrent(): Promise<void>;
519
+ get id(): string;
520
+ get name(): string;
521
+ updateName(updatedName: string): void;
522
+ setName(newName: string): Promise<void>;
523
+ get type(): "leftInsole" | "rightInsole";
524
+ get typeEnum(): number;
525
+ updateType(updatedType: DeviceType): void;
526
+ setType(newType: DeviceType): Promise<void>;
527
+ get isInsole(): boolean;
528
+ get insoleSide(): InsoleSide;
529
+ get mtu(): number;
530
+ get isCurrentTimeSet(): boolean;
531
+ parseMessage(messageType: InformationMessageType, dataView: DataView): void;
532
+ clear(): void;
533
+ }
534
+
535
+ declare const DeviceEventTypes: readonly ["connectionMessage", "notConnected", "connecting", "connected", "disconnecting", "connectionStatus", "isConnected", "rx", "tx", "batteryLevel", "isCharging", "getBatteryCurrent", "getMtu", "getId", "getName", "setName", "getType", "setType", "getCurrentTime", "setCurrentTime", "manufacturerName", "modelNumber", "softwareRevision", "hardwareRevision", "firmwareRevision", "pnpId", "serialNumber", "deviceInformation", "getSensorConfiguration", "setSensorConfiguration", "getPressurePositions", "getSensorScalars", "sensorData", "pressure", "acceleration", "gravity", "linearAcceleration", "gyroscope", "magnetometer", "gameRotation", "rotation", "orientation", "activity", "stepCounter", "stepDetector", "deviceOrientation", "barometer", "maxFileLength", "getFileType", "setFileType", "getFileLength", "setFileLength", "getFileChecksum", "setFileChecksum", "setFileTransferCommand", "fileTransferStatus", "getFileBlock", "setFileBlock", "fileBytesTransferred", "fileTransferProgress", "fileTransferComplete", "fileReceived", "getTfliteName", "setTfliteName", "getTfliteTask", "setTfliteTask", "getTfliteSampleRate", "setTfliteSampleRate", "getTfliteSensorTypes", "setTfliteSensorTypes", "tfliteIsReady", "getTfliteCaptureDelay", "setTfliteCaptureDelay", "getTfliteThreshold", "setTfliteThreshold", "getTfliteInferencingEnabled", "setTfliteInferencingEnabled", "tfliteInference", "smp", "firmwareImages", "firmwareUploadProgress", "firmwareStatus", "firmwareUploadComplete"];
536
+ type DeviceEventType = (typeof DeviceEventTypes)[number];
537
+ interface DeviceEventMessages extends ConnectionStatusEventMessages, DeviceInformationEventMessages, InformationEventMessages, SensorDataEventMessages, SensorConfigurationEventMessages, TfliteEventMessages, FileTransferEventMessages, FirmwareEventMessages {
538
+ batteryLevel: {
539
+ batteryLevel: number;
540
+ };
541
+ connectionMessage: {
542
+ messageType: ConnectionMessageType;
543
+ dataView: DataView;
544
+ };
545
+ }
546
+ type SendMessageCallback<MessageType extends string> = (messages?: {
547
+ type: MessageType;
548
+ data?: ArrayBuffer;
549
+ }[], sendImmediately?: boolean) => Promise<void>;
550
+ type DeviceEvent = Event<Device, DeviceEventType, DeviceEventMessages>;
551
+ type DeviceEventMap = EventMap<Device, DeviceEventType, DeviceEventMessages>;
552
+ type DeviceEventListenerMap = EventListenerMap<Device, DeviceEventType, DeviceEventMessages>;
553
+ type BoundDeviceEventListeners = BoundEventListeners<Device, DeviceEventType, DeviceEventMessages>;
554
+ declare class Device {
555
+ #private;
556
+ get bluetoothId(): string | undefined;
557
+ constructor();
558
+ get addEventListener(): <T extends "maxFileLength" | "getFileType" | "setFileType" | "getFileLength" | "setFileLength" | "getFileChecksum" | "setFileChecksum" | "setFileTransferCommand" | "fileTransferStatus" | "getFileBlock" | "setFileBlock" | "fileBytesTransferred" | "fileTransferProgress" | "fileTransferComplete" | "fileReceived" | "pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "orientation" | "activity" | "stepCounter" | "stepDetector" | "deviceOrientation" | "barometer" | "getPressurePositions" | "getSensorScalars" | "sensorData" | "getSensorConfiguration" | "setSensorConfiguration" | "getTfliteName" | "setTfliteName" | "getTfliteTask" | "setTfliteTask" | "getTfliteSampleRate" | "setTfliteSampleRate" | "getTfliteSensorTypes" | "setTfliteSensorTypes" | "tfliteIsReady" | "getTfliteCaptureDelay" | "setTfliteCaptureDelay" | "getTfliteThreshold" | "setTfliteThreshold" | "getTfliteInferencingEnabled" | "setTfliteInferencingEnabled" | "tfliteInference" | "manufacturerName" | "modelNumber" | "softwareRevision" | "hardwareRevision" | "firmwareRevision" | "pnpId" | "serialNumber" | "deviceInformation" | "isCharging" | "getBatteryCurrent" | "getMtu" | "getId" | "getName" | "setName" | "getType" | "setType" | "getCurrentTime" | "setCurrentTime" | "notConnected" | "connecting" | "connected" | "disconnecting" | "connectionStatus" | "isConnected" | "smp" | "batteryLevel" | "rx" | "tx" | "firmwareImages" | "firmwareUploadProgress" | "firmwareStatus" | "firmwareUploadComplete" | "connectionMessage">(type: T, listener: (event: {
559
+ type: T;
560
+ target: Device;
561
+ message: DeviceEventMessages[T];
562
+ }) => void, options?: {
563
+ once?: boolean;
564
+ }) => void;
565
+ get removeEventListener(): <T extends "maxFileLength" | "getFileType" | "setFileType" | "getFileLength" | "setFileLength" | "getFileChecksum" | "setFileChecksum" | "setFileTransferCommand" | "fileTransferStatus" | "getFileBlock" | "setFileBlock" | "fileBytesTransferred" | "fileTransferProgress" | "fileTransferComplete" | "fileReceived" | "pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "orientation" | "activity" | "stepCounter" | "stepDetector" | "deviceOrientation" | "barometer" | "getPressurePositions" | "getSensorScalars" | "sensorData" | "getSensorConfiguration" | "setSensorConfiguration" | "getTfliteName" | "setTfliteName" | "getTfliteTask" | "setTfliteTask" | "getTfliteSampleRate" | "setTfliteSampleRate" | "getTfliteSensorTypes" | "setTfliteSensorTypes" | "tfliteIsReady" | "getTfliteCaptureDelay" | "setTfliteCaptureDelay" | "getTfliteThreshold" | "setTfliteThreshold" | "getTfliteInferencingEnabled" | "setTfliteInferencingEnabled" | "tfliteInference" | "manufacturerName" | "modelNumber" | "softwareRevision" | "hardwareRevision" | "firmwareRevision" | "pnpId" | "serialNumber" | "deviceInformation" | "isCharging" | "getBatteryCurrent" | "getMtu" | "getId" | "getName" | "setName" | "getType" | "setType" | "getCurrentTime" | "setCurrentTime" | "notConnected" | "connecting" | "connected" | "disconnecting" | "connectionStatus" | "isConnected" | "smp" | "batteryLevel" | "rx" | "tx" | "firmwareImages" | "firmwareUploadProgress" | "firmwareStatus" | "firmwareUploadComplete" | "connectionMessage">(type: T, listener: (event: {
566
+ type: T;
567
+ target: Device;
568
+ message: DeviceEventMessages[T];
569
+ }) => void) => void;
570
+ get waitForEvent(): <T extends "maxFileLength" | "getFileType" | "setFileType" | "getFileLength" | "setFileLength" | "getFileChecksum" | "setFileChecksum" | "setFileTransferCommand" | "fileTransferStatus" | "getFileBlock" | "setFileBlock" | "fileBytesTransferred" | "fileTransferProgress" | "fileTransferComplete" | "fileReceived" | "pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "orientation" | "activity" | "stepCounter" | "stepDetector" | "deviceOrientation" | "barometer" | "getPressurePositions" | "getSensorScalars" | "sensorData" | "getSensorConfiguration" | "setSensorConfiguration" | "getTfliteName" | "setTfliteName" | "getTfliteTask" | "setTfliteTask" | "getTfliteSampleRate" | "setTfliteSampleRate" | "getTfliteSensorTypes" | "setTfliteSensorTypes" | "tfliteIsReady" | "getTfliteCaptureDelay" | "setTfliteCaptureDelay" | "getTfliteThreshold" | "setTfliteThreshold" | "getTfliteInferencingEnabled" | "setTfliteInferencingEnabled" | "tfliteInference" | "manufacturerName" | "modelNumber" | "softwareRevision" | "hardwareRevision" | "firmwareRevision" | "pnpId" | "serialNumber" | "deviceInformation" | "isCharging" | "getBatteryCurrent" | "getMtu" | "getId" | "getName" | "setName" | "getType" | "setType" | "getCurrentTime" | "setCurrentTime" | "notConnected" | "connecting" | "connected" | "disconnecting" | "connectionStatus" | "isConnected" | "smp" | "batteryLevel" | "rx" | "tx" | "firmwareImages" | "firmwareUploadProgress" | "firmwareStatus" | "firmwareUploadComplete" | "connectionMessage">(type: T) => Promise<{
571
+ type: T;
572
+ target: Device;
573
+ message: DeviceEventMessages[T];
574
+ }>;
575
+ get connectionManager(): BaseConnectionManager | undefined;
576
+ set connectionManager(newConnectionManager: BaseConnectionManager | undefined);
577
+ private sendTxMessages;
578
+ connect(): Promise<void>;
579
+ get isConnected(): boolean;
580
+ get canReconnect(): boolean | undefined;
581
+ reconnect(): Promise<void | undefined>;
582
+ static Connect(): Promise<Device>;
583
+ static get ReconnectOnDisconnection(): boolean;
584
+ static set ReconnectOnDisconnection(newReconnectOnDisconnection: boolean);
585
+ get reconnectOnDisconnection(): boolean;
586
+ set reconnectOnDisconnection(newReconnectOnDisconnection: boolean);
587
+ get connectionType(): "webBluetooth" | "noble" | "client" | undefined;
588
+ disconnect(): Promise<void>;
589
+ toggleConnection(): void;
590
+ get connectionStatus(): ConnectionStatus;
591
+ get isConnectionBusy(): boolean;
592
+ latestConnectionMessage: Map<ConnectionMessageType, DataView>;
593
+ get deviceInformation(): DeviceInformation;
594
+ get batteryLevel(): number;
595
+ /** @private */
596
+ _informationManager: InformationManager;
597
+ get id(): string;
598
+ get isCharging(): boolean;
599
+ get batteryCurrent(): number;
600
+ get getBatteryCurrent(): () => Promise<void>;
601
+ get name(): string;
602
+ get setName(): (newName: string) => Promise<void>;
603
+ get type(): "leftInsole" | "rightInsole";
604
+ get setType(): (newType: DeviceType) => Promise<void>;
605
+ get isInsole(): boolean;
606
+ get insoleSide(): "left" | "right";
607
+ get mtu(): number;
608
+ get sensorTypes(): SensorType[];
609
+ get continuousSensorTypes(): ("pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "barometer")[];
610
+ get sensorConfiguration(): SensorConfiguration;
611
+ setSensorConfiguration(newSensorConfiguration: SensorConfiguration, clearRest?: boolean): Promise<void>;
612
+ clearSensorConfiguration(): Promise<void>;
613
+ static get ClearSensorConfigurationOnLeave(): boolean;
614
+ static set ClearSensorConfigurationOnLeave(newClearSensorConfigurationOnLeave: boolean);
615
+ get clearSensorConfigurationOnLeave(): boolean;
616
+ set clearSensorConfigurationOnLeave(newClearSensorConfigurationOnLeave: boolean);
617
+ get numberOfPressureSensors(): number;
618
+ resetPressureRange(): void;
619
+ triggerVibration(vibrationConfigurations: VibrationConfiguration[], sendImmediately?: boolean): Promise<void>;
620
+ get maxFileLength(): number;
621
+ sendFile(fileType: FileType, file: FileLike): Promise<void>;
622
+ receiveFile(fileType: FileType): Promise<void>;
623
+ get fileTransferStatus(): "idle" | "sending" | "receiving";
624
+ cancelFileTransfer(): void;
625
+ get tfliteName(): string;
626
+ get setTfliteName(): (newName: string, sendImmediately?: boolean) => Promise<void>;
627
+ get tfliteTask(): "classification" | "regression";
628
+ get setTfliteTask(): (newTask: TfliteTask, sendImmediately?: boolean) => Promise<void>;
629
+ get tfliteSampleRate(): number;
630
+ get setTfliteSampleRate(): (newSampleRate: number, sendImmediately?: boolean) => Promise<void>;
631
+ get tfliteSensorTypes(): ("pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "orientation" | "activity" | "stepCounter" | "stepDetector" | "deviceOrientation" | "barometer")[];
632
+ get allowedTfliteSensorTypes(): ("pressure" | "acceleration" | "gravity" | "linearAcceleration" | "gyroscope" | "magnetometer" | "gameRotation" | "rotation" | "orientation" | "activity" | "stepCounter" | "stepDetector" | "deviceOrientation" | "barometer")[];
633
+ get setTfliteSensorTypes(): (newSensorTypes: SensorType[], sendImmediately?: boolean) => Promise<void>;
634
+ get tfliteIsReady(): boolean;
635
+ get tfliteInferencingEnabled(): boolean;
636
+ get setTfliteInferencingEnabled(): (newInferencingEnabled: boolean, sendImmediately?: boolean) => Promise<void>;
637
+ enableTfliteInferencing(): Promise<void>;
638
+ disableTfliteInferencing(): Promise<void>;
639
+ get toggleTfliteInferencing(): () => Promise<void>;
640
+ get tfliteCaptureDelay(): number;
641
+ get setTfliteCaptureDelay(): (newCaptureDelay: number, sendImmediately: boolean) => Promise<void>;
642
+ get tfliteThreshold(): number;
643
+ get setTfliteThreshold(): (newThreshold: number, sendImmediately: boolean) => Promise<void>;
644
+ private sendSmpMessage;
645
+ get uploadFirmware(): (file: FileLike) => Promise<void>;
646
+ reset(): Promise<void>;
647
+ get firmwareStatus(): "idle" | "uploading" | "uploaded" | "pending" | "testing" | "erasing";
648
+ get getFirmwareImages(): () => Promise<void>;
649
+ get firmwareImages(): FirmwareImage[];
650
+ get eraseFirmwareImage(): () => Promise<void>;
651
+ get confirmFirmwareImage(): (imageIndex?: number) => Promise<void>;
652
+ get testFirmwareImage(): (imageIndex?: number) => Promise<void>;
653
+ get isServerSide(): boolean;
654
+ set isServerSide(newIsServerSide: boolean);
655
+ }
656
+
657
+ declare const DeviceManagerEventTypes: readonly ["deviceConnected", "deviceDisconnected", "deviceIsConnected", "availableDevices", "connectedDevices"];
658
+ type DeviceManagerEventType = (typeof DeviceManagerEventTypes)[number];
659
+ interface DeviceManagerEventMessage {
660
+ device: Device;
661
+ }
662
+ interface DeviceManagerEventMessages {
663
+ deviceConnected: DeviceManagerEventMessage;
664
+ deviceDisconnected: DeviceManagerEventMessage;
665
+ deviceIsConnected: DeviceManagerEventMessage;
666
+ availableDevices: {
667
+ availableDevices: Device[];
668
+ };
669
+ connectedDevices: {
670
+ connectedDevices: Device[];
671
+ };
672
+ }
673
+ type DeviceManagerEventMap = EventMap<typeof Device, DeviceManagerEventType, DeviceManagerEventMessages>;
674
+ type DeviceManagerEventListenerMap = EventListenerMap<typeof Device, DeviceManagerEventType, DeviceManagerEventMessages>;
675
+ type DeviceManagerEvent = Event<typeof Device, DeviceManagerEventType, DeviceManagerEventMessages>;
676
+ type BoundDeviceManagerEventListeners = BoundEventListeners<typeof Device, DeviceManagerEventType, DeviceManagerEventMessages>;
677
+ declare class DeviceManager {
678
+ #private;
679
+ static readonly shared: DeviceManager;
680
+ constructor();
681
+ /** @private */
682
+ onDevice(device: Device): void;
683
+ /** @private */
684
+ OnDeviceConnectionStatusUpdated(device: Device, connectionStatus: ConnectionStatus): void;
685
+ get ConnectedDevices(): Device[];
686
+ get UseLocalStorage(): boolean;
687
+ set UseLocalStorage(newUseLocalStorage: boolean);
688
+ get CanUseLocalStorage(): false | Storage;
689
+ get AvailableDevices(): Device[];
690
+ get CanGetDevices(): false | (() => Promise<BluetoothDevice[]>);
691
+ /**
692
+ * retrieves devices already connected via web bluetooth in other tabs/windows
693
+ *
694
+ * _only available on web-bluetooth enabled browsers_
695
+ */
696
+ GetDevices(): Promise<Device[] | undefined>;
697
+ get AddEventListener(): <T extends "deviceConnected" | "deviceDisconnected" | "deviceIsConnected" | "availableDevices" | "connectedDevices">(type: T, listener: (event: {
698
+ type: T;
699
+ target: DeviceManager;
700
+ message: DeviceManagerEventMessages[T];
701
+ }) => void, options?: {
702
+ once?: boolean;
703
+ }) => void;
704
+ get RemoveEventListener(): <T extends "deviceConnected" | "deviceDisconnected" | "deviceIsConnected" | "availableDevices" | "connectedDevices">(type: T, listener: (event: {
705
+ type: T;
706
+ target: DeviceManager;
707
+ message: DeviceManagerEventMessages[T];
708
+ }) => void) => void;
709
+ }
710
+ declare const _default: DeviceManager;
711
+
712
+ interface DevicePairPressureData {
713
+ rawSum: number;
714
+ normalizedSum: number;
715
+ center?: CenterOfPressure;
716
+ normalizedCenter?: CenterOfPressure;
717
+ }
718
+ interface DevicePairPressureDataEventMessage {
719
+ pressure: DevicePairPressureData;
720
+ }
721
+ interface DevicePairPressureDataEventMessages {
722
+ pressure: DevicePairPressureDataEventMessage;
723
+ }
724
+
725
+ type DevicePairSensorDataTimestamps = {
726
+ [insoleSide in InsoleSide]: number;
727
+ };
728
+ interface BaseDevicePairSensorDataEventMessage {
729
+ timestamps: DevicePairSensorDataTimestamps;
730
+ }
731
+ type BaseDevicePairSensorDataEventMessages = DevicePairPressureDataEventMessages;
732
+ type _DevicePairSensorDataEventMessages = ExtendInterfaceValues<AddKeysAsPropertyToInterface<BaseDevicePairSensorDataEventMessages, "sensorType">, BaseDevicePairSensorDataEventMessage>;
733
+ type DevicePairSensorDataEventMessage = ValueOf<_DevicePairSensorDataEventMessages>;
734
+ interface AnyDevicePairSensorDataEventMessages {
735
+ sensorData: DevicePairSensorDataEventMessage;
736
+ }
737
+ type DevicePairSensorDataEventMessages = _DevicePairSensorDataEventMessages & AnyDevicePairSensorDataEventMessages;
738
+
739
+ interface BaseDevicePairDeviceEventMessage {
740
+ device: Device;
741
+ side: InsoleSide;
742
+ }
743
+ type DevicePairDeviceEventMessages = ExtendInterfaceValues<AddPrefixToInterfaceKeys<DeviceEventMessages, "device">, BaseDevicePairDeviceEventMessage>;
744
+ interface DevicePairConnectionEventMessages {
745
+ isConnected: {
746
+ isConnected: boolean;
747
+ };
748
+ }
749
+ type DevicePairEventMessages = DevicePairConnectionEventMessages & DevicePairSensorDataEventMessages & DevicePairDeviceEventMessages;
750
+ type DevicePairEventMap = EventMap<DevicePair, DeviceEventType, DevicePairEventMessages>;
751
+ type DevicePairEventListenerMap = EventListenerMap<DevicePair, DeviceEventType, DevicePairEventMessages>;
752
+ type DevicePairEvent = Event<DevicePair, DeviceEventType, DevicePairEventMessages>;
753
+ type BoundDevicePairEventListeners = BoundEventListeners<DevicePair, DeviceEventType, DevicePairEventMessages>;
754
+ declare class DevicePair {
755
+ #private;
756
+ constructor();
757
+ get sides(): readonly ["left", "right"];
758
+ get addEventListener(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage">(type: T, listener: (event: {
759
+ type: T;
760
+ target: DevicePair;
761
+ message: DevicePairEventMessages[T];
762
+ }) => void, options?: {
763
+ once?: boolean;
764
+ }) => void;
765
+ get removeEventListener(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage">(type: T, listener: (event: {
766
+ type: T;
767
+ target: DevicePair;
768
+ message: DevicePairEventMessages[T];
769
+ }) => void) => void;
770
+ get waitForEvent(): <T extends "pressure" | "deviceOrientation" | "sensorData" | "isConnected" | "deviceConnected" | "deviceIsConnected" | "deviceMaxFileLength" | "deviceGetFileType" | "deviceGetFileLength" | "deviceGetFileChecksum" | "deviceFileTransferStatus" | "deviceGetFileBlock" | "deviceFileTransferProgress" | "deviceFileTransferComplete" | "deviceFileReceived" | "devicePressure" | "deviceAcceleration" | "deviceGravity" | "deviceLinearAcceleration" | "deviceGyroscope" | "deviceMagnetometer" | "deviceGameRotation" | "deviceRotation" | "deviceActivity" | "deviceStepCounter" | "deviceStepDetector" | "deviceDeviceOrientation" | "deviceBarometer" | "deviceSensorData" | "deviceGetSensorConfiguration" | "deviceGetTfliteName" | "deviceGetTfliteTask" | "deviceGetTfliteSampleRate" | "deviceGetTfliteSensorTypes" | "deviceTfliteIsReady" | "deviceGetTfliteCaptureDelay" | "deviceGetTfliteThreshold" | "deviceGetTfliteInferencingEnabled" | "deviceTfliteInference" | "deviceManufacturerName" | "deviceModelNumber" | "deviceSoftwareRevision" | "deviceHardwareRevision" | "deviceFirmwareRevision" | "devicePnpId" | "deviceSerialNumber" | "deviceDeviceInformation" | "deviceIsCharging" | "deviceGetBatteryCurrent" | "deviceGetMtu" | "deviceGetId" | "deviceGetName" | "deviceGetType" | "deviceGetCurrentTime" | "deviceNotConnected" | "deviceConnecting" | "deviceDisconnecting" | "deviceConnectionStatus" | "deviceSmp" | "deviceBatteryLevel" | "deviceFirmwareImages" | "deviceFirmwareUploadProgress" | "deviceFirmwareStatus" | "deviceConnectionMessage">(type: T) => Promise<{
771
+ type: T;
772
+ target: DevicePair;
773
+ message: DevicePairEventMessages[T];
774
+ }>;
775
+ get left(): Device | undefined;
776
+ get right(): Device | undefined;
777
+ get isConnected(): boolean;
778
+ get isPartiallyConnected(): boolean;
779
+ get isHalfConnected(): boolean;
780
+ assignInsole(device: Device): Device | undefined;
781
+ setSensorConfiguration(sensorConfiguration: SensorConfiguration): void;
782
+ resetPressureRange(): void;
783
+ triggerVibration(vibrationConfigurations: VibrationConfiguration[], sendImmediately?: boolean): Promise<PromiseSettledResult<void | undefined>[]>;
784
+ static get shared(): DevicePair;
785
+ }
786
+
787
+ interface DiscoveredDevice {
788
+ bluetoothId: string;
789
+ name: string;
790
+ deviceType: DeviceType;
791
+ rssi: number;
792
+ }
793
+ interface ScannerDiscoveredDeviceEventMessage {
794
+ discoveredDevice: DiscoveredDevice;
795
+ }
796
+ interface ScannerEventMessages {
797
+ discoveredDevice: ScannerDiscoveredDeviceEventMessage;
798
+ expiredDiscoveredDevice: ScannerDiscoveredDeviceEventMessage;
799
+ isScanningAvailable: {
800
+ isScanningAvailable: boolean;
801
+ };
802
+ isScanning: {
803
+ isScanning: boolean;
804
+ };
805
+ }
806
+ type DiscoveredDevicesMap = {
807
+ [deviceId: string]: DiscoveredDevice;
808
+ };
809
+ declare abstract class BaseScanner {
810
+ #private;
811
+ protected get baseConstructor(): typeof BaseScanner;
812
+ static get isSupported(): boolean;
813
+ get isSupported(): boolean;
814
+ constructor();
815
+ get addEventListener(): <T extends "isScanningAvailable" | "isScanning" | "discoveredDevice" | "expiredDiscoveredDevice">(type: T, listener: (event: {
816
+ type: T;
817
+ target: BaseScanner;
818
+ message: ScannerEventMessages[T];
819
+ }) => void, options?: {
820
+ once?: boolean;
821
+ }) => void;
822
+ protected get dispatchEvent(): <T extends "isScanningAvailable" | "isScanning" | "discoveredDevice" | "expiredDiscoveredDevice">(type: T, message: ScannerEventMessages[T]) => void;
823
+ get removeEventListener(): <T extends "isScanningAvailable" | "isScanning" | "discoveredDevice" | "expiredDiscoveredDevice">(type: T, listener: (event: {
824
+ type: T;
825
+ target: BaseScanner;
826
+ message: ScannerEventMessages[T];
827
+ }) => void) => void;
828
+ get waitForEvent(): <T extends "isScanningAvailable" | "isScanning" | "discoveredDevice" | "expiredDiscoveredDevice">(type: T) => Promise<{
829
+ type: T;
830
+ target: BaseScanner;
831
+ message: ScannerEventMessages[T];
832
+ }>;
833
+ get isScanningAvailable(): boolean;
834
+ get isScanning(): boolean;
835
+ startScan(): void;
836
+ stopScan(): void;
837
+ get discoveredDevices(): Readonly<DiscoveredDevicesMap>;
838
+ get discoveredDevicesArray(): DiscoveredDevice[];
839
+ static get DiscoveredDeviceExpirationTimeout(): number;
840
+ connectToDevice(deviceId: string): Promise<void>;
841
+ get canReset(): boolean;
842
+ reset(): void;
843
+ }
844
+
845
+ declare let scanner: BaseScanner | undefined;
846
+
847
+ declare const ServerEventTypes: readonly ["clientConnected", "clientDisconnected"];
848
+ type ServerEventType = (typeof ServerEventTypes)[number];
849
+ interface ServerEventMessages {
850
+ clientConnected: {
851
+ client: any;
852
+ };
853
+ clientDisconnected: {
854
+ client: any;
855
+ };
856
+ }
857
+ type ServerEventDispatcher = EventDispatcher<BaseServer, ServerEventType, ServerEventMessages>;
858
+ declare abstract class BaseServer {
859
+ #private;
860
+ protected eventDispatcher: ServerEventDispatcher;
861
+ get addEventListener(): <T extends "clientConnected" | "clientDisconnected">(type: T, listener: (event: {
862
+ type: T;
863
+ target: BaseServer;
864
+ message: ServerEventMessages[T];
865
+ }) => void, options?: {
866
+ once?: boolean;
867
+ }) => void;
868
+ protected get dispatchEvent(): <T extends "clientConnected" | "clientDisconnected">(type: T, message: ServerEventMessages[T]) => void;
869
+ get removeEventListener(): <T extends "clientConnected" | "clientDisconnected">(type: T, listener: (event: {
870
+ type: T;
871
+ target: BaseServer;
872
+ message: ServerEventMessages[T];
873
+ }) => void) => void;
874
+ get waitForEvent(): <T extends "clientConnected" | "clientDisconnected">(type: T) => Promise<{
875
+ type: T;
876
+ target: BaseServer;
877
+ message: ServerEventMessages[T];
878
+ }>;
879
+ constructor();
880
+ get numberOfClients(): number;
881
+ static get ClearSensorConfigurationsWhenNoClients(): boolean;
882
+ static set ClearSensorConfigurationsWhenNoClients(newValue: boolean);
883
+ get clearSensorConfigurationsWhenNoClients(): boolean;
884
+ set clearSensorConfigurationsWhenNoClients(newValue: boolean);
885
+ broadcastMessage(message: ArrayBuffer): void;
886
+ protected parseClientMessage(dataView: DataView): ArrayBuffer | undefined;
887
+ protected parseClientDeviceMessage(device: Device, dataView: DataView): ArrayBuffer | undefined;
888
+ }
889
+
890
+ interface WebSocketServer extends ws.WebSocketServer {
891
+ }
892
+ declare class WebSocketServer extends BaseServer {
893
+ #private;
894
+ get numberOfClients(): number;
895
+ get server(): WebSocketServer | undefined;
896
+ set server(newServer: WebSocketServer | undefined);
897
+ broadcastMessage(message: ArrayBuffer): void;
898
+ }
899
+
900
+ declare class UDPServer extends BaseServer {
901
+ #private;
902
+ get numberOfClients(): number;
903
+ get socket(): dgram.Socket | undefined;
904
+ set socket(newSocket: dgram.Socket | undefined);
905
+ broadcastMessage(message: ArrayBuffer): void;
906
+ }
907
+
908
+ export { type BoundDeviceEventListeners, type BoundDeviceManagerEventListeners, type BoundDevicePairEventListeners, type CenterOfPressure, type ContinuousSensorType, ContinuousSensorTypes, DefaultNumberOfPressureSensors, Device, type DeviceEvent, type DeviceEventListenerMap, type DeviceEventMap, type DeviceInformation, _default as DeviceManager, type DeviceManagerEvent, type DeviceManagerEventListenerMap, type DeviceManagerEventMap, DevicePair, type DevicePairEvent, type DevicePairEventListenerMap, type DevicePairEventMap, type DeviceType, DeviceTypes, type DiscoveredDevice, environment_d as Environment, type Euler, type FileTransferDirection, FileTransferDirections, type FileType, FileTypes, type InsoleSide, InsoleSides, MaxNameLength, MaxNumberOfVibrationWaveformEffectSegments, MaxNumberOfVibrationWaveformSegments, MaxSensorRate, MaxVibrationWaveformEffectSegmentDelay, MaxVibrationWaveformEffectSegmentLoopCount, MaxVibrationWaveformEffectSequenceLoopCount, MaxVibrationWaveformSegmentDuration, MinNameLength, type PressureData, type Quaternion, scanner as Scanner, type SensorConfiguration, SensorRateStep, type SensorType, SensorTypes, type TfliteSensorType, TfliteSensorTypes, type TfliteTask, TfliteTasks, UDPServer, type Vector2, type Vector3, type VibrationConfiguration, type VibrationLocation, VibrationLocations, type VibrationType, VibrationTypes, type VibrationWaveformEffect, VibrationWaveformEffects, WebSocketServer, setAllConsoleLevelFlags, setConsoleLevelFlagsForType };