@bota.dev/react-native-app-sdk 2.0.0-beta.0

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 (173) hide show
  1. package/BotaDeviceSDK.podspec +55 -0
  2. package/LICENSE +21 -0
  3. package/README.md +101 -0
  4. package/android/build.gradle +76 -0
  5. package/android/src/main/AndroidManifest.xml +1 -0
  6. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevices.kt +172 -0
  7. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLifecycle.kt +100 -0
  8. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogs.kt +82 -0
  9. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidModels.kt +476 -0
  10. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidOTA.kt +58 -0
  11. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploads.kt +180 -0
  12. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordings.kt +751 -0
  13. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidSecurity.kt +509 -0
  14. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidWiFi.kt +125 -0
  15. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKEncryptedUploadV2Materials.kt +46 -0
  16. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKModule.kt +723 -0
  17. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKPackage.kt +33 -0
  18. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevicesTest.kt +211 -0
  19. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLifecycleTest.kt +132 -0
  20. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogsTest.kt +57 -0
  21. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidOTATest.kt +75 -0
  22. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploadsTest.kt +147 -0
  23. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingsTest.kt +355 -0
  24. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidSecurityTest.kt +523 -0
  25. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidWiFiTest.kt +100 -0
  26. package/generated/codegen-contract.json +3593 -0
  27. package/ios/BotaDeviceSDK.mm +1300 -0
  28. package/ios/BotaDeviceSDKAppleBridge.swift +2260 -0
  29. package/ios/BotaDeviceSDKAppleDevices.swift +191 -0
  30. package/ios/BotaDeviceSDKAppleLifecycle.swift +167 -0
  31. package/ios/BotaDeviceSDKAppleLogs.swift +79 -0
  32. package/ios/BotaDeviceSDKAppleOTA.swift +73 -0
  33. package/ios/BotaDeviceSDKAppleRecordingUploads.swift +178 -0
  34. package/ios/BotaDeviceSDKAppleRecordings.swift +670 -0
  35. package/ios/BotaDeviceSDKAppleSecurity.swift +586 -0
  36. package/ios/BotaDeviceSDKAppleWiFi.swift +128 -0
  37. package/ios/BotaDeviceSDKEncryptedUploadV2Materials.swift +99 -0
  38. package/lib/commonjs/BotaClient.js +194 -0
  39. package/lib/commonjs/BotaClient.js.map +1 -0
  40. package/lib/commonjs/ble/constants.js +10 -0
  41. package/lib/commonjs/ble/constants.js.map +1 -0
  42. package/lib/commonjs/ble/deviceLogs.js +50 -0
  43. package/lib/commonjs/ble/deviceLogs.js.map +1 -0
  44. package/lib/commonjs/cache/DeviceStateCache.js +6 -0
  45. package/lib/commonjs/cache/DeviceStateCache.js.map +1 -0
  46. package/lib/commonjs/client.js +746 -0
  47. package/lib/commonjs/client.js.map +1 -0
  48. package/lib/commonjs/compatibility/runtime.js +44 -0
  49. package/lib/commonjs/compatibility/runtime.js.map +1 -0
  50. package/lib/commonjs/index.js +123 -0
  51. package/lib/commonjs/index.js.map +1 -0
  52. package/lib/commonjs/managers/DeviceManager.js +647 -0
  53. package/lib/commonjs/managers/DeviceManager.js.map +1 -0
  54. package/lib/commonjs/managers/OTAManager.js +140 -0
  55. package/lib/commonjs/managers/OTAManager.js.map +1 -0
  56. package/lib/commonjs/managers/RecordingManager.js +444 -0
  57. package/lib/commonjs/managers/RecordingManager.js.map +1 -0
  58. package/lib/commonjs/managers/StreamingSession.js +175 -0
  59. package/lib/commonjs/managers/StreamingSession.js.map +1 -0
  60. package/lib/commonjs/managers/types.js +6 -0
  61. package/lib/commonjs/managers/types.js.map +1 -0
  62. package/lib/commonjs/models/Device.js +2 -0
  63. package/lib/commonjs/models/Device.js.map +1 -0
  64. package/lib/commonjs/models/Recording.js +2 -0
  65. package/lib/commonjs/models/Recording.js.map +1 -0
  66. package/lib/commonjs/models/Status.js +6 -0
  67. package/lib/commonjs/models/Status.js.map +1 -0
  68. package/lib/commonjs/package.json +1 -0
  69. package/lib/commonjs/specs/NativeBotaDeviceSDK.js +9 -0
  70. package/lib/commonjs/specs/NativeBotaDeviceSDK.js.map +1 -0
  71. package/lib/commonjs/sync/syncStatus.js +178 -0
  72. package/lib/commonjs/sync/syncStatus.js.map +1 -0
  73. package/lib/commonjs/utils/errors.js +194 -0
  74. package/lib/commonjs/utils/errors.js.map +1 -0
  75. package/lib/commonjs/utils/logger.js +84 -0
  76. package/lib/commonjs/utils/logger.js.map +1 -0
  77. package/lib/module/BotaClient.js +189 -0
  78. package/lib/module/BotaClient.js.map +1 -0
  79. package/lib/module/ble/constants.js +6 -0
  80. package/lib/module/ble/constants.js.map +1 -0
  81. package/lib/module/ble/deviceLogs.js +45 -0
  82. package/lib/module/ble/deviceLogs.js.map +1 -0
  83. package/lib/module/cache/DeviceStateCache.js +4 -0
  84. package/lib/module/cache/DeviceStateCache.js.map +1 -0
  85. package/lib/module/client.js +740 -0
  86. package/lib/module/client.js.map +1 -0
  87. package/lib/module/compatibility/runtime.js +35 -0
  88. package/lib/module/compatibility/runtime.js.map +1 -0
  89. package/lib/module/index.js +17 -0
  90. package/lib/module/index.js.map +1 -0
  91. package/lib/module/managers/DeviceManager.js +641 -0
  92. package/lib/module/managers/DeviceManager.js.map +1 -0
  93. package/lib/module/managers/OTAManager.js +134 -0
  94. package/lib/module/managers/OTAManager.js.map +1 -0
  95. package/lib/module/managers/RecordingManager.js +438 -0
  96. package/lib/module/managers/RecordingManager.js.map +1 -0
  97. package/lib/module/managers/StreamingSession.js +168 -0
  98. package/lib/module/managers/StreamingSession.js.map +1 -0
  99. package/lib/module/managers/types.js +4 -0
  100. package/lib/module/managers/types.js.map +1 -0
  101. package/lib/module/models/Device.js +2 -0
  102. package/lib/module/models/Device.js.map +1 -0
  103. package/lib/module/models/Recording.js +2 -0
  104. package/lib/module/models/Recording.js.map +1 -0
  105. package/lib/module/models/Status.js +4 -0
  106. package/lib/module/models/Status.js.map +1 -0
  107. package/lib/module/specs/NativeBotaDeviceSDK.js +5 -0
  108. package/lib/module/specs/NativeBotaDeviceSDK.js.map +1 -0
  109. package/lib/module/sync/syncStatus.js +174 -0
  110. package/lib/module/sync/syncStatus.js.map +1 -0
  111. package/lib/module/utils/errors.js +183 -0
  112. package/lib/module/utils/errors.js.map +1 -0
  113. package/lib/module/utils/logger.js +80 -0
  114. package/lib/module/utils/logger.js.map +1 -0
  115. package/lib/typescript/BotaClient.d.ts +40 -0
  116. package/lib/typescript/BotaClient.d.ts.map +1 -0
  117. package/lib/typescript/ble/constants.d.ts +4 -0
  118. package/lib/typescript/ble/constants.d.ts.map +1 -0
  119. package/lib/typescript/ble/deviceLogs.d.ts +10 -0
  120. package/lib/typescript/ble/deviceLogs.d.ts.map +1 -0
  121. package/lib/typescript/cache/DeviceStateCache.d.ts +14 -0
  122. package/lib/typescript/cache/DeviceStateCache.d.ts.map +1 -0
  123. package/lib/typescript/client.d.ts +208 -0
  124. package/lib/typescript/client.d.ts.map +1 -0
  125. package/lib/typescript/compatibility/runtime.d.ts +11 -0
  126. package/lib/typescript/compatibility/runtime.d.ts.map +1 -0
  127. package/lib/typescript/index.d.ts +19 -0
  128. package/lib/typescript/index.d.ts.map +1 -0
  129. package/lib/typescript/managers/DeviceManager.d.ts +117 -0
  130. package/lib/typescript/managers/DeviceManager.d.ts.map +1 -0
  131. package/lib/typescript/managers/OTAManager.d.ts +25 -0
  132. package/lib/typescript/managers/OTAManager.d.ts.map +1 -0
  133. package/lib/typescript/managers/RecordingManager.d.ts +54 -0
  134. package/lib/typescript/managers/RecordingManager.d.ts.map +1 -0
  135. package/lib/typescript/managers/StreamingSession.d.ts +35 -0
  136. package/lib/typescript/managers/StreamingSession.d.ts.map +1 -0
  137. package/lib/typescript/managers/types.d.ts +19 -0
  138. package/lib/typescript/managers/types.d.ts.map +1 -0
  139. package/lib/typescript/models/Device.d.ts +392 -0
  140. package/lib/typescript/models/Device.d.ts.map +1 -0
  141. package/lib/typescript/models/Recording.d.ts +259 -0
  142. package/lib/typescript/models/Recording.d.ts.map +1 -0
  143. package/lib/typescript/models/Status.d.ts +106 -0
  144. package/lib/typescript/models/Status.d.ts.map +1 -0
  145. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts +393 -0
  146. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts.map +1 -0
  147. package/lib/typescript/sync/syncStatus.d.ts +123 -0
  148. package/lib/typescript/sync/syncStatus.d.ts.map +1 -0
  149. package/lib/typescript/utils/errors.d.ts +83 -0
  150. package/lib/typescript/utils/errors.d.ts.map +1 -0
  151. package/lib/typescript/utils/logger.d.ts +36 -0
  152. package/lib/typescript/utils/logger.d.ts.map +1 -0
  153. package/package.json +100 -0
  154. package/scripts/bota_device_sdk_spm_workaround.rb +53 -0
  155. package/src/BotaClient.ts +231 -0
  156. package/src/ble/constants.ts +3 -0
  157. package/src/ble/deviceLogs.ts +61 -0
  158. package/src/cache/DeviceStateCache.ts +20 -0
  159. package/src/client.ts +1410 -0
  160. package/src/compatibility/runtime.ts +55 -0
  161. package/src/index.ts +146 -0
  162. package/src/managers/DeviceManager.ts +927 -0
  163. package/src/managers/OTAManager.ts +195 -0
  164. package/src/managers/RecordingManager.ts +578 -0
  165. package/src/managers/StreamingSession.ts +212 -0
  166. package/src/managers/types.ts +36 -0
  167. package/src/models/Device.ts +484 -0
  168. package/src/models/Recording.ts +281 -0
  169. package/src/models/Status.ts +128 -0
  170. package/src/specs/NativeBotaDeviceSDK.ts +542 -0
  171. package/src/sync/syncStatus.ts +243 -0
  172. package/src/utils/errors.ts +327 -0
  173. package/src/utils/logger.ts +122 -0
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ const LOG_LEVELS = {
4
+ debug: 0,
5
+ info: 1,
6
+ warn: 2,
7
+ error: 3,
8
+ none: 4
9
+ };
10
+ class Logger {
11
+ level = 'warn';
12
+ prefix = '[Bota SDK]';
13
+ handler = null;
14
+ setLevel(level) {
15
+ this.level = level;
16
+ }
17
+ getLevel() {
18
+ return this.level;
19
+ }
20
+ setHandler(handler) {
21
+ this.handler = handler;
22
+ }
23
+ debug(message, context) {
24
+ this.write('debug', message, context);
25
+ }
26
+ info(message, context) {
27
+ this.write('info', message, context);
28
+ }
29
+ warn(message, context) {
30
+ this.write('warn', message, context);
31
+ }
32
+ error(message, error, context) {
33
+ this.write('error', message, error ? {
34
+ ...context,
35
+ error: error.message,
36
+ stack: error.stack
37
+ } : context);
38
+ }
39
+ tag(tag) {
40
+ return new TaggedLogger(this, tag);
41
+ }
42
+ write(level, message, context) {
43
+ if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) return;
44
+ if (this.handler) {
45
+ this.handler({
46
+ level,
47
+ message,
48
+ context,
49
+ timestamp: new Date()
50
+ });
51
+ return;
52
+ }
53
+ const output = this.format(level, message, context);
54
+ console[level](output);
55
+ }
56
+ format(level, message, context) {
57
+ const contextValue = context ? ` ${JSON.stringify(context)}` : '';
58
+ return `${new Date().toISOString()} ${this.prefix} [${level.toUpperCase()}] ${message}${contextValue}`;
59
+ }
60
+ }
61
+ class TaggedLogger {
62
+ constructor(parent, tagValue) {
63
+ this.parent = parent;
64
+ this.tagValue = tagValue;
65
+ }
66
+ debug(message, context) {
67
+ this.parent.debug(`[${this.tagValue}] ${message}`, context);
68
+ }
69
+ info(message, context) {
70
+ this.parent.info(`[${this.tagValue}] ${message}`, context);
71
+ }
72
+ warn(message, context) {
73
+ this.parent.warn(`[${this.tagValue}] ${message}`, context);
74
+ }
75
+ error(message, error, context) {
76
+ this.parent.error(`[${this.tagValue}] ${message}`, error, context);
77
+ }
78
+ }
79
+ export const logger = new Logger();
80
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LOG_LEVELS","debug","info","warn","error","none","Logger","level","prefix","handler","setLevel","getLevel","setHandler","message","context","write","stack","tag","TaggedLogger","timestamp","Date","output","format","console","contextValue","JSON","stringify","toISOString","toUpperCase","constructor","parent","tagValue","logger"],"sourceRoot":"../../../src","sources":["utils/logger.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import { DeviceManager } from './managers/DeviceManager';
3
+ import { OTAManager } from './managers/OTAManager';
4
+ import { RecordingManager } from './managers/RecordingManager';
5
+ import type { BluetoothState, BotaClientEvents, BotaConfig, LogLevel, SdkState } from './models/Status';
6
+ import { type LogHandler } from './utils/logger';
7
+ declare class BotaClientImpl extends EventEmitter<BotaClientEvents> {
8
+ private _config;
9
+ private _state;
10
+ private _bluetoothState;
11
+ private _client;
12
+ private _deviceManager;
13
+ private _recordingManager;
14
+ private _otaManager;
15
+ private _nativeOwned;
16
+ private _operation;
17
+ private _configurePromise;
18
+ private _destroyPromise;
19
+ get state(): SdkState;
20
+ get bluetoothState(): BluetoothState;
21
+ get isBluetoothReady(): boolean;
22
+ get isInitialized(): boolean;
23
+ get config(): BotaConfig | null;
24
+ get devices(): DeviceManager;
25
+ get recordings(): RecordingManager;
26
+ get ota(): OTAManager;
27
+ configure(config?: BotaConfig): Promise<void>;
28
+ waitForBluetooth(timeoutMs?: number): Promise<void>;
29
+ setLogLevel(level: LogLevel): void;
30
+ setLogHandler(handler: LogHandler | null): void;
31
+ destroy(): Promise<void>;
32
+ private enqueue;
33
+ private performConfigure;
34
+ private releaseOwnerGraph;
35
+ private setState;
36
+ private setBluetoothState;
37
+ }
38
+ export declare const BotaClient: BotaClientImpl;
39
+ export type { BluetoothState, BotaConfig, SdkState };
40
+ //# sourceMappingURL=BotaClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotaClient.d.ts","sourceRoot":"","sources":["../../src/BotaClient.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAIzC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,QAAQ,EACT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAYzD,cAAM,cAAe,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IACzD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,eAAe,CAA8B;IAErD,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,IAAI,MAAM,IAAI,UAAU,GAAG,IAAI,CAE9B;IAED,IAAI,OAAO,IAAI,aAAa,CAG3B;IAED,IAAI,UAAU,IAAI,gBAAgB,CAGjC;IAED,IAAI,GAAG,IAAI,UAAU,CAGpB;IAED,SAAS,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,gBAAgB,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKlC,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAI/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAexB,OAAO,CAAC,OAAO;YAMD,gBAAgB;YAwDhB,iBAAiB;IAgB/B,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,iBAAiB;CAK1B;AAED,eAAO,MAAM,UAAU,gBAAuB,CAAC;AAE/C,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const DEVICE_LOG_FLAG_BACKLOG = 1;
2
+ export declare const DEVICE_LOG_FLAG_DROPPED = 2;
3
+ export declare const BLE_ERROR_STORAGE_KEY_UNAVAILABLE = 20;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ble/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAC5C,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAC5C,eAAO,MAAM,iCAAiC,KAAO,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Buffer } from 'buffer';
2
+ import type { DeviceLogEvent } from '../models/Device';
3
+ export type { DeviceLogEvent } from '../models/Device';
4
+ export declare class DeviceLogDecoder {
5
+ private lineBuffer;
6
+ private expectedSequence;
7
+ push(packet: Buffer): DeviceLogEvent[];
8
+ reset(): void;
9
+ }
10
+ //# sourceMappingURL=deviceLogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceLogs.d.ts","sourceRoot":"","sources":["../../../src/ble/deviceLogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE;IAwCtC,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,14 @@
1
+ import type { WiFiStatusInfo } from '../models/Device';
2
+ export interface CachedDeviceState {
3
+ wifiStatus?: WiFiStatusInfo;
4
+ updatedAt: number;
5
+ }
6
+ export interface DeviceStatePatch {
7
+ wifiStatus?: Partial<WiFiStatusInfo> | null;
8
+ }
9
+ export interface DeviceStateCacheEvents {
10
+ stateChanged: (serialNumber: string, patch: DeviceStatePatch, state: CachedDeviceState) => void;
11
+ cleared: (serialNumber: string) => void;
12
+ clearedAll: () => void;
13
+ }
14
+ //# sourceMappingURL=DeviceStateCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceStateCache.d.ts","sourceRoot":"","sources":["../../../src/cache/DeviceStateCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,CACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,iBAAiB,KACrB,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB"}
@@ -0,0 +1,208 @@
1
+ import type { NativeCapabilities, NativeEncryptedUploadV2Capability, NativeEncryptedUploadV2Checkpoint, NativeEncryptedUploadV2Recording, NativeFactoryResetCompletion, NativeFactoryResetGrantRequest, NativeStreamingStartRequest, NativeStreamingUploadDestination, NativeProvisioningMaterialRequest, Spec } from './specs/NativeBotaDeviceSDK';
2
+ import type { ConnectedDevice, DeviceConnectionSettings, DeviceStatus, DeviceLogEvent, DiscoveredDevice, ReconnectOptions, ScanOptions, WiFiConfigGrant, WiFiConfigResult, WiFiCredentials, WiFiStatusInfo, BleFactoryResetResultPersister, DeviceWiFiScanResult, Environment, RecordingState } from './models/Device';
3
+ import type { DeviceRecording, UploadTask } from './models/Recording';
4
+ export type BotaLogLevel = 'debug' | 'info' | 'warn' | 'error' | 'none';
5
+ export type BotaDeviceSDKConfiguration = {
6
+ applicationSupportDirectory?: string;
7
+ logLevel?: BotaLogLevel;
8
+ };
9
+ export type BotaDeviceSDKState = 'uninitialized' | 'initializing' | 'ready' | 'error';
10
+ export type BotaDeviceSDKCapabilities = NativeCapabilities;
11
+ export type BotaEventSubscription = {
12
+ remove(): void;
13
+ };
14
+ export type BotaAsyncEventSubscription = {
15
+ remove(): Promise<void>;
16
+ };
17
+ export type BotaProvisioningMaterialRequest = Omit<NativeProvisioningMaterialRequest, 'requestId'>;
18
+ export type BotaProvisioningMaterial = {
19
+ apiEndpoint: string;
20
+ deviceToken: string;
21
+ mtu: number;
22
+ };
23
+ export type BotaProvisioningMaterialProvider = (request: BotaProvisioningMaterialRequest) => Promise<BotaProvisioningMaterial>;
24
+ export type BotaDeviceSDKProvisioningClient = {
25
+ provision(device: ConnectedDevice, provider: BotaProvisioningMaterialProvider): Promise<void>;
26
+ deprovision(device: ConnectedDevice, grantBlob: string): Promise<BotaDeprovisionResult>;
27
+ readConnectionSettings(device: ConnectedDevice): Promise<DeviceConnectionSettings>;
28
+ writeConnectionSettings(device: ConnectedDevice, settings: DeviceConnectionSettings): Promise<void>;
29
+ };
30
+ export type BotaDeprovisionResult = {
31
+ success: boolean;
32
+ error?: string;
33
+ };
34
+ export type BotaDeviceSDKControlClient = {
35
+ isProvisioned(device: ConnectedDevice): Promise<boolean>;
36
+ readPublicKey(device: ConnectedDevice): Promise<string | null>;
37
+ readAuthNonce(device: ConnectedDevice): Promise<string | null>;
38
+ setApiEndpoint(device: ConnectedDevice, environment: Environment): Promise<void>;
39
+ deliverCertificate(device: ConnectedDevice, certificatePem: string, privateKeyPem: string): Promise<void>;
40
+ deliverBackendPublicKey(device: ConnectedDevice, publicKey: Uint8Array): Promise<void>;
41
+ writeGrant(device: ConnectedDevice, grantBlob: string): Promise<void>;
42
+ syncTime(device: ConnectedDevice): Promise<void>;
43
+ requestStartRecording(device: ConnectedDevice, grantBlob: string): Promise<BotaRecordingControlResult>;
44
+ requestStopRecording(device: ConnectedDevice, grantBlob: string): Promise<BotaRecordingControlResult>;
45
+ readRecordingState(device: ConnectedDevice): Promise<RecordingState>;
46
+ subscribeToRecordingState(device: ConnectedDevice, onState: (state: RecordingState) => void): Promise<BotaAsyncEventSubscription>;
47
+ };
48
+ export type BotaRecordingControlResult = {
49
+ success: boolean;
50
+ error?: string;
51
+ };
52
+ export type BotaFactoryResetGrantRequest = Omit<NativeFactoryResetGrantRequest, 'requestId'>;
53
+ export type BotaFactoryResetGrantProvider = (request: BotaFactoryResetGrantRequest) => Promise<string>;
54
+ export type BotaFactoryResetOptions = {
55
+ commandId: string;
56
+ bindingGeneration: number;
57
+ };
58
+ export type BotaFactoryResetCompletion = NativeFactoryResetCompletion;
59
+ export type BotaDeviceSDKFactoryResetClient = {
60
+ factoryReset(device: ConnectedDevice, options: BotaFactoryResetOptions, provider: BotaFactoryResetGrantProvider, persistResult?: BleFactoryResetResultPersister): Promise<BotaFactoryResetCompletion>;
61
+ resumePendingFactoryReset(device: ConnectedDevice, currentBindingGeneration: number, persistResult?: BleFactoryResetResultPersister): Promise<BotaFactoryResetCompletion | null>;
62
+ };
63
+ export type BotaRecordingTransferProgress = {
64
+ completedBytes: number;
65
+ totalBytes: number;
66
+ };
67
+ export type BotaEncryptedUploadV2Recording = NativeEncryptedUploadV2Recording;
68
+ export type BotaEncryptedUploadV2Capability = NativeEncryptedUploadV2Capability;
69
+ export type BotaEncryptedUploadV2Checkpoint = NativeEncryptedUploadV2Checkpoint;
70
+ export type BotaEncryptedUploadV2ProviderContext = {
71
+ recording: BotaEncryptedUploadV2Recording;
72
+ capability: BotaEncryptedUploadV2Capability;
73
+ checkpoint?: BotaEncryptedUploadV2Checkpoint;
74
+ };
75
+ export type BotaEncryptedUploadV2SecurityPolicy = 'legacy_allowed' | 'v2_preferred' | 'v2_required';
76
+ export type BotaEncryptedUploadV2ProfileDecision = {
77
+ profile: 'encrypted_upload_v2';
78
+ uploadSessionId: string;
79
+ ownerRevision: number;
80
+ securityPolicy: BotaEncryptedUploadV2SecurityPolicy;
81
+ materialRegistrationId: string;
82
+ };
83
+ export type BotaEncryptedUploadV2ProfileProvider = (context: BotaEncryptedUploadV2ProviderContext) => Promise<BotaEncryptedUploadV2ProfileDecision>;
84
+ export type BotaEncryptedUploadV2ProgressPhase = 'profile_requested' | 'transferring' | 'completed' | 'failed';
85
+ export type BotaEncryptedUploadV2Progress = {
86
+ recordingUuid: string;
87
+ phase: BotaEncryptedUploadV2ProgressPhase;
88
+ completedBytes: string;
89
+ totalBytes: string;
90
+ checkpointRevision?: number;
91
+ errorCode?: string;
92
+ retryable?: boolean;
93
+ protocolStatus?: number;
94
+ };
95
+ export type BotaUploadOwnershipRequest = {
96
+ recordingUuid: string;
97
+ uploadId: string;
98
+ destinationId: string;
99
+ };
100
+ export type BotaUploadOwnershipResult = {
101
+ kind: 'device_upload_completed';
102
+ } | {
103
+ kind: 'device_upload_preserved';
104
+ uploadId: string;
105
+ } | {
106
+ kind: 'bluetooth_fallback';
107
+ recordingUuid: string;
108
+ uploadId: string;
109
+ destinationId: string;
110
+ };
111
+ export type BotaFirmwareImage = {
112
+ version: string;
113
+ sizeBytes: number;
114
+ crc32: number;
115
+ url: string;
116
+ };
117
+ export type BotaFirmwareUpdatePhase = 'downloading' | 'awaiting_device' | 'transferring' | 'verifying' | 'rebooting' | 'reconnecting' | 'complete';
118
+ export type BotaFirmwareUpdateProgress = {
119
+ phase: BotaFirmwareUpdatePhase;
120
+ completedBytes: number;
121
+ totalBytes: number;
122
+ };
123
+ export type BotaDeviceSDKOTAClient = {
124
+ updateFirmware(device: ConnectedDevice, image: BotaFirmwareImage, onProgress?: (progress: BotaFirmwareUpdateProgress) => void): Promise<void>;
125
+ cancelFirmwareUpdate(): Promise<void>;
126
+ };
127
+ export type BotaDeviceSDKLogClient = {
128
+ subscribe(device: ConnectedDevice, onLine: (line: DeviceLogEvent) => void): Promise<BotaAsyncEventSubscription>;
129
+ };
130
+ export type BotaDeviceSDKWiFiClient = {
131
+ configure(device: ConnectedDevice, credentials: WiFiCredentials, grant: WiFiConfigGrant): Promise<WiFiConfigResult>;
132
+ disconnect(device: ConnectedDevice): Promise<WiFiConfigResult>;
133
+ readStatus(device: ConnectedDevice): Promise<WiFiStatusInfo>;
134
+ subscribeToStatus(device: ConnectedDevice, onStatus: (status: WiFiStatusInfo) => void): Promise<BotaAsyncEventSubscription>;
135
+ scanNetworks(device: ConnectedDevice): Promise<DeviceWiFiScanResult>;
136
+ };
137
+ export type BotaDeviceSDKRecordingClient = {
138
+ listRecordings(device: ConnectedDevice): Promise<DeviceRecording[]>;
139
+ syncRecording(device: ConnectedDevice, recording: DeviceRecording, onProgress?: (progress: BotaRecordingTransferProgress) => void, sinkId?: string): Promise<{
140
+ localPath: string;
141
+ e2eEncrypted: boolean;
142
+ contentSha256?: string;
143
+ }>;
144
+ syncEncryptedRecordingV2(device: ConnectedDevice, recording: BotaEncryptedUploadV2Recording, provider: BotaEncryptedUploadV2ProfileProvider, onProgress?: (progress: BotaEncryptedUploadV2Progress) => void): Promise<void>;
145
+ confirmRecording(device: ConnectedDevice, recordingUuid: string): Promise<void>;
146
+ uploadRecordingFile(task: UploadTask, onProgress?: (progress: BotaRecordingTransferProgress) => void): Promise<void>;
147
+ cancelRecordingUpload(taskId: string): Promise<void>;
148
+ loadUploadQueue(): Promise<UploadTask[]>;
149
+ saveUploadQueue(tasks: UploadTask[]): Promise<void>;
150
+ destroyCompatibilityOperations(): Promise<void>;
151
+ observeUploadOwnership(device: ConnectedDevice, request: BotaUploadOwnershipRequest, onProgress?: (progress: BotaRecordingTransferProgress) => void): Promise<BotaUploadOwnershipResult>;
152
+ };
153
+ export type BotaStreamingProgress = {
154
+ state: string;
155
+ bytesReceived: number;
156
+ chunksUploaded: number;
157
+ };
158
+ export type BotaStreamingChunkRequest = {
159
+ sequence: number;
160
+ encrypted: boolean;
161
+ };
162
+ export type BotaStreamingFinalizeRequest = {
163
+ totalChunks: number;
164
+ durationMs: number;
165
+ fileSizeBytes: number;
166
+ encrypted: boolean;
167
+ };
168
+ export type BotaStreamingUploadDestination = NativeStreamingUploadDestination;
169
+ export type BotaDeviceSDKStreamingClient = {
170
+ startStreaming(device: ConnectedDevice, request: NativeStreamingStartRequest, handlers: {
171
+ onProgress(progress: BotaStreamingProgress): void;
172
+ resolveChunkDestination(request: BotaStreamingChunkRequest): Promise<BotaStreamingUploadDestination>;
173
+ finalize(request: BotaStreamingFinalizeRequest): Promise<void>;
174
+ }): Promise<{
175
+ totalBytes: number;
176
+ }>;
177
+ abortStreaming(sessionId: string): Promise<void>;
178
+ };
179
+ export type BotaDeviceSDKDeviceClient = {
180
+ startScan(options: ScanOptions | undefined, onDevice: (device: DiscoveredDevice) => void): Promise<BotaEventSubscription>;
181
+ stopScan(): Promise<void>;
182
+ connect(device: DiscoveredDevice): Promise<ConnectedDevice>;
183
+ reconnect(serialNumber: string, options?: ReconnectOptions): Promise<ConnectedDevice>;
184
+ disconnect(): Promise<void>;
185
+ readStatus(): Promise<DeviceStatus>;
186
+ subscribeToStatus(onStatus: (status: DeviceStatus) => void): Promise<BotaAsyncEventSubscription>;
187
+ };
188
+ export declare class BotaNativeModuleError extends Error {
189
+ readonly code = "native_module_unavailable";
190
+ constructor();
191
+ }
192
+ export type BotaDeviceSDKClient = {
193
+ readonly controls: BotaDeviceSDKControlClient;
194
+ readonly devices: BotaDeviceSDKDeviceClient;
195
+ readonly factoryReset: BotaDeviceSDKFactoryResetClient;
196
+ readonly logs: BotaDeviceSDKLogClient;
197
+ readonly ota: BotaDeviceSDKOTAClient;
198
+ readonly provisioning: BotaDeviceSDKProvisioningClient;
199
+ readonly recordings: BotaDeviceSDKRecordingClient;
200
+ readonly streaming: BotaDeviceSDKStreamingClient;
201
+ readonly wifi: BotaDeviceSDKWiFiClient;
202
+ configure(configuration?: BotaDeviceSDKConfiguration): Promise<void>;
203
+ destroy(): Promise<void>;
204
+ getCapabilities(): Promise<BotaDeviceSDKCapabilities>;
205
+ getState(): Promise<BotaDeviceSDKState>;
206
+ };
207
+ export declare const createBotaDeviceSDK: (nativeModule: Spec | null) => BotaDeviceSDKClient;
208
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { BotaDeviceSDKClient } from '../client';
2
+ type CompatibilityDisconnectionListener = (error?: Error) => void;
3
+ export declare const setDefaultCompatibilityClient: (client: BotaDeviceSDKClient) => void;
4
+ export declare const getCompatibilityClient: () => BotaDeviceSDKClient;
5
+ export declare const setCompatibilityClientForTesting: (client: BotaDeviceSDKClient | null) => void;
6
+ export declare const subscribeToCompatibilityDisconnections: (client: BotaDeviceSDKClient, listener: CompatibilityDisconnectionListener) => {
7
+ remove: () => void;
8
+ };
9
+ export declare const reportCompatibilityDisconnection: (client: BotaDeviceSDKClient, error?: Error) => void;
10
+ export {};
11
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/compatibility/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKrD,KAAK,kCAAkC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAOlE,eAAO,MAAM,6BAA6B,GACxC,QAAQ,mBAAmB,KAC1B,IAEF,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,mBAMzC,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,QAAQ,mBAAmB,GAAG,IAAI,KACjC,IAEF,CAAC;AAEF,eAAO,MAAM,sCAAsC,GACjD,QAAQ,mBAAmB,EAC3B,UAAU,kCAAkC,KAC3C;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAUtB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,QAAQ,mBAAmB,EAC3B,QAAQ,KAAK,KACZ,IAIF,CAAC"}
@@ -0,0 +1,19 @@
1
+ export { BotaNativeModuleError, createBotaDeviceSDK, } from './client';
2
+ export type { BotaAsyncEventSubscription, BotaDeviceSDKCapabilities, BotaDeviceSDKClient, BotaDeviceSDKConfiguration, BotaEncryptedUploadV2Capability, BotaEncryptedUploadV2Checkpoint, BotaEncryptedUploadV2ProfileDecision, BotaEncryptedUploadV2ProfileProvider, BotaEncryptedUploadV2Progress, BotaEncryptedUploadV2ProgressPhase, BotaEncryptedUploadV2ProviderContext, BotaEncryptedUploadV2Recording, BotaEncryptedUploadV2SecurityPolicy, BotaDeprovisionResult, BotaDeviceSDKDeviceClient, BotaDeviceSDKFactoryResetClient, BotaDeviceSDKLogClient, BotaDeviceSDKWiFiClient, BotaDeviceSDKProvisioningClient, BotaDeviceSDKRecordingClient, BotaDeviceSDKStreamingClient, BotaDeviceSDKState, BotaEventSubscription, BotaFactoryResetCompletion, BotaFactoryResetGrantProvider, BotaFactoryResetGrantRequest, BotaFactoryResetOptions, BotaFirmwareImage, BotaFirmwareUpdatePhase, BotaFirmwareUpdateProgress, BotaLogLevel, BotaDeviceSDKOTAClient, BotaProvisioningMaterial, BotaProvisioningMaterialProvider, BotaProvisioningMaterialRequest, BotaRecordingTransferProgress, BotaUploadOwnershipRequest, BotaUploadOwnershipResult, } from './client';
3
+ export declare const BotaDeviceSDK: import("./client").BotaDeviceSDKClient;
4
+ export { BotaClient } from './BotaClient';
5
+ export type { BleFactoryResetResult, BleFactoryResetResultPersister, ConnectedDevice, ConnectionState, ConnectionType, DeviceCapabilities, DeviceConnectionSettings, DeviceFlags, DeviceLogEvent, DeviceState, DeviceStatus, DeviceType, DeviceWiFiScanResult, DiscoveredDevice, Environment, LteStatus, ModemInfo, PairingState, ProvisioningResult, ReconnectOptions, ScanOptions, StorageInfo, WiFiConfigGrant, WiFiConfigResult, WiFiCredentials, WiFiScanNetwork, WiFiSecurityType, WiFiStatus, WiFiStatusInfo, WifiStatus, } from './models/Device';
6
+ export type { AudioCodec, DeviceRecording, StreamingSessionEvents, StreamingState, StreamingSyncOptions, StreamingSyncProgress, SyncProgress, SyncStage, TransferPacket, UploadInfo, UploadTask, UploadTaskStatus, } from './models/Recording';
7
+ export type { BluetoothState, BotaClientEvents, BotaConfig, DeviceManagerEvents, LogLevel, RecordingManagerEvents, SdkState, SdkStatus, } from './models/Status';
8
+ export type { CachedDeviceState, DeviceStateCacheEvents, DeviceStatePatch, } from './cache/DeviceStateCache';
9
+ export type { FirmwareDownloadProgressCallback, FirmwareInfo, OtaProgress, OtaStage, UploadInfoProvider, } from './managers/types';
10
+ export { DeviceLogDecoder } from './ble/deviceLogs';
11
+ export { DeviceManager } from './managers/DeviceManager';
12
+ export { OTAManager } from './managers/OTAManager';
13
+ export { RecordingManager } from './managers/RecordingManager';
14
+ export { StreamingSession } from './managers/StreamingSession';
15
+ export { BotaError, BluetoothError, DeviceError, ProvisioningError, SdkError, TransferError, UploadError, isBotaError, } from './utils/errors';
16
+ export type { LogHandler, SdkLogEntry, SdkLogLevel } from './utils/logger';
17
+ export { deriveSyncStatus } from './sync/syncStatus';
18
+ export type { SyncChannel, SyncKind, SyncStatus, SyncStatusInputs, } from './sync/syncStatus';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,0BAA0B,EAC1B,+BAA+B,EAC/B,+BAA+B,EAC/B,oCAAoC,EACpC,oCAAoC,EACpC,6BAA6B,EAC7B,kCAAkC,EAClC,oCAAoC,EACpC,8BAA8B,EAC9B,mCAAmC,EACnC,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,EAC5B,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,gCAAgC,EAChC,+BAA+B,EAC/B,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,aAAa,wCAA2C,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,YAAY,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,eAAe,EACf,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,sBAAsB,EACtB,QAAQ,EACR,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,gCAAgC,EAChC,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EACV,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,117 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import type { CachedDeviceState } from '../cache/DeviceStateCache';
3
+ import type { ConnectedDevice, DeviceConnectionSettings, DeviceLogEvent, DeviceStatus, DeviceWiFiScanResult, DiscoveredDevice, ReconnectOptions, ScanOptions, WiFiConfigGrant, WiFiConfigResult, WiFiCredentials, WiFiStatusInfo, Environment, BleFactoryResetResult, BleFactoryResetResultPersister, RecordingState, StartRecordingOptions, StopRecordingOptions } from '../models/Device';
4
+ import type { DeviceManagerEvents } from '../models/Status';
5
+ type Subscription = {
6
+ remove(): void;
7
+ };
8
+ export type RecordingGrantFetcher = (nonce: string | null) => Promise<string>;
9
+ export type RadioPriority = 'user' | 'background';
10
+ export interface ProvisionOptions {
11
+ fetchDeprovisionGrant?: RecordingGrantFetcher;
12
+ }
13
+ export declare class DeviceManager extends EventEmitter<DeviceManagerEvents> {
14
+ private readonly client;
15
+ private readonly discoveredDevices;
16
+ private readonly connectedDevices;
17
+ private readonly knownBleIds;
18
+ private readonly cache;
19
+ private readonly cacheListeners;
20
+ private readonly statusSubscriptions;
21
+ private readonly statusCallbacks;
22
+ private readonly wifiStatusSubscriptions;
23
+ private readonly logSubscriptions;
24
+ private readonly recordingStateCache;
25
+ private readonly recordingStatePending;
26
+ private readonly recordingStateSubscriptions;
27
+ private readonly reconnectInFlight;
28
+ private reconnectChain;
29
+ private scanSubscription;
30
+ private scanActive;
31
+ private autoReconnectEnabled;
32
+ private autoReconnectSerial;
33
+ private autoReconnectTimer;
34
+ private autoReconnectAttempting;
35
+ private userDisconnected;
36
+ private destroyed;
37
+ private readonly disconnectionSubscription;
38
+ constructor();
39
+ initialize(): Promise<void>;
40
+ startScan(options?: ScanOptions): Promise<void>;
41
+ stopScan(): void;
42
+ getDiscoveredDevices(): DiscoveredDevice[];
43
+ getConnectedDevices(): ConnectedDevice[];
44
+ getKnownBleIds(): Record<string, string>;
45
+ connect(device: DiscoveredDevice, priority?: RadioPriority): Promise<ConnectedDevice>;
46
+ reconnect(serialNumber: string, options?: ReconnectOptions): Promise<ConnectedDevice>;
47
+ disconnect(device: ConnectedDevice): Promise<void>;
48
+ isConnected(deviceId: string): boolean;
49
+ getStatus(device: ConnectedDevice): Promise<DeviceStatus>;
50
+ isProvisioned(device: ConnectedDevice): Promise<boolean>;
51
+ readPublicKey(device: ConnectedDevice): Promise<string | null>;
52
+ readAuthNonce(device: ConnectedDevice): Promise<string | null>;
53
+ setApiEndpoint(device: ConnectedDevice, environment: Environment): Promise<void>;
54
+ deliverCert(device: ConnectedDevice, certPem: string, privkeyPem: string): Promise<void>;
55
+ deliverBackendPubkey(device: ConnectedDevice, pubkey: Uint8Array): Promise<void>;
56
+ writeGrant(device: ConnectedDevice, grantBlob: string): Promise<void>;
57
+ syncTime(deviceId: string): Promise<void>;
58
+ provision(device: ConnectedDevice, deviceToken: string, environment?: Environment, options?: ProvisionOptions): Promise<void>;
59
+ deprovision(device: ConnectedDevice, grantBlob: string): Promise<{
60
+ success: boolean;
61
+ error?: string;
62
+ }>;
63
+ factoryReset(device: ConnectedDevice): Promise<void>;
64
+ bleFactoryReset(device: ConnectedDevice, grantBlob: string, persistResult: BleFactoryResetResultPersister): Promise<BleFactoryResetResult>;
65
+ resumeBleFactoryReset(device: ConnectedDevice, persistResult: BleFactoryResetResultPersister): Promise<BleFactoryResetResult>;
66
+ requestStartRecording(device: ConnectedDevice, grantOrFetcher: string | RecordingGrantFetcher, _options?: StartRecordingOptions): Promise<{
67
+ success: boolean;
68
+ error?: string;
69
+ }>;
70
+ requestStopRecording(device: ConnectedDevice, grantOrFetcher: string | RecordingGrantFetcher, _options?: StopRecordingOptions): Promise<{
71
+ success: boolean;
72
+ error?: string;
73
+ }>;
74
+ getRecordingState(device: ConnectedDevice): Promise<RecordingState>;
75
+ subscribeToRecordingState(device: ConnectedDevice, callback: (state: RecordingState) => void): () => void;
76
+ subscribeToStatus(device: ConnectedDevice, callback: (status: DeviceStatus) => void): () => void;
77
+ subscribeToDeviceLogs(device: ConnectedDevice, callback: (event: DeviceLogEvent) => void): Promise<() => void>;
78
+ readConnectionSettings(device: ConnectedDevice): Promise<DeviceConnectionSettings>;
79
+ writeConnectionSettings(device: ConnectedDevice, settings: DeviceConnectionSettings): Promise<void>;
80
+ configureWiFi(deviceId: string, credentials: WiFiCredentials, grant: WiFiConfigGrant): Promise<WiFiConfigResult>;
81
+ disconnectWiFi(deviceId: string): Promise<WiFiConfigResult>;
82
+ getWiFiStatus(deviceId: string): Promise<WiFiStatusInfo>;
83
+ subscribeToWiFiStatus(deviceId: string, callback: (status: WiFiStatusInfo) => void): Subscription;
84
+ scanWiFiNetworks(device: ConnectedDevice): Promise<DeviceWiFiScanResult>;
85
+ getCachedDeviceState(serialNumber: string): CachedDeviceState | null;
86
+ getCachedWiFiStatus(serialNumber: string): WiFiStatusInfo | null;
87
+ updateCachedDeviceState(serialNumber: string, patch: {
88
+ wifiStatus?: Partial<WiFiStatusInfo> | null;
89
+ }): void;
90
+ clearCachedDeviceState(serialNumber: string): void;
91
+ clearAllCachedDeviceStates(): void;
92
+ enableAutoReconnect(serialNumber: string): void;
93
+ disableAutoReconnect(): void;
94
+ onCachedDeviceStateChanged(listener: (serialNumber: string, patch: {
95
+ wifiStatus?: Partial<WiFiStatusInfo> | null;
96
+ }, state: CachedDeviceState) => void): {
97
+ remove: () => void;
98
+ };
99
+ destroy(): void;
100
+ private rememberConnected;
101
+ private ensureStatusWatchdog;
102
+ private handleNativeDisconnection;
103
+ private startAutoReconnectLoop;
104
+ private stopAutoReconnectLoop;
105
+ private findConnectedBySerial;
106
+ private requireConnected;
107
+ private fetchRecordingGrant;
108
+ private runRecordingControl;
109
+ private readAndCacheRecordingState;
110
+ private cachedRecordingState;
111
+ private replaceOwned;
112
+ private removeExpected;
113
+ private removeOwned;
114
+ private assertAlive;
115
+ }
116
+ export {};
117
+ //# sourceMappingURL=DeviceManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../../../src/managers/DeviceManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import type { ConnectedDevice } from '../models/Device';
3
+ import type { DeviceManager } from './DeviceManager';
4
+ import type { FirmwareDownloadProgressCallback, FirmwareInfo, OtaProgress } from './types';
5
+ interface OTAManagerEvents {
6
+ updateAvailable: (firmware: FirmwareInfo) => void;
7
+ progress: (deviceId: string, progress: OtaProgress) => void;
8
+ completed: (deviceId: string, version: string) => void;
9
+ failed: (deviceId: string, error: Error) => void;
10
+ }
11
+ export declare class OTAManager extends EventEmitter<OTAManagerEvents> {
12
+ private readonly deviceManager;
13
+ private readonly firmwareCdnUrl;
14
+ private readonly client;
15
+ private destroyed;
16
+ constructor(deviceManager: DeviceManager, firmwareCdnUrl?: string);
17
+ checkForUpdate(device: ConnectedDevice): Promise<FirmwareInfo | null>;
18
+ downloadFirmware(firmware: FirmwareInfo, onProgress?: FirmwareDownloadProgressCallback): Promise<ArrayBuffer>;
19
+ performUpdate(device: ConnectedDevice, firmware: FirmwareInfo, grantBlob?: string): Promise<void>;
20
+ destroy(): void;
21
+ private isNewerVersion;
22
+ private assertAlive;
23
+ }
24
+ export {};
25
+ //# sourceMappingURL=OTAManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OTAManager.d.ts","sourceRoot":"","sources":["../../../src/managers/OTAManager.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAGzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EACV,gCAAgC,EAChC,YAAY,EACZ,WAAW,EAEZ,MAAM,SAAS,CAAC;AAEjB,UAAU,gBAAgB;IACxB,eAAe,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5D,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClD;AA0CD,qBAAa,UAAW,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAK1D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IALjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,SAAS,CAAS;gBAGP,aAAa,EAAE,aAAa,EAC5B,cAAc,SAAkC;IAK7D,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAgBrE,gBAAgB,CACpB,QAAQ,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,gCAAgC,GAC5C,OAAO,CAAC,WAAW,CAAC;IAoCjB,aAAa,CACjB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IA2ChB,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,WAAW;CAGpB"}