@camstack/ui-library 1.2.299 → 1.2.300

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,24 @@ 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.setOption.useMutation`. */
11006
+ var useDishwasherSetOption = trpc.dishwasher.setOption.useMutation;
11007
+ /** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
11008
+ var useDishwasherGetStatus = trpc.dishwasher.getStatus.useQuery;
10910
11009
  /** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
10911
11010
  var useDoorbellGetStatus = trpc.doorbell.getStatus.useQuery;
10912
11011
  /** Generated alias around `trpc.enumSensor.getStatus.useQuery`. */
@@ -10961,6 +11060,8 @@ var useFeatureProbeGetStatus = trpc.featureProbe.getStatus.useQuery;
10961
11060
  var useFloodGetStatus = trpc.flood.getStatus.useQuery;
10962
11061
  /** Generated alias around `trpc.gas.getStatus.useQuery`. */
10963
11062
  var useGasGetStatus = trpc.gas.getStatus.useQuery;
11063
+ /** Generated alias around `trpc.heatingValve.getStatus.useQuery`. */
11064
+ var useHeatingValveGetStatus = trpc.heatingValve.getStatus.useQuery;
10964
11065
  /** Generated alias around `trpc.humidifier.setOn.useMutation`. */
10965
11066
  var useHumidifierSetOn = trpc.humidifier.setOn.useMutation;
10966
11067
  /** Generated alias around `trpc.humidifier.setTargetHumidity.useMutation`. */
@@ -26254,8 +26355,8 @@ function RecordingPanel({ deviceId }) {
26254
26355
  * `type:'widget'` ConfigField. `WidgetSlot` resolves these BEFORE the
26255
26356
  * Module-Federation `WidgetRegistry`. ids are namespaced `host/<name>`. */
26256
26357
  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 }))),
26358
+ "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-C3Tj12yc.js").then((m) => ({ default: m.MotionZonesSettings }))),
26359
+ "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
26259
26360
  "host/ptz-panel": PtzPanel,
26260
26361
  "host/navigation-panel": NavigationPanel,
26261
26362
  "host/consumables-panel": ConsumablesPanel,
@@ -28791,7 +28892,7 @@ function AddonActionSelectField({ field, value, values, onChange, disabled, onAc
28791
28892
  })()
28792
28893
  });
28793
28894
  }
28794
- function AddonActionButtonField({ field, values, disabled, onAction }) {
28895
+ function AddonActionButtonField({ field, values, disabled, onAction, onChange, onChangeMany }) {
28795
28896
  const t = useUiText();
28796
28897
  const [loading, setLoading] = useState(false);
28797
28898
  const [status, setStatus] = useState(null);
@@ -28823,6 +28924,17 @@ function AddonActionButtonField({ field, values, disabled, onAction }) {
28823
28924
  try {
28824
28925
  const result = await onAction(field.action, field.key, params);
28825
28926
  const resultRecord = typeof result === "object" && result !== null ? result : null;
28927
+ if (resultRecord !== null && field.assignResult && (onChange || onChangeMany)) {
28928
+ const patch = {};
28929
+ for (const [formKey, resultKey] of Object.entries(field.assignResult)) {
28930
+ const assigned = resultRecord[resultKey];
28931
+ if (typeof assigned === "string") patch[formKey] = assigned;
28932
+ }
28933
+ if (Object.keys(patch).length > 0) {
28934
+ if (onChangeMany) onChangeMany(patch);
28935
+ else if (onChange) for (const [formKey, assigned] of Object.entries(patch)) onChange(formKey, assigned);
28936
+ }
28937
+ }
28826
28938
  setStatus({
28827
28939
  kind: "ok",
28828
28940
  text: field.successMessage ? field.successMessage.replace(/\{(\w+)\}/g, (_, k) => {
@@ -29171,7 +29283,7 @@ function isFieldVisible(field, values, allFields) {
29171
29283
  if (condition.notIncludes !== void 0) return !Array.isArray(condVal) || !condVal.includes(condition.notIncludes);
29172
29284
  return true;
29173
29285
  }
29174
- function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction }) {
29286
+ function FormField({ field, values, onChange, onChangeMany, disabled, translationFn, onTestField, externalProbe, allFields, onAction }) {
29175
29287
  if (hasMultiple(field)) return /* @__PURE__ */ jsx(MultipleFieldWrapper, {
29176
29288
  field,
29177
29289
  values,
@@ -29407,7 +29519,9 @@ function FormField({ field, values, onChange, disabled, translationFn, onTestFie
29407
29519
  field,
29408
29520
  values,
29409
29521
  disabled,
29410
- onAction
29522
+ onAction,
29523
+ onChange,
29524
+ onChangeMany
29411
29525
  });
29412
29526
  case "device-action-button": return /* @__PURE__ */ jsx(DeviceActionButtonField, {
29413
29527
  field,
@@ -42890,6 +43004,19 @@ function FanPanel({ trpc, deviceId, features, layout, optimistic }) {
42890
43004
  }
42891
43005
  //#endregion
42892
43006
  //#region src/composites/device-controls/climate-panel.tsx
43007
+ /** Step size for target ± buttons; defaults to 1 °C when unset or invalid. */
43008
+ function resolveClimateTempStep(tempStep) {
43009
+ if (typeof tempStep === "number" && Number.isFinite(tempStep) && tempStep > 0) return tempStep;
43010
+ return 1;
43011
+ }
43012
+ function nextClimateTarget(current, deltaSteps, display) {
43013
+ let next = current + deltaSteps * resolveClimateTempStep(display.tempStep);
43014
+ const min = display.minTemp;
43015
+ const max = display.maxTemp;
43016
+ if (typeof min === "number" && Number.isFinite(min)) next = Math.max(next, min);
43017
+ if (typeof max === "number" && Number.isFinite(max)) next = Math.min(next, max);
43018
+ return next;
43019
+ }
42893
43020
  /**
42894
43021
  * Exhaustive colour map — one entry per HvacMode. Build will fail if a
42895
43022
  * mode is added to the enum and not reflected here (Record<HvacMode, ...>
@@ -42970,7 +43097,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
42970
43097
  onClick: (e) => {
42971
43098
  e.stopPropagation();
42972
43099
  if (!busy && display.target !== null) {
42973
- const next = display.target - 1;
43100
+ const next = nextClimateTarget(display.target, -1, display);
42974
43101
  applyOptimistic({ target: next });
42975
43102
  cap.setTarget({ target: next });
42976
43103
  }
@@ -42984,7 +43111,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
42984
43111
  onClick: (e) => {
42985
43112
  e.stopPropagation();
42986
43113
  if (!busy && display.target !== null) {
42987
- const next = display.target + 1;
43114
+ const next = nextClimateTarget(display.target, 1, display);
42988
43115
  applyOptimistic({ target: next });
42989
43116
  cap.setTarget({ target: next });
42990
43117
  }
@@ -43039,7 +43166,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
43039
43166
  onClick: (e) => {
43040
43167
  e.stopPropagation();
43041
43168
  if (!busy && display.target !== null) {
43042
- const next = display.target - 1;
43169
+ const next = nextClimateTarget(display.target, -1, display);
43043
43170
  applyOptimistic({ target: next });
43044
43171
  cap.setTarget({ target: next });
43045
43172
  }
@@ -43054,7 +43181,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
43054
43181
  onClick: (e) => {
43055
43182
  e.stopPropagation();
43056
43183
  if (!busy && display.target !== null) {
43057
- const next = display.target + 1;
43184
+ const next = nextClimateTarget(display.target, 1, display);
43058
43185
  applyOptimistic({ target: next });
43059
43186
  cap.setTarget({ target: next });
43060
43187
  }
@@ -43712,7 +43839,8 @@ var CONTROL_CAP_NAMES = [
43712
43839
  "climate-control",
43713
43840
  "media-player",
43714
43841
  "control",
43715
- "pet-feeder"
43842
+ "pet-feeder",
43843
+ "dishwasher"
43716
43844
  ];
43717
43845
  //#endregion
43718
43846
  //#region src/composites/device-controls/popover-row-action.tsx
@@ -48523,7 +48651,405 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
48523
48651
  });
48524
48652
  }
48525
48653
  //#endregion
48654
+ //#region src/composites/device-controls/dishwasher-control.tsx
48655
+ /**
48656
+ * Dishwasher controls for a `DeviceType.Dishwasher` device.
48657
+ *
48658
+ * Reads the `dishwasher` cap status slice and renders inline + hero surfaces
48659
+ * mirroring vacuum-control / pet-feeder patterns.
48660
+ */
48661
+ function dishwasherStateMeta(state, t = defaultUiText) {
48662
+ switch (state) {
48663
+ case "running": return {
48664
+ label: t("uiLibrary.dishwasher.running", "Running"),
48665
+ tone: "text-primary"
48666
+ };
48667
+ case "paused": return {
48668
+ label: t("uiLibrary.dishwasher.paused", "Paused"),
48669
+ tone: "text-warning"
48670
+ };
48671
+ case "finished": return {
48672
+ label: t("uiLibrary.dishwasher.finished", "Finished"),
48673
+ tone: "text-success"
48674
+ };
48675
+ case "error": return {
48676
+ label: t("uiLibrary.dishwasher.error", "Error"),
48677
+ tone: "text-destructive"
48678
+ };
48679
+ case "unavailable": return {
48680
+ label: t("uiLibrary.dishwasher.unavailable", "Unavailable"),
48681
+ tone: "text-foreground-subtle"
48682
+ };
48683
+ case "idle": return {
48684
+ label: t("uiLibrary.dishwasher.idle", "Idle"),
48685
+ tone: "text-foreground-subtle"
48686
+ };
48687
+ case void 0: return {
48688
+ label: t("uiLibrary.dishwasher.unknown", "Unknown"),
48689
+ tone: "text-foreground-subtle"
48690
+ };
48691
+ }
48692
+ }
48693
+ function consumableTone(level) {
48694
+ switch (level) {
48695
+ case "ok": return "text-success";
48696
+ case "low": return "text-warning";
48697
+ case "empty": return "text-destructive";
48698
+ case null: return "text-foreground-subtle";
48699
+ }
48700
+ }
48701
+ function useDishwasher(trpc, deviceId) {
48702
+ return useDeviceCapability({
48703
+ trpc,
48704
+ deviceId,
48705
+ cap: (d) => d.dishwasher,
48706
+ slice: (d) => d.state.dishwasher
48707
+ });
48708
+ }
48709
+ function DishwasherIconButton({ label, busy, active, onClick, children }) {
48710
+ return /* @__PURE__ */ jsx("button", {
48711
+ type: "button",
48712
+ "aria-label": label,
48713
+ title: label,
48714
+ disabled: busy,
48715
+ onClick: (e) => {
48716
+ e.stopPropagation();
48717
+ onClick();
48718
+ },
48719
+ 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"),
48720
+ children
48721
+ });
48722
+ }
48723
+ function ConsumableBadge({ label, level }) {
48724
+ if (level === null) return null;
48725
+ return /* @__PURE__ */ jsxs("span", {
48726
+ className: cn("text-xs font-medium capitalize", consumableTone(level)),
48727
+ children: [
48728
+ label,
48729
+ ": ",
48730
+ level
48731
+ ]
48732
+ });
48733
+ }
48734
+ function DishwasherGraphic({ state, progressPercent }) {
48735
+ const running = state === "running";
48736
+ const pct = progressPercent != null ? Math.max(0, Math.min(100, progressPercent)) : running ? 40 : 0;
48737
+ return /* @__PURE__ */ jsxs("div", {
48738
+ "aria-hidden": "true",
48739
+ 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",
48740
+ style: { boxShadow: "inset 0 0 0 2px rgba(255,255,255,.06)" },
48741
+ children: [/* @__PURE__ */ jsx("div", {
48742
+ className: cn("absolute inset-x-0 bottom-0 bg-primary/25 transition-[height] duration-500", running && "animate-pulse"),
48743
+ style: { height: `${pct}%` }
48744
+ }), /* @__PURE__ */ jsx("div", {
48745
+ className: "absolute inset-0 flex items-center justify-center text-foreground-subtle",
48746
+ children: /* @__PURE__ */ jsx(Waves, { className: "h-10 w-10 opacity-70" })
48747
+ })]
48748
+ });
48749
+ }
48750
+ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48751
+ const t = useUiText();
48752
+ const { cap, slice, available } = useDishwasher(trpc, deviceId);
48753
+ const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
48754
+ if (cap === void 0) return null;
48755
+ if (display === void 0) return null;
48756
+ const busy = !available;
48757
+ const meta = dishwasherStateMeta(display.state, t);
48758
+ const running = display.state === "running";
48759
+ const paused = display.state === "paused";
48760
+ const press = (fn, patch) => {
48761
+ if (busy) return;
48762
+ applyOptimistic(patch);
48763
+ fn();
48764
+ };
48765
+ if (layout === "compact") return /* @__PURE__ */ jsxs("div", {
48766
+ className: "inline-flex items-center gap-1",
48767
+ children: [
48768
+ display.doorOpen && /* @__PURE__ */ jsx("span", {
48769
+ className: "inline-flex text-warning",
48770
+ title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
48771
+ "aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
48772
+ children: /* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" })
48773
+ }),
48774
+ /* @__PURE__ */ jsx("span", {
48775
+ className: cn("text-xs font-medium tabular-nums", meta.tone),
48776
+ children: meta.label
48777
+ }),
48778
+ display.remainingMinutes != null && /* @__PURE__ */ jsxs("span", {
48779
+ className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums",
48780
+ children: [
48781
+ /* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }),
48782
+ display.remainingMinutes,
48783
+ "m"
48784
+ ]
48785
+ }),
48786
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48787
+ label: t("uiLibrary.dishwasher.start", "Start"),
48788
+ busy: busy || !display.remoteStartAllowed,
48789
+ active: running,
48790
+ onClick: () => press(() => cap.start({}), {
48791
+ state: "running",
48792
+ remoteStartAllowed: false
48793
+ }),
48794
+ children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
48795
+ }),
48796
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48797
+ label: t("uiLibrary.dishwasher.pause", "Pause"),
48798
+ busy: busy || !running,
48799
+ active: paused,
48800
+ onClick: () => press(() => cap.pause({}), { state: "paused" }),
48801
+ children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
48802
+ })
48803
+ ]
48804
+ });
48805
+ const programs = display.availablePrograms;
48806
+ return /* @__PURE__ */ jsxs("div", {
48807
+ className: "flex flex-col gap-3 rounded-lg border border-border bg-surface p-4",
48808
+ children: [
48809
+ /* @__PURE__ */ jsxs("div", {
48810
+ className: "flex items-start gap-4",
48811
+ children: [/* @__PURE__ */ jsx(DishwasherGraphic, {
48812
+ state: display.state,
48813
+ progressPercent: display.progressPercent
48814
+ }), /* @__PURE__ */ jsxs("div", {
48815
+ className: "flex min-w-0 flex-1 flex-col gap-2",
48816
+ children: [
48817
+ /* @__PURE__ */ jsxs("div", {
48818
+ className: "flex flex-wrap items-center gap-2",
48819
+ children: [/* @__PURE__ */ jsx("span", {
48820
+ className: cn("text-3xl font-semibold", meta.tone),
48821
+ children: meta.label
48822
+ }), !display.powerOn && /* @__PURE__ */ jsx("span", {
48823
+ className: "text-xs font-medium text-foreground-subtle",
48824
+ children: t("uiLibrary.dishwasher.powerOff", "Power off")
48825
+ })]
48826
+ }),
48827
+ display.program != null && /* @__PURE__ */ jsx("span", {
48828
+ className: "text-sm text-foreground-subtle",
48829
+ children: display.program
48830
+ }),
48831
+ display.progressPercent != null && /* @__PURE__ */ jsxs("div", {
48832
+ className: "flex items-center gap-2",
48833
+ children: [/* @__PURE__ */ jsx("div", {
48834
+ className: "h-1.5 flex-1 rounded bg-surface-hover overflow-hidden",
48835
+ children: /* @__PURE__ */ jsx("div", {
48836
+ className: "h-full bg-primary transition-[width] duration-500",
48837
+ style: { width: `${Math.max(0, Math.min(100, display.progressPercent))}%` }
48838
+ })
48839
+ }), /* @__PURE__ */ jsxs("span", {
48840
+ className: "tabular-nums text-xs text-foreground-subtle",
48841
+ children: [Math.round(display.progressPercent), "%"]
48842
+ })]
48843
+ }),
48844
+ /* @__PURE__ */ jsxs("div", {
48845
+ className: "flex flex-wrap gap-3",
48846
+ children: [
48847
+ /* @__PURE__ */ jsx(ConsumableBadge, {
48848
+ label: t("uiLibrary.dishwasher.salt", "Salt"),
48849
+ level: display.saltLevel
48850
+ }),
48851
+ /* @__PURE__ */ jsx(ConsumableBadge, {
48852
+ label: t("uiLibrary.dishwasher.rinseAid", "Rinse aid"),
48853
+ level: display.rinseAidLevel
48854
+ }),
48855
+ display.doorOpen && /* @__PURE__ */ jsxs("span", {
48856
+ className: "inline-flex items-center gap-1 text-xs text-warning",
48857
+ children: [/* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.doorOpen", "Door open")]
48858
+ })
48859
+ ]
48860
+ }),
48861
+ display.errorCode != null && display.errorCode !== 0 && /* @__PURE__ */ jsxs("div", {
48862
+ className: "inline-flex items-center gap-1 text-xs text-destructive",
48863
+ 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 }) })]
48864
+ }),
48865
+ /* @__PURE__ */ jsxs("div", {
48866
+ className: "flex flex-wrap items-center gap-2",
48867
+ children: [
48868
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48869
+ label: t("uiLibrary.dishwasher.start", "Start"),
48870
+ busy: busy || !display.remoteStartAllowed,
48871
+ active: running,
48872
+ onClick: () => press(() => cap.start({}), {
48873
+ state: "running",
48874
+ remoteStartAllowed: false
48875
+ }),
48876
+ children: /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" })
48877
+ }),
48878
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48879
+ label: t("uiLibrary.dishwasher.pause", "Pause"),
48880
+ busy: busy || !running,
48881
+ active: paused,
48882
+ onClick: () => press(() => cap.pause({}), { state: "paused" }),
48883
+ children: /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" })
48884
+ }),
48885
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48886
+ label: t("uiLibrary.dishwasher.stop", "Stop"),
48887
+ busy,
48888
+ active: false,
48889
+ onClick: () => press(() => cap.stop({}), {
48890
+ state: "idle",
48891
+ remainingMinutes: null
48892
+ }),
48893
+ children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
48894
+ }),
48895
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48896
+ label: t("uiLibrary.dishwasher.power", "Power"),
48897
+ busy,
48898
+ active: display.powerOn,
48899
+ onClick: () => {
48900
+ const next = !display.powerOn;
48901
+ press(() => cap.setPower({ on: next }), { powerOn: next });
48902
+ },
48903
+ children: /* @__PURE__ */ jsx(Power, { className: "h-4 w-4" })
48904
+ })
48905
+ ]
48906
+ })
48907
+ ]
48908
+ })]
48909
+ }),
48910
+ programs.length > 0 && /* @__PURE__ */ jsxs("label", {
48911
+ className: "flex items-center gap-2 text-xs text-foreground-subtle",
48912
+ children: [/* @__PURE__ */ jsx("span", {
48913
+ className: "w-16 shrink-0",
48914
+ children: t("uiLibrary.dishwasher.program", "Program")
48915
+ }), /* @__PURE__ */ jsxs("select", {
48916
+ "aria-label": t("uiLibrary.dishwasher.program", "Program"),
48917
+ value: display.program ?? "",
48918
+ disabled: busy,
48919
+ onChange: (e) => {
48920
+ const program = e.target.value;
48921
+ if (!program) return;
48922
+ applyOptimistic({ program });
48923
+ cap.setProgram({ program });
48924
+ },
48925
+ onClick: (e) => {
48926
+ e.stopPropagation();
48927
+ },
48928
+ className: "flex-1 rounded border border-border bg-surface px-2 py-1 text-foreground disabled:opacity-50",
48929
+ children: [display.program == null && /* @__PURE__ */ jsx("option", {
48930
+ value: "",
48931
+ children: "—"
48932
+ }), programs.map((p) => /* @__PURE__ */ jsx("option", {
48933
+ value: p,
48934
+ children: p
48935
+ }, p))]
48936
+ })]
48937
+ }),
48938
+ /* @__PURE__ */ jsxs("div", {
48939
+ className: "flex flex-wrap gap-4 text-xs",
48940
+ children: [/* @__PURE__ */ jsx(ToggleRow, {
48941
+ label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
48942
+ checked: display.halfLoad,
48943
+ busy,
48944
+ onChange: (on) => {
48945
+ applyOptimistic({ halfLoad: on });
48946
+ cap.setHalfLoad({ on });
48947
+ }
48948
+ }), /* @__PURE__ */ jsx(ToggleRow, {
48949
+ label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
48950
+ checked: display.hygienePlus,
48951
+ busy,
48952
+ onChange: (on) => {
48953
+ applyOptimistic({ hygienePlus: on });
48954
+ cap.setHygienePlus({ on });
48955
+ }
48956
+ })]
48957
+ })
48958
+ ]
48959
+ });
48960
+ }
48961
+ function ToggleRow({ label, checked, busy, onChange }) {
48962
+ return /* @__PURE__ */ jsxs("label", {
48963
+ className: "inline-flex items-center gap-2 cursor-pointer",
48964
+ children: [/* @__PURE__ */ jsx("input", {
48965
+ type: "checkbox",
48966
+ checked,
48967
+ disabled: busy,
48968
+ onChange: (e) => {
48969
+ onChange(e.target.checked);
48970
+ },
48971
+ onClick: (e) => {
48972
+ e.stopPropagation();
48973
+ },
48974
+ className: "rounded border-border"
48975
+ }), /* @__PURE__ */ jsx("span", { children: label })]
48976
+ });
48977
+ }
48978
+ function DishwasherInlineControl(props) {
48979
+ return /* @__PURE__ */ jsx(DishwasherPanel, {
48980
+ ...props,
48981
+ layout: "compact"
48982
+ });
48983
+ }
48984
+ function DishwasherHeroCard(props) {
48985
+ return /* @__PURE__ */ jsx(DishwasherPanel, {
48986
+ ...props,
48987
+ layout: "full"
48988
+ });
48989
+ }
48990
+ //#endregion
48991
+ //#region src/composites/device-controls/heating-valve-readout.tsx
48992
+ function formatHeatingValvePosition(position) {
48993
+ return position !== null ? `${position}%` : "—";
48994
+ }
48995
+ function HeatingValveReadout({ trpc, deviceId, layout }) {
48996
+ const t = useUiText();
48997
+ const { cap, slice } = useDeviceCapability({
48998
+ trpc,
48999
+ deviceId,
49000
+ cap: (d) => d.heatingValve,
49001
+ slice: (d) => d.state.heatingValve
49002
+ });
49003
+ if (cap === void 0 || slice === void 0) return null;
49004
+ const label = t("uiLibrary.heatingValveReadout.valve", "Valve");
49005
+ const value = formatHeatingValvePosition(slice.position);
49006
+ if (layout === "compact") return /* @__PURE__ */ jsx("span", {
49007
+ className: "inline-flex items-center text-xs tabular-nums text-foreground-subtle",
49008
+ "aria-label": `${label} ${value}`,
49009
+ children: value
49010
+ });
49011
+ return /* @__PURE__ */ jsxs("div", {
49012
+ className: "flex items-center gap-2 text-xs tabular-nums text-foreground-subtle",
49013
+ children: [/* @__PURE__ */ jsx("span", { children: label }), /* @__PURE__ */ jsx("span", {
49014
+ className: "font-medium text-foreground",
49015
+ children: value
49016
+ })]
49017
+ });
49018
+ }
49019
+ //#endregion
48526
49020
  //#region src/composites/device-controls/ac-panel.tsx
49021
+ /** Modes that mean the device can cool, dry, or move air — an air conditioner. */
49022
+ var COOLING_MODES = new Set([
49023
+ "cool",
49024
+ "heat_cool",
49025
+ "dry",
49026
+ "fan_only"
49027
+ ]);
49028
+ /** A heater offers heat (and maybe auto/off) and none of the cooling modes. */
49029
+ function climateOffersCooling(modes) {
49030
+ return modes.some((mode) => COOLING_MODES.has(mode));
49031
+ }
49032
+ /** Setpoint track bounds. Absent when the integration did not report both ends. */
49033
+ function climateSetpointBounds(status) {
49034
+ const min = status.minTemp;
49035
+ const max = status.maxTemp;
49036
+ if (typeof min !== "number" || typeof max !== "number") return null;
49037
+ if (!Number.isFinite(min) || !Number.isFinite(max) || max <= min) return null;
49038
+ return {
49039
+ min,
49040
+ max
49041
+ };
49042
+ }
49043
+ /** Map a 0–1 drag fraction onto the setpoint, snapped to `tempStep`. */
49044
+ function climateTargetFromFraction(fraction, bounds, tempStep) {
49045
+ const step = resolveClimateTempStep(tempStep);
49046
+ const clamped = Math.min(1, Math.max(0, fraction));
49047
+ const raw = bounds.min + clamped * (bounds.max - bounds.min);
49048
+ const steps = Math.round((raw - bounds.min) / step);
49049
+ const snapped = bounds.min + steps * step;
49050
+ const rounded = Math.round(snapped * 1e3) / 1e3;
49051
+ return Math.min(bounds.max, Math.max(bounds.min, rounded));
49052
+ }
48527
49053
  /** AC-appropriate short mode labels. Exhaustive over HvacMode. */
48528
49054
  function modeLabel(t, mode) {
48529
49055
  switch (mode) {
@@ -48557,9 +49083,6 @@ var MODE_ACCENT = {
48557
49083
  dry: "#22d3ee",
48558
49084
  off: "#a1a1aa"
48559
49085
  };
48560
- /** Practical AC setpoint range (Celsius) for the target range track. */
48561
- var TARGET_MIN = 16;
48562
- var TARGET_MAX = 30;
48563
49086
  /** Title-case a snake/lower token for a selector option ('medium_low' → 'Medium
48564
49087
  * low', 'turbo' → 'Turbo'). Shared by the fan + preset selectors. */
48565
49088
  function fanLabel(token) {
@@ -48646,7 +49169,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48646
49169
  onClick: (e) => {
48647
49170
  e.stopPropagation();
48648
49171
  if (!busy && display.target !== null) {
48649
- const next = display.target - 1;
49172
+ const next = nextClimateTarget(display.target, -1, display);
48650
49173
  applyOptimistic({ target: next });
48651
49174
  cap.setTarget({ target: next });
48652
49175
  }
@@ -48660,7 +49183,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48660
49183
  onClick: (e) => {
48661
49184
  e.stopPropagation();
48662
49185
  if (!busy && display.target !== null) {
48663
- const next = display.target + 1;
49186
+ const next = nextClimateTarget(display.target, 1, display);
48664
49187
  applyOptimistic({ target: next });
48665
49188
  cap.setTarget({ target: next });
48666
49189
  }
@@ -48690,6 +49213,8 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48690
49213
  });
48691
49214
  const accent = MODE_ACCENT[display.mode];
48692
49215
  const on = display.mode !== "off";
49216
+ const heatingOnly = !climateOffersCooling(display.availableModes);
49217
+ const setpointBounds = climateSetpointBounds(display);
48693
49218
  const CurrentPresetIcon = presetIcon(display.preset);
48694
49219
  const boost = display.preset === "turbo";
48695
49220
  const period = Math.max(.55, airflowPeriodSec(display.fanMode) * (boost ? .6 : 1));
@@ -48706,11 +49231,12 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48706
49231
  children: [
48707
49232
  /* @__PURE__ */ jsx("div", {
48708
49233
  className: "pointer-events-none absolute inset-0 opacity-60",
48709
- children: /* @__PURE__ */ jsx(AirflowViz, {
49234
+ children: heatingOnly && !on ? /* @__PURE__ */ jsx(RadiatorFins, {}) : /* @__PURE__ */ jsx(AirflowViz, {
48710
49235
  mode: display.mode,
48711
49236
  accent,
48712
49237
  periodSec: period,
48713
- swaying
49238
+ swaying,
49239
+ forceRising: heatingOnly
48714
49240
  })
48715
49241
  }),
48716
49242
  /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 bg-gradient-to-b from-surface/50 via-transparent to-surface/50" }),
@@ -48728,6 +49254,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48728
49254
  children: [
48729
49255
  /* @__PURE__ */ jsx(ModeIcon, {
48730
49256
  mode: display.mode,
49257
+ heatingOnly,
48731
49258
  className: "h-3.5 w-3.5"
48732
49259
  }),
48733
49260
  modeLabel(t, display.mode),
@@ -48754,7 +49281,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48754
49281
  disabled: busy,
48755
49282
  onClick: () => {
48756
49283
  if (busy || display.target === null) return;
48757
- const next = display.target - 1;
49284
+ const next = nextClimateTarget(display.target, -1, display);
48758
49285
  applyOptimistic({ target: next });
48759
49286
  cap.setTarget({ target: next });
48760
49287
  }
@@ -48776,19 +49303,29 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48776
49303
  disabled: busy,
48777
49304
  onClick: () => {
48778
49305
  if (busy || display.target === null) return;
48779
- const next = display.target + 1;
49306
+ const next = nextClimateTarget(display.target, 1, display);
48780
49307
  applyOptimistic({ target: next });
48781
49308
  cap.setTarget({ target: next });
48782
49309
  }
48783
49310
  })
48784
49311
  ]
48785
- }), /* @__PURE__ */ jsx("div", {
48786
- className: "relative z-10 w-36",
49312
+ }), setpointBounds !== null && /* @__PURE__ */ jsx("div", {
49313
+ className: "relative z-10 w-full px-1",
48787
49314
  children: /* @__PURE__ */ jsx(RangeTrack, {
48788
49315
  value: display.target,
48789
- min: TARGET_MIN,
48790
- max: TARGET_MAX,
48791
- accent
49316
+ min: setpointBounds.min,
49317
+ max: setpointBounds.max,
49318
+ step: display.tempStep,
49319
+ accent,
49320
+ disabled: busy,
49321
+ label: t("uiLibrary.acPanel.setpoint", "Setpoint"),
49322
+ onPreview: (next) => {
49323
+ applyOptimistic({ target: next });
49324
+ },
49325
+ onCommit: (next) => {
49326
+ applyOptimistic({ target: next });
49327
+ cap.setTarget({ target: next });
49328
+ }
48792
49329
  })
48793
49330
  })] }) : /* @__PURE__ */ jsxs("div", {
48794
49331
  className: "relative z-10 flex items-baseline gap-0.5",
@@ -48812,6 +49349,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
48812
49349
  className: "flex",
48813
49350
  children: /* @__PURE__ */ jsx(ModeIcon, {
48814
49351
  mode: display.mode,
49352
+ heatingOnly,
48815
49353
  className: "h-4 w-4"
48816
49354
  })
48817
49355
  }),
@@ -48895,9 +49433,8 @@ function Field({ label, children }) {
48895
49433
  }), children]
48896
49434
  });
48897
49435
  }
48898
- function ModeIcon({ mode, className }) {
48899
- const Icon = MODE_ICON[mode];
48900
- return /* @__PURE__ */ jsx(Icon, {
49436
+ function ModeIcon({ mode, heatingOnly = false, className }) {
49437
+ return /* @__PURE__ */ jsx(heatingOnly && mode === "heat" ? Heater : MODE_ICON[mode], {
48901
49438
  className,
48902
49439
  "aria-hidden": true
48903
49440
  });
@@ -48947,11 +49484,89 @@ function RoundStep({ label, symbol, disabled, onClick }) {
48947
49484
  children: symbol
48948
49485
  });
48949
49486
  }
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}%`;
49487
+ /** Setpoint track. Drag previews; the command is sent when the pointer is released. */
49488
+ function RangeTrack({ value, min, max, step, accent, disabled, label, onPreview, onCommit }) {
49489
+ const trackRef = useRef(null);
49490
+ const draggingRef = useRef(false);
49491
+ const [draft, setDraft] = useState(null);
49492
+ const shown = draft ?? value;
49493
+ const pct = `${Math.min(1, Math.max(0, (shown - min) / (max - min))) * 100}%`;
49494
+ const tempAt = (clientX) => {
49495
+ const el = trackRef.current;
49496
+ if (el === null) return value;
49497
+ const rect = el.getBoundingClientRect();
49498
+ if (rect.width <= 0) return value;
49499
+ return climateTargetFromFraction((clientX - rect.left) / rect.width, {
49500
+ min,
49501
+ max
49502
+ }, step);
49503
+ };
49504
+ const onPointerDown = (event) => {
49505
+ if (disabled) return;
49506
+ event.stopPropagation();
49507
+ event.preventDefault();
49508
+ draggingRef.current = true;
49509
+ if (typeof event.currentTarget.setPointerCapture === "function") event.currentTarget.setPointerCapture(event.pointerId);
49510
+ const next = tempAt(event.clientX);
49511
+ setDraft(next);
49512
+ onPreview(next);
49513
+ };
49514
+ const onPointerMove = (event) => {
49515
+ if (disabled || !draggingRef.current) return;
49516
+ event.stopPropagation();
49517
+ const next = tempAt(event.clientX);
49518
+ setDraft(next);
49519
+ onPreview(next);
49520
+ };
49521
+ const endDrag = (event) => {
49522
+ if (!draggingRef.current) return;
49523
+ event.stopPropagation();
49524
+ draggingRef.current = false;
49525
+ const next = tempAt(event.clientX);
49526
+ setDraft(null);
49527
+ if (event.currentTarget.hasPointerCapture?.(event.pointerId) === true) event.currentTarget.releasePointerCapture(event.pointerId);
49528
+ onCommit(next);
49529
+ };
49530
+ const onKeyDown = (event) => {
49531
+ if (disabled) return;
49532
+ const current = draft ?? value;
49533
+ if (event.key === "ArrowRight" || event.key === "ArrowUp") {
49534
+ event.preventDefault();
49535
+ onCommit(nextClimateTarget(current, 1, {
49536
+ tempStep: step,
49537
+ minTemp: min,
49538
+ maxTemp: max
49539
+ }));
49540
+ } else if (event.key === "ArrowLeft" || event.key === "ArrowDown") {
49541
+ event.preventDefault();
49542
+ onCommit(nextClimateTarget(current, -1, {
49543
+ tempStep: step,
49544
+ minTemp: min,
49545
+ maxTemp: max
49546
+ }));
49547
+ } else if (event.key === "Home") {
49548
+ event.preventDefault();
49549
+ onCommit(min);
49550
+ } else if (event.key === "End") {
49551
+ event.preventDefault();
49552
+ onCommit(max);
49553
+ }
49554
+ };
48953
49555
  return /* @__PURE__ */ jsxs("div", {
48954
- className: "mt-2 w-full",
49556
+ ref: trackRef,
49557
+ role: "slider",
49558
+ "aria-label": label,
49559
+ "aria-valuemin": min,
49560
+ "aria-valuemax": max,
49561
+ "aria-valuenow": shown,
49562
+ "aria-disabled": disabled,
49563
+ tabIndex: disabled ? -1 : 0,
49564
+ onPointerDown,
49565
+ onPointerMove,
49566
+ onPointerUp: endDrag,
49567
+ onPointerCancel: endDrag,
49568
+ onKeyDown,
49569
+ className: cn("mt-1 w-full touch-none select-none py-2", disabled ? "cursor-not-allowed opacity-40" : "cursor-ew-resize"),
48955
49570
  children: [/* @__PURE__ */ jsxs("div", {
48956
49571
  className: "relative h-1.5 w-full rounded-full bg-surface-subtle",
48957
49572
  children: [/* @__PURE__ */ jsx("div", {
@@ -48961,7 +49576,7 @@ function RangeTrack({ value, min, max, accent }) {
48961
49576
  background: accent
48962
49577
  }
48963
49578
  }), /* @__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",
49579
+ 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
49580
  style: {
48966
49581
  left: pct,
48967
49582
  background: accent
@@ -48978,7 +49593,7 @@ function RangeTrack({ value, min, max, accent }) {
48978
49593
  * vent; every active mode renders drifting particles that FALL (cool/dry/auto)
48979
49594
  * or RISE (heat), with a horizontal sweep overlaid when a swing axis is active.
48980
49595
  */
48981
- function AirflowViz({ mode, accent, periodSec, swaying }) {
49596
+ function AirflowViz({ mode, accent, periodSec, swaying, forceRising = false }) {
48982
49597
  const columns = [
48983
49598
  0,
48984
49599
  1,
@@ -48987,7 +49602,7 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
48987
49602
  4,
48988
49603
  5
48989
49604
  ];
48990
- const rising = mode === "heat";
49605
+ const rising = forceRising || mode === "heat";
48991
49606
  const isDroplet = mode === "dry";
48992
49607
  return /* @__PURE__ */ jsx("div", {
48993
49608
  "aria-hidden": true,
@@ -49003,6 +49618,7 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
49003
49618
  size: 56
49004
49619
  })
49005
49620
  }) : /* @__PURE__ */ jsx("div", {
49621
+ "data-testid": forceRising ? "climate-heat-rise" : void 0,
49006
49622
  className: cn("acv-sway-wrap absolute inset-0", swaying && "acv-sway"),
49007
49623
  style: swaying ? { animation: "acv-sway 2.6s ease-in-out infinite" } : void 0,
49008
49624
  children: columns.map((i) => {
@@ -49025,6 +49641,23 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
49025
49641
  })
49026
49642
  });
49027
49643
  }
49644
+ /** Still radiator fins — the off state of a heating-only climate. */
49645
+ function RadiatorFins() {
49646
+ return /* @__PURE__ */ jsx("div", {
49647
+ "data-testid": "climate-radiator",
49648
+ "aria-hidden": true,
49649
+ className: "flex h-full items-end justify-center gap-1.5 px-8 pb-3 opacity-40",
49650
+ children: [
49651
+ 0,
49652
+ 1,
49653
+ 2,
49654
+ 3,
49655
+ 4,
49656
+ 5,
49657
+ 6
49658
+ ].map((i) => /* @__PURE__ */ jsx("span", { className: "h-10 w-1.5 rounded-t-full bg-foreground-subtle" }, i))
49659
+ });
49660
+ }
49028
49661
  /** Big spinning fan for `fan_only` mode. */
49029
49662
  function FanBlades({ color, periodSec, size }) {
49030
49663
  return /* @__PURE__ */ jsxs("svg", {
@@ -49191,16 +49824,33 @@ var MODE_ARC_COLOR = {
49191
49824
  */
49192
49825
  function ThermostatHeroCard({ trpc, deviceId, features: _features, optimistic }) {
49193
49826
  const t = useUiText();
49194
- const { cap, slice, available } = useDeviceCapability({
49827
+ const climate = useDeviceCapability({
49195
49828
  trpc,
49196
49829
  deviceId,
49197
49830
  cap: (d) => d.climateControl,
49198
49831
  slice: (d) => d.state.climateControl
49199
49832
  });
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;
49833
+ const valve = useDeviceCapability({
49834
+ trpc,
49835
+ deviceId,
49836
+ cap: (d) => d.heatingValve,
49837
+ slice: (d) => d.state.heatingValve
49838
+ });
49839
+ const { display, applyOptimistic } = useOptimisticSlice(climate.slice, { enabled: optimistic ?? true });
49840
+ const hasClimate = climate.cap !== void 0 && display !== void 0;
49841
+ const hasValve = valve.cap !== void 0;
49842
+ if (!hasClimate && !hasValve) return null;
49843
+ if (!hasClimate && hasValve) return /* @__PURE__ */ jsx("div", {
49844
+ className: "flex flex-col items-stretch gap-3 rounded-lg border border-border bg-surface p-4",
49845
+ children: /* @__PURE__ */ jsx(HeatingValveReadout, {
49846
+ trpc,
49847
+ deviceId,
49848
+ layout: "full"
49849
+ })
49850
+ });
49851
+ if (climate.cap === void 0 || display === void 0) return null;
49852
+ const cap = climate.cap;
49853
+ const busy = !climate.available;
49204
49854
  const color = MODE_ARC_COLOR[display.mode];
49205
49855
  const isRange = display.mode === "heat_cool" || display.targetLow !== null && display.targetHigh !== null;
49206
49856
  const min = DEFAULT_TEMP_MIN;
@@ -49211,132 +49861,140 @@ function ThermostatHeroCard({ trpc, deviceId, features: _features, optimistic })
49211
49861
  return /* @__PURE__ */ jsxs("div", {
49212
49862
  "data-mode": display.mode,
49213
49863
  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, {
49864
+ children: [
49865
+ /* @__PURE__ */ jsxs("div", {
49866
+ className: "flex flex-col items-center gap-3",
49867
+ children: [/* @__PURE__ */ jsxs("div", {
49868
+ className: "relative",
49869
+ style: {
49870
+ width: GAUGE_SIZE,
49871
+ height: GAUGE_SIZE
49872
+ },
49873
+ children: [
49874
+ isRange ? /* @__PURE__ */ jsx(GaugeRing, {
49875
+ mode: "band",
49876
+ band: {
49877
+ from: fractionLow,
49878
+ to: fractionHigh
49879
+ },
49880
+ color
49881
+ }) : /* @__PURE__ */ jsx(GaugeRing, {
49882
+ mode: "fill",
49270
49883
  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
- ]
49884
+ color
49885
+ }),
49886
+ isRange ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
49887
+ "data-testid": "arc-knob",
49888
+ children: /* @__PURE__ */ jsx(ArcKnob, {
49889
+ fraction: fractionLow,
49890
+ color,
49891
+ knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49892
+ onDragFraction: (f) => {
49893
+ if (busy || display.targetHigh === null) return;
49894
+ const next = Math.min(fractionToTemp(f, min, max), display.targetHigh);
49895
+ applyOptimistic({ targetLow: next });
49896
+ cap.setTargetRange({
49897
+ targetLow: next,
49898
+ targetHigh: display.targetHigh
49899
+ });
49900
+ }
49306
49901
  })
49307
- ]
49902
+ }), /* @__PURE__ */ jsx("div", {
49903
+ "data-testid": "arc-knob",
49904
+ children: /* @__PURE__ */ jsx(ArcKnob, {
49905
+ fraction: fractionHigh,
49906
+ color,
49907
+ knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49908
+ onDragFraction: (f) => {
49909
+ if (busy || display.targetLow === null) return;
49910
+ const next = Math.max(fractionToTemp(f, min, max), display.targetLow);
49911
+ applyOptimistic({ targetHigh: next });
49912
+ cap.setTargetRange({
49913
+ targetLow: display.targetLow,
49914
+ targetHigh: next
49915
+ });
49916
+ }
49917
+ })
49918
+ })] }) : /* @__PURE__ */ jsx("div", {
49919
+ "data-testid": "arc-knob",
49920
+ children: /* @__PURE__ */ jsx(ArcKnob, {
49921
+ fraction: singleFraction,
49922
+ color,
49923
+ knobTopPx: THERMOSTAT_KNOB_TOP_PX,
49924
+ onDragFraction: (f) => {
49925
+ if (busy) return;
49926
+ const next = fractionToTemp(f, min, max);
49927
+ applyOptimistic({ target: next });
49928
+ cap.setTarget({ target: next });
49929
+ }
49930
+ })
49931
+ }),
49932
+ /* @__PURE__ */ jsxs("div", {
49933
+ className: "absolute inset-0 flex flex-col items-center justify-center gap-0.5 pointer-events-none",
49934
+ children: [
49935
+ /* @__PURE__ */ jsxs("div", {
49936
+ "data-testid": "current-temp",
49937
+ className: "text-4xl font-bold tabular-nums text-foreground leading-none",
49938
+ children: [display.currentTemp !== null ? display.currentTemp : "—", /* @__PURE__ */ jsx("span", {
49939
+ className: "text-lg text-foreground-subtle font-normal ml-0.5",
49940
+ children: "°"
49941
+ })]
49942
+ }),
49943
+ !isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
49944
+ className: "text-xs font-semibold",
49945
+ style: { color },
49946
+ children: t("uiLibrary.thermostatHeroCard.setTo", "set {{value}}°", { value: display.target })
49947
+ }),
49948
+ isRange && display.targetLow !== null && display.targetHigh !== null && /* @__PURE__ */ jsxs("div", {
49949
+ className: "text-xs font-semibold",
49950
+ style: { color },
49951
+ children: [
49952
+ display.targetLow,
49953
+ "° – ",
49954
+ display.targetHigh,
49955
+ "°"
49956
+ ]
49957
+ })
49958
+ ]
49959
+ })
49960
+ ]
49961
+ }), !isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
49962
+ className: "w-[200px]",
49963
+ children: /* @__PURE__ */ jsx(Stepper, {
49964
+ value: `${display.target}°`,
49965
+ onDelta: (d) => {
49966
+ if (busy || display.target === null) return;
49967
+ const next = display.target + d;
49968
+ applyOptimistic({ target: next });
49969
+ cap.setTarget({ target: next });
49970
+ }
49308
49971
  })
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 });
49972
+ })]
49973
+ }),
49974
+ hasValve ? /* @__PURE__ */ jsx(HeatingValveReadout, {
49975
+ trpc,
49976
+ deviceId,
49977
+ layout: "full"
49978
+ }) : null,
49979
+ /* @__PURE__ */ jsx("select", {
49980
+ "aria-label": t("uiLibrary.thermostatHeroCard.mode", "Mode"),
49981
+ value: display.mode,
49982
+ disabled: busy,
49983
+ onChange: (e) => {
49984
+ e.stopPropagation();
49985
+ const mode = e.target.value;
49986
+ if (!busy && mode) {
49987
+ applyOptimistic({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
49988
+ cap.setMode({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
49319
49989
  }
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
- })]
49990
+ },
49991
+ className: cn("w-full rounded border border-border bg-surface px-3 py-1.5 text-sm", busy && "opacity-40 cursor-not-allowed"),
49992
+ children: display.availableModes.map((m) => /* @__PURE__ */ jsx("option", {
49993
+ value: m,
49994
+ children: m
49995
+ }, m))
49996
+ })
49997
+ ]
49340
49998
  });
49341
49999
  }
49342
50000
  //#endregion
@@ -50844,14 +51502,32 @@ function useClimateCapGuard(trpc, deviceId) {
50844
51502
  });
50845
51503
  return cap !== void 0;
50846
51504
  }
50847
- function ThermostatInlineControl({ trpc, deviceId, features, optimistic }) {
50848
- if (!useClimateCapGuard(trpc, deviceId)) return null;
50849
- return /* @__PURE__ */ jsx(ClimatePanel, {
51505
+ function useHeatingValveCapGuard(trpc, deviceId) {
51506
+ const { cap } = useDeviceCapability({
50850
51507
  trpc,
50851
51508
  deviceId,
50852
- features,
50853
- layout: "compact",
50854
- optimistic
51509
+ cap: (d) => d.heatingValve,
51510
+ slice: (d) => d.state.heatingValve
51511
+ });
51512
+ return cap !== void 0;
51513
+ }
51514
+ function ThermostatInlineControl({ trpc, deviceId, features, optimistic }) {
51515
+ const hasClimate = useClimateCapGuard(trpc, deviceId);
51516
+ const hasValve = useHeatingValveCapGuard(trpc, deviceId);
51517
+ if (!hasClimate && !hasValve) return null;
51518
+ return /* @__PURE__ */ jsxs("span", {
51519
+ className: "inline-flex items-center gap-2",
51520
+ children: [hasClimate ? /* @__PURE__ */ jsx(ClimatePanel, {
51521
+ trpc,
51522
+ deviceId,
51523
+ features,
51524
+ layout: "compact",
51525
+ optimistic
51526
+ }) : null, hasValve ? /* @__PURE__ */ jsx(HeatingValveReadout, {
51527
+ trpc,
51528
+ deviceId,
51529
+ layout: "compact"
51530
+ }) : null]
50855
51531
  });
50856
51532
  }
50857
51533
  function AcInlineControl({ trpc, deviceId, features, optimistic }) {
@@ -51016,6 +51692,10 @@ var CONTROL_KIND_COMPONENTS = {
51016
51692
  InlineControl: PetFeederInlineControl,
51017
51693
  HeroCard: PetFeederHeroCard
51018
51694
  },
51695
+ dishwasher: {
51696
+ InlineControl: DishwasherInlineControl,
51697
+ HeroCard: DishwasherHeroCard
51698
+ },
51019
51699
  script: {
51020
51700
  InlineControl: ScriptInlineControl,
51021
51701
  HeroCard: ScriptHeroCard
@@ -51092,7 +51772,8 @@ var CONTROL_FILLS = {
51092
51772
  [DeviceType.Weather]: false,
51093
51773
  [DeviceType.Container]: false,
51094
51774
  [DeviceType.Image]: false,
51095
- [DeviceType.PetFeeder]: false
51775
+ [DeviceType.PetFeeder]: false,
51776
+ [DeviceType.Dishwasher]: false
51096
51777
  };
51097
51778
  var DEVICE_TYPE_VALUES = new Set(Object.values(DeviceType));
51098
51779
  /**
@@ -63695,12 +64376,12 @@ function mirror(input, t = defaultUiText) {
63695
64376
  * Render inside `<Suspense>` at all call sites. */
63696
64377
  var MaskShapeCanvas = lazy(() => import("./MaskShapeCanvas-C9cJlxvG.js").then((m) => ({ default: m.MaskShapeCanvas })));
63697
64378
  /** Lazy-wrapped `MotionZonesSettings` — code-split off the main bundle. */
63698
- var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-Bv8XzCa3.js").then((m) => ({ default: m.MotionZonesSettings })));
64379
+ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-C3Tj12yc.js").then((m) => ({ default: m.MotionZonesSettings })));
63699
64380
  /** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
63700
64381
  * same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
63701
64382
  * 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 })));
64383
+ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-30H29vN4.js").then((m) => ({ default: m.SceneMonitorEditor })));
63703
64384
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
63704
- var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-BlkbESYj.js").then((m) => ({ default: m.PrivacyMaskSettings })));
64385
+ var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
63705
64386
  //#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 };
64387
+ 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, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, 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 };