@3deye-toolkit/react-event-search 0.0.2 → 0.0.3-alpha.0

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.
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
-
3
1
  import { BehaviorSubject } from 'rxjs';
4
2
  import crossfilter from 'crossfilter2';
5
3
  import type { IReactionDisposer } from 'mobx';
@@ -7,6 +5,7 @@ import { Observable } from 'rxjs';
7
5
  import { default as React_2 } from 'react';
8
6
  import { Subject } from 'rxjs';
9
7
  import { Subscription } from 'rxjs';
8
+ import { z } from 'zod';
10
9
 
11
10
  declare class AccountStore extends ApiStore {
12
11
  private notification?;
@@ -26,12 +25,67 @@ declare class AccountStore extends ApiStore {
26
25
  firstName: string;
27
26
  lastName: string;
28
27
  }): Observable<RawUser>;
29
- updateCustomPreferences: (preferences: Record<string, any>) => Observable<RawUser>;
28
+ updateUserLanguage(languageCode: string): Observable<RawUser>;
29
+ updateCustomPreferences: (preferences: Partial<Preferences>) => Observable<RawUser>;
30
30
  setDefaultGroup(groupId: number): Observable<RawUser> | undefined;
31
- getPreference: (key: string) => any;
31
+ get preferences(): Preferences;
32
+ getPreference: <T extends PREFERENCES>(key: T) => {
33
+ utc: boolean;
34
+ hour12: boolean;
35
+ startOfWeek: "monday" | "sunday";
36
+ defaultVideoResizeMode?: VideoResizeMode | undefined;
37
+ camerasResizeMode?: [number, VideoResizeMode][] | undefined;
38
+ fisheyeCameras?: [number, [number, number, number] | {
39
+ params: {
40
+ x: number;
41
+ y: number;
42
+ r: number;
43
+ s: number;
44
+ };
45
+ positions?: [{
46
+ lat: number;
47
+ lon: number;
48
+ fov: number;
49
+ }, {
50
+ lat: number;
51
+ lon: number;
52
+ fov: number;
53
+ }, {
54
+ lat: number;
55
+ lon: number;
56
+ fov: number;
57
+ }] | undefined;
58
+ } | null][] | undefined;
59
+ }[T];
32
60
  private retryOnVersionMismatch;
33
61
  }
34
62
 
63
+ declare class AllEventsLoaderFilters implements EventsLoaderFilters {
64
+ from: Date | null;
65
+ to: Date | null;
66
+ probabilityThreshold: number | null;
67
+ cameras: number[];
68
+ detectedObjects: string[];
69
+ colors: Set<string>;
70
+ regions: {
71
+ x: number;
72
+ y: number;
73
+ }[][] | null;
74
+ eventTypes: SensorEventType[];
75
+ sortDirection: 'ASC' | 'DESC';
76
+ updated$: Subject<null>;
77
+ get regionsWkt(): string[];
78
+ constructor();
79
+ apply(data: CameraEvent[]): CameraEvent[];
80
+ get filterJson(): string | null;
81
+ /**
82
+ * given region as array of vertices in normalized coordinates
83
+ * returns its representation in WKT: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry
84
+ * @param region
85
+ */
86
+ private regionToWktPolygon;
87
+ }
88
+
35
89
  declare class Api<T extends DeepPartial<IApi>> {
36
90
  [key: string]: any;
37
91
  static create<T extends PartialApi>(apiConfig: T | null, authStore: Auth, createConnection: (accessToken: string) => Connection): Api<T> & ExtractHubs<IApi, T>;
@@ -178,6 +232,7 @@ declare class Auth {
178
232
  agreedWithTerms?: boolean;
179
233
  code?: string;
180
234
  }) => Promise<Token> | undefined;
235
+ signInWithToken: (token: RawToken) => void;
181
236
  invalidateToken: () => void;
182
237
  getTokenFromStorage(): Promise<Token | null>;
183
238
  private storeToken;
@@ -195,6 +250,13 @@ declare interface AuthStoreOptions {
195
250
  clientId: string;
196
251
  }
197
252
 
253
+ declare interface BoundingBox {
254
+ Left: number;
255
+ Top: number;
256
+ Right: number;
257
+ Bottom: number;
258
+ }
259
+
198
260
  declare interface Box {
199
261
  Top: number;
200
262
  Left: number;
@@ -208,10 +270,7 @@ declare class Camera {
208
270
  imageUrl: string;
209
271
  streamUrl: string;
210
272
  dashStreamUrl: string;
211
- address: {
212
- Lat: number;
213
- Lng: number;
214
- } | null;
273
+ address: CameraAddress | null;
215
274
  archiveDuration: number;
216
275
  dvrWindowLength: number;
217
276
  stateUpdatedAt: Date;
@@ -227,31 +286,56 @@ declare class Camera {
227
286
  get supportsWebRTC(): boolean;
228
287
  constructor(raw: RawCamera);
229
288
  update: (raw: RawCamera) => void;
289
+ can: (permission: CameraPermissions) => number;
290
+ }
291
+
292
+ declare interface CameraAddress {
293
+ Lat: number;
294
+ Lng: number;
295
+ Country: string;
296
+ State: string;
297
+ City: string;
298
+ Address: string;
230
299
  }
231
300
 
232
301
  declare class CameraEvent {
302
+ id: number;
233
303
  cameraId: number;
234
304
  type: EventType;
235
305
  raw: RawSensorEvent;
236
306
  thumbnailUrl: string;
307
+ thumbnailWidth: number;
308
+ thumbnailHeight: number;
237
309
  detectedObjects: DetectedObject[];
238
310
  faces: Face[];
239
311
  instant: boolean;
240
- get id(): number;
241
312
  get startTime(): Date;
242
313
  get endTime(): Date;
243
314
  get isLive(): boolean;
244
315
  get acknowledged(): boolean;
316
+ update: (raw: RawSensorEvent) => void;
245
317
  constructor(raw: RawSensorEvent);
246
318
  }
247
319
 
320
+ declare const enum CameraPermissions {
321
+ View = 1,
322
+ SaveClip = 2,
323
+ Share = 4,
324
+ Ptz = 8,
325
+ EditSettings = 16,
326
+ Timelapse = 32,
327
+ Delete = 64
328
+ }
329
+
248
330
  declare class CamerasStore extends ApiStore {
249
331
  camerasById: Map<number, Camera>;
250
332
  data: Camera[];
251
333
  loading: boolean;
252
334
  loaded: boolean;
335
+ pendingLoadRequest?: Observable<RawCamera[]>;
336
+ requestsCanceler: Subject<void>;
253
337
  constructor();
254
- load: () => Observable<RawCamera[]> | undefined;
338
+ load: () => Observable<RawCamera[]>;
255
339
  add: (cameras: RawCamera[]) => void;
256
340
  sync: () => Observable<RawCamera[]>;
257
341
  protected afterInit(): void;
@@ -271,6 +355,16 @@ declare interface CamgroupItem {
271
355
  order: number;
272
356
  }
273
357
 
358
+ declare interface Car {
359
+ Type: 'Car';
360
+ BodyType?: string;
361
+ Box: BoundingBox;
362
+ Probability: number;
363
+ Colors?: {
364
+ Color: string;
365
+ }[];
366
+ }
367
+
274
368
  declare interface Chunk {
275
369
  json?: string;
276
370
  startTime: Date;
@@ -306,7 +400,7 @@ declare class Clip {
306
400
  archives?: ArchiveChunk[];
307
401
  constructor(raw: RawClip);
308
402
  get isTimelapse(): boolean;
309
- update(raw: any): void;
403
+ update(raw: RawClip): void;
310
404
  }
311
405
 
312
406
  declare interface ClipParams {
@@ -359,31 +453,9 @@ declare type DeepPartial<T> = {
359
453
  [K in keyof T]?: DeepPartial<T[K]>;
360
454
  };
361
455
 
362
- declare type DetectedObject = {
363
- Type: string;
364
- Value?: string;
365
- Number?: string;
366
- Box: {
367
- Left: number;
368
- Top: number;
369
- Right: number;
370
- Bottom: number;
371
- };
372
- Probability: number;
373
- Colors?: {
374
- Color: string;
375
- }[];
376
- } | {
377
- Type: 'Car';
378
- BodyType?: string;
379
- Value?: string;
380
- Number?: string;
381
- Box: {
382
- Left: number;
383
- Top: number;
384
- Right: number;
385
- Bottom: number;
386
- };
456
+ declare type DetectedObject = Car | LicensePlate | {
457
+ Type: 'Person' | 'Animal' | 'Bicycle' | 'Luggage' | 'Boat' | 'HardHat' | 'NoHardHat' | 'Fire' | 'Smoke' | 'Face';
458
+ Box: BoundingBox;
387
459
  Probability: number;
388
460
  Colors?: {
389
461
  Color: string;
@@ -422,6 +494,7 @@ export default EventSearch;
422
494
  declare class EventSearchStore extends ApiStore {
423
495
  eventSchema: EventSchemaStore;
424
496
  events: EventsStore;
497
+ private account;
425
498
  private notification;
426
499
  private heatmaps?;
427
500
  api: ExtendedApi;
@@ -429,6 +502,7 @@ declare class EventSearchStore extends ApiStore {
429
502
  readonly analyticsEnabled: boolean;
430
503
  cameraId: number | null;
431
504
  date: Date | null;
505
+ get startTime(): Date | null;
432
506
  regions: {
433
507
  x: number;
434
508
  y: number;
@@ -443,12 +517,13 @@ declare class EventSearchStore extends ApiStore {
443
517
  peopleCountingData: RawPeopleCountingData[];
444
518
  probabilityThreshold: number;
445
519
  brushFilter: null | [Date, Date];
520
+ loadTrigger: number;
446
521
  eventsLoader: EventsLoader;
447
- loaderFilters: EventsLoaderFilters;
522
+ loaderFilters: AllEventsLoaderFilters;
448
523
  get params(): SchemaDescriptionParameter[];
449
524
  get filteredData(): CameraEvent[];
450
525
  get filteredPeopleCountingData(): RawPeopleCountingData[];
451
- constructor(eventSchema: EventSchemaStore, events: EventsStore, notification: NotificationService, heatmaps?: HeatmapsStore | undefined);
526
+ constructor(eventSchema: EventSchemaStore, events: EventsStore, account: AccountStore, notification: NotificationService, heatmaps?: HeatmapsStore | undefined);
452
527
  /**
453
528
  * Converts box (Top, Left, Bottom, Right) to axis-aligned bounding box
454
529
  * @param box
@@ -464,8 +539,8 @@ declare class EventSearchStore extends ApiStore {
464
539
  cameraId: number;
465
540
  box: Box;
466
541
  }) => void;
467
- openForPlayer: (cameraId: number) => void;
468
542
  searchFullFrame: (cameraId: number) => void;
543
+ triggerLoad: () => void;
469
544
  setRegions: (polies: {
470
545
  x: number;
471
546
  y: number;
@@ -490,15 +565,7 @@ declare class EventSearchStore extends ApiStore {
490
565
 
491
566
  declare class EventsLoader extends ApiStore {
492
567
  private eventsStore;
493
- filters: {
494
- updated$: Observable<null>;
495
- sortDirection: 'ASC' | 'DESC';
496
- cameras: number[];
497
- from: Date | null;
498
- to: Date | null;
499
- probabilityThreshold: number | null;
500
- apply: (events: CameraEvent[]) => CameraEvent[];
501
- };
568
+ filters: EventsLoaderFilters;
502
569
  fetcher: (api: Api<IApi> & IApi, pageToken?: number) => Observable<ApiPageResult<RawSensorEvent>>;
503
570
  transformData: (data: CameraEvent) => {
504
571
  data: CameraEvent;
@@ -513,7 +580,6 @@ declare class EventsLoader extends ApiStore {
513
580
  objectIdx: number;
514
581
  }[];
515
582
  liveUpdateMode: 'manual' | 'auto' | 'disabled';
516
- updateTrigger: number;
517
583
  disposables: (IReactionDisposer | Subscription)[];
518
584
  pageInfo: PageInfo_2 | null;
519
585
  loading: boolean;
@@ -522,15 +588,7 @@ declare class EventsLoader extends ApiStore {
522
588
  error: Error | null;
523
589
  private loadingInitiated;
524
590
  get isLive(): boolean;
525
- constructor(eventsStore: EventsStore, filters: {
526
- updated$: Observable<null>;
527
- sortDirection: 'ASC' | 'DESC';
528
- cameras: number[];
529
- from: Date | null;
530
- to: Date | null;
531
- probabilityThreshold: number | null;
532
- apply: (events: CameraEvent[]) => CameraEvent[];
533
- }, fetcher: (api: Api<IApi> & IApi, pageToken?: number) => Observable<ApiPageResult<RawSensorEvent>>, transformData?: (data: CameraEvent) => {
591
+ constructor(eventsStore: EventsStore, filters: EventsLoaderFilters, fetcher: (api: Api<IApi> & IApi, pageToken?: number) => Observable<ApiPageResult<RawSensorEvent>>, transformData?: (data: CameraEvent) => {
534
592
  data: CameraEvent;
535
593
  objectIdx: number;
536
594
  }[]);
@@ -556,30 +614,14 @@ declare class EventsLoader extends ApiStore {
556
614
  dispose(): void;
557
615
  }
558
616
 
559
- declare class EventsLoaderFilters {
617
+ declare interface EventsLoaderFilters {
618
+ updated$: Observable<null>;
619
+ sortDirection: 'ASC' | 'DESC';
620
+ cameras: number[];
560
621
  from: Date | null;
561
622
  to: Date | null;
562
623
  probabilityThreshold: number | null;
563
- cameras: number[];
564
- detectedObjects: string[];
565
- colors: Set<string>;
566
- regions: {
567
- x: number;
568
- y: number;
569
- }[][] | null;
570
- eventTypes: SensorEventType[];
571
- sortDirection: 'ASC' | 'DESC';
572
- updated$: Subject<null>;
573
- get regionsWkt(): string[];
574
- constructor();
575
- apply(data: CameraEvent[]): CameraEvent[];
576
- get filterJson(): string | null;
577
- /**
578
- * given region as array of vertices in normalized coordinates
579
- * returns its representation in WKT: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry
580
- * @param region
581
- */
582
- private regionToWktPolygon;
624
+ apply: (events: CameraEvent[]) => CameraEvent[];
583
625
  }
584
626
 
585
627
  declare interface EventsQuery {
@@ -606,10 +648,10 @@ declare class EventsStore extends ApiStore {
606
648
  pendingRequestsByEnd: crossfilter.Dimension<PendingRequest, number>;
607
649
  pendingRequestsByStart: crossfilter.Dimension<PendingRequest, number>;
608
650
  pendingRequestsByCameraId: crossfilter.Dimension<PendingRequest, number>;
609
- knownIntervals: crossfilter.Crossfilter<Interval_2>;
610
- knownIntervalsByCameraId: crossfilter.Dimension<Interval_2, number>;
611
- knownIntervalsByStart: crossfilter.Dimension<Interval_2, number>;
612
- knownIntervalsByEnd: crossfilter.Dimension<Interval_2, number>;
651
+ knownIntervals: crossfilter.Crossfilter<Interval>;
652
+ knownIntervalsByCameraId: crossfilter.Dimension<Interval, number>;
653
+ knownIntervalsByStart: crossfilter.Dimension<Interval, number>;
654
+ knownIntervalsByEnd: crossfilter.Dimension<Interval, number>;
613
655
  eventsById: Map<number, CameraEvent>;
614
656
  updates: number;
615
657
  /**
@@ -666,7 +708,7 @@ declare class EventsStore extends ApiStore {
666
708
  dispose(): void;
667
709
  }
668
710
 
669
- declare type EventType = 'Motion' | 'Tampering' | 'PanTiltZoom' | 'CrossLine' | 'Intrusion' | 'LicensePlate' | 'FaceDetection' | 'Audio' | 'Analytic' | 'SpeedDetection' | 'PeopleCounter' | 'Temperature' | 'PoS' | 'GPS' | 'DigitalInput' | 'Normal' | 'Suspicious' | 'Loitering' | 'Vandalism' | 'Trespass' | 'Emergency' | 'LifeInDanger' | 'ErroneousAlert' | 'Misidentification' | 'Fire' | 'MedicalDuress' | 'HoldUp' | 'CheckIn' | 'CheckOut' | 'ClockIn' | 'ClockOut' | 'ParkingStart' | 'ParkingEnd' | 'ParkingViolation' | 'GateAccess' | 'DoorAccess' | 'TemperatureCheck' | 'IDCheck' | 'PPECheck' | 'WelfareCheck' | 'Uncategorized' | 'Unknown';
711
+ declare type EventType = 'Motion' | 'Tampering' | 'PanTiltZoom' | 'CrossLine' | 'Intrusion' | 'LicensePlate' | 'FaceDetection' | 'Audio' | 'Analytic' | 'SpeedDetection' | 'PeopleCounter' | 'Temperature' | 'PoS' | 'GPS' | 'DigitalInput' | 'Normal' | 'Suspicious' | 'Loitering' | 'Vandalism' | 'Trespass' | 'Emergency' | 'LifeInDanger' | 'ErroneousAlert' | 'Misidentification' | 'Fire' | 'MedicalDuress' | 'HoldUp' | 'CheckIn' | 'CheckOut' | 'ClockIn' | 'ClockOut' | 'ParkingStart' | 'ParkingEnd' | 'ParkingViolation' | 'GateAccess' | 'DoorAccess' | 'TemperatureCheck' | 'IDCheck' | 'PPECheck' | 'WelfareCheck' | 'VehicleBreakIn' | 'DrugTrafficking' | 'Assault' | 'PackageDelivery' | 'Uncategorized';
670
712
 
671
713
  declare type ExtendedApi = Api<IApi> & IApi & {
672
714
  archives: {
@@ -717,7 +759,6 @@ declare class Heatmap {
717
759
  declare type HeatmapMode = 'fullframe' | 'selection' | 'none';
718
760
 
719
761
  declare class HeatmapsStore extends ApiStore {
720
- api: ExtendedApi;
721
762
  fetchHeatmaps(cameraId: number, from: Date, to: Date, count: number): Observable<Heatmap[]>;
722
763
  }
723
764
 
@@ -789,18 +830,18 @@ declare interface IApi {
789
830
  from: Date;
790
831
  to: Date;
791
832
  count: number;
792
- }) => Observable<any>;
833
+ }) => Observable<ApiResult<RawThumbnail>>;
793
834
  GetThumbnailInfo: (params: {
794
835
  cameraId: number;
795
836
  from: Date;
796
837
  to: Date;
797
- }) => Observable<any>;
838
+ }) => Observable<ApiResult<RawThumbnail>>;
798
839
  GetHeatMapsInfo: (params: {
799
840
  cameraId: number;
800
841
  from: Date;
801
842
  to: Date;
802
843
  count: number;
803
- }) => Observable<any>;
844
+ }) => Observable<ApiResult<RawHeatmap>>;
804
845
  };
805
846
  users: {
806
847
  GetUser: () => Observable<ApiResult<RawUser>>;
@@ -819,18 +860,18 @@ declare interface InitParams {
819
860
  tokenServiceUrl?: string;
820
861
  }
821
862
 
822
- declare interface Interval_2 {
863
+ declare interface Interval {
823
864
  cameraId: number;
824
865
  from: Date;
825
866
  to: Date;
826
867
  }
827
868
 
828
869
  declare type IntervalState = {
829
- state: 'fullfilled';
870
+ state: 'fulfilled';
830
871
  data: Thumbnail;
831
872
  } | {
832
873
  state: 'pending';
833
- request: Observable<any>;
874
+ request: Observable<Thumbnail[]>;
834
875
  };
835
876
 
836
877
  declare class LibraryStore extends ApiStore {
@@ -869,8 +910,17 @@ declare class LibraryStore extends ApiStore {
869
910
  dispose(): void;
870
911
  }
871
912
 
913
+ declare interface LicensePlate {
914
+ Type: 'LicensePlate';
915
+ Value: string;
916
+ Number: string;
917
+ ParentIndex: number;
918
+ Box: BoundingBox;
919
+ Probability: number;
920
+ }
921
+
872
922
  declare interface NotificationOptions_2 {
873
- autoClose: number | false | undefined;
923
+ duration: number;
874
924
  }
875
925
 
876
926
  declare class NotificationService implements Notifier {
@@ -933,9 +983,177 @@ declare interface PendingRequest_2 {
933
983
  from: Date;
934
984
  to: Date;
935
985
  count: number;
936
- request: Observable<any>;
986
+ request: Observable<Thumbnail[]>;
937
987
  }
938
988
 
989
+ declare enum PREFERENCES {
990
+ DEFAULT_VIDEO_RESIZE_MODE = "defaultVideoResizeMode",
991
+ RESIZE_MODE_PER_CAMERA = "camerasResizeMode",
992
+ FISHEYE_CAMERAS = "fisheyeCameras",
993
+ UTC = "utc",
994
+ HOUR12 = "hour12",
995
+ START_OF_WEEK = "startOfWeek"
996
+ }
997
+
998
+ declare type Preferences = z.infer<typeof preferencesSchema>;
999
+
1000
+ declare const preferencesSchema: z.ZodObject<{
1001
+ defaultVideoResizeMode: z.ZodOptional<z.ZodNativeEnum<typeof VideoResizeMode>>;
1002
+ camerasResizeMode: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNativeEnum<typeof VideoResizeMode>], null>, "many">>;
1003
+ fisheyeCameras: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
1004
+ params: z.ZodObject<{
1005
+ x: z.ZodNumber;
1006
+ y: z.ZodNumber;
1007
+ r: z.ZodNumber;
1008
+ s: z.ZodNumber;
1009
+ }, "strip", z.ZodTypeAny, {
1010
+ x: number;
1011
+ y: number;
1012
+ r: number;
1013
+ s: number;
1014
+ }, {
1015
+ x: number;
1016
+ y: number;
1017
+ r: number;
1018
+ s: number;
1019
+ }>;
1020
+ positions: z.ZodOptional<z.ZodTuple<[z.ZodObject<{
1021
+ lat: z.ZodNumber;
1022
+ lon: z.ZodNumber;
1023
+ fov: z.ZodNumber;
1024
+ }, "strip", z.ZodTypeAny, {
1025
+ lat: number;
1026
+ lon: number;
1027
+ fov: number;
1028
+ }, {
1029
+ lat: number;
1030
+ lon: number;
1031
+ fov: number;
1032
+ }>, z.ZodObject<{
1033
+ lat: z.ZodNumber;
1034
+ lon: z.ZodNumber;
1035
+ fov: z.ZodNumber;
1036
+ }, "strip", z.ZodTypeAny, {
1037
+ lat: number;
1038
+ lon: number;
1039
+ fov: number;
1040
+ }, {
1041
+ lat: number;
1042
+ lon: number;
1043
+ fov: number;
1044
+ }>, z.ZodObject<{
1045
+ lat: z.ZodNumber;
1046
+ lon: z.ZodNumber;
1047
+ fov: z.ZodNumber;
1048
+ }, "strip", z.ZodTypeAny, {
1049
+ lat: number;
1050
+ lon: number;
1051
+ fov: number;
1052
+ }, {
1053
+ lat: number;
1054
+ lon: number;
1055
+ fov: number;
1056
+ }>], null>>;
1057
+ }, "strip", z.ZodTypeAny, {
1058
+ params: {
1059
+ x: number;
1060
+ y: number;
1061
+ r: number;
1062
+ s: number;
1063
+ };
1064
+ positions?: [{
1065
+ lat: number;
1066
+ lon: number;
1067
+ fov: number;
1068
+ }, {
1069
+ lat: number;
1070
+ lon: number;
1071
+ fov: number;
1072
+ }, {
1073
+ lat: number;
1074
+ lon: number;
1075
+ fov: number;
1076
+ }] | undefined;
1077
+ }, {
1078
+ params: {
1079
+ x: number;
1080
+ y: number;
1081
+ r: number;
1082
+ s: number;
1083
+ };
1084
+ positions?: [{
1085
+ lat: number;
1086
+ lon: number;
1087
+ fov: number;
1088
+ }, {
1089
+ lat: number;
1090
+ lon: number;
1091
+ fov: number;
1092
+ }, {
1093
+ lat: number;
1094
+ lon: number;
1095
+ fov: number;
1096
+ }] | undefined;
1097
+ }>, z.ZodNull]>], null>, "many">>;
1098
+ utc: z.ZodDefault<z.ZodBoolean>;
1099
+ hour12: z.ZodDefault<z.ZodBoolean>;
1100
+ startOfWeek: z.ZodDefault<z.ZodEnum<["monday", "sunday"]>>;
1101
+ }, "strip", z.ZodTypeAny, {
1102
+ utc: boolean;
1103
+ hour12: boolean;
1104
+ startOfWeek: "monday" | "sunday";
1105
+ defaultVideoResizeMode?: VideoResizeMode | undefined;
1106
+ camerasResizeMode?: [number, VideoResizeMode][] | undefined;
1107
+ fisheyeCameras?: [number, [number, number, number] | {
1108
+ params: {
1109
+ x: number;
1110
+ y: number;
1111
+ r: number;
1112
+ s: number;
1113
+ };
1114
+ positions?: [{
1115
+ lat: number;
1116
+ lon: number;
1117
+ fov: number;
1118
+ }, {
1119
+ lat: number;
1120
+ lon: number;
1121
+ fov: number;
1122
+ }, {
1123
+ lat: number;
1124
+ lon: number;
1125
+ fov: number;
1126
+ }] | undefined;
1127
+ } | null][] | undefined;
1128
+ }, {
1129
+ defaultVideoResizeMode?: VideoResizeMode | undefined;
1130
+ camerasResizeMode?: [number, VideoResizeMode][] | undefined;
1131
+ fisheyeCameras?: [number, [number, number, number] | {
1132
+ params: {
1133
+ x: number;
1134
+ y: number;
1135
+ r: number;
1136
+ s: number;
1137
+ };
1138
+ positions?: [{
1139
+ lat: number;
1140
+ lon: number;
1141
+ fov: number;
1142
+ }, {
1143
+ lat: number;
1144
+ lon: number;
1145
+ fov: number;
1146
+ }, {
1147
+ lat: number;
1148
+ lon: number;
1149
+ fov: number;
1150
+ }] | undefined;
1151
+ } | null][] | undefined;
1152
+ utc?: boolean | undefined;
1153
+ hour12?: boolean | undefined;
1154
+ startOfWeek?: "monday" | "sunday" | undefined;
1155
+ }>;
1156
+
939
1157
  declare interface Props {
940
1158
  store: EventSearchStore;
941
1159
  onEventClick: (event: CameraEvent) => void;
@@ -1012,7 +1230,7 @@ declare interface RawCamgroup {
1012
1230
 
1013
1231
  declare interface RawClip {
1014
1232
  id: number;
1015
- recordType: string;
1233
+ recordType: 'Archive' | 'Timelaps' | 'Timelaps to do';
1016
1234
  isReady: boolean;
1017
1235
  name: string;
1018
1236
  description: string;
@@ -1080,6 +1298,12 @@ declare interface RawSharedClip {
1080
1298
  validTo: string | Date;
1081
1299
  }
1082
1300
 
1301
+ declare interface RawThumbnail {
1302
+ timestamp: string;
1303
+ realtimestamp: string;
1304
+ url: string;
1305
+ }
1306
+
1083
1307
  declare type RawToken = {
1084
1308
  accessToken: string;
1085
1309
  accessTokenExpires: string;
@@ -1200,8 +1424,11 @@ declare enum SensorEventType {
1200
1424
  IDCheck = 37,
1201
1425
  PPECheck = 38,
1202
1426
  WelfareCheck = 39,
1203
- Uncategorized = 40,
1204
- Unknown = 999
1427
+ VehicleBreakIn = 40,
1428
+ DrugTrafficking = 41,
1429
+ Assault = 42,
1430
+ PackageDelivery = 43,
1431
+ Uncategorized = 999
1205
1432
  }
1206
1433
 
1207
1434
  declare interface Storage_2 {
@@ -1215,8 +1442,6 @@ declare interface Thumbnail {
1215
1442
  timestamp: Date;
1216
1443
  realTimestamp: Date;
1217
1444
  url: string;
1218
- width: number;
1219
- height: number;
1220
1445
  }
1221
1446
 
1222
1447
  declare class ThumbnailsStore extends ApiStore {
@@ -1238,7 +1463,7 @@ declare class ThumbnailsStore extends ApiStore {
1238
1463
  * @param to - end of the period
1239
1464
  * @param count - number of thumbnails
1240
1465
  */
1241
- fetchThumbnails(cameraId: number, from: Date, to: Date, count: number): Observable<any>;
1466
+ fetchThumbnails: (cameraId: number, from: Date, to: Date, count: number) => Observable<Thumbnail[]>;
1242
1467
  getIntervalState(cameraId: number, from: Date, to: Date): IntervalState | null;
1243
1468
  fetchThumbnail(cameraId: number, from: Date, to: Date): Observable<Thumbnail>;
1244
1469
  /**
@@ -1249,11 +1474,9 @@ declare class ThumbnailsStore extends ApiStore {
1249
1474
  * Returns previously obtained thumbnails for given camera within period
1250
1475
  */
1251
1476
  getThumbnails({ cameraId, from, to }: GetThumbnailParams): Thumbnail[];
1252
- toThumbnail: (cameraId: number) => ({ realtimestamp, url, width, height }: {
1477
+ toThumbnail: (cameraId: number) => ({ realtimestamp, url }: {
1253
1478
  realtimestamp: string;
1254
1479
  url: string;
1255
- width: number;
1256
- height: number;
1257
1480
  }) => Thumbnail;
1258
1481
  }
1259
1482
 
@@ -1308,4 +1531,9 @@ declare class ToolkitApp {
1308
1531
 
1309
1532
  declare type User = RawUser;
1310
1533
 
1534
+ declare enum VideoResizeMode {
1535
+ Fit = "contain",
1536
+ Stretch = "fill"
1537
+ }
1538
+
1311
1539
  export { }