@camstack/types 1.1.47 → 1.1.49

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.
@@ -10014,8 +10014,8 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
10014
10014
  kind: string;
10015
10015
  label: string;
10016
10016
  color: string;
10017
- icon: "motion" | "smoke" | "button" | "audio" | "person" | "vehicle" | "animal" | "generic" | "door" | "pir" | "water";
10018
- category: "custom" | "motion" | "audio" | "sensor" | "detection";
10017
+ icon: "motion" | "smoke" | "button" | "audio" | "person" | "vehicle" | "animal" | "package" | "generic" | "door" | "pir" | "water";
10018
+ category: "custom" | "motion" | "audio" | "package" | "sensor" | "detection";
10019
10019
  source: {
10020
10020
  capName: string;
10021
10021
  deviceId: number;
@@ -12715,6 +12715,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
12715
12715
  maxAgeDays?: number | undefined;
12716
12716
  maxSizeGb?: number | undefined;
12717
12717
  } | undefined;
12718
+ scrubThumbnails?: "high" | "max" | "low" | "standard" | "minimal" | undefined;
12718
12719
  };
12719
12720
  meta: object;
12720
12721
  }>;
@@ -12811,6 +12812,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
12811
12812
  maxAgeDays?: number | undefined;
12812
12813
  maxSizeGb?: number | undefined;
12813
12814
  } | undefined;
12815
+ scrubThumbnails?: "high" | "max" | "low" | "standard" | "minimal" | undefined;
12814
12816
  };
12815
12817
  };
12816
12818
  output: {
@@ -12871,6 +12873,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
12871
12873
  maxAgeDays?: number | undefined;
12872
12874
  maxSizeGb?: number | undefined;
12873
12875
  } | undefined;
12876
+ scrubThumbnails?: "high" | "max" | "low" | "standard" | "minimal" | undefined;
12874
12877
  };
12875
12878
  meta: object;
12876
12879
  }>;
@@ -12901,6 +12904,208 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
12901
12904
  meta: object;
12902
12905
  }>;
12903
12906
  }>>;
12907
+ recordingExport: import("@trpc/server").TRPCBuiltRouter<{
12908
+ ctx: TrpcContext;
12909
+ meta: object;
12910
+ errorShape: import("@camstack/types").AugmentedErrorShape;
12911
+ transformer: true;
12912
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
12913
+ createExport: import("@trpc/server").TRPCMutationProcedure<{
12914
+ input: {
12915
+ [x: string]: unknown;
12916
+ deviceId: number;
12917
+ profile: string;
12918
+ fromMs: number;
12919
+ toMs: number;
12920
+ options: {
12921
+ includeAudio: boolean;
12922
+ maxLifeMs: number;
12923
+ deleteAfterDownload: boolean;
12924
+ speed?: number | undefined;
12925
+ timelapse?: {
12926
+ everyMs: number;
12927
+ outputFps?: number | undefined;
12928
+ } | undefined;
12929
+ title?: string | undefined;
12930
+ };
12931
+ };
12932
+ output: {
12933
+ id: string;
12934
+ deviceId: number;
12935
+ profile: string;
12936
+ fromMs: number;
12937
+ toMs: number;
12938
+ options: {
12939
+ includeAudio: boolean;
12940
+ maxLifeMs: number;
12941
+ deleteAfterDownload: boolean;
12942
+ speed?: number | undefined;
12943
+ timelapse?: {
12944
+ everyMs: number;
12945
+ outputFps?: number | undefined;
12946
+ } | undefined;
12947
+ title?: string | undefined;
12948
+ };
12949
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
12950
+ progressPct: number | null;
12951
+ fileBytes: number | null;
12952
+ expiresAt: number;
12953
+ deleteAfterDownload: boolean;
12954
+ downloadedAt: number | null;
12955
+ createdAt: number;
12956
+ createdBy: string;
12957
+ error: string | null;
12958
+ };
12959
+ meta: object;
12960
+ }>;
12961
+ listExports: import("@trpc/server").TRPCQueryProcedure<{
12962
+ input: {
12963
+ [x: string]: unknown;
12964
+ deviceId?: number | undefined;
12965
+ };
12966
+ output: {
12967
+ id: string;
12968
+ deviceId: number;
12969
+ profile: string;
12970
+ fromMs: number;
12971
+ toMs: number;
12972
+ options: {
12973
+ includeAudio: boolean;
12974
+ maxLifeMs: number;
12975
+ deleteAfterDownload: boolean;
12976
+ speed?: number | undefined;
12977
+ timelapse?: {
12978
+ everyMs: number;
12979
+ outputFps?: number | undefined;
12980
+ } | undefined;
12981
+ title?: string | undefined;
12982
+ };
12983
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
12984
+ progressPct: number | null;
12985
+ fileBytes: number | null;
12986
+ expiresAt: number;
12987
+ deleteAfterDownload: boolean;
12988
+ downloadedAt: number | null;
12989
+ createdAt: number;
12990
+ createdBy: string;
12991
+ error: string | null;
12992
+ }[];
12993
+ meta: object;
12994
+ }>;
12995
+ getExport: import("@trpc/server").TRPCQueryProcedure<{
12996
+ input: {
12997
+ [x: string]: unknown;
12998
+ exportId: string;
12999
+ };
13000
+ output: {
13001
+ id: string;
13002
+ deviceId: number;
13003
+ profile: string;
13004
+ fromMs: number;
13005
+ toMs: number;
13006
+ options: {
13007
+ includeAudio: boolean;
13008
+ maxLifeMs: number;
13009
+ deleteAfterDownload: boolean;
13010
+ speed?: number | undefined;
13011
+ timelapse?: {
13012
+ everyMs: number;
13013
+ outputFps?: number | undefined;
13014
+ } | undefined;
13015
+ title?: string | undefined;
13016
+ };
13017
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
13018
+ progressPct: number | null;
13019
+ fileBytes: number | null;
13020
+ expiresAt: number;
13021
+ deleteAfterDownload: boolean;
13022
+ downloadedAt: number | null;
13023
+ createdAt: number;
13024
+ createdBy: string;
13025
+ error: string | null;
13026
+ };
13027
+ meta: object;
13028
+ }>;
13029
+ cancelExport: import("@trpc/server").TRPCMutationProcedure<{
13030
+ input: {
13031
+ [x: string]: unknown;
13032
+ exportId: string;
13033
+ };
13034
+ output: {
13035
+ id: string;
13036
+ deviceId: number;
13037
+ profile: string;
13038
+ fromMs: number;
13039
+ toMs: number;
13040
+ options: {
13041
+ includeAudio: boolean;
13042
+ maxLifeMs: number;
13043
+ deleteAfterDownload: boolean;
13044
+ speed?: number | undefined;
13045
+ timelapse?: {
13046
+ everyMs: number;
13047
+ outputFps?: number | undefined;
13048
+ } | undefined;
13049
+ title?: string | undefined;
13050
+ };
13051
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
13052
+ progressPct: number | null;
13053
+ fileBytes: number | null;
13054
+ expiresAt: number;
13055
+ deleteAfterDownload: boolean;
13056
+ downloadedAt: number | null;
13057
+ createdAt: number;
13058
+ createdBy: string;
13059
+ error: string | null;
13060
+ };
13061
+ meta: object;
13062
+ }>;
13063
+ deleteExport: import("@trpc/server").TRPCMutationProcedure<{
13064
+ input: {
13065
+ [x: string]: unknown;
13066
+ exportId: string;
13067
+ };
13068
+ output: {
13069
+ id: string;
13070
+ deviceId: number;
13071
+ profile: string;
13072
+ fromMs: number;
13073
+ toMs: number;
13074
+ options: {
13075
+ includeAudio: boolean;
13076
+ maxLifeMs: number;
13077
+ deleteAfterDownload: boolean;
13078
+ speed?: number | undefined;
13079
+ timelapse?: {
13080
+ everyMs: number;
13081
+ outputFps?: number | undefined;
13082
+ } | undefined;
13083
+ title?: string | undefined;
13084
+ };
13085
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
13086
+ progressPct: number | null;
13087
+ fileBytes: number | null;
13088
+ expiresAt: number;
13089
+ deleteAfterDownload: boolean;
13090
+ downloadedAt: number | null;
13091
+ createdAt: number;
13092
+ createdBy: string;
13093
+ error: string | null;
13094
+ };
13095
+ meta: object;
13096
+ }>;
13097
+ getDownloadUrl: import("@trpc/server").TRPCQueryProcedure<{
13098
+ input: {
13099
+ [x: string]: unknown;
13100
+ exportId: string;
13101
+ };
13102
+ output: {
13103
+ url: string;
13104
+ endpoints: string[];
13105
+ };
13106
+ meta: object;
13107
+ }>;
13108
+ }>>;
12904
13109
  sceneMonitor: import("@trpc/server").TRPCBuiltRouter<{
12905
13110
  ctx: TrpcContext;
12906
13111
  meta: object;
@@ -16337,7 +16542,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
16337
16542
  input: {
16338
16543
  [x: string]: unknown;
16339
16544
  deviceId: number;
16340
- stage: "motion" | "detection";
16545
+ stage: "motion" | "package" | "detection";
16341
16546
  };
16342
16547
  output: readonly {
16343
16548
  id: string;
@@ -16356,7 +16561,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
16356
16561
  input: {
16357
16562
  [x: string]: unknown;
16358
16563
  deviceId: number;
16359
- stage: "motion" | "detection";
16564
+ stage: "motion" | "package" | "detection";
16360
16565
  rules: readonly {
16361
16566
  id: string;
16362
16567
  zoneIds: readonly string[];
@@ -26451,8 +26656,8 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
26451
26656
  kind: string;
26452
26657
  label: string;
26453
26658
  color: string;
26454
- icon: "motion" | "smoke" | "button" | "audio" | "person" | "vehicle" | "animal" | "generic" | "door" | "pir" | "water";
26455
- category: "custom" | "motion" | "audio" | "sensor" | "detection";
26659
+ icon: "motion" | "smoke" | "button" | "audio" | "person" | "vehicle" | "animal" | "package" | "generic" | "door" | "pir" | "water";
26660
+ category: "custom" | "motion" | "audio" | "package" | "sensor" | "detection";
26456
26661
  source: {
26457
26662
  capName: string;
26458
26663
  deviceId: number;
@@ -29152,6 +29357,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
29152
29357
  maxAgeDays?: number | undefined;
29153
29358
  maxSizeGb?: number | undefined;
29154
29359
  } | undefined;
29360
+ scrubThumbnails?: "high" | "max" | "low" | "standard" | "minimal" | undefined;
29155
29361
  };
29156
29362
  meta: object;
29157
29363
  }>;
@@ -29248,6 +29454,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
29248
29454
  maxAgeDays?: number | undefined;
29249
29455
  maxSizeGb?: number | undefined;
29250
29456
  } | undefined;
29457
+ scrubThumbnails?: "high" | "max" | "low" | "standard" | "minimal" | undefined;
29251
29458
  };
29252
29459
  };
29253
29460
  output: {
@@ -29308,6 +29515,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
29308
29515
  maxAgeDays?: number | undefined;
29309
29516
  maxSizeGb?: number | undefined;
29310
29517
  } | undefined;
29518
+ scrubThumbnails?: "high" | "max" | "low" | "standard" | "minimal" | undefined;
29311
29519
  };
29312
29520
  meta: object;
29313
29521
  }>;
@@ -29338,6 +29546,208 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
29338
29546
  meta: object;
29339
29547
  }>;
29340
29548
  }>>;
29549
+ recordingExport: import("@trpc/server").TRPCBuiltRouter<{
29550
+ ctx: TrpcContext;
29551
+ meta: object;
29552
+ errorShape: import("@camstack/types").AugmentedErrorShape;
29553
+ transformer: true;
29554
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
29555
+ createExport: import("@trpc/server").TRPCMutationProcedure<{
29556
+ input: {
29557
+ [x: string]: unknown;
29558
+ deviceId: number;
29559
+ profile: string;
29560
+ fromMs: number;
29561
+ toMs: number;
29562
+ options: {
29563
+ includeAudio: boolean;
29564
+ maxLifeMs: number;
29565
+ deleteAfterDownload: boolean;
29566
+ speed?: number | undefined;
29567
+ timelapse?: {
29568
+ everyMs: number;
29569
+ outputFps?: number | undefined;
29570
+ } | undefined;
29571
+ title?: string | undefined;
29572
+ };
29573
+ };
29574
+ output: {
29575
+ id: string;
29576
+ deviceId: number;
29577
+ profile: string;
29578
+ fromMs: number;
29579
+ toMs: number;
29580
+ options: {
29581
+ includeAudio: boolean;
29582
+ maxLifeMs: number;
29583
+ deleteAfterDownload: boolean;
29584
+ speed?: number | undefined;
29585
+ timelapse?: {
29586
+ everyMs: number;
29587
+ outputFps?: number | undefined;
29588
+ } | undefined;
29589
+ title?: string | undefined;
29590
+ };
29591
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
29592
+ progressPct: number | null;
29593
+ fileBytes: number | null;
29594
+ expiresAt: number;
29595
+ deleteAfterDownload: boolean;
29596
+ downloadedAt: number | null;
29597
+ createdAt: number;
29598
+ createdBy: string;
29599
+ error: string | null;
29600
+ };
29601
+ meta: object;
29602
+ }>;
29603
+ listExports: import("@trpc/server").TRPCQueryProcedure<{
29604
+ input: {
29605
+ [x: string]: unknown;
29606
+ deviceId?: number | undefined;
29607
+ };
29608
+ output: {
29609
+ id: string;
29610
+ deviceId: number;
29611
+ profile: string;
29612
+ fromMs: number;
29613
+ toMs: number;
29614
+ options: {
29615
+ includeAudio: boolean;
29616
+ maxLifeMs: number;
29617
+ deleteAfterDownload: boolean;
29618
+ speed?: number | undefined;
29619
+ timelapse?: {
29620
+ everyMs: number;
29621
+ outputFps?: number | undefined;
29622
+ } | undefined;
29623
+ title?: string | undefined;
29624
+ };
29625
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
29626
+ progressPct: number | null;
29627
+ fileBytes: number | null;
29628
+ expiresAt: number;
29629
+ deleteAfterDownload: boolean;
29630
+ downloadedAt: number | null;
29631
+ createdAt: number;
29632
+ createdBy: string;
29633
+ error: string | null;
29634
+ }[];
29635
+ meta: object;
29636
+ }>;
29637
+ getExport: import("@trpc/server").TRPCQueryProcedure<{
29638
+ input: {
29639
+ [x: string]: unknown;
29640
+ exportId: string;
29641
+ };
29642
+ output: {
29643
+ id: string;
29644
+ deviceId: number;
29645
+ profile: string;
29646
+ fromMs: number;
29647
+ toMs: number;
29648
+ options: {
29649
+ includeAudio: boolean;
29650
+ maxLifeMs: number;
29651
+ deleteAfterDownload: boolean;
29652
+ speed?: number | undefined;
29653
+ timelapse?: {
29654
+ everyMs: number;
29655
+ outputFps?: number | undefined;
29656
+ } | undefined;
29657
+ title?: string | undefined;
29658
+ };
29659
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
29660
+ progressPct: number | null;
29661
+ fileBytes: number | null;
29662
+ expiresAt: number;
29663
+ deleteAfterDownload: boolean;
29664
+ downloadedAt: number | null;
29665
+ createdAt: number;
29666
+ createdBy: string;
29667
+ error: string | null;
29668
+ };
29669
+ meta: object;
29670
+ }>;
29671
+ cancelExport: import("@trpc/server").TRPCMutationProcedure<{
29672
+ input: {
29673
+ [x: string]: unknown;
29674
+ exportId: string;
29675
+ };
29676
+ output: {
29677
+ id: string;
29678
+ deviceId: number;
29679
+ profile: string;
29680
+ fromMs: number;
29681
+ toMs: number;
29682
+ options: {
29683
+ includeAudio: boolean;
29684
+ maxLifeMs: number;
29685
+ deleteAfterDownload: boolean;
29686
+ speed?: number | undefined;
29687
+ timelapse?: {
29688
+ everyMs: number;
29689
+ outputFps?: number | undefined;
29690
+ } | undefined;
29691
+ title?: string | undefined;
29692
+ };
29693
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
29694
+ progressPct: number | null;
29695
+ fileBytes: number | null;
29696
+ expiresAt: number;
29697
+ deleteAfterDownload: boolean;
29698
+ downloadedAt: number | null;
29699
+ createdAt: number;
29700
+ createdBy: string;
29701
+ error: string | null;
29702
+ };
29703
+ meta: object;
29704
+ }>;
29705
+ deleteExport: import("@trpc/server").TRPCMutationProcedure<{
29706
+ input: {
29707
+ [x: string]: unknown;
29708
+ exportId: string;
29709
+ };
29710
+ output: {
29711
+ id: string;
29712
+ deviceId: number;
29713
+ profile: string;
29714
+ fromMs: number;
29715
+ toMs: number;
29716
+ options: {
29717
+ includeAudio: boolean;
29718
+ maxLifeMs: number;
29719
+ deleteAfterDownload: boolean;
29720
+ speed?: number | undefined;
29721
+ timelapse?: {
29722
+ everyMs: number;
29723
+ outputFps?: number | undefined;
29724
+ } | undefined;
29725
+ title?: string | undefined;
29726
+ };
29727
+ state: "failed" | "queued" | "ready" | "deleted" | "rendering" | "expired";
29728
+ progressPct: number | null;
29729
+ fileBytes: number | null;
29730
+ expiresAt: number;
29731
+ deleteAfterDownload: boolean;
29732
+ downloadedAt: number | null;
29733
+ createdAt: number;
29734
+ createdBy: string;
29735
+ error: string | null;
29736
+ };
29737
+ meta: object;
29738
+ }>;
29739
+ getDownloadUrl: import("@trpc/server").TRPCQueryProcedure<{
29740
+ input: {
29741
+ [x: string]: unknown;
29742
+ exportId: string;
29743
+ };
29744
+ output: {
29745
+ url: string;
29746
+ endpoints: string[];
29747
+ };
29748
+ meta: object;
29749
+ }>;
29750
+ }>>;
29341
29751
  sceneMonitor: import("@trpc/server").TRPCBuiltRouter<{
29342
29752
  ctx: TrpcContext;
29343
29753
  meta: object;
@@ -32774,7 +33184,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
32774
33184
  input: {
32775
33185
  [x: string]: unknown;
32776
33186
  deviceId: number;
32777
- stage: "motion" | "detection";
33187
+ stage: "motion" | "package" | "detection";
32778
33188
  };
32779
33189
  output: readonly {
32780
33190
  id: string;
@@ -32793,7 +33203,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
32793
33203
  input: {
32794
33204
  [x: string]: unknown;
32795
33205
  deviceId: number;
32796
- stage: "motion" | "detection";
33206
+ stage: "motion" | "package" | "detection";
32797
33207
  rules: readonly {
32798
33208
  id: string;
32799
33209
  zoneIds: readonly string[];
@@ -105,6 +105,7 @@ export { ptzCapability } from '../capabilities/ptz.cap.js';
105
105
  export { ptzAutotrackCapability } from '../capabilities/ptz-autotrack.cap.js';
106
106
  export { rebootCapability } from '../capabilities/reboot.cap.js';
107
107
  export { recordingCapability } from '../capabilities/recording.cap.js';
108
+ export { recordingExportCapability } from '../capabilities/recording-export.cap.js';
108
109
  export { sceneMonitorCapability } from '../capabilities/scene-monitor.cap.js';
109
110
  export { scriptRunnerCapability } from '../capabilities/script-runner.cap.js';
110
111
  export { serverManagementCapability } from '../capabilities/server-management.cap.js';
@@ -247,6 +248,7 @@ export declare const CAPABILITY_NAMES: {
247
248
  readonly ptzAutotrack: "ptz-autotrack";
248
249
  readonly reboot: "reboot";
249
250
  readonly recording: "recording";
251
+ readonly recordingExport: "recordingExport";
250
252
  readonly sceneMonitor: "scene-monitor";
251
253
  readonly scriptRunner: "script-runner";
252
254
  readonly serverManagement: "server-management";
@@ -402,6 +404,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
402
404
  readonly ptzAutotrack: TRouter;
403
405
  readonly reboot: TRouter;
404
406
  readonly recording: TRouter;
407
+ readonly recordingExport: TRouter;
405
408
  readonly sceneMonitor: TRouter;
406
409
  readonly scriptRunner: TRouter;
407
410
  readonly serverManagement: TRouter;
@@ -437,8 +440,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
437
440
  readonly zoneRules: TRouter;
438
441
  readonly zones: TRouter;
439
442
  }
440
- /** Capability names whose mode is `singleton` (119 caps). */
441
- export declare const SINGLETON_CAPABILITY_NAMES: readonly ["accessories", "addon-pages", "addon-settings", "addon-widgets", "addons", "admin-ui", "advanced-notifier", "air-quality-sensor", "alarm-panel", "alerts", "ambient-light-sensor", "audio-analysis", "audio-analyzer", "audio-codec", "audio-metrics", "automation-control", "backup", "battery", "binary", "brightness", "button", "camera-credentials", "camera-pipeline-config", "camera-streams", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "cover", "day-night", "decoder", "detection-pipeline", "device-adoption", "device-discovery", "device-manager", "device-ops", "device-state", "device-status", "doorbell", "enum-sensor", "event-emitter", "events", "face-gallery", "fan-control", "feature-probe", "filesystem-browse", "flood", "gas", "humidifier", "humidity-sensor", "image", "image-settings", "integrations", "intercom", "lawn-mower-control", "llm-runtime", "local-network", "lock-control", "media-player", "metrics-provider", "model-convert", "model-distributor", "motion", "motion-detection", "motion-trigger", "motion-zones", "native-object-detection", "network-quality", "nodes", "notifier", "numeric-sensor", "osd", "pet-feeder", "pipeline-analytics", "pipeline-executor", "pipeline-orchestrator", "pipeline-runner", "plate-gallery", "platform-probe", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "reboot", "recording", "scene-monitor", "script-runner", "server-management", "settings-store", "smoke", "snapshot", "sso-bridge", "storage", "stream-broker", "stream-catalog", "stream-params", "switch", "system", "tamper", "temperature-sensor", "toast", "update", "user-management", "vacuum-control", "valve", "vibration", "videoclips", "viewer-ui", "water-heater", "weather", "webrtc-session", "zone-analytics", "zone-rules", "zones"];
443
+ /** Capability names whose mode is `singleton` (120 caps). */
444
+ export declare const SINGLETON_CAPABILITY_NAMES: readonly ["accessories", "addon-pages", "addon-settings", "addon-widgets", "addons", "admin-ui", "advanced-notifier", "air-quality-sensor", "alarm-panel", "alerts", "ambient-light-sensor", "audio-analysis", "audio-analyzer", "audio-codec", "audio-metrics", "automation-control", "backup", "battery", "binary", "brightness", "button", "camera-credentials", "camera-pipeline-config", "camera-streams", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "cover", "day-night", "decoder", "detection-pipeline", "device-adoption", "device-discovery", "device-manager", "device-ops", "device-state", "device-status", "doorbell", "enum-sensor", "event-emitter", "events", "face-gallery", "fan-control", "feature-probe", "filesystem-browse", "flood", "gas", "humidifier", "humidity-sensor", "image", "image-settings", "integrations", "intercom", "lawn-mower-control", "llm-runtime", "local-network", "lock-control", "media-player", "metrics-provider", "model-convert", "model-distributor", "motion", "motion-detection", "motion-trigger", "motion-zones", "native-object-detection", "network-quality", "nodes", "notifier", "numeric-sensor", "osd", "pet-feeder", "pipeline-analytics", "pipeline-executor", "pipeline-orchestrator", "pipeline-runner", "plate-gallery", "platform-probe", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "reboot", "recording", "recordingExport", "scene-monitor", "script-runner", "server-management", "settings-store", "smoke", "snapshot", "sso-bridge", "storage", "stream-broker", "stream-catalog", "stream-params", "switch", "system", "tamper", "temperature-sensor", "toast", "update", "user-management", "vacuum-control", "valve", "vibration", "videoclips", "viewer-ui", "water-heater", "weather", "webrtc-session", "zone-analytics", "zone-rules", "zones"];
442
445
  /** Union of singleton capability names (literal string union). */
443
446
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
444
447
  /** Capability names whose mode is `collection` (22 caps). */
@@ -94,6 +94,7 @@ import type { pipelineOrchestratorCapability } from '../capabilities/pipeline-or
94
94
  import type { pipelineRunnerCapability } from '../capabilities/pipeline-runner.cap.js';
95
95
  import type { plateGalleryCapability } from '../capabilities/plate-gallery.cap.js';
96
96
  import type { recordingCapability } from '../capabilities/recording.cap.js';
97
+ import type { recordingExportCapability } from '../capabilities/recording-export.cap.js';
97
98
  import type { streamBrokerCapability } from '../capabilities/stream-broker.cap.js';
98
99
  /**
99
100
  * Reactive read handle bag for device runtime state. Each entry mirrors the
@@ -274,6 +275,7 @@ export interface DeviceProxy {
274
275
  readonly pipelineRunner: Pick<InferDeviceProxyCap<typeof pipelineRunnerCapability>, 'detachCamera' | 'getCameraMetrics' | 'runDetailSubtree'>;
275
276
  readonly plateGallery: Pick<InferDeviceProxyCap<typeof plateGalleryCapability>, 'listPlates' | 'getPlateByTrack'>;
276
277
  readonly recording: Pick<InferDeviceProxyCap<typeof recordingCapability>, 'getAvailability' | 'getDaysWithRecordings' | 'getPlaybackManifest' | 'getDeviceConfig' | 'locateSegment' | 'readSegmentBytes' | 'setDeviceConfig' | 'rescanStorage' | 'pruneFootage' | 'getStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
278
+ readonly recordingExport: Pick<InferDeviceProxyCap<typeof recordingExportCapability>, 'createExport' | 'listExports'>;
277
279
  readonly streamBroker: Pick<InferDeviceProxyCap<typeof streamBrokerCapability>, 'publishCameraStream' | 'retractCameraStream' | 'assignProfile' | 'unassignProfile' | 'restartProfile' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
278
280
  }
279
281
  /**
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 789 method paths across 115 capabilities.
9
+ * Coverage: 795 method paths across 116 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -31,6 +31,7 @@ import type { pipelineOrchestratorCapability } from '../capabilities/pipeline-or
31
31
  import type { pipelineRunnerCapability } from '../capabilities/pipeline-runner.cap.js';
32
32
  import type { plateGalleryCapability } from '../capabilities/plate-gallery.cap.js';
33
33
  import type { recordingCapability } from '../capabilities/recording.cap.js';
34
+ import type { recordingExportCapability } from '../capabilities/recording-export.cap.js';
34
35
  import type { serverManagementCapability } from '../capabilities/server-management.cap.js';
35
36
  import type { settingsStoreCapability } from '../capabilities/settings-store.cap.js';
36
37
  import type { storageCapability } from '../capabilities/storage.cap.js';
@@ -79,6 +80,7 @@ export interface SystemProxy {
79
80
  readonly pipelineRunner: Pick<InferProvider<typeof pipelineRunnerCapability>, 'attachCamera' | 'reportMotion' | 'getLocalLoad' | 'getLocalMetrics' | 'getAllCameraMetrics' | 'getLocalCameras' | 'getNativeCrop'>;
80
81
  readonly plateGallery: Pick<InferProvider<typeof plateGalleryCapability>, 'getPlateMedia' | 'searchPlates' | 'suggestPlateClusters' | 'correctPlateText' | 'deletePlate' | 'listVehicles' | 'createVehicle' | 'renameVehicle' | 'deleteVehicle' | 'listVehicleSamples' | 'removeVehicleSample' | 'assignPlate' | 'unassignPlate' | 'assignPlates' | 'unassignPlates'>;
81
82
  readonly recording: Pick<InferProvider<typeof recordingCapability>, 'getStorageUsage'>;
83
+ readonly recordingExport: Pick<InferProvider<typeof recordingExportCapability>, 'getExport' | 'cancelExport' | 'deleteExport' | 'getDownloadUrl'>;
82
84
  readonly serverManagement: Pick<InferProvider<typeof serverManagementCapability>, 'getServerPackageStatus' | 'checkServerUpdate' | 'applyServerUpdate' | 'rollbackServerUpdate' | 'restartServer'>;
83
85
  readonly settingsStore: Pick<InferProvider<typeof settingsStoreCapability>, 'get' | 'set' | 'query' | 'insert' | 'update' | 'delete' | 'count' | 'histogram' | 'isEmpty' | 'declareCollection'>;
84
86
  readonly storage: Pick<InferProvider<typeof storageCapability>, 'resolve' | 'write' | 'read' | 'exists' | 'list' | 'delete' | 'getAvailableSpace' | 'beginUpload' | 'writeChunk' | 'finalizeUpload' | 'abortUpload' | 'beginDownload' | 'readChunk' | 'endDownload' | 'listLocations' | 'getDefaultLocation' | 'listLocationDeclarations' | 'upsertLocation' | 'deleteLocation' | 'testLocation' | 'listProviders' | 'testConfig'>;