@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,54 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import type { ConnectedDevice, StorageInfo } from '../models/Device';
3
+ import type { DeviceRecording, SyncProgress, StreamingSyncOptions, StreamingUploadProvider, UploadInfo, UploadTask } from '../models/Recording';
4
+ import type { RecordingManagerEvents } from '../models/Status';
5
+ import type { UploadInfoProvider } from './types';
6
+ import { StreamingSession } from './StreamingSession';
7
+ type DeviceUploadMonitorOutcome = 'completed' | 'failed' | 'detached';
8
+ interface TriggerDeviceUploadResponse {
9
+ accepted: boolean;
10
+ errorCode?: number;
11
+ }
12
+ export declare class RecordingManager extends EventEmitter<RecordingManagerEvents> {
13
+ private readonly client;
14
+ private tasks;
15
+ private initialized;
16
+ private paused;
17
+ private destroyed;
18
+ private activeStreamingSession;
19
+ constructor();
20
+ initialize(): Promise<void>;
21
+ getStorageInfo(device: ConnectedDevice): Promise<StorageInfo>;
22
+ listRecordings(device: ConnectedDevice): Promise<DeviceRecording[]>;
23
+ syncRecording(device: ConnectedDevice, recording: DeviceRecording, uploadInfo: UploadInfo): AsyncGenerator<SyncProgress>;
24
+ triggerDeviceUpload(device: ConnectedDevice): Promise<TriggerDeviceUploadResponse | null>;
25
+ monitorDeviceUpload(device: ConnectedDevice, initialPendingCount: number): AsyncGenerator<SyncProgress & {
26
+ recordingIndex?: number;
27
+ totalRecordings?: number;
28
+ }, DeviceUploadMonitorOutcome>;
29
+ syncAllRecordings(device: ConnectedDevice, uploadInfoProvider: UploadInfoProvider): AsyncGenerator<SyncProgress & {
30
+ recordingIndex?: number;
31
+ totalRecordings?: number;
32
+ }>;
33
+ getPendingUploads(): UploadTask[];
34
+ getAllUploads(): UploadTask[];
35
+ startStreamingSync(device: ConnectedDevice, recordingUuid: string, uploadInfoProvider: StreamingUploadProvider, options?: StreamingSyncOptions): StreamingSession;
36
+ getActiveStreamingSession(): StreamingSession | null;
37
+ cancelUpload(taskId: string): Promise<void>;
38
+ retryFailedUploads(): Promise<void>;
39
+ clearCompletedUploads(): Promise<void>;
40
+ clearAllUploads(): Promise<void>;
41
+ pauseUploads(): void;
42
+ resumeUploads(): void;
43
+ destroy(): void;
44
+ private runUpload;
45
+ private emitSyncProgress;
46
+ private requireTask;
47
+ private updateTask;
48
+ private persistTasks;
49
+ private emitQueueUpdated;
50
+ private assertReady;
51
+ private assertAlive;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=RecordingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordingManager.d.ts","sourceRoot":"","sources":["../../../src/managers/RecordingManager.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAQzC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,EACV,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,gBAAgB,EAEjB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,0BAA0B,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtE,UAAU,2BAA2B;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwDD,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IACxE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,sBAAsB,CAAiC;;IAOzD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAc7D,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAKlE,aAAa,CAClB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,UAAU,GACrB,cAAc,CAAC,YAAY,CAAC;IA4HzB,mBAAmB,CACvB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAYvC,mBAAmB,CACxB,MAAM,EAAE,eAAe,EACvB,mBAAmB,EAAE,MAAM,GAC1B,cAAc,CACf,YAAY,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,EACpE,0BAA0B,CAC3B;IA6BM,iBAAiB,CACtB,MAAM,EAAE,eAAe,EACvB,kBAAkB,EAAE,kBAAkB,GACrC,cAAc,CACf,YAAY,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CACrE;IAkFD,iBAAiB,IAAI,UAAU,EAAE;IAMjC,aAAa,IAAI,UAAU,EAAE;IAI7B,kBAAkB,CAChB,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,uBAAuB,EAC3C,OAAO,GAAE,oBAAyB,GACjC,gBAAgB;IAwBnB,yBAAyB,IAAI,gBAAgB,GAAG,IAAI;IAI9C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3C,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBnC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtC,YAAY,IAAI,IAAI;IAIpB,aAAa,IAAI,IAAI;IAKrB,OAAO,IAAI,IAAI;YAUD,SAAS;IAiCvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,WAAW;YAML,UAAU;YAeV,YAAY;IAI1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;CAGpB"}
@@ -0,0 +1,35 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import type { ConnectedDevice } from '../models/Device';
3
+ import type { StreamingSessionEvents, StreamingState, StreamingUploadProvider } from '../models/Recording';
4
+ type ProtocolHandler = unknown;
5
+ type StorageManager = unknown;
6
+ export declare const setStreamingSessionTerminalHandler: (session: StreamingSession, handler: () => void) => void;
7
+ export declare class StreamingSession extends EventEmitter<StreamingSessionEvents> {
8
+ private readonly device;
9
+ private readonly recordingUuid;
10
+ private readonly uploadProvider;
11
+ private readonly chunkSizeKb;
12
+ private readonly flushIntervalMs;
13
+ private readonly client;
14
+ private readonly sessionId;
15
+ private currentState;
16
+ private receivedBytes;
17
+ private uploadedChunks;
18
+ private backendRecordingId?;
19
+ private relay?;
20
+ private started;
21
+ private terminal;
22
+ constructor(protocolHandler: ProtocolHandler, _storageManager: StorageManager, device: ConnectedDevice, recordingUuid: string, uploadProvider: StreamingUploadProvider, chunkSizeKb?: number, flushIntervalMs?: number);
23
+ get state(): StreamingState;
24
+ get bytesReceived(): number;
25
+ get chunksUploaded(): number;
26
+ get recordingId(): string | undefined;
27
+ get isActive(): boolean;
28
+ start(): Promise<void>;
29
+ abort(): void;
30
+ private handleProgress;
31
+ private finalize;
32
+ private releaseTerminal;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=StreamingSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingSession.d.ts","sourceRoot":"","sources":["../../../src/managers/StreamingSession.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAOzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,KAAK,eAAe,GAAG,OAAO,CAAC;AAC/B,KAAK,cAAc,GAAG,OAAO,CAAC;AAI9B,eAAO,MAAM,kCAAkC,GAC7C,SAAS,gBAAgB,EACzB,SAAS,MAAM,IAAI,KAClB,IAEF,CAAC;AASF,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IAgBtE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAnBlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,KAAK,CAAC,CAEH;IACX,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAGvB,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,cAAc,EACd,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,uBAAuB,EACvC,WAAW,SAAM,EACjB,eAAe,SAAS;IAM3C,IAAI,KAAK,IAAI,cAAc,CAE1B;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsE5B,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,cAAc;YAmBR,QAAQ;IA8BtB,OAAO,CAAC,eAAe;CAKxB"}
@@ -0,0 +1,19 @@
1
+ import type { DeviceRecording, UploadInfo } from '../models/Recording';
2
+ export type UploadInfoProvider = (recording: DeviceRecording) => Promise<UploadInfo>;
3
+ export interface FirmwareInfo {
4
+ version: string;
5
+ url: string;
6
+ checksum: string;
7
+ releaseNotes?: string;
8
+ size: number;
9
+ }
10
+ export type OtaStage = 'checking' | 'downloading' | 'preparing' | 'updating' | 'verifying' | 'restarting' | 'completed' | 'failed';
11
+ export interface OtaProgress {
12
+ stage: OtaStage;
13
+ progress: number;
14
+ bytesTransferred?: number;
15
+ totalBytes?: number;
16
+ error?: string;
17
+ }
18
+ export type FirmwareDownloadProgressCallback = (bytesDownloaded: number, totalBytes: number) => void;
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/managers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG,CAC/B,SAAS,EAAE,eAAe,KACvB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,aAAa,GACb,WAAW,GACX,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC"}
@@ -0,0 +1,392 @@
1
+ /**
2
+ * Device-related type definitions
3
+ */
4
+ /**
5
+ * Device type identifier
6
+ */
7
+ export type DeviceType = 'bota_pin' | 'bota_pin_4g' | 'bota_note';
8
+ /**
9
+ * Pairing state of a device
10
+ */
11
+ export type PairingState = 'unpaired' | 'pairing' | 'paired' | 'error';
12
+ /**
13
+ * Connection state of a device
14
+ */
15
+ export type ConnectionState = 'disconnected' | 'connecting' | 'bonding' | 'discovering' | 'connected' | 'disconnecting';
16
+ /**
17
+ * Device operational state
18
+ */
19
+ export type DeviceState = 'idle' | 'recording' | 'syncing' | 'uploading' | 'charging' | 'lowBattery' | 'storageFull' | 'error';
20
+ /**
21
+ * Device status flags (1-byte bitmask)
22
+ * See: FIRMWARE_INTEGRATION_GUIDE_ZH.md section 3.1 — DeviceFlags enum
23
+ */
24
+ export interface DeviceFlags {
25
+ charging: boolean;
26
+ lowBattery: boolean;
27
+ storageFull: boolean;
28
+ wifiConnected: boolean;
29
+ lteConnected: boolean;
30
+ syncActive: boolean;
31
+ }
32
+ /**
33
+ * LTE/4G modem status
34
+ */
35
+ export type LteStatus = 'off' | 'searching' | 'registered' | 'connected' | 'denied' | 'noSim' | 'error' | 'lowVoltage' | 'disabled';
36
+ /**
37
+ * WiFi radio status
38
+ */
39
+ export type WifiStatus = 'off' | 'scanning' | 'connecting' | 'connected' | 'connectFailed' | 'noCredentials' | 'disabled' | 'error';
40
+ /**
41
+ * Device discovered during Bluetooth scan (not yet connected)
42
+ */
43
+ export interface DiscoveredDevice {
44
+ /** Bluetooth device identifier (platform-specific UUID) */
45
+ id: string;
46
+ /** Device name from advertisement (e.g., "Bota-Pin-A1B2C3") */
47
+ name: string;
48
+ /** Device type parsed from advertisement */
49
+ deviceType: DeviceType;
50
+ /** Firmware version from manufacturer data */
51
+ firmwareVersion: string;
52
+ /** MAC address parsed from manufacturer data (null if firmware doesn't include it) */
53
+ macAddress: string | null;
54
+ /** Pairing state from manufacturer data */
55
+ pairingState: PairingState;
56
+ /** Signal strength (RSSI) */
57
+ rssi: number;
58
+ /** Raw manufacturer data bytes */
59
+ manufacturerData?: Uint8Array;
60
+ /** Timestamp when discovered */
61
+ discoveredAt: Date;
62
+ }
63
+ /**
64
+ * Device capabilities (bitmask)
65
+ */
66
+ export interface DeviceCapabilities {
67
+ /** Supports Bluetooth Sync (BLE transfer) */
68
+ bleSync: boolean;
69
+ /** Supports WiFi Upload */
70
+ wifiUpload: boolean;
71
+ /** Supports Cellular Upload (4G/LTE) */
72
+ lteUpload: boolean;
73
+ /** Supports Remote Recording Control */
74
+ remoteRecord: boolean;
75
+ }
76
+ /**
77
+ * Device after successful Bluetooth connection
78
+ */
79
+ export interface ConnectedDevice {
80
+ /** Bluetooth device identifier */
81
+ id: string;
82
+ /** Device serial number (read from Device Info service) */
83
+ serialNumber: string;
84
+ /** Device type */
85
+ deviceType: DeviceType;
86
+ /** Firmware version */
87
+ firmwareVersion: string;
88
+ /** Hardware revision (if available) */
89
+ hardwareRevision?: string;
90
+ /** Whether device has been provisioned with a token */
91
+ isProvisioned: boolean;
92
+ /** Current connection state */
93
+ connectionState: ConnectionState;
94
+ /** Negotiated MTU size */
95
+ mtu: number;
96
+ /** Device capabilities */
97
+ capabilities?: DeviceCapabilities;
98
+ }
99
+ /**
100
+ * 4G modem debug information (parsed from extended device status)
101
+ */
102
+ export interface ModemInfo {
103
+ imei?: string;
104
+ iccid?: string;
105
+ operator?: string;
106
+ rat?: string;
107
+ band?: string;
108
+ apn?: string;
109
+ simStatus?: string;
110
+ csq?: number;
111
+ ipAddress?: string;
112
+ modemVoltage?: number;
113
+ modemFirmware?: string;
114
+ roaming?: boolean;
115
+ }
116
+ /**
117
+ * Device status information
118
+ */
119
+ export interface DeviceStatus {
120
+ /** Battery level (0-100) */
121
+ batteryLevel: number;
122
+ /** Battery voltage in millivolts (e.g., 3700 = 3.7V) */
123
+ batteryMv?: number;
124
+ /** Total storage capacity in MB (uint16LE, max 65535) */
125
+ storageTotalMb: number;
126
+ /** Storage used in MB (uint16LE, max 65535) */
127
+ storageUsedMb: number;
128
+ /** Current operational state */
129
+ state: DeviceState;
130
+ /** Number of pending recordings to sync */
131
+ pendingRecordings: number;
132
+ /** Last clock-sync timestamp (when the device's RTC was last set
133
+ * from a time source — NTP, 4G QLTS/CCLK, or app Bluetooth time-sync).
134
+ * This is NOT the last recording-upload timestamp. */
135
+ lastTimeSyncAt: Date | null;
136
+ /** Signal strength (for 4G devices, 0-5) */
137
+ signalStrength?: number;
138
+ /** Status flags */
139
+ flags: DeviceFlags;
140
+ /** Raw timestamp from device */
141
+ timestamp: number;
142
+ /** LTE/4G modem status (for 4G devices) */
143
+ lteStatus?: LteStatus;
144
+ /** LTE signal quality — raw CSQ value 0-31 (99 = unknown) */
145
+ lteSignalQuality?: number;
146
+ /** WiFi radio status (for WiFi devices) */
147
+ wifiStatus?: WifiStatus;
148
+ /** 4G modem debug info (from extended device status read) */
149
+ modemInfo?: ModemInfo;
150
+ }
151
+ /** A decoded line from the device's debug BLE log stream. */
152
+ export interface DeviceLogEvent {
153
+ level: 'debug' | 'warn';
154
+ message: string;
155
+ isBacklog: boolean;
156
+ }
157
+ /**
158
+ * Storage information from device
159
+ */
160
+ export interface StorageInfo {
161
+ /** Total storage in KB */
162
+ totalKb: number;
163
+ /** Used storage in KB */
164
+ usedKb: number;
165
+ /** Total recording count */
166
+ totalRecordings: number;
167
+ /** Pending sync count */
168
+ pendingSyncCount: number;
169
+ }
170
+ /**
171
+ * Options for reconnecting to a previously paired device by serial number
172
+ */
173
+ export interface ReconnectOptions {
174
+ /** Scan timeout in milliseconds (default: 10000) */
175
+ scanTimeout?: number;
176
+ }
177
+ /**
178
+ * Configuration for device scanning
179
+ */
180
+ export interface ScanOptions {
181
+ /** Timeout in milliseconds (default: 30000) */
182
+ timeout?: number;
183
+ /** Filter by device types */
184
+ deviceTypes?: DeviceType[];
185
+ /** Filter by pairing state */
186
+ pairingState?: PairingState;
187
+ /** Minimum RSSI to include */
188
+ minRssi?: number;
189
+ /** Allow duplicates (same device reported multiple times) */
190
+ allowDuplicates?: boolean;
191
+ }
192
+ /**
193
+ * Environment for API endpoint configuration
194
+ */
195
+ export type Environment = 'development' | 'gamma' | 'production';
196
+ /**
197
+ * Provisioning result
198
+ */
199
+ export interface ProvisioningResult {
200
+ success: boolean;
201
+ error?: 'invalid_token' | 'storage_error' | 'chunk_error' | 'already_paired' | 'unknown';
202
+ /** Present on the three-byte authenticated factory-reset success result. */
203
+ localRecordingsDeleted?: number;
204
+ }
205
+ /** Result returned by the authenticated BLE factory-reset close-loop. */
206
+ export type BleFactoryResetResult = {
207
+ success: true;
208
+ localRecordingsDeleted: number;
209
+ } | {
210
+ success: false;
211
+ error: NonNullable<ProvisioningResult['error']>;
212
+ };
213
+ /**
214
+ * Called after firmware reports a successful wipe and before the SDK sends
215
+ * the explicit result receipt. Reject to leave firmware in its replayable
216
+ * WIPED phase.
217
+ */
218
+ export type BleFactoryResetResultPersister = (result: Extract<BleFactoryResetResult, {
219
+ success: true;
220
+ }>) => Promise<void>;
221
+ /**
222
+ * Recording command type
223
+ */
224
+ export type RecordingCommandType = 'start_recording' | 'stop_recording';
225
+ /**
226
+ * Recording command status
227
+ */
228
+ export type RecordingCommandStatus = 'pending' | 'delivered' | 'executed' | 'failed' | 'expired' | 'cancelled';
229
+ /**
230
+ * Options for starting recording remotely
231
+ */
232
+ export interface StartRecordingOptions {
233
+ /** Maximum recording duration in seconds (auto-stop) */
234
+ maxDurationSec?: number;
235
+ /** Metadata to attach to the recording */
236
+ metadata?: Record<string, unknown>;
237
+ }
238
+ /**
239
+ * Options for stopping recording remotely
240
+ */
241
+ export interface StopRecordingOptions {
242
+ /** Whether to trigger immediate upload after stopping */
243
+ uploadImmediately?: boolean;
244
+ }
245
+ /**
246
+ * Recording command result
247
+ */
248
+ export interface RecordingCommandResult {
249
+ /** Command ID from backend */
250
+ commandId: string;
251
+ /** Recording ID (for start_recording) */
252
+ recordingId?: string;
253
+ /** When recording started */
254
+ startedAt?: Date;
255
+ /** When recording stopped */
256
+ stoppedAt?: Date;
257
+ /** Recording duration in seconds */
258
+ durationSeconds?: number;
259
+ }
260
+ /**
261
+ * Recording command error
262
+ */
263
+ export interface RecordingCommandError {
264
+ code: string;
265
+ message: string;
266
+ }
267
+ /**
268
+ * Full recording command response
269
+ */
270
+ export interface RecordingCommand {
271
+ id: string;
272
+ deviceId: string;
273
+ type: RecordingCommandType;
274
+ status: RecordingCommandStatus;
275
+ grantToken: string;
276
+ result?: RecordingCommandResult;
277
+ error?: RecordingCommandError;
278
+ expiresAt?: Date;
279
+ createdAt: Date;
280
+ }
281
+ /**
282
+ * Current recording state of the device
283
+ */
284
+ export interface RecordingState {
285
+ /** Whether device is currently recording */
286
+ active: boolean;
287
+ /** Current recording ID (if recording) */
288
+ recordingId?: string;
289
+ /** When recording started */
290
+ startedAt?: Date;
291
+ /** Duration in seconds (updated periodically) */
292
+ durationSeconds?: number;
293
+ /** Who initiated the recording */
294
+ initiatedBy?: 'local' | 'remote';
295
+ }
296
+ /**
297
+ * Connection type for network preference ordering
298
+ */
299
+ export type ConnectionType = 'wifi' | 'ble' | 'cellular';
300
+ /**
301
+ * Per-device connection settings read/written via Bluetooth DEVICE_SETTINGS characteristic
302
+ */
303
+ export interface DeviceConnectionSettings {
304
+ enabled_connections: {
305
+ wifi: boolean;
306
+ cellular: boolean;
307
+ };
308
+ heartbeat_enabled_connections?: {
309
+ wifi: boolean;
310
+ cellular: boolean;
311
+ };
312
+ upload_network_preference: ConnectionType[];
313
+ power_management?: {
314
+ wifi_idle_timeout_seconds?: number | null;
315
+ cellular_idle_timeout_seconds?: number | null;
316
+ };
317
+ streaming_enabled?: boolean;
318
+ streaming_flush_interval_seconds?: number;
319
+ }
320
+ /**
321
+ * WiFi security type
322
+ */
323
+ export type WiFiSecurityType = 'WPA2' | 'WPA3' | 'WEP' | 'OPEN';
324
+ /**
325
+ * WiFi connection status
326
+ */
327
+ export type WiFiStatus = 'idle' | 'connecting' | 'connected' | 'failed' | 'disconnected';
328
+ /**
329
+ * WiFi configuration grant from backend
330
+ */
331
+ export interface WiFiConfigGrant {
332
+ /** Grant blob (JWT token) */
333
+ grantBlob: string;
334
+ /** Expiration timestamp */
335
+ expiresAt: Date;
336
+ }
337
+ /**
338
+ * WiFi credentials to configure
339
+ */
340
+ export interface WiFiCredentials {
341
+ /** WiFi network SSID */
342
+ ssid: string;
343
+ /** WiFi password */
344
+ password: string;
345
+ /** Security type (default: WPA2) */
346
+ securityType?: WiFiSecurityType;
347
+ }
348
+ /**
349
+ * WiFi configuration result from device
350
+ */
351
+ export interface WiFiConfigResult {
352
+ /** Whether configuration was successful */
353
+ success: boolean;
354
+ /** Error code if failed */
355
+ error?: 'invalid_grant' | 'grant_expired' | 'decryption_error' | 'storage_error' | 'unknown';
356
+ }
357
+ /**
358
+ * WiFi status information from device
359
+ */
360
+ export interface WiFiStatusInfo {
361
+ /** Current WiFi connection status */
362
+ status: WiFiStatus;
363
+ /** Connected SSID (if connected) */
364
+ ssid?: string;
365
+ /** Signal strength (0-100) */
366
+ signalStrength?: number;
367
+ /** Last connection error (if failed) */
368
+ lastError?: string;
369
+ }
370
+ /**
371
+ * A WiFi network discovered by the device's WiFi radio
372
+ */
373
+ export interface WiFiScanNetwork {
374
+ /** Network SSID */
375
+ ssid: string;
376
+ /** Signal quality 0-100 */
377
+ quality: number;
378
+ /** Whether this is the currently connected network */
379
+ isCurrent: boolean;
380
+ /** Open network (no password required) */
381
+ isOpen?: boolean;
382
+ }
383
+ /**
384
+ * Result of a device-side WiFi scan
385
+ */
386
+ export interface DeviceWiFiScanResult {
387
+ /** Discovered networks sorted by signal quality */
388
+ networks: WiFiScanNetwork[];
389
+ /** SSID of the currently connected network, if any */
390
+ currentSsid: string | null;
391
+ }
392
+ //# sourceMappingURL=Device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../../src/models/Device.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,YAAY,GACZ,SAAS,GACT,aAAa,GACb,WAAW,GACX,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,WAAW,GACX,SAAS,GACT,WAAW,GACX,UAAU,GACV,YAAY,GACZ,aAAa,GACb,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,KAAK,GACL,WAAW,GACX,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,OAAO,GACP,OAAO,GACP,YAAY,GACZ,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,UAAU,GACV,YAAY,GACZ,WAAW,GACX,eAAe,GACf,eAAe,GACf,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,UAAU,EAAE,UAAU,CAAC;IACvB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2CAA2C;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,gCAAgC;IAChC,YAAY,EAAE,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;2DAEuD;IACvD,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,8BAA8B;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,GAAG,eAAe,GAAG,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACzF,4EAA4E;IAC5E,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,GAC7B;IACE,OAAO,EAAE,IAAI,CAAC;IACd,sBAAsB,EAAE,MAAM,CAAC;CAChC,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;CACjD,CAAC;AAEN;;;;GAIG;AACH,MAAM,MAAM,8BAA8B,GAAG,CAC3C,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,KACtD,OAAO,CAAC,IAAI,CAAC,CAAC;AAMnB;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,WAAW,GACX,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC;AAMD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mBAAmB,EAAE;QACnB,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,6BAA6B,CAAC,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,yBAAyB,EAAE,cAAc,EAAE,CAAC;IAC5C,gBAAgB,CAAC,EAAE;QACjB,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,6BAA6B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/C,CAAC;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gCAAgC,CAAC,EAAE,MAAM,CAAC;CAC3C;AAMD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,eAAe,GAAG,eAAe,GAAG,kBAAkB,GAAG,eAAe,GAAG,SAAS,CAAC;CAC9F;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,sDAAsD;IACtD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B"}