@voltras/node-sdk 0.1.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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +272 -0
  3. package/dist/cjs/bluetooth/adapters/base.js +116 -0
  4. package/dist/cjs/bluetooth/adapters/base.js.map +1 -0
  5. package/dist/cjs/bluetooth/adapters/index.js +58 -0
  6. package/dist/cjs/bluetooth/adapters/index.js.map +1 -0
  7. package/dist/cjs/bluetooth/adapters/native.js +473 -0
  8. package/dist/cjs/bluetooth/adapters/native.js.map +1 -0
  9. package/dist/cjs/bluetooth/adapters/node.js +228 -0
  10. package/dist/cjs/bluetooth/adapters/node.js.map +1 -0
  11. package/dist/cjs/bluetooth/adapters/types.js +11 -0
  12. package/dist/cjs/bluetooth/adapters/types.js.map +1 -0
  13. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js +187 -0
  14. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js.map +1 -0
  15. package/dist/cjs/bluetooth/adapters/web.js +112 -0
  16. package/dist/cjs/bluetooth/adapters/web.js.map +1 -0
  17. package/dist/cjs/bluetooth/controllers/scanner-controller.js +145 -0
  18. package/dist/cjs/bluetooth/controllers/scanner-controller.js.map +1 -0
  19. package/dist/cjs/bluetooth/index.js +27 -0
  20. package/dist/cjs/bluetooth/index.js.map +1 -0
  21. package/dist/cjs/bluetooth/models/connection.js +68 -0
  22. package/dist/cjs/bluetooth/models/connection.js.map +1 -0
  23. package/dist/cjs/bluetooth/models/device.js +26 -0
  24. package/dist/cjs/bluetooth/models/device.js.map +1 -0
  25. package/dist/cjs/bluetooth/models/environment.js +106 -0
  26. package/dist/cjs/bluetooth/models/environment.js.map +1 -0
  27. package/dist/cjs/errors.js +167 -0
  28. package/dist/cjs/errors.js.map +1 -0
  29. package/dist/cjs/index.js +116 -0
  30. package/dist/cjs/index.js.map +1 -0
  31. package/dist/cjs/react/hooks.js +262 -0
  32. package/dist/cjs/react/hooks.js.map +1 -0
  33. package/dist/cjs/react/index.js +18 -0
  34. package/dist/cjs/react/index.js.map +1 -0
  35. package/dist/cjs/sdk/index.js +14 -0
  36. package/dist/cjs/sdk/index.js.map +1 -0
  37. package/dist/cjs/sdk/types.js +8 -0
  38. package/dist/cjs/sdk/types.js.map +1 -0
  39. package/dist/cjs/sdk/voltra-client.js +632 -0
  40. package/dist/cjs/sdk/voltra-client.js.map +1 -0
  41. package/dist/cjs/sdk/voltra-manager.js +419 -0
  42. package/dist/cjs/sdk/voltra-manager.js.map +1 -0
  43. package/dist/cjs/shared/index.js +12 -0
  44. package/dist/cjs/shared/index.js.map +1 -0
  45. package/dist/cjs/shared/utils.js +51 -0
  46. package/dist/cjs/shared/utils.js.map +1 -0
  47. package/dist/cjs/voltra/index.js +56 -0
  48. package/dist/cjs/voltra/index.js.map +1 -0
  49. package/dist/cjs/voltra/models/connection.js +68 -0
  50. package/dist/cjs/voltra/models/connection.js.map +1 -0
  51. package/dist/cjs/voltra/models/device-filter.js +28 -0
  52. package/dist/cjs/voltra/models/device-filter.js.map +1 -0
  53. package/dist/cjs/voltra/models/device.js +152 -0
  54. package/dist/cjs/voltra/models/device.js.map +1 -0
  55. package/dist/cjs/voltra/models/telemetry/frame.js +46 -0
  56. package/dist/cjs/voltra/models/telemetry/frame.js.map +1 -0
  57. package/dist/cjs/voltra/models/telemetry/index.js +14 -0
  58. package/dist/cjs/voltra/models/telemetry/index.js.map +1 -0
  59. package/dist/cjs/voltra/protocol/commands.js +230 -0
  60. package/dist/cjs/voltra/protocol/commands.js.map +1 -0
  61. package/dist/cjs/voltra/protocol/constants.js +136 -0
  62. package/dist/cjs/voltra/protocol/constants.js.map +1 -0
  63. package/dist/cjs/voltra/protocol/data/chains.json +830 -0
  64. package/dist/cjs/voltra/protocol/data/eccentric.json +1598 -0
  65. package/dist/cjs/voltra/protocol/data/protocol.json +54 -0
  66. package/dist/cjs/voltra/protocol/data/weights.json +62 -0
  67. package/dist/cjs/voltra/protocol/index.js +25 -0
  68. package/dist/cjs/voltra/protocol/index.js.map +1 -0
  69. package/dist/cjs/voltra/protocol/telemetry-decoder.js +146 -0
  70. package/dist/cjs/voltra/protocol/telemetry-decoder.js.map +1 -0
  71. package/dist/esm/bluetooth/adapters/base.js +112 -0
  72. package/dist/esm/bluetooth/adapters/base.js.map +1 -0
  73. package/dist/esm/bluetooth/adapters/index.js +51 -0
  74. package/dist/esm/bluetooth/adapters/index.js.map +1 -0
  75. package/dist/esm/bluetooth/adapters/native.js +469 -0
  76. package/dist/esm/bluetooth/adapters/native.js.map +1 -0
  77. package/dist/esm/bluetooth/adapters/node.js +191 -0
  78. package/dist/esm/bluetooth/adapters/node.js.map +1 -0
  79. package/dist/esm/bluetooth/adapters/types.js +10 -0
  80. package/dist/esm/bluetooth/adapters/types.js.map +1 -0
  81. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js +183 -0
  82. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js.map +1 -0
  83. package/dist/esm/bluetooth/adapters/web.js +108 -0
  84. package/dist/esm/bluetooth/adapters/web.js.map +1 -0
  85. package/dist/esm/bluetooth/controllers/scanner-controller.js +141 -0
  86. package/dist/esm/bluetooth/controllers/scanner-controller.js.map +1 -0
  87. package/dist/esm/bluetooth/index.js +17 -0
  88. package/dist/esm/bluetooth/index.js.map +1 -0
  89. package/dist/esm/bluetooth/models/connection.js +63 -0
  90. package/dist/esm/bluetooth/models/connection.js.map +1 -0
  91. package/dist/esm/bluetooth/models/device.js +22 -0
  92. package/dist/esm/bluetooth/models/device.js.map +1 -0
  93. package/dist/esm/bluetooth/models/environment.js +101 -0
  94. package/dist/esm/bluetooth/models/environment.js.map +1 -0
  95. package/dist/esm/errors.js +155 -0
  96. package/dist/esm/errors.js.map +1 -0
  97. package/dist/esm/index.js +72 -0
  98. package/dist/esm/index.js.map +1 -0
  99. package/dist/esm/react/hooks.js +257 -0
  100. package/dist/esm/react/hooks.js.map +1 -0
  101. package/dist/esm/react/index.js +12 -0
  102. package/dist/esm/react/index.js.map +1 -0
  103. package/dist/esm/sdk/index.js +9 -0
  104. package/dist/esm/sdk/index.js.map +1 -0
  105. package/dist/esm/sdk/types.js +7 -0
  106. package/dist/esm/sdk/types.js.map +1 -0
  107. package/dist/esm/sdk/voltra-client.js +628 -0
  108. package/dist/esm/sdk/voltra-client.js.map +1 -0
  109. package/dist/esm/sdk/voltra-manager.js +415 -0
  110. package/dist/esm/sdk/voltra-manager.js.map +1 -0
  111. package/dist/esm/shared/index.js +5 -0
  112. package/dist/esm/shared/index.js.map +1 -0
  113. package/dist/esm/shared/utils.js +45 -0
  114. package/dist/esm/shared/utils.js.map +1 -0
  115. package/dist/esm/voltra/index.js +26 -0
  116. package/dist/esm/voltra/index.js.map +1 -0
  117. package/dist/esm/voltra/models/connection.js +63 -0
  118. package/dist/esm/voltra/models/connection.js.map +1 -0
  119. package/dist/esm/voltra/models/device-filter.js +23 -0
  120. package/dist/esm/voltra/models/device-filter.js.map +1 -0
  121. package/dist/esm/voltra/models/device.js +148 -0
  122. package/dist/esm/voltra/models/device.js.map +1 -0
  123. package/dist/esm/voltra/models/telemetry/frame.js +40 -0
  124. package/dist/esm/voltra/models/telemetry/frame.js.map +1 -0
  125. package/dist/esm/voltra/models/telemetry/index.js +7 -0
  126. package/dist/esm/voltra/models/telemetry/index.js.map +1 -0
  127. package/dist/esm/voltra/protocol/commands.js +224 -0
  128. package/dist/esm/voltra/protocol/commands.js.map +1 -0
  129. package/dist/esm/voltra/protocol/constants.js +130 -0
  130. package/dist/esm/voltra/protocol/constants.js.map +1 -0
  131. package/dist/esm/voltra/protocol/data/chains.json +830 -0
  132. package/dist/esm/voltra/protocol/data/eccentric.json +1598 -0
  133. package/dist/esm/voltra/protocol/data/protocol.json +54 -0
  134. package/dist/esm/voltra/protocol/data/weights.json +62 -0
  135. package/dist/esm/voltra/protocol/index.js +9 -0
  136. package/dist/esm/voltra/protocol/index.js.map +1 -0
  137. package/dist/esm/voltra/protocol/telemetry-decoder.js +140 -0
  138. package/dist/esm/voltra/protocol/telemetry-decoder.js.map +1 -0
  139. package/dist/types/bluetooth/adapters/base.d.ts +85 -0
  140. package/dist/types/bluetooth/adapters/base.d.ts.map +1 -0
  141. package/dist/types/bluetooth/adapters/index.d.ts +35 -0
  142. package/dist/types/bluetooth/adapters/index.d.ts.map +1 -0
  143. package/dist/types/bluetooth/adapters/native.d.ts +109 -0
  144. package/dist/types/bluetooth/adapters/native.d.ts.map +1 -0
  145. package/dist/types/bluetooth/adapters/node.d.ts +91 -0
  146. package/dist/types/bluetooth/adapters/node.d.ts.map +1 -0
  147. package/dist/types/bluetooth/adapters/types.d.ts +102 -0
  148. package/dist/types/bluetooth/adapters/types.d.ts.map +1 -0
  149. package/dist/types/bluetooth/adapters/web-bluetooth-base.d.ts +90 -0
  150. package/dist/types/bluetooth/adapters/web-bluetooth-base.d.ts.map +1 -0
  151. package/dist/types/bluetooth/adapters/web.d.ts +57 -0
  152. package/dist/types/bluetooth/adapters/web.d.ts.map +1 -0
  153. package/dist/types/bluetooth/controllers/scanner-controller.d.ts +93 -0
  154. package/dist/types/bluetooth/controllers/scanner-controller.d.ts.map +1 -0
  155. package/dist/types/bluetooth/index.d.ts +14 -0
  156. package/dist/types/bluetooth/index.d.ts.map +1 -0
  157. package/dist/types/bluetooth/models/connection.d.ts +37 -0
  158. package/dist/types/bluetooth/models/connection.d.ts.map +1 -0
  159. package/dist/types/bluetooth/models/device.d.ts +25 -0
  160. package/dist/types/bluetooth/models/device.d.ts.map +1 -0
  161. package/dist/types/bluetooth/models/environment.d.ts +45 -0
  162. package/dist/types/bluetooth/models/environment.d.ts.map +1 -0
  163. package/dist/types/errors.d.ts +113 -0
  164. package/dist/types/errors.d.ts.map +1 -0
  165. package/dist/types/index.d.ts +55 -0
  166. package/dist/types/index.d.ts.map +1 -0
  167. package/dist/types/react/hooks.d.ts +130 -0
  168. package/dist/types/react/hooks.d.ts.map +1 -0
  169. package/dist/types/react/index.d.ts +12 -0
  170. package/dist/types/react/index.d.ts.map +1 -0
  171. package/dist/types/sdk/index.d.ts +11 -0
  172. package/dist/types/sdk/index.d.ts.map +1 -0
  173. package/dist/types/sdk/types.d.ts +104 -0
  174. package/dist/types/sdk/types.d.ts.map +1 -0
  175. package/dist/types/sdk/voltra-client.d.ts +221 -0
  176. package/dist/types/sdk/voltra-client.d.ts.map +1 -0
  177. package/dist/types/sdk/voltra-manager.d.ts +226 -0
  178. package/dist/types/sdk/voltra-manager.d.ts.map +1 -0
  179. package/dist/types/shared/index.d.ts +5 -0
  180. package/dist/types/shared/index.d.ts.map +1 -0
  181. package/dist/types/shared/utils.d.ts +25 -0
  182. package/dist/types/shared/utils.d.ts.map +1 -0
  183. package/dist/types/voltra/index.d.ts +13 -0
  184. package/dist/types/voltra/index.d.ts.map +1 -0
  185. package/dist/types/voltra/models/connection.d.ts +37 -0
  186. package/dist/types/voltra/models/connection.d.ts.map +1 -0
  187. package/dist/types/voltra/models/device-filter.d.ts +19 -0
  188. package/dist/types/voltra/models/device-filter.d.ts.map +1 -0
  189. package/dist/types/voltra/models/device.d.ts +105 -0
  190. package/dist/types/voltra/models/device.d.ts.map +1 -0
  191. package/dist/types/voltra/models/telemetry/frame.d.ts +41 -0
  192. package/dist/types/voltra/models/telemetry/frame.d.ts.map +1 -0
  193. package/dist/types/voltra/models/telemetry/index.d.ts +8 -0
  194. package/dist/types/voltra/models/telemetry/index.d.ts.map +1 -0
  195. package/dist/types/voltra/protocol/commands.d.ts +99 -0
  196. package/dist/types/voltra/protocol/commands.d.ts.map +1 -0
  197. package/dist/types/voltra/protocol/constants.d.ts +103 -0
  198. package/dist/types/voltra/protocol/constants.d.ts.map +1 -0
  199. package/dist/types/voltra/protocol/index.d.ts +9 -0
  200. package/dist/types/voltra/protocol/index.d.ts.map +1 -0
  201. package/dist/types/voltra/protocol/telemetry-decoder.d.ts +45 -0
  202. package/dist/types/voltra/protocol/telemetry-decoder.d.ts.map +1 -0
  203. package/package.json +111 -0
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @voltras/node-sdk
3
+ *
4
+ * SDK for connecting to and controlling Voltra fitness devices.
5
+ *
6
+ * Use VoltraManager as the main entry point. It handles device discovery
7
+ * and returns VoltraClient instances for controlling individual devices.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { VoltraManager } from '@voltras/node-sdk';
12
+ *
13
+ * // Create manager (auto-detects platform for web/node)
14
+ * const manager = new VoltraManager();
15
+ *
16
+ * // Scan and connect
17
+ * const devices = await manager.scan();
18
+ * const client = await manager.connect(devices[0]);
19
+ *
20
+ * // Or connect by name in one step
21
+ * const client = await manager.connectByName('VTR-123456');
22
+ *
23
+ * // Control the device
24
+ * await client.setWeight(50);
25
+ * client.onFrame((frame) => console.log('Position:', frame.position));
26
+ * await client.startRecording();
27
+ * ```
28
+ *
29
+ * For React Native, specify the platform:
30
+ * ```typescript
31
+ * const manager = VoltraManager.forNative();
32
+ * // or
33
+ * const manager = new VoltraManager({ platform: 'native' });
34
+ * ```
35
+ */
36
+ export { VoltraClient, VoltraManager, type Platform, type VoltraClientOptions, type VoltraClientState, type VoltraClientEvent, type VoltraClientEventListener, type VoltraManagerOptions, type VoltraManagerEvent, type VoltraManagerEventListener, type ConnectByNameOptions, type AdapterFactory, type FrameListener, type ScanOptions, } from './sdk';
37
+ export { WebBLEAdapter } from './bluetooth/adapters/web';
38
+ export { NodeBLEAdapter, type DeviceChooser } from './bluetooth/adapters/node';
39
+ export { NativeBLEAdapter } from './bluetooth/adapters/native';
40
+ export { createBLEAdapter } from './bluetooth/adapters';
41
+ export type { BLEAdapter, BLEServiceConfig, ConnectOptions, ConnectionState, NotificationCallback, ConnectionStateCallback, } from './bluetooth/adapters/types';
42
+ export type { DiscoveredDevice } from './bluetooth/models/device';
43
+ export { getDeviceDisplayName, sortBySignalStrength } from './bluetooth/models/device';
44
+ export { VOLTRA_DEVICE_PREFIX, isVoltraDevice, filterVoltraDevices, } from './voltra/models/device-filter';
45
+ export { VoltraDevice, DEFAULT_SETTINGS, type VoltraDeviceSettings, type VoltraRecordingState, type VoltraDeviceState, } from './voltra/models/device';
46
+ export type { VoltraConnectionState } from './voltra/models/connection';
47
+ export type { TelemetryFrame } from './voltra/models/telemetry';
48
+ export { createFrame } from './voltra/models/telemetry';
49
+ export { decodeTelemetryFrame, decodeNotification, encodeTelemetryFrame, identifyMessageType, type DecodeResult, type MessageType, } from './voltra/protocol/telemetry-decoder';
50
+ export { MovementPhase, PhaseNames, MessageTypes, TelemetryOffsets, } from './voltra/protocol/constants';
51
+ export { WeightCommands, ChainsCommands, EccentricCommands, type DualCommand, } from './voltra/protocol/commands';
52
+ export { BLE, Timing, Auth, Init, Workout, } from './voltra/protocol/constants';
53
+ export { VoltraSDKError, ConnectionError, AuthenticationError, TimeoutError, NotConnectedError, InvalidSettingError, BluetoothUnavailableError, CommandError, TelemetryError, ErrorCode, type ErrorCode as ErrorCodeType, } from './errors';
54
+ export { delay } from './shared/utils';
55
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAMpC,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEvF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAMxE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,GAAG,EACH,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,OAAO,GACR,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,KAAK,SAAS,IAAI,aAAa,GAChC,MAAM,UAAU,CAAC;AAMlB,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * React Hooks for Voltra SDK
3
+ *
4
+ * Clean, focused hooks for device scanning and state management.
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * import { VoltraManager } from '@voltras/node-sdk';
9
+ * import { useVoltraScanner, useVoltraDevice } from '@voltras/node-sdk/react';
10
+ *
11
+ * function WorkoutScreen() {
12
+ * const manager = useMemo(() => new VoltraManager(), []);
13
+ * const [client, setClient] = useState<VoltraClient | null>(null);
14
+ *
15
+ * // Scanner state
16
+ * const { devices, isScanning, scan } = useVoltraScanner(manager);
17
+ *
18
+ * // Device state (when connected)
19
+ * const { connectionState, currentFrame, settings } = useVoltraDevice(client);
20
+ *
21
+ * const handleConnect = async (device: DiscoveredDevice) => {
22
+ * const connected = await manager.connect(device);
23
+ * setClient(connected);
24
+ * };
25
+ *
26
+ * return (
27
+ * <View>
28
+ * <Button onPress={() => scan()}>
29
+ * {isScanning ? 'Scanning...' : 'Scan'}
30
+ * </Button>
31
+ * {devices.map((d) => (
32
+ * <Button key={d.id} onPress={() => handleConnect(d)}>
33
+ * {d.name}
34
+ * </Button>
35
+ * ))}
36
+ * {connectionState === 'connected' && (
37
+ * <Text>Position: {currentFrame?.position}</Text>
38
+ * )}
39
+ * </View>
40
+ * );
41
+ * }
42
+ * ```
43
+ */
44
+ import type { DiscoveredDevice } from '../bluetooth/models/device';
45
+ import type { TelemetryFrame } from '../voltra/models/telemetry';
46
+ import type { VoltraConnectionState } from '../voltra/models/connection';
47
+ import type { VoltraDeviceSettings, VoltraRecordingState } from '../voltra/models/device';
48
+ import type { VoltraManager } from '../sdk/voltra-manager';
49
+ import type { VoltraClient } from '../sdk/voltra-client';
50
+ import type { ScanOptions } from '../sdk/types';
51
+ /**
52
+ * Scanner state and controls.
53
+ */
54
+ export interface VoltraScannerState {
55
+ /** Devices discovered in the last scan */
56
+ devices: DiscoveredDevice[];
57
+ /** Whether a scan is in progress */
58
+ isScanning: boolean;
59
+ /** Error from the last scan, if any */
60
+ error: Error | null;
61
+ /** Start scanning for devices */
62
+ scan: (options?: ScanOptions) => Promise<DiscoveredDevice[]>;
63
+ /** Clear discovered devices */
64
+ clear: () => void;
65
+ }
66
+ /**
67
+ * Hook for scanning for Voltra devices.
68
+ *
69
+ * @param manager VoltraManager instance
70
+ * @returns Scanner state and controls
71
+ */
72
+ export declare function useVoltraScanner(manager: VoltraManager | null): VoltraScannerState;
73
+ /**
74
+ * Device state.
75
+ */
76
+ export interface VoltraDeviceState {
77
+ /** Current connection state */
78
+ connectionState: VoltraConnectionState;
79
+ /** Whether connected */
80
+ isConnected: boolean;
81
+ /** Current recording state */
82
+ recordingState: VoltraRecordingState;
83
+ /** Whether recording is active */
84
+ isRecording: boolean;
85
+ /** Current device settings */
86
+ settings: VoltraDeviceSettings;
87
+ /** Most recent telemetry frame */
88
+ currentFrame: TelemetryFrame | null;
89
+ /** Last error, if any */
90
+ error: Error | null;
91
+ }
92
+ /**
93
+ * Hook for observing a Voltra device's state.
94
+ *
95
+ * @param client VoltraClient instance (or null if not connected)
96
+ * @returns Device state
97
+ */
98
+ export declare function useVoltraDevice(client: VoltraClient | null): VoltraDeviceState;
99
+ /**
100
+ * Combined state for simple single-device use cases.
101
+ */
102
+ export interface UseVoltraState extends VoltraScannerState, VoltraDeviceState {
103
+ /** The connected client, if any */
104
+ client: VoltraClient | null;
105
+ /** Connect to a device */
106
+ connect: (device: DiscoveredDevice) => Promise<VoltraClient>;
107
+ /** Disconnect current device */
108
+ disconnect: () => Promise<void>;
109
+ /** Set weight (shorthand) */
110
+ setWeight: (lbs: number) => Promise<void>;
111
+ /** Set chains (shorthand) */
112
+ setChains: (lbs: number) => Promise<void>;
113
+ /** Set eccentric (shorthand) */
114
+ setEccentric: (percent: number) => Promise<void>;
115
+ /** Start recording (shorthand) */
116
+ startRecording: () => Promise<void>;
117
+ /** Stop recording (shorthand) */
118
+ stopRecording: () => Promise<void>;
119
+ }
120
+ /**
121
+ * All-in-one hook for simple single-device scenarios.
122
+ * Combines scanner and device state.
123
+ *
124
+ * For multi-device scenarios, use useVoltraScanner and useVoltraDevice separately.
125
+ *
126
+ * @param manager VoltraManager instance
127
+ * @returns Combined state and controls
128
+ */
129
+ export declare function useVoltra(manager: VoltraManager | null): UseVoltraState;
130
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/react/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,iCAAiC;IACjC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7D,+BAA+B;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,kBAAkB,CAsDlF;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,eAAe,EAAE,qBAAqB,CAAC;IACvC,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,cAAc,EAAE,oBAAoB,CAAC;IACrC,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,kCAAkC;IAClC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC;IACpC,yBAAyB;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAkBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,iBAAiB,CAiE9E;AAMD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,kBAAkB,EAAE,iBAAiB;IAC3E,mCAAmC;IACnC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7D,gCAAgC;IAChC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,6BAA6B;IAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,6BAA6B;IAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,gCAAgC;IAChC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,kCAAkC;IAClC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,iCAAiC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,cAAc,CA2FvE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * React Hooks for Voltra SDK
3
+ *
4
+ * Import from '@voltras/node-sdk/react'
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * import { useVoltraScanner, useVoltraDevice, useVoltra } from '@voltras/node-sdk/react';
9
+ * ```
10
+ */
11
+ export { useVoltraScanner, useVoltraDevice, useVoltra, type VoltraScannerState, type VoltraDeviceState, type UseVoltraState, } from './hooks';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * SDK - High-level API
3
+ *
4
+ * VoltraManager is the main entry point. It handles device discovery and returns
5
+ * VoltraClient instances for controlling individual devices.
6
+ */
7
+ export { VoltraClient } from './voltra-client';
8
+ export { VoltraManager } from './voltra-manager';
9
+ export type { VoltraClientOptions, VoltraClientState, VoltraClientEvent, VoltraClientEventListener, FrameListener, ScanOptions, DeviceChooser, } from './types';
10
+ export type { Platform, VoltraManagerOptions, VoltraManagerEvent, VoltraManagerEventListener, ConnectByNameOptions, AdapterFactory, } from './voltra-manager';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,GACf,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * SDK Types
3
+ *
4
+ * Types for the high-level VoltraClient API.
5
+ */
6
+ import type { BLEAdapter } from '../bluetooth/adapters/types';
7
+ import type { DiscoveredDevice } from '../bluetooth/models/device';
8
+ import type { TelemetryFrame } from '../voltra/models/telemetry';
9
+ import type { VoltraConnectionState } from '../voltra/models/connection';
10
+ import type { VoltraDeviceSettings, VoltraRecordingState } from '../voltra/models/device';
11
+ /**
12
+ * Options for creating a VoltraClient.
13
+ */
14
+ export interface VoltraClientOptions {
15
+ /**
16
+ * Pre-configured BLE adapter to use.
17
+ * If not provided, you must call setAdapter() before connecting.
18
+ */
19
+ adapter?: BLEAdapter;
20
+ /**
21
+ * Enable auto-reconnect on connection loss.
22
+ * Default: false
23
+ */
24
+ autoReconnect?: boolean;
25
+ /**
26
+ * Maximum number of reconnect attempts.
27
+ * Default: 3
28
+ */
29
+ maxReconnectAttempts?: number;
30
+ /**
31
+ * Delay between reconnect attempts in milliseconds.
32
+ * Default: 1000
33
+ */
34
+ reconnectDelayMs?: number;
35
+ }
36
+ /**
37
+ * Options for scanning for devices.
38
+ */
39
+ export interface ScanOptions {
40
+ /**
41
+ * Scan timeout in milliseconds.
42
+ * Default: 10000 (10 seconds)
43
+ */
44
+ timeout?: number;
45
+ /**
46
+ * Only return Voltra devices (filter by name prefix).
47
+ * Default: true
48
+ */
49
+ filterVoltra?: boolean;
50
+ }
51
+ /**
52
+ * Client event types.
53
+ */
54
+ export type VoltraClientEvent = {
55
+ type: 'connectionStateChanged';
56
+ state: VoltraConnectionState;
57
+ } | {
58
+ type: 'connected';
59
+ deviceId: string;
60
+ deviceName: string | null;
61
+ } | {
62
+ type: 'disconnected';
63
+ deviceId: string;
64
+ } | {
65
+ type: 'reconnecting';
66
+ attempt: number;
67
+ maxAttempts: number;
68
+ } | {
69
+ type: 'recordingStateChanged';
70
+ state: VoltraRecordingState;
71
+ } | {
72
+ type: 'frame';
73
+ frame: TelemetryFrame;
74
+ } | {
75
+ type: 'error';
76
+ error: Error;
77
+ };
78
+ /**
79
+ * Client event listener.
80
+ */
81
+ export type VoltraClientEventListener = (event: VoltraClientEvent) => void;
82
+ /**
83
+ * Frame listener (shorthand for subscribing to telemetry frames).
84
+ */
85
+ export type FrameListener = (frame: TelemetryFrame) => void;
86
+ /**
87
+ * State snapshot of the client.
88
+ */
89
+ export interface VoltraClientState {
90
+ connectionState: VoltraConnectionState;
91
+ isConnected: boolean;
92
+ isReconnecting: boolean;
93
+ connectedDeviceId: string | null;
94
+ connectedDeviceName: string | null;
95
+ settings: VoltraDeviceSettings;
96
+ recordingState: VoltraRecordingState;
97
+ isRecording: boolean;
98
+ error: Error | null;
99
+ }
100
+ /**
101
+ * Device chooser function for programmatic device selection (Node.js).
102
+ */
103
+ export type DeviceChooser = (devices: DiscoveredDevice[]) => DiscoveredDevice | null;
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,qBAAqB,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,oBAAoB,CAAC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,221 @@
1
+ /**
2
+ * VoltraClient
3
+ *
4
+ * High-level API for connecting to and controlling a single Voltra device.
5
+ * Handles connection lifecycle, authentication, device settings, and telemetry.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { VoltraClient, WebBLEAdapter, BLE } from '@voltras/node-sdk';
10
+ *
11
+ * const adapter = new WebBLEAdapter({ ble: BLE });
12
+ * const client = new VoltraClient({ adapter });
13
+ *
14
+ * // Connect to device
15
+ * const devices = await client.scan();
16
+ * await client.connect(devices[0]);
17
+ *
18
+ * // Configure settings
19
+ * await client.setWeight(50);
20
+ *
21
+ * // Listen for telemetry
22
+ * client.onFrame((frame) => {
23
+ * console.log('Position:', frame.position, 'Velocity:', frame.velocity);
24
+ * });
25
+ *
26
+ * // Start recording
27
+ * await client.startRecording();
28
+ * // ... workout ...
29
+ * await client.stopRecording();
30
+ *
31
+ * // Cleanup
32
+ * client.dispose();
33
+ * ```
34
+ */
35
+ import type { BLEAdapter } from '../bluetooth/adapters/types';
36
+ import type { DiscoveredDevice } from '../bluetooth/models/device';
37
+ import type { VoltraConnectionState } from '../voltra/models/connection';
38
+ import type { VoltraDeviceSettings, VoltraRecordingState } from '../voltra/models/device';
39
+ import type { VoltraClientOptions, VoltraClientState, VoltraClientEventListener, FrameListener, ScanOptions } from './types';
40
+ /**
41
+ * High-level client for connecting to and controlling a Voltra device.
42
+ */
43
+ export declare class VoltraClient {
44
+ private readonly options;
45
+ private adapter;
46
+ private _connectionState;
47
+ private _connectedDeviceId;
48
+ private _connectedDeviceName;
49
+ private _settings;
50
+ private _recordingState;
51
+ private _isReconnecting;
52
+ private _reconnectAttempt;
53
+ private _error;
54
+ private _lastConnectedDevice;
55
+ private notificationUnsubscribe;
56
+ private listeners;
57
+ private frameListeners;
58
+ private disposed;
59
+ constructor(options?: VoltraClientOptions);
60
+ /**
61
+ * Get current connection state.
62
+ */
63
+ get connectionState(): VoltraConnectionState;
64
+ /**
65
+ * Check if connected to a device.
66
+ */
67
+ get isConnected(): boolean;
68
+ /**
69
+ * Check if currently reconnecting.
70
+ */
71
+ get isReconnecting(): boolean;
72
+ /**
73
+ * Get connected device ID.
74
+ */
75
+ get connectedDeviceId(): string | null;
76
+ /**
77
+ * Get connected device name.
78
+ */
79
+ get connectedDeviceName(): string | null;
80
+ /**
81
+ * Get current device settings.
82
+ */
83
+ get settings(): VoltraDeviceSettings;
84
+ /**
85
+ * Get current recording state.
86
+ */
87
+ get recordingState(): VoltraRecordingState;
88
+ /**
89
+ * Check if currently recording.
90
+ */
91
+ get isRecording(): boolean;
92
+ /**
93
+ * Get last error.
94
+ */
95
+ get error(): Error | null;
96
+ /**
97
+ * Get full state snapshot.
98
+ */
99
+ get state(): VoltraClientState;
100
+ /**
101
+ * Set the BLE adapter to use.
102
+ * Must be called before connect() if not provided in constructor.
103
+ */
104
+ setAdapter(adapter: BLEAdapter): void;
105
+ /**
106
+ * Get the current adapter.
107
+ */
108
+ getAdapter(): BLEAdapter | null;
109
+ /**
110
+ * Scan for Voltra devices.
111
+ *
112
+ * Note: In browser environments, this triggers the Web Bluetooth device picker.
113
+ * The returned array will contain only the user-selected device.
114
+ *
115
+ * @param options Scan options
116
+ * @returns Array of discovered Voltra devices
117
+ */
118
+ scan(options?: ScanOptions): Promise<DiscoveredDevice[]>;
119
+ /**
120
+ * Connect to a Voltra device.
121
+ * Handles BLE connection, authentication, and initialization.
122
+ *
123
+ * @param device Device to connect to
124
+ */
125
+ connect(device: DiscoveredDevice): Promise<void>;
126
+ /**
127
+ * Disconnect from the current device.
128
+ */
129
+ disconnect(): Promise<void>;
130
+ /**
131
+ * Set weight in pounds.
132
+ *
133
+ * @param lbs Weight (5-200 in increments of 5)
134
+ */
135
+ setWeight(lbs: number): Promise<void>;
136
+ /**
137
+ * Set chains (reverse resistance) in pounds.
138
+ *
139
+ * @param lbs Chains weight (0-100)
140
+ */
141
+ setChains(lbs: number): Promise<void>;
142
+ /**
143
+ * Set eccentric load adjustment.
144
+ *
145
+ * @param percent Eccentric adjustment (-195 to +195)
146
+ */
147
+ setEccentric(percent: number): Promise<void>;
148
+ /**
149
+ * Get available weight values.
150
+ */
151
+ getAvailableWeights(): number[];
152
+ /**
153
+ * Get available chains values.
154
+ */
155
+ getAvailableChains(): number[];
156
+ /**
157
+ * Get available eccentric values.
158
+ */
159
+ getAvailableEccentric(): number[];
160
+ /**
161
+ * Prepare for recording (sends PREPARE + SETUP commands).
162
+ * Call this before starting a set to minimize latency.
163
+ */
164
+ prepareRecording(): Promise<void>;
165
+ /**
166
+ * Start recording (engage motor).
167
+ * If not prepared, will prepare first.
168
+ */
169
+ startRecording(): Promise<void>;
170
+ /**
171
+ * Stop recording (disengage motor and exit workout mode).
172
+ */
173
+ stopRecording(): Promise<void>;
174
+ /**
175
+ * End the current set but stay in workout mode.
176
+ * Use this between sets when there are more sets to do.
177
+ */
178
+ endSet(): Promise<void>;
179
+ /**
180
+ * Subscribe to client events.
181
+ *
182
+ * @param listener Event listener
183
+ * @returns Unsubscribe function
184
+ */
185
+ subscribe(listener: VoltraClientEventListener): () => void;
186
+ /**
187
+ * Subscribe to telemetry frames.
188
+ * Shorthand for subscribing to 'frame' events.
189
+ *
190
+ * @param listener Frame listener
191
+ * @returns Unsubscribe function
192
+ */
193
+ onFrame(listener: FrameListener): () => void;
194
+ /**
195
+ * Subscribe to connection state changes.
196
+ *
197
+ * @param listener State listener
198
+ * @returns Unsubscribe function
199
+ */
200
+ onConnectionStateChange(listener: (state: VoltraConnectionState) => void): () => void;
201
+ /**
202
+ * Dispose of the client and release all resources.
203
+ * After calling dispose(), the client cannot be used.
204
+ */
205
+ dispose(): void;
206
+ private authenticate;
207
+ private initialize;
208
+ private setupNotificationHandler;
209
+ private setupDisconnectHandler;
210
+ private handleUnexpectedDisconnect;
211
+ private cleanup;
212
+ private setConnectionState;
213
+ private setRecordingState;
214
+ private emit;
215
+ private ensureNotDisposed;
216
+ private ensureAdapter;
217
+ private ensureConnected;
218
+ private wrapError;
219
+ private getErrorMessage;
220
+ }
221
+ //# sourceMappingURL=voltra-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voltra-client.d.ts","sourceRoot":"","sources":["../../../src/sdk/voltra-client.ts"],"names":[],"mappings":"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"}