@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.
- package/README.md +279 -0
- package/lib/commonjs/BotaClient.js +223 -0
- package/lib/commonjs/BotaClient.js.map +1 -0
- package/lib/commonjs/ble/BleManager.js +494 -0
- package/lib/commonjs/ble/BleManager.js.map +1 -0
- package/lib/commonjs/ble/constants.js +166 -0
- package/lib/commonjs/ble/constants.js.map +1 -0
- package/lib/commonjs/ble/index.js +54 -0
- package/lib/commonjs/ble/index.js.map +1 -0
- package/lib/commonjs/ble/parsers.js +345 -0
- package/lib/commonjs/ble/parsers.js.map +1 -0
- package/lib/commonjs/index.js +81 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/managers/DeviceManager.js +437 -0
- package/lib/commonjs/managers/DeviceManager.js.map +1 -0
- package/lib/commonjs/managers/OTAManager.js +227 -0
- package/lib/commonjs/managers/OTAManager.js.map +1 -0
- package/lib/commonjs/managers/RecordingManager.js +384 -0
- package/lib/commonjs/managers/RecordingManager.js.map +1 -0
- package/lib/commonjs/managers/index.js +27 -0
- package/lib/commonjs/managers/index.js.map +1 -0
- package/lib/commonjs/models/Device.js +2 -0
- package/lib/commonjs/models/Device.js.map +1 -0
- package/lib/commonjs/models/Recording.js +2 -0
- package/lib/commonjs/models/Recording.js.map +1 -0
- package/lib/commonjs/models/Status.js +6 -0
- package/lib/commonjs/models/Status.js.map +1 -0
- package/lib/commonjs/models/index.js +39 -0
- package/lib/commonjs/models/index.js.map +1 -0
- package/lib/commonjs/protocol/ProtocolHandler.js +343 -0
- package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -0
- package/lib/commonjs/protocol/index.js +13 -0
- package/lib/commonjs/protocol/index.js.map +1 -0
- package/lib/commonjs/storage/StorageManager.js +333 -0
- package/lib/commonjs/storage/StorageManager.js.map +1 -0
- package/lib/commonjs/storage/index.js +19 -0
- package/lib/commonjs/storage/index.js.map +1 -0
- package/lib/commonjs/upload/S3Uploader.js +133 -0
- package/lib/commonjs/upload/S3Uploader.js.map +1 -0
- package/lib/commonjs/upload/UploadQueue.js +280 -0
- package/lib/commonjs/upload/UploadQueue.js.map +1 -0
- package/lib/commonjs/upload/index.js +20 -0
- package/lib/commonjs/upload/index.js.map +1 -0
- package/lib/commonjs/utils/errors.js +187 -0
- package/lib/commonjs/utils/errors.js.map +1 -0
- package/lib/commonjs/utils/index.js +40 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/utils/logger.js +135 -0
- package/lib/commonjs/utils/logger.js.map +1 -0
- package/lib/commonjs/utils/retry.js +160 -0
- package/lib/commonjs/utils/retry.js.map +1 -0
- package/lib/module/BotaClient.js +216 -0
- package/lib/module/BotaClient.js.map +1 -0
- package/lib/module/ble/BleManager.js +484 -0
- package/lib/module/ble/BleManager.js.map +1 -0
- package/lib/module/ble/constants.js +159 -0
- package/lib/module/ble/constants.js.map +1 -0
- package/lib/module/ble/index.js +8 -0
- package/lib/module/ble/index.js.map +1 -0
- package/lib/module/ble/parsers.js +328 -0
- package/lib/module/ble/parsers.js.map +1 -0
- package/lib/module/index.js +22 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/managers/DeviceManager.js +429 -0
- package/lib/module/managers/DeviceManager.js.map +1 -0
- package/lib/module/managers/OTAManager.js +219 -0
- package/lib/module/managers/OTAManager.js.map +1 -0
- package/lib/module/managers/RecordingManager.js +376 -0
- package/lib/module/managers/RecordingManager.js.map +1 -0
- package/lib/module/managers/index.js +8 -0
- package/lib/module/managers/index.js.map +1 -0
- package/lib/module/models/Device.js +2 -0
- package/lib/module/models/Device.js.map +1 -0
- package/lib/module/models/Recording.js +2 -0
- package/lib/module/models/Recording.js.map +1 -0
- package/lib/module/models/Status.js +2 -0
- package/lib/module/models/Status.js.map +1 -0
- package/lib/module/models/index.js +8 -0
- package/lib/module/models/index.js.map +1 -0
- package/lib/module/protocol/ProtocolHandler.js +336 -0
- package/lib/module/protocol/ProtocolHandler.js.map +1 -0
- package/lib/module/protocol/index.js +6 -0
- package/lib/module/protocol/index.js.map +1 -0
- package/lib/module/storage/StorageManager.js +324 -0
- package/lib/module/storage/StorageManager.js.map +1 -0
- package/lib/module/storage/index.js +6 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/upload/S3Uploader.js +126 -0
- package/lib/module/upload/S3Uploader.js.map +1 -0
- package/lib/module/upload/UploadQueue.js +272 -0
- package/lib/module/upload/UploadQueue.js.map +1 -0
- package/lib/module/upload/index.js +7 -0
- package/lib/module/upload/index.js.map +1 -0
- package/lib/module/utils/errors.js +173 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/index.js +8 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/logger.js +129 -0
- package/lib/module/utils/logger.js.map +1 -0
- package/lib/module/utils/retry.js +149 -0
- package/lib/module/utils/retry.js.map +1 -0
- package/lib/typescript/src/BotaClient.d.ts +77 -0
- package/lib/typescript/src/BotaClient.d.ts.map +1 -0
- package/lib/typescript/src/ble/BleManager.d.ts +111 -0
- package/lib/typescript/src/ble/BleManager.d.ts.map +1 -0
- package/lib/typescript/src/ble/constants.d.ts +111 -0
- package/lib/typescript/src/ble/constants.d.ts.map +1 -0
- package/lib/typescript/src/ble/index.d.ts +7 -0
- package/lib/typescript/src/ble/index.d.ts.map +1 -0
- package/lib/typescript/src/ble/parsers.d.ts +100 -0
- package/lib/typescript/src/ble/parsers.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +16 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts +84 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/OTAManager.d.ts +78 -0
- package/lib/typescript/src/managers/OTAManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts +90 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/index.d.ts +7 -0
- package/lib/typescript/src/managers/index.d.ts.map +1 -0
- package/lib/typescript/src/models/Device.d.ts +139 -0
- package/lib/typescript/src/models/Device.d.ts.map +1 -0
- package/lib/typescript/src/models/Recording.d.ts +110 -0
- package/lib/typescript/src/models/Recording.d.ts.map +1 -0
- package/lib/typescript/src/models/Status.d.ts +104 -0
- package/lib/typescript/src/models/Status.d.ts.map +1 -0
- package/lib/typescript/src/models/index.d.ts +7 -0
- package/lib/typescript/src/models/index.d.ts.map +1 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts +69 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -0
- package/lib/typescript/src/protocol/index.d.ts +5 -0
- package/lib/typescript/src/protocol/index.d.ts.map +1 -0
- package/lib/typescript/src/storage/StorageManager.d.ts +116 -0
- package/lib/typescript/src/storage/StorageManager.d.ts.map +1 -0
- package/lib/typescript/src/storage/index.d.ts +5 -0
- package/lib/typescript/src/storage/index.d.ts.map +1 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts +38 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts.map +1 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts +95 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts.map +1 -0
- package/lib/typescript/src/upload/index.d.ts +6 -0
- package/lib/typescript/src/upload/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/errors.d.ts +82 -0
- package/lib/typescript/src/utils/errors.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +7 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/logger.d.ts +68 -0
- package/lib/typescript/src/utils/logger.d.ts.map +1 -0
- package/lib/typescript/src/utils/retry.d.ts +53 -0
- package/lib/typescript/src/utils/retry.d.ts.map +1 -0
- package/package.json +95 -0
- package/src/BotaClient.ts +238 -0
- package/src/ble/BleManager.ts +573 -0
- package/src/ble/constants.ts +158 -0
- package/src/ble/index.ts +7 -0
- package/src/ble/parsers.ts +395 -0
- package/src/index.ts +64 -0
- package/src/managers/DeviceManager.ts +545 -0
- package/src/managers/OTAManager.ts +263 -0
- package/src/managers/RecordingManager.ts +434 -0
- package/src/managers/index.ts +12 -0
- package/src/models/Device.ts +164 -0
- package/src/models/Recording.ts +123 -0
- package/src/models/Status.ts +126 -0
- package/src/models/index.ts +7 -0
- package/src/protocol/ProtocolHandler.ts +459 -0
- package/src/protocol/index.ts +5 -0
- package/src/storage/StorageManager.ts +343 -0
- package/src/storage/index.ts +5 -0
- package/src/upload/S3Uploader.ts +164 -0
- package/src/upload/UploadQueue.ts +310 -0
- package/src/upload/index.ts +6 -0
- package/src/utils/errors.ts +310 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/logger.ts +137 -0
- 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
|
+
}
|