@camstack/ui-library 1.2.299 → 1.2.301

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/dist/index.js CHANGED
@@ -2161,6 +2161,54 @@ var Hash = createLucideIcon("hash", [
2161
2161
  * This source code is licensed under the ISC license.
2162
2162
  * See the LICENSE file in the root directory of this source tree.
2163
2163
  */
2164
+ var Heater = createLucideIcon("heater", [
2165
+ ["path", {
2166
+ d: "M11 8c2-3-2-3 0-6",
2167
+ key: "1ldv5m"
2168
+ }],
2169
+ ["path", {
2170
+ d: "M15.5 8c2-3-2-3 0-6",
2171
+ key: "1otqoz"
2172
+ }],
2173
+ ["path", {
2174
+ d: "M6 10h.01",
2175
+ key: "1lbq93"
2176
+ }],
2177
+ ["path", {
2178
+ d: "M6 14h.01",
2179
+ key: "zudwn7"
2180
+ }],
2181
+ ["path", {
2182
+ d: "M10 16v-4",
2183
+ key: "1c25yv"
2184
+ }],
2185
+ ["path", {
2186
+ d: "M14 16v-4",
2187
+ key: "1dkbt8"
2188
+ }],
2189
+ ["path", {
2190
+ d: "M18 16v-4",
2191
+ key: "1yg9me"
2192
+ }],
2193
+ ["path", {
2194
+ d: "M20 6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3",
2195
+ key: "1ubg90"
2196
+ }],
2197
+ ["path", {
2198
+ d: "M5 20v2",
2199
+ key: "1abpe8"
2200
+ }],
2201
+ ["path", {
2202
+ d: "M19 20v2",
2203
+ key: "kqn6ft"
2204
+ }]
2205
+ ]);
2206
+ /**
2207
+ * @license lucide-react v0.576.0 - ISC
2208
+ *
2209
+ * This source code is licensed under the ISC license.
2210
+ * See the LICENSE file in the root directory of this source tree.
2211
+ */
2164
2212
  var House = createLucideIcon("house", [["path", {
2165
2213
  d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",
2166
2214
  key: "5wwlr5"
@@ -4149,6 +4197,34 @@ var Thermometer = createLucideIcon("thermometer", [["path", {
4149
4197
  * This source code is licensed under the ISC license.
4150
4198
  * See the LICENSE file in the root directory of this source tree.
4151
4199
  */
4200
+ var Timer = createLucideIcon("timer", [
4201
+ ["line", {
4202
+ x1: "10",
4203
+ x2: "14",
4204
+ y1: "2",
4205
+ y2: "2",
4206
+ key: "14vaq8"
4207
+ }],
4208
+ ["line", {
4209
+ x1: "12",
4210
+ x2: "15",
4211
+ y1: "14",
4212
+ y2: "11",
4213
+ key: "17fdiu"
4214
+ }],
4215
+ ["circle", {
4216
+ cx: "12",
4217
+ cy: "14",
4218
+ r: "8",
4219
+ key: "1e1u0o"
4220
+ }]
4221
+ ]);
4222
+ /**
4223
+ * @license lucide-react v0.576.0 - ISC
4224
+ *
4225
+ * This source code is licensed under the ISC license.
4226
+ * See the LICENSE file in the root directory of this source tree.
4227
+ */
4152
4228
  var ToggleLeft = createLucideIcon("toggle-left", [["circle", {
4153
4229
  cx: "9",
4154
4230
  cy: "12",
@@ -5251,6 +5327,11 @@ var DEVICE_TYPE_META = {
5251
5327
  icon: Bone,
5252
5328
  labelKey: "uiLibrary.deviceMeta.type.petFeeder",
5253
5329
  labelFallback: "Pet feeder"
5330
+ },
5331
+ [DeviceType.Dishwasher]: {
5332
+ icon: Waves,
5333
+ labelKey: "uiLibrary.deviceMeta.type.dishwasher",
5334
+ labelFallback: "Dishwasher"
5254
5335
  }
5255
5336
  };
5256
5337
  var DEVICE_ROLE_META = {
@@ -5732,7 +5813,7 @@ function lucideExportName(key) {
5732
5813
  function loadIconGlyphs() {
5733
5814
  if (fullTable !== void 0) return Promise.resolve();
5734
5815
  if (failure !== void 0) return Promise.reject(failure);
5735
- pending ??= import("./icons-BXXScOuy.js").then((module) => {
5816
+ pending ??= import("./icons-BT8c2hxp.js").then((module) => {
5736
5817
  fullTable = module;
5737
5818
  publish();
5738
5819
  }, (error) => {
@@ -10907,6 +10988,32 @@ var useDeviceStateListClaims = trpc.deviceState.listClaims.useQuery;
10907
10988
  var useDeviceStateGetNativeCapSlice = trpc.deviceState.getNativeCapSlice.useQuery;
10908
10989
  /** Generated alias around `trpc.deviceStatus.getStatus.useQuery`. */
10909
10990
  var useDeviceStatusGetStatus = trpc.deviceStatus.getStatus.useQuery;
10991
+ /** Generated alias around `trpc.dishwasher.start.useMutation`. */
10992
+ var useDishwasherStart = trpc.dishwasher.start.useMutation;
10993
+ /** Generated alias around `trpc.dishwasher.pause.useMutation`. */
10994
+ var useDishwasherPause = trpc.dishwasher.pause.useMutation;
10995
+ /** Generated alias around `trpc.dishwasher.stop.useMutation`. */
10996
+ var useDishwasherStop = trpc.dishwasher.stop.useMutation;
10997
+ /** Generated alias around `trpc.dishwasher.setProgram.useMutation`. */
10998
+ var useDishwasherSetProgram = trpc.dishwasher.setProgram.useMutation;
10999
+ /** Generated alias around `trpc.dishwasher.setPower.useMutation`. */
11000
+ var useDishwasherSetPower = trpc.dishwasher.setPower.useMutation;
11001
+ /** Generated alias around `trpc.dishwasher.setHalfLoad.useMutation`. */
11002
+ var useDishwasherSetHalfLoad = trpc.dishwasher.setHalfLoad.useMutation;
11003
+ /** Generated alias around `trpc.dishwasher.setHygienePlus.useMutation`. */
11004
+ var useDishwasherSetHygienePlus = trpc.dishwasher.setHygienePlus.useMutation;
11005
+ /** Generated alias around `trpc.dishwasher.setExtraDry.useMutation`. */
11006
+ var useDishwasherSetExtraDry = trpc.dishwasher.setExtraDry.useMutation;
11007
+ /** Generated alias around `trpc.dishwasher.setIntensiveZone.useMutation`. */
11008
+ var useDishwasherSetIntensiveZone = trpc.dishwasher.setIntensiveZone.useMutation;
11009
+ /** Generated alias around `trpc.dishwasher.setVarioSpeedPlus.useMutation`. */
11010
+ var useDishwasherSetVarioSpeedPlus = trpc.dishwasher.setVarioSpeedPlus.useMutation;
11011
+ /** Generated alias around `trpc.dishwasher.setChildLock.useMutation`. */
11012
+ var useDishwasherSetChildLock = trpc.dishwasher.setChildLock.useMutation;
11013
+ /** Generated alias around `trpc.dishwasher.setOption.useMutation`. */
11014
+ var useDishwasherSetOption = trpc.dishwasher.setOption.useMutation;
11015
+ /** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
11016
+ var useDishwasherGetStatus = trpc.dishwasher.getStatus.useQuery;
10910
11017
  /** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
10911
11018
  var useDoorbellGetStatus = trpc.doorbell.getStatus.useQuery;
10912
11019
  /** Generated alias around `trpc.enumSensor.getStatus.useQuery`. */
@@ -10961,6 +11068,8 @@ var useFeatureProbeGetStatus = trpc.featureProbe.getStatus.useQuery;
10961
11068
  var useFloodGetStatus = trpc.flood.getStatus.useQuery;
10962
11069
  /** Generated alias around `trpc.gas.getStatus.useQuery`. */
10963
11070
  var useGasGetStatus = trpc.gas.getStatus.useQuery;
11071
+ /** Generated alias around `trpc.heatingValve.getStatus.useQuery`. */
11072
+ var useHeatingValveGetStatus = trpc.heatingValve.getStatus.useQuery;
10964
11073
  /** Generated alias around `trpc.humidifier.setOn.useMutation`. */
10965
11074
  var useHumidifierSetOn = trpc.humidifier.setOn.useMutation;
10966
11075
  /** Generated alias around `trpc.humidifier.setTargetHumidity.useMutation`. */
@@ -26254,8 +26363,8 @@ function RecordingPanel({ deviceId }) {
26254
26363
  * `type:'widget'` ConfigField. `WidgetSlot` resolves these BEFORE the
26255
26364
  * Module-Federation `WidgetRegistry`. ids are namespaced `host/<name>`. */
26256
26365
  var HOST_WIDGETS = {
26257
- "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-Bv8XzCa3.js").then((m) => ({ default: m.MotionZonesSettings }))),
26258
- "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-BlkbESYj.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
26366
+ "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-C3Tj12yc.js").then((m) => ({ default: m.MotionZonesSettings }))),
26367
+ "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
26259
26368
  "host/ptz-panel": PtzPanel,
26260
26369
  "host/navigation-panel": NavigationPanel,
26261
26370
  "host/consumables-panel": ConsumablesPanel,
@@ -28791,7 +28900,7 @@ function AddonActionSelectField({ field, value, values, onChange, disabled, onAc
28791
28900
  })()
28792
28901
  });
28793
28902
  }
28794
- function AddonActionButtonField({ field, values, disabled, onAction }) {
28903
+ function AddonActionButtonField({ field, values, disabled, onAction, onChange, onChangeMany }) {
28795
28904
  const t = useUiText();
28796
28905
  const [loading, setLoading] = useState(false);
28797
28906
  const [status, setStatus] = useState(null);
@@ -28823,6 +28932,17 @@ function AddonActionButtonField({ field, values, disabled, onAction }) {
28823
28932
  try {
28824
28933
  const result = await onAction(field.action, field.key, params);
28825
28934
  const resultRecord = typeof result === "object" && result !== null ? result : null;
28935
+ if (resultRecord !== null && field.assignResult && (onChange || onChangeMany)) {
28936
+ const patch = {};
28937
+ for (const [formKey, resultKey] of Object.entries(field.assignResult)) {
28938
+ const assigned = resultRecord[resultKey];
28939
+ if (typeof assigned === "string") patch[formKey] = assigned;
28940
+ }
28941
+ if (Object.keys(patch).length > 0) {
28942
+ if (onChangeMany) onChangeMany(patch);
28943
+ else if (onChange) for (const [formKey, assigned] of Object.entries(patch)) onChange(formKey, assigned);
28944
+ }
28945
+ }
28826
28946
  setStatus({
28827
28947
  kind: "ok",
28828
28948
  text: field.successMessage ? field.successMessage.replace(/\{(\w+)\}/g, (_, k) => {
@@ -29171,7 +29291,7 @@ function isFieldVisible(field, values, allFields) {
29171
29291
  if (condition.notIncludes !== void 0) return !Array.isArray(condVal) || !condVal.includes(condition.notIncludes);
29172
29292
  return true;
29173
29293
  }
29174
- function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction }) {
29294
+ function FormField({ field, values, onChange, onChangeMany, disabled, translationFn, onTestField, externalProbe, allFields, onAction }) {
29175
29295
  if (hasMultiple(field)) return /* @__PURE__ */ jsx(MultipleFieldWrapper, {
29176
29296
  field,
29177
29297
  values,
@@ -29407,7 +29527,9 @@ function FormField({ field, values, onChange, disabled, translationFn, onTestFie
29407
29527
  field,
29408
29528
  values,
29409
29529
  disabled,
29410
- onAction
29530
+ onAction,
29531
+ onChange,
29532
+ onChangeMany
29411
29533
  });
29412
29534
  case "device-action-button": return /* @__PURE__ */ jsx(DeviceActionButtonField, {
29413
29535
  field,
@@ -42890,6 +43012,19 @@ function FanPanel({ trpc, deviceId, features, layout, optimistic }) {
42890
43012
  }
42891
43013
  //#endregion
42892
43014
  //#region src/composites/device-controls/climate-panel.tsx
43015
+ /** Step size for target ± buttons; defaults to 1 °C when unset or invalid. */
43016
+ function resolveClimateTempStep(tempStep) {
43017
+ if (typeof tempStep === "number" && Number.isFinite(tempStep) && tempStep > 0) return tempStep;
43018
+ return 1;
43019
+ }
43020
+ function nextClimateTarget(current, deltaSteps, display) {
43021
+ let next = current + deltaSteps * resolveClimateTempStep(display.tempStep);
43022
+ const min = display.minTemp;
43023
+ const max = display.maxTemp;
43024
+ if (typeof min === "number" && Number.isFinite(min)) next = Math.max(next, min);
43025
+ if (typeof max === "number" && Number.isFinite(max)) next = Math.min(next, max);
43026
+ return next;
43027
+ }
42893
43028
  /**
42894
43029
  * Exhaustive colour map — one entry per HvacMode. Build will fail if a
42895
43030
  * mode is added to the enum and not reflected here (Record<HvacMode, ...>
@@ -42970,7 +43105,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
42970
43105
  onClick: (e) => {
42971
43106
  e.stopPropagation();
42972
43107
  if (!busy && display.target !== null) {
42973
- const next = display.target - 1;
43108
+ const next = nextClimateTarget(display.target, -1, display);
42974
43109
  applyOptimistic({ target: next });
42975
43110
  cap.setTarget({ target: next });
42976
43111
  }
@@ -42984,7 +43119,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
42984
43119
  onClick: (e) => {
42985
43120
  e.stopPropagation();
42986
43121
  if (!busy && display.target !== null) {
42987
- const next = display.target + 1;
43122
+ const next = nextClimateTarget(display.target, 1, display);
42988
43123
  applyOptimistic({ target: next });
42989
43124
  cap.setTarget({ target: next });
42990
43125
  }
@@ -43039,7 +43174,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
43039
43174
  onClick: (e) => {
43040
43175
  e.stopPropagation();
43041
43176
  if (!busy && display.target !== null) {
43042
- const next = display.target - 1;
43177
+ const next = nextClimateTarget(display.target, -1, display);
43043
43178
  applyOptimistic({ target: next });
43044
43179
  cap.setTarget({ target: next });
43045
43180
  }
@@ -43054,7 +43189,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
43054
43189
  onClick: (e) => {
43055
43190
  e.stopPropagation();
43056
43191
  if (!busy && display.target !== null) {
43057
- const next = display.target + 1;
43192
+ const next = nextClimateTarget(display.target, 1, display);
43058
43193
  applyOptimistic({ target: next });
43059
43194
  cap.setTarget({ target: next });
43060
43195
  }
@@ -43712,7 +43847,8 @@ var CONTROL_CAP_NAMES = [
43712
43847
  "climate-control",
43713
43848
  "media-player",
43714
43849
  "control",
43715
- "pet-feeder"
43850
+ "pet-feeder",
43851
+ "dishwasher"
43716
43852
  ];
43717
43853
  //#endregion
43718
43854
  //#region src/composites/device-controls/popover-row-action.tsx
@@ -48523,7 +48659,462 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
48523
48659
  });
48524
48660
  }
48525
48661
  //#endregion
48662
+ //#region src/composites/device-controls/dishwasher-control.tsx
48663
+ /**
48664
+ * Dishwasher controls for a `DeviceType.Dishwasher` device.
48665
+ *
48666
+ * Reads the `dishwasher` cap status slice and renders inline + hero surfaces
48667
+ * mirroring vacuum-control / pet-feeder patterns.
48668
+ */
48669
+ function dishwasherStateMeta(state, t = defaultUiText) {
48670
+ switch (state) {
48671
+ case "running": return {
48672
+ label: t("uiLibrary.dishwasher.running", "Running"),
48673
+ tone: "text-primary"
48674
+ };
48675
+ case "paused": return {
48676
+ label: t("uiLibrary.dishwasher.paused", "Paused"),
48677
+ tone: "text-warning"
48678
+ };
48679
+ case "finished": return {
48680
+ label: t("uiLibrary.dishwasher.finished", "Finished"),
48681
+ tone: "text-success"
48682
+ };
48683
+ case "error": return {
48684
+ label: t("uiLibrary.dishwasher.error", "Error"),
48685
+ tone: "text-destructive"
48686
+ };
48687
+ case "unavailable": return {
48688
+ label: t("uiLibrary.dishwasher.unavailable", "Unavailable"),
48689
+ tone: "text-foreground-subtle"
48690
+ };
48691
+ case "idle": return {
48692
+ label: t("uiLibrary.dishwasher.idle", "Idle"),
48693
+ tone: "text-foreground-subtle"
48694
+ };
48695
+ case void 0: return {
48696
+ label: t("uiLibrary.dishwasher.unknown", "Unknown"),
48697
+ tone: "text-foreground-subtle"
48698
+ };
48699
+ }
48700
+ }
48701
+ function consumableTone(level) {
48702
+ switch (level) {
48703
+ case "ok": return "text-success";
48704
+ case "low": return "text-warning";
48705
+ case "empty": return "text-destructive";
48706
+ case null: return "text-foreground-subtle";
48707
+ }
48708
+ }
48709
+ function useDishwasher(trpc, deviceId) {
48710
+ return useDeviceCapability({
48711
+ trpc,
48712
+ deviceId,
48713
+ cap: (d) => d.dishwasher,
48714
+ slice: (d) => d.state.dishwasher
48715
+ });
48716
+ }
48717
+ function DishwasherIconButton({ label, busy, active, onClick, children }) {
48718
+ return /* @__PURE__ */ jsx("button", {
48719
+ type: "button",
48720
+ "aria-label": label,
48721
+ title: label,
48722
+ disabled: busy,
48723
+ onClick: (e) => {
48724
+ e.stopPropagation();
48725
+ onClick();
48726
+ },
48727
+ className: cn("inline-flex h-5 w-5 items-center justify-center rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors", active && "bg-primary text-primary-foreground", busy && "opacity-40 cursor-not-allowed"),
48728
+ children
48729
+ });
48730
+ }
48731
+ function ConsumableBadge({ label, level }) {
48732
+ if (level === null) return null;
48733
+ return /* @__PURE__ */ jsxs("span", {
48734
+ className: cn("text-xs font-medium capitalize", consumableTone(level)),
48735
+ children: [
48736
+ label,
48737
+ ": ",
48738
+ level
48739
+ ]
48740
+ });
48741
+ }
48742
+ function DishwasherGraphic({ state, progressPercent }) {
48743
+ const running = state === "running";
48744
+ const pct = progressPercent != null ? Math.max(0, Math.min(100, progressPercent)) : running ? 40 : 0;
48745
+ return /* @__PURE__ */ jsxs("div", {
48746
+ "aria-hidden": "true",
48747
+ className: "relative w-28 h-36 rounded border-2 border-border bg-gradient-to-b from-surface-hover to-surface overflow-hidden flex-shrink-0",
48748
+ style: { boxShadow: "inset 0 0 0 2px rgba(255,255,255,.06)" },
48749
+ children: [/* @__PURE__ */ jsx("div", {
48750
+ className: cn("absolute inset-x-0 bottom-0 bg-primary/25 transition-[height] duration-500", running && "animate-pulse"),
48751
+ style: { height: `${pct}%` }
48752
+ }), /* @__PURE__ */ jsx("div", {
48753
+ className: "absolute inset-0 flex items-center justify-center text-foreground-subtle",
48754
+ children: /* @__PURE__ */ jsx(Waves, { className: "h-10 w-10 opacity-70" })
48755
+ })]
48756
+ });
48757
+ }
48758
+ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48759
+ const t = useUiText();
48760
+ const { cap, slice, available } = useDishwasher(trpc, deviceId);
48761
+ const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
48762
+ if (cap === void 0) return null;
48763
+ if (display === void 0) return null;
48764
+ const busy = !available;
48765
+ const optionTogglesLocked = display.childLock === true;
48766
+ const meta = dishwasherStateMeta(display.state, t);
48767
+ const running = display.state === "running";
48768
+ const paused = display.state === "paused";
48769
+ const press = (fn, patch) => {
48770
+ if (busy) return;
48771
+ applyOptimistic(patch);
48772
+ fn();
48773
+ };
48774
+ if (layout === "compact") {
48775
+ const saltWarn = display.saltLevel === "low" || display.saltLevel === "empty";
48776
+ const rinseWarn = display.rinseAidLevel === "low" || display.rinseAidLevel === "empty";
48777
+ return /* @__PURE__ */ jsxs("div", {
48778
+ className: "inline-flex items-center gap-1.5 max-w-full",
48779
+ children: [
48780
+ display.doorOpen && /* @__PURE__ */ jsx("span", {
48781
+ className: "inline-flex text-warning shrink-0",
48782
+ title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
48783
+ "aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
48784
+ children: /* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" })
48785
+ }),
48786
+ /* @__PURE__ */ jsx("span", {
48787
+ className: cn("text-xs font-medium tabular-nums shrink-0", meta.tone),
48788
+ children: meta.label
48789
+ }),
48790
+ display.program != null && /* @__PURE__ */ jsx("span", {
48791
+ className: "text-xs text-foreground-subtle truncate max-w-[7rem]",
48792
+ title: display.program,
48793
+ children: display.program
48794
+ }),
48795
+ display.remainingMinutes != null && /* @__PURE__ */ jsxs("span", {
48796
+ className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums shrink-0",
48797
+ children: [
48798
+ /* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }),
48799
+ display.remainingMinutes,
48800
+ "m"
48801
+ ]
48802
+ }),
48803
+ saltWarn && /* @__PURE__ */ jsx("span", {
48804
+ className: cn("text-[10px] font-medium shrink-0", consumableTone(display.saltLevel)),
48805
+ children: t("uiLibrary.dishwasher.salt", "Salt")
48806
+ }),
48807
+ rinseWarn && /* @__PURE__ */ jsx("span", {
48808
+ className: cn("text-[10px] font-medium shrink-0", consumableTone(display.rinseAidLevel)),
48809
+ children: t("uiLibrary.dishwasher.rinseAid", "Rinse")
48810
+ }),
48811
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48812
+ label: t("uiLibrary.dishwasher.start", "Start"),
48813
+ busy: busy || !display.remoteStartAllowed,
48814
+ active: running,
48815
+ onClick: () => press(() => cap.start({}), {
48816
+ state: "running",
48817
+ remoteStartAllowed: false
48818
+ }),
48819
+ children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
48820
+ }),
48821
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48822
+ label: t("uiLibrary.dishwasher.pause", "Pause"),
48823
+ busy: busy || !running,
48824
+ active: paused,
48825
+ onClick: () => press(() => cap.pause({}), { state: "paused" }),
48826
+ children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
48827
+ })
48828
+ ]
48829
+ });
48830
+ }
48831
+ const programs = display.availablePrograms;
48832
+ return /* @__PURE__ */ jsxs("div", {
48833
+ className: "flex flex-col gap-3 rounded-lg border border-border bg-surface p-4",
48834
+ children: [
48835
+ /* @__PURE__ */ jsxs("div", {
48836
+ className: "flex items-start gap-4",
48837
+ children: [/* @__PURE__ */ jsx(DishwasherGraphic, {
48838
+ state: display.state,
48839
+ progressPercent: display.progressPercent
48840
+ }), /* @__PURE__ */ jsxs("div", {
48841
+ className: "flex min-w-0 flex-1 flex-col gap-2",
48842
+ children: [
48843
+ /* @__PURE__ */ jsxs("div", {
48844
+ className: "flex flex-wrap items-center gap-2",
48845
+ children: [/* @__PURE__ */ jsx("span", {
48846
+ className: cn("text-3xl font-semibold", meta.tone),
48847
+ children: meta.label
48848
+ }), !display.powerOn && /* @__PURE__ */ jsx("span", {
48849
+ className: "text-xs font-medium text-foreground-subtle",
48850
+ children: t("uiLibrary.dishwasher.powerOff", "Power off")
48851
+ })]
48852
+ }),
48853
+ display.program != null && /* @__PURE__ */ jsx("span", {
48854
+ className: "text-sm text-foreground-subtle",
48855
+ children: display.program
48856
+ }),
48857
+ display.progressPercent != null && /* @__PURE__ */ jsxs("div", {
48858
+ className: "flex items-center gap-2",
48859
+ children: [/* @__PURE__ */ jsx("div", {
48860
+ className: "h-1.5 flex-1 rounded bg-surface-hover overflow-hidden",
48861
+ children: /* @__PURE__ */ jsx("div", {
48862
+ className: "h-full bg-primary transition-[width] duration-500",
48863
+ style: { width: `${Math.max(0, Math.min(100, display.progressPercent))}%` }
48864
+ })
48865
+ }), /* @__PURE__ */ jsxs("span", {
48866
+ className: "tabular-nums text-xs text-foreground-subtle",
48867
+ children: [Math.round(display.progressPercent), "%"]
48868
+ })]
48869
+ }),
48870
+ /* @__PURE__ */ jsxs("div", {
48871
+ className: "flex flex-wrap gap-3",
48872
+ children: [
48873
+ /* @__PURE__ */ jsx(ConsumableBadge, {
48874
+ label: t("uiLibrary.dishwasher.salt", "Salt"),
48875
+ level: display.saltLevel
48876
+ }),
48877
+ /* @__PURE__ */ jsx(ConsumableBadge, {
48878
+ label: t("uiLibrary.dishwasher.rinseAid", "Rinse aid"),
48879
+ level: display.rinseAidLevel
48880
+ }),
48881
+ display.doorOpen && /* @__PURE__ */ jsxs("span", {
48882
+ className: "inline-flex items-center gap-1 text-xs text-warning",
48883
+ children: [/* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.doorOpen", "Door open")]
48884
+ })
48885
+ ]
48886
+ }),
48887
+ display.errorCode != null && display.errorCode !== 0 && /* @__PURE__ */ jsxs("div", {
48888
+ className: "inline-flex items-center gap-1 text-xs text-destructive",
48889
+ children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: display.errorLabel ?? t("uiLibrary.dishwasher.errorCode", "Error {{code}}", { code: display.errorCode }) })]
48890
+ }),
48891
+ /* @__PURE__ */ jsxs("div", {
48892
+ className: "flex flex-wrap items-center gap-2",
48893
+ children: [
48894
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48895
+ label: t("uiLibrary.dishwasher.start", "Start"),
48896
+ busy: busy || !display.remoteStartAllowed,
48897
+ active: running,
48898
+ onClick: () => press(() => cap.start({}), {
48899
+ state: "running",
48900
+ remoteStartAllowed: false
48901
+ }),
48902
+ children: /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" })
48903
+ }),
48904
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48905
+ label: t("uiLibrary.dishwasher.pause", "Pause"),
48906
+ busy: busy || !running,
48907
+ active: paused,
48908
+ onClick: () => press(() => cap.pause({}), { state: "paused" }),
48909
+ children: /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" })
48910
+ }),
48911
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48912
+ label: t("uiLibrary.dishwasher.stop", "Stop"),
48913
+ busy,
48914
+ active: false,
48915
+ onClick: () => press(() => cap.stop({}), {
48916
+ state: "idle",
48917
+ remainingMinutes: null
48918
+ }),
48919
+ children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
48920
+ }),
48921
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48922
+ label: t("uiLibrary.dishwasher.power", "Power"),
48923
+ busy,
48924
+ active: display.powerOn,
48925
+ onClick: () => {
48926
+ const next = !display.powerOn;
48927
+ press(() => cap.setPower({ on: next }), { powerOn: next });
48928
+ },
48929
+ children: /* @__PURE__ */ jsx(Power, { className: "h-4 w-4" })
48930
+ })
48931
+ ]
48932
+ })
48933
+ ]
48934
+ })]
48935
+ }),
48936
+ programs.length > 0 && /* @__PURE__ */ jsxs("label", {
48937
+ className: "flex items-center gap-2 text-xs text-foreground-subtle",
48938
+ children: [/* @__PURE__ */ jsx("span", {
48939
+ className: "w-16 shrink-0",
48940
+ children: t("uiLibrary.dishwasher.program", "Program")
48941
+ }), /* @__PURE__ */ jsxs("select", {
48942
+ "aria-label": t("uiLibrary.dishwasher.program", "Program"),
48943
+ value: display.program ?? "",
48944
+ disabled: busy,
48945
+ onChange: (e) => {
48946
+ const program = e.target.value;
48947
+ if (!program) return;
48948
+ applyOptimistic({ program });
48949
+ cap.setProgram({ program });
48950
+ },
48951
+ onClick: (e) => {
48952
+ e.stopPropagation();
48953
+ },
48954
+ className: "flex-1 rounded border border-border bg-surface px-2 py-1 text-foreground disabled:opacity-50",
48955
+ children: [display.program == null && /* @__PURE__ */ jsx("option", {
48956
+ value: "",
48957
+ children: "—"
48958
+ }), programs.map((p) => /* @__PURE__ */ jsx("option", {
48959
+ value: p,
48960
+ children: p
48961
+ }, p))]
48962
+ })]
48963
+ }),
48964
+ /* @__PURE__ */ jsxs("div", {
48965
+ className: "flex flex-wrap gap-4 text-xs",
48966
+ children: [
48967
+ /* @__PURE__ */ jsx(ToggleRow, {
48968
+ label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
48969
+ checked: display.halfLoad,
48970
+ busy: busy || optionTogglesLocked,
48971
+ onChange: (on) => {
48972
+ applyOptimistic({ halfLoad: on });
48973
+ cap.setHalfLoad({ on });
48974
+ }
48975
+ }),
48976
+ /* @__PURE__ */ jsx(ToggleRow, {
48977
+ label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
48978
+ checked: display.hygienePlus,
48979
+ busy: busy || optionTogglesLocked,
48980
+ onChange: (on) => {
48981
+ applyOptimistic({ hygienePlus: on });
48982
+ cap.setHygienePlus({ on });
48983
+ }
48984
+ }),
48985
+ /* @__PURE__ */ jsx(ToggleRow, {
48986
+ label: t("uiLibrary.dishwasher.extraDry", "Extra dry"),
48987
+ checked: display.extraDry,
48988
+ busy: busy || optionTogglesLocked,
48989
+ onChange: (on) => {
48990
+ applyOptimistic({ extraDry: on });
48991
+ cap.setExtraDry({ on });
48992
+ }
48993
+ }),
48994
+ /* @__PURE__ */ jsx(ToggleRow, {
48995
+ label: t("uiLibrary.dishwasher.intensiveZone", "Intensive zone"),
48996
+ checked: display.intensiveZone,
48997
+ busy: busy || optionTogglesLocked,
48998
+ onChange: (on) => {
48999
+ applyOptimistic({ intensiveZone: on });
49000
+ cap.setIntensiveZone({ on });
49001
+ }
49002
+ }),
49003
+ /* @__PURE__ */ jsx(ToggleRow, {
49004
+ label: t("uiLibrary.dishwasher.varioSpeedPlus", "VarioSpeed+"),
49005
+ checked: display.varioSpeedPlus,
49006
+ busy: busy || optionTogglesLocked,
49007
+ onChange: (on) => {
49008
+ applyOptimistic({ varioSpeedPlus: on });
49009
+ cap.setVarioSpeedPlus({ on });
49010
+ }
49011
+ }),
49012
+ /* @__PURE__ */ jsx(ToggleRow, {
49013
+ label: t("uiLibrary.dishwasher.childLock", "Child lock"),
49014
+ checked: display.childLock,
49015
+ busy,
49016
+ onChange: (on) => {
49017
+ applyOptimistic({ childLock: on });
49018
+ cap.setChildLock({ on });
49019
+ }
49020
+ })
49021
+ ]
49022
+ })
49023
+ ]
49024
+ });
49025
+ }
49026
+ function ToggleRow({ label, checked, busy, onChange }) {
49027
+ return /* @__PURE__ */ jsxs("label", {
49028
+ className: "inline-flex items-center gap-2 cursor-pointer",
49029
+ children: [/* @__PURE__ */ jsx("input", {
49030
+ type: "checkbox",
49031
+ checked,
49032
+ disabled: busy,
49033
+ onChange: (e) => {
49034
+ onChange(e.target.checked);
49035
+ },
49036
+ onClick: (e) => {
49037
+ e.stopPropagation();
49038
+ },
49039
+ className: "rounded border-border"
49040
+ }), /* @__PURE__ */ jsx("span", { children: label })]
49041
+ });
49042
+ }
49043
+ function DishwasherInlineControl(props) {
49044
+ return /* @__PURE__ */ jsx(DishwasherPanel, {
49045
+ ...props,
49046
+ layout: "compact"
49047
+ });
49048
+ }
49049
+ function DishwasherHeroCard(props) {
49050
+ return /* @__PURE__ */ jsx(DishwasherPanel, {
49051
+ ...props,
49052
+ layout: "full"
49053
+ });
49054
+ }
49055
+ //#endregion
49056
+ //#region src/composites/device-controls/heating-valve-readout.tsx
49057
+ function formatHeatingValvePosition(position) {
49058
+ return position !== null ? `${position}%` : "—";
49059
+ }
49060
+ function HeatingValveReadout({ trpc, deviceId, layout }) {
49061
+ const t = useUiText();
49062
+ const { cap, slice } = useDeviceCapability({
49063
+ trpc,
49064
+ deviceId,
49065
+ cap: (d) => d.heatingValve,
49066
+ slice: (d) => d.state.heatingValve
49067
+ });
49068
+ if (cap === void 0 || slice === void 0) return null;
49069
+ const label = t("uiLibrary.heatingValveReadout.valve", "Valve");
49070
+ const value = formatHeatingValvePosition(slice.position);
49071
+ if (layout === "compact") return /* @__PURE__ */ jsx("span", {
49072
+ className: "inline-flex items-center text-xs tabular-nums text-foreground-subtle",
49073
+ "aria-label": `${label} ${value}`,
49074
+ children: value
49075
+ });
49076
+ return /* @__PURE__ */ jsxs("div", {
49077
+ className: "flex items-center gap-2 text-xs tabular-nums text-foreground-subtle",
49078
+ children: [/* @__PURE__ */ jsx("span", { children: label }), /* @__PURE__ */ jsx("span", {
49079
+ className: "font-medium text-foreground",
49080
+ children: value
49081
+ })]
49082
+ });
49083
+ }
49084
+ //#endregion
48526
49085
  //#region src/composites/device-controls/ac-panel.tsx
49086
+ /** Modes that mean the device can cool, dry, or move air — an air conditioner. */
49087
+ var COOLING_MODES = new Set([
49088
+ "cool",
49089
+ "heat_cool",
49090
+ "dry",
49091
+ "fan_only"
49092
+ ]);
49093
+ /** A heater offers heat (and maybe auto/off) and none of the cooling modes. */
49094
+ function climateOffersCooling(modes) {
49095
+ return modes.some((mode) => COOLING_MODES.has(mode));
49096
+ }
49097
+ /** Setpoint track bounds. Absent when the integration did not report both ends. */
49098
+ function climateSetpointBounds(status) {
49099
+ const min = status.minTemp;
49100
+ const max = status.maxTemp;
49101
+ if (typeof min !== "number" || typeof max !== "number") return null;
49102
+ if (!Number.isFinite(min) || !Number.isFinite(max) || max <= min) return null;
49103
+ return {
49104
+ min,
49105
+ max
49106
+ };
49107
+ }
49108
+ /** Map a 0–1 drag fraction onto the setpoint, snapped to `tempStep`. */
49109
+ function climateTargetFromFraction(fraction, bounds, tempStep) {
49110
+ const step = resolveClimateTempStep(tempStep);
49111
+ const clamped = Math.min(1, Math.max(0, fraction));
49112
+ const raw = bounds.min + clamped * (bounds.max - bounds.min);
49113
+ const steps = Math.round((raw - bounds.min) / step);
49114
+ const snapped = bounds.min + steps * step;
49115
+ const rounded = Math.round(snapped * 1e3) / 1e3;
49116
+ return Math.min(bounds.max, Math.max(bounds.min, rounded));
49117
+ }
48527
49118
  /** AC-appropriate short mode labels. Exhaustive over HvacMode. */
48528
49119
  function modeLabel(t, mode) {
48529
49120
  switch (mode) {
@@ -48557,9 +49148,6 @@ var MODE_ACCENT = {
48557
49148
  dry: "#22d3ee",
48558
49149
  off: "#a1a1aa"
48559
49150
  };
48560
- /** Practical AC setpoint range (Celsius) for the target range track. */
48561
- var TARGET_MIN = 16;
48562
- var TARGET_MAX = 30;
48563
49151
  /** Title-case a snake/lower token for a selector option ('medium_low' → 'Medium
48564
49152
  * low', 'turbo' → 'Turbo'). Shared by the fan + preset selectors. */
48565
49153
  function fanLabel(token) {
@@ -48646,7 +49234,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48646
49234
  onClick: (e) => {
48647
49235
  e.stopPropagation();
48648
49236
  if (!busy && display.target !== null) {
48649
- const next = display.target - 1;
49237
+ const next = nextClimateTarget(display.target, -1, display);
48650
49238
  applyOptimistic({ target: next });
48651
49239
  cap.setTarget({ target: next });
48652
49240
  }
@@ -48660,7 +49248,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48660
49248
  onClick: (e) => {
48661
49249
  e.stopPropagation();
48662
49250
  if (!busy && display.target !== null) {
48663
- const next = display.target + 1;
49251
+ const next = nextClimateTarget(display.target, 1, display);
48664
49252
  applyOptimistic({ target: next });
48665
49253
  cap.setTarget({ target: next });
48666
49254
  }
@@ -48690,6 +49278,8 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48690
49278
  });
48691
49279
  const accent = MODE_ACCENT[display.mode];
48692
49280
  const on = display.mode !== "off";
49281
+ const heatingOnly = !climateOffersCooling(display.availableModes);
49282
+ const setpointBounds = climateSetpointBounds(display);
48693
49283
  const CurrentPresetIcon = presetIcon(display.preset);
48694
49284
  const boost = display.preset === "turbo";
48695
49285
  const period = Math.max(.55, airflowPeriodSec(display.fanMode) * (boost ? .6 : 1));
@@ -48706,11 +49296,12 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48706
49296
  children: [
48707
49297
  /* @__PURE__ */ jsx("div", {
48708
49298
  className: "pointer-events-none absolute inset-0 opacity-60",
48709
- children: /* @__PURE__ */ jsx(AirflowViz, {
49299
+ children: heatingOnly && !on ? /* @__PURE__ */ jsx(RadiatorFins, {}) : /* @__PURE__ */ jsx(AirflowViz, {
48710
49300
  mode: display.mode,
48711
49301
  accent,
48712
49302
  periodSec: period,
48713
- swaying
49303
+ swaying,
49304
+ forceRising: heatingOnly
48714
49305
  })
48715
49306
  }),
48716
49307
  /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 bg-gradient-to-b from-surface/50 via-transparent to-surface/50" }),
@@ -48728,6 +49319,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48728
49319
  children: [
48729
49320
  /* @__PURE__ */ jsx(ModeIcon, {
48730
49321
  mode: display.mode,
49322
+ heatingOnly,
48731
49323
  className: "h-3.5 w-3.5"
48732
49324
  }),
48733
49325
  modeLabel(t, display.mode),
@@ -48754,7 +49346,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48754
49346
  disabled: busy,
48755
49347
  onClick: () => {
48756
49348
  if (busy || display.target === null) return;
48757
- const next = display.target - 1;
49349
+ const next = nextClimateTarget(display.target, -1, display);
48758
49350
  applyOptimistic({ target: next });
48759
49351
  cap.setTarget({ target: next });
48760
49352
  }
@@ -48776,19 +49368,29 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48776
49368
  disabled: busy,
48777
49369
  onClick: () => {
48778
49370
  if (busy || display.target === null) return;
48779
- const next = display.target + 1;
49371
+ const next = nextClimateTarget(display.target, 1, display);
48780
49372
  applyOptimistic({ target: next });
48781
49373
  cap.setTarget({ target: next });
48782
49374
  }
48783
49375
  })
48784
49376
  ]
48785
- }), /* @__PURE__ */ jsx("div", {
48786
- className: "relative z-10 w-36",
49377
+ }), setpointBounds !== null && /* @__PURE__ */ jsx("div", {
49378
+ className: "relative z-10 w-full px-1",
48787
49379
  children: /* @__PURE__ */ jsx(RangeTrack, {
48788
49380
  value: display.target,
48789
- min: TARGET_MIN,
48790
- max: TARGET_MAX,
48791
- accent
49381
+ min: setpointBounds.min,
49382
+ max: setpointBounds.max,
49383
+ step: display.tempStep,
49384
+ accent,
49385
+ disabled: busy,
49386
+ label: t("uiLibrary.acPanel.setpoint", "Setpoint"),
49387
+ onPreview: (next) => {
49388
+ applyOptimistic({ target: next });
49389
+ },
49390
+ onCommit: (next) => {
49391
+ applyOptimistic({ target: next });
49392
+ cap.setTarget({ target: next });
49393
+ }
48792
49394
  })
48793
49395
  })] }) : /* @__PURE__ */ jsxs("div", {
48794
49396
  className: "relative z-10 flex items-baseline gap-0.5",
@@ -48812,6 +49414,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48812
49414
  className: "flex",
48813
49415
  children: /* @__PURE__ */ jsx(ModeIcon, {
48814
49416
  mode: display.mode,
49417
+ heatingOnly,
48815
49418
  className: "h-4 w-4"
48816
49419
  })
48817
49420
  }),
@@ -48895,9 +49498,8 @@ function Field({ label, children }) {
48895
49498
  }), children]
48896
49499
  });
48897
49500
  }
48898
- function ModeIcon({ mode, className }) {
48899
- const Icon = MODE_ICON[mode];
48900
- return /* @__PURE__ */ jsx(Icon, {
49501
+ function ModeIcon({ mode, heatingOnly = false, className }) {
49502
+ return /* @__PURE__ */ jsx(heatingOnly && mode === "heat" ? Heater : MODE_ICON[mode], {
48901
49503
  className,
48902
49504
  "aria-hidden": true
48903
49505
  });
@@ -48947,11 +49549,89 @@ function RoundStep({ label, symbol, disabled, onClick }) {
48947
49549
  children: symbol
48948
49550
  });
48949
49551
  }
48950
- /** Thin gradient range track with a knob at the setpoint fraction. */
48951
- function RangeTrack({ value, min, max, accent }) {
48952
- const pct = `${Math.min(1, Math.max(0, (value - min) / (max - min))) * 100}%`;
49552
+ /** Setpoint track. Drag previews; the command is sent when the pointer is released. */
49553
+ function RangeTrack({ value, min, max, step, accent, disabled, label, onPreview, onCommit }) {
49554
+ const trackRef = useRef(null);
49555
+ const draggingRef = useRef(false);
49556
+ const [draft, setDraft] = useState(null);
49557
+ const shown = draft ?? value;
49558
+ const pct = `${Math.min(1, Math.max(0, (shown - min) / (max - min))) * 100}%`;
49559
+ const tempAt = (clientX) => {
49560
+ const el = trackRef.current;
49561
+ if (el === null) return value;
49562
+ const rect = el.getBoundingClientRect();
49563
+ if (rect.width <= 0) return value;
49564
+ return climateTargetFromFraction((clientX - rect.left) / rect.width, {
49565
+ min,
49566
+ max
49567
+ }, step);
49568
+ };
49569
+ const onPointerDown = (event) => {
49570
+ if (disabled) return;
49571
+ event.stopPropagation();
49572
+ event.preventDefault();
49573
+ draggingRef.current = true;
49574
+ if (typeof event.currentTarget.setPointerCapture === "function") event.currentTarget.setPointerCapture(event.pointerId);
49575
+ const next = tempAt(event.clientX);
49576
+ setDraft(next);
49577
+ onPreview(next);
49578
+ };
49579
+ const onPointerMove = (event) => {
49580
+ if (disabled || !draggingRef.current) return;
49581
+ event.stopPropagation();
49582
+ const next = tempAt(event.clientX);
49583
+ setDraft(next);
49584
+ onPreview(next);
49585
+ };
49586
+ const endDrag = (event) => {
49587
+ if (!draggingRef.current) return;
49588
+ event.stopPropagation();
49589
+ draggingRef.current = false;
49590
+ const next = tempAt(event.clientX);
49591
+ setDraft(null);
49592
+ if (event.currentTarget.hasPointerCapture?.(event.pointerId) === true) event.currentTarget.releasePointerCapture(event.pointerId);
49593
+ onCommit(next);
49594
+ };
49595
+ const onKeyDown = (event) => {
49596
+ if (disabled) return;
49597
+ const current = draft ?? value;
49598
+ if (event.key === "ArrowRight" || event.key === "ArrowUp") {
49599
+ event.preventDefault();
49600
+ onCommit(nextClimateTarget(current, 1, {
49601
+ tempStep: step,
49602
+ minTemp: min,
49603
+ maxTemp: max
49604
+ }));
49605
+ } else if (event.key === "ArrowLeft" || event.key === "ArrowDown") {
49606
+ event.preventDefault();
49607
+ onCommit(nextClimateTarget(current, -1, {
49608
+ tempStep: step,
49609
+ minTemp: min,
49610
+ maxTemp: max
49611
+ }));
49612
+ } else if (event.key === "Home") {
49613
+ event.preventDefault();
49614
+ onCommit(min);
49615
+ } else if (event.key === "End") {
49616
+ event.preventDefault();
49617
+ onCommit(max);
49618
+ }
49619
+ };
48953
49620
  return /* @__PURE__ */ jsxs("div", {
48954
- className: "mt-2 w-full",
49621
+ ref: trackRef,
49622
+ role: "slider",
49623
+ "aria-label": label,
49624
+ "aria-valuemin": min,
49625
+ "aria-valuemax": max,
49626
+ "aria-valuenow": shown,
49627
+ "aria-disabled": disabled,
49628
+ tabIndex: disabled ? -1 : 0,
49629
+ onPointerDown,
49630
+ onPointerMove,
49631
+ onPointerUp: endDrag,
49632
+ onPointerCancel: endDrag,
49633
+ onKeyDown,
49634
+ className: cn("mt-1 w-full touch-none select-none py-2", disabled ? "cursor-not-allowed opacity-40" : "cursor-ew-resize"),
48955
49635
  children: [/* @__PURE__ */ jsxs("div", {
48956
49636
  className: "relative h-1.5 w-full rounded-full bg-surface-subtle",
48957
49637
  children: [/* @__PURE__ */ jsx("div", {
@@ -48961,7 +49641,7 @@ function RangeTrack({ value, min, max, accent }) {
48961
49641
  background: accent
48962
49642
  }
48963
49643
  }), /* @__PURE__ */ jsx("div", {
48964
- className: "absolute top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-surface shadow",
49644
+ className: "absolute top-1/2 h-3.5 w-3.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-surface shadow",
48965
49645
  style: {
48966
49646
  left: pct,
48967
49647
  background: accent
@@ -48978,7 +49658,7 @@ function RangeTrack({ value, min, max, accent }) {
48978
49658
  * vent; every active mode renders drifting particles that FALL (cool/dry/auto)
48979
49659
  * or RISE (heat), with a horizontal sweep overlaid when a swing axis is active.
48980
49660
  */
48981
- function AirflowViz({ mode, accent, periodSec, swaying }) {
49661
+ function AirflowViz({ mode, accent, periodSec, swaying, forceRising = false }) {
48982
49662
  const columns = [
48983
49663
  0,
48984
49664
  1,
@@ -48987,7 +49667,7 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
48987
49667
  4,
48988
49668
  5
48989
49669
  ];
48990
- const rising = mode === "heat";
49670
+ const rising = forceRising || mode === "heat";
48991
49671
  const isDroplet = mode === "dry";
48992
49672
  return /* @__PURE__ */ jsx("div", {
48993
49673
  "aria-hidden": true,
@@ -49003,6 +49683,7 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
49003
49683
  size: 56
49004
49684
  })
49005
49685
  }) : /* @__PURE__ */ jsx("div", {
49686
+ "data-testid": forceRising ? "climate-heat-rise" : void 0,
49006
49687
  className: cn("acv-sway-wrap absolute inset-0", swaying && "acv-sway"),
49007
49688
  style: swaying ? { animation: "acv-sway 2.6s ease-in-out infinite" } : void 0,
49008
49689
  children: columns.map((i) => {
@@ -49025,6 +49706,23 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
49025
49706
  })
49026
49707
  });
49027
49708
  }
49709
+ /** Still radiator fins — the off state of a heating-only climate. */
49710
+ function RadiatorFins() {
49711
+ return /* @__PURE__ */ jsx("div", {
49712
+ "data-testid": "climate-radiator",
49713
+ "aria-hidden": true,
49714
+ className: "flex h-full items-end justify-center gap-1.5 px-8 pb-3 opacity-40",
49715
+ children: [
49716
+ 0,
49717
+ 1,
49718
+ 2,
49719
+ 3,
49720
+ 4,
49721
+ 5,
49722
+ 6
49723
+ ].map((i) => /* @__PURE__ */ jsx("span", { className: "h-10 w-1.5 rounded-t-full bg-foreground-subtle" }, i))
49724
+ });
49725
+ }
49028
49726
  /** Big spinning fan for `fan_only` mode. */
49029
49727
  function FanBlades({ color, periodSec, size }) {
49030
49728
  return /* @__PURE__ */ jsxs("svg", {
@@ -49191,16 +49889,33 @@ var MODE_ARC_COLOR = {
49191
49889
  */
49192
49890
  function ThermostatHeroCard({ trpc, deviceId, features: _features, optimistic }) {
49193
49891
  const t = useUiText();
49194
- const { cap, slice, available } = useDeviceCapability({
49892
+ const climate = useDeviceCapability({
49195
49893
  trpc,
49196
49894
  deviceId,
49197
49895
  cap: (d) => d.climateControl,
49198
49896
  slice: (d) => d.state.climateControl
49199
49897
  });
49200
- const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
49201
- if (cap === void 0) return null;
49202
- if (display === void 0) return null;
49203
- const busy = !available;
49898
+ const valve = useDeviceCapability({
49899
+ trpc,
49900
+ deviceId,
49901
+ cap: (d) => d.heatingValve,
49902
+ slice: (d) => d.state.heatingValve
49903
+ });
49904
+ const { display, applyOptimistic } = useOptimisticSlice(climate.slice, { enabled: optimistic ?? true });
49905
+ const hasClimate = climate.cap !== void 0 && display !== void 0;
49906
+ const hasValve = valve.cap !== void 0;
49907
+ if (!hasClimate && !hasValve) return null;
49908
+ if (!hasClimate && hasValve) return /* @__PURE__ */ jsx("div", {
49909
+ className: "flex flex-col items-stretch gap-3 rounded-lg border border-border bg-surface p-4",
49910
+ children: /* @__PURE__ */ jsx(HeatingValveReadout, {
49911
+ trpc,
49912
+ deviceId,
49913
+ layout: "full"
49914
+ })
49915
+ });
49916
+ if (climate.cap === void 0 || display === void 0) return null;
49917
+ const cap = climate.cap;
49918
+ const busy = !climate.available;
49204
49919
  const color = MODE_ARC_COLOR[display.mode];
49205
49920
  const isRange = display.mode === "heat_cool" || display.targetLow !== null && display.targetHigh !== null;
49206
49921
  const min = DEFAULT_TEMP_MIN;
@@ -49211,132 +49926,140 @@ function ThermostatHeroCard({ trpc, deviceId, features: _features, optimistic })
49211
49926
  return /* @__PURE__ */ jsxs("div", {
49212
49927
  "data-mode": display.mode,
49213
49928
  className: cn("flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-4 transition-colors", MODE_COLOR[display.mode]),
49214
- children: [/* @__PURE__ */ jsxs("div", {
49215
- className: "flex flex-col items-center gap-3",
49216
- children: [/* @__PURE__ */ jsxs("div", {
49217
- className: "relative",
49218
- style: {
49219
- width: GAUGE_SIZE,
49220
- height: GAUGE_SIZE
49221
- },
49222
- children: [
49223
- isRange ? /* @__PURE__ */ jsx(GaugeRing, {
49224
- mode: "band",
49225
- band: {
49226
- from: fractionLow,
49227
- to: fractionHigh
49228
- },
49229
- color
49230
- }) : /* @__PURE__ */ jsx(GaugeRing, {
49231
- mode: "fill",
49232
- fraction: singleFraction,
49233
- color
49234
- }),
49235
- isRange ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
49236
- "data-testid": "arc-knob",
49237
- children: /* @__PURE__ */ jsx(ArcKnob, {
49238
- fraction: fractionLow,
49239
- color,
49240
- knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49241
- onDragFraction: (f) => {
49242
- if (busy || display.targetHigh === null) return;
49243
- const next = Math.min(fractionToTemp(f, min, max), display.targetHigh);
49244
- applyOptimistic({ targetLow: next });
49245
- cap.setTargetRange({
49246
- targetLow: next,
49247
- targetHigh: display.targetHigh
49248
- });
49249
- }
49250
- })
49251
- }), /* @__PURE__ */ jsx("div", {
49252
- "data-testid": "arc-knob",
49253
- children: /* @__PURE__ */ jsx(ArcKnob, {
49254
- fraction: fractionHigh,
49255
- color,
49256
- knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49257
- onDragFraction: (f) => {
49258
- if (busy || display.targetLow === null) return;
49259
- const next = Math.max(fractionToTemp(f, min, max), display.targetLow);
49260
- applyOptimistic({ targetHigh: next });
49261
- cap.setTargetRange({
49262
- targetLow: display.targetLow,
49263
- targetHigh: next
49264
- });
49265
- }
49266
- })
49267
- })] }) : /* @__PURE__ */ jsx("div", {
49268
- "data-testid": "arc-knob",
49269
- children: /* @__PURE__ */ jsx(ArcKnob, {
49929
+ children: [
49930
+ /* @__PURE__ */ jsxs("div", {
49931
+ className: "flex flex-col items-center gap-3",
49932
+ children: [/* @__PURE__ */ jsxs("div", {
49933
+ className: "relative",
49934
+ style: {
49935
+ width: GAUGE_SIZE,
49936
+ height: GAUGE_SIZE
49937
+ },
49938
+ children: [
49939
+ isRange ? /* @__PURE__ */ jsx(GaugeRing, {
49940
+ mode: "band",
49941
+ band: {
49942
+ from: fractionLow,
49943
+ to: fractionHigh
49944
+ },
49945
+ color
49946
+ }) : /* @__PURE__ */ jsx(GaugeRing, {
49947
+ mode: "fill",
49270
49948
  fraction: singleFraction,
49271
- color,
49272
- knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49273
- onDragFraction: (f) => {
49274
- if (busy) return;
49275
- const next = fractionToTemp(f, min, max);
49276
- applyOptimistic({ target: next });
49277
- cap.setTarget({ target: next });
49278
- }
49279
- })
49280
- }),
49281
- /* @__PURE__ */ jsxs("div", {
49282
- className: "absolute inset-0 flex flex-col items-center justify-center gap-0.5 pointer-events-none",
49283
- children: [
49284
- /* @__PURE__ */ jsxs("div", {
49285
- "data-testid": "current-temp",
49286
- className: "text-4xl font-bold tabular-nums text-foreground leading-none",
49287
- children: [display.currentTemp !== null ? display.currentTemp : "—", /* @__PURE__ */ jsx("span", {
49288
- className: "text-lg text-foreground-subtle font-normal ml-0.5",
49289
- children: "°"
49290
- })]
49291
- }),
49292
- !isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
49293
- className: "text-xs font-semibold",
49294
- style: { color },
49295
- children: t("uiLibrary.thermostatHeroCard.setTo", "set {{value}}°", { value: display.target })
49296
- }),
49297
- isRange && display.targetLow !== null && display.targetHigh !== null && /* @__PURE__ */ jsxs("div", {
49298
- className: "text-xs font-semibold",
49299
- style: { color },
49300
- children: [
49301
- display.targetLow,
49302
- "° – ",
49303
- display.targetHigh,
49304
- "°"
49305
- ]
49949
+ color
49950
+ }),
49951
+ isRange ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
49952
+ "data-testid": "arc-knob",
49953
+ children: /* @__PURE__ */ jsx(ArcKnob, {
49954
+ fraction: fractionLow,
49955
+ color,
49956
+ knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49957
+ onDragFraction: (f) => {
49958
+ if (busy || display.targetHigh === null) return;
49959
+ const next = Math.min(fractionToTemp(f, min, max), display.targetHigh);
49960
+ applyOptimistic({ targetLow: next });
49961
+ cap.setTargetRange({
49962
+ targetLow: next,
49963
+ targetHigh: display.targetHigh
49964
+ });
49965
+ }
49306
49966
  })
49307
- ]
49967
+ }), /* @__PURE__ */ jsx("div", {
49968
+ "data-testid": "arc-knob",
49969
+ children: /* @__PURE__ */ jsx(ArcKnob, {
49970
+ fraction: fractionHigh,
49971
+ color,
49972
+ knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49973
+ onDragFraction: (f) => {
49974
+ if (busy || display.targetLow === null) return;
49975
+ const next = Math.max(fractionToTemp(f, min, max), display.targetLow);
49976
+ applyOptimistic({ targetHigh: next });
49977
+ cap.setTargetRange({
49978
+ targetLow: display.targetLow,
49979
+ targetHigh: next
49980
+ });
49981
+ }
49982
+ })
49983
+ })] }) : /* @__PURE__ */ jsx("div", {
49984
+ "data-testid": "arc-knob",
49985
+ children: /* @__PURE__ */ jsx(ArcKnob, {
49986
+ fraction: singleFraction,
49987
+ color,
49988
+ knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49989
+ onDragFraction: (f) => {
49990
+ if (busy) return;
49991
+ const next = fractionToTemp(f, min, max);
49992
+ applyOptimistic({ target: next });
49993
+ cap.setTarget({ target: next });
49994
+ }
49995
+ })
49996
+ }),
49997
+ /* @__PURE__ */ jsxs("div", {
49998
+ className: "absolute inset-0 flex flex-col items-center justify-center gap-0.5 pointer-events-none",
49999
+ children: [
50000
+ /* @__PURE__ */ jsxs("div", {
50001
+ "data-testid": "current-temp",
50002
+ className: "text-4xl font-bold tabular-nums text-foreground leading-none",
50003
+ children: [display.currentTemp !== null ? display.currentTemp : "—", /* @__PURE__ */ jsx("span", {
50004
+ className: "text-lg text-foreground-subtle font-normal ml-0.5",
50005
+ children: "°"
50006
+ })]
50007
+ }),
50008
+ !isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
50009
+ className: "text-xs font-semibold",
50010
+ style: { color },
50011
+ children: t("uiLibrary.thermostatHeroCard.setTo", "set {{value}}°", { value: display.target })
50012
+ }),
50013
+ isRange && display.targetLow !== null && display.targetHigh !== null && /* @__PURE__ */ jsxs("div", {
50014
+ className: "text-xs font-semibold",
50015
+ style: { color },
50016
+ children: [
50017
+ display.targetLow,
50018
+ "° – ",
50019
+ display.targetHigh,
50020
+ "°"
50021
+ ]
50022
+ })
50023
+ ]
50024
+ })
50025
+ ]
50026
+ }), !isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
50027
+ className: "w-[200px]",
50028
+ children: /* @__PURE__ */ jsx(Stepper, {
50029
+ value: `${display.target}°`,
50030
+ onDelta: (d) => {
50031
+ if (busy || display.target === null) return;
50032
+ const next = display.target + d;
50033
+ applyOptimistic({ target: next });
50034
+ cap.setTarget({ target: next });
50035
+ }
49308
50036
  })
49309
- ]
49310
- }), !isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
49311
- className: "w-[200px]",
49312
- children: /* @__PURE__ */ jsx(Stepper, {
49313
- value: `${display.target}°`,
49314
- onDelta: (d) => {
49315
- if (busy || display.target === null) return;
49316
- const next = display.target + d;
49317
- applyOptimistic({ target: next });
49318
- cap.setTarget({ target: next });
50037
+ })]
50038
+ }),
50039
+ hasValve ? /* @__PURE__ */ jsx(HeatingValveReadout, {
50040
+ trpc,
50041
+ deviceId,
50042
+ layout: "full"
50043
+ }) : null,
50044
+ /* @__PURE__ */ jsx("select", {
50045
+ "aria-label": t("uiLibrary.thermostatHeroCard.mode", "Mode"),
50046
+ value: display.mode,
50047
+ disabled: busy,
50048
+ onChange: (e) => {
50049
+ e.stopPropagation();
50050
+ const mode = e.target.value;
50051
+ if (!busy && mode) {
50052
+ applyOptimistic({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
50053
+ cap.setMode({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
49319
50054
  }
49320
- })
49321
- })]
49322
- }), /* @__PURE__ */ jsx("select", {
49323
- "aria-label": t("uiLibrary.thermostatHeroCard.mode", "Mode"),
49324
- value: display.mode,
49325
- disabled: busy,
49326
- onChange: (e) => {
49327
- e.stopPropagation();
49328
- const mode = e.target.value;
49329
- if (!busy && mode) {
49330
- applyOptimistic({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
49331
- cap.setMode({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
49332
- }
49333
- },
49334
- className: cn("w-full rounded border border-border bg-surface px-3 py-1.5 text-sm", busy && "opacity-40 cursor-not-allowed"),
49335
- children: display.availableModes.map((m) => /* @__PURE__ */ jsx("option", {
49336
- value: m,
49337
- children: m
49338
- }, m))
49339
- })]
50055
+ },
50056
+ className: cn("w-full rounded border border-border bg-surface px-3 py-1.5 text-sm", busy && "opacity-40 cursor-not-allowed"),
50057
+ children: display.availableModes.map((m) => /* @__PURE__ */ jsx("option", {
50058
+ value: m,
50059
+ children: m
50060
+ }, m))
50061
+ })
50062
+ ]
49340
50063
  });
49341
50064
  }
49342
50065
  //#endregion
@@ -50844,14 +51567,32 @@ function useClimateCapGuard(trpc, deviceId) {
50844
51567
  });
50845
51568
  return cap !== void 0;
50846
51569
  }
50847
- function ThermostatInlineControl({ trpc, deviceId, features, optimistic }) {
50848
- if (!useClimateCapGuard(trpc, deviceId)) return null;
50849
- return /* @__PURE__ */ jsx(ClimatePanel, {
51570
+ function useHeatingValveCapGuard(trpc, deviceId) {
51571
+ const { cap } = useDeviceCapability({
50850
51572
  trpc,
50851
51573
  deviceId,
50852
- features,
50853
- layout: "compact",
50854
- optimistic
51574
+ cap: (d) => d.heatingValve,
51575
+ slice: (d) => d.state.heatingValve
51576
+ });
51577
+ return cap !== void 0;
51578
+ }
51579
+ function ThermostatInlineControl({ trpc, deviceId, features, optimistic }) {
51580
+ const hasClimate = useClimateCapGuard(trpc, deviceId);
51581
+ const hasValve = useHeatingValveCapGuard(trpc, deviceId);
51582
+ if (!hasClimate && !hasValve) return null;
51583
+ return /* @__PURE__ */ jsxs("span", {
51584
+ className: "inline-flex items-center gap-2",
51585
+ children: [hasClimate ? /* @__PURE__ */ jsx(ClimatePanel, {
51586
+ trpc,
51587
+ deviceId,
51588
+ features,
51589
+ layout: "compact",
51590
+ optimistic
51591
+ }) : null, hasValve ? /* @__PURE__ */ jsx(HeatingValveReadout, {
51592
+ trpc,
51593
+ deviceId,
51594
+ layout: "compact"
51595
+ }) : null]
50855
51596
  });
50856
51597
  }
50857
51598
  function AcInlineControl({ trpc, deviceId, features, optimistic }) {
@@ -51016,6 +51757,10 @@ var CONTROL_KIND_COMPONENTS = {
51016
51757
  InlineControl: PetFeederInlineControl,
51017
51758
  HeroCard: PetFeederHeroCard
51018
51759
  },
51760
+ dishwasher: {
51761
+ InlineControl: DishwasherInlineControl,
51762
+ HeroCard: DishwasherHeroCard
51763
+ },
51019
51764
  script: {
51020
51765
  InlineControl: ScriptInlineControl,
51021
51766
  HeroCard: ScriptHeroCard
@@ -51092,7 +51837,8 @@ var CONTROL_FILLS = {
51092
51837
  [DeviceType.Weather]: false,
51093
51838
  [DeviceType.Container]: false,
51094
51839
  [DeviceType.Image]: false,
51095
- [DeviceType.PetFeeder]: false
51840
+ [DeviceType.PetFeeder]: false,
51841
+ [DeviceType.Dishwasher]: false
51096
51842
  };
51097
51843
  var DEVICE_TYPE_VALUES = new Set(Object.values(DeviceType));
51098
51844
  /**
@@ -63695,12 +64441,12 @@ function mirror(input, t = defaultUiText) {
63695
64441
  * Render inside `<Suspense>` at all call sites. */
63696
64442
  var MaskShapeCanvas = lazy(() => import("./MaskShapeCanvas-C9cJlxvG.js").then((m) => ({ default: m.MaskShapeCanvas })));
63697
64443
  /** Lazy-wrapped `MotionZonesSettings` — code-split off the main bundle. */
63698
- var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-Bv8XzCa3.js").then((m) => ({ default: m.MotionZonesSettings })));
64444
+ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-C3Tj12yc.js").then((m) => ({ default: m.MotionZonesSettings })));
63699
64445
  /** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
63700
64446
  * same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
63701
64447
  * inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
63702
- var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-i3-nXAEU.js").then((m) => ({ default: m.SceneMonitorEditor })));
64448
+ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-30H29vN4.js").then((m) => ({ default: m.SceneMonitorEditor })));
63703
64449
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
63704
- var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-BlkbESYj.js").then((m) => ({ default: m.PrivacyMaskSettings })));
64450
+ var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
63705
64451
  //#endregion
63706
- export { ShieldCheck as $, CircleX as $n, List as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Eye as An, AppShell, Battery as Ar, ArcKnob, Package as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Star as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, Database as Bn, BottomSheet, ArrowRight as Br, Breadcrumb, BrightnessPanel, Minus as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, FlaskConical as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bot as Cr, Plane as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, Film as Dn, DoorbellRecentPanel, Bike as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Pencil as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flame as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bird as Er, ErrorBox, Phone as Et, EventKindGlyph, EventStream, ExtensionsPanel, Target as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, Droplet as Fn, FormField$1 as FormField, Bath as Fr, MoveVertical as Ft, Smartphone as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Cloud as Gn, AirVent as Gr, GripTrack, GroupedModelSelector, Megaphone as Gt, Sprout as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Cpu as Hn, HoverZoomImage, ArrowDown as Hr, Mic as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Tag as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Download as In, InferenceConfigSelector, Input, Ban as Ir, MoveHorizontal as It, ItemFormDialog, SkipBack as J, CloudRain as Jn, Mail as Jt, SlidersHorizontal as K, KebabMenu, KeyValueList, CloudSun as Kn, Activity as Kr, Maximize2 as Kt, Sunrise as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, DoorOpen as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Baby as Lr, MousePointerClick as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, ExternalLink as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, BatteryMedium as Mr, Navigation as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EllipsisVertical as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryLow as Nr, Music as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Feather as On, OptionSelect, Bell as Or, PawPrint as Ot, Thermometer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, Droplets as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryFull as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Move as Pt, PtzPanel, ShieldOff as Q, Clapperboard as Qn, QrCode, LoaderCircle as Qt, Sun as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesHub, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, DoorClosed as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, ArrowUp as Rr, Moon as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Footprints as Sn, SnapshotButton, SortHeaderButton, Box as Sr, Play as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsHub, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlashlightOff as Tn, Tooltip, TooltipContent, TooltipTrigger, Blinds as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pin as Tt, Sparkles as U, UiTextProvider, UiTrans, Copy as Un, UnitPicker, ArrowDownToLine as Ur, MessageSquare as Ut, Square as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Crosshair as Vn, VodPlaybackProvider, ArrowLeft as Vr, Minimize2 as Vt, Snowflake as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cog as Wn, AlarmSmoke as Wr, Menu as Wt, Ship as X, CloudFog as Xn, LockOpen as Xt, Siren as Y, CloudLightning as Yn, Lock as Yt, Shield as Z, Clock as Zn, ZoneEditingProvider, LocateFixed as Zt, UtensilsCrossed as _, Grid2x2 as _n, Car as _r, Puzzle as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, Laugh as an, applyFleetQueryDefaults, applyPickerFilters, CircleCheck as ar, ariaSortForColumn, assignNodeColorId, ScrollText as at, UserCheck as b, badgeFor, bindsToModel, Gamepad2 as bn, Bus as br, Plug as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, ChevronsUpDown as cr, createAddonI18n, createSharedContext, createTheme, Sailboat as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, House as dn, dockBox, ChevronRight as dr, draftFromQuery, RotateCcw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, ListChecks as en, ensureMfHostInit, CircleStop as er, ShieldAlert as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, Hash as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronLeft as fr, freezeVerdict, RefreshCw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, GripHorizontal as gn, Cast as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, QrCode$1 as gt, Volume2 as h, hardwareLabel, Hammer as hn, Cat as hr, Radar as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, LayoutGrid as in, initialScrubState, insertAtSelection, CircleDot as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Search as it, Tractor as j, EyeOff as jn, BatteryWarning as jr, Network as jt, Trash2 as k, Fan as kn, BellRing as kr, Pause as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Image as ln, loadIconGlyphs, loadRemoteBundle, ChevronsDownUp as lr, Route as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hand as mn, mountAddonPage, mountPath, Check as mr, RadioTower as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Lightbulb as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CirclePlus as nr, Settings as nt, Workflow as o, offListSelections, Info as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleCheckBig as or, orphanDeviceLabel, Scan as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, HardDrive as pn, ChevronDown as pr, providerIcons, Radio as pt, SkipForward as q, CloudSnow as qn, MapPin as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Leaf as rn, roiTooLarge, rootSourceState, routerBasename, CirclePause as rr, Server as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Inbox as sn, sortRows, sortRowsByColumn, CircleAlert as sr, Save as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, Link2 as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleQuestionMark as tr, trainingRefusalText, translateAddonKey, trpc, Share2 as tt, typeLabel, WifiOff as u, ImageOff as un, ChevronUp as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, RotateCw as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GraduationCap as vn, Camera as vr, Power as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Flashlight as wn, Bone as wr, writeStoredGroupBy, Pipette as wt, Upload as x, Funnel as xn, Bug as xr, Plus as xt, User as y, Gauge as yn, Cable as yr, PowerOff as yt, SunMedium as z, Dog as zn, ArrowUpToLine as zr, MonitorPlay as zt };
64452
+ export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bell as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, DoorClosed as Bn, BottomSheet, ArrowUp as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, Funnel as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bug as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, FlashlightOff as Dn, DoorbellRecentPanel, Blinds as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bone as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryLow as Fr, Move as Ft, Snowflake as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDownToLine as Gr, GripTrack, GroupedModelSelector, Menu as Gt, Square as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Database as Hn, HoverZoomImage, ArrowRight as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryFull as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, Activity as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, AlarmSmoke as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bath as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Battery as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryWarning as Nr, Navigation as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Bird as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryMedium as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesHub, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Ban as Rr, MousePointerClick as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gamepad2 as Sn, SnapshotButton, SortHeaderButton, Bus as Sr, Plus as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsHub, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlaskConical as Tn, Tooltip, TooltipContent, TooltipTrigger, Bot as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowLeft as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Dog as Vn, VodPlaybackProvider, ArrowUpToLine as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowDown as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hammer as _n, Cat as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, LayoutGrid as an, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, UserCheck as b, badgeFor, bindsToModel, GraduationCap as bn, Camera as br, PowerOff as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, Hand as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, HardDrive as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, BellRing as jr, Package as jt, Trash2 as k, Film as kn, Bike as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hash as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CircleStop as nr, Share2 as nt, Workflow as o, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Heater as pn, ChevronRight as pr, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AirVent as qr, Maximize2 as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetStatus, useDishwasherPause, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHeatingValveGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GripHorizontal as vn, Cast as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Footprints as wn, Box as wr, writeStoredGroupBy, Plane as wt, Upload as x, Gauge as xn, Cable as xr, Plug as xt, User as y, Grid2x2 as yn, Car as yr, Power as yt, Sun as z, DoorOpen as zn, Baby as zr, Moon as zt };