@camstack/ui-library 1.2.256 → 1.2.258

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 (375) hide show
  1. package/dist/composites/accelerator-label.d.ts +9 -9
  2. package/dist/composites/adaptive-downlink.d.ts +141 -143
  3. package/dist/composites/addon-global-settings-form.d.ts +73 -60
  4. package/dist/composites/addon-page-props.d.ts +34 -10
  5. package/dist/composites/agent-step-editor.d.ts +48 -47
  6. package/dist/composites/app-shell/app-shell.d.ts +17 -17
  7. package/dist/composites/app-shell/index.d.ts +3 -3
  8. package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
  9. package/dist/composites/app-shell/sidebar.d.ts +10 -10
  10. package/dist/composites/audio-classification-list.d.ts +16 -15
  11. package/dist/composites/audio-level-waveform.d.ts +31 -30
  12. package/dist/composites/audio-waveform.d.ts +18 -17
  13. package/dist/composites/battery-badge.d.ts +27 -13
  14. package/dist/composites/breadcrumb.d.ts +21 -21
  15. package/dist/composites/camera-stream-player.d.ts +309 -309
  16. package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
  17. package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
  18. package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
  19. package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
  20. package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
  21. package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
  22. package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
  23. package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
  24. package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
  25. package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
  26. package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
  27. package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
  28. package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
  29. package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
  30. package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
  31. package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
  32. package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
  33. package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
  34. package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
  35. package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
  36. package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
  37. package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
  38. package/dist/composites/cap-settings/index.d.ts +20 -20
  39. package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
  40. package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
  41. package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
  42. package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
  43. package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
  44. package/dist/composites/client-network-sample.d.ts +41 -41
  45. package/dist/composites/clips/ClipBandBar.d.ts +44 -14
  46. package/dist/composites/clips/ClipPanel.d.ts +30 -6
  47. package/dist/composites/clips/ClipTile.d.ts +26 -5
  48. package/dist/composites/clips/ClipsSection.d.ts +107 -2
  49. package/dist/composites/clips/clip-band.d.ts +72 -38
  50. package/dist/composites/clips/clip-day-window.d.ts +7 -30
  51. package/dist/composites/clips/clip-source-state.d.ts +55 -26
  52. package/dist/composites/clips/clip-still-retry.d.ts +39 -39
  53. package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
  54. package/dist/composites/clips/clip-tile-media.d.ts +64 -32
  55. package/dist/composites/clips/clip-view-state.d.ts +76 -46
  56. package/dist/composites/code-block.d.ts +5 -4
  57. package/dist/composites/config-form-builder.d.ts +14 -13
  58. package/dist/composites/config-form-field.d.ts +63 -62
  59. package/dist/composites/config-icon-field.d.ts +10 -9
  60. package/dist/composites/config-secret-field.d.ts +51 -27
  61. package/dist/composites/confirm-action-button.d.ts +52 -39
  62. package/dist/composites/confirm-dialog.d.ts +110 -48
  63. package/dist/composites/copy-button.d.ts +25 -19
  64. package/dist/composites/data-table/data-table-header.d.ts +8 -7
  65. package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
  66. package/dist/composites/data-table/data-table-row.d.ts +8 -7
  67. package/dist/composites/data-table/data-table.d.ts +3 -2
  68. package/dist/composites/data-table/index.d.ts +2 -2
  69. package/dist/composites/data-table/types.d.ts +29 -29
  70. package/dist/composites/data-table-filter-bar.d.ts +30 -29
  71. package/dist/composites/data-table-filter.d.ts +34 -34
  72. package/dist/composites/data-table-layout.d.ts +24 -24
  73. package/dist/composites/data-table-pager.d.ts +5 -5
  74. package/dist/composites/data-table-pagination.d.ts +23 -23
  75. package/dist/composites/data-table-selection.d.ts +10 -10
  76. package/dist/composites/data-table.d.ts +167 -118
  77. package/dist/composites/detection-canvas.d.ts +34 -25
  78. package/dist/composites/detection-colors.d.ts +9 -9
  79. package/dist/composites/detection-overlay.d.ts +33 -32
  80. package/dist/composites/detection-result-tree.d.ts +22 -9
  81. package/dist/composites/dev-shell.d.ts +15 -14
  82. package/dist/composites/device-activity-panel.d.ts +37 -31
  83. package/dist/composites/device-card.d.ts +32 -32
  84. package/dist/composites/device-controls/ac-panel.d.ts +2 -2
  85. package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
  86. package/dist/composites/device-controls/atoms.d.ts +50 -50
  87. package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
  88. package/dist/composites/device-controls/button-control.d.ts +14 -14
  89. package/dist/composites/device-controls/climate-panel.d.ts +12 -12
  90. package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
  91. package/dist/composites/device-controls/container-primary.d.ts +68 -39
  92. package/dist/composites/device-controls/control-panel.d.ts +4 -4
  93. package/dist/composites/device-controls/control-registry.d.ts +81 -70
  94. package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
  95. package/dist/composites/device-controls/cover-inline.d.ts +20 -20
  96. package/dist/composites/device-controls/cover-panel.d.ts +2 -2
  97. package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
  98. package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
  99. package/dist/composites/device-controls/fan-panel.d.ts +3 -3
  100. package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
  101. package/dist/composites/device-controls/image-control.d.ts +41 -27
  102. package/dist/composites/device-controls/index.d.ts +34 -34
  103. package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
  104. package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
  105. package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
  106. package/dist/composites/device-controls/lock-panel.d.ts +3 -3
  107. package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
  108. package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
  109. package/dist/composites/device-controls/offline-badge.d.ts +23 -8
  110. package/dist/composites/device-controls/panel-controls.d.ts +39 -20
  111. package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
  112. package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
  113. package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
  114. package/dist/composites/device-controls/primary-child.d.ts +14 -25
  115. package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
  116. package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
  117. package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
  118. package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
  119. package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
  120. package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
  121. package/dist/composites/device-controls/switch-panel.d.ts +2 -2
  122. package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
  123. package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
  124. package/dist/composites/device-controls/types.d.ts +11 -11
  125. package/dist/composites/device-controls/update-control.d.ts +20 -7
  126. package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
  127. package/dist/composites/device-controls/valve-control.d.ts +51 -35
  128. package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
  129. package/dist/composites/device-controls/weather-control.d.ts +46 -28
  130. package/dist/composites/device-export-panel.d.ts +34 -34
  131. package/dist/composites/device-grid.d.ts +10 -10
  132. package/dist/composites/device-item/actions.d.ts +40 -18
  133. package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
  134. package/dist/composites/device-item/child-layout.d.ts +43 -26
  135. package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
  136. package/dist/composites/device-item/children-accordion.d.ts +11 -11
  137. package/dist/composites/device-item/container-children-context.d.ts +28 -11
  138. package/dist/composites/device-item/device-delete-action.d.ts +23 -5
  139. package/dist/composites/device-item/features.d.ts +33 -15
  140. package/dist/composites/device-item/header.d.ts +53 -31
  141. package/dist/composites/device-item/helpers.d.ts +291 -274
  142. package/dist/composites/device-item/index.d.ts +18 -9
  143. package/dist/composites/device-item/preview.d.ts +41 -21
  144. package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
  145. package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
  146. package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
  147. package/dist/composites/device-item/status-dot.d.ts +24 -6
  148. package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
  149. package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
  150. package/dist/composites/device-list/columns.d.ts +108 -108
  151. package/dist/composites/device-list/device-integration.d.ts +48 -58
  152. package/dist/composites/device-list/device-mode.d.ts +121 -121
  153. package/dist/composites/device-list/empty-state.d.ts +14 -3
  154. package/dist/composites/device-list/filter-chips.d.ts +42 -29
  155. package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
  156. package/dist/composites/device-list/generic-mode.d.ts +88 -88
  157. package/dist/composites/device-list/group.d.ts +62 -35
  158. package/dist/composites/device-list/hardware-cell.d.ts +14 -3
  159. package/dist/composites/device-list/hardware.d.ts +29 -11
  160. package/dist/composites/device-list/icon-action.d.ts +27 -15
  161. package/dist/composites/device-list/index.d.ts +46 -23
  162. package/dist/composites/device-list/multi-select.d.ts +17 -17
  163. package/dist/composites/device-list/page-size-select.d.ts +13 -7
  164. package/dist/composites/device-list/pagination.d.ts +19 -12
  165. package/dist/composites/device-list/sort.d.ts +28 -15
  166. package/dist/composites/device-list/sortable-header.d.ts +20 -7
  167. package/dist/composites/device-list/table-layout.d.ts +44 -44
  168. package/dist/composites/device-list/type-filter.d.ts +16 -16
  169. package/dist/composites/device-list/url-state.d.ts +35 -35
  170. package/dist/composites/device-meta.d.ts +43 -43
  171. package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
  172. package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
  173. package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
  174. package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
  175. package/dist/composites/device-picker/device-parent.d.ts +27 -27
  176. package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
  177. package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
  178. package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
  179. package/dist/composites/device-picker/device-selection.d.ts +43 -43
  180. package/dist/composites/device-picker/index.d.ts +9 -9
  181. package/dist/composites/device-select-field.d.ts +17 -16
  182. package/dist/composites/device-select-filter.d.ts +78 -78
  183. package/dist/composites/device-selector-picker.d.ts +25 -25
  184. package/dist/composites/device-step-matrix.d.ts +54 -28
  185. package/dist/composites/discovery-panel.d.ts +22 -22
  186. package/dist/composites/doorbell-recent-panel.d.ts +9 -8
  187. package/dist/composites/empty-state.d.ts +8 -8
  188. package/dist/composites/error-box.d.ts +32 -17
  189. package/dist/composites/event-kind-visuals.d.ts +29 -18
  190. package/dist/composites/event-stream.d.ts +59 -42
  191. package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
  192. package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
  193. package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
  194. package/dist/composites/filter-bar.d.ts +22 -21
  195. package/dist/composites/form-field.d.ts +9 -9
  196. package/dist/composites/format-state-value.d.ts +23 -51
  197. package/dist/composites/grouped-model-selector.d.ts +7 -6
  198. package/dist/composites/hls-quality.d.ts +26 -26
  199. package/dist/composites/hls-video.d.ts +62 -39
  200. package/dist/composites/hover-zoom-image.d.ts +35 -16
  201. package/dist/composites/icon-picker.d.ts +86 -50
  202. package/dist/composites/image-selector.d.ts +21 -20
  203. package/dist/composites/index.d.ts +204 -204
  204. package/dist/composites/inference-config-selector.d.ts +36 -35
  205. package/dist/composites/kebab-menu.d.ts +53 -35
  206. package/dist/composites/key-value-list.d.ts +14 -14
  207. package/dist/composites/log-stream-scroll.d.ts +24 -24
  208. package/dist/composites/log-stream.d.ts +81 -70
  209. package/dist/composites/login-form.d.ts +7 -6
  210. package/dist/composites/model-bound-slider.d.ts +46 -26
  211. package/dist/composites/model-picker.d.ts +20 -19
  212. package/dist/composites/mount-addon-page.d.ts +12 -12
  213. package/dist/composites/network-link-badge.d.ts +7 -6
  214. package/dist/composites/node-picker.d.ts +14 -13
  215. package/dist/composites/notification-targets-field.d.ts +76 -58
  216. package/dist/composites/notification-targets-options.d.ts +9 -6
  217. package/dist/composites/option-select/OptionSelect.d.ts +23 -22
  218. package/dist/composites/option-select/index.d.ts +4 -4
  219. package/dist/composites/option-select/option-select-model.d.ts +35 -35
  220. package/dist/composites/page-header.d.ts +6 -6
  221. package/dist/composites/peer-connection-config.d.ts +9 -9
  222. package/dist/composites/phase-icon.d.ts +10 -3
  223. package/dist/composites/pipeline-builder.d.ts +21 -13
  224. package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
  225. package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
  226. package/dist/composites/pipeline-step.d.ts +39 -31
  227. package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
  228. package/dist/composites/placeholder-field/index.d.ts +1 -1
  229. package/dist/composites/provider-badge.d.ts +6 -5
  230. package/dist/composites/ptz-overlay.d.ts +38 -18
  231. package/dist/composites/qr-code.d.ts +24 -10
  232. package/dist/composites/reconnect-schedule.d.ts +22 -22
  233. package/dist/composites/resolve-step-default-model.d.ts +94 -94
  234. package/dist/composites/response-log.d.ts +7 -6
  235. package/dist/composites/root-model-source.d.ts +21 -10
  236. package/dist/composites/scope-picker.d.ts +49 -25
  237. package/dist/composites/section-card.d.ts +19 -11
  238. package/dist/composites/setting-row.d.ts +39 -21
  239. package/dist/composites/snapshot-button.d.ts +23 -19
  240. package/dist/composites/sort-header-button.d.ts +25 -8
  241. package/dist/composites/stat-card.d.ts +20 -8
  242. package/dist/composites/state-values-stream.d.ts +49 -24
  243. package/dist/composites/status-badge.d.ts +10 -8
  244. package/dist/composites/step-inspector/gate-control.d.ts +13 -12
  245. package/dist/composites/step-inspector/index.d.ts +8 -8
  246. package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
  247. package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
  248. package/dist/composites/step-inspector/setting-values.d.ts +13 -8
  249. package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
  250. package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
  251. package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
  252. package/dist/composites/step-inspector/step-search.d.ts +11 -11
  253. package/dist/composites/step-timings.d.ts +7 -6
  254. package/dist/composites/step-tree.d.ts +17 -12
  255. package/dist/composites/stream-broker-selector.d.ts +29 -8
  256. package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
  257. package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
  258. package/dist/composites/stream-panel.d.ts +212 -201
  259. package/dist/composites/table-sort.d.ts +61 -61
  260. package/dist/composites/timezone-selector.d.ts +15 -13
  261. package/dist/composites/training/send-frame-to-training.d.ts +5 -4
  262. package/dist/composites/training/training-collection-picker.d.ts +4 -3
  263. package/dist/composites/training/training-refusal-text.d.ts +6 -6
  264. package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
  265. package/dist/composites/unit-picker/index.d.ts +1 -1
  266. package/dist/composites/use-data-table-filter.d.ts +19 -19
  267. package/dist/composites/version-badge.d.ts +19 -18
  268. package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
  269. package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
  270. package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
  271. package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
  272. package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
  273. package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
  274. package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
  275. package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
  276. package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
  277. package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
  278. package/dist/composites/widget-panel.d.ts +23 -23
  279. package/dist/composites/widget-slot.d.ts +35 -17
  280. package/dist/contexts/custom-field-renderers.d.ts +53 -17
  281. package/dist/contexts/device-context.d.ts +32 -12
  282. package/dist/contexts/device-quick-detail.d.ts +13 -4
  283. package/dist/contexts/player-overlays.d.ts +82 -42
  284. package/dist/contexts/recorded-playback.d.ts +40 -18
  285. package/dist/contexts/system-context.d.ts +28 -13
  286. package/dist/contexts/vod-playback.d.ts +39 -22
  287. package/dist/contexts/widget-registry.d.ts +139 -102
  288. package/dist/contexts/zone-editing.d.ts +69 -46
  289. package/dist/generated/system-hooks.d.ts +17 -1
  290. package/dist/hooks/index.d.ts +43 -43
  291. package/dist/hooks/turn-server-cache.d.ts +69 -69
  292. package/dist/hooks/use-capability-presence.d.ts +65 -28
  293. package/dist/hooks/use-cluster-nodes.d.ts +54 -27
  294. package/dist/hooks/use-device-autotrack.d.ts +7 -7
  295. package/dist/hooks/use-device-battery.d.ts +24 -11
  296. package/dist/hooks/use-device-cap-slice.d.ts +15 -15
  297. package/dist/hooks/use-device-capability.d.ts +61 -27
  298. package/dist/hooks/use-device-detections.d.ts +32 -32
  299. package/dist/hooks/use-device-features.d.ts +18 -18
  300. package/dist/hooks/use-device-list-page-size.d.ts +19 -6
  301. package/dist/hooks/use-device-network-link.d.ts +15 -7
  302. package/dist/hooks/use-device-proxy.d.ts +98 -92
  303. package/dist/hooks/use-device-snapshot.d.ts +23 -23
  304. package/dist/hooks/use-device-webrtc.d.ts +211 -205
  305. package/dist/hooks/use-devices.d.ts +9 -9
  306. package/dist/hooks/use-doorbell-events.d.ts +13 -13
  307. package/dist/hooks/use-event-stream.d.ts +6 -3
  308. package/dist/hooks/use-is-mobile.d.ts +5 -5
  309. package/dist/hooks/use-live-buffer.d.ts +5 -5
  310. package/dist/hooks/use-live-event.d.ts +1 -1
  311. package/dist/hooks/use-navigation.d.ts +20 -20
  312. package/dist/hooks/use-optimistic-slice.d.ts +13 -13
  313. package/dist/hooks/use-persisted-page-size.d.ts +10 -10
  314. package/dist/hooks/use-ptz.d.ts +108 -108
  315. package/dist/hooks/use-stationary-overlay.d.ts +37 -37
  316. package/dist/hooks/use-system-query.d.ts +33 -10
  317. package/dist/hooks/use-url-query.d.ts +3 -3
  318. package/dist/icons/index.d.ts +2 -2
  319. package/dist/icons/provider-icons.d.ts +2 -2
  320. package/dist/icons/status-icons.d.ts +2 -2
  321. package/dist/index.cjs +123 -69
  322. package/dist/index.d.ts +31 -27
  323. package/dist/index.js +123 -69
  324. package/dist/lib/cap-error.d.ts +18 -39
  325. package/dist/lib/cn.d.ts +1 -1
  326. package/dist/lib/fleet-query-defaults.d.ts +68 -34
  327. package/dist/lib/format-control-datetime.d.ts +16 -16
  328. package/dist/lib/format-duration.d.ts +12 -12
  329. package/dist/lib/format-last-seen.d.ts +5 -18
  330. package/dist/lib/format-numeric.d.ts +7 -7
  331. package/dist/lib/hub-mount.d.ts +8 -42
  332. package/dist/lib/index.d.ts +21 -21
  333. package/dist/lib/phase-config.d.ts +24 -11
  334. package/dist/lib/pipeline-mirror.d.ts +16 -16
  335. package/dist/lib/recorded-control-protocol.d.ts +41 -43
  336. package/dist/lib/resolve-sensor-display.d.ts +36 -20
  337. package/dist/lib/responsive.d.ts +54 -54
  338. package/dist/lib/scrub-controller.d.ts +75 -78
  339. package/dist/lib/shared-context.d.ts +27 -2
  340. package/dist/lib/tailwind-variants.d.ts +20 -20
  341. package/dist/primitives/badge.d.ts +5 -10
  342. package/dist/primitives/bottom-sheet.d.ts +7 -7
  343. package/dist/primitives/button.d.ts +5 -9
  344. package/dist/primitives/card.d.ts +4 -8
  345. package/dist/primitives/checkbox.d.ts +3 -4
  346. package/dist/primitives/collapsible-card.d.ts +23 -13
  347. package/dist/primitives/dialog.d.ts +33 -59
  348. package/dist/primitives/dropdown.d.ts +13 -13
  349. package/dist/primitives/floating-panel.d.ts +41 -20
  350. package/dist/primitives/icon-button.d.ts +8 -12
  351. package/dist/primitives/index.d.ts +22 -22
  352. package/dist/primitives/input.d.ts +6 -16
  353. package/dist/primitives/label.d.ts +3 -4
  354. package/dist/primitives/mobile-drawer.d.ts +8 -8
  355. package/dist/primitives/password-input.d.ts +18 -18
  356. package/dist/primitives/popover.d.ts +7 -7
  357. package/dist/primitives/scroll-area.d.ts +3 -4
  358. package/dist/primitives/select.d.ts +20 -20
  359. package/dist/primitives/separator.d.ts +4 -8
  360. package/dist/primitives/skeleton.d.ts +3 -4
  361. package/dist/primitives/switch.d.ts +6 -6
  362. package/dist/primitives/tabs.d.ts +26 -26
  363. package/dist/primitives/tooltip.d.ts +12 -12
  364. package/dist/theme/create-theme.d.ts +1 -1
  365. package/dist/theme/defaults.d.ts +1 -1
  366. package/dist/theme/index.d.ts +6 -6
  367. package/dist/theme/theme-provider.d.ts +8 -7
  368. package/dist/theme/theme-to-css.d.ts +1 -1
  369. package/dist/theme/types.d.ts +98 -100
  370. package/dist/theme/use-theme-mode.d.ts +1 -1
  371. package/dist/trpc-react.d.ts +23 -3
  372. package/dist/widgets/host-widgets.d.ts +4 -4
  373. package/package.json +8 -4
  374. package/src/tailwind/camstack-theme.css +11 -0
  375. package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
@@ -1,10 +1,10 @@
1
1
  /**
2
- * What the operator reads when a frame could not be sent to training.
3
- *
4
- * Pure, so every refusal the hub can name has a sentence here and a test
5
- * that says so — a refusal rendered as its raw code reads like a crash.
6
- */
2
+ * What the operator reads when a frame could not be sent to training.
3
+ *
4
+ * Pure, so every refusal the hub can name has a sentence here and a test
5
+ * that says so — a refusal rendered as its raw code reads like a crash.
6
+ */
7
7
  /** The refusal codes `addRetrainFrameFromRecording` answers with. */
8
- export type TrainingFrameRefusal = 'unknown-collection' | 'still-unavailable' | 'still-busy' | 'unreadable-image' | 'write-failed';
8
+ export type TrainingFrameRefusal = "unknown-collection" | "still-unavailable" | "still-busy" | "unreadable-image" | "write-failed";
9
9
  /** One sentence for a refusal, with the hub's own detail appended. */
10
10
  export declare function trainingRefusalText(reason: TrainingFrameRefusal, detail?: string): string;
@@ -1,16 +1,21 @@
1
- import { UnitDimension } from '@camstack/types';
2
- import { ReactNode } from 'react';
1
+ /**
2
+ * Same-dimension unit picker. Lists only `unitsForDimension(dimension)`; an
3
+ * empty dimension disables the control and shows `emptyReason` so the operator
4
+ * never sees a refused conversion as a pickable option.
5
+ */
6
+ import { type UnitDimension } from "@camstack/types";
7
+ import type { ReactNode } from "react";
3
8
  export interface UnitPickerProps {
4
- readonly dimension: UnitDimension | undefined;
5
- readonly value: string;
6
- readonly onChange: (unit: string) => void;
7
- readonly disabled?: boolean;
8
- /** Shown when `dimension` is undefined; never offered as a pickable unit. */
9
- readonly emptyReason?: string;
10
- /** Optional empty-value option label (inherit / source). */
11
- readonly inheritLabel?: string;
12
- readonly className?: string;
13
- readonly id?: string;
14
- readonly 'aria-label'?: string;
9
+ readonly dimension: UnitDimension | undefined;
10
+ readonly value: string;
11
+ readonly onChange: (unit: string) => void;
12
+ readonly disabled?: boolean;
13
+ /** Shown when `dimension` is undefined; never offered as a pickable unit. */
14
+ readonly emptyReason?: string;
15
+ /** Optional empty-value option label (inherit / source). */
16
+ readonly inheritLabel?: string;
17
+ readonly className?: string;
18
+ readonly id?: string;
19
+ readonly "aria-label"?: string;
15
20
  }
16
- export declare function UnitPicker({ dimension, value, onChange, disabled, emptyReason, inheritLabel, className, id, 'aria-label': ariaLabel, }: UnitPickerProps): ReactNode;
21
+ export declare function UnitPicker({ dimension, value, onChange, disabled, emptyReason, inheritLabel, className, id, "aria-label": ariaLabel }: UnitPickerProps): ReactNode;
@@ -1 +1 @@
1
- export { UnitPicker, type UnitPickerProps } from './UnitPicker.js';
1
+ export { UnitPicker, type UnitPickerProps } from "./UnitPicker.js";
@@ -1,25 +1,25 @@
1
- import { DataTableFacet, DataTableFilterConfig, DataTableFilterState } from './data-table-filter';
1
+ import { type DataTableFacet, type DataTableFilterConfig, type DataTableFilterState } from "./data-table-filter";
2
2
  /** A facet group as the bar renders it: its chips and what is selected. */
3
3
  export interface DataTableFilterGroupView {
4
- readonly id: string;
5
- readonly facets: readonly DataTableFacet[];
6
- readonly selected: readonly string[];
4
+ readonly id: string;
5
+ readonly facets: readonly DataTableFacet[];
6
+ readonly selected: readonly string[];
7
7
  }
8
8
  export interface DataTableFilter<T> {
9
- readonly state: DataTableFilterState;
10
- readonly setSearch: (search: string) => void;
11
- readonly toggleFacet: (value: string) => void;
12
- readonly toggleGroupFacet: (groupId: string, value: string) => void;
13
- /** One entry per `facetGroups` config, chips derived from the UNFILTERED rows. */
14
- readonly groups: readonly DataTableFilterGroupView[];
15
- readonly clear: () => void;
16
- /** Chips derived from the UNFILTERED rows — a chip never disappears because
17
- * it was the one just pressed. */
18
- readonly facets: readonly DataTableFacet[];
19
- /** The rows that survive the filter. */
20
- readonly rows: readonly T[];
21
- /** True when the filter is narrowing anything — what an empty state should
22
- * read before it says "there is nothing here". */
23
- readonly active: boolean;
9
+ readonly state: DataTableFilterState;
10
+ readonly setSearch: (search: string) => void;
11
+ readonly toggleFacet: (value: string) => void;
12
+ readonly toggleGroupFacet: (groupId: string, value: string) => void;
13
+ /** One entry per `facetGroups` config, chips derived from the UNFILTERED rows. */
14
+ readonly groups: readonly DataTableFilterGroupView[];
15
+ readonly clear: () => void;
16
+ /** Chips derived from the UNFILTERED rows — a chip never disappears because
17
+ * it was the one just pressed. */
18
+ readonly facets: readonly DataTableFacet[];
19
+ /** The rows that survive the filter. */
20
+ readonly rows: readonly T[];
21
+ /** True when the filter is narrowing anything — what an empty state should
22
+ * read before it says "there is nothing here". */
23
+ readonly active: boolean;
24
24
  }
25
25
  export declare function useDataTableFilter<T>(rows: readonly T[], config: DataTableFilterConfig<T>): DataTableFilter<T>;
@@ -1,24 +1,25 @@
1
- import { default as React } from 'react';
2
- export type SemanticBadgeVariant = 'success' | 'warning' | 'danger' | 'info' | 'neutral';
1
+ import React from "react";
2
+ import { type JSX } from "react";
3
+ export type SemanticBadgeVariant = "success" | "warning" | "danger" | "info" | "neutral";
3
4
  export interface SemanticBadgeProps {
4
- children: React.ReactNode;
5
- variant?: SemanticBadgeVariant;
6
- /** Use monospace font (good for versions, codes) */
7
- mono?: boolean;
8
- className?: string;
5
+ children: React.ReactNode;
6
+ variant?: SemanticBadgeVariant;
7
+ /** Use monospace font (good for versions, codes) */
8
+ mono?: boolean;
9
+ className?: string;
9
10
  }
10
11
  /**
11
- * General-purpose badge with semantic color variants.
12
- * Solid background with dark text for maximum contrast.
13
- */
14
- export declare function SemanticBadge({ children, variant, mono, className, }: SemanticBadgeProps): React.JSX.Element;
12
+ * General-purpose badge with semantic color variants.
13
+ * Solid background with dark text for maximum contrast.
14
+ */
15
+ export declare function SemanticBadge({ children, variant, mono, className }: SemanticBadgeProps): JSX.Element;
15
16
  export interface VersionBadgeProps {
16
- version: string;
17
- preRelease?: boolean;
18
- className?: string;
17
+ version: string;
18
+ preRelease?: boolean;
19
+ className?: string;
19
20
  }
20
21
  /**
21
- * Version badge — auto-detects pre-release versions.
22
- * Stable = success (green), Pre-release = warning (amber).
23
- */
24
- export declare function VersionBadge({ version, preRelease, className }: VersionBadgeProps): React.JSX.Element;
22
+ * Version badge — auto-detects pre-release versions.
23
+ * Stable = success (green), Pre-release = warning (amber).
24
+ */
25
+ export declare function VersionBadge({ version, preRelease, className }: VersionBadgeProps): JSX.Element;
@@ -1,15 +1,15 @@
1
- import { ReactNode } from 'react';
2
- import { EndpointTestRow, IceServerEntry, NatCheckResult } from './endpoint-test';
1
+ import { type ReactNode } from "react";
2
+ import { type EndpointTestRow, type IceServerEntry, type NatCheckResult } from "./endpoint-test";
3
3
  export interface EndpointTestCardProps {
4
- /** Fetch the live ICE server list (`turnProvider.getTurnServers`). */
5
- readonly loadServers: () => Promise<readonly IceServerEntry[]>;
4
+ /** Fetch the live ICE server list (`turnProvider.getTurnServers`). */
5
+ readonly loadServers: () => Promise<readonly IceServerEntry[]>;
6
6
  }
7
7
  /** The per-endpoint result table — one row per tested ICE URL. */
8
- export declare function EndpointResultsCard({ rows, }: {
9
- readonly rows: readonly EndpointTestRow[];
8
+ export declare function EndpointResultsCard({ rows }: {
9
+ readonly rows: readonly EndpointTestRow[];
10
10
  }): ReactNode;
11
11
  /** The NAT mapping verdict for this browser. */
12
12
  export declare function NatResultCard({ result }: {
13
- readonly result: NatCheckResult;
13
+ readonly result: NatCheckResult;
14
14
  }): ReactNode;
15
15
  export declare function EndpointTestCard({ loadServers }: EndpointTestCardProps): ReactNode;
@@ -1,18 +1,18 @@
1
- import { ReactNode } from 'react';
2
- import { UseDeviceWebrtcTrpc } from '../../hooks/use-device-webrtc';
3
- import { StreamChoice } from '../stream-panel';
1
+ import { type ReactNode } from "react";
2
+ import type { UseDeviceWebrtcTrpc } from "../../hooks/use-device-webrtc";
3
+ import type { StreamChoice } from "../stream-panel";
4
4
  export interface HubSessionTestCardProps {
5
- readonly trpc: UseDeviceWebrtcTrpc;
6
- /** The hub base URL the player talks to (the adaptive probe origin). */
7
- readonly serverUrl: string;
8
- /** The camera under test; null until the host picked one. */
9
- readonly deviceId: number | null;
10
- /** The host's camera picker, drawn at the top of the card. */
11
- readonly cameraField?: ReactNode;
12
- /** Length of each run. */
13
- readonly runMs?: number;
5
+ readonly trpc: UseDeviceWebrtcTrpc;
6
+ /** The hub base URL the player talks to (the adaptive probe origin). */
7
+ readonly serverUrl: string;
8
+ /** The camera under test; null until the host picked one. */
9
+ readonly deviceId: number | null;
10
+ /** The host's camera picker, drawn at the top of the card. */
11
+ readonly cameraField?: ReactNode;
12
+ /** Length of each run. */
13
+ readonly runMs?: number;
14
14
  }
15
- export declare const HUB_SESSION_RUN_MS = 15000;
15
+ export declare const HUB_SESSION_RUN_MS = 15e3;
16
16
  /** Pinned targets only, cheapest first: an adaptive target would climb mid-run. */
17
17
  export declare function pinnedStreamChoices(streams: readonly StreamChoice[]): readonly StreamChoice[];
18
- export declare function HubSessionTestCard({ trpc, serverUrl, deviceId, cameraField, runMs, }: HubSessionTestCardProps): ReactNode;
18
+ export declare function HubSessionTestCard({ trpc, serverUrl, deviceId, cameraField, runMs }: HubSessionTestCardProps): ReactNode;
@@ -1,6 +1,11 @@
1
- import { ReactNode } from 'react';
2
- import { HubSessionRunReport } from './session-run';
3
- export declare function RunReport({ report, title, }: {
4
- readonly report: HubSessionRunReport;
5
- readonly title: string;
1
+ /**
2
+ * One hub session run, rendered: the verdict first, then the evidence by
3
+ * layer (hub candidates → timeline → path → media). Every unmeasured value
4
+ * reads "unknown" (D393), never 0.
5
+ */
6
+ import type { ReactNode } from "react";
7
+ import type { HubSessionRunReport } from "./session-run";
8
+ export declare function RunReport({ report, title }: {
9
+ readonly report: HubSessionRunReport;
10
+ readonly title: string;
6
11
  }): ReactNode;
@@ -1,32 +1,52 @@
1
- import { ParsedIceCandidate } from './ice-candidates';
1
+ /**
2
+ * Browser-side probes behind "Test each endpoint" and the NAT mapping check.
3
+ *
4
+ * Everything runs in the operator's browser against real `RTCPeerConnection`s;
5
+ * the only server round-trip is fetching the ICE server list.
6
+ *
7
+ * - `gatherCandidates` — one peer connection, a given server set: which
8
+ * candidate types it produces, which server URL produced each (the ICE
9
+ * event's `url`) and, for a relay, the transport to the TURN server
10
+ * (`relayProtocol`: udp / tcp / tls).
11
+ * - `relayLoopback` — two peer connections in this page, both forced to
12
+ * `relay`: the ONLY way they connect is through the TURN server, so a
13
+ * connect proves allocation and forwarding work, and the selected pair
14
+ * gives the relay RTT and the local relay protocol from `getStats()`.
15
+ * (A same-page loopback with policy `all` proves nothing — the two peers
16
+ * connect host↔host — which is why it is not offered.)
17
+ *
18
+ * Credentials are attached to `turn:`/`turns:` entries only and never leave
19
+ * this module: nothing here logs or returns them.
20
+ */
21
+ import { type ParsedIceCandidate } from "./ice-candidates";
2
22
  /** A single flattened ICE server URL with optional credentials. */
3
23
  export interface IceServerConfig {
4
- readonly url: string;
5
- readonly username?: string;
6
- readonly credential?: string;
24
+ readonly url: string;
25
+ readonly username?: string;
26
+ readonly credential?: string;
7
27
  }
8
28
  export interface ProbedCandidate {
9
- readonly candidate: ParsedIceCandidate;
10
- /** The server URL the browser says produced this candidate; null when not reported. */
11
- readonly url: string | null;
12
- /** udp / tcp / tls between the browser and the TURN server, relay candidates only. */
13
- readonly relayProtocol: string | null;
14
- /** Milliseconds from gather start. */
15
- readonly tMs: number;
29
+ readonly candidate: ParsedIceCandidate;
30
+ /** The server URL the browser says produced this candidate; null when not reported. */
31
+ readonly url: string | null;
32
+ /** udp / tcp / tls between the browser and the TURN server, relay candidates only. */
33
+ readonly relayProtocol: string | null;
34
+ /** Milliseconds from gather start. */
35
+ readonly tMs: number;
16
36
  }
17
37
  export interface GatherResult {
18
- readonly candidates: readonly ProbedCandidate[];
19
- readonly durationMs: number;
20
- readonly timedOut: boolean;
21
- readonly error: string | null;
38
+ readonly candidates: readonly ProbedCandidate[];
39
+ readonly durationMs: number;
40
+ readonly timedOut: boolean;
41
+ readonly error: string | null;
22
42
  }
23
43
  export interface RelayLoopbackResult {
24
- readonly connected: boolean;
25
- readonly state: string;
26
- readonly rttMs: number | null;
27
- readonly relayProtocol: string | null;
28
- readonly durationMs: number;
29
- readonly error: string | null;
44
+ readonly connected: boolean;
45
+ readonly state: string;
46
+ readonly rttMs: number | null;
47
+ readonly relayProtocol: string | null;
48
+ readonly durationMs: number;
49
+ readonly error: string | null;
30
50
  }
31
51
  /** `RTCIceCandidate.relayProtocol` — Chromium and WebKit report it; lib.dom does not type it. */
32
52
  export declare function candidateRelayProtocol(c: RTCIceCandidate): string | null;
@@ -1,43 +1,48 @@
1
- import { GatherResult, IceServerConfig, RelayLoopbackResult } from './endpoint-probe';
2
- import { NatMappingVerdict, SrflxObservation } from './nat-mapping';
3
- export type IceEndpointScheme = 'stun' | 'turn' | 'turns' | 'other';
1
+ /**
2
+ * "Test each endpoint" and the NAT mapping check — the orchestration around
3
+ * the browser probes, with the row derivation kept pure so it is tested
4
+ * without a browser.
5
+ */
6
+ import { type GatherResult, type IceServerConfig, type RelayLoopbackResult } from "./endpoint-probe";
7
+ import { type NatMappingVerdict, type SrflxObservation } from "./nat-mapping";
8
+ export type IceEndpointScheme = "stun" | "turn" | "turns" | "other";
4
9
  export interface IceEndpoint extends IceServerConfig {
5
- /** Stable key: the URL is unique within the flattened list. */
6
- readonly id: string;
7
- readonly scheme: IceEndpointScheme;
8
- /** `?transport=` of the URL, lower-case; null when the URL names none. */
9
- readonly transport: string | null;
10
- readonly hasCredentials: boolean;
10
+ /** Stable key: the URL is unique within the flattened list. */
11
+ readonly id: string;
12
+ readonly scheme: IceEndpointScheme;
13
+ /** `?transport=` of the URL, lower-case; null when the URL names none. */
14
+ readonly transport: string | null;
15
+ readonly hasCredentials: boolean;
11
16
  }
12
17
  /** The shape `turnProvider.getTurnServers` answers. */
13
18
  export interface IceServerEntry {
14
- readonly urls: string | readonly string[];
15
- readonly username?: string;
16
- readonly credential?: string;
19
+ readonly urls: string | readonly string[];
20
+ readonly username?: string;
21
+ readonly credential?: string;
17
22
  }
18
23
  export interface EndpointTestRow {
19
- readonly id: string;
20
- readonly url: string;
21
- readonly scheme: IceEndpointScheme;
22
- readonly transport: string | null;
23
- /** The public mapping a STUN answer gave this browser, `address:port`. */
24
- readonly srflx: string | null;
25
- /** Whether a relay candidate was allocated. */
26
- readonly relay: boolean;
27
- /** udp / tcp / tls to the TURN server — from the loopback's stats, else the candidate. */
28
- readonly relayProtocol: string | null;
29
- /** The URL the browser attributed the srflx / relay candidate to (the ICE event `url`). */
30
- readonly eventUrl: string | null;
31
- /** Relay loopback outcome; null for a STUN endpoint, which cannot relay. */
32
- readonly relayConnected: boolean | null;
33
- readonly rttMs: number | null;
34
- readonly timedOut: boolean;
35
- readonly error: string | null;
24
+ readonly id: string;
25
+ readonly url: string;
26
+ readonly scheme: IceEndpointScheme;
27
+ readonly transport: string | null;
28
+ /** The public mapping a STUN answer gave this browser, `address:port`. */
29
+ readonly srflx: string | null;
30
+ /** Whether a relay candidate was allocated. */
31
+ readonly relay: boolean;
32
+ /** udp / tcp / tls to the TURN server — from the loopback's stats, else the candidate. */
33
+ readonly relayProtocol: string | null;
34
+ /** The URL the browser attributed the srflx / relay candidate to (the ICE event `url`). */
35
+ readonly eventUrl: string | null;
36
+ /** Relay loopback outcome; null for a STUN endpoint, which cannot relay. */
37
+ readonly relayConnected: boolean | null;
38
+ readonly rttMs: number | null;
39
+ readonly timedOut: boolean;
40
+ readonly error: string | null;
36
41
  }
37
42
  export interface NatCheckResult {
38
- readonly destinations: readonly string[];
39
- readonly verdict: NatMappingVerdict;
40
- readonly error: string | null;
43
+ readonly destinations: readonly string[];
44
+ readonly verdict: NatMappingVerdict;
45
+ readonly error: string | null;
41
46
  }
42
47
  /** Queried in addition to the configured STUN servers until two distinct destinations exist. */
43
48
  export declare const FALLBACK_STUN_URLS: readonly string[];
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Rendering helpers for the WebRTC diagnostics: an unmeasured value is the
3
- * word "unknown", never a dash that reads as zero and never a 0 (D393).
4
- */
2
+ * Rendering helpers for the WebRTC diagnostics: an unmeasured value is the
3
+ * word "unknown", never a dash that reads as zero and never a 0 (D393).
4
+ */
5
5
  export declare const UNKNOWN_TEXT = "unknown";
6
6
  export declare function formatMaybe<T>(value: T | null, render: (v: T) => string): string;
7
7
  export declare const fmtMs: (v: number | null) => string;
@@ -1,60 +1,60 @@
1
1
  /**
2
- * ICE candidate parsing for the WebRTC diagnostics.
3
- *
4
- * The hub session test has to answer "what addresses did the HUB offer this
5
- * browser?" — the one fact that decides whether a remote or relay-only client
6
- * can ever reach it. The answer lives in two places: the `a=candidate` lines of
7
- * the hub's answer SDP and the candidates it trickles afterwards
8
- * (`webrtcSession.getIceCandidates`). Both are the RFC 8839 grammar:
9
- *
10
- * candidate:<foundation> <component> <transport> <priority> <address> <port>
11
- * typ <type> [raddr <address> rport <port>] [tcptype <t>] ...
12
- *
13
- * Everything that could not be read stays `null` (D393): a candidate whose
14
- * port did not parse has an unknown port, not port 0.
15
- */
16
- export type IceCandidateType = 'host' | 'srflx' | 'prflx' | 'relay' | 'unknown';
2
+ * ICE candidate parsing for the WebRTC diagnostics.
3
+ *
4
+ * The hub session test has to answer "what addresses did the HUB offer this
5
+ * browser?" — the one fact that decides whether a remote or relay-only client
6
+ * can ever reach it. The answer lives in two places: the `a=candidate` lines of
7
+ * the hub's answer SDP and the candidates it trickles afterwards
8
+ * (`webrtcSession.getIceCandidates`). Both are the RFC 8839 grammar:
9
+ *
10
+ * candidate:<foundation> <component> <transport> <priority> <address> <port>
11
+ * typ <type> [raddr <address> rport <port>] [tcptype <t>] ...
12
+ *
13
+ * Everything that could not be read stays `null` (D393): a candidate whose
14
+ * port did not parse has an unknown port, not port 0.
15
+ */
16
+ export type IceCandidateType = "host" | "srflx" | "prflx" | "relay" | "unknown";
17
17
  /** Where an address is reachable from. `tailscale` is the 100.64.0.0/10
18
- * CGNAT range and Tailscale's `fd7a:115c:a1e0::/48` — reachable only from
19
- * inside that tailnet, exactly like a LAN address. */
20
- export type AddressScope = 'loopback' | 'link-local' | 'lan' | 'tailscale' | 'mdns' | 'public' | 'unknown';
21
- export type AddressFamily = 'ipv4' | 'ipv6' | 'mdns' | 'unknown';
18
+ * CGNAT range and Tailscale's `fd7a:115c:a1e0::/48` — reachable only from
19
+ * inside that tailnet, exactly like a LAN address. */
20
+ export type AddressScope = "loopback" | "link-local" | "lan" | "tailscale" | "mdns" | "public" | "unknown";
21
+ export type AddressFamily = "ipv4" | "ipv6" | "mdns" | "unknown";
22
22
  export interface ParsedIceCandidate {
23
- readonly type: IceCandidateType;
24
- readonly protocol: string | null;
25
- readonly address: string | null;
26
- readonly port: number | null;
27
- readonly relatedAddress: string | null;
28
- readonly relatedPort: number | null;
29
- readonly family: AddressFamily;
30
- readonly scope: AddressScope;
31
- /** The candidate attribute as received, without `a=`. */
32
- readonly raw: string;
23
+ readonly type: IceCandidateType;
24
+ readonly protocol: string | null;
25
+ readonly address: string | null;
26
+ readonly port: number | null;
27
+ readonly relatedAddress: string | null;
28
+ readonly relatedPort: number | null;
29
+ readonly family: AddressFamily;
30
+ readonly scope: AddressScope;
31
+ /** The candidate attribute as received, without `a=`. */
32
+ readonly raw: string;
33
33
  }
34
34
  /**
35
- * How reachable the hub's offered set is from outside its own networks.
36
- * - `public-path`: at least one srflx, relay or public host candidate.
37
- * - `private-only`: candidates exist, all LAN / Tailscale / loopback / mDNS.
38
- * - `none`: the hub answered and offered nothing (yet).
39
- * - `unknown`: no answer was received, so nothing was measured.
40
- */
41
- export type HubReachabilityFlag = 'public-path' | 'private-only' | 'none' | 'unknown';
35
+ * How reachable the hub's offered set is from outside its own networks.
36
+ * - `public-path`: at least one srflx, relay or public host candidate.
37
+ * - `private-only`: candidates exist, all LAN / Tailscale / loopback / mDNS.
38
+ * - `none`: the hub answered and offered nothing (yet).
39
+ * - `unknown`: no answer was received, so nothing was measured.
40
+ */
41
+ export type HubReachabilityFlag = "public-path" | "private-only" | "none" | "unknown";
42
42
  export interface HubCandidateSummary {
43
- readonly candidates: readonly ParsedIceCandidate[];
44
- readonly fromSdp: number;
45
- readonly fromTrickle: number;
46
- readonly countByType: Readonly<Record<IceCandidateType, number>>;
47
- readonly hasSrflx: boolean;
48
- readonly hasRelay: boolean;
49
- readonly hasPublicHost: boolean;
50
- readonly flag: HubReachabilityFlag;
51
- /** Whether the hub reported its gathering complete; null when never asked. */
52
- readonly trickleDone: boolean | null;
43
+ readonly candidates: readonly ParsedIceCandidate[];
44
+ readonly fromSdp: number;
45
+ readonly fromTrickle: number;
46
+ readonly countByType: Readonly<Record<IceCandidateType, number>>;
47
+ readonly hasSrflx: boolean;
48
+ readonly hasRelay: boolean;
49
+ readonly hasPublicHost: boolean;
50
+ readonly flag: HubReachabilityFlag;
51
+ /** Whether the hub reported its gathering complete; null when never asked. */
52
+ readonly trickleDone: boolean | null;
53
53
  }
54
54
  export interface SummarizeHubCandidatesInput {
55
- readonly sdpAnswer: string | null;
56
- readonly trickled: readonly string[];
57
- readonly trickleDone: boolean | null;
55
+ readonly sdpAnswer: string | null;
56
+ readonly trickled: readonly string[];
57
+ readonly trickleDone: boolean | null;
58
58
  }
59
59
  export declare function classifyAddressScope(address: string): AddressScope;
60
60
  /** Parse one candidate attribute (`candidate:…`, with or without `a=`). */
@@ -1,44 +1,44 @@
1
1
  /**
2
- * The cheap client-side NAT mapping check.
3
- *
4
- * One peer connection asks two STUN destinations (two servers, or one server
5
- * on two ports) for its server-reflexive address. Both requests leave from the
6
- * SAME local socket, so:
7
- * - the same public `address:port` from both ⇒ the NAT reuses one mapping for
8
- * every destination (endpoint-independent): a srflx candidate is usable by a
9
- * peer, direct media can work;
10
- * - a different public port per destination ⇒ endpoint-dependent mapping
11
- * ("symmetric NAT"): the mapping the hub would need is never the one STUN
12
- * saw, so only a TURN relay reaches this browser.
13
- *
14
- * Browsers drop a srflx candidate identical to one already gathered, so two
15
- * servers agreeing usually shows as ONE candidate. That is reported as
16
- * `likely`, never `confirmed`, because it cannot be told apart from the second
17
- * server simply not answering.
18
- */
2
+ * The cheap client-side NAT mapping check.
3
+ *
4
+ * One peer connection asks two STUN destinations (two servers, or one server
5
+ * on two ports) for its server-reflexive address. Both requests leave from the
6
+ * SAME local socket, so:
7
+ * - the same public `address:port` from both ⇒ the NAT reuses one mapping for
8
+ * every destination (endpoint-independent): a srflx candidate is usable by a
9
+ * peer, direct media can work;
10
+ * - a different public port per destination ⇒ endpoint-dependent mapping
11
+ * ("symmetric NAT"): the mapping the hub would need is never the one STUN
12
+ * saw, so only a TURN relay reaches this browser.
13
+ *
14
+ * Browsers drop a srflx candidate identical to one already gathered, so two
15
+ * servers agreeing usually shows as ONE candidate. That is reported as
16
+ * `likely`, never `confirmed`, because it cannot be told apart from the second
17
+ * server simply not answering.
18
+ */
19
19
  export interface SrflxObservation {
20
- readonly address: string;
21
- readonly port: number;
22
- readonly protocol: string;
23
- /** The local base (`raddr` / `rport`); `0.0.0.0` / `0` when the browser hides it. */
24
- readonly relatedAddress: string | null;
25
- readonly relatedPort: number | null;
26
- /** The STUN URL that produced it (`RTCPeerConnectionIceEvent.url`), when reported. */
27
- readonly url: string | null;
20
+ readonly address: string;
21
+ readonly port: number;
22
+ readonly protocol: string;
23
+ /** The local base (`raddr` / `rport`); `0.0.0.0` / `0` when the browser hides it. */
24
+ readonly relatedAddress: string | null;
25
+ readonly relatedPort: number | null;
26
+ /** The STUN URL that produced it (`RTCPeerConnectionIceEvent.url`), when reported. */
27
+ readonly url: string | null;
28
28
  }
29
- export type NatMappingKind = 'endpoint-independent' | 'endpoint-dependent' | 'unknown';
30
- export type NatMappingConfidence = 'confirmed' | 'likely' | 'none';
29
+ export type NatMappingKind = "endpoint-independent" | "endpoint-dependent" | "unknown";
30
+ export type NatMappingConfidence = "confirmed" | "likely" | "none";
31
31
  export interface NatMappingVerdict {
32
- readonly kind: NatMappingKind;
33
- readonly confidence: NatMappingConfidence;
34
- readonly reason: string;
35
- /** Distinct public mappings seen per local base, e.g. `["203.0.113.7:61000"]`. */
36
- readonly mappings: readonly string[];
32
+ readonly kind: NatMappingKind;
33
+ readonly confidence: NatMappingConfidence;
34
+ readonly reason: string;
35
+ /** Distinct public mappings seen per local base, e.g. `["203.0.113.7:61000"]`. */
36
+ readonly mappings: readonly string[];
37
37
  }
38
38
  /**
39
- * The distinct STUN destinations (`stun:host:port`) among the given URLs —
40
- * the number the check needs to be at least two. TURN URLs are excluded:
41
- * this check is about plain STUN binding.
42
- */
39
+ * The distinct STUN destinations (`stun:host:port`) among the given URLs —
40
+ * the number the check needs to be at least two. TURN URLs are excluded:
41
+ * this check is about plain STUN binding.
42
+ */
43
43
  export declare function distinctStunDestinations(urls: readonly string[]): readonly string[];
44
44
  export declare function compareSrflxMappings(observations: readonly SrflxObservation[], stunDestinationsQueried: number): NatMappingVerdict;