@bota-dev/react-native-sdk 0.0.2

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 (177) hide show
  1. package/README.md +279 -0
  2. package/lib/commonjs/BotaClient.js +223 -0
  3. package/lib/commonjs/BotaClient.js.map +1 -0
  4. package/lib/commonjs/ble/BleManager.js +494 -0
  5. package/lib/commonjs/ble/BleManager.js.map +1 -0
  6. package/lib/commonjs/ble/constants.js +166 -0
  7. package/lib/commonjs/ble/constants.js.map +1 -0
  8. package/lib/commonjs/ble/index.js +54 -0
  9. package/lib/commonjs/ble/index.js.map +1 -0
  10. package/lib/commonjs/ble/parsers.js +345 -0
  11. package/lib/commonjs/ble/parsers.js.map +1 -0
  12. package/lib/commonjs/index.js +81 -0
  13. package/lib/commonjs/index.js.map +1 -0
  14. package/lib/commonjs/managers/DeviceManager.js +437 -0
  15. package/lib/commonjs/managers/DeviceManager.js.map +1 -0
  16. package/lib/commonjs/managers/OTAManager.js +227 -0
  17. package/lib/commonjs/managers/OTAManager.js.map +1 -0
  18. package/lib/commonjs/managers/RecordingManager.js +384 -0
  19. package/lib/commonjs/managers/RecordingManager.js.map +1 -0
  20. package/lib/commonjs/managers/index.js +27 -0
  21. package/lib/commonjs/managers/index.js.map +1 -0
  22. package/lib/commonjs/models/Device.js +2 -0
  23. package/lib/commonjs/models/Device.js.map +1 -0
  24. package/lib/commonjs/models/Recording.js +2 -0
  25. package/lib/commonjs/models/Recording.js.map +1 -0
  26. package/lib/commonjs/models/Status.js +6 -0
  27. package/lib/commonjs/models/Status.js.map +1 -0
  28. package/lib/commonjs/models/index.js +39 -0
  29. package/lib/commonjs/models/index.js.map +1 -0
  30. package/lib/commonjs/protocol/ProtocolHandler.js +343 -0
  31. package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -0
  32. package/lib/commonjs/protocol/index.js +13 -0
  33. package/lib/commonjs/protocol/index.js.map +1 -0
  34. package/lib/commonjs/storage/StorageManager.js +333 -0
  35. package/lib/commonjs/storage/StorageManager.js.map +1 -0
  36. package/lib/commonjs/storage/index.js +19 -0
  37. package/lib/commonjs/storage/index.js.map +1 -0
  38. package/lib/commonjs/upload/S3Uploader.js +133 -0
  39. package/lib/commonjs/upload/S3Uploader.js.map +1 -0
  40. package/lib/commonjs/upload/UploadQueue.js +280 -0
  41. package/lib/commonjs/upload/UploadQueue.js.map +1 -0
  42. package/lib/commonjs/upload/index.js +20 -0
  43. package/lib/commonjs/upload/index.js.map +1 -0
  44. package/lib/commonjs/utils/errors.js +187 -0
  45. package/lib/commonjs/utils/errors.js.map +1 -0
  46. package/lib/commonjs/utils/index.js +40 -0
  47. package/lib/commonjs/utils/index.js.map +1 -0
  48. package/lib/commonjs/utils/logger.js +135 -0
  49. package/lib/commonjs/utils/logger.js.map +1 -0
  50. package/lib/commonjs/utils/retry.js +160 -0
  51. package/lib/commonjs/utils/retry.js.map +1 -0
  52. package/lib/module/BotaClient.js +216 -0
  53. package/lib/module/BotaClient.js.map +1 -0
  54. package/lib/module/ble/BleManager.js +484 -0
  55. package/lib/module/ble/BleManager.js.map +1 -0
  56. package/lib/module/ble/constants.js +159 -0
  57. package/lib/module/ble/constants.js.map +1 -0
  58. package/lib/module/ble/index.js +8 -0
  59. package/lib/module/ble/index.js.map +1 -0
  60. package/lib/module/ble/parsers.js +328 -0
  61. package/lib/module/ble/parsers.js.map +1 -0
  62. package/lib/module/index.js +22 -0
  63. package/lib/module/index.js.map +1 -0
  64. package/lib/module/managers/DeviceManager.js +429 -0
  65. package/lib/module/managers/DeviceManager.js.map +1 -0
  66. package/lib/module/managers/OTAManager.js +219 -0
  67. package/lib/module/managers/OTAManager.js.map +1 -0
  68. package/lib/module/managers/RecordingManager.js +376 -0
  69. package/lib/module/managers/RecordingManager.js.map +1 -0
  70. package/lib/module/managers/index.js +8 -0
  71. package/lib/module/managers/index.js.map +1 -0
  72. package/lib/module/models/Device.js +2 -0
  73. package/lib/module/models/Device.js.map +1 -0
  74. package/lib/module/models/Recording.js +2 -0
  75. package/lib/module/models/Recording.js.map +1 -0
  76. package/lib/module/models/Status.js +2 -0
  77. package/lib/module/models/Status.js.map +1 -0
  78. package/lib/module/models/index.js +8 -0
  79. package/lib/module/models/index.js.map +1 -0
  80. package/lib/module/protocol/ProtocolHandler.js +336 -0
  81. package/lib/module/protocol/ProtocolHandler.js.map +1 -0
  82. package/lib/module/protocol/index.js +6 -0
  83. package/lib/module/protocol/index.js.map +1 -0
  84. package/lib/module/storage/StorageManager.js +324 -0
  85. package/lib/module/storage/StorageManager.js.map +1 -0
  86. package/lib/module/storage/index.js +6 -0
  87. package/lib/module/storage/index.js.map +1 -0
  88. package/lib/module/upload/S3Uploader.js +126 -0
  89. package/lib/module/upload/S3Uploader.js.map +1 -0
  90. package/lib/module/upload/UploadQueue.js +272 -0
  91. package/lib/module/upload/UploadQueue.js.map +1 -0
  92. package/lib/module/upload/index.js +7 -0
  93. package/lib/module/upload/index.js.map +1 -0
  94. package/lib/module/utils/errors.js +173 -0
  95. package/lib/module/utils/errors.js.map +1 -0
  96. package/lib/module/utils/index.js +8 -0
  97. package/lib/module/utils/index.js.map +1 -0
  98. package/lib/module/utils/logger.js +129 -0
  99. package/lib/module/utils/logger.js.map +1 -0
  100. package/lib/module/utils/retry.js +149 -0
  101. package/lib/module/utils/retry.js.map +1 -0
  102. package/lib/typescript/src/BotaClient.d.ts +77 -0
  103. package/lib/typescript/src/BotaClient.d.ts.map +1 -0
  104. package/lib/typescript/src/ble/BleManager.d.ts +111 -0
  105. package/lib/typescript/src/ble/BleManager.d.ts.map +1 -0
  106. package/lib/typescript/src/ble/constants.d.ts +111 -0
  107. package/lib/typescript/src/ble/constants.d.ts.map +1 -0
  108. package/lib/typescript/src/ble/index.d.ts +7 -0
  109. package/lib/typescript/src/ble/index.d.ts.map +1 -0
  110. package/lib/typescript/src/ble/parsers.d.ts +100 -0
  111. package/lib/typescript/src/ble/parsers.d.ts.map +1 -0
  112. package/lib/typescript/src/index.d.ts +16 -0
  113. package/lib/typescript/src/index.d.ts.map +1 -0
  114. package/lib/typescript/src/managers/DeviceManager.d.ts +84 -0
  115. package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -0
  116. package/lib/typescript/src/managers/OTAManager.d.ts +78 -0
  117. package/lib/typescript/src/managers/OTAManager.d.ts.map +1 -0
  118. package/lib/typescript/src/managers/RecordingManager.d.ts +90 -0
  119. package/lib/typescript/src/managers/RecordingManager.d.ts.map +1 -0
  120. package/lib/typescript/src/managers/index.d.ts +7 -0
  121. package/lib/typescript/src/managers/index.d.ts.map +1 -0
  122. package/lib/typescript/src/models/Device.d.ts +139 -0
  123. package/lib/typescript/src/models/Device.d.ts.map +1 -0
  124. package/lib/typescript/src/models/Recording.d.ts +110 -0
  125. package/lib/typescript/src/models/Recording.d.ts.map +1 -0
  126. package/lib/typescript/src/models/Status.d.ts +104 -0
  127. package/lib/typescript/src/models/Status.d.ts.map +1 -0
  128. package/lib/typescript/src/models/index.d.ts +7 -0
  129. package/lib/typescript/src/models/index.d.ts.map +1 -0
  130. package/lib/typescript/src/protocol/ProtocolHandler.d.ts +69 -0
  131. package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -0
  132. package/lib/typescript/src/protocol/index.d.ts +5 -0
  133. package/lib/typescript/src/protocol/index.d.ts.map +1 -0
  134. package/lib/typescript/src/storage/StorageManager.d.ts +116 -0
  135. package/lib/typescript/src/storage/StorageManager.d.ts.map +1 -0
  136. package/lib/typescript/src/storage/index.d.ts +5 -0
  137. package/lib/typescript/src/storage/index.d.ts.map +1 -0
  138. package/lib/typescript/src/upload/S3Uploader.d.ts +38 -0
  139. package/lib/typescript/src/upload/S3Uploader.d.ts.map +1 -0
  140. package/lib/typescript/src/upload/UploadQueue.d.ts +95 -0
  141. package/lib/typescript/src/upload/UploadQueue.d.ts.map +1 -0
  142. package/lib/typescript/src/upload/index.d.ts +6 -0
  143. package/lib/typescript/src/upload/index.d.ts.map +1 -0
  144. package/lib/typescript/src/utils/errors.d.ts +82 -0
  145. package/lib/typescript/src/utils/errors.d.ts.map +1 -0
  146. package/lib/typescript/src/utils/index.d.ts +7 -0
  147. package/lib/typescript/src/utils/index.d.ts.map +1 -0
  148. package/lib/typescript/src/utils/logger.d.ts +68 -0
  149. package/lib/typescript/src/utils/logger.d.ts.map +1 -0
  150. package/lib/typescript/src/utils/retry.d.ts +53 -0
  151. package/lib/typescript/src/utils/retry.d.ts.map +1 -0
  152. package/package.json +95 -0
  153. package/src/BotaClient.ts +238 -0
  154. package/src/ble/BleManager.ts +573 -0
  155. package/src/ble/constants.ts +158 -0
  156. package/src/ble/index.ts +7 -0
  157. package/src/ble/parsers.ts +395 -0
  158. package/src/index.ts +64 -0
  159. package/src/managers/DeviceManager.ts +545 -0
  160. package/src/managers/OTAManager.ts +263 -0
  161. package/src/managers/RecordingManager.ts +434 -0
  162. package/src/managers/index.ts +12 -0
  163. package/src/models/Device.ts +164 -0
  164. package/src/models/Recording.ts +123 -0
  165. package/src/models/Status.ts +126 -0
  166. package/src/models/index.ts +7 -0
  167. package/src/protocol/ProtocolHandler.ts +459 -0
  168. package/src/protocol/index.ts +5 -0
  169. package/src/storage/StorageManager.ts +343 -0
  170. package/src/storage/index.ts +5 -0
  171. package/src/upload/S3Uploader.ts +164 -0
  172. package/src/upload/UploadQueue.ts +310 -0
  173. package/src/upload/index.ts +6 -0
  174. package/src/utils/errors.ts +310 -0
  175. package/src/utils/index.ts +7 -0
  176. package/src/utils/logger.ts +137 -0
  177. package/src/utils/retry.ts +177 -0
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Device-related type definitions
3
+ */
4
+
5
+ /**
6
+ * Device type identifier
7
+ */
8
+ export type DeviceType = 'bota_pin' | 'bota_pin_4g' | 'bota_note';
9
+
10
+ /**
11
+ * Pairing state of a device
12
+ */
13
+ export type PairingState = 'unpaired' | 'pairing' | 'paired' | 'error';
14
+
15
+ /**
16
+ * Connection state of a device
17
+ */
18
+ export type ConnectionState =
19
+ | 'disconnected'
20
+ | 'connecting'
21
+ | 'bonding'
22
+ | 'discovering'
23
+ | 'connected'
24
+ | 'disconnecting';
25
+
26
+ /**
27
+ * Device operational state
28
+ */
29
+ export type DeviceState =
30
+ | 'idle'
31
+ | 'recording'
32
+ | 'syncing'
33
+ | 'uploading'
34
+ | 'charging'
35
+ | 'lowBattery'
36
+ | 'storageFull'
37
+ | 'error';
38
+
39
+ /**
40
+ * Device status flags
41
+ */
42
+ export interface DeviceFlags {
43
+ charging: boolean;
44
+ usbConnected: boolean;
45
+ lowBattery: boolean;
46
+ criticalBattery: boolean;
47
+ storageWarning: boolean;
48
+ storageFull: boolean;
49
+ cellularAvailable: boolean;
50
+ cellularRoaming: boolean;
51
+ wifiConnected: boolean;
52
+ recordingActive: boolean;
53
+ syncRequired: boolean;
54
+ updateAvailable: boolean;
55
+ }
56
+
57
+ /**
58
+ * Device discovered during BLE scan (not yet connected)
59
+ */
60
+ export interface DiscoveredDevice {
61
+ /** BLE device identifier (platform-specific UUID) */
62
+ id: string;
63
+ /** Device name from advertisement (e.g., "Bota-Pin-A1B2C3") */
64
+ name: string;
65
+ /** Device type parsed from advertisement */
66
+ deviceType: DeviceType;
67
+ /** Firmware version from manufacturer data */
68
+ firmwareVersion: string;
69
+ /** Pairing state from manufacturer data */
70
+ pairingState: PairingState;
71
+ /** Signal strength (RSSI) */
72
+ rssi: number;
73
+ /** Raw manufacturer data bytes */
74
+ manufacturerData?: Uint8Array;
75
+ /** Timestamp when discovered */
76
+ discoveredAt: Date;
77
+ }
78
+
79
+ /**
80
+ * Device after successful BLE connection
81
+ */
82
+ export interface ConnectedDevice {
83
+ /** BLE device identifier */
84
+ id: string;
85
+ /** Device serial number (read from Device Info service) */
86
+ serialNumber: string;
87
+ /** Device type */
88
+ deviceType: DeviceType;
89
+ /** Firmware version */
90
+ firmwareVersion: string;
91
+ /** Hardware revision (if available) */
92
+ hardwareRevision?: string;
93
+ /** Whether device has been provisioned with a token */
94
+ isProvisioned: boolean;
95
+ /** Current connection state */
96
+ connectionState: ConnectionState;
97
+ /** Negotiated MTU size */
98
+ mtu: number;
99
+ }
100
+
101
+ /**
102
+ * Device status information
103
+ */
104
+ export interface DeviceStatus {
105
+ /** Battery level (0-100) */
106
+ batteryLevel: number;
107
+ /** Storage used percentage (0-100) */
108
+ storageUsedPercent: number;
109
+ /** Current operational state */
110
+ state: DeviceState;
111
+ /** Number of pending recordings to sync */
112
+ pendingRecordings: number;
113
+ /** Last sync timestamp */
114
+ lastSyncAt: Date | null;
115
+ /** Signal strength (for 4G devices, 0-5) */
116
+ signalStrength?: number;
117
+ /** Status flags */
118
+ flags: DeviceFlags;
119
+ /** Raw timestamp from device */
120
+ timestamp: number;
121
+ }
122
+
123
+ /**
124
+ * Storage information from device
125
+ */
126
+ export interface StorageInfo {
127
+ /** Total storage in KB */
128
+ totalKb: number;
129
+ /** Used storage in KB */
130
+ usedKb: number;
131
+ /** Total recording count */
132
+ totalRecordings: number;
133
+ /** Pending sync count */
134
+ pendingSyncCount: number;
135
+ }
136
+
137
+ /**
138
+ * Configuration for device scanning
139
+ */
140
+ export interface ScanOptions {
141
+ /** Timeout in milliseconds (default: 30000) */
142
+ timeout?: number;
143
+ /** Filter by device types */
144
+ deviceTypes?: DeviceType[];
145
+ /** Filter by pairing state */
146
+ pairingState?: PairingState;
147
+ /** Minimum RSSI to include */
148
+ minRssi?: number;
149
+ /** Allow duplicates (same device reported multiple times) */
150
+ allowDuplicates?: boolean;
151
+ }
152
+
153
+ /**
154
+ * Environment for API endpoint configuration
155
+ */
156
+ export type Environment = 'production' | 'sandbox';
157
+
158
+ /**
159
+ * Provisioning result
160
+ */
161
+ export interface ProvisioningResult {
162
+ success: boolean;
163
+ error?: 'invalid_token' | 'storage_error' | 'chunk_error' | 'unknown';
164
+ }
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Recording-related type definitions
3
+ */
4
+
5
+ /**
6
+ * Audio codec type
7
+ */
8
+ export type AudioCodec = 'pcm_16k' | 'pcm_8k' | 'opus_16k' | 'opus_8k';
9
+
10
+ /**
11
+ * Recording metadata from device
12
+ */
13
+ export interface DeviceRecording {
14
+ /** Unique identifier on device (UUID) */
15
+ uuid: string;
16
+ /** Recording start timestamp */
17
+ startedAt: Date;
18
+ /** Duration in milliseconds */
19
+ durationMs: number;
20
+ /** File size in bytes */
21
+ fileSizeBytes: number;
22
+ /** Audio codec used */
23
+ codec: AudioCodec;
24
+ }
25
+
26
+ /**
27
+ * Upload information provided by customer backend
28
+ * (obtained by calling customer's API, not Bota API directly)
29
+ */
30
+ export interface UploadInfo {
31
+ /** Pre-signed S3 URL for upload */
32
+ uploadUrl: string;
33
+ /** Upload token (up_*) for verification */
34
+ uploadToken: string;
35
+ /** Recording ID assigned by Bota API (rec_*) */
36
+ recordingId: string;
37
+ /** URL to call when upload is complete */
38
+ completeUrl: string;
39
+ /** Expiration time of the upload URL */
40
+ expiresAt: Date;
41
+ }
42
+
43
+ /**
44
+ * Sync progress stages
45
+ */
46
+ export type SyncStage =
47
+ | 'preparing'
48
+ | 'transferring'
49
+ | 'uploading'
50
+ | 'completing'
51
+ | 'completed'
52
+ | 'failed';
53
+
54
+ /**
55
+ * Sync progress information
56
+ */
57
+ export interface SyncProgress {
58
+ /** Current stage */
59
+ stage: SyncStage;
60
+ /** Progress within current stage (0.0 - 1.0) */
61
+ progress: number;
62
+ /** Bytes transferred so far (for transferring stage) */
63
+ bytesTransferred?: number;
64
+ /** Total bytes to transfer */
65
+ totalBytes?: number;
66
+ /** Bytes uploaded so far (for uploading stage) */
67
+ bytesUploaded?: number;
68
+ /** Recording ID (set when completed) */
69
+ recordingId?: string;
70
+ /** Error message (set when failed) */
71
+ error?: string;
72
+ }
73
+
74
+ /**
75
+ * Upload task status
76
+ */
77
+ export type UploadTaskStatus = 'pending' | 'uploading' | 'completed' | 'failed';
78
+
79
+ /**
80
+ * Upload task in the queue
81
+ */
82
+ export interface UploadTask {
83
+ /** Unique task identifier */
84
+ id: string;
85
+ /** Recording ID from Bota API */
86
+ recordingId: string;
87
+ /** Device ID the recording came from */
88
+ deviceId: string;
89
+ /** Local file path */
90
+ localPath: string;
91
+ /** Pre-signed S3 upload URL */
92
+ uploadUrl: string;
93
+ /** Upload token */
94
+ uploadToken: string;
95
+ /** Complete URL to call after upload */
96
+ completeUrl: string;
97
+ /** Current status */
98
+ status: UploadTaskStatus;
99
+ /** Number of retry attempts */
100
+ retryCount: number;
101
+ /** Error message if failed */
102
+ errorMessage?: string;
103
+ /** Task creation time */
104
+ createdAt: Date;
105
+ /** Last update time */
106
+ updatedAt: Date;
107
+ }
108
+
109
+ /**
110
+ * Transfer packet from device
111
+ */
112
+ export interface TransferPacket {
113
+ /** Packet type: data, eof, or error */
114
+ type: 'data' | 'eof' | 'error';
115
+ /** Sequence number */
116
+ sequenceNumber: number;
117
+ /** Audio data (for data packets) */
118
+ data?: Uint8Array;
119
+ /** CRC32 checksum (for EOF packets) */
120
+ checksum?: number;
121
+ /** Error code (for error packets) */
122
+ errorCode?: number;
123
+ }
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Status and configuration type definitions
3
+ */
4
+
5
+ import type { DeviceStatus, StorageInfo } from './Device';
6
+ import type { SyncProgress, UploadTask } from './Recording';
7
+
8
+ /**
9
+ * SDK log level
10
+ */
11
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'none';
12
+
13
+ /**
14
+ * SDK configuration options
15
+ */
16
+ export interface BotaConfig {
17
+ /** Environment for API endpoint (production or sandbox) */
18
+ environment?: 'production' | 'sandbox';
19
+ /** Enable background sync (default: true) */
20
+ backgroundSyncEnabled?: boolean;
21
+ /** Only upload on WiFi (default: false) */
22
+ wifiOnlyUpload?: boolean;
23
+ /** Logging level (default: 'warn') */
24
+ logLevel?: LogLevel;
25
+ /** Enable debug mode with verbose logging */
26
+ debug?: boolean;
27
+ }
28
+
29
+ /**
30
+ * SDK state
31
+ */
32
+ export type SdkState = 'uninitialized' | 'initializing' | 'ready' | 'error';
33
+
34
+ /**
35
+ * Bluetooth state
36
+ */
37
+ export type BluetoothState =
38
+ | 'unknown'
39
+ | 'resetting'
40
+ | 'unsupported'
41
+ | 'unauthorized'
42
+ | 'poweredOff'
43
+ | 'poweredOn';
44
+
45
+ /**
46
+ * SDK status information
47
+ */
48
+ export interface SdkStatus {
49
+ /** Current SDK state */
50
+ state: SdkState;
51
+ /** Bluetooth state */
52
+ bluetoothState: BluetoothState;
53
+ /** Whether Bluetooth is ready for operations */
54
+ isBluetoothReady: boolean;
55
+ /** Number of connected devices */
56
+ connectedDevicesCount: number;
57
+ /** Number of pending uploads in queue */
58
+ pendingUploadsCount: number;
59
+ }
60
+
61
+ // Re-export for convenience
62
+ export type { DeviceStatus, StorageInfo, SyncProgress, UploadTask };
63
+
64
+ /**
65
+ * Event types emitted by DeviceManager
66
+ */
67
+ export interface DeviceManagerEvents {
68
+ /** Emitted when a device is discovered during scan */
69
+ deviceDiscovered: (device: import('./Device').DiscoveredDevice) => void;
70
+ /** Emitted when a device is connected */
71
+ deviceConnected: (device: import('./Device').ConnectedDevice) => void;
72
+ /** Emitted when a device is disconnected */
73
+ deviceDisconnected: (deviceId: string, error?: Error) => void;
74
+ /** Emitted when device status is updated */
75
+ deviceStatusUpdated: (
76
+ deviceId: string,
77
+ status: import('./Device').DeviceStatus
78
+ ) => void;
79
+ /** Emitted when scan starts */
80
+ scanStarted: () => void;
81
+ /** Emitted when scan stops */
82
+ scanStopped: () => void;
83
+ /** Emitted on scan error */
84
+ scanError: (error: Error) => void;
85
+ /** Emitted on connection state change */
86
+ connectionStateChanged: (
87
+ deviceId: string,
88
+ state: import('./Device').ConnectionState
89
+ ) => void;
90
+ }
91
+
92
+ /**
93
+ * Event types emitted by RecordingManager
94
+ */
95
+ export interface RecordingManagerEvents {
96
+ /** Emitted when sync starts for a recording */
97
+ syncStarted: (deviceRecordingUuid: string) => void;
98
+ /** Emitted on sync progress update */
99
+ syncProgress: (deviceRecordingUuid: string, progress: SyncProgress) => void;
100
+ /** Emitted when sync completes successfully */
101
+ syncCompleted: (deviceRecordingUuid: string, recordingId: string) => void;
102
+ /** Emitted when sync fails */
103
+ syncFailed: (deviceRecordingUuid: string, error: Error) => void;
104
+ /** Emitted when upload queue changes */
105
+ queueUpdated: (tasks: UploadTask[]) => void;
106
+ /** Emitted when an upload starts */
107
+ uploadStarted: (taskId: string) => void;
108
+ /** Emitted on upload progress */
109
+ uploadProgress: (taskId: string, progress: number) => void;
110
+ /** Emitted when an upload completes */
111
+ uploadCompleted: (taskId: string, recordingId: string) => void;
112
+ /** Emitted when an upload fails */
113
+ uploadFailed: (taskId: string, error: Error) => void;
114
+ }
115
+
116
+ /**
117
+ * Event types emitted by BotaClient
118
+ */
119
+ export interface BotaClientEvents {
120
+ /** Emitted when SDK state changes */
121
+ stateChanged: (state: SdkState) => void;
122
+ /** Emitted when Bluetooth state changes */
123
+ bluetoothStateChanged: (state: BluetoothState) => void;
124
+ /** Emitted on SDK error */
125
+ error: (error: Error) => void;
126
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Models module exports
3
+ */
4
+
5
+ export * from './Device';
6
+ export * from './Recording';
7
+ export * from './Status';