@camera.ui/sdk 0.0.25 → 0.0.26

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.d.ts CHANGED
@@ -1113,7 +1113,23 @@ declare const audioMeta: {
1113
1113
  readonly assignmentKey: "audio";
1114
1114
  readonly multiProvider: false;
1115
1115
  readonly isDetectionType: true;
1116
- readonly properties: AudioProperty[];
1116
+ readonly properties: {
1117
+ readonly detected: {
1118
+ readonly type: "boolean";
1119
+ };
1120
+ readonly detections: {
1121
+ readonly type: "object";
1122
+ readonly internal: true;
1123
+ };
1124
+ readonly decibels: {
1125
+ readonly type: "number";
1126
+ readonly unit: "dB";
1127
+ };
1128
+ readonly lastTriggered: {
1129
+ readonly type: "number";
1130
+ readonly internal: true;
1131
+ };
1132
+ };
1117
1133
  readonly semantics: null;
1118
1134
  };
1119
1135
 
@@ -1128,6 +1144,28 @@ interface SensorVirtualDefaults {
1128
1144
  readonly properties: Readonly<Record<string, unknown>>;
1129
1145
  readonly capabilities?: readonly string[];
1130
1146
  }
1147
+ /** Runtime value type of a sensor property. */
1148
+ type SensorPropertyValueType = 'boolean' | 'number' | 'string' | 'enum' | 'object';
1149
+ /**
1150
+ * Per-property value description: what type a property carries, its possible
1151
+ * enum values or numeric range, and whether it is a command or an internal
1152
+ * detail. Consumers (automation pickers, value editors) render from this
1153
+ * instead of hand-maintained tables.
1154
+ */
1155
+ interface SensorPropertySpec {
1156
+ readonly type: SensorPropertyValueType;
1157
+ /** Enum properties: value-name → wire value. Names double as i18n key stems. */
1158
+ readonly values?: Readonly<Record<string, string | number>>;
1159
+ /** Object properties: scalar member keys, exposed as value-path variables. */
1160
+ readonly keys?: readonly string[];
1161
+ readonly min?: number;
1162
+ readonly max?: number;
1163
+ readonly unit?: string;
1164
+ /** Accepts external writes (commands, target states, virtual sensor state). */
1165
+ readonly writable?: boolean;
1166
+ /** Not an observable state: hidden from trigger/condition pickers. */
1167
+ readonly internal?: boolean;
1168
+ }
1131
1169
  /** The kind of thing a sensor is, used by consumers to pick how to render it. */
1132
1170
  declare enum SensorDomain {
1133
1171
  Binary = "binary",
@@ -1171,7 +1209,7 @@ interface SensorMeta {
1171
1209
  readonly assignmentKey: string;
1172
1210
  readonly multiProvider: boolean;
1173
1211
  readonly isDetectionType: boolean;
1174
- readonly properties: readonly string[];
1212
+ readonly properties: Readonly<Record<string, SensorPropertySpec>>;
1175
1213
  readonly shortcutable?: boolean;
1176
1214
  readonly cascadeTrigger?: SensorCascadeTrigger;
1177
1215
  readonly propertyCapabilities?: Readonly<Record<string, string>>;
@@ -1320,7 +1358,26 @@ declare const batteryMeta: {
1320
1358
  readonly assignmentKey: "battery";
1321
1359
  readonly multiProvider: false;
1322
1360
  readonly isDetectionType: false;
1323
- readonly properties: BatteryProperty[];
1361
+ readonly properties: {
1362
+ readonly level: {
1363
+ readonly type: "number";
1364
+ readonly min: 0;
1365
+ readonly max: 100;
1366
+ readonly unit: "%";
1367
+ };
1368
+ readonly charging: {
1369
+ readonly type: "enum";
1370
+ readonly values: {
1371
+ readonly not_chargeable: ChargingState.NotChargeable;
1372
+ readonly not_charging: ChargingState.NotCharging;
1373
+ readonly charging: ChargingState.Charging;
1374
+ readonly full: ChargingState.Full;
1375
+ };
1376
+ };
1377
+ readonly low: {
1378
+ readonly type: "boolean";
1379
+ };
1380
+ };
1324
1381
  readonly shortcutable: true;
1325
1382
  readonly propertyCapabilities: {
1326
1383
  readonly charging: BatteryCapability.Charging;
@@ -1399,7 +1456,12 @@ declare const contactMeta: {
1399
1456
  readonly assignmentKey: "contact";
1400
1457
  readonly multiProvider: true;
1401
1458
  readonly isDetectionType: false;
1402
- readonly properties: ContactProperty.Detected[];
1459
+ readonly properties: {
1460
+ readonly detected: {
1461
+ readonly type: "boolean";
1462
+ readonly writable: true;
1463
+ };
1464
+ };
1403
1465
  readonly shortcutable: true;
1404
1466
  readonly cascadeTrigger: {
1405
1467
  readonly property: ContactProperty;
@@ -1492,7 +1554,12 @@ declare const doorbellMeta: {
1492
1554
  readonly assignmentKey: "doorbell";
1493
1555
  readonly multiProvider: true;
1494
1556
  readonly isDetectionType: false;
1495
- readonly properties: DoorbellProperty.Ring[];
1557
+ readonly properties: {
1558
+ readonly ring: {
1559
+ readonly type: "boolean";
1560
+ readonly writable: true;
1561
+ };
1562
+ };
1496
1563
  readonly shortcutable: true;
1497
1564
  readonly cascadeTrigger: {
1498
1565
  readonly property: DoorbellProperty;
@@ -1652,7 +1719,15 @@ declare const faceMeta: {
1652
1719
  readonly assignmentKey: "face";
1653
1720
  readonly multiProvider: false;
1654
1721
  readonly isDetectionType: true;
1655
- readonly properties: FaceProperty[];
1722
+ readonly properties: {
1723
+ readonly detected: {
1724
+ readonly type: "boolean";
1725
+ };
1726
+ readonly detections: {
1727
+ readonly type: "object";
1728
+ readonly internal: true;
1729
+ };
1730
+ };
1656
1731
  readonly semantics: null;
1657
1732
  };
1658
1733
 
@@ -1773,7 +1848,29 @@ declare const garageMeta: {
1773
1848
  readonly assignmentKey: "garage";
1774
1849
  readonly multiProvider: true;
1775
1850
  readonly isDetectionType: false;
1776
- readonly properties: GarageProperty[];
1851
+ readonly properties: {
1852
+ readonly currentState: {
1853
+ readonly type: "enum";
1854
+ readonly values: {
1855
+ readonly open: GarageState.Open;
1856
+ readonly closed: GarageState.Closed;
1857
+ readonly opening: GarageState.Opening;
1858
+ readonly closing: GarageState.Closing;
1859
+ readonly stopped: GarageState.Stopped;
1860
+ };
1861
+ };
1862
+ readonly targetState: {
1863
+ readonly type: "enum";
1864
+ readonly values: {
1865
+ readonly open: GarageState.Open;
1866
+ readonly closed: GarageState.Closed;
1867
+ };
1868
+ readonly writable: true;
1869
+ };
1870
+ readonly obstructionDetected: {
1871
+ readonly type: "boolean";
1872
+ };
1873
+ };
1777
1874
  readonly shortcutable: true;
1778
1875
  readonly cascadeTrigger: {
1779
1876
  readonly property: GarageProperty.CurrentState;
@@ -1864,7 +1961,15 @@ declare const humidityMeta: {
1864
1961
  readonly assignmentKey: "humidity";
1865
1962
  readonly multiProvider: true;
1866
1963
  readonly isDetectionType: false;
1867
- readonly properties: HumidityProperty.Current[];
1964
+ readonly properties: {
1965
+ readonly current: {
1966
+ readonly type: "number";
1967
+ readonly min: 0;
1968
+ readonly max: 100;
1969
+ readonly unit: "%";
1970
+ readonly writable: true;
1971
+ };
1972
+ };
1868
1973
  readonly shortcutable: true;
1869
1974
  readonly virtual: {
1870
1975
  readonly properties: {
@@ -1943,7 +2048,12 @@ declare const leakMeta: {
1943
2048
  readonly assignmentKey: "leak";
1944
2049
  readonly multiProvider: true;
1945
2050
  readonly isDetectionType: false;
1946
- readonly properties: LeakProperty.Detected[];
2051
+ readonly properties: {
2052
+ readonly detected: {
2053
+ readonly type: "boolean";
2054
+ readonly writable: true;
2055
+ };
2056
+ };
1947
2057
  readonly shortcutable: true;
1948
2058
  readonly cascadeTrigger: {
1949
2059
  readonly property: LeakProperty;
@@ -2096,7 +2206,15 @@ declare const licensePlateMeta: {
2096
2206
  readonly assignmentKey: "licensePlate";
2097
2207
  readonly multiProvider: false;
2098
2208
  readonly isDetectionType: true;
2099
- readonly properties: LicensePlateProperty[];
2209
+ readonly properties: {
2210
+ readonly detected: {
2211
+ readonly type: "boolean";
2212
+ };
2213
+ readonly detections: {
2214
+ readonly type: "object";
2215
+ readonly internal: true;
2216
+ };
2217
+ };
2100
2218
  readonly semantics: null;
2101
2219
  };
2102
2220
 
@@ -2203,7 +2321,19 @@ declare const lightMeta: {
2203
2321
  readonly assignmentKey: "light";
2204
2322
  readonly multiProvider: true;
2205
2323
  readonly isDetectionType: false;
2206
- readonly properties: LightProperty[];
2324
+ readonly properties: {
2325
+ readonly on: {
2326
+ readonly type: "boolean";
2327
+ readonly writable: true;
2328
+ };
2329
+ readonly brightness: {
2330
+ readonly type: "number";
2331
+ readonly min: 0;
2332
+ readonly max: 100;
2333
+ readonly unit: "%";
2334
+ readonly writable: true;
2335
+ };
2336
+ };
2207
2337
  readonly shortcutable: true;
2208
2338
  readonly cascadeTrigger: {
2209
2339
  readonly property: LightProperty.On;
@@ -2325,7 +2455,24 @@ declare const lockMeta: {
2325
2455
  readonly assignmentKey: "lock";
2326
2456
  readonly multiProvider: true;
2327
2457
  readonly isDetectionType: false;
2328
- readonly properties: LockProperty[];
2458
+ readonly properties: {
2459
+ readonly currentState: {
2460
+ readonly type: "enum";
2461
+ readonly values: {
2462
+ readonly secured: LockState.Secured;
2463
+ readonly unsecured: LockState.Unsecured;
2464
+ readonly unknown: LockState.Unknown;
2465
+ };
2466
+ };
2467
+ readonly targetState: {
2468
+ readonly type: "enum";
2469
+ readonly values: {
2470
+ readonly secured: LockState.Secured;
2471
+ readonly unsecured: LockState.Unsecured;
2472
+ };
2473
+ readonly writable: true;
2474
+ };
2475
+ };
2329
2476
  readonly shortcutable: true;
2330
2477
  readonly cascadeTrigger: {
2331
2478
  readonly property: LockProperty.CurrentState;
@@ -2479,7 +2626,23 @@ declare const motionMeta: {
2479
2626
  readonly assignmentKey: "motion";
2480
2627
  readonly multiProvider: false;
2481
2628
  readonly isDetectionType: true;
2482
- readonly properties: MotionProperty[];
2629
+ readonly properties: {
2630
+ readonly detected: {
2631
+ readonly type: "boolean";
2632
+ };
2633
+ readonly detections: {
2634
+ readonly type: "object";
2635
+ readonly internal: true;
2636
+ };
2637
+ readonly blocked: {
2638
+ readonly type: "boolean";
2639
+ readonly internal: true;
2640
+ };
2641
+ readonly lastTriggered: {
2642
+ readonly type: "number";
2643
+ readonly internal: true;
2644
+ };
2645
+ };
2483
2646
  readonly semantics: null;
2484
2647
  };
2485
2648
 
@@ -2632,7 +2795,18 @@ declare const objectMeta: {
2632
2795
  readonly assignmentKey: "object";
2633
2796
  readonly multiProvider: false;
2634
2797
  readonly isDetectionType: true;
2635
- readonly properties: ObjectProperty[];
2798
+ readonly properties: {
2799
+ readonly detected: {
2800
+ readonly type: "boolean";
2801
+ };
2802
+ readonly detections: {
2803
+ readonly type: "object";
2804
+ readonly internal: true;
2805
+ };
2806
+ readonly labels: {
2807
+ readonly type: "object";
2808
+ };
2809
+ };
2636
2810
  readonly semantics: null;
2637
2811
  };
2638
2812
 
@@ -2699,7 +2873,12 @@ declare const occupancyMeta: {
2699
2873
  readonly assignmentKey: "occupancy";
2700
2874
  readonly multiProvider: true;
2701
2875
  readonly isDetectionType: false;
2702
- readonly properties: OccupancyProperty.Detected[];
2876
+ readonly properties: {
2877
+ readonly detected: {
2878
+ readonly type: "boolean";
2879
+ readonly writable: true;
2880
+ };
2881
+ };
2703
2882
  readonly shortcutable: true;
2704
2883
  readonly cascadeTrigger: {
2705
2884
  readonly property: OccupancyProperty;
@@ -2947,7 +3126,38 @@ declare const ptzMeta: {
2947
3126
  readonly assignmentKey: "ptz";
2948
3127
  readonly multiProvider: false;
2949
3128
  readonly isDetectionType: false;
2950
- readonly properties: PTZProperty[];
3129
+ readonly properties: {
3130
+ readonly position: {
3131
+ readonly type: "object";
3132
+ readonly writable: true;
3133
+ readonly keys: readonly ["pan", "tilt", "zoom"];
3134
+ };
3135
+ readonly moving: {
3136
+ readonly type: "boolean";
3137
+ };
3138
+ readonly presets: {
3139
+ readonly type: "object";
3140
+ };
3141
+ readonly velocity: {
3142
+ readonly type: "object";
3143
+ readonly writable: true;
3144
+ readonly internal: true;
3145
+ };
3146
+ readonly targetPreset: {
3147
+ readonly type: "string";
3148
+ readonly writable: true;
3149
+ };
3150
+ readonly relativeMove: {
3151
+ readonly type: "object";
3152
+ readonly writable: true;
3153
+ readonly internal: true;
3154
+ };
3155
+ readonly home: {
3156
+ readonly type: "boolean";
3157
+ readonly writable: true;
3158
+ readonly internal: true;
3159
+ };
3160
+ };
2951
3161
  readonly semantics: null;
2952
3162
  };
2953
3163
 
@@ -3053,7 +3263,28 @@ declare const securitySystemMeta: {
3053
3263
  readonly assignmentKey: "securitySystem";
3054
3264
  readonly multiProvider: true;
3055
3265
  readonly isDetectionType: false;
3056
- readonly properties: SecuritySystemProperty[];
3266
+ readonly properties: {
3267
+ readonly currentState: {
3268
+ readonly type: "enum";
3269
+ readonly values: {
3270
+ readonly stay_arm: SecuritySystemState.StayArm;
3271
+ readonly away_arm: SecuritySystemState.AwayArm;
3272
+ readonly night_arm: SecuritySystemState.NightArm;
3273
+ readonly disarmed: SecuritySystemState.Disarmed;
3274
+ readonly alarm_triggered: SecuritySystemState.AlarmTriggered;
3275
+ };
3276
+ };
3277
+ readonly targetState: {
3278
+ readonly type: "enum";
3279
+ readonly values: {
3280
+ readonly stay_arm: SecuritySystemState.StayArm;
3281
+ readonly away_arm: SecuritySystemState.AwayArm;
3282
+ readonly night_arm: SecuritySystemState.NightArm;
3283
+ readonly disarmed: SecuritySystemState.Disarmed;
3284
+ };
3285
+ readonly writable: true;
3286
+ };
3287
+ };
3057
3288
  readonly shortcutable: true;
3058
3289
  readonly cascadeTrigger: {
3059
3290
  readonly property: SecuritySystemProperty.CurrentState;
@@ -3178,7 +3409,19 @@ declare const sirenMeta: {
3178
3409
  readonly assignmentKey: "siren";
3179
3410
  readonly multiProvider: true;
3180
3411
  readonly isDetectionType: false;
3181
- readonly properties: SirenProperty[];
3412
+ readonly properties: {
3413
+ readonly active: {
3414
+ readonly type: "boolean";
3415
+ readonly writable: true;
3416
+ };
3417
+ readonly volume: {
3418
+ readonly type: "number";
3419
+ readonly min: 0;
3420
+ readonly max: 100;
3421
+ readonly unit: "%";
3422
+ readonly writable: true;
3423
+ };
3424
+ };
3182
3425
  readonly shortcutable: true;
3183
3426
  readonly cascadeTrigger: {
3184
3427
  readonly property: SirenProperty.Active;
@@ -3265,7 +3508,12 @@ declare const smokeMeta: {
3265
3508
  readonly assignmentKey: "smoke";
3266
3509
  readonly multiProvider: true;
3267
3510
  readonly isDetectionType: false;
3268
- readonly properties: SmokeProperty.Detected[];
3511
+ readonly properties: {
3512
+ readonly detected: {
3513
+ readonly type: "boolean";
3514
+ readonly writable: true;
3515
+ };
3516
+ };
3269
3517
  readonly shortcutable: true;
3270
3518
  readonly cascadeTrigger: {
3271
3519
  readonly property: SmokeProperty;
@@ -3360,7 +3608,12 @@ declare const switchMeta: {
3360
3608
  readonly assignmentKey: "switch";
3361
3609
  readonly multiProvider: true;
3362
3610
  readonly isDetectionType: false;
3363
- readonly properties: SwitchProperty.On[];
3611
+ readonly properties: {
3612
+ readonly on: {
3613
+ readonly type: "boolean";
3614
+ readonly writable: true;
3615
+ };
3616
+ };
3364
3617
  readonly shortcutable: true;
3365
3618
  readonly cascadeTrigger: {
3366
3619
  readonly property: SwitchProperty;
@@ -3840,7 +4093,13 @@ declare const temperatureMeta: {
3840
4093
  readonly assignmentKey: "temperature";
3841
4094
  readonly multiProvider: true;
3842
4095
  readonly isDetectionType: false;
3843
- readonly properties: TemperatureProperty.Current[];
4096
+ readonly properties: {
4097
+ readonly current: {
4098
+ readonly type: "number";
4099
+ readonly unit: "°C";
4100
+ readonly writable: true;
4101
+ };
4102
+ };
3844
4103
  readonly shortcutable: true;
3845
4104
  readonly virtual: {
3846
4105
  readonly properties: {
@@ -3856,150 +4115,6 @@ declare const temperatureMeta: {
3856
4115
  };
3857
4116
  };
3858
4117
 
3859
- /**
3860
- * Property names of a classifier sensor.
3861
- *
3862
- * @internal
3863
- */
3864
- declare enum ClassifierProperty {
3865
- /** Whether any classification result is active. */
3866
- Detected = "detected",
3867
- /** List of classification results with labels and confidence. */
3868
- Detections = "detections",
3869
- /** Unique labels of the current detections (auto-derived when reporting detections). */
3870
- Labels = "labels"
3871
- }
3872
- /** A classifier detection result with an open attribute for classifier categories. */
3873
- interface ClassifierDetection extends Detection {
3874
- /** Classifier category (e.g. `'bird'`, `'delivery'`). Open string for any classifier. */
3875
- attribute: string;
3876
- /** Classifier sub-category (e.g. `'woodpecker'`, `'amazon'`). */
3877
- subAttribute: string;
3878
- }
3879
- /**
3880
- * Property shape carried by a {@link ClassifierSensor}.
3881
- *
3882
- * @internal
3883
- */
3884
- interface ClassifierSensorProperties {
3885
- [ClassifierProperty.Detected]: boolean;
3886
- [ClassifierProperty.Detections]: ClassifierDetection[];
3887
- [ClassifierProperty.Labels]: string[];
3888
- }
3889
- /** Read-only proxy interface for a classifier sensor. */
3890
- interface ClassifierSensorLike extends SensorLike {
3891
- /** Sensor type discriminant. */
3892
- readonly type: SensorType.Classifier;
3893
- /** Property change observable narrowed to classifier properties. */
3894
- readonly onPropertyChanged: Observable<PropertyChangeOf<ClassifierSensorProperties>>;
3895
- getValue(property: ClassifierProperty.Detected): boolean | undefined;
3896
- getValue(property: ClassifierProperty.Detections): ClassifierDetection[] | undefined;
3897
- getValue(property: ClassifierProperty.Labels): string[] | undefined;
3898
- getValue(property: string): unknown;
3899
- }
3900
- /**
3901
- * General-purpose image classifier sensor.
3902
- *
3903
- * Plugin authors call `reportDetections(list)` to push classification results.
3904
- * `detected` and `labels` are auto-derived from the detection list.
3905
- */
3906
- declare class ClassifierSensor<TStorage extends object = Record<string, any>> extends Sensor<ClassifierSensorProperties, TStorage> {
3907
- readonly type = SensorType.Classifier;
3908
- readonly category = SensorCategory.Sensor;
3909
- _requiresFrames: boolean;
3910
- constructor(name?: string);
3911
- /** Whether any classification result is active. */
3912
- get detected(): boolean;
3913
- /** Current detection list. */
3914
- get detections(): ClassifierDetection[];
3915
- /** Unique labels of the current detections. */
3916
- get labels(): string[];
3917
- /**
3918
- * Report classification results. Auto-derives `detected` and `labels` from the list.
3919
- *
3920
- * - `reportDetections(true)` — generic classification trigger. The SDK
3921
- * synthesizes a single full-frame detection with empty attribute/subAttribute.
3922
- * - `reportDetections(true, [...])` — explicit classifier detections.
3923
- * - `reportDetections(false)` — clear.
3924
- *
3925
- * @param detected - Whether any classification result is active.
3926
- *
3927
- * @param detections - Optional explicit classifier detections to publish.
3928
- *
3929
- * @example
3930
- * ```ts
3931
- * import type { ClassifierDetection } from '@camera.ui/sdk';
3932
- * sensor.reportDetections(true, [
3933
- * {
3934
- * label: 'animal',
3935
- * confidence: 0.88,
3936
- * box: { x: 0.1, y: 0.2, width: 0.3, height: 0.4 },
3937
- * attribute: 'bird',
3938
- * subAttribute: 'woodpecker',
3939
- * } satisfies ClassifierDetection,
3940
- * ]);
3941
- * sensor.reportDetections(false);
3942
- * ```
3943
- */
3944
- reportDetections(detected: boolean, detections?: ClassifierDetection[]): void;
3945
- /**
3946
- * Explicitly clear classifier state (detected = false, detections = [], labels = []).
3947
- *
3948
- * @example
3949
- * ```ts
3950
- * sensor.clearDetections();
3951
- * ```
3952
- */
3953
- clearDetections(): void;
3954
- /**
3955
- * Read-only sensor: external writes are ignored. State is reported via `reportDetections`.
3956
- *
3957
- * Called by the cross-process plugin host when a generic property write is received.
3958
- * Classifier sensors have no externally writable properties, so the parameters are
3959
- * unused (underscore-prefixed) and the call is a no-op.
3960
- *
3961
- * @param _property - Unused — classifier sensors expose no writable properties.
3962
- *
3963
- * @param _value - Unused — classifier sensors expose no writable properties.
3964
- *
3965
- * @internal
3966
- */
3967
- updateValue(_property: string, _value: unknown): void;
3968
- }
3969
- /** Return type for {@link ClassifierDetectorSensor.detectClassifications}. */
3970
- interface ClassifierResult {
3971
- /** Whether any classification result is emitted for this frame. */
3972
- detected: boolean;
3973
- /** Detections emitted for this frame. */
3974
- detections: ClassifierDetection[];
3975
- }
3976
- /**
3977
- * Classifier detector that receives video frames from the backend pipeline.
3978
- * Extend this class and implement {@link detectClassifications} to run image
3979
- * classification models against trigger regions.
3980
- */
3981
- declare abstract class ClassifierDetectorSensor<TStorage extends object = Record<string, any>> extends ClassifierSensor<TStorage> {
3982
- _requiresFrames: boolean;
3983
- /** Declares the expected input dimensions and trigger labels. The backend scales frames to match. */
3984
- abstract get modelSpec(): ModelSpec;
3985
- /**
3986
- * Classify frames in batch. Each frame is a pre-cropped, pre-scaled
3987
- * trigger region produced by the upstream object detector. Must return
3988
- * exactly one ClassifierResult per input frame, in the same order.
3989
- */
3990
- abstract detectClassifications(frames: VideoFrameData[]): Promise<ClassifierResult[]>;
3991
- }
3992
- /** Registry metadata for {@link ClassifierSensor}. */
3993
- declare const classifierMeta: {
3994
- readonly type: SensorType.Classifier;
3995
- readonly category: SensorCategory.Sensor;
3996
- readonly assignmentKey: "classifier";
3997
- readonly multiProvider: true;
3998
- readonly isDetectionType: true;
3999
- readonly properties: ClassifierProperty[];
4000
- readonly semantics: null;
4001
- };
4002
-
4003
4118
  /** Every sensor's metadata. A new sensor type adds its meta here. */
4004
4119
  declare const SENSOR_META: readonly [{
4005
4120
  readonly type: SensorType.Audio;
@@ -4007,7 +4122,23 @@ declare const SENSOR_META: readonly [{
4007
4122
  readonly assignmentKey: "audio";
4008
4123
  readonly multiProvider: false;
4009
4124
  readonly isDetectionType: true;
4010
- readonly properties: AudioProperty[];
4125
+ readonly properties: {
4126
+ readonly detected: {
4127
+ readonly type: "boolean";
4128
+ };
4129
+ readonly detections: {
4130
+ readonly type: "object";
4131
+ readonly internal: true;
4132
+ };
4133
+ readonly decibels: {
4134
+ readonly type: "number";
4135
+ readonly unit: "dB";
4136
+ };
4137
+ readonly lastTriggered: {
4138
+ readonly type: "number";
4139
+ readonly internal: true;
4140
+ };
4141
+ };
4011
4142
  readonly semantics: null;
4012
4143
  }, {
4013
4144
  readonly type: SensorType.Battery;
@@ -4015,7 +4146,26 @@ declare const SENSOR_META: readonly [{
4015
4146
  readonly assignmentKey: "battery";
4016
4147
  readonly multiProvider: false;
4017
4148
  readonly isDetectionType: false;
4018
- readonly properties: BatteryProperty[];
4149
+ readonly properties: {
4150
+ readonly level: {
4151
+ readonly type: "number";
4152
+ readonly min: 0;
4153
+ readonly max: 100;
4154
+ readonly unit: "%";
4155
+ };
4156
+ readonly charging: {
4157
+ readonly type: "enum";
4158
+ readonly values: {
4159
+ readonly not_chargeable: ChargingState.NotChargeable;
4160
+ readonly not_charging: ChargingState.NotCharging;
4161
+ readonly charging: ChargingState.Charging;
4162
+ readonly full: ChargingState.Full;
4163
+ };
4164
+ };
4165
+ readonly low: {
4166
+ readonly type: "boolean";
4167
+ };
4168
+ };
4019
4169
  readonly shortcutable: true;
4020
4170
  readonly propertyCapabilities: {
4021
4171
  readonly charging: BatteryCapability.Charging;
@@ -4035,7 +4185,18 @@ declare const SENSOR_META: readonly [{
4035
4185
  readonly assignmentKey: "classifier";
4036
4186
  readonly multiProvider: true;
4037
4187
  readonly isDetectionType: true;
4038
- readonly properties: ClassifierProperty[];
4188
+ readonly properties: {
4189
+ readonly detected: {
4190
+ readonly type: "boolean";
4191
+ };
4192
+ readonly detections: {
4193
+ readonly type: "object";
4194
+ readonly internal: true;
4195
+ };
4196
+ readonly labels: {
4197
+ readonly type: "object";
4198
+ };
4199
+ };
4039
4200
  readonly semantics: null;
4040
4201
  }, {
4041
4202
  readonly type: SensorType.Clip;
@@ -4043,7 +4204,7 @@ declare const SENSOR_META: readonly [{
4043
4204
  readonly assignmentKey: "clip";
4044
4205
  readonly multiProvider: false;
4045
4206
  readonly isDetectionType: true;
4046
- readonly properties: readonly [];
4207
+ readonly properties: {};
4047
4208
  readonly semantics: null;
4048
4209
  }, {
4049
4210
  readonly type: SensorType.Contact;
@@ -4051,7 +4212,12 @@ declare const SENSOR_META: readonly [{
4051
4212
  readonly assignmentKey: "contact";
4052
4213
  readonly multiProvider: true;
4053
4214
  readonly isDetectionType: false;
4054
- readonly properties: ContactProperty.Detected[];
4215
+ readonly properties: {
4216
+ readonly detected: {
4217
+ readonly type: "boolean";
4218
+ readonly writable: true;
4219
+ };
4220
+ };
4055
4221
  readonly shortcutable: true;
4056
4222
  readonly cascadeTrigger: {
4057
4223
  readonly property: ContactProperty;
@@ -4075,7 +4241,12 @@ declare const SENSOR_META: readonly [{
4075
4241
  readonly assignmentKey: "doorbell";
4076
4242
  readonly multiProvider: true;
4077
4243
  readonly isDetectionType: false;
4078
- readonly properties: DoorbellProperty.Ring[];
4244
+ readonly properties: {
4245
+ readonly ring: {
4246
+ readonly type: "boolean";
4247
+ readonly writable: true;
4248
+ };
4249
+ };
4079
4250
  readonly shortcutable: true;
4080
4251
  readonly cascadeTrigger: {
4081
4252
  readonly property: DoorbellProperty;
@@ -4099,7 +4270,15 @@ declare const SENSOR_META: readonly [{
4099
4270
  readonly assignmentKey: "face";
4100
4271
  readonly multiProvider: false;
4101
4272
  readonly isDetectionType: true;
4102
- readonly properties: FaceProperty[];
4273
+ readonly properties: {
4274
+ readonly detected: {
4275
+ readonly type: "boolean";
4276
+ };
4277
+ readonly detections: {
4278
+ readonly type: "object";
4279
+ readonly internal: true;
4280
+ };
4281
+ };
4103
4282
  readonly semantics: null;
4104
4283
  }, {
4105
4284
  readonly type: SensorType.Garage;
@@ -4107,7 +4286,29 @@ declare const SENSOR_META: readonly [{
4107
4286
  readonly assignmentKey: "garage";
4108
4287
  readonly multiProvider: true;
4109
4288
  readonly isDetectionType: false;
4110
- readonly properties: GarageProperty[];
4289
+ readonly properties: {
4290
+ readonly currentState: {
4291
+ readonly type: "enum";
4292
+ readonly values: {
4293
+ readonly open: GarageState.Open;
4294
+ readonly closed: GarageState.Closed;
4295
+ readonly opening: GarageState.Opening;
4296
+ readonly closing: GarageState.Closing;
4297
+ readonly stopped: GarageState.Stopped;
4298
+ };
4299
+ };
4300
+ readonly targetState: {
4301
+ readonly type: "enum";
4302
+ readonly values: {
4303
+ readonly open: GarageState.Open;
4304
+ readonly closed: GarageState.Closed;
4305
+ };
4306
+ readonly writable: true;
4307
+ };
4308
+ readonly obstructionDetected: {
4309
+ readonly type: "boolean";
4310
+ };
4311
+ };
4111
4312
  readonly shortcutable: true;
4112
4313
  readonly cascadeTrigger: {
4113
4314
  readonly property: GarageProperty.CurrentState;
@@ -4139,7 +4340,15 @@ declare const SENSOR_META: readonly [{
4139
4340
  readonly assignmentKey: "humidity";
4140
4341
  readonly multiProvider: true;
4141
4342
  readonly isDetectionType: false;
4142
- readonly properties: HumidityProperty.Current[];
4343
+ readonly properties: {
4344
+ readonly current: {
4345
+ readonly type: "number";
4346
+ readonly min: 0;
4347
+ readonly max: 100;
4348
+ readonly unit: "%";
4349
+ readonly writable: true;
4350
+ };
4351
+ };
4143
4352
  readonly shortcutable: true;
4144
4353
  readonly virtual: {
4145
4354
  readonly properties: {
@@ -4159,7 +4368,12 @@ declare const SENSOR_META: readonly [{
4159
4368
  readonly assignmentKey: "leak";
4160
4369
  readonly multiProvider: true;
4161
4370
  readonly isDetectionType: false;
4162
- readonly properties: LeakProperty.Detected[];
4371
+ readonly properties: {
4372
+ readonly detected: {
4373
+ readonly type: "boolean";
4374
+ readonly writable: true;
4375
+ };
4376
+ };
4163
4377
  readonly shortcutable: true;
4164
4378
  readonly cascadeTrigger: {
4165
4379
  readonly property: LeakProperty;
@@ -4183,7 +4397,15 @@ declare const SENSOR_META: readonly [{
4183
4397
  readonly assignmentKey: "licensePlate";
4184
4398
  readonly multiProvider: false;
4185
4399
  readonly isDetectionType: true;
4186
- readonly properties: LicensePlateProperty[];
4400
+ readonly properties: {
4401
+ readonly detected: {
4402
+ readonly type: "boolean";
4403
+ };
4404
+ readonly detections: {
4405
+ readonly type: "object";
4406
+ readonly internal: true;
4407
+ };
4408
+ };
4187
4409
  readonly semantics: null;
4188
4410
  }, {
4189
4411
  readonly type: SensorType.Light;
@@ -4191,7 +4413,19 @@ declare const SENSOR_META: readonly [{
4191
4413
  readonly assignmentKey: "light";
4192
4414
  readonly multiProvider: true;
4193
4415
  readonly isDetectionType: false;
4194
- readonly properties: LightProperty[];
4416
+ readonly properties: {
4417
+ readonly on: {
4418
+ readonly type: "boolean";
4419
+ readonly writable: true;
4420
+ };
4421
+ readonly brightness: {
4422
+ readonly type: "number";
4423
+ readonly min: 0;
4424
+ readonly max: 100;
4425
+ readonly unit: "%";
4426
+ readonly writable: true;
4427
+ };
4428
+ };
4195
4429
  readonly shortcutable: true;
4196
4430
  readonly cascadeTrigger: {
4197
4431
  readonly property: LightProperty.On;
@@ -4219,7 +4453,24 @@ declare const SENSOR_META: readonly [{
4219
4453
  readonly assignmentKey: "lock";
4220
4454
  readonly multiProvider: true;
4221
4455
  readonly isDetectionType: false;
4222
- readonly properties: LockProperty[];
4456
+ readonly properties: {
4457
+ readonly currentState: {
4458
+ readonly type: "enum";
4459
+ readonly values: {
4460
+ readonly secured: LockState.Secured;
4461
+ readonly unsecured: LockState.Unsecured;
4462
+ readonly unknown: LockState.Unknown;
4463
+ };
4464
+ };
4465
+ readonly targetState: {
4466
+ readonly type: "enum";
4467
+ readonly values: {
4468
+ readonly secured: LockState.Secured;
4469
+ readonly unsecured: LockState.Unsecured;
4470
+ };
4471
+ readonly writable: true;
4472
+ };
4473
+ };
4223
4474
  readonly shortcutable: true;
4224
4475
  readonly cascadeTrigger: {
4225
4476
  readonly property: LockProperty.CurrentState;
@@ -4247,7 +4498,23 @@ declare const SENSOR_META: readonly [{
4247
4498
  readonly assignmentKey: "motion";
4248
4499
  readonly multiProvider: false;
4249
4500
  readonly isDetectionType: true;
4250
- readonly properties: MotionProperty[];
4501
+ readonly properties: {
4502
+ readonly detected: {
4503
+ readonly type: "boolean";
4504
+ };
4505
+ readonly detections: {
4506
+ readonly type: "object";
4507
+ readonly internal: true;
4508
+ };
4509
+ readonly blocked: {
4510
+ readonly type: "boolean";
4511
+ readonly internal: true;
4512
+ };
4513
+ readonly lastTriggered: {
4514
+ readonly type: "number";
4515
+ readonly internal: true;
4516
+ };
4517
+ };
4251
4518
  readonly semantics: null;
4252
4519
  }, {
4253
4520
  readonly type: SensorType.Object;
@@ -4255,7 +4522,18 @@ declare const SENSOR_META: readonly [{
4255
4522
  readonly assignmentKey: "object";
4256
4523
  readonly multiProvider: false;
4257
4524
  readonly isDetectionType: true;
4258
- readonly properties: ObjectProperty[];
4525
+ readonly properties: {
4526
+ readonly detected: {
4527
+ readonly type: "boolean";
4528
+ };
4529
+ readonly detections: {
4530
+ readonly type: "object";
4531
+ readonly internal: true;
4532
+ };
4533
+ readonly labels: {
4534
+ readonly type: "object";
4535
+ };
4536
+ };
4259
4537
  readonly semantics: null;
4260
4538
  }, {
4261
4539
  readonly type: SensorType.Occupancy;
@@ -4263,7 +4541,12 @@ declare const SENSOR_META: readonly [{
4263
4541
  readonly assignmentKey: "occupancy";
4264
4542
  readonly multiProvider: true;
4265
4543
  readonly isDetectionType: false;
4266
- readonly properties: OccupancyProperty.Detected[];
4544
+ readonly properties: {
4545
+ readonly detected: {
4546
+ readonly type: "boolean";
4547
+ readonly writable: true;
4548
+ };
4549
+ };
4267
4550
  readonly shortcutable: true;
4268
4551
  readonly cascadeTrigger: {
4269
4552
  readonly property: OccupancyProperty;
@@ -4287,7 +4570,38 @@ declare const SENSOR_META: readonly [{
4287
4570
  readonly assignmentKey: "ptz";
4288
4571
  readonly multiProvider: false;
4289
4572
  readonly isDetectionType: false;
4290
- readonly properties: PTZProperty[];
4573
+ readonly properties: {
4574
+ readonly position: {
4575
+ readonly type: "object";
4576
+ readonly writable: true;
4577
+ readonly keys: readonly ["pan", "tilt", "zoom"];
4578
+ };
4579
+ readonly moving: {
4580
+ readonly type: "boolean";
4581
+ };
4582
+ readonly presets: {
4583
+ readonly type: "object";
4584
+ };
4585
+ readonly velocity: {
4586
+ readonly type: "object";
4587
+ readonly writable: true;
4588
+ readonly internal: true;
4589
+ };
4590
+ readonly targetPreset: {
4591
+ readonly type: "string";
4592
+ readonly writable: true;
4593
+ };
4594
+ readonly relativeMove: {
4595
+ readonly type: "object";
4596
+ readonly writable: true;
4597
+ readonly internal: true;
4598
+ };
4599
+ readonly home: {
4600
+ readonly type: "boolean";
4601
+ readonly writable: true;
4602
+ readonly internal: true;
4603
+ };
4604
+ };
4291
4605
  readonly semantics: null;
4292
4606
  }, {
4293
4607
  readonly type: SensorType.SecuritySystem;
@@ -4295,7 +4609,28 @@ declare const SENSOR_META: readonly [{
4295
4609
  readonly assignmentKey: "securitySystem";
4296
4610
  readonly multiProvider: true;
4297
4611
  readonly isDetectionType: false;
4298
- readonly properties: SecuritySystemProperty[];
4612
+ readonly properties: {
4613
+ readonly currentState: {
4614
+ readonly type: "enum";
4615
+ readonly values: {
4616
+ readonly stay_arm: SecuritySystemState.StayArm;
4617
+ readonly away_arm: SecuritySystemState.AwayArm;
4618
+ readonly night_arm: SecuritySystemState.NightArm;
4619
+ readonly disarmed: SecuritySystemState.Disarmed;
4620
+ readonly alarm_triggered: SecuritySystemState.AlarmTriggered;
4621
+ };
4622
+ };
4623
+ readonly targetState: {
4624
+ readonly type: "enum";
4625
+ readonly values: {
4626
+ readonly stay_arm: SecuritySystemState.StayArm;
4627
+ readonly away_arm: SecuritySystemState.AwayArm;
4628
+ readonly night_arm: SecuritySystemState.NightArm;
4629
+ readonly disarmed: SecuritySystemState.Disarmed;
4630
+ };
4631
+ readonly writable: true;
4632
+ };
4633
+ };
4299
4634
  readonly shortcutable: true;
4300
4635
  readonly cascadeTrigger: {
4301
4636
  readonly property: SecuritySystemProperty.CurrentState;
@@ -4326,7 +4661,19 @@ declare const SENSOR_META: readonly [{
4326
4661
  readonly assignmentKey: "siren";
4327
4662
  readonly multiProvider: true;
4328
4663
  readonly isDetectionType: false;
4329
- readonly properties: SirenProperty[];
4664
+ readonly properties: {
4665
+ readonly active: {
4666
+ readonly type: "boolean";
4667
+ readonly writable: true;
4668
+ };
4669
+ readonly volume: {
4670
+ readonly type: "number";
4671
+ readonly min: 0;
4672
+ readonly max: 100;
4673
+ readonly unit: "%";
4674
+ readonly writable: true;
4675
+ };
4676
+ };
4330
4677
  readonly shortcutable: true;
4331
4678
  readonly cascadeTrigger: {
4332
4679
  readonly property: SirenProperty.Active;
@@ -4354,7 +4701,12 @@ declare const SENSOR_META: readonly [{
4354
4701
  readonly assignmentKey: "smoke";
4355
4702
  readonly multiProvider: true;
4356
4703
  readonly isDetectionType: false;
4357
- readonly properties: SmokeProperty.Detected[];
4704
+ readonly properties: {
4705
+ readonly detected: {
4706
+ readonly type: "boolean";
4707
+ readonly writable: true;
4708
+ };
4709
+ };
4358
4710
  readonly shortcutable: true;
4359
4711
  readonly cascadeTrigger: {
4360
4712
  readonly property: SmokeProperty;
@@ -4378,7 +4730,12 @@ declare const SENSOR_META: readonly [{
4378
4730
  readonly assignmentKey: "switch";
4379
4731
  readonly multiProvider: true;
4380
4732
  readonly isDetectionType: false;
4381
- readonly properties: SwitchProperty.On[];
4733
+ readonly properties: {
4734
+ readonly on: {
4735
+ readonly type: "boolean";
4736
+ readonly writable: true;
4737
+ };
4738
+ };
4382
4739
  readonly shortcutable: true;
4383
4740
  readonly cascadeTrigger: {
4384
4741
  readonly property: SwitchProperty;
@@ -4401,7 +4758,13 @@ declare const SENSOR_META: readonly [{
4401
4758
  readonly assignmentKey: "temperature";
4402
4759
  readonly multiProvider: true;
4403
4760
  readonly isDetectionType: false;
4404
- readonly properties: TemperatureProperty.Current[];
4761
+ readonly properties: {
4762
+ readonly current: {
4763
+ readonly type: "number";
4764
+ readonly unit: "°C";
4765
+ readonly writable: true;
4766
+ };
4767
+ };
4405
4768
  readonly shortcutable: true;
4406
4769
  readonly virtual: {
4407
4770
  readonly properties: {
@@ -5773,6 +6136,161 @@ interface PluginInfo {
5773
6136
  contract: PluginContract;
5774
6137
  }
5775
6138
 
6139
+ /**
6140
+ * Property names of a classifier sensor.
6141
+ *
6142
+ * @internal
6143
+ */
6144
+ declare enum ClassifierProperty {
6145
+ /** Whether any classification result is active. */
6146
+ Detected = "detected",
6147
+ /** List of classification results with labels and confidence. */
6148
+ Detections = "detections",
6149
+ /** Unique labels of the current detections (auto-derived when reporting detections). */
6150
+ Labels = "labels"
6151
+ }
6152
+ /** A classifier detection result with an open attribute for classifier categories. */
6153
+ interface ClassifierDetection extends Detection {
6154
+ /** Classifier category (e.g. `'bird'`, `'delivery'`). Open string for any classifier. */
6155
+ attribute: string;
6156
+ /** Classifier sub-category (e.g. `'woodpecker'`, `'amazon'`). */
6157
+ subAttribute: string;
6158
+ }
6159
+ /**
6160
+ * Property shape carried by a {@link ClassifierSensor}.
6161
+ *
6162
+ * @internal
6163
+ */
6164
+ interface ClassifierSensorProperties {
6165
+ [ClassifierProperty.Detected]: boolean;
6166
+ [ClassifierProperty.Detections]: ClassifierDetection[];
6167
+ [ClassifierProperty.Labels]: string[];
6168
+ }
6169
+ /** Read-only proxy interface for a classifier sensor. */
6170
+ interface ClassifierSensorLike extends SensorLike {
6171
+ /** Sensor type discriminant. */
6172
+ readonly type: SensorType.Classifier;
6173
+ /** Property change observable narrowed to classifier properties. */
6174
+ readonly onPropertyChanged: Observable<PropertyChangeOf<ClassifierSensorProperties>>;
6175
+ getValue(property: ClassifierProperty.Detected): boolean | undefined;
6176
+ getValue(property: ClassifierProperty.Detections): ClassifierDetection[] | undefined;
6177
+ getValue(property: ClassifierProperty.Labels): string[] | undefined;
6178
+ getValue(property: string): unknown;
6179
+ }
6180
+ /**
6181
+ * General-purpose image classifier sensor.
6182
+ *
6183
+ * Plugin authors call `reportDetections(list)` to push classification results.
6184
+ * `detected` and `labels` are auto-derived from the detection list.
6185
+ */
6186
+ declare class ClassifierSensor<TStorage extends object = Record<string, any>> extends Sensor<ClassifierSensorProperties, TStorage> {
6187
+ readonly type = SensorType.Classifier;
6188
+ readonly category = SensorCategory.Sensor;
6189
+ _requiresFrames: boolean;
6190
+ constructor(name?: string);
6191
+ /** Whether any classification result is active. */
6192
+ get detected(): boolean;
6193
+ /** Current detection list. */
6194
+ get detections(): ClassifierDetection[];
6195
+ /** Unique labels of the current detections. */
6196
+ get labels(): string[];
6197
+ /**
6198
+ * Report classification results. Auto-derives `detected` and `labels` from the list.
6199
+ *
6200
+ * - `reportDetections(true)` — generic classification trigger. The SDK
6201
+ * synthesizes a single full-frame detection with empty attribute/subAttribute.
6202
+ * - `reportDetections(true, [...])` — explicit classifier detections.
6203
+ * - `reportDetections(false)` — clear.
6204
+ *
6205
+ * @param detected - Whether any classification result is active.
6206
+ *
6207
+ * @param detections - Optional explicit classifier detections to publish.
6208
+ *
6209
+ * @example
6210
+ * ```ts
6211
+ * import type { ClassifierDetection } from '@camera.ui/sdk';
6212
+ * sensor.reportDetections(true, [
6213
+ * {
6214
+ * label: 'animal',
6215
+ * confidence: 0.88,
6216
+ * box: { x: 0.1, y: 0.2, width: 0.3, height: 0.4 },
6217
+ * attribute: 'bird',
6218
+ * subAttribute: 'woodpecker',
6219
+ * } satisfies ClassifierDetection,
6220
+ * ]);
6221
+ * sensor.reportDetections(false);
6222
+ * ```
6223
+ */
6224
+ reportDetections(detected: boolean, detections?: ClassifierDetection[]): void;
6225
+ /**
6226
+ * Explicitly clear classifier state (detected = false, detections = [], labels = []).
6227
+ *
6228
+ * @example
6229
+ * ```ts
6230
+ * sensor.clearDetections();
6231
+ * ```
6232
+ */
6233
+ clearDetections(): void;
6234
+ /**
6235
+ * Read-only sensor: external writes are ignored. State is reported via `reportDetections`.
6236
+ *
6237
+ * Called by the cross-process plugin host when a generic property write is received.
6238
+ * Classifier sensors have no externally writable properties, so the parameters are
6239
+ * unused (underscore-prefixed) and the call is a no-op.
6240
+ *
6241
+ * @param _property - Unused — classifier sensors expose no writable properties.
6242
+ *
6243
+ * @param _value - Unused — classifier sensors expose no writable properties.
6244
+ *
6245
+ * @internal
6246
+ */
6247
+ updateValue(_property: string, _value: unknown): void;
6248
+ }
6249
+ /** Return type for {@link ClassifierDetectorSensor.detectClassifications}. */
6250
+ interface ClassifierResult {
6251
+ /** Whether any classification result is emitted for this frame. */
6252
+ detected: boolean;
6253
+ /** Detections emitted for this frame. */
6254
+ detections: ClassifierDetection[];
6255
+ }
6256
+ /**
6257
+ * Classifier detector that receives video frames from the backend pipeline.
6258
+ * Extend this class and implement {@link detectClassifications} to run image
6259
+ * classification models against trigger regions.
6260
+ */
6261
+ declare abstract class ClassifierDetectorSensor<TStorage extends object = Record<string, any>> extends ClassifierSensor<TStorage> {
6262
+ _requiresFrames: boolean;
6263
+ /** Declares the expected input dimensions and trigger labels. The backend scales frames to match. */
6264
+ abstract get modelSpec(): ModelSpec;
6265
+ /**
6266
+ * Classify frames in batch. Each frame is a pre-cropped, pre-scaled
6267
+ * trigger region produced by the upstream object detector. Must return
6268
+ * exactly one ClassifierResult per input frame, in the same order.
6269
+ */
6270
+ abstract detectClassifications(frames: VideoFrameData[]): Promise<ClassifierResult[]>;
6271
+ }
6272
+ /** Registry metadata for {@link ClassifierSensor}. */
6273
+ declare const classifierMeta: {
6274
+ readonly type: SensorType.Classifier;
6275
+ readonly category: SensorCategory.Sensor;
6276
+ readonly assignmentKey: "classifier";
6277
+ readonly multiProvider: true;
6278
+ readonly isDetectionType: true;
6279
+ readonly properties: {
6280
+ readonly detected: {
6281
+ readonly type: "boolean";
6282
+ };
6283
+ readonly detections: {
6284
+ readonly type: "object";
6285
+ readonly internal: true;
6286
+ };
6287
+ readonly labels: {
6288
+ readonly type: "object";
6289
+ };
6290
+ };
6291
+ readonly semantics: null;
6292
+ };
6293
+
5776
6294
  /** A CLIP embedding result for a detected region. */
5777
6295
  interface ClipEmbedding {
5778
6296
  /** Detection label this embedding was computed for (e.g. `'person'`, `'vehicle'`). */
@@ -5830,7 +6348,7 @@ declare const clipMeta: {
5830
6348
  readonly assignmentKey: "clip";
5831
6349
  readonly multiProvider: false;
5832
6350
  readonly isDetectionType: true;
5833
- readonly properties: readonly [];
6351
+ readonly properties: {};
5834
6352
  readonly semantics: null;
5835
6353
  };
5836
6354
 
@@ -6816,4 +7334,4 @@ interface OAuthClientCredentialsCapable extends OAuthCapable {
6816
7334
  }
6817
7335
 
6818
7336
  export { API_EVENT, AudioDetectorSensor, AudioProperty, AudioSensor, BASE_AUDIO_LABELS, BasePlugin, BatteryCapability, BatteryInfo, BatteryProperty, BehaviorSubject, ChargingState, ClassifierDetectorSensor, ClassifierProperty, ClassifierSensor, ClipDetectorSensor, ContactProperty, ContactSensor, DETECTION_ATTRIBUTES, DETECTION_LABELS, Disposable, DoorbellProperty, DoorbellTrigger, EVENT_TRIGGER_TYPES, FaceDetectorSensor, FaceProperty, FaceSensor, GarageControl, GarageProperty, GarageState, HumidityInfo, HumidityProperty, LeakProperty, LeakSensor, LicensePlateDetectorSensor, LicensePlateProperty, LicensePlateSensor, LightCapability, LightControl, LightProperty, LockControl, LockProperty, LockState, MotionDetectorSensor, MotionProperty, MotionSensor, OBJECT_DETECTION_LABELS, ObjectDetectorSensor, ObjectProperty, ObjectSensor, Observable, OccupancyProperty, OccupancySensor, PTZCapability, PTZControl, PTZProperty, PluginCapability, PluginInterface, PluginRole, RING_AUTO_RESET_MS, ReplaySubject, RtpPacket, SENSOR_META, SecuritySystem, SecuritySystemProperty, SecuritySystemState, Sensor, SensorCategory, SensorDomain, SensorType, Severity, SirenCapability, SirenControl, SirenProperty, SmokeProperty, SmokeSensor, Subject, SwitchControl, SwitchProperty, TemperatureInfo, TemperatureProperty, audioMeta, batteryMeta, canCreateCameras, canProvideSensorsToAnyCameras, classifierMeta, clipMeta, contactMeta, defineSensor, distinctUntilChanged, doorbellMeta, faceMeta, filter, firstValueFrom, garageMeta, getContractValidationErrors, hasCapability, hasInterface, humidityMeta, isHub, leakMeta, licensePlateMeta, lightMeta, lockMeta, map, mergeMap, motionMeta, objectMeta, occupancyMeta, pairwise, ptzMeta, securitySystemMeta, sensorMeta, share, sirenMeta, smokeMeta, switchMeta, temperatureMeta, validateContractConsistency };
6819
- export type { AssignedPlugin, AudioCodec, AudioCodecProperties, AudioDetectionInterface, AudioDetectionPluginResponse, AudioDetectionSettings, AudioFFmpegCodec, AudioFrameData, AudioInputSpec, AudioLabel, AudioMetadata, AudioModelSpec, AudioResult, AudioSensorLike, AudioSensorProperties, AudioStreamInfo, BaseAudioLabel, BaseCamera, BaseCameraConfig, BatteryInfoLike, BatteryInfoProperties, BoundingBox, Camera, CameraAspectRatio, CameraAspectRatioPreset, CameraConfig, CameraConfigInputSettings, CameraDetectionSettings, CameraDevice, CameraDeviceSource, CameraFrameWorkerSettings, CameraImplementation, CameraInformation, CameraInput, CameraPluginInfo, CameraRole, CameraSource, CameraType, CameraUiSettings, ClassifierDetection, ClassifierDetectionInterface, ClassifierDetectionPluginResponse, ClassifierResult, ClassifierSensorLike, ClassifierSensorProperties, ClipDetectionInterface, ClipDetectionPluginResponse, ClipEmbedding, ClipResult, ClipTextEmbeddingResult, ContactSensorLike, ContactSensorProperties, CoreManager, CoreManagerEvent, CreateDownloadOptions, CreateStreamDownloadOptions, Detection, DetectionAttribute, DetectionEvent, DetectionEventState, DetectionEventType, DetectionLabel, DetectionLine, DetectionZone, DeviceManager, DeviceStorage, DiscoveredCamera, DiscoveryProvider, DoorbellTriggerLike, DoorbellTriggerProperties, DownloadCleanup, DownloadManager, DownloadToken, EventAttribute, EventDescription, EventDetection, EventSegment, EventTrigger, EventTriggerType, FMTPInfo, FaceDetection, FaceDetectionInterface, FaceDetectionPluginResponse, FaceResult, FaceSensorLike, FaceSensorProperties, Fmp4Session, Fmp4SessionOptions, FormSubmitResponse, FormSubmitSchema, GarageControlLike, GarageControlProperties, Go2RtcRTSPSource, Go2RtcSnapshotSource, Go2RtcWSSource, HardwareAcceleration, HumidityInfoLike, HumidityInfoProperties, ImageMetadata, JsonArraySchema, JsonBaseSchema, JsonBaseSchemaWithoutCallbacks, JsonBooleanSchema, JsonEnumSchema, JsonFactorySchema, JsonNumberSchema, JsonSchema, JsonSchemaArray, JsonSchemaArrayWithoutCallbacks, JsonSchemaBoolean, JsonSchemaBooleanWithoutCallbacks, JsonSchemaButton, JsonSchemaEnum, JsonSchemaEnumWithoutCallbacks, JsonSchemaNumber, JsonSchemaNumberWithoutCallbacks, JsonSchemaString, JsonSchemaStringWithoutCallbacks, JsonSchemaSubmit, JsonSchemaType, JsonSchemaWithoutCallbacks, JsonSchemaWithoutKey, JsonStringSchema, LeakSensorLike, LeakSensorProperties, LicensePlateDetection, LicensePlateDetectionInterface, LicensePlateDetectionPluginResponse, LicensePlateResult, LicensePlateSensorLike, LicensePlateSensorProperties, LightControlLike, LightControlProperties, LineDirection, LockControlLike, LockControlProperties, LoggerService, ModelSpec, MotionDetectionInterface, MotionDetectionPluginResponse, MotionDetectionSettings, MotionResolution, MotionResult, MotionSensorLike, MotionSensorProperties, Notification, NotificationManager, NotifierDevice, NotifierInterface, OAuthAuthCodeFlowCapable, OAuthCapable, OAuthClientCredentialsCapable, OAuthDeviceFlowCapable, OAuthMetadata, OAuthProviderConfig, OAuthProviderDeclaration, OAuthState, OAuthStatus, ObjectDetectionInterface, ObjectDetectionLabel, ObjectDetectionPluginResponse, ObjectDetectionSettings, ObjectModelSpec, ObjectResult, ObjectSensorLike, ObjectSensorProperties, OccupancySensorLike, OccupancySensorProperties, OperatorFn, PTZControlLike, PTZControlProperties, PTZDirection, PTZPosition, PTZRelativeMove, PluginAPI, PluginAssignments, PluginConfig, PluginContract, PluginInfo, PluginInterfaces, Point, ProbeAudioCodec, ProbeConfig, ProbeStream, PropertyChangeOf, PtzAutotrackSettings, PythonVersion, RTPInfo, RTSPAudioCodec, RTSPUrlOptions, RtpSession, RtpSessionBackchannelOptions, RtpSessionOptions, SchemaCondition, SchemaConditionOperator, SchemaConfig, SecuritySystemLike, SecuritySystemProperties, SensorAssignmentKey, SensorCapability, SensorCascadeTrigger, SensorLike, SensorMeta, SensorPropertyType, SensorSemantics, SensorTriggerRef, SensorTriggerSettings, SensorVirtualDefaults, SirenControlLike, SirenControlProperties, SmokeSensorLike, SmokeSensorProperties, SnapshotInterface, SnapshotSettings, SnapshotUrlOptions, StreamDirection, StreamUrls, StreamingInterface, StreamingRole, SwitchControlLike, SwitchControlProperties, TemperatureInfoLike, TemperatureInfoProperties, ToastMessage, TrackedDetection, VideoCodec, VideoCodecProperties, VideoFFmpegCodec, VideoFrameData, VideoInputSpec, VideoStreamInfo, VideoStreamingMode, ZoneFilter, ZoneType };
7337
+ export type { AssignedPlugin, AudioCodec, AudioCodecProperties, AudioDetectionInterface, AudioDetectionPluginResponse, AudioDetectionSettings, AudioFFmpegCodec, AudioFrameData, AudioInputSpec, AudioLabel, AudioMetadata, AudioModelSpec, AudioResult, AudioSensorLike, AudioSensorProperties, AudioStreamInfo, BaseAudioLabel, BaseCamera, BaseCameraConfig, BatteryInfoLike, BatteryInfoProperties, BoundingBox, Camera, CameraAspectRatio, CameraAspectRatioPreset, CameraConfig, CameraConfigInputSettings, CameraDetectionSettings, CameraDevice, CameraDeviceSource, CameraFrameWorkerSettings, CameraImplementation, CameraInformation, CameraInput, CameraPluginInfo, CameraRole, CameraSource, CameraType, CameraUiSettings, ClassifierDetection, ClassifierDetectionInterface, ClassifierDetectionPluginResponse, ClassifierResult, ClassifierSensorLike, ClassifierSensorProperties, ClipDetectionInterface, ClipDetectionPluginResponse, ClipEmbedding, ClipResult, ClipTextEmbeddingResult, ContactSensorLike, ContactSensorProperties, CoreManager, CoreManagerEvent, CreateDownloadOptions, CreateStreamDownloadOptions, Detection, DetectionAttribute, DetectionEvent, DetectionEventState, DetectionEventType, DetectionLabel, DetectionLine, DetectionZone, DeviceManager, DeviceStorage, DiscoveredCamera, DiscoveryProvider, DoorbellTriggerLike, DoorbellTriggerProperties, DownloadCleanup, DownloadManager, DownloadToken, EventAttribute, EventDescription, EventDetection, EventSegment, EventTrigger, EventTriggerType, FMTPInfo, FaceDetection, FaceDetectionInterface, FaceDetectionPluginResponse, FaceResult, FaceSensorLike, FaceSensorProperties, Fmp4Session, Fmp4SessionOptions, FormSubmitResponse, FormSubmitSchema, GarageControlLike, GarageControlProperties, Go2RtcRTSPSource, Go2RtcSnapshotSource, Go2RtcWSSource, HardwareAcceleration, HumidityInfoLike, HumidityInfoProperties, ImageMetadata, JsonArraySchema, JsonBaseSchema, JsonBaseSchemaWithoutCallbacks, JsonBooleanSchema, JsonEnumSchema, JsonFactorySchema, JsonNumberSchema, JsonSchema, JsonSchemaArray, JsonSchemaArrayWithoutCallbacks, JsonSchemaBoolean, JsonSchemaBooleanWithoutCallbacks, JsonSchemaButton, JsonSchemaEnum, JsonSchemaEnumWithoutCallbacks, JsonSchemaNumber, JsonSchemaNumberWithoutCallbacks, JsonSchemaString, JsonSchemaStringWithoutCallbacks, JsonSchemaSubmit, JsonSchemaType, JsonSchemaWithoutCallbacks, JsonSchemaWithoutKey, JsonStringSchema, LeakSensorLike, LeakSensorProperties, LicensePlateDetection, LicensePlateDetectionInterface, LicensePlateDetectionPluginResponse, LicensePlateResult, LicensePlateSensorLike, LicensePlateSensorProperties, LightControlLike, LightControlProperties, LineDirection, LockControlLike, LockControlProperties, LoggerService, ModelSpec, MotionDetectionInterface, MotionDetectionPluginResponse, MotionDetectionSettings, MotionResolution, MotionResult, MotionSensorLike, MotionSensorProperties, Notification, NotificationManager, NotifierDevice, NotifierInterface, OAuthAuthCodeFlowCapable, OAuthCapable, OAuthClientCredentialsCapable, OAuthDeviceFlowCapable, OAuthMetadata, OAuthProviderConfig, OAuthProviderDeclaration, OAuthState, OAuthStatus, ObjectDetectionInterface, ObjectDetectionLabel, ObjectDetectionPluginResponse, ObjectDetectionSettings, ObjectModelSpec, ObjectResult, ObjectSensorLike, ObjectSensorProperties, OccupancySensorLike, OccupancySensorProperties, OperatorFn, PTZControlLike, PTZControlProperties, PTZDirection, PTZPosition, PTZRelativeMove, PluginAPI, PluginAssignments, PluginConfig, PluginContract, PluginInfo, PluginInterfaces, Point, ProbeAudioCodec, ProbeConfig, ProbeStream, PropertyChangeOf, PtzAutotrackSettings, PythonVersion, RTPInfo, RTSPAudioCodec, RTSPUrlOptions, RtpSession, RtpSessionBackchannelOptions, RtpSessionOptions, SchemaCondition, SchemaConditionOperator, SchemaConfig, SecuritySystemLike, SecuritySystemProperties, SensorAssignmentKey, SensorCapability, SensorCascadeTrigger, SensorLike, SensorMeta, SensorPropertySpec, SensorPropertyType, SensorPropertyValueType, SensorSemantics, SensorTriggerRef, SensorTriggerSettings, SensorVirtualDefaults, SirenControlLike, SirenControlProperties, SmokeSensorLike, SmokeSensorProperties, SnapshotInterface, SnapshotSettings, SnapshotUrlOptions, StreamDirection, StreamUrls, StreamingInterface, StreamingRole, SwitchControlLike, SwitchControlProperties, TemperatureInfoLike, TemperatureInfoProperties, ToastMessage, TrackedDetection, VideoCodec, VideoCodecProperties, VideoFFmpegCodec, VideoFrameData, VideoInputSpec, VideoStreamInfo, VideoStreamingMode, ZoneFilter, ZoneType };