@evercam/api 1.0.0-f6f982c6c → 1.0.0-f7aa2107d

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.
Files changed (104) hide show
  1. package/README.md +2 -0
  2. package/dist/api/api/3dFirebaseApi.d.ts +20 -0
  3. package/dist/api/{adminApi.d.ts → api/adminApi.d.ts} +89 -24
  4. package/dist/api/api/aiApi.d.ts +143 -0
  5. package/dist/api/{client → api/client}/customErrors.d.ts +10 -0
  6. package/dist/api/{client → api/client}/interceptors.d.ts +3 -2
  7. package/dist/api/api/client/swr/Swr.d.ts +14 -0
  8. package/dist/api/api/client/swr/SwrStore.d.ts +10 -0
  9. package/dist/api/{evercamApi.d.ts → api/evercamApi.d.ts} +74 -25
  10. package/dist/api/api/evercamLabsApi.d.ts +43 -0
  11. package/dist/api/api/index.d.ts +13 -0
  12. package/dist/api/{ingestApi.d.ts → api/ingestApi.d.ts} +9 -6
  13. package/dist/api/{ptzApi.d.ts → api/ptzApi.d.ts} +1 -1
  14. package/dist/api/api/weatherApi.d.ts +9 -0
  15. package/dist/api/index.d.ts +3 -13
  16. package/dist/{types → api/types}/360.d.ts +13 -2
  17. package/dist/{types → api/types}/aconex.d.ts +1 -1
  18. package/dist/{types → api/types}/analytics.d.ts +78 -70
  19. package/dist/{types → api/types}/anpr.d.ts +11 -6
  20. package/dist/{types → api/types}/automation.d.ts +4 -0
  21. package/dist/{types → api/types}/axios.d.ts +15 -1
  22. package/dist/{types → api/types}/camera.d.ts +17 -56
  23. package/dist/api/types/comments.d.ts +59 -0
  24. package/dist/{types → api/types}/company.d.ts +29 -1
  25. package/dist/{types → api/types}/connector.d.ts +6 -1
  26. package/dist/api/types/coolify.d.ts +18 -0
  27. package/dist/{types → api/types}/copilot.d.ts +11 -9
  28. package/dist/{types → api/types}/countries.d.ts +0 -7
  29. package/dist/api/types/detections.d.ts +126 -0
  30. package/dist/{types → api/types}/errors.d.ts +12 -0
  31. package/dist/{types → api/types}/gateReport.d.ts +50 -1
  32. package/dist/api/types/hdd.d.ts +63 -0
  33. package/dist/{types → api/types}/index.d.ts +8 -2
  34. package/dist/{types → api/types}/ingest.d.ts +4 -0
  35. package/dist/{types → api/types}/kit.d.ts +63 -12
  36. package/dist/{types → api/types}/nvr.d.ts +2 -1
  37. package/dist/{types/sitePlanner.d.ts → api/types/planner.d.ts} +10 -1
  38. package/dist/api/types/posthog.d.ts +18 -0
  39. package/dist/api/types/procore.d.ts +222 -0
  40. package/dist/{types → api/types}/progressPhoto.d.ts +21 -7
  41. package/dist/{types → api/types}/project.d.ts +10 -1
  42. package/dist/{types → api/types}/recording.d.ts +1 -2
  43. package/dist/{types → api/types}/roi.d.ts +2 -1
  44. package/dist/{types → api/types}/routeParams.d.ts +2 -1
  45. package/dist/{types → api/types}/shared.d.ts +3 -17
  46. package/dist/{types → api/types}/shares.d.ts +5 -1
  47. package/dist/api/types/siteAnalytics.d.ts +142 -0
  48. package/dist/api/types/sso.d.ts +55 -0
  49. package/dist/{types → api/types}/streaming.d.ts +3 -25
  50. package/dist/api/types/systemCheck.d.ts +11 -0
  51. package/dist/api/types/tag.d.ts +12 -0
  52. package/dist/{types → api/types}/time.d.ts +2 -0
  53. package/dist/{types → api/types}/timelapse.d.ts +15 -0
  54. package/dist/{types → api/types}/user.d.ts +1 -6
  55. package/dist/{types → api/types}/weather.d.ts +6 -2
  56. package/dist/{types → api/types}/widget.d.ts +11 -5
  57. package/dist/api/types/xweather.d.ts +12 -0
  58. package/dist/index.d.ts +2 -3
  59. package/dist/index.js +1306 -748
  60. package/dist/index.js.map +1 -1
  61. package/dist/index.umd.cjs +1 -1
  62. package/dist/index.umd.cjs.map +1 -1
  63. package/dist/shared/api/index.d.ts +3 -0
  64. package/dist/shared/components/timelinePlayer/providers/index.d.ts +3 -0
  65. package/dist/shared/components/timelinePlayer/providers/timelineAnprProvider.d.ts +17 -0
  66. package/dist/shared/components/timelinePlayer/providers/timelineDataProvider.d.ts +13 -0
  67. package/dist/shared/components/timelinePlayer/providers/timelineLuminanceProvider.d.ts +16 -0
  68. package/dist/shared/types/components.d.ts +192 -0
  69. package/dist/shared/types/imagePlayer.d.ts +34 -0
  70. package/dist/shared/types/index.d.ts +4 -0
  71. package/dist/shared/types/timeline.d.ts +9 -0
  72. package/package.json +6 -5
  73. package/dist/api/3dFirebaseApi.d.ts +0 -9
  74. package/dist/api/aiApi.d.ts +0 -73
  75. package/dist/api/evercamLabsApi.d.ts +0 -51
  76. package/dist/api/weatherApi.d.ts +0 -25
  77. package/dist/types/comments.d.ts +0 -36
  78. package/dist/types/detections.d.ts +0 -62
  79. package/dist/types/devices.d.ts +0 -228
  80. package/dist/types/procore.d.ts +0 -76
  81. package/dist/types/siteAnalytics.d.ts +0 -5
  82. /package/dist/api/{authzApi.d.ts → api/authzApi.d.ts} +0 -0
  83. /package/dist/api/{client → api/client}/axios.d.ts +0 -0
  84. /package/dist/api/{client → api/client}/index.d.ts +0 -0
  85. /package/dist/api/{exNvrApi.d.ts → api/exNvrApi.d.ts} +0 -0
  86. /package/dist/api/{videoWallApi.d.ts → api/videoWallApi.d.ts} +0 -0
  87. /package/dist/api/{webRtcApi.d.ts → api/webRtcApi.d.ts} +0 -0
  88. /package/dist/{types → api/types}/auditLogs.d.ts +0 -0
  89. /package/dist/{types → api/types}/autodesk.d.ts +0 -0
  90. /package/dist/{types → api/types}/bim.d.ts +0 -0
  91. /package/dist/{types → api/types}/compare.d.ts +0 -0
  92. /package/dist/{types → api/types}/credentials.d.ts +0 -0
  93. /package/dist/{types → api/types}/drone.d.ts +0 -0
  94. /package/dist/{types → api/types}/map.d.ts +0 -0
  95. /package/dist/{types → api/types}/media.d.ts +0 -0
  96. /package/dist/{types → api/types}/notification.d.ts +0 -0
  97. /package/dist/{types → api/types}/router.d.ts +0 -0
  98. /package/dist/{types → api/types}/sim.d.ts +0 -0
  99. /package/dist/{types → api/types}/snapshots.d.ts +0 -0
  100. /package/dist/{types → api/types}/storageServers.d.ts +0 -0
  101. /package/dist/{types → api/types}/vendorModel.d.ts +0 -0
  102. /package/dist/{types → api/types}/videoWall.d.ts +0 -0
  103. /package/dist/{types → api/types}/voyageControl.d.ts +0 -0
  104. /package/dist/{utils.d.ts → api/utils.d.ts} +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../types/360.ts","../types/aconex.ts","../types/analytics.ts","../types/anpr.ts","../types/media.ts","../types/bim.ts","../types/camera.ts","../types/compare.ts","../types/copilot.ts","../types/devices.ts","../types/drone.ts","../types/errors.ts","../types/gateReport.ts","../types/ingest.ts","../types/map.ts","../types/connector.ts","../types/notification.ts","../types/nvr.ts","../types/progressPhoto.ts","../types/project.ts","../types/recording.ts","../types/roi.ts","../types/routeParams.ts","../types/router.ts","../types/shares.ts","../types/sim.ts","../types/sitePlanner.ts","../types/streaming.ts","../types/timelapse.ts","../types/user.ts","../types/videoWall.ts","../types/weather.ts","../types/shared.ts","../types/kit.ts","../types/auditLogs.ts","../types/snapshots.ts","../types/siteAnalytics.ts","../types/widget.ts","../types/countries.ts","../types/automation.ts","../api/client/customErrors.ts","../api/client/interceptors.ts","../api/client/axios.ts","../api/adminApi.ts","../api/videoWallApi.ts","../api/3dFirebaseApi.ts","../utils.ts","../api/aiApi.ts","../api/webRtcApi.ts","../api/weatherApi.ts","../api/evercamLabsApi.ts","../api/evercamApi.ts","../api/ptzApi.ts","../api/ingestApi.ts","../api/exNvrApi.ts","../api/authzApi.ts"],"sourcesContent":["import { DateType } from \"@/types/time\"\n\nexport type _360CameraParams = {\n azimuthAngle: number\n polarAngle: number\n}\n\nexport type _360Floor = {\n floorID: string\n name: string\n}\n\nexport type _360Scene = {\n date: string // DD-MM-YYYY\n dateID: string\n floors: _360Floor[]\n polarAngle: number\n azimuthAngle: number\n}\n\nexport type _360ProjectJsonResponse = {\n dates: _360Scene[]\n [key: string]: any\n}\n\nexport type MobileCaptureSnapshot = {\n id: string\n uploadedBy: string\n updatedAt: string //YYYY-MM-DDTHH:mm:SS.MS (ISO)\n assetType: string //mobile_photos or mobile_audios\n thumbnailUrl: string //presigned S3 URL\n}\n\nexport enum _360UrlParams {\n DateId = \"date_id\",\n Floor = \"floor\",\n Marker = \"marker\",\n PolarAngle = \"polarAngle\",\n AzimuthAngle = \"azimuthAngle\",\n}\n\nexport enum _360AssetType {\n Video = \"video\",\n Image = \"image\",\n Model = \"model\",\n Route = \"route\",\n MobilePhoto = \"mobile_photos\",\n MobileAudio = \"mobile_audios\",\n}\n\nexport enum _360IntergrationType {\n Matterport = \"Matterport\",\n OpenSpace = \"Openspace\",\n HoloBuilder = \"Holobuilder\",\n DroneDeploy = \"Dronedeploy\",\n Evercam = \"Evercam\",\n}\n\nexport type _360AssetsQueryParams = {\n page: number\n limit: number\n projectID: string\n date: DateType\n floor: string\n id: string\n}\n\nexport type _360AssetsRequestPayload = {\n projectId: string\n date: DateType\n floor: string\n uploadedBy?: string\n}\n\nexport type _360AssetsUploadPayload = {\n targetPointsCount: number\n assetType: string\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n deviceSerial: string\n startPosition: string\n endPosition: string\n isTimelapse: boolean\n}\n\nexport type Generate360MapRequestPayload = {\n dateId: string\n floorId: string\n cameraOffset: string\n startPoint: string\n endPoint: string\n}\n","export type AconexUserProjectsResponsePayload = Array<{\n id: number\n name: string\n shortName: string\n startDate: string\n endDate: string\n}>\n\nexport type AconexDocumentSchemaField = {\n dataType: AconexDocumentDataType\n identifier: string\n schemaValues: Array<{ id: string; value: string }>\n fieldName: string\n mandatoryStatus: AconexMandatoryStatus\n componentType?: AconexFormComponentType\n items?: Array<any>\n disabled?: boolean\n}\n\nexport enum AconexDocumentDataType {\n Long = \"LONG\",\n Integer = \"INTEGER\",\n String = \"STRING\",\n Boolean = \"BOOLEAN\",\n Date = \"DATE\",\n}\n\nexport enum AconexFormComponentType {\n Select = \"SelectField\",\n Text = \"TextField\",\n DateTime = \"DateTimeField\",\n Switch = \"SwitchField\",\n}\n\nexport enum AconexMandatoryStatus {\n Mandatory = \"MANDATORY\",\n NotMandatory = \"NOT_MANDATORY\",\n}\n\nexport type AconexAuthCallbackParams = {\n code: string\n location: string\n}\n\nexport type AconexEditedImageUploadRequestPayload = {\n projectExid: string\n snapshot: string\n}\n","import { DateType } from \"@/types\"\n\nexport type AnalyticsRequestPayload = {\n name: string\n cameraExid: string\n} & { [key: string]: any }\n\nexport enum AnalyticsEventPageId {\n Timeline = \"Timeline\",\n Copilot = \"Copilot\",\n Recordings = \"Recordings\",\n Liveview = \"LiveView\",\n Compare = \"Compare\",\n BimCompare = \"BimCompare\",\n Sharing = \"Sharing\",\n Timelapse = \"Timelapse\",\n Project = \"Project\",\n AllProjects = \"AllProjects\",\n Tutorials = \"Tutorials\",\n ProjectMapView = \"ProjectMapView\",\n AccountMapView = \"AccountMapView\",\n Automations = \"Automations\",\n ProgressPhotosUnsubscribe = \"ProgressPhotosUnsubscribe\",\n VideoWall = \"VideoWall\",\n ProjectSettings = \"ProjectSettings\",\n ProjectSettingsCameraSettings = \"ProjectSettings-CameraSettings\",\n ProjectSettingsMembers = \"ProjectSettings-Members\",\n ProjectSettingsOverview = \"ProjectSettings-Overview\",\n Settings = \"Settings\",\n SettingsAccount = \"Settings-Account\",\n SettingsActivities = \"Settings-Activities\",\n SettingsConnectors = \"Settings-Connectors\",\n MediaHub = \"MediaHub\",\n MediaOveriew = \"MediaOveriew\",\n GateReport = \"GateReport\",\n Bim = \"Bim\",\n Drone = \"Drone\",\n ThreeSixty = \"360\",\n SitePlanner = \"SitePlanner\",\n Widgets = \"Widgets\",\n Company = \"Company\",\n EmbeddedLive = \"EmbeddedLive\",\n EmbeddedRecordings = \"EmbeddedRecordings\",\n EmbeddedBimCompare = \"EmbeddedBimCompare\",\n GateReportInfo = \"GateReportInfo\",\n BimInfo = \"BimInfo\",\n DroneInfo = \"DroneInfo\",\n ThreeSixtyInfo = \"360Info\",\n BimCompareInfo = \"BimCompareInfo\",\n WeatherReport = \"WeatherReport\",\n EvercamGoInfo = \"EvercamGoInfo\",\n}\n\nexport enum AnalyticsEvent {\n // Global events\n PageView = \"PageView\",\n OpenCompanyPage = \"OpenCompanyPage\",\n OpenSettings = \"OpenSettings\",\n ToggleHelpDialog = \"ToggleHelpDialog\",\n\n // Layout events\n LayoutToggleRightSidebar = \"Layout-ToggleRightSidebar\",\n LayoutResizeRightSidebar = \"Layout-ResizeRightSidebar\",\n LayoutThemeMode = \"Layout-ThemeMode\",\n\n // Features toggle events\n Xray = \"Xray-Toggle\",\n Weather = \"Weather-Toggle\",\n MarkUpTool = \"MarkUpTool-Toggle\",\n Comment = \"Comment-Toggle\",\n Compare = \"Compare-Toggle\",\n Copilot = \"Copilot-Toggle\",\n\n // App settings events\n SettingsAccountUpdatePassword = \"UpdatePassword\",\n SettingsAccountUpdatePersonalInformation = \"UpdatePersonalInformation\",\n SettingsAccountRevokeSession = \"RevokeSession\",\n SettingsAccountCancelRevokeSession = \"CancelRevokeSession\",\n SettingsAccountClickRowsPerPage = \"ClickRowsPerPage\",\n SettingsAccountOpenDeleteAccountDialog = \"DeleteAccount\",\n SettingsActivitiesFromDateSelect = \"FromDateSelect\",\n SettingsActivitiesToDateSelect = \"ToDateSelect\",\n SettingsConnectorsConnectToProcore = \"ConnectToProcore\",\n SettingsConnectorsConnectToAconex = \"ConnectToAconex\",\n SettingsConnectorsConnectToAutodesk = \"ConnectToAutodesk\",\n SettingsConnectorsConnectToVoyageControl = \"ConnectToVoyageControl\",\n SettingsConnectorsContactUsButtonClick = \"ClickContactUs\",\n SettingsConnectorsRemoveAconexConnection = \"RemoveAconex\",\n SettingsConnectorsRemoveAutodeskConnection = \"RemoveAutodesk\",\n SettingsConnectorsRemoveProcoreConnection = \"RemoveProcore\",\n SettingsConnectorsRemoveVoyageControlConnection = \"RemoveVoyageControl\",\n SettingsConnectorsToggleConnectorPromptDialog = \"ToggleConnectorPromptDialog\",\n SettingsConnectorsToggleVoyageControlDialog = \"ToggleVoyageControlDialog\",\n\n // Widgets events\n WidgetsAddWidgetClick = \"AddWidget\",\n WidgetsCancelClick = \"Cancel\",\n WidgetsEditHeight = \"EditHeight\",\n WidgetsEditHeightResolutionType = \"EditHeightResolutionType\",\n WidgetsEditWidth = \"EditWidth\",\n WidgetsEditWidthResolutionType = \"EditWidthResolutionType\",\n WidgetsLayout = \"ClickLayout\",\n WidgetsSaveClick = \"Save\",\n WidgetsSelectCamera = \"SelectCamera\",\n WidgetsSelectTypeBIMCompare = \"SelectTypeBIMCompare\",\n WidgetsSelectTypeLiveView = \"SelectTypeLiveView\",\n WidgetsSelectTypeRecordings = \"SelectTypeRecordings\",\n WidgetsSelectTypeVideoWall = \"SelectTypeVideoWall\",\n WidgetsSettingRefreshRate = \"EditRefreshRate\",\n WidgetsSettingRestrictRecentImagesInput = \"EditRestrictRecentImagesInput\",\n WidgetsSettingToggleBIMCompareDarkMode = \"ToggleBIMDarkMode\",\n WidgetsSettingToggleBIMCompareTimeLine = \"ToggleBIMCalendar\",\n WidgetsSettingToggleDownload = \"ToggleDownload\",\n WidgetsSettingToggleFullScreen = \"ToggleFullScreen\",\n WidgetsSettingTogglePlayPause = \"TogglePlayPause\",\n WidgetsSettingToggleRecordingsCalendar = \"ToggleRecordingsCalendar\",\n WidgetsSettingToggleRecordingsDarkMode = \"ToggleRecordingsDarkMode\",\n WidgetsSettingToggleRestrictRecentImages = \"ToggleRestrictRecentImages\",\n WidgetsSettingToggleZoom = \"ToggleZoom\",\n WidgetsTogglePublicWidget = \"TogglePublicWidget\",\n\n // Player events\n PlayerSelectCamera = \"Player-SelectCamera\",\n PlayerDownload = \"Player-Download\",\n PlayerToggleFullscreen = \"Player-ToggleFullscreen\",\n PlayerEnableLive = \"Player-EnableLive\",\n PlayerTogglePlayback = \"Player-TogglePlayback\",\n PlayerSelectSpeed = \"Player-SelectSpeed\",\n PlayerSelectQuality = \"Player-SelectQuality\",\n PlayerJumptoNextTicks = \"Player-JumptoNextTicks\",\n PlayerJumptoPreviousTicks = \"Player-JumptoPreviousTicks\",\n PlayerSwitchMode = \"Player-SwitchMode\",\n PlayerZoomIn = \"Player-ZoomIn\",\n PlayerZoomOut = \"Player-ZoomOut\",\n\n // PTZ camera events\n PTZAddPresetClick = \"PTZ-AddPresetClick\",\n PTZCreatePreset = \"PTZ-CreatePreset\",\n PTZUpdatePreset = \"PTZ-UpdatePreset\",\n PTZDeletePreset = \"PTZ-DeletePreset\",\n PTZMoveDown = \"PTZ-MoveDown\",\n PTZMoveLeft = \"PTZ-MoveLeft\",\n PTZMoveRight = \"PTZ-MoveRight\",\n PTZMoveUp = \"PTZ-MoveUp\",\n PTZPresetSelect = \"PTZ-PresetSelect\",\n PTZResetPosition = \"PTZ-ResetPosition\",\n PTZToggleCreatePresetForm = \"PTZ-ToggleCreatePresetForm\",\n PTZToggleDeletePresetDialog = \"PTZ-ToggleDeletePresetDialog\",\n PTZToggleEditPresetForm = \"PTZ-ToggleEditPresetForm\",\n PTZTogglePresetsMenu = \"PTZ-TogglePresetsMenu\",\n PTZZoomIn = \"PTZ-ZoomIn\",\n PTZZoomOut = \"PTZ-ZoomOut\",\n\n // Timeline actions\n TimelineClickEvent = \"Timeline-ClickEvent\",\n TimelineCompareMoveBeforeMarker = \"Compare-MoveBeforeMarker\",\n TimelineCompareMoveAfterMarker = \"Compare-MoveAfterMarker\",\n TimelineCompareSlide = \"Compare-Slide\",\n TimelineSelectMilestoneItem = \"Timeline-SelectMilestoneItem\",\n TimelineSelectTimestamp = \"Timeline-SelectTimestamp\",\n\n // Copilot\n CopilotSendMessage = \"Copilot-SendMessage\",\n CopilotClickTimestamp = \"Copilot-ClickTimestamp\",\n CopilotRegenerate = \"Copilot-Regenerate\",\n CopilotError = \"Copilot-Error\",\n CopilotNavigation = \"Copilot-Navigation\",\n CopilotToggle = \"Copilot-Toggle\",\n\n // Timeline groups visibility events\n GroupsVisibilityMobileCapture = \"GroupsVisibility-MobileCapture\",\n GroupsVisibilityAnpr = \"GroupsVisibility-Anpr\",\n GroupsVisibilityComments = \"GroupsVisibility-Comments\",\n GroupsVisibilityMediaHub = \"GroupsVisibility-MediaHub\",\n GroupsVisibilityBimMilestones = \"GroupsVisibility-BimMilestines\",\n GroupsVisibilityDroneFlights = \"GroupsVisibility-DroneFlights\",\n GroupsVisibility360Walks = \"GroupsVisibility-360Walks\",\n GroupsVisibilityExNvrVideoRecordings = \"GroupsVisibility-ExNvrVideoRecordings\",\n GroupsVisibilityLuminance = \"GroupsVisibility-Luminance\",\n\n // Comments events\n CommentsPlaceMarker = \"Comments-PlaceMarker\",\n CommentsSave = \"Comments-Save\",\n CommentsCancelSave = \"Comments-CancelSave\",\n CommentsRemove = \"Comments-Remove\",\n CommentsCancelRemove = \"Comments-CancelRemove\",\n CommentsArchive = \"Comments-Archive\",\n CommentsCancelArchive = \"Comments-CancelArchive\",\n CommentsSelect = \"Comments-Select\",\n\n // Xray events\n XrayMove = \"Xray-Move\",\n XrayMoveBeforeMarker = \"Xray-MoveBeforeMarker\",\n XrayMoveAfterMarker = \"Xray-MoveAfterMarker\",\n XrayToggleExportDialog = \"Xray-ToggleExportDialog\",\n XrayDownload = \"Xray-Download\",\n XraySaveToMediaHub = \"Xray-SaveToMediaHub\",\n XarySelectDate = \"Xray-SelectDate\",\n XarySelectLatestDate = \"Xray-SelectLatestDate\",\n XarySelectOldestDate = \"Xray-SelectOldestDate\",\n XraySendToConnector = \"Xray-SendToConnector\",\n\n // Weather events\n WeatherGoBackDate = \"Weather-GoBackDate\",\n WeatherGoForwardDate = \"Weather-GoForwardDate\",\n WeatherReportExportFile = \"ExportFile\",\n WeatherReportExportType = \"ExportType\",\n WeatherReportMediaHubUploadFile = \"MediaHubUploadFile\",\n WeatherReportSelectStartDate = \"SelectStartDate\",\n WeatherReportSelectEndDate = \"SelectEndDate\",\n WeatherReportViewChart = \"ViewChart\",\n WeatherSelectDate = \"Weather-SelectDate\",\n WeatherSelectLegend = \"Weather-SelectLegend\",\n WeatherSelectProvider = \"Weather-SelectProvider\",\n WeatherSelectTempScale = \"Weather-SelectTempScale\",\n\n // Compare events\n CompareSlide = \"Slide\",\n CompareSelectBeforeDate = \"SelectBeforeDate\",\n CompareSelectBeforeLatestDate = \"SelectBeforeLatestDate\",\n CompareSelectBeforeOldestDate = \"SelectBeforeOldestDate\",\n CompareSelectAfterDate = \"SelectAfterDate\",\n CompareSelectAfterOldestDate = \"SelectAfterOldestDate\",\n CompareSelectAfterLatestDate = \"SelectAfterLatestDate\",\n CompareToggleExportDialog = \"ToggleExportDialog\",\n CompareSaveToMediaHub = \"SaveToMediaHub\",\n CompareGoToMediaHub = \"GoToMediaHub\",\n CompareDownloadAs = \"DownloadAs\",\n CompareCopyDownloadFileUrl = \"CopyDownloadFileUrl\",\n\n // Bim Compare events\n BimCompareSlide = \"BimCompare-Slide\",\n BimCompareSelectCameraDate = \"BimCompare-SelectCameraDate\",\n BimCompareSelectCameraLatestDate = \"BimCompare-SelectCameraLatestDate\",\n BimCompareSelectCameraOldestDate = \"BimCompare-SelectCameraOldestDate\",\n BimCompareSelectBimDate = \"BimCompare-SelectBimDate\",\n BimCompareSelectBimOldestDate = \"BimCompare-SelectBimOldestDate\",\n BimCompareSelectBimLatestDate = \"BimCompare-SelectBimLatestDate\",\n BimCompareSelectModel = \"BimCompare-SelectModel\",\n BimCompareChangeTransparency = \"BimCompare-ChangeTransparency\",\n BimCompareSelectTimelineDate = \"BimCompare-SelectTimelineDate\",\n BimCompareToggleExportDialog = \"BimCompare-ToggleExportDialog\",\n BimCompareSaveToMediaHub = \"BimCompare-SaveToMediaHub\",\n BimCompareGoToMediaHub = \"BimCompare-GoToMediaHub\",\n BimCompareDownloadAs = \"BimCompare-DownloadAs\",\n BimCompareCopyDownloadFileUrl = \"BimCompare-CopyDownloadFileUrl\",\n\n // Mark-up tool events\n MarkUpToolClose = \"MarkUpTool-Close\",\n MarkUpToolCopyImage = \"MarkUpTool-CopyImage\",\n MarkUpToolOpen = \"MarkUpTool-Open\",\n MarkUpToolSelectTool = \"MarkUpTool-SelectTool\",\n MarkUpToolSelectBlur = \"MarkUpTool-SelectBlur\",\n MarkUpToolSelectCrop = \"MarkUpTool-SelectCrop\",\n MarkUpToolSelectLine = \"MarkUpTool-SelectLine\",\n MarkUpToolSelectBrush = \"MarkUpTool-SelectBrush\",\n MarkUpToolSelectRectangle = \"MarkUpTool-SelectRectangle\",\n MarkUpToolSelectCircle = \"MarkUpTool-SelectCircle\",\n MarkUpToolSelectArrow = \"MarkUpTool-SelectArrow\",\n MarkUpToolSelectText = \"MarkUpTool-SelectText\",\n MarkUpToolUndo = \"MarkUpTool-Undo\",\n MarkUpToolRedo = \"MarkUpTool-Redo\",\n MarkUpToolSelectColor = \"MarkUpTool-SelectColor\",\n MarkUpToolApplyCrop = \"MarkUpTool-ApplyCrop\",\n MarkUpToolCancelCrop = \"MarkUpTool-CancelCrop\",\n MarkUpToolCancelSend = \"MarkUpTool-CancelSend\",\n MarkUpToolOpenEditName = \"MarkUpTool-OpenEditName\",\n MarkUpToolCancelEditName = \"MarkUpTool-CancelEditName\",\n MarkUpToolSaveEditedName = \"MarkUpTool-SaveEditedName\",\n MarkUpToolSaveToMediaHub = \"MarkUpTool-SaveToMediaHub\",\n MarkUpToolDownloadAs = \"MarkUpTool-DownloadAs\",\n MarkUpToolSendToConnector = \"MarkUpTool-SendToConnector\",\n\n // Ai Tools events\n AiToolToggleBrainToolsMenu = \"AITool-ToggleBrainToolsMenu\",\n AiToolSelectObjectDetection = \"AITool-SelectObjectDetection\",\n AiToolSelectAskChatGpt = \"AITool-SelectAskChatGpt\",\n AiToolSelectSegmentation = \"AITool-SelectSegmentation\",\n AiToolSelectDepthAnalysis = \"AITool-SelectDepthAnalysis\",\n AiToolUpdateTransparency = \"AITool-UpdateTransparency\",\n\n // Recordings events\n RecordingsCancelExportDialog = \"CancelExportDialog\",\n RecordingsClickSupportLink = \"ClickSupportLink\",\n RecordingsCreateClip = \"CreateClip\",\n RecordingsToggleExportDialog = \"ToggleExportDialog\",\n RecordingToggleGateReportEvents = \"ToggleGateReportEvents\",\n RecordingsSelectDate = \"SelectDate\",\n RecordingsSelectDateClickMonthYear = \"SelectDate-ClickMonthYear\",\n RecordingsSelectLatestDate = \"SelectLatestDate\",\n RecordingsSelectOldestDate = \"SelectOldestDate\",\n\n // Sharing events\n SharingToggleAddUserDialog = \"ToggleAddUserDialog\",\n SharingToggleEditVisibilityOptionsDialog = \"ToggleEditVisibilityOptionsDialog\",\n SharingAddUser = \"AddUser\",\n SharingToggleDeleteUserDialog = \"ToggleDeleteUserDialog\",\n SharingDeleteUser = \"DeleteUser\",\n SharingSaveVisibilityOptions = \"SaveVisibilityOptions\",\n SharingCopyLink = \"CopyLink\",\n SharingResendInvite = \"ResendInvite\",\n SharingTransferOwnership = \"TransferOwnership\",\n SharingSortBy = \"SortBy\",\n SharingChangeAccessRight = \"ChangeAccessRight\",\n\n // ThreeSixty events\n ThreeSixtyChangeDate = \"ChangeDate\",\n ThreeSixtyChangeFloor = \"ChangeFloor\",\n ThreeSixtyCloseCompare = \"CloseCompare\",\n ThreeSixtyCloseForgeBIM = \"CloseForgeBIM\",\n ThreeSixtyDeleteTag = \"DeleteTag\",\n ThreeSixtyDisableMeasuringTool = \"DisableMeasuringTool\",\n ThreeSixtyDisableTagTool = \"DisableTagTool\",\n ThreeSixtyEnableMeasuringTool = \"EnableMeasuringTool\",\n ThreeSixtyEnableTagTool = \"EnableTagTool\",\n ThreeSixtyLockCompare = \"LockCompare\",\n ThreeSixtyLockForgeBIM = \"LockForgeBIM\",\n ThreeSixtyMarkerThumbnailClicked = \"MarkerThumbnailClicked\",\n ThreeSixtyMiniMapMarkerClicked = \"MiniMapMarkerClicked\",\n ThreeSixtyOpen = \"Open\",\n ThreeSixtyOpenCompare = \"OpenCompare\",\n ThreeSixtyOpenForgeBIM = \"OpenForgeBIM\",\n ThreeSixtyOpenMarkersThumbnailsList = \"OpenMarkersThumbnailsList\",\n ThreeSixtyOpenTagsList = \"OpenTagsList\",\n ThreeSixtySaveTag = \"SaveTag\",\n ThreeSixtyShareView = \"ShareView\",\n ThreeSixtyTagClicked = \"TagClicked\",\n ThreeSixtyToggleMarkersVisibility = \"ToggleMarkersVisibility\",\n ThreeSixtyToggleMinimapVisibility = \"ToggleMinimapVisibility\",\n ThreeSixtyToggleMiniModel = \"ToggleMiniModel\",\n ThreeSixtyToggleTagsVisibility = \"ToggleTagsVisibility\",\n ThreeSixtyTourPause = \"Tour-Pause\",\n ThreeSixtyTourPlay = \"Tour-Play\",\n ThreeSixtyTourSetSpeedXHalve = \"Tour-SetSpeedX0.5\",\n ThreeSixtyTourSetSpeedX1 = \"Tour-SetSpeedX1\",\n ThreeSixtyTourSetSpeedX2 = \"Tour-SetSpeedX2\",\n ThreeSixtyTourSetSpeedX4 = \"Tour-SetSpeedX4\",\n ThreeSixtyTourToggleLoop = \"Tour-ToggleLoop\",\n ThreeSixtyUnlockCompare = \"UnlockCompare\",\n ThreeSixtyUnlockForgeBIM = \"UnlockForgeBIM\",\n\n // Drone events\n DroneAreaToolClick = \"AreaTool-Click\",\n DroneChangeDate = \"ChangeDate\",\n DroneChooseTagType = \"ChooseTagType\",\n DroneClickCameraLiveView = \"ClickCameraLiveView\",\n DroneClickCameraMarker = \"ClickCameraMarker\",\n DroneCompareToolClick = \"CompareTool-Click\",\n DroneCompareToolSaveToMediaHub = \"CompareToolSaveToMediaHub\",\n DroneCompareToolSliderMove = \"CompareTool-SliderMove\",\n DroneCompareToolToggleExportDialog = \"CompareToolToggleExportDialog\",\n DroneCopyLocationToClipboard = \"CopyLocationToClipboard\",\n DroneEnable2DImagery = \"Enable2DImagery\",\n DroneGenerateUploadFlight = \"GenerateUploadFlight\",\n DroneInspectionToolClick = \"InspectionTool-Click\",\n DroneMeasuringToolClick = \"MeasuringTool-Click\",\n DroneOpenHelpPanel = \"OpenHelpPanel\",\n DroneOpenImageViewer = \"OpenImageViewer\",\n DroneResetView = \"ResetView\",\n DroneSaveTag = \"SaveTag\",\n DroneSettingsToggle360PathsVisibility = \"Settings-Toggle360PathsVisibility\",\n DroneSettingsToggleCameraMarkersVisibility = \"Settings-ToggleCameraMarkersVisibility\",\n DroneSettingsToggleSurroundingBuildingsTool = \"Settings-ToggleSurroundingBuildingsTool\",\n DroneSettingsToggleTagsVisibility = \"Settings-ToggleTagsVisibility\",\n DroneShareLink = \"ShareLink\",\n DroneTagsToolClick = \"TagsTool-Click\",\n DroneToggleBimCompareTool = \"ToggleBimCompareTool\",\n DroneToggleFullScreen = \"ToggleFullScreen\",\n DroneToggleMapStyle = \"ToggleMapStyle\",\n DroneToggleQualityMode = \"ChooseQuality\",\n DroneToggleSideMenu = \"ToggleSideMenu\",\n DroneToggleImageryPlan = \"ToggleImageryPlan\",\n DroneToggleSceneMode = \"ToggleSceneMode\",\n DroneUploadFlight = \"UploadFlight\",\n DroneViewLocationInGoogleMaps = \"ViewLocationInGoogleMaps\",\n DroneVolumeToolClick = \"VolumeTool-Click\",\n DroneZoomIn = \"ZoomIn\",\n DroneZoomOut = \"ZoomOut\",\n\n // Site Planner events\n SitePlannerAddCameraClick = \"AddCameraClick\",\n SitePlannerAddSitePlanDrawingClick = \"AddSitePlanDrawingClick\",\n SitePlannerAddSitePlanClick = \"AddSitePlanClick\",\n SitePlannerAttachSitePlanDrawing = \"AttachSitePlanDrawing\",\n SitePlannerCameraMarkerEditFOVAngle = \"CameraMarker-EditFOVAngle\",\n SitePlannerCameraMarkerEditHeading = \"CameraMarker-EditHeading\",\n SitePlannerCameraMarkerEditName = \"CameraMarker-EditName\",\n SitePlannerCameraMarkerEditRadius = \"CameraMarker-EditRadius\",\n SitePlannerCameraMarkerSelectColor = \"CameraMarker-SelectColor\",\n SitePlannerCameraMarkerToggleVisibility = \"CameraMarker-ToggleVisibility\",\n SitePlannerCameraMarkerToggleDeleteDialog = \"CameraMarker-ToggleDeleteDialog\",\n SitePlannerCancelUploadSitePlanDrawing = \"CancelUploadSitePlanDrawing\",\n SitePlannerChangeLocation = \"ChangeLocation\",\n SitePlannerOpen = \"Open\",\n SitePlannerResetView = \"ResetView\",\n SitePlannerSitePlansList = \"SitePlansList\",\n SitePlannerToggleCamerasLabel = \"ToggleCamerasLabel\",\n SitePlannerToggleFullscreen = \"ToggleFullscreen\",\n SitePlannerToggleMapStyle = \"ToggleMapStyle\",\n SitePlannerToggleRightSideMenu = \"ToggleRightSideMenu\",\n SitePlannerToggleSaveSessionDialog = \"ToggleSaveSessionDialog\",\n SitePlannerUploadSitePlanDrawing = \"UploadSitePlanDrawing\",\n SitePlannerZoomIn = \"ZoomIn\",\n SitePlannerZoomOut = \"ZoomOut\",\n\n // Markers events\n MarkerClicked = \"MarkerClicked\",\n\n // Timelapse Creator events\n TimelapseToggleHelpDialog = \"ToggleHelpDialog\",\n TimelapseSelectCustomPeriod = \"SelectCustomPeriod\",\n TimelapseToggleCustomScheduleDialog = \"ToggleCustomScheduleDialog\",\n TimelapseSaveCustomSchedule = \"SaveCustomSchedule\",\n TimelapseToggleExportDialog = \"ToggleExportDialog\",\n TimelapseExportSelectStep = \"SelectStep\",\n TimelapseSelectOption = \"SelectOption\",\n TimelapseSelectSchedule = \"SelectSchedule\",\n TimelapseSaveToMediaHub = \"SaveToMediaHub\",\n TimelapseGoToMediaHub = \"GoToMediaHub\",\n TimelapseToggleUploadLogoDialog = \"ToggleUploadLogoDialog\",\n TimelapseUploadLogo = \"UploadLogo\",\n\n // Progress Photos events\n ProgressPhotoCancelPause = \"ProgressPhoto-CancelPause\",\n ProgressPhotoCancelResume = \"ProgressPhoto-CancelResume\",\n ProgressPhotoCancelDelete = \"ProgressPhoto-CancelDelete\",\n ProgressPhotoCreate = \"ProgressPhoto-Create\",\n ProgressPhotoDelete = \"ProgressPhoto-Delete\",\n ProgressPhotoEdit = \"ProgressPhoto-Edit\",\n ProgressPhotoEditCamerasFilter = \"ProgressPhoto-EditCamerasFilter\",\n ProgressPhotoEditDaysFilter = \"ProgressPhoto-EditDaysFilter\",\n ProgressPhotoEditProjectsFilter = \"ProgressPhoto-EditProjectsFilter\",\n ProgressPhotoEditSearchFilter = \"ProgressPhoto-EditSearchFilter\",\n ProgressPhotoEditStatusFilter = \"ProgressPhoto-EditStatusFilter\",\n ProgressPhotoEditUsersFilter = \"ProgressPhoto-EditUsersFilter\",\n ProgressPhotoFiltersClicked = \"ProgressPhoto-FiltersClicked\",\n ProgressPhotoPause = \"ProgressPhoto-Pause\",\n ProgressPhotoResume = \"ProgressPhoto-Resume\",\n ProgressPhotoResumeDelete = \"ProgressPhoto-ResumeDelete\",\n ProgressPhotoSelectCameras = \"ProgressPhoto-SelectCameras\",\n ProgressPhotoSelectDays = \"ProgressPhoto-SelectDays\",\n ProgressPhotoSelectMember = \"ProgressPhoto-SelectMember\",\n ProgressPhotoSelectProvider = \"ProgressPhoto-SelectProvider\",\n ProgressPhotoSelectTime = \"ProgressPhoto-SelectTime\",\n ProgressPhotoSelectTimezone = \"ProgressPhoto-SelectTimezone\",\n ProgressPhotoToggleCreateDialog = \"ProgressPhoto-ToggleCreateDialog\",\n ProgressPhotoToggleEditDialog = \"ProgressPhoto-ToggleEditDialog\",\n ProgressPhotoUnsubscribeUser = \"ProgressPhoto-UnsubscribeUser\",\n\n // Map View events\n MapViewChooseSatellite = \"MapView-ChooseSatellite\",\n MapViewChooseTerrain = \"MapView-ChooseMap\",\n MapViewClickCameraLink = \"MapView-ClickCameraLink\",\n MapViewToggleCameraMapInfoTooltip = \"MapView-ToggleCameraMapInfoTooltip\",\n\n // Video Wall events\n VideoWallToggleFullscreen = \"VideoWall-ToggleFullscreen\",\n VideoWallToggleCameraFullscreen = \"VideoWall-ToggleCameraFullscreen\",\n VideoWallToggleConfigDialog = \"VideoWall-ToggleConfigDialog\",\n VideoWallToggleCameraVisibility = \"VideoWall-ToggleCameraVisibility\",\n VideoWallPositionCameraOnWall = \"VideoWall-PositionCameraOnWall\",\n VideoWallSaveConfig = \"VideoWall-SaveConfig\",\n\n // Project Settings\n ProjectSettingsCameraSettingsCancelEditCameraName = \"CancelEditCameraName\",\n ProjectSettingsCameraSettingsEditCameraName = \"EditCameraName\",\n ProjectSettingsCameraSettingsEditCameraVisibility = \"EditCameraVisibility\",\n ProjectSettingsCameraSettingsSaveCameraName = \"SaveCameraName\",\n ProjectSettingsMembersApplyCamerasFilter = \"ApplyCamerasFilter\",\n ProjectSettingsMembersApplySearchFilter = \"ApplySearchFilter\",\n ProjectSettingsMembersAddMember = \"AddMember\",\n ProjectSettingsMembersDeleteCameraAccess = \"DeleteCameraAccess\",\n ProjectSettingsMembersEditCameraAccess = \"EditCameraAccess\",\n ProjectSettingsMembersFiltersClick = \"FiltersClick\",\n ProjectSettingsMembersShareCamera = \"ShareCamera\",\n ProjectSettingsMembersToggleAddDialog = \"ToggleAddDialog\",\n ProjectSettingsOverviewOpenInMapView = \"OpenInMapView\",\n ProjectSettingsOverviewCloseUpdateThumbnailDialog = \"CloseUpdateThumbnailDialog\",\n ProjectSettingsOverviewOpenUpdateThumbnailDialog = \"UpdateThumbnailClicked\",\n ProjectSettingsOverviewUploadNewThumbnail = \"UploadNewThumbnail\",\n ProjectSettingsOverviewUpdateThumbnail = \"UpdateThumbnail\",\n\n // Media Hub events\n MediaHubSelectFilter = \"SelectFilter\",\n MediaHubApplyFilters = \"ApplyFilters\",\n MediaHubToggleAddMediaUrlDialog = \"ToggleAddMediaUrlDialog\",\n MediaHubToggleUploadFileDialog = \"ToggleUploadFileDialog\",\n MediaHubToggleUploadLocalClipDialog = \"ToggleUploadLocalClipDialog\",\n MediaHubSaveMediaUrl = \"SaveMediaUrl\",\n MediaHubUploadFile = \"UploadFile\",\n MediaHubSelectPage = \"SelectPage\",\n MediaHubGoToNextPage = \"GoToNextPage\",\n MediaHubGoToPreviousPage = \"GoToPreviousPage\",\n\n // Media Hub Item events\n MediaDelete = \"Media-Delete\",\n MediaToggleTitleEditing = \"Media-ToggleTitleEditing\",\n MediaSaveTitle = \"Media-SaveTitle\",\n MediaDownloadAs = \"Media-DownloadAs\",\n MediaTogglePublicVisibility = \"Media-TogglePublicVisibility\",\n MediaShareToPlatform = \"Media-ShareToPlatform\",\n MediaCopyMediaLink = \"Media-CopyMediaLink\",\n MediaGoToMediaHub = \"Media-GoBackToMediaHub\",\n\n // Gate report\n GateReportCalendarTreeDateClick = \"CalendarTree-DateClick\",\n GateReportExportPdf = \"ExportPdf\",\n GateReportExportCsv = \"ExportCsv\",\n GateReportFilterEntryExit = \"FilterEntryExit\",\n GateReportFilterCameras = \"FilterCameras\",\n GateReportFilterPlateNumber = \"FilterPlateNumber\",\n GateReportFilterVehicleTypes = \"FilterVehicleTypes\",\n GateReportOpenVehicleTypeInfo = \"OpenVehicleTypeInfo\",\n GateReportTimelineDateClick = \"Timeline-DateClick\",\n GateReportToggleThumbnails = \"ToggleThumbnails\",\n\n // TODO: The events bellow are old events, should be updated!\n\n //Help Menu\n HelpMenuToggleMenuButton = \"HelpMenu-ToggleMenuButton\",\n HelpMenuOpenLiveChat = \"HelpMenu-OpenLiveChat\",\n HelpMenuClickTutorialsLink = \"HelpMenu-ClickTutorialsLink\",\n HelpMenuClickWhatsNewLink = \"HelpMenu-ClickWhatsNewLink\",\n HelpMenuClickUserManuaLink = \"HelpMenu-ClickUserManuaLink\",\n HelpMenuClickSupportTicketsLink = \"HelpMenu-ClickSupportTicketsLink\",\n}\n\nexport type ProjectPAStatsRequestPayload = {\n period: \"day\" | \"week\" | \"month\"\n startDate?: string\n endDate?: string\n}\n\nexport type ProjectPAStatsResponsePayload = {\n period: DateType\n name: string\n count: number | string\n}\n\nexport type ActiveUsersStatsRequestPayload = {\n companyId: number\n from: string\n to: string\n}\n\nexport type ActiveUserStat = {\n date: string\n dau: number\n wau: number\n mau: number\n}\n","import {\n BoundingBox,\n CameraExid,\n DateType,\n GateReportVehicleType,\n TimelinePrecision,\n} from \"@/types\"\n\nexport type AnprQueryParams = {\n page?: number\n limit?: number\n firstSeen?: {\n gte: DateType\n }\n lastSeen?: {\n lte: DateType\n }\n captureTime?: {\n gte?: DateType\n lt?: DateType\n }\n direction?: { eq?: string } | string\n plateNumber?: { eq?: string } | string\n sort?: string\n fromDate?: DateType\n toDate?: DateType\n tab?: string\n}\n\nexport type AnprCountsQueryParams = {\n precision: TimelinePrecision\n fromDate?: string\n toDate?: string\n isPublic?: boolean\n cameras?: CameraExid[]\n direction?: AnprDirection\n isPlate?: boolean\n isDuplicate?: boolean\n vehicleTypes?: GateReportVehicleType[]\n camerasExid?: CameraExid[]\n}\n\nexport enum AnprDirection {\n Left = \"reverse\",\n Arrived = \"forward\",\n Unknown = \"unknown\",\n}\n\nexport type AnprEvent = {\n id: number\n plateNumber: string\n cameraex: CameraExid\n picName: string\n captureTime: string\n insertedAt: string\n isDuplicate: boolean\n direction: AnprDirection\n updatedAt: string\n isPlate: boolean\n isPostprocessed: boolean\n vehicleType?: GateReportVehicleType\n contextVehicleType?: GateReportVehicleType\n anprVehicleType: string\n anprVehicleModel: string\n anprVehicleMake: string\n anprVehicleColor: string\n anprVehicleSpeed: number | null\n anprSnapshotLink: string\n contextSnapshotLink: string\n contextCamera: string\n votedVehicleType: GateReportVehicleType | string\n metadata_: {\n evercamMetadata?: {\n anpr?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n context?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n }\n plateRecognizerMetadata?: {\n plateNumber?: string\n vehicleMake?: string\n vehicleType?: string\n vehicleColor?: string\n vehicleModel?: string\n vehicleOrientation?: string\n }\n }\n}\n\nexport type AnprCount = {\n date: string\n counts: Record<AnprDirection, number>\n}\n\nexport enum AnprEventStatus {\n IsPlate = \"is_plate\",\n NotPlate = \"not_plate\",\n IsDuplicate = \"is_duplicate\",\n NotDuplicate = \"not_duplicate\",\n}\n","import type { CameraExid, Exid, DateType } from \"@/types\"\n\nexport type MediaExid = Exid\n\nexport type Media = {\n project_exid?: string\n cameraExid?: CameraExid\n cameraName: string\n cameraTimezone: string\n createdAt: string\n fromDate: string\n id: number\n requesterEmail: string\n requesterName: string\n title: string\n toDate: string\n url?: string\n exid?: MediaExid\n embedCode?: string\n fileName?: string\n format?: string\n frames?: number\n link?: string\n public?: boolean\n type: MediaType\n status?: MediaStatus\n projectExid?: string\n thumbnailUrl?: string\n mediaUrl?: string\n}\n\nexport enum MediaType {\n EditedImage = \"edit\",\n ExternalUrl = \"url\",\n Clip = \"clip\",\n File = \"file\",\n LocalClip = \"local_clip\",\n XRay = \"x-ray\",\n Timelapse = \"timelapse\",\n Compare = \"compare\",\n MobileAsset = \"mobile-asset\",\n}\n\nexport enum MediaFileType {\n Gif = \"gif\",\n Mp4 = \"mp4\",\n Png = \"png\",\n Pdf = \"pdf\",\n Jpeg = \"jpeg\",\n}\n\nexport enum MediaStatus {\n Pending = \"Pending\",\n Creating = \"Creating\",\n Processing = \"Processing\",\n Extracting = \"Extracting\",\n Uploading = \"Uploading\",\n Completed = \"Completed\",\n Failed = \"Failed\",\n NoData = \"No Data\",\n}\n\nexport enum MediaStatusId {\n Pending = 0,\n Processing = 1,\n Completed = 2,\n Failed = 3,\n}\n\nexport type MediaFilterQueryParams = {\n title?: string\n sort?: string\n sortBy?: string\n dateRange?: string | string[]\n fromDate?: string\n toDate?: string\n cameraName?: string\n requesterEmail?: string\n type?: MediaType\n cameraExid?: string\n page?: number\n limit?: number\n camera?: string\n}\n\nexport type MediaUpdateRequestPayload = {\n name?: string\n title?: string\n public?: boolean\n}\n\nexport type MediaCreateRequestPayload = {\n fromDate: DateType\n toDate: DateType\n title: string\n type: MediaType\n fileUrl?: string\n fileExtension?: string\n url?: string\n content?: string\n cameraExid?: string\n requestedBy?: string\n notes?: string\n category?: ClipsCategory\n isUrgent?: boolean\n storeAsType?: MediaType\n}\n\nexport type MediaUsersResponsePayload = Array<{\n id: number\n email: string\n name: string\n}>\nexport enum ClipsCategory {\n HealthSafetySecurity = \"health_safety_security\",\n Legal = \"legal\",\n Marketing = \"marketing\",\n BestPracticies = \"best_practices\",\n}\n\nexport type MediaDeleteRequestPayload = {\n timelapseIds: (string | number)[]\n compareIds: (string | number)[]\n archiveIds: (string | number)[]\n}\n","import { DateTime, DateType } from \"@/types\"\n\nexport enum BimModelType {\n Architectural = \"Architectural\",\n Structural = \"Structural\",\n FourD = \"4D\",\n Mep = \"Mep\",\n}\n\nexport type BimSnapshotRequestPayload = {\n model: string\n layerTimestamp: string\n apiKey: string\n apiId: string\n}\n\nexport type BimSnapshotResponsePayload = {\n imageUrl?: string\n}\n\nexport type BimModelRequestPayload = {\n model?: string\n timestamp?: string\n apiKey?: string\n apiId?: string\n}\n\nexport type BimModelResponsePayload = {\n dates?: [string]\n height?: number\n imageUrl?: string\n model?: string\n models?: [string]\n rotation?: number\n scaleX?: number\n scaleY?: number\n viewerHeight?: number\n viewerWidth?: number\n width?: number\n x?: number\n y?: number\n}\n\nexport type BimCompareExportRequestPayload = {\n name: string\n cameraExid: string\n snapshotDate: string\n bimDate: string\n embed: string\n compareExid: string\n createAnimation: boolean\n bimTransparency?: number\n model?: string\n layerId?: number\n maskId?: number\n evercamWatermark?: boolean\n}\n\nexport type BimLayerResponsePayload = {\n id: number\n name: string\n insertedAt: DateTime\n updatedAt: DateTime\n shapes: string\n startAt: DateTime\n}\n\nexport enum BimUploadStatus {\n Initial = 0,\n Saving = 1,\n Success = 2,\n Failed = 3,\n}\n\nexport type BimCreationPayload = {\n title: string\n software:\n | \"synchro\"\n | \"navisworks\"\n | \"revit\"\n | \"tekla\"\n | \"archicad\"\n | \"solibri\"\n | \"bim360\"\n | \"other\"\n model: string\n apiKey: string\n apiId: string\n displayName: string\n fileUrl: string\n requestor: string\n finalView: boolean\n enableDistortion: boolean\n startAt: string\n}\n\nexport enum BIMLayerTypes {\n Mask = \"mask\",\n MeasuringGrid = \"measuring_grid\",\n BimArchitectural = \"bim_architectural\",\n BimStructural = \"bim_structural\",\n Bim4D = \"bim_4d\",\n BimMep = \"bim_mep\",\n RecordingsTag = \"recordings_tag\",\n Milestone = \"milestone\",\n}\n\nexport type BimLayersQueryParams = {\n layerType: BIMLayerTypes\n timestamp: DateType\n}\n\nexport type BIMLayerPostPayload = {\n name: string\n layerType: BIMLayerTypes\n startAt: DateType\n shapes: string\n zIndex: number\n}\n\nexport type BIMLayer = {\n id: number\n name: string\n layerType: BIMLayerTypes\n startAt: DateType\n insertedAt: DateType\n updatedAt: DateType\n shapes: string\n}\n\nexport type BimPendingImage = {\n url: string\n s3Url: string\n}\n\nexport type BimUploadCameraParameters = {\n distortionFov: [number]\n horizontalFov: number\n verticalFov: number\n focalLength1: number\n focalLength2: number\n centerX: number\n centerY: number\n}\n\nexport type PendingBimImagesParams = {\n model: string\n apiKey: string\n apiId: string\n}\n\nexport type ProcessPendingImagesBimParams = {\n model: string\n names: string[]\n enableDistortion: boolean\n apiId: string\n apiKey: string\n}\n\nexport type BimUploadsQueryParams = {\n page: number\n limit: number\n projectId: string\n id: string\n uploadedBy: string\n}\n\nexport type BimUploadPayload = {\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n}\n","import {\n AuditLogActionType,\n DateTime_Z_micros,\n DateType,\n EntityByExid,\n Exid,\n NvrDeviceType,\n PaginationParams,\n PowerSchedule,\n PowerType,\n ProjectExid,\n Schedule,\n} from \"@/types\"\n\nexport type CameraExid = Exid\n\nexport type CamerasByExid = EntityByExid<Camera>\n\nexport type Cartesian3 = {\n x: number\n y: number\n z: number\n}\n\nexport type Camera = {\n cameraPowerSchedule?: Schedule\n camPassword?: string\n camUsername?: string\n cloudRecordings: {\n frequency: number\n schedule: Schedule\n status: string\n storageDuration: string\n }\n createdAt: DateTime_Z_micros\n description: null\n discoverable: boolean\n external: {\n host: string\n http: {\n camera: string\n jpg: string\n nvrJpg: string\n nvrPort: string\n port: string\n }\n rtsp: {\n h264: string\n port: string\n }\n }\n featureFlags: Array<CameraFeatureFlag>\n fovAngle: number\n fovRadius: number\n heading: null\n id: CameraExid\n exid: CameraExid\n isOnline: boolean\n isPowerScheduleActive: boolean\n isPublic: boolean\n lastOnlineAt: DateTime_Z_micros\n lastPolledAt: DateTime_Z_micros\n location: { lat: number; lng: number }\n modelId: string\n modelName: string\n name: string\n nvrChannel: number\n nvrDeviceId: string\n nvrHost: string\n nvrHttpPort: number\n nvrModel: NvrModel\n nvrScheme: string\n nvrSnapshotEndpoint: string\n nvrStreamingEndpoint: string\n offlineReason: string\n owned: boolean\n owner: string\n pitch: null\n project: { id: string; name: string }\n proxyUrl: { hls: string; rtmp: string }\n ptz: boolean\n rights: string\n roll: null\n routerId: number\n status: CameraStatus\n streamingServer: string\n thumbnailUrl: string\n largeThumbnailUrl?: string\n timezone: string\n updatedAt: DateTime_Z_micros\n vendorName: string\n}\n\nexport type AdminCamera = {\n cameraHost: string\n cameraHttpPort: number\n cameraModel: string\n cameraPassword: string\n cameraPictureEndpoint: string\n cameraRtspPort: number\n cameraScheme: string\n cameraUsername: string\n cameraFirmwareVersion: string\n cameraTimezone: string\n cloudRecordingFrequency: number\n cloudRecordingId: number\n cloudRecordingSchedule: Schedule\n cloudRecordingStatus: string\n cloudRecordingStorageDuration: number\n createdAt: DateTime_Z_micros\n description: null\n discoverable: false\n exid: CameraExid\n featureFlags: CameraFeatureFlag[]\n fovAngle: 45.0\n fovRadius: number\n heading: null\n id: number\n isPowerScheduleActive: true\n isPublic: false\n kitId?: number\n lastOnlineAt: DateTime_Z_micros\n lastPolledAt: DateTime_Z_micros\n location: { lat: number; lng: number }\n macAddress: string\n name: string\n nvrChannel: null\n nvrDeviceId: string\n nvrHost: string\n nvrHttpPort: number\n nvrModel: NvrModel\n nvrPassword: string\n nvrPictureEndpoint: string\n nvrRtspPort: number\n nvrScheme: string\n nvrUsername: string\n offlineReason: null\n pitch: null\n powerSchedule: Schedule\n projectExid: string\n projectFeatureFlags: []\n projectId: number\n projectName: string\n ptz: false\n recordingFromNvr: false\n roll: null\n routerId: number\n status: string\n storageProviders: []\n streamEndpoint: string\n timezone: string\n updatedAt: DateTime_Z_micros\n userApiId: string\n userApiKey: string\n userEmail: string\n userFullname: string\n userId: number\n zohoId: string\n thumbnailUrl?: string\n}\n\nexport type CameraMapMarker = {\n isOnline: boolean\n location: {\n lat: number\n lng: number\n }\n needFov: boolean\n rotation: number\n fovAngle: number\n fovRadius: number\n}\n\nexport enum CameraStatus {\n Online = \"online\",\n Offline = \"offline\",\n OfflineScheduled = \"offline_scheduled\",\n Decommissioned = \"decommissioned\",\n OnHold = \"on_hold\",\n Waiting = \"waiting\",\n UnderMaintenance = \"under_maintenance\",\n WaitingForSiteVisit = \"waiting_for_site_visit\",\n}\n\nexport enum CameraFeatureFlag {\n EdgeVideo = \"edge_video\",\n BimCompare = \"bim_compare\",\n GateReport = \"gate_report\",\n VideoStream = \"video_stream\",\n WebRTC = \"webrtc\",\n ANPR = \"anpr\",\n ReverseANPR = \"reverse_anpr\",\n PTZ = \"ptz\",\n ObjectDetection = \"object_detection\",\n Segmentation = \"segmentation\",\n SegmentationAutoLabelling = \"segmentation_auto_labelling\",\n}\n\nexport type CameraLogsRequestPayload = {\n limit: number\n page: number\n types: string\n from: string\n to: string\n}\n\nexport type CameraUpdateRequestPayload = {\n status?: string\n timezone?: string\n isPuclic?: boolean\n discoverable?: boolean\n fullname?: string\n lastOnline?: string\n owner?: string\n description?: string\n cameraPowerSchedule?: Schedule\n isPowerScheduleActive?: boolean\n powerSchedule?: object\n ptz?: boolean\n camUsername?: string\n camPassword?: string\n project?: { id: string; name: string }\n modelName?: string\n host?: string\n nvrChannel?: number\n nvrPortHttp?: string\n externalRtspPort?: string\n name?: string\n h264Url?: string\n snapshotUrl?: string\n nvrSnapshotUrl?: string\n routerId?: string | number\n coordinates?: Array<number>\n heading?: number\n fovAngle?: number\n fovRadius?: number\n}\n\nexport type CamerasResponsePayload = {\n cameras?: Camera[]\n}\n\nexport type CameraLogsResponsePayload = {\n cameraExid: string\n cameraName: string\n logs?: Log[]\n details?: { customMessage?: string }\n}\n\nexport type CameraStatusLog = {\n start: string\n end: string\n state: CameraStatus\n}\n\nexport type Log = {\n details: {\n agent?: string\n country?: string\n countryCode?: string\n ip?: string\n with?: string\n message?: string\n status?: string\n type?: string\n }\n insertedAt: string\n type: string\n who: string\n}\n\nexport type NvrConfig = {\n apiUrl: string\n username?: string\n password?: string\n deviceId: string\n streamingUrl: string\n snapshotUrl: string\n bifUrl: string\n}\n\nexport enum NvrModel {\n YCam = \"y-cam\",\n Axis = \"axis\",\n Dahua = \"dahua\",\n Mobotix = \"mobotix\",\n Hikvision = \"hikvision\",\n Avigilion = \"avigilion\",\n Hanwha = \"hanwha\",\n Nxwitness = \"nxwitness\",\n ExNvr = \"ex_nvr\",\n}\n\nexport enum CameraModel {\n YCam = \"y-cam\",\n Axis = \"axis\",\n Dahua = \"dahua\",\n Mobotix = \"mobotix\",\n Milesight = \"milesight\",\n Hikvision = \"hikvision\",\n Avigilion = \"avigilion\",\n Hanwha = \"hanwha\",\n Other = \"other\",\n}\n\nexport type DroneCameraTransform = {\n position: Cartesian3\n direction: Cartesian3\n up: Cartesian3\n right: Cartesian3\n}\n\nexport type Footage = {\n cameraExid: string\n cameraName: string\n endDate: string | null\n startDate: string | null\n}\n\nexport type Hdd = {\n id: number\n location: string\n serialNumber: string\n hddStatus: string\n shelfBlock: string\n type: string\n size: string\n format: string\n footages: Array<Footage>\n reportedCapacity: string\n reportedFreeSpace: string\n reportedProperty: string\n reportedPath: string\n reportedHddType: string\n errorStatus: string\n canExpand: boolean\n}\n\nexport enum ResolutionDimensions {\n QVGA = \"320x240\",\n VGA = \"640x480\",\n SVGA = \"800x600\",\n XGA = \"1024x768\",\n HD = \"1280x720\",\n WXGA = \"1280x800\",\n HDPlus = \"1366x768\",\n WXGAPlus = \"1440x900\",\n HDPlusPlus = \"1600x900\",\n UXGA = \"1600x1200\",\n FullHD = \"1920x1080\",\n WUXGA = \"1920x1200\",\n TwoK = \"2048x1080\",\n QHD = \"2560x1440\",\n WQXGA = \"2560x1600\",\n FourK = \"3840x2160\",\n FourKCinema = \"4096x2160\",\n FiveK = \"5120x2880\",\n EightK = \"7680x4320\",\n WHUXGA = \"7680x4800\",\n}\n\nexport enum ResolutionLabel {\n QVGA = \"QVGA\",\n VGA = \"VGA\",\n SVGA = \"SVGA\",\n XGA = \"XGA\",\n HD = \"HD\",\n WXGA = \"WXGA\",\n HDPlus = \"HD+\",\n WXGAPlus = \"WXGA++\",\n HDPlusPlus = \"HD++\",\n UXGA = \"UXGA\",\n FullHD = \"FullHD\",\n WUXGA = \"WUXGA\",\n TwoK = \"2K\",\n QHD = \"QHD\",\n WQXGA = \"WQXGA\",\n FourK = \"4K\",\n FourKCinema = \"4KCinema\",\n FiveK = \"5K\",\n EightK = \"8K\",\n WHUXGA = \"WHUXGA\",\n}\n\nexport type ResolutionInfo = {\n ratioString: string\n ratioFloat: number\n resolutionDimensions: ResolutionDimensions\n resolutionLabel: ResolutionLabel\n}\n\nexport type CameraPath = {\n projectExid: ProjectExid\n cameraExid: CameraExid\n}\n\nexport type CheckCameraPortPayload = {\n address: string\n port: number\n}\n\nexport type CameraCreateRequestPayload = {\n status: CameraStatus\n timezone?: string\n powerSchedule?: Schedule\n isPowerScheduleActive?: boolean\n ptz?: boolean\n name: string\n coordinates?: [number, number]\n recordingFromNvr?: boolean\n CameraConfig: {\n model: CameraModel\n scheme?: \"http\" | \"https\"\n host: string\n httpPort: number\n username: string\n password: string\n rtspPort?: number\n pictureEndpoint?: string\n streamEndpoint?: string\n }\n nvr?: {\n model: NvrModel\n serial?: string\n deviceType?: NvrDeviceType\n macAddress?: string\n username: string\n password: string\n httpUrl: string\n rtspUrl?: string\n }\n cloudRecording?: {\n id?: number\n frequency: 1 | 2 | 4 | 5 | 6 | 10 | 12 | 30 | 60\n storageDuration: -1 | 1 | 7 | 30 | 90\n status: \"on\" | \"off\" | \"paused\" | \"on_scheduled\"\n schedule: Schedule\n }\n ownerId: number\n projectId: number\n}\n\nexport type CameraDeletePayload = {\n verify: string\n password: string\n}\n\nexport type SaveNotePayload = {\n noteType: string\n content: string\n}\n\nexport type CameraNote = {\n id: number\n cameraId: number\n noteType: string\n content: string\n insertedAt: DateType\n}\n\nexport type CreateCameraNotePayload = {\n id?: number\n cameraExid: CameraExid\n customMessage: string\n action: string\n}\n\nexport enum HddStatus {\n Error = \"error\",\n Idle = \"idle\",\n NotExist = \"notExist\",\n Unformatted = \"unformatted\",\n Ok = \"ok\",\n}\n\nexport type NvrQueryParams = PaginationParams & {\n ownerId: number\n cameraName: string\n cameraExid: CameraExid\n cameraIp: string\n hddStatus: HddStatus\n}\n\nexport type OfflineCamera = {\n id: number\n exid: string\n name: string\n fullname: string\n timezone: string\n status: CameraStatus\n zohoId: string\n externalHost: string\n nvrHttpPort: string\n externalRtspPort: string\n username: string\n password: string\n createdAt: DateType\n lastPolledAt: DateType\n lastOnlineAt: DateType\n powerType: PowerType\n powerSchedule: PowerSchedule\n batteryReadingsLastSeen: DateType\n batteryReadingsLastVoltage: number\n sims: {\n billPayer: string\n number: string\n provider: string\n }[]\n}\n\nexport type OfflineCameraQueryParams = PaginationParams & {\n status: CameraStatus\n cameraExid: CameraExid\n cameraName: string\n timezone: string\n cameraOwner: string\n powerType: PowerType\n powerSchedule: PowerSchedule\n batteryReadingsLastVoltage: number\n}\n\nexport type OfflineCameraNote = {\n action: AuditLogActionType\n username: string\n insertedAt: DateType\n cameraId: number\n customMessage: string\n}\n\nexport type OfflineCameraNoteResponse = {\n publicNotes: OfflineCameraNote[]\n privateNotes: OfflineCameraNote[]\n}\n\nexport type SiteVisitCamerasQueryParams = PaginationParams & {\n cameraOwner: string\n}\n\nexport type ProjectCamera = {\n apiId: string\n apiKey: string\n exid: string\n id: number\n name: string\n ownerEmail: string\n ownerFullname: string\n}\n\nexport enum DuplicatedCameraFields {\n Host = \"host\",\n CameraHttpPort = \"camera_http_port\",\n NvrHttpPort = \"nvr_http_port\",\n NvrDeviceId = \"nvr_device_id\",\n}\n\nexport type DuplicatedCameraObject = {\n exid: string\n name: string\n cameraStatus: string\n crStatus: string\n}\n\nexport type DuplicatedCameraResponse = {\n cameras: DuplicatedCameraObject[]\n host: string\n cameraHttpPort: number\n nvrHttpPort: number\n nvrDeviceId: string\n count: number\n}\n\nexport type MergeDuplicatedCameraPayload = {\n masterCamera: Record<string, unknown>\n shareeCameras: Record<string, unknown>\n}\n\nexport type FetchCameraQueryParams = PaginationParams & {\n status: CameraStatus\n isPublic: boolean\n featureFlags: CameraFeatureFlag[]\n ptz: boolean\n frequency: number\n channel: number\n cameraExid: CameraExid\n cameraExids: CameraExid[]\n cameraName: string\n projectName: string\n timezone: string\n region: string\n cameraModel: CameraModel\n nvrModel: NvrModel\n cameraOwner: string\n ownerEmail: string\n isRecording: boolean\n cloudRecordingStorageDuration: number\n cameraIds: string\n hasLocation: boolean\n externalHttpPort: string\n externalRsptPort: string\n nvrHttpPort: string\n}\n","import { DateType, PaginationParams } from \"@/types\"\n\nexport type Compare = {\n cameraExid: string\n createdAt: string\n embedCode: string\n embedTime: boolean\n fileName: string\n frames: number\n fromDate: string\n id: number\n exid: string\n mediaUrls: {\n gif: string\n mp4: string\n }\n public: boolean\n requesterEmail: string\n requesterName: string\n status: string\n thumbnailUrl: string\n title: string\n toDate: string\n type: string\n}\n\nexport enum CompareStatus {\n Processing = 0,\n Completed = 1,\n Failed = 2,\n}\n\nexport type CompareRequestPayload = {\n name: string\n afterDate: string\n beforeDate: string\n embed: string\n compareExid: string\n cameraExid?: string\n createAnimation: boolean\n evercamWatermark?: boolean\n}\n\nexport type AdminCompare = {\n id: number\n compareExid: string\n exid: string\n projectId: string\n apiId: string\n apiKey: string\n name: string\n fullname: string\n camera: string\n status: number\n embedCode: string\n insertedAt: DateType\n}\n\nexport type AdminCompareQueryParams = PaginationParams & {\n name: string\n camera: string\n}\n","import type {\n AnalyticsEventPageId,\n CameraExid,\n CameraFeatureFlag,\n CameraStatus,\n ProjectExid,\n ProjectFeatureFlag,\n ProjectStatus,\n} from \"@/types\"\n\nexport enum CopilotMessageAuthor {\n Copilot = \"copilot\",\n User = \"user\",\n}\n\nexport enum CopilotMessageType {\n Text = \"text\",\n Progress = \"progress\",\n Error = \"error\",\n Json = \"json\",\n}\n\nexport type CopilotMessage = {\n content: string\n url?: string\n type: CopilotMessageType\n id?: number\n conversationId?: number\n}\n\nexport enum CopilotStepId {\n SendToLLM = \"send_to_llm\",\n FunctionCallRequest = \"function_call_request\",\n ExecFunctionCall = \"exec_function_call\",\n SendToUser = \"send_to_user\",\n RequestMissingFields = \"request_missing_fields\",\n CompletedFieldsResponse = \"completed_fields_response\",\n SendRawToolCallResponse = \"send_raw_tool_call_response\",\n SubmitToolOutputsToLLM = \"submit_tool_outputs_to_llm\",\n CancelCall = \"cancel_call\",\n}\n\nexport enum CopilotMissingFieldsLabels {\n ProjectExid = \"Project\",\n CameraExid = \"Camera\",\n FromDate = \"Start date\",\n ToDate = \"End date\",\n}\n\nexport type CopilotMissingField = {\n name: string\n label: string\n value: any\n type: string\n toolId: string\n}\n\nexport type CopilotMissingFields = Record<number, CopilotMissingField[]>\n\nexport type UserConversations = CopilotConversation & {\n Message: CopilotMessage[]\n}\n\nexport enum CopilotSocketEvent {\n ConversationStart = \"conversation:start\",\n ConversationCreated = \"conversation:created\",\n LLMMessageChunk = \"llm:message:chunk\",\n LLMMessageComplete = \"llm:message:complete\",\n LLMMessageLoading = \"llm:message:loading\",\n LLMRequestCancel = \"llm:request:cancel\",\n LLMRequestCanceled = \"llm:request:canceled\",\n UserMessage = \"user:message\",\n ContextError = \"chat:contextError\",\n ChatError = \"chat:chatError\",\n MissingFields = \"chat:missingFields\",\n MissingFieldsCompleted = \"chat:missingFields:completed\",\n SystemToolCallResponse = \"system:toolCall:response\",\n}\n\nexport type CopilotConversation = {\n id: number\n user: string\n model: string\n context: string\n cameraExid: CameraExid\n projectExid: ProjectExid\n startDate: string\n endDate: string\n messagesCount: number\n}\n\nexport enum CopilotProvider {\n Gemini = \"gemini\",\n ChatGPT = \"chatgpt\",\n}\n\nexport enum CopilotSuggestion {\n UserManual = \"user_manual\",\n GateReport = \"gate_report\",\n Weather = \"weather\",\n Clip = \"clip\",\n Timelapse = \"timelapse\",\n}\n\nexport enum CopilotChatProvider {\n Gemini = \"gemini\",\n ChatGpt = \"chatGpt\",\n}\n\nexport enum CopilotLayout {\n Floating = \"floating\",\n}\n\nexport enum CopilotToolId {\n GetReports = \"getReports\",\n GetVehiclesDetections = \"getVehiclesDetections\",\n GetVehiclesDetectionsCounts = \"getVehiclesDetectionsCounts\",\n GetWeather = \"getWeather\",\n CreateClip = \"createClip\",\n NavigateToPage = \"navigateToPage\",\n CreateTimelapse = \"createTimelapse\",\n RequestMissingFields = \"requestMissingFields\",\n RenderCharts = \"renderCharts\",\n}\n\nexport type CopilotSystemToolCallResponse<I = unknown, O = unknown> = {\n toolId?: CopilotToolId\n input?: I\n output?: O\n}\n\nexport type CopilotCamera = {\n name: string\n exid: CameraExid\n status: CameraStatus\n featureFlags?: CameraFeatureFlag[]\n}\n\nexport type CopilotProject = {\n name: string\n exid: ProjectExid\n status: ProjectStatus\n featureFlags?: ProjectFeatureFlag[]\n cameras?: CopilotCamera[]\n}\n\nexport type CopilotConversationContext = {\n availableProjects: CopilotProject[]\n}\n\nexport type CopilotMessageContext = {\n pageId?: AnalyticsEventPageId\n selectedCamera?: CopilotCamera\n selectedProject?: CopilotProject\n}\n\nexport type CopilotMessageStep = {\n args: string[]\n depth: number\n id: number\n message_id: number\n step: CopilotStepId\n timestamp: string\n}\n\nexport enum CopilotMissingFieldComponent {\n Select = \"SelectField\",\n DateTime = \"DateTimeField\",\n Schedule = \"ScheduleField\",\n MultiOptions = \"MultiOptionsField\",\n Switch = \"SwitchField\",\n}\n\nexport enum CopilotMissingFieldName {\n ProjectExid = \"projectExid\",\n CameraExid = \"cameraExid\",\n FromDate = \"fromDate\",\n ToDate = \"toDate\",\n Schedule = \"schedule\",\n Duration = \"duration\",\n}\n\nexport enum CopilotMissingFieldType {\n Boolean = \"boolean\",\n String = \"string\",\n Number = \"number\",\n}\n","export type MilesightRequestParams = {\n host: string\n httpPort: number\n username: string\n password: string\n}\n\nexport type MilesightCameraNetworkConfiguration = {\n httpEnable: number\n httpPort: number\n httpsEnable: number\n httpsPort: number\n certSubject: string\n certDate: string\n certResult: number\n requestSubject: string\n certUpdateFlag: number\n ipv4Ipaddress: string\n ipv6Ipaddress: string\n notBefore: string\n notAfter: string\n country: string\n ST: string\n O: string\n CN: string\n}\n\nexport type MilesightCameraSystemSettings = {\n model: string\n mac: string\n firmwareVersion: string\n systemBootTime: string\n wireless: number\n dhcpEnable: number\n ipaddress: string\n netmask: string\n gateway: string\n pppoeEnable: number\n dns0: string\n dns1: string\n ddnsEnable: number\n ddnsHostName: string\n ddnsStatus: number\n wirelessEnable: number\n deviceName: string\n deviceLacation: string\n deviceInformation: string\n deviceVender: string\n hardwareVersion: string\n kernelVersion: string\n sdkVersion: string\n aiNnieStatus: number\n ioSupport: number\n audioSupport: number\n audioMode: number\n audioType: number\n audioLineInput: number\n alarmInputSupport: number\n alarmOutputSupport: number\n fisheyeSupport: number\n vcaSupport: number\n vcaType: number\n anrSupport: number\n speakerSupport: number\n lprSupport: number\n lprVersion: number\n lprLicense: number\n radarSupport: number\n upgrade: number\n faceSupport: number\n polygonFaceSupport: number\n irSensor: number\n dnSensitivitySupport: number\n croproiSupport: number\n dnRefocusSupport: number\n reduceStutteringSupport: number\n polygonSupport: number\n localDisplaySupport: number\n fanWorkingModeSupport: number\n smartIrLimitType: number\n smartIrLimitSum: number\n audioFileManagerSupport: number\n humanVehicleSupport: number\n manualSpeedSupport: number\n snCode: string\n mosaicSupport: number\n antiShakeSupport: number\n corridorModeSupport: number\n imageRotationSupport: number\n humanDetectionSupport: number\n regionalPeopleSupport: number\n heatMapSupport: number\n msChip: string\n runtime: number\n lprlicenStatus: number\n p2pSupport: number\n ptzSupport: number\n adminoptions: number\n adminuser: string\n miscAnonymous: number\n pwdStrengthType: number\n viewerdef: number\n viewerOptions: number\n oemIndex: number\n audioAlarmSupport: number\n ledSupport: number\n ledGroupSupport: number\n ptzMaxZoomTimes: number\n realPtzSupport: number\n iotSupport: number\n isSpeedDm: number\n supportOsdLarger: number\n isFaceCustomizeModeExists: number\n autoTrackSupport: number\n smartStreamSupportInOtherStream: number\n wiperSupport: number\n oemupdateonline: number\n whiteLedSupport: number\n defogSupport: number\n manualTrackingSupport: number\n manualTrackingDisable: number\n \"3DPositionSupport\": number\n rs485Support: number\n ptzStatusSupport: number\n heaterSupport: number\n}\n\nexport type MilesightCameraStreamConfig = {\n enable?: number\n width?: number\n height?: number\n url?: string\n profileGop?: number\n rateMode?: MilesightCameraRateModeId\n framerate?: number\n bitrate?: number\n smartStreamEnable?: number\n smartStreamLevel?: number\n profile?: number\n profileCodec?: MilesightCameraCodecId\n rateQuality?: number\n vbrQuality?: MilesightCameraVbrQualityId\n}\n\nexport type MilesightCameraStreamConfigList = {\n mainStream: MilesightCameraStreamConfig\n subStream: MilesightCameraStreamConfig\n thirdStream: MilesightCameraStreamConfig\n fourthStream?: {\n enable: number\n }\n fifthStream?: {\n enable: number\n }\n}\n\nexport type MilesightCameraVideoConfig = {\n deviceModel: string\n deviceSensor: string\n deviceTvStandards: number\n streamList: MilesightCameraStreamConfigList\n cTvStandards: number\n rtspPort: number\n eventStreamEnable: number\n eventStreamFramerate: number\n eventStreamBitrate: number\n eventStreamIframe: number\n fishDisplayModel: number\n fishInstallModel: number\n fishCorrectModel: number\n mainCodecres: number\n imageScheMode: number\n hlcMode: number\n exposurectrl: number\n wdrEnable: number\n}\nexport type MilesightCameraStreamOsdInfo = {\n streamIndex: number\n osdEnable: number\n osdString: string\n osdDateTimeEnable: number\n osdFontSize: number\n osdFontColor: string\n osdBackgroundEnable: number\n osdBackgroundColor: string\n osdTextPosition: number\n osdDateTimePosition: number\n osdDateTimeFormat: number\n cropRoiEnable: number\n}\n\nexport type MilesightCameraOsdConfiguration = {\n osdInfoList: MilesightCameraStreamOsdInfo[]\n osdZoomTime: number\n}\n\nexport type MilesightCameraSdCardInfo = {\n sdcardStatus: number\n sdcardDiskStatus: number\n sdcardFullStatus: number\n sdcardTotalSize: string\n sdcardFreeSize: string\n sdcardUseSize: string\n sdEncryptStatus: number\n}\n\nexport type MilesightCameraTimeInfo = {\n year: number\n month: number\n day: number\n hour: number\n minute: number\n second: number\n timeZoneTz: string\n zoneNameTz: string\n dayLight: number\n timeType: number\n ntpServer: string\n ntpSyncEnable: number\n ntpInterval: number\n}\n\nexport enum MilesightCameraCodecId {\n H264 = 0,\n H265 = 3,\n MJpeg1 = 1,\n MJpeg2 = 2,\n}\nexport enum MilesightCameraVbrQualityId {\n Low = 0,\n Medium = 1,\n High = 2,\n}\n\nexport enum MilesightCameraRateModeId {\n CBR = 0,\n VBR = 1,\n}\n","export type DroneModel = {\n cesiumId: string\n cesiumId2D: string\n date: string\n cesiumPointCloudId: string\n pointSize: string\n maximumScreenSpaceError: string\n link: string\n trueIndex: number\n}\n\nexport type DroneProjectJsonResponse = {\n models: DroneModel[]\n [key: string]: any\n}\n\nexport enum DroneUrlParams {\n Date = \"date\",\n}\n","import { AxiosError } from \"axios\"\n\nexport enum ErrorType {\n BadRequestError = \"BadRequestError\",\n NotFoundError = \"NotFoundError\",\n UnauthorizedError = \"UnauthorizedError\",\n GatewayTimeoutError = \"GatewayTimeoutError\",\n BadGatewayError = \"BadGatewayError\",\n ForbiddenError = \"ForbiddenError\",\n HlsError = \"HlsError\",\n SnapshotError = \"SnapshotError\",\n ConflictError = \"ConflictError\",\n InternalServerError = \"InternalServerError\",\n CanceledError = \"CanceledError\",\n UnhandledRejection = \"UnhandledRejection\",\n TypeError = \"TypeError\",\n}\n\nexport enum EvercamApiErrorCode {\n BadArgument = \"BAD_ARGUMENT\",\n DeviceError = \"DEVICE_ERROR\",\n UnsupportedOperation = \"UNSUPPORTED_OPERATION\",\n QuotaExceeded = \"QUOTA_EXCEEDED\",\n InvalidCredentials = \"INVALID_CREDENTIALS\",\n ProviderAuthFailure = \"PROVIDER_AUTH_FAILURE\",\n ProviderEmailRequired = \"PROVIDER_EMAIL_REQUIRED\",\n PasswordReset = \"PASSWORD_RESET\",\n RequireShareRequest = \"REQUIRE_SHARE_REQUEST\",\n Generic = \"GENERIC\",\n}\n\ntype _EvercamApiError = {\n code: EvercamApiErrorCode\n message: string\n details: string\n innerError?: _EvercamApiError\n}\n\nexport type EvercamApiError = AxiosError<_EvercamApiError>\n","import {\n AnprDirection,\n CameraExid,\n Date_HH,\n Date_YYYY,\n Date_YYYY_MM,\n Date_YYYY_MM_DD,\n DateTime,\n DateTimeSpaceSeparated,\n DateType,\n PaginatedItems,\n PaginationParams,\n ProjectExid,\n ProjectFeatureFlag,\n Timestamp,\n} from \"@/types\"\n\nexport enum GateReportDetectionType {\n Auto = \"auto\",\n Manual = \"manual\",\n Cloud = \"cloud\",\n Edge = \"edge\",\n}\n\nexport enum GateReportEventType {\n Arrived = \"arrived\",\n Left = \"left\",\n}\n\nexport enum DetectionLabel {\n ArticulatedDumper = \"articulated-dumper\",\n BackhoeLoader = \"backhoe-loader\",\n CompactExcavator = \"compact-excavator\",\n ConcretePump = \"concrete-pump\",\n Dumper = \"dumper\",\n Excavator = \"excavator\",\n FlatbedSemiTrailer = \"flatbed-semi-trailer\",\n IndustrialTruck = \"industrial-truck\",\n Loader = \"loader\",\n Mewps = \"mewps\",\n MobileCrane = \"mobile-crane\",\n MobileCrusher = \"mobile-crusher\",\n OtherTruck = \"other-truck\",\n PileDrillingRig = \"pile-drilling-rig\",\n RoadVehicle = \"road-vehicle\",\n Roller = \"roller\",\n SemiTrailer = \"semi-trailer\",\n SkidSteerLoader = \"skid-steer-loader\",\n SkipTruck = \"skip-truck\",\n SmallTruck = \"small-truck\",\n TankTruck = \"tank-truck\",\n TeleHandler = \"tele-handler\",\n TippingTruck = \"tipping-truck\",\n TowerCrane = \"tower-crane\",\n TowerMountedConcreteMix = \"tower-mounted-concrete-mix\",\n TractorDozer = \"tractor-dozer\",\n TruckHead = \"truck-head\",\n TruckMixer = \"truck-mixer\",\n TruckMountedMobileCrane = \"truck-mounted-mobile-crane\",\n Unknown = \"unknown\",\n Worker = \"worker\",\n}\n\nexport enum SegmentLabel {\n AirCompressor = \"air_compressor\",\n Brick = \"brick\",\n Building = \"building\",\n CableReel = \"cable_reel\",\n CementMixer = \"cement_mixer\",\n CementPile = \"cement_pile\",\n ConcreteBarrier = \"concrete_barrier\",\n ConcreteBlock = \"concrete_block\",\n ConstructionContainer = \"construction_container\",\n ConstructionSite = \"construction_site\",\n Crane = \"crane\",\n DetachedExcavatorBucket = \"detached_excavator_bucket\",\n DryMortarSilo = \"dry_mortar_silo\",\n DumpTruck = \"dump_truck\",\n Dumpster = \"dumpster\",\n Fence = \"fence\",\n FireHydrant = \"fire_hydrant\",\n GarbageBin = \"garbage_bin\",\n HoseReel = \"hose_reel\",\n Ibc = \"ibc\",\n JerryCan = \"jerry_can\",\n MetalBeam = \"metal_beam\",\n MiniDumper = \"mini_dumper\",\n Pallet = \"pallet\",\n Pipe = \"pipe\",\n Puddle = \"puddle\",\n Rebar = \"rebar\",\n Rubble = \"rubble\",\n Scaffolding = \"scaffolding\",\n ShippingContainer = \"shipping_container\",\n SiteOffice = \"site_office\",\n TrafficCone = \"traffic_cone\",\n Transformer = \"transformer\",\n Vehicle = \"vehicle\",\n Window = \"window\",\n WoodenSpool = \"wooden_spool\",\n Unknown = \"unknown\",\n}\n\nexport enum GateReportVehicleType {\n ConcretePump = DetectionLabel.ConcretePump,\n FlatbedSemiTrailer = DetectionLabel.FlatbedSemiTrailer,\n OtherTruck = DetectionLabel.OtherTruck,\n RoadVehicle = DetectionLabel.RoadVehicle,\n SemiTrailer = DetectionLabel.SemiTrailer,\n SmallTruck = DetectionLabel.SmallTruck,\n TankTruck = DetectionLabel.TankTruck,\n TippingTruck = DetectionLabel.TippingTruck,\n TruckHead = DetectionLabel.TruckHead,\n TruckMixer = DetectionLabel.TruckMixer,\n Unknown = DetectionLabel.Unknown,\n}\n\nexport type GateReportVehicleTypeItem = {\n name: string\n id: GateReportVehicleType\n}\n\nexport type GateReportEvent = {\n id: number\n vehicleTypes: GateReportVehicleType\n exid: string\n cameraExid?: string\n boundingBox: BoundingBox\n detectionType: GateReportDetectionType\n edited: boolean\n eventTime: string\n timestamp?: string\n eventType: GateReportEventType\n isPublic: boolean\n roiId: string\n truckType: GateReportVehicleType\n thumbnailUrl?: string\n}\n\nexport type GateReportArrivedEvent = GateReportEvent & {\n eventType: GateReportEventType.Arrived\n}\n\nexport type GateReportLeftEvent = GateReportEvent & {\n eventType: GateReportEventType.Left\n}\n\nexport type GateReportVerifiedDay = {\n id: number\n day: Date_YYYY_MM_DD\n isMatched: boolean\n insertedAt: DateTime\n updatedAt: DateTime\n verifiedBy: string\n cameraExid: CameraExid\n projectExid: ProjectExid\n}\n\nexport type BoundingBox = {\n xmax: number\n xmin: number\n ymax: number\n ymin: number\n}\n\nexport type EventsCountsByVehicleType = Record<GateReportVehicleType, number>\n\nexport type EventsCount = {\n in: number\n out: number\n source: GateReportDataSource\n}\n\nexport type YearlyEventCount = EventsCount & {\n year: Date_YYYY\n}\n\nexport type MonthlyEventCount = EventsCount & {\n month: Date_YYYY_MM\n}\n\nexport type DailyEventCount = EventsCount & {\n day: Date_YYYY_MM_DD\n}\n\nexport type HourlyEventCount = {\n hour: Date_HH\n count: number\n}\n\nexport type EventCountRequestPayload = {\n vehicleTypes?: GateReportVehicleType[]\n isPublic?: boolean\n camerasExid?: string[]\n}\n\nexport type EventCountResponsePayload = {\n days?: DailyEventCount[]\n months?: MonthlyEventCount[]\n years?: YearlyEventCount[]\n}\n\nexport type ProcessedDaysRequestPayload = {\n apiId?: string\n apiKey?: string\n isPublic?: Boolean\n}\n\nexport type EventsRequestPayload = {\n apiId?: string\n apiKey?: string\n camerasExid?: CameraExid[]\n cameras?: string[]\n eventType?: GateReportEventType\n fromDate?: DateTime\n isPublic?: boolean\n toDate?: DateTime\n truckTypes?: GateReportVehicleType[]\n vehicleTypes?: string[]\n} & PaginationParams\n\nexport type EventsResponsePayload = PaginatedItems<GateReportEvent>\n\nexport enum GateReportDataSource {\n Anpr = \"anpr\",\n Events = \"events\",\n}\n\nexport type GateReportResponsePayload = {\n source: GateReportDataSource\n results: PaginatedItems<GateReportEvent>\n}\n\nexport enum GateReportEventDirection {\n In = \"in\",\n Out = \"out\",\n Unknown = \"unknown\",\n}\n\nexport type GatReportRequestPayload = {\n camerasExid?: CameraExid[]\n eventType?: GateReportEventType\n fromDate?: DateTime\n isPublic?: boolean\n toDate?: DateTime\n vehicleTypes?: GateReportVehicleType[]\n} & PaginationParams\n\nexport enum GateReportExportType {\n Pdf = \"pdf\",\n Csv = \"csv\",\n}\n\nexport type EventsExportRequestParameters = {\n vehicleTypes: GateReportVehicleType[]\n fileType: GateReportExportType\n fromDate: DateTimeSpaceSeparated\n toDate: DateTimeSpaceSeparated\n camerasExid: CameraExid[]\n eventType: GateReportEventType\n}\n\nexport type AnprBasedGateReportExportRequestParams = {\n vehicleTypes?: GateReportVehicleType[]\n fileType?: GateReportExportType\n fromDate?: DateTimeSpaceSeparated\n toDate?: DateTimeSpaceSeparated\n camerasExid?: CameraExid[]\n direction?: AnprDirection\n}\n\ntype X1 = number\ntype Y1 = number\ntype X2 = number\ntype Y2 = number\n\nexport enum GateReportROIShapeType {\n Rectangle = \"rectangle\",\n Direction = \"direction\",\n Line = \"line\",\n}\n\nexport type GateReportROIShape = {\n coordinates: [[X1, Y1], [X2, Y2]]\n type: GateReportROIShapeType\n}\n\nexport type GateReportROI = {\n cameraex?: string\n fromDate?: string\n directionFilter?: string\n id?: number\n insertedAt?: Timestamp\n isactive?: boolean\n name?: string\n roiType?: string\n updatedAt?: Timestamp\n shapes?: GateReportROIShape[]\n}\n\nexport enum GateReportProcessingStatus {\n Processed = \"processed\",\n Unprocessed = \"unprocessed\",\n}\n\nexport const VEHICLE_TYPE_IDS = Object.values(GateReportVehicleType)\n\nexport type GateReportCamera = {\n exid: number\n name: string\n status: string\n note: string\n last_published_day: DateType\n last_processed_day: DateType\n}\n\nexport type GateReportProject = {\n exid: string\n name: string\n status: string\n featureFlags: ProjectFeatureFlag\n cameras: GateReportCamera[]\n}\n\nexport type AnalyticsParameters = {\n id: number\n cameraex: string\n processingType: string\n startDate: DateTime\n endDate: DateTime\n skipWeekend: boolean\n hourSiteOpening: number\n hourSiteClosure: number\n gateReportActive: boolean\n countingActive: boolean\n queueSystem: string\n reprocess: boolean\n framesToSkip: number\n detection_model: string\n detectionThreshold: number\n printLogsFrame: number\n crossingVectorAngleLimit: number\n minTruckLife: number\n insideMinTime: number\n trackerMaxAge: number\n trackerMinHit: number\n snapshotUpload: boolean\n snapshotPerSecond: number\n detectionClasses: string\n deepEventEndpointUrl: string\n timestampCalculation: string\n matchingEmbeddedDstCoeff: number\n matchingTimeCoeff: number\n matchingQueueOrderCoeff: number\n rabbitmqServerUrl: string\n rabbitmqEventsQueue: string\n rabbitmqEventsExchange: string\n rabbitmqCountingQueue: string\n rabbitmqCountingExchange: string\n dangerZones: boolean\n workflows: boolean\n linkedAnprCameras: Record<string, unknown>\n}\n\nexport type VerifiedDaysQueryParams = PaginationParams & {\n projectExid: ProjectExid\n camerasExid: CameraExid[]\n verifiedBy: string\n isMatched: boolean\n insertedAt: DateTime[]\n updatedAt: DateTime[]\n day: string\n}\n\nexport type EventUpdateRequestPayload = {\n cameraex: string\n roiId: number\n eventType: string\n eventTime: \"2024-12-13T14:25:58.066Z\"\n truckType: string\n isPublic: boolean\n boundingBox: {\n additionalProp1: number\n additionalProp2: number\n additionalProp3: number\n }\n valid: boolean\n loadState: string\n embeddingId: number\n embedding: number[]\n similarityDst: number\n detectionType: string\n trackingId: number\n deliveriesId: number\n edited: boolean\n isDeleted: boolean\n modelVersion: string\n}\n\nexport type VerifyDayUpdateRequestPayload = {\n camerasExid: string[]\n projectExid: string\n day: Date_YYYY_MM_DD\n isMatched: boolean\n verifiedBy: string\n}\n\nexport type ProcessedDaysQueryParams = {\n camerasExid: CameraExid[]\n isPublic: boolean\n eventType: GateReportEventType\n}\n\nexport type SecurityMeasurementQueryParams = {\n cameraex: string\n timestamp: DateTime\n prompt: string\n snapshotUrl: string\n}\n\nexport type ObjectDetectionQueryParams = {\n cameraex: string\n timestamp: DateTime\n base64Img: string\n snapshotUrl: string\n}\n\nexport type RoisQueryParams = {\n cameraExid: string\n id: number\n name: string\n fromDate: string\n roiType: GateReportROIShapeType\n isactive: boolean\n directionFilter: string\n sort: string\n}\n\nexport type GateReportROICreateRequestPayload = {\n id?: number\n roi: {\n cameraex: string\n name: string\n roiType: string\n isactive: true\n fromDate: string\n shapes: Record<string, unknown>[]\n directionFilter: string\n note: string\n }\n createdBy: string\n}\n","import { PaginationParams, DateType } from \"@/types\"\n\nexport enum IngestProcessingStatus {\n Completed = \"completed\",\n Uploading = \"uploading\",\n Created = \"created\",\n Failed = \"failed\",\n Aborted = \"aborted\",\n Paused = \"paused\",\n InProgress = \"inprogress\",\n Pending = \"pending\",\n}\n\nexport type DronesQueryParams = Omit<PaginationParams, \"sort\"> & {\n projectId: string\n consumed: string\n token: string\n processingStatus: IngestProcessingStatus\n}\n\nexport type DroneUploadUpdateRequestPayload = {\n flightMetadata: {\n dateTime: string\n gpsAltitude: string\n gpsCoordinates: string\n }\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n projectName: string\n}\n\nexport type CalculateMeasuringOperationRequestPayload = {\n date: DateType\n points: [number, number][]\n operation: string\n}\n\nexport type FlightImagesQueryParams = Partial<\n Omit<PaginationParams, \"sort\">\n> & {\n date: DateType\n}\n\nexport type InspectionToolRequestPayload = {\n date: DateType\n gpsAltitude: string\n gpsCoordinates: string\n}\n","export enum MapType {\n Hybrid = \"hybrid\",\n Terrain = \"terrain\",\n}\n","export type ConnectorDetail = {\n login: string\n hostname: string\n}\n\nexport enum Connector {\n Aconex = \"aconex\",\n Procore = \"procore\",\n Autodesk = \"autodesk\",\n AutodeskViewer = \"autodesk_viewer\",\n VoyageControl = \"voyage_control\",\n}\n\nexport type ConnectorResponsePayload = Array<{\n hostname: string\n login: string\n provider: string\n}>\n","export enum NotificationType {\n CameraShare = \"camera_share\",\n CameraStatusChange = \"camera_status_changed\",\n Mention = \"mention\",\n TimelapseCreated = \"timelapse_created\",\n TimelapseFailed = \"timelapse_failed\",\n DroneProcessing = \"drone_processing_done\",\n Processing360 = \"three_sixty_done\",\n}\n\nexport interface CameraShareContext {\n cameraExid: string\n projectExid: string\n shareId: number\n}\n\n// export interface CameraStatusChangeContext {\n// cameraExid: string;\n// projectExid: string;\n// status: string;\n// }\n\n// export interface MentionContext {\n// postId: number;\n// commentId?: number;\n// }\n\nexport type Notification = {\n id: number\n type: NotificationType\n insertedAt: string\n initiatorId: number\n initiatorFullname: string\n initiatorEmail: string\n targetId: number\n targetFullname: string\n targetEmail: string\n readTimestamp: string | null\n context: CameraShareContext //| CameraStatusChangeContext | MentionContext\n}\n","import type { NvrModel } from \"@evercam/api/types\"\n\nexport type Nvr = {\n id?: number\n deviceType: NvrDeviceType\n serial: string\n model: NvrModel\n httpUrl: string\n rtspUrl: string\n macAddress: string\n username: string\n password: string\n nerves: boolean\n}\n\nexport enum NvrDeviceType {\n Rpi4 = \"rpi4\",\n Rpi5 = \"rpi5\",\n OrinNano = \"orin_nano\",\n}\n\nexport enum NvrHddStatus {\n Error = \"error\",\n Idle = \"idle\",\n NotExist = \"notexist\",\n Ok = \"ok\",\n Unformatted = \"unformatted\",\n}\n\nexport type NvrCreatePayload = {\n serial?: string\n httpUrl: string\n rtspUrl?: string\n deviceType?: NvrDeviceType\n model: NvrModel\n username: string\n password: string\n kitId?: number\n}\n","import { DateTime, DateType, PaginationParams } from \"@/types\"\nexport type ProgressPhoto = {\n cameraIds: string\n cameraNames: number\n createdAt: string\n id: number\n provider: string\n config: Partial<{\n recipients: string\n projectId: number\n companyId: number\n }>\n isPaused: boolean\n notifyDays: string\n notifyTime: string\n requesterEmail: string\n requesterName: string\n timezone: string\n title: string\n}\n\nexport type ProgressPhotosCreateUpdateRequestPayload = {\n cameraExids?: string\n notifyDays?: string\n notifyTime?: string\n provider?: string\n config?: {\n recipients?: string\n projectId?: number\n companyId?: number\n catergoryId?: string\n }\n subject?: string\n isPaused?: boolean\n timezone?: string\n}\n\nexport type ProgressPhotosUnSubscribeParams = {\n email: string\n token?: string\n}\n\nexport type ProgressPhotosResponsePayload = {\n progressPhotos: ProgressPhoto[]\n}\n\nexport enum ProgressPhotoDialogType {\n Create = \"create\",\n Edit = \"edit\",\n Pause = \"pause\",\n}\n\nexport type CameraOption = {\n exid: string\n name: string\n}\n\nexport interface ProgressPhotoItem {\n id: number\n cameras: CameraOption[] | string[] | string\n insertedAt: string\n provider: string\n config: {\n recipients: string | string[]\n sendSnapshotAs: string\n }\n isPaused: boolean\n notifyDays: string | string[]\n notifyTime: string\n api_id: string\n api_key: string\n timezone: string\n exid: string\n fullname: string\n}\n\nexport type ProgressPhotosQueryParams = PaginationParams & {\n fullname: string\n recipients: string\n notifyTime: string\n timezone: string\n cameras: string\n}\n\nexport type progressPhotosHistoryQueryParams = {\n insertedAt: DateType[]\n recipients: string\n subject: string\n cameraId: string\n failedCameraId: string\n}\n\nexport type ProgressPhotosHistory = {\n id: number\n cameraIds: string\n failedCameraIds: string\n subject: string\n recipients: DateTime\n}\n","import {\n AdminCamera,\n Camera,\n CameraExid,\n DateTime,\n DateType,\n EntityByExid,\n Exid,\n PaginationParams,\n} from \"@/types\"\n\nexport type ProjectExid = Exid\n\nexport type ProjectsByExid = EntityByExid<Project>\n\nexport type Project = {\n id: string | number\n exid: ProjectExid\n name: string\n status?: ProjectStatus\n insertedAt?: string\n startedAt?: string\n timezone?: string\n zohoId?: string\n cameras?: Array<Camera | AdminCamera>\n featureFlags: Array<ProjectFeatureFlag>\n owner?: { email?: string }\n}\n\nexport enum ProjectStatus {\n ToStart = \"To Start\",\n InProgress = \"In Progress\",\n Completed = \"Completed\",\n NotAplicable = \"Not Applicable\",\n}\n\nexport enum ProjectArchiveTier {\n Full = \"Full\",\n Partial = \"Partial\",\n Minimal = \"Minimal\",\n ScheduledForDeletion = \"Scheduled for Deletion\",\n}\n\nexport type ProjectResponsePayload = {\n data?: Project[]\n}\n\nexport type Logo = {\n name: string\n url: string\n}\n\nexport type ProjectLogoResponsePayload = Logo[]\n\nexport enum ProjectFeatureFlag {\n AnprLegacy = \"anpr_legacy\",\n DroneView = \"drone_view\",\n Bim = \"4d_bim\",\n BimItwin = \"4d_bim_itwin\",\n BimForge = \"4d_bim_forge\",\n ThreeSixtyView = \"360_view\",\n NdaMc = \"NDA/MC\",\n GateReport = \"gate_report\",\n GateReportAutoVerify = \"auto_publish\",\n GateReportMotionDetection = \"motion_detection\",\n FullEmpty = \"full_empty\",\n MediaHubSharing = \"archives_sharing\",\n GateReportAnprBased = \"anpr_sourced\",\n NoLicensePlate = \"no_license_plate\",\n DefaultToProjectApp = \"default_to_project_app\",\n Go = \"evercam_go\",\n}\n\nexport type ProjectBatteryReading = {\n exid: number\n voltage: number\n lastSeen: DateType\n}\n\nexport type ThumbnailData = {\n cameraExid: CameraExid\n custom: boolean\n image: string\n}\n\nexport type ProjectsQueryParams = PaginationParams & {\n name: string\n exid: string\n status: ProjectStatus\n cameras: string\n featureFlags: Array<ProjectFeatureFlag>\n archived: string\n}\n\nexport type ProjectCreateRequestPayload = {\n projectExid?: string\n projectName: string\n ownerId: number\n cameras: string[]\n}\n\nexport type ProjectCreateResponse = {\n name: string\n exid: string\n id: number\n userId: number\n zohoId: string\n}\n\nexport type ProjectUpdateRequestPayload = {\n name: string\n timezone: string\n featureFlags: ProjectFeatureFlag[]\n cameras: string[]\n}\n\nexport type ProjectStatusStats = {\n nil: number\n Completed: number\n \"In Progress\": number\n \"Not Applicable\": number\n \"To Start\": number\n}\n\nexport type ProjectUserProperty = {\n active: boolean\n activeOneMonth: boolean\n cameraExid: string\n cameraName: string\n cameraRights: string\n email: string\n eventsCount: number\n fullname: string\n id: number\n lastSeenAt: DateTime\n persona: string\n}\n\nexport type ProjectUsers = {\n cameras: {\n exid: string\n name: string\n }[]\n users: Record<string, ProjectUserProperty[]>\n}\n","import { ApiCredentials } from \"@/types\"\nimport { CancelToken } from \"axios\"\n\nexport type Snapshot = {\n createdAt: string\n data: string\n status?: string\n}\n\nexport type NearestSnapshotRequestPayload = {\n apiKey?: string\n apiId?: string\n token?: string\n cancelToken?: object\n}\n\nexport type AvailableDaysRequestPayload = {\n cameraId: string\n year: string\n month: string\n payload?: ApiCredentials\n}\nexport type AvailableDaysResponsePayload = {\n days: Array<number>\n}\n\nexport type AvailableHoursRequestPayload = {\n cameraId: string\n year: string\n month: string\n day: string\n payload?: ApiCredentials\n cancelToken?: CancelToken\n}\nexport type AvailableHoursResponsePayload = {\n hours: Array<number>\n}\n\nexport type NearestSnapshotResponsePayload = {\n snapshots: Array<{\n createdAt: string\n data: string\n notes?: string\n }>\n}\n\nexport type SnapshotRangeRequestPayload = {\n from: string\n to: string\n limit?: number\n page?: number\n schedule?: boolean\n count?: number\n}\nexport type SnapshotInstance = {\n createdAt: string\n notes?: string\n data?: string\n}\nexport type SnapshotRangeResponsePayload = {\n snapshots: Array<SnapshotInstance>\n}\n\nexport enum BrainTool {\n Detections = \"detections\",\n Segmentation = \"sam\",\n DepthAnalysis = \"depthAnalysis\",\n}\n\nexport enum CloudRecordingFrequency {\n EverySecond = 60,\n Every2Seconds = 30,\n Every5Seconds = 12,\n Every10Seconds = 6,\n Every15Seconds = 4,\n Every30Seconds = 2,\n Every60Seconds = 1,\n Every5Minutes = 5,\n Every10Minutes = 10,\n}\n\nexport enum CloudRecordingDuration {\n Infinity = -1,\n Day = 1,\n Week = 7,\n Month = 30,\n ThreeMonths = 90,\n}\n\nexport enum CloudRecordingStatus {\n On = \"on\",\n Off = \"off\",\n Paused = \"paused\",\n OnScheduled = \"on-scheduled\",\n}\n\nexport enum SnapshotExtractionInterval {\n EverySecond = 1,\n Every5Seconds = 5,\n Every10Seconds = 10,\n Every15Seconds = 15,\n Every20Seconds = 20,\n Every30Second = 30,\n EveryMinute = 60,\n Every5Minutes = 300,\n Every10Minutes = 600,\n Every15Minutes = 900,\n Every20Minutes = 1200,\n Every30Minutes = 1800,\n EveryHour = 3600,\n Every2Hours = 7200,\n Every6Hours = 21600,\n Every12Hours = 43200,\n Every24Hours = 86400,\n}\n\nexport enum VpnServer {\n None = \"None\",\n OpenVPN1 = \"OpenVPN1\",\n OpenVPN2 = \"OpenVPN2\",\n OpenVPN3 = \"OpenVPN3\",\n OpenVPN4 = \"OpenVPN4\",\n OpenVPN5 = \"OpenVPN5\",\n PPTP1 = \"PPTP1\",\n PPTP2 = \"PPTP2\",\n WireGuard1 = \"WireGuard1\",\n WireGuard2 = \"WireGuard2\",\n WireGuard3 = \"WireGuard3\",\n WireGuard4 = \"WireGuard4\",\n WireGuard5 = \"WireGuard5\",\n WireGuard6 = \"WireGuard6\",\n WireGuard7 = \"WireGuard7\",\n WireGuard8 = \"WireGuard8\",\n WireGuard9 = \"WireGuard9\",\n WireGuard10 = \"WireGuard10\",\n}\n","export enum RoiType {\n Gate = \"gate\",\n AnprContext = \"anpr_context\",\n ExclusionZone = \"exclusion_zone\",\n WorkflowArea = \"workflow_area\",\n SiteAnalytics = \"site_analytics\",\n}\n\nexport enum RoiShapeType {\n Polygon = \"polygon\",\n Line = \"line\",\n Direction = \"direction\",\n Rectangle = \"rectangle\",\n}\n\nexport type RoiShape = {\n id: number | null\n name: string\n x1: number\n x2: number\n y1: number\n y2: number\n}\n\nexport enum RoiDirection {\n Arrived = \"arrived\",\n Left = \"left\",\n Bidirectional = \"arrived,left\",\n}\n","export type RouteParams = {\n projectExid?: string\n cameraExid?: string\n timestamp?: string\n fromDate?: string\n toDate?: string\n}\n\nexport enum UrlParamValue {\n True = \"true\",\n False = \"false\",\n}\n\nexport enum TimelineUrlParam {\n CameraExid = \"cameraExid\",\n Timestamp = \"timestamp\",\n FromDate = \"fromDate\",\n ToDate = \"toDate\",\n Live = \"live\",\n Video = \"video\",\n BeforeTimestamp = \"beforeTimestamp\",\n OverlayType = \"overlayType\",\n Sidebar = \"sidebar\",\n ThreeSixtyId = \"_360Id\",\n DroneId = \"droneId\",\n MediaId = \"mediaId\",\n}\n\nexport enum Timeline360UrlParams {\n Show360 = \"show360\",\n}\n\nexport enum TimelineDroneUrlParams {\n ShowDrone = \"showDrone\",\n}\n\nexport enum TimelineMediaUrlParams {\n ShowMedia = \"showMedia\",\n}\n\nexport enum TimelineBimUrlParams {\n ShowBim = \"showBim\",\n}\n\nexport enum TimelineExNvrRecordingsUrlParams {\n ShowExNvrRecordings = \"showExNvrRecordings\",\n}\n\nexport enum TimelineAnprUrlParams {\n ShowAnpr = \"showAnpr\",\n}\n\nexport enum TimelineMobileCaptureUrlParams {\n ShowMobileCapture = \"showMobileCapture\",\n}\n\nexport enum TimelineCommentsUrlParams {\n ShowComments = \"showComments\",\n}\n\nexport type TimelineUrlParams = Record<\n | TimelineUrlParam\n | TimelineMediaUrlParams\n | TimelineBimUrlParams\n | TimelineExNvrRecordingsUrlParams\n | TimelineAnprUrlParams\n | TimelineMobileCaptureUrlParams\n | TimelineCommentsUrlParams,\n string | null\n>\n","import { Camera, PaginationParams, Project, Sim } from \"@/types\"\nexport type RouterBillPayer = { name: string }\n\nexport type SimProvider = { name: string }\n\nexport type Router = {\n id?: number\n kitId: number | null\n routerType: string\n routerUserId: string\n routerPassword: string\n serialNumber: number | null\n rmsUrl?: string\n externalHost?: string\n routerHttpPort: number | null\n vpnPassword: string\n vpnUserId: string\n vpnServer: string\n netbirdUrl: string\n status: RouterStatus\n powerType: PowerType\n powerSchedule: string\n battery?: {\n lastVoltage: number\n lastSeen: string\n }\n sims: Array<Pick<Sim, \"id\" | \"number\">>\n billPayers?: Array<RouterBillPayer>\n simProviders?: Array<SimProvider>\n projects?: Pick<Project, \"exid\" | \"id\" | \"name\">[]\n cameras?: Pick<Camera, \"id\" | \"name\">[]\n}\n\nexport enum PowerType {\n Mains = \"mains\",\n Battery = \"battery\",\n Solar = \"solar\",\n Generator = \"generator\",\n Other = \"other\",\n}\n\nexport enum PowerSchedule {\n Schedule = \"schedule\",\n FullTime = \"24/7\",\n}\n\nexport enum RouterStatus {\n Active = \"active\",\n Inactive = \"inactive\",\n}\n\nexport type RouterQueryParams = PaginationParams & {\n routerType: string\n vpnServer: string\n serialNumber: string\n}\n\nexport type RouterCreatePayload = {\n serialNumber: number\n vpnUserId?: string\n vpnPassword?: string\n routerType: string\n routerUserId?: string\n routerPassword?: string\n routerHttpPort: number\n powerType: PowerType\n powerSchedule: PowerSchedule\n vpnServer?: string\n netbirdUrl?: string\n}\n","import type { CameraExid, DateTime, DateType } from \"@/types\"\n\nexport type ShareRequest = {\n cameraId: string\n createdAt: DateType | number\n email: string\n id: number\n rights: string\n sharerEmail: string\n sharerName: string\n userId: number\n}\n\nexport type Share = {\n cameraId: string\n createdAt: DateType | number\n email: string\n fullname: string\n id: number\n lastSeenAt: DateType\n rights: string\n sessionCount: number\n sharerEmail: string\n sharerId: number\n sharerName: string\n userId: number\n}\n\nexport type ShareRequestsResponsePayload = {\n shareRequests: ShareRequest[]\n}\n\nexport type ShareOwner = {\n email: string\n fullname: string\n lastSeenAt: DateType\n sessionCount: number\n}\n\nexport type SharesResponsePayload = {\n owner: ShareOwner\n shares: Share[]\n}\n\nexport type ShareDeletionRequestPayload = {\n email?: string\n key?: string\n origin?: string\n}\n\nexport type SharedUsersResponsePayload = Array<{\n email: string\n name: string\n}>\n\nexport type ShareCreateRequestPayload = {\n email: string[] | string\n message?: string\n permission?: string\n rights: string\n apiId?: string\n apiKey?: string\n}\n\nexport type ShareProjectCamerasRequestPayload = {\n email: string[]\n cameraExids: CameraExid[]\n message: string\n permission?: string\n rights: string\n}\n\nexport type ShareCreateResponsePayload = {\n shares: Share[]\n shareRequests: ShareRequest[]\n}\n\nexport type ShareRequestByKeyResponsePayload = {\n shareRequests: Array<{\n id: string\n email: string\n rights: string\n cameraId: string\n sharerName: string\n userId: string\n sharerEmail: string\n createdAt: DateType\n }>\n}\n\nexport type ResendShareRequestPayload = {\n email: string\n apiId?: string\n apiKey?: string\n}\n\nexport enum SharePermission {\n Minimum = \"minimum\",\n Share = \"minimal+share\",\n Full = \"full\",\n Custom = \"custom\",\n}\n\nexport enum ShareType {\n Share = \"share\",\n Request = \"request\",\n}\n\nexport enum ShareRequestStatus {\n All = \"\",\n Pending = -1,\n Cancelled = -2,\n Failed = -3,\n Used = 1,\n}\n\nexport enum ShareVisibility {\n PublicDiscoverable = \"publicDiscoverable\",\n PublicUndiscoverable = \"publicUndiscoverable\",\n Private = \"private\",\n}\n\nexport type ProjectShare = {\n id: number\n projectId: string\n userId: number\n email: string\n fullname: string\n sharerId: number\n sharerEmail: string\n sharerName: string\n role: \"member\" | \"admin\"\n cameras: Record<string, string>\n message: string | null\n updatedAt: DateType\n insertedAt: DateType\n}\n\nexport type ProjectShareRequest = ProjectShare\n\nexport type ProjectShareResponse = {\n projectShares: ProjectShare[]\n projectShareRequests: ProjectShareRequest[]\n}\n\nexport type AdminShare = {\n sharerId: number\n sharerFullname: string\n sharerApiId: string\n sharerApiKey: string\n shareeId: number\n shareeFullname: string\n shareeApiId: string\n shareeApiKey: string\n shareeEmail: string\n cameraId: number\n exid: string\n projectId: string\n name: string\n id: number\n message: string\n createdAt: DateType\n}\n\nexport type CameraShareRequestPayload = {\n email: string[]\n rights: string\n message?: string\n}\n\nexport type ShareQueryParams = {\n exid: string\n sharerFullname: string\n shareeFullname: string\n shareeEmail: string\n}\n\nexport type CameraShare = {\n sharerId: number\n sharerFullname: string\n sharerApiId: string\n sharerApiKey: string\n shareeId: number\n shareeFullname: string\n shareeApiId: string\n shareeApiKey: string\n shareeEmail: string\n cameraId: number\n exid: string\n projectId: string\n name: string\n id: number\n message: string\n createdAt: DateTime\n}\n\nexport type CameraShareRequestsQueryParams = {\n shareeEmail: string\n camera: string\n sharer: string\n status: string\n}\n\nexport type CameraShareRequest = {\n id: number\n shareeEmail: string\n camera: string\n sharer: string\n message: number\n rights: string\n status: number\n projectId: string\n cameraExid: string\n apiId: string\n apiKey: number\n createdAt: DateTime\n}\n","import { DateTime, PaginationParams } from \"@/types\"\nexport enum SmsCommands {\n Cellular = \"cellular\",\n Gpson = \"gpson\",\n GPS = \"gps\",\n IPUnblock = \"ipunblock\",\n IOStatus = \"iostatus\",\n IOSet = \"ioset\",\n MonitoringStatus = \"monitoring_status\",\n MobileOn = \"mobileon\",\n MobileOff = \"mobileoff\",\n Reboot = \"reboot\",\n Restore = \"restore\",\n RmsOn = \"rms_on\",\n RmsConnect = \"rms_connect\",\n RmsStatus = \"rms_status\",\n SwitchSIM = \"switch_sim\",\n Status = \"status\",\n SshOn = \"sshon\",\n SshOff = \"sshoff\",\n Uci = \"uci\",\n VpnOn = \"vpnon\",\n VpnOff = \"vpnoff\",\n VpnStatus = \"vpnstatus\",\n WifiOn = \"wifion\",\n WifiOff = \"wifioff\",\n Wakeup = \"wakeup\",\n WebOn = \"webon\",\n WebOff = \"weboff\",\n}\n\nexport enum SmsStatuses {\n Delivered = \"Delivered\",\n Accepted = \"accepted\",\n Pending = \"Pending\",\n}\n\nexport type SimCreateUpdatePayload = {\n number: string\n simProvider: string\n billPayer?: string\n pin1?: string\n pin2?: string\n puk?: string\n iccid?: string\n description?: string\n cameraId: string[]\n}\n\nexport type SimsQueryParams = PaginationParams & {\n simProvider: string\n number: string\n billPayer: string\n iccid: string\n cameraName: string\n description: string\n}\n\nexport type Sim = {\n id: number\n number: string\n simProvider: string\n billPayer: string\n lastSms: string\n pin1: string\n pin2: string\n puk: string\n iccid: string\n description: string\n lastSmsAt: DateTime\n cameras: {\n name: string\n exid: string\n id: number\n }[]\n}\n\nexport type SendSmsPayload = {\n number: string\n smsMessage: string\n}\n\nexport type SendSmsResponse = {\n status: number\n errorText: string\n}\n\nexport type SmsHistory = {\n insertedAt: DateTime\n type: string\n status: string\n text: string\n deliveryDatetime: DateTime\n}\n\nexport type SmsHistoryResponse = {\n singleSimSms: SmsHistory[]\n}\n\nexport type Sms = {\n id: number\n from: string\n fromName: string\n to: string\n toName: string\n messageId: string\n status: string\n text: string\n type: string\n insertedAt: DateTime\n deliveryDatetime: DateTime\n}\n\nexport type SmsQueryParams = PaginationParams & {\n dateRange: string\n fromName: string\n toName: string\n fromNumber: string\n toNumber: string\n smsText: string\n smsType: string\n smsStatus: SmsStatuses\n deliveryDatetime: string\n}\n","export enum EMapTypes {\n Blank = \"Blank\",\n Satellite = \"Satellite\",\n Street = \"Street\",\n GoogleSatellite = \"hybrid\",\n GoogleStreet = \"roadmap\",\n}\n\nexport enum EPageType {\n List = \"list\",\n Item = \"item\",\n}\n\nexport enum EPaths {\n Home = \"/\",\n Session = \"/session\",\n}\n\nexport enum EProjectItems {\n Camera = \"camera\",\n Overlay = \"overlay\",\n}\n\nexport enum ERoles {\n Admin = \"admin\",\n User = \"user\",\n}\n","import {\n MilesightCameraNetworkConfiguration,\n MilesightCameraOsdConfiguration,\n MilesightCameraSdCardInfo,\n MilesightCameraSystemSettings,\n MilesightCameraTimeInfo,\n MilesightCameraVideoConfig,\n TaskStatus,\n DateTime_Z_micros,\n KitMetricData,\n} from \"@/types\"\n\nexport enum ExNvrHealthCheckTaskId {\n ExNvrLogin = \"exNvrLogin\",\n ExNvrConfigCheck = \"exNvrGetDeviceInfo\",\n ExNvrSystemStatus = \"exNvrSystemStatus\",\n ExNvrRecordings = \"exNvrGetRecordings\",\n CameraSystemConfigCheck = \"getCameraSystemInfo\",\n CameraTimeConfigCheck = \"getCameraTimeInfo\",\n CameraStreamsConfigCheck = \"getCameraStreamsInfo\",\n CameraNetworkConfigCheck = \"getCameraNetworkInfo\",\n CameraOsdConfigCheck = \"getCameraOsdInfo\",\n CameraStorageConfigCheck = \"getCameraStorageInfo\",\n}\n\nexport type ExNvrHealthCheckTaskResult<T extends ExNvrHealthCheckTaskId> =\n T extends ExNvrHealthCheckTaskId.ExNvrLogin\n ? ExNvrLoginResponse\n : T extends ExNvrHealthCheckTaskId.ExNvrConfigCheck\n ? ExNvrDeviceConfig\n : T extends ExNvrHealthCheckTaskId.ExNvrSystemStatus\n ? ExNvrSystemStatus\n : T extends ExNvrHealthCheckTaskId.ExNvrRecordings\n ? ExNvrRecordingInterval[]\n : T extends ExNvrHealthCheckTaskId.CameraStreamsConfigCheck\n ? MilesightCameraVideoConfig\n : T extends ExNvrHealthCheckTaskId.CameraSystemConfigCheck\n ? MilesightCameraSystemSettings\n : T extends ExNvrHealthCheckTaskId.CameraTimeConfigCheck\n ? MilesightCameraTimeInfo\n : T extends ExNvrHealthCheckTaskId.CameraNetworkConfigCheck\n ? MilesightCameraNetworkConfiguration\n : T extends ExNvrHealthCheckTaskId.CameraOsdConfigCheck\n ? MilesightCameraOsdConfiguration\n : T extends ExNvrHealthCheckTaskId.CameraStorageConfigCheck\n ? MilesightCameraSdCardInfo\n : never\n\nexport type ExNvrHealthCheckTask<T extends ExNvrHealthCheckTaskId> = {\n id: T\n status: TaskStatus\n duration?: number\n result?: ExNvrHealthCheckTaskResult<T>\n error?: Error\n}\n\nexport type ExNvrLoginResponse = { accessToken: string }\n\nexport type ExNvrRecordingInterval = {\n active: boolean\n startDate: DateTime_Z_micros\n endDate: DateTime_Z_micros\n}\n\nexport type ExNvrDeviceConfig = {\n id: string\n name: string\n type: string\n state: ExNvrDeviceState\n credentials: {\n password: string\n username: string\n }\n mac: string\n url: string\n insertedAt: string\n updatedAt: string\n settings: {\n storageAddress: string\n overrideOnFullDisk: boolean\n overrideOnFullDiskThreshold: number\n generateBif: boolean\n }\n vendor: string\n model: string\n streamConfig: {\n filename: string | null\n duration: string | null\n temporaryPath: string | null\n snapshotUri: string\n streamUri: string\n subStreamUri: string\n }\n timezone: string\n}\n\nexport enum ExNvrFootageAvailableStatus {\n Active = \"Active\",\n NotActive = \"Not Active\",\n NotAvailable = \"Not Available\",\n}\n\nexport enum ExNvrDeviceState {\n Recording = \"recording\",\n Failed = \"failed\",\n Stopped = \"stopped\",\n}\n\nexport type ExNvrCpuStatus = {\n load: number[]\n numCores: number\n}\n\nexport type ExNvrMemoryStatus = {\n systemTotalMemory: number\n freeMemory: number\n totalMemory: number\n bufferedMemory: number\n cachedMemory: number\n totalSwap: number\n freeSwap: number\n availableMemory: number\n}\n\nexport type ExNvrSolarChargerStatus = {\n v: number\n vpv: number\n ppv: number\n i: number\n il: number\n load: string\n relayState: string\n offReason: number\n h19: number\n h20: number\n h21: number\n h22: number\n h23: number\n err: number\n cs: string\n fw: string\n pid: string\n serialNumber: string\n}\n\nexport type ExNvrSystemStatus = {\n version: string\n cpu: ExNvrCpuStatus\n memory: ExNvrMemoryStatus\n solarCharger: ExNvrSolarChargerStatus\n}\n\nexport enum ExNvrMetricId {\n CpuLoad = \"cpu_load\",\n RamUsage = \"ram_usage\",\n SwapUsage = \"swap_usage\",\n}\n\nexport type ExNvrMetric = KitMetricData & {\n metricId: ExNvrMetricId\n value: number\n}\n","import { DateType, Schedule } from \"@/types\"\n\nexport enum TimelapseStatus {\n Pending = 11,\n Completed = 5,\n Failed = 7,\n}\n\nexport enum TimelapseDuration {\n ThirtySeconds = 30,\n SixtySeconds = 60,\n NintySeconds = 90,\n}\n\nexport type TimelapseVideoOptions = {\n width?: number\n height?: number\n removeTimestamp: boolean\n smoothTransition: boolean\n evercamWatermark: boolean\n}\n\nexport type TimelapseLogoOptions = {\n id: number\n x: number\n y: number\n width: number\n height: number\n}\n\nexport type TimelapseSchedules = string | Schedule\n\nexport enum TimelapseScheduleType {\n Continuous = \"continuous\",\n WorkingHours = \"workingHours\",\n Custom = \"custom\",\n}\n\nexport enum TimelapsePeriod {\n Day = 1,\n Week = 7,\n Month = 30,\n WholeProject = \"whole_project\",\n Custom = \"custom\",\n}\n\nexport type TimelapseFilterQueryParams = {\n from?: DateType\n to?: DateType\n period?: TimelapsePeriod\n duration?: number\n schedule?: TimelapseSchedules\n}\n\nexport type TimelapseCreationRequestPayload = {\n title: string\n duration: number\n fromDatetime: string\n toDatetime: string\n cameraExid: string\n schedule: Schedule\n videoOptions: TimelapseVideoOptions\n logo?: TimelapseLogoOptions\n}\n\nexport type TimelapseCreationResponsePayload = {\n Timelapse: {\n camera: string\n createdAt: string\n fromDate: string\n id: number\n duration: number\n requestor: string\n schedule: Schedule\n status: number\n toDate: string\n updatedAt: string\n }\n}\n\nexport type TimelapseSnapshotRequestPayload = {\n from: string\n to: string\n schedule: string\n count: number\n}\n\nexport type TimelapseSnapshotResponsePayload = {\n snapshots: string[]\n}\n\nexport enum TimelapseExportStep {\n Format = 1,\n Effects = 2,\n Confirm = 3,\n Finish = 4,\n}\n","import type { DateTime, PaginationParams } from \"@/types\"\n\nexport type User = {\n id?: number\n fullname?: string\n firstname: string\n lastname: string\n email: string\n telephone: string\n country: string\n isAdmin: boolean\n persona: Persona\n companyId?: string\n companyName?: string\n companyExid?: string\n features?: Array<UserFeatureFlag>\n}\n\nexport type AdminUser = {\n id: number\n fullname: string\n firstname: string\n email: string\n telephone: string\n country: string\n isAdmin: boolean\n companyId: string\n companyName: string\n companyExid: string\n features: Array<UserFeatureFlag>\n active: boolean\n cameraShares: number\n camerasCount: number\n camerasOwned: number\n countryId: number\n countryName: string\n createdAt: DateTime\n integrations: string[]\n lastEventBrowser: string\n lastEvenCreatedAt: DateTime\n lastEventId: number\n lastEventIpAddress: string\n lastEventName: string\n lastEventOs: string\n lastLoginAt: string\n lastname: string\n persona: string\n projects: string[]\n projectsCount: number\n referralUrl?: string\n snapmailCount: number\n zohoId: string\n}\n\nexport enum UserFeatureFlag {\n CompanyAdmin = \"company-admin\",\n VideoWalls = \"video-walls\",\n MassCameraSharing = \"mass-camera-sharing\",\n Copilot = \"copilot\",\n ProjectSharing = \"project-sharing\",\n}\n\nexport type ProjectUser = User & {\n lastSeenAt: string\n active: boolean\n activeOneMonth: boolean\n eventsCount: string\n cameraExid: string\n cameraRights: string\n}\n\nexport enum Persona {\n HQ = \"HQ\",\n PM = \"PM\",\n QS = \"QS\",\n Marketing = \"Marketing\",\n HS = \"H&S\",\n DI = \"DI\",\n Other = \"Other\",\n}\n\nexport type UpdatePasswordRequestPayload = {\n token: string\n password: string\n}\n\nexport type Credentials = {\n apiKey: string\n apiId: string\n}\n\nexport type LoginRequestPayload = {\n username: string\n password: string\n redirectToZoho?: boolean\n}\n\nexport type RemotePasswordUpdateRequestPayload = {\n currentPassword: string\n newPassword: string\n}\n\nexport type LoginResponsePayload = {\n confirmedAt?: string\n country?: string\n createdAt?: string\n email?: string\n firstname?: string\n id?: string\n isAdmin?: boolean\n lastLoginAt?: string\n lastname?: string\n persona?: Persona\n telephone?: string\n token?: string\n updatedAt?: string\n evercamAccount?: string\n}\n\nexport type LogoutParams = {\n token: string\n fromAdmin?: boolean\n}\n\nexport type UserSession = {\n browser: string\n createdAt: string\n id: number\n ipAddress: string\n isCurrent: boolean\n lastUsedAt: string\n os: string\n}\n\nexport type SessionsListRequestPayload = {\n authorization: string\n browser?: string\n os?: string\n ipAddress?: string\n sort: string\n limit: number\n page: number\n}\n\nexport type SessionActivityCamSettingsDetail = {\n new: any\n old: any\n}\n\nexport type SessionActivityDetail = {\n agent: string\n camSettings: SessionActivityCamSettingsDetail\n country: string\n countryCode: string\n ip: string\n}\n\nexport type SessionActivity = {\n cameraExid: string\n details: SessionActivityDetail\n insertedAt: string\n type: string\n who: string\n}\n\nexport type SessionActivitiesListRequestPayload = {\n limit: number\n from: string\n to: string\n}\n\nexport type SignupUserRequestPayload = {\n telephone: string\n token: string\n firstname: string\n lastname: string\n email: string\n password: string\n shareRequestKey: string\n referralUrl: string\n persona: string\n disablePassword: boolean\n}\n\nexport type UserUpdateRequestPayload = {\n firstname: string\n lastname: string\n email: string\n telephone: string\n country: string\n persona: string\n}\n\nexport type UserDeleteRequestPayload = {\n verifEmail: string\n}\n\nexport type GoogleAuthRequestPayload = { code: string; redirectUri: string }\n\nexport type UserStatsResponse = { data: { userStats: AdminUser } }\n\nexport type UserCamera = {\n id: number\n exid: string\n ownerFullname: string\n ownerEmail: string\n apiId: string\n apiKey: string\n}\n\nexport type UserCameraResponse = { data: UserCamera[] }\n\nexport type UserProject = {\n id: number\n exid: string\n name: string\n startedAt: DateTime\n}\n\nexport type UserProjectResponse = { data: UserProject[] }\n\nexport type AdminUserUpdateRequestPayload = {\n companyId: string\n email: string\n persona: Persona\n country: string\n features: UserFeatureFlag[]\n}\n\nexport type AdminQueryParams = PaginationParams & {\n email: string\n fullname: string\n}\n\nexport type Admin = {\n id: number\n fullname: string\n email: string\n createdAt: DateTime\n updatedAt: DateTime\n lastSignInAt: DateTime\n signInCount: number\n lastSignInIp: string\n apiId: string\n apiKey: string\n}\n\nexport type ImpersonateUserResponse = {\n id: string\n firstname: string\n lastname: string\n telephone: string\n email: string\n is_admin: boolean\n persona: Persona\n country: string\n companyId: number\n companyExid: string\n companyName: string\n evercamAccount: boolean\n createdAt: DateTime\n updatedAt: DateTime\n confirmedAt: DateTime\n last_loginAt: DateTime\n features: UserFeatureFlag[]\n token: string\n}\n\nexport type AdminUserQueryParams = PaginationParams & {\n fullname: string\n email: string\n telephone: string\n persona: Persona\n companyName: string\n camerasCount: string\n projectsCount: string\n snapmailCount: string\n camerasOwned: string\n cameraShares: string\n createdAtDate: string\n lastLoginAtDate: string\n integrations: \"procore\" | \"aconex\" | \"autodesk\"\n features: UserFeatureFlag.ProjectSharing | UserFeatureFlag.VideoWalls\n}\n\nexport type SuppressionsQueryParams = PaginationParams & {\n id: number\n email: string\n source: string\n}\n\nexport type Suppression = {\n id: number\n email: string\n source: string\n insertedAt: DateTime\n updatedAt: DateTime\n}\n","import { Camera, Media } from \"@/types\"\n\nexport enum VideoWallItemType {\n LiveView = \"live\",\n Video = \"video\",\n Image = \"image\",\n}\n\nexport type VideoWallItem<T extends Camera | Media> = {\n value: T\n type: VideoWallItemType\n}\n\nexport type VideoWallPresetItemConfig = {\n camera: Camera\n h: number\n i: string | number\n moved: boolean\n w: number\n x: number\n y: number\n}\n\nexport type VideoWallPreset = {\n name?: string\n configuration: Array<VideoWallPresetItemConfig>\n}\n\nexport type VideoWallPresetItem = {\n i: string | number\n x: number\n y: number\n w: number\n h: number\n camera: Camera\n weather?: Record<string, unknown>\n media?: Media\n}\n","import { Date_YYYY_MM_DD, DateType } from \"@/types/time\"\n\nexport type HistoryWeatherRequestPayload = {\n day: string\n}\n\nexport type WeatherResponsePayload = Array<{\n hour?: number\n temp?: number\n clouds?: number\n feelsLike?: number\n pressure?: number\n humidity?: number\n windSpeed?: number\n windDegree?: number\n weather?: [WeatherSummary]\n rain?: HourlyReading\n snow?: HourlyReading\n}>\n\nexport type WeatherSummary = {\n id?: number\n main?: string\n description?: string\n icon?: string\n}\n\nexport type HourlyReading = {\n \"1h\"?: number\n \"3h\"?: number\n}\n\nexport enum WeatherProvider {\n WeatherStack = \"WeatherStack\",\n AerisWeather = \"AerisWeather\",\n}\n\nexport type Weatherstatus = {\n description: string\n hour: DateType\n id: number\n temp: number\n}\n\nexport type WeatherDataResponse = {\n minFeelsLike: number\n id: number\n sunhour: number\n maxFeelsLike: number\n minWindchill: number\n minPressure: number\n minWindDegree: number\n minDewpoint: number\n maxClouds: number\n maxWindgust: number\n minWindSpeed: number\n astro: {\n moonIllumination: number\n moonPhase: string\n moonrise: string\n moonset: string\n sunrise: string\n sunset: string\n }\n insertedAt: string\n maxDewpoint: number\n maxTemp: number\n minClouds: number\n weather: Weatherstatus[]\n minHeatindex: number\n minPrecip: number\n maxWindDegree: number\n maxUvIndex: number\n minHumidity: number\n maxWindSpeed: number\n minWindgust: number\n updatedAt: DateType\n maxPrecip: number\n uvIndex: number\n maxHeatindex: number\n minTemp: number\n date: Date_YYYY_MM_DD\n totalsnow: number\n maxPressure: number\n maxWindchill: number\n maxHumidity: number\n avgtemp: number\n projectId: number\n minUvIndex: number\n}\n","import { DateType } from \"@/types\"\n\ntype sortby = string\ntype sortDirection = \"asc\" | \"desc\"\n\nexport type SortingUrlParam = `${sortby}|${sortDirection}`\n\nexport type BatteryReading = {\n id: number\n voltage: number\n datetime: DateType\n serialNo: string\n iValue: number\n vpvValue: number\n ppvValue: number\n csValue: number\n errValue: number\n h19Value: number\n h20Value: number\n h21Value: number\n h22Value: number\n h23Value: number\n ilValue: number\n mpptValue: number\n loadValue: number\n pValue: number\n consumedAmphours: number\n socValue: number\n timeToGo: number\n alarm: string\n relay: string\n arValue: number\n bmvValue: number\n h1Value: number\n h2Value: number\n h3Value: number\n h4Value: number\n h5Value: number\n h6Value: number\n h7Value: number\n h8Value: number\n h9Value: number\n h10Value: number\n h11Value: number\n}\n\nexport interface PaginatedItems<T> {\n from: number\n items: Array<T>\n limit: number\n page: number\n to: number\n total: number\n}\n\nexport enum UnitSystem {\n Imperial = \"imperial\",\n Metric = \"metric\",\n}\n\nexport type Timestamp = string | number\n\nexport type Schedule = {\n Friday: string[]\n Monday: string[]\n Saturday: string[]\n Sunday: string[]\n Thursday: string[]\n Tuesday: string[]\n Wednesday: string[]\n}\n\nexport type ScheduleLowercase = {\n friday: string[]\n monday: string[]\n saturday: string[]\n sunday: string[]\n thursday: string[]\n tuesday: string[]\n wednesday: string[]\n}\n\nexport type PaginationParams = {\n sort?: SortingUrlParam\n page?: number\n limit?: number\n}\n\nexport type LabsPaginationParams = {\n sortBy?: string\n sortDirection?: \"asc\" | \"desc\"\n page?: number\n limit?: number\n}\n\nexport enum MobileDevice {\n Ios = \"ios\",\n Android = \"android\",\n}\n\nexport enum _3dViewer {\n Itwin = \"itwin\",\n Cesium = \"cesium\",\n}\n\nexport enum SsoProvider {\n Microsoft = \"microsoft\",\n Google = \"google\",\n Evercam = \"evercam\",\n}\n\nexport enum InfoPage {\n ThreeSixtyView = \"360\",\n BIMView = \"bim\",\n BimCompare = \"bim-compare\",\n GateReport = \"gate-report\",\n DroneView = \"drone-view\",\n Compare = \"compare\",\n Timeline = \"timeline\",\n WeatherReport = \"weather-report\",\n EvercamGo = \"evercam-go\",\n}\n\nexport enum EvercamGoFeatures {\n XRay = \"xray\",\n MagicWand = \"magic-wand\",\n Weather = \"weather\",\n DownloadSnapshot = \"download-snapshot\",\n LocalRecordings = \"local-recordings\",\n MarkupTool = \"markup-tool\",\n}\n\nexport enum DownloadTypes {\n Jpeg = \"jpeg\",\n Pdf = \"pdf\",\n Csv = \"csv\",\n}\n\nexport enum FeedbackContext {\n CopilotMessage = \"copilot_message\",\n}\n\nexport type FeedbackPayload<T> = {\n id?: number\n user: string\n text: string\n type: T\n context: FeedbackContext\n messageId?: number\n conversationId?: number\n}\n\nexport type Stringified<T> = string & {\n [P in keyof T]: { \"_ value\": T[P] }\n}\n\nexport interface JSON {\n stringify<T>(\n value: T,\n replacer?: (key: string, value: unknown) => unknown,\n space?: string | number\n ): string & Stringified<T>\n\n parse<T>(\n text: Stringified<T>,\n reviver?: (key: unknown, value: unknown) => unknown\n ): T\n}\n\nexport type Exid = string\n\nexport type EntityByExid<Entity extends unknown> = Record<Exid, Entity>\n\nexport type BatteryVoltage = {\n date: DateType\n max_value: number\n min_value: number\n}\n\nexport type GlobalSearchQueryParams = PaginationParams & {\n resource: \"projects\" | \"users\" | \"cameras\" | \"companies\" | \"sims\" | \"routers\"\n term: string\n email: string\n featureFlag: string\n}\n\nexport type TimelineDateInterval = {\n fromDate: string\n toDate: string\n}\n\nexport enum TimelinePrecision {\n Year = \"year\",\n Month = \"month\",\n Week = \"week\",\n Day = \"day\",\n Hour = \"hour\",\n Minute = \"minute\",\n Events = \"events\",\n}\n\nexport type EntityStatsQueryParams = {\n period: \"day\" | \"week\" | \"month\"\n startDate: string\n endDate: string\n}\n\nexport type EntityStat = {\n period: string\n name: string\n count: number\n}\n\nexport enum TaskStatus {\n Idle = \"idle\",\n Loading = \"loading\",\n Success = \"success\",\n Error = \"error\",\n}\n\nexport type PatchPayload<T> = Partial<T> & { [K in keyof T]?: T[K] | undefined }\n\nexport enum PtzDirection {\n Up = \"up\",\n Down = \"down\",\n Left = \"left\",\n Right = \"right\",\n}\n\nexport type MoveParams = {\n cameraExid: string\n direction: PtzDirection\n isRecordingFromNvr: boolean\n}\n\nexport enum ZoomDirection {\n In = \"in\",\n Out = \"out\",\n}\n\nexport type ZoomParams = {\n cameraExid: string\n direction: ZoomDirection\n isRecordingFromNvr: boolean\n}\n","import {\n CountryCode,\n CountryId,\n DateType,\n Nvr,\n PaginationParams,\n PowerType,\n Project,\n Region,\n Router,\n Schedule,\n} from \"@/types\"\n\nexport type Kit = {\n alarms: KitAlarm[]\n countryCode: CountryCode\n countryId: CountryId\n countryName: string\n countryRegion: Region\n id?: number\n jobId: number\n name: string\n nvr: Nvr\n powerType: PowerType\n project: Project\n projectId: number\n router: Partial<Router>\n serial: string\n status: KitStatus\n powerSchedule: Schedule\n}\n\nexport enum KitStatus {\n New = \"new\",\n Active = \"active\",\n Deployed = \"deployed\",\n OfflineScheduled = \"offline_scheduled\",\n Decommissioned = \"decommissioned\",\n}\n\nexport enum KitAlarm {\n NvrOffline = \"nvr_offline\",\n UnknownCamera = \"unknown_camera\",\n NotRecordingCamera = \"not_recording_camera\",\n}\n\nexport enum KitMetricId {\n Battery = \"battery\",\n}\n\nexport enum KitMetricPeriod {\n Last5Minutes = \"now-5m\",\n Last15Minutes = \"now-15m\",\n Last30Minutes = \"now-30m\",\n Last1Hour = \"now-1h\",\n Last3Hours = \"now-3h\",\n Last6Hours = \"now-6h\",\n Last12Hours = \"now-12h\",\n Last24Hours = \"now-24h\",\n}\n\nexport enum GrafanaMetricId {\n SbcCpuLoad = \"SbcCpuLoad\",\n SbcSystemLoad5MnAvg = \"SbcSystemLoad5MnAvg\",\n SbcSystemLoad15MnAvg = \"SbcSystemLoad15MnAvg\",\n SbcRamUsed = \"SbcRamUsed\",\n SbcSwapUsed = \"SbcSwapUsed\",\n SbcRootFsUsed = \"SbcRootFsUsed\",\n SbcCpuCoresTotal = \"SbcCpuCoresTotal\",\n SbcRamTotal = \"SbcRamTotal\",\n SbcSwapTotal = \"SbcSwapTotal\",\n SbcRootFsTotal = \"SbcRootFsTotal\",\n SbcUptime = \"SbcUptime\",\n SbcCpuStats = \"SbcCpuStats\",\n SbcRamStats = \"SbcRamStats\",\n SbcNetworkStats = \"SbcNetworkStats\",\n SbcTimeSyncStats = \"SbcTimeSyncStats\",\n SbcTemperatureStats = \"SbcTemperatureStats\",\n SbcTimeSyncDriftStats = \"SbcTimeSyncDriftStats\",\n CameraInfo = \"CameraInfo\",\n CameraRecordingStateTimeline = \"CameraRecordingStateTimeline\",\n CameraStreamInfo = \"CameraStreamInfo\",\n LocalStorage = \"LocalStorage\",\n StorageSpaceUsed = \"StorageSpaceUsed\",\n RouterTemperature = \"RouterTemperature\",\n RouterCpuLoad = \"RouterCpuLoad\",\n RouterRamUsed = \"RouterRamUsed\",\n RouterSystemLoad5MnAvg = \"RouterSystemLoad5MnAvg\",\n RouterSwapTotal = \"RouterSwapTotal\",\n RouterRamTotal = \"RouterRamTotal\",\n RouterUptime = \"RouterUptime\",\n RouterCpuCoresTotal = \"RouterCpuCoresTotal\",\n RouterSignalReliability = \"RouterSignalReliability\",\n RouterSINR = \"RouterSINR\",\n RouterRSRP = \"RouterRSRP\",\n RouterRSRQ = \"RouterRSRQ\",\n RouterRSSI = \"RouterRSSI\",\n RouterSignalStrengthStats = \"RouterSignalStrengthStats\",\n RouterSignalQualityStats = \"RouterSignalQualityStats\",\n RouterDataConsumptionStats = \"RouterDataConsumptionStats\",\n BatteryVoltageAndCurrentStats = \"BatteryVoltageAndCurrentStats\",\n PanelVoltageAndPowerStats = \"PanelVoltageAndPowerStats\",\n ExNvrStatus = \"ExNvrStatus\",\n ExNvrVersion = \"ExNvrVersion\",\n ExNvrMemoryUsage = \"ExNvrMemoryUsage\",\n ExNvrLogs = \"ExNvrLogs\",\n}\n\nexport enum KitChartType {\n Stat = \"stat\",\n Gauge = \"gauge\",\n Graph = \"graph\",\n Table = \"table\",\n StateTimeline = \"state-timeline\",\n Logs = \"logs\",\n TimeSeries = \"timeseries\",\n BarChart = \"barchart\",\n}\n\nexport type GrafanaDataSource = {\n type: string\n uid: string\n}\n\nexport type GrafanaTarget = {\n expr: string\n refId: string\n datasourceId?: string\n intervalMs?: number\n maxDataPoints?: number\n}\n\nexport type GrafanaPanel = {\n [key: string]: unknown\n id: GrafanaMetricId\n name: keyof GrafanaMetricId\n title: string\n description: string\n type: KitChartType\n datasource: GrafanaDataSource\n targets: GrafanaTarget[]\n maxDataPoints?: number\n interval?: string\n timeFrom?: string\n timeShift?: string\n options?: {\n maxDataPoints?: number\n interval?: string\n }\n}\n\nexport type GrafanaDashboard = {\n [key: string]: unknown\n panels: GrafanaPanel[]\n time?: {\n from: string\n to: string\n }\n timepicker?: {\n refresh_intervals: string[]\n time_options: string[]\n }\n}\n\nexport type GrafanaQueryOptions = {\n metricId: GrafanaMetricId\n host: string\n job?: string\n from?: string\n to?: string\n variables?: Record<string, string>\n}\n\nexport type GrafanaTimeSeriesValue = number | string | null\nexport type GrafanaTimeSeriesValues = GrafanaTimeSeriesValue[][]\n\nexport type GrafanaFieldConfig = {\n displayNameFromDS?: string\n links?: string[]\n color?: string\n custom?: {\n lineInterpolation?: string\n fillOpacity?: number\n gradientMode?: string\n lineWidth?: number\n spanNulls?: boolean\n resultType?: string\n }\n thresholds?: {\n mode: string\n steps: Array<{\n color: string\n value: number | null\n }>\n }\n unit?: string\n decimals?: number\n interval?: number\n}\n\nexport type GrafanaField = {\n name: string\n type: string\n typeInfo: {\n frame: string\n nullable?: boolean\n }\n config: GrafanaFieldConfig\n labels?: {\n [key: string]: string\n }\n values?: GrafanaTimeSeriesValues\n}\n\nexport type GrafanaSchemaMeta = {\n type?: string\n typeVersion?: number[]\n custom?: {\n resultType?: string\n frameType?: string\n }\n stats?: Array<{\n displayName: string\n value: number\n unit?: string\n }>\n executedQueryString?: string\n}\n\nexport type GrafanaSchema = {\n name?: string\n refId: string\n meta: GrafanaSchemaMeta\n fields: GrafanaField[]\n}\n\nexport type GrafanaFrame = {\n schema: GrafanaSchema\n data: {\n values: GrafanaTimeSeriesValues\n nanos?: Array<number[] | null>\n }\n}\n\nexport type KitMetricData = {\n type: KitChartType\n chartProps?: Record<string, unknown>\n}\n\nexport type GrafanaQueryResult = {\n status: number\n frames: GrafanaFrame[]\n}\n\nexport type GrafanaMetricData = KitMetricData & {\n results: {\n [key: string]: GrafanaQueryResult\n }\n}\n\nexport type EvercamMetricData = KitMetricData & {\n stats: EvercamStats[]\n}\n\nexport type GrafanaKitMetrics = Record<\n keyof typeof GrafanaMetricId,\n GrafanaMetricData\n>\n\nexport type EvercamStats = {\n [k: string]: number | string\n timestamp: string\n}\n\nexport type KitQueryParams = PaginationParams & {\n name: string\n serial: string\n status: KitStatus\n}\n\nexport type AdminKit = {\n id: number\n name: string\n serial: string\n status: string\n powerType: PowerType\n location: string\n countryId: number\n countryName: string\n countryRegion: string\n nvr: Nvr\n router: {\n id: number\n serialNumber: number\n vpnUserId: string\n vpnPassword: string\n routerType: string\n routerUserId: string\n routerPassword: string\n routerHttpPort: number\n powerType: PowerType\n powerSchedule: Schedule\n vpnServer: string\n netbirdUrl: string\n sims: {\n id: number\n number: string\n }[]\n }\n project: {\n id: number\n exid: string\n name: string\n timezone: string\n status: string\n zohoId: string\n insertedAt: DateType\n }\n}\n\nexport type KitCreatePayload = {\n projectId?: number\n countryCode?: string\n name: string\n status: KitStatus\n powerType: PowerType\n config: {\n region: Region\n }\n}\n\nexport type KitUpdatePayload = {\n countryId: number\n name: string\n kitSerial: string\n kitStatus: KitStatus\n type: string\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { CameraStatus, DateType, PaginationParams } from \"@/types\"\n\nexport enum AuditLogActionType {\n VH_STATUS = \"vh_status\",\n CR_UPDATED = \"cr_updated\",\n CR_CREATED = \"cr_created\",\n ONLINE = \"online\",\n OFFLINE = \"offline\",\n ON_HOLD = \"on_hold\",\n WAITING = \"waiting\",\n DECOMMISSIONED = \"decommissioned\",\n UNDER_MAINTENANCE = \"under_maintenance\",\n WAITING_FOR_SITE_VISIT = \"waiting_for_site_visit\",\n SMS = \"sms\",\n CUSTOM = \"custom\",\n PUBLIC_NOTE = \"public_note\",\n SIM = \"sim\",\n LOGIN = \"login\",\n LOGOUT = \"logout\",\n CREATE = \"create\",\n UPDATE = \"update\",\n DELETE = \"delete\",\n DEVICE_SETTINGS = \"device_settings\",\n LINK_SIM_WITH_ROUTER = \"link_sim_with_router\",\n UNLINK_SIM_FROM_ROUTER = \"unlink_sim_from_router\",\n LINK_CAMERA_WITH_ROUTER = \"link_camera_with_router\",\n UNLINK_CAMERA_FROM_ROUTER = \"unlink_camera_from_router\",\n SHARE = \"share\",\n UPDATE_SHARE = \"update_share\",\n DELETE_SHARE = \"delete_share\",\n SHARE_REQUEST = \"share_request\",\n DELETE_SHARE_REQUEST = \"delete_share_request\",\n TRANSFER_OWNERSHIP = \"transfer_ownership\",\n BIM_NOTE = \"bim_note\",\n GATE_REPORT_NOTE = \"gate_report_note\",\n}\n\nexport type AuditLog = {\n id: number\n action: AuditLogActionType\n details: Record<string, any>\n insertedAt: DateType\n entity: string\n user_details: {\n browser: string\n country: string\n countryCode: string\n device: string | null\n ip: string\n os: string | null\n }\n who: string\n}\n\nexport type AuditLogsParams = PaginationParams & {\n routerId: number\n cameraId: number\n entity: string\n byRouter: boolean\n byCamera: boolean\n byProject: boolean\n action: string\n}\n\nexport type CameraLogsQueryParams = {\n historyDays: number\n accountId?: string\n status: CameraStatus[]\n}\n\nexport type CameraLogItem = {\n start: DateType\n state: CameraStatus\n end: DateType\n}\n\nexport type CameraLog = {\n data: CameraLogItem[]\n measure: string\n}\n\nexport type CameraAuditLog = {\n id: number\n action: AuditLogActionType\n details: {\n error_body?: string\n exid: string\n id: number\n name: string\n reason?: string\n }\n insertedAt: DateType\n entity: string\n user_details: {\n ip: string\n country: string\n countryCode: string\n agent: string\n }\n who: string\n}\n\nexport type CameraAuditLogsQueryParams = PaginationParams & {\n from: string\n to: string\n action: AuditLogActionType[]\n}\n","import { CameraExid, DateType, PaginationParams, Schedule } from \"@/types\"\n\nexport type SnapshotExtractionQyeryParams = PaginationParams & {\n camera: string // search by camera name\n cameraExid: CameraExid\n status: SnapshotExtractionStatus\n}\n\nexport enum SnapshotExtractionStatus {\n Completed = \"completed\",\n Failed = \"failed\",\n Processing = \"processing\",\n}\n\nexport enum SnapshotExtractionType {\n Cloud = \"cloud\",\n Local = \"local\",\n Timelapse = \"timelapse\",\n}\n\nexport type SnapshotExtraction = {\n id: number\n cameraId: number\n cameraExid: CameraExid\n cameraName: string\n fromDate: DateType\n toDate: DateType\n type: SnapshotExtractionType\n notes: string\n status: SnapshotExtractionStatus\n interval: number\n requestor: string\n jpegsToDropbox: boolean\n injectTo_cr: Boolean\n schedule: Schedule\n created_at: DateType\n}\n\nexport type SnapshotTestPayload = {\n cameraExid?: CameraExid\n camUsername: string\n camPassword: string\n externalUrl: string\n jpgUrl: string\n}\n\nexport type SnapshotTestResponse = {\n status: string\n data: string\n}\n\nexport type DeleteSnapshotQueryParams = {\n fromDate: DateType\n toDate: DateType\n adminEmail: string\n adminFullname: string\n}\n","export enum SiteAnalyticsMode {\n Cranes = \"cranes\",\n Detections = \"detections\",\n Segments = \"segments\",\n}\n","import type { DateTime } from \"@evercam/api/types/time\"\nimport { VideoWallPresetItemConfig } from \"@evercam/api/types/videoWall\"\n\nexport enum DelayUnit {\n Minute = \"minute\",\n Hour = \"hour\",\n Day = \"day\",\n}\n\nexport enum CommonWidgetSettingsKeys {\n Width = \"width\",\n WidthResolution = \"resolution\",\n Height = \"height\",\n HeightResolution = \"heightResolution\",\n}\n\nexport enum RecordingsWidgetSettingsKeys {\n DarkMode = \"darkMode\",\n Calendar = \"calendar\",\n HasDelay = \"hasDelay\",\n Delay = \"delay\",\n DelayUnit = \"delayUnit\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum LiveViewWidgetSettingsKeys {\n Fullscreen = \"fullscreen\",\n Download = \"download\",\n Zoom = \"zoom\",\n Playpause = \"playpause\",\n Refresh = \"refresh\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum BimCompareWidgetSettingsKeys {\n Timeline = \"timeline\",\n DarkMode = \"darkMode\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum VideoWallWidgetSettingsKeys {\n Preset = \"preset\",\n RefreshRate = \"refreshRate\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport type CommonWidgetSettings = {\n width: number\n resolution: string\n height: number\n heightResolution: string\n}\n\nexport type RecordingsWidgetSettings = CommonWidgetSettings & {\n darkMode: boolean\n calendar: boolean\n hasDelay: boolean\n delay: number\n delayUnit: DelayUnit\n}\n\nexport type LiveViewWidgetSettings = CommonWidgetSettings & {\n fullscreen: boolean\n download: boolean\n zoom: boolean\n playpause: boolean\n refresh: number\n}\n\nexport type BimCompareWidgetSettings = CommonWidgetSettings & {\n timeline: boolean\n darkMode: boolean\n}\n\nexport type VideoWallWidgetSettings = CommonWidgetSettings & {\n preset: VideoWallPresetItemConfig\n refreshRate: number\n}\n\nexport type WidgetSettings =\n | RecordingsWidgetSettings\n | LiveViewWidgetSettings\n | BimCompareWidgetSettings\n | VideoWallWidgetSettings\n\nexport enum WidgetType {\n LiveWidget = \"Live View\",\n Recording = \"Recordings\",\n BimCompare = \"BIM Compare\",\n VideoWall = \"Video Wall\",\n}\n\nexport const RessourceByType = {\n camera: [WidgetType.LiveWidget, WidgetType.Recording, WidgetType.BimCompare],\n project: [WidgetType.VideoWall],\n}\n\nexport type WidgetsListRequestPayload = {\n userId: number\n projectId: number\n cameraId: number\n active: boolean\n settings: WidgetSettings\n widgetType: WidgetType\n isPublic: boolean\n allowedOrigin: string\n}\n\nexport type Widget = {\n id: number\n ressources: {\n camera?: {\n id: number\n exid: string\n name: string\n }\n project?: {\n id: number\n exid: string\n name: string\n }\n }\n widgetType: WidgetType\n settings: WidgetSettings\n allowedOrigin: string\n isPublic: boolean\n active: boolean\n user: {\n id: number\n email: string\n }\n insertedAt: DateTime\n updatedAt: DateTime\n}\n\nexport type WidgetFull = {\n id: number\n ressources: {\n camera?: {\n id: number\n exid: string\n name: string\n }\n project?: {\n id: number\n exid: string\n name: string\n }\n }\n widgetType: WidgetType\n widgetKey: string\n widgetId: string\n active: boolean\n user: {\n id: number\n email: string\n }\n settings: WidgetSettings\n sessionSettings: any\n allowedOrigin: string\n isPublic: boolean\n insertedAt: DateTime\n updatedAt: DateTime\n}\n\nexport type WidgetPayload = {\n ressources: {\n cameraId?: number\n projectId?: number\n }\n widgetType: WidgetType\n active: boolean\n settings: WidgetSettings\n isPublic: boolean\n allowedOrigin: string\n}\n","export enum CountryId {\n Andorra = 1,\n UnitedArabEmirates = 2,\n Afghanistan = 3,\n AntiguaAndBarbuda = 4,\n Anguilla = 5,\n Albania = 6,\n Armenia = 7,\n NetherlandsAntilles = 8,\n Angola = 9,\n Antarctica = 10,\n Argentina = 11,\n AmericanSamoa = 12,\n Austria = 13,\n Australia = 14,\n Aruba = 15,\n AlandIslands = 16,\n Azerbaijan = 17,\n BosniaAndHerzegovina = 18,\n Barbados = 19,\n Bangladesh = 20,\n Belgium = 21,\n BurkinaFaso = 22,\n Bulgaria = 23,\n Bahrain = 24,\n Burundi = 25,\n Benin = 26,\n Bermuda = 27,\n BruneiDarussalam = 28,\n Bolivia = 29,\n Brazil = 30,\n Bahamas = 31,\n Bhutan = 32,\n BouvetIsland = 33,\n Botswana = 34,\n Belarus = 35,\n Belize = 36,\n Canada = 37,\n CocosKeelingIslands = 38,\n CongoKinshasa = 39,\n CentralAfricanRepublic = 40,\n CongoBrazzaville = 41,\n Switzerland = 42,\n CoteDIvoire = 43,\n CookIslands = 44,\n Chile = 45,\n Cameroon = 46,\n China = 47,\n Colombia = 48,\n CostaRica = 49,\n Cuba = 50,\n CapeVerde = 51,\n ChristmasIsland = 52,\n Cyprus = 53,\n CzechRepublic = 54,\n Germany = 55,\n Djibouti = 56,\n Denmark = 57,\n Dominica = 58,\n DominicanRepublic = 59,\n Algeria = 60,\n Ecuador = 61,\n Estonia = 62,\n Egypt = 63,\n WesternSahara = 64,\n Eritrea = 65,\n Spain = 66,\n Ethiopia = 67,\n Finland = 68,\n Fiji = 69,\n FalklandIslands = 70,\n Micronesia = 71,\n FaroeIslands = 72,\n France = 73,\n Gabon = 74,\n UnitedKingdom = 75,\n Grenada = 76,\n Georgia = 77,\n FrenchGuiana = 78,\n Guernsey = 79,\n Ghana = 80,\n Gibraltar = 81,\n Greenland = 82,\n Gambia = 83,\n Guinea = 84,\n Guadeloupe = 85,\n EquatorialGuinea = 86,\n Greece = 87,\n SouthGeorgiaAndTheSouthSandwichIslands = 88,\n Guatemala = 89,\n Guam = 90,\n GuineaBissau = 91,\n Guyana = 92,\n HongKong = 93,\n HeardIslandAndMcDonaldIslands = 94,\n Honduras = 95,\n Croatia = 96,\n Haiti = 97,\n Hungary = 98,\n Indonesia = 99,\n Ireland = 100,\n Israel = 101,\n IsleOfMan = 102,\n India = 103,\n BritishIndianOceanTerritory = 104,\n Iraq = 105,\n Iran = 106,\n Iceland = 107,\n Italy = 108,\n Jersey = 109,\n Jamaica = 110,\n Jordan = 111,\n Japan = 112,\n Kenya = 113,\n Kyrgyzstan = 114,\n Cambodia = 115,\n Kiribati = 116,\n Comoros = 117,\n SaintKittsAndNevis = 118,\n NorthKorea = 119,\n SouthKorea = 120,\n Kuwait = 121,\n CaymanIslands = 122,\n Kazakhstan = 123,\n Laos = 124,\n Lebanon = 125,\n SaintLucia = 126,\n Liechtenstein = 127,\n SriLanka = 128,\n Liberia = 129,\n Lesotho = 130,\n Lithuania = 131,\n Luxembourg = 132,\n Latvia = 133,\n LibyanArabJamahiriya = 134,\n Morocco = 135,\n Monaco = 136,\n Moldova = 137,\n Montenegro = 138,\n Madagascar = 139,\n MarshallIslands = 140,\n Macedonia = 141,\n Mali = 142,\n Myanmar = 143,\n Mongolia = 144,\n Macao = 145,\n NorthernMarianaIslands = 146,\n Martinique = 147,\n Mauritania = 148,\n Montserrat = 149,\n Malta = 150,\n Mauritius = 151,\n Maldives = 152,\n Malawi = 153,\n Mexico = 154,\n Malaysia = 155,\n Mozambique = 156,\n Namibia = 157,\n NewCaledonia = 158,\n Niger = 159,\n NorfolkIsland = 160,\n Nigeria = 161,\n Nicaragua = 162,\n Netherlands = 163,\n Norway = 164,\n Nepal = 165,\n Nauru = 166,\n Niue = 167,\n NewZealand = 168,\n Oman = 169,\n Panama = 170,\n Peru = 171,\n FrenchPolynesia = 172,\n PapuaNewGuinea = 173,\n Philippines = 174,\n Pakistan = 175,\n Poland = 176,\n SaintPierreAndMiquelon = 177,\n Pitcairn = 178,\n PuertoRico = 179,\n PalestinianTerritory = 180,\n Portugal = 181,\n Palau = 182,\n Paraguay = 183,\n Qatar = 184,\n Reunion = 185,\n Romania = 186,\n Serbia = 187,\n RussianFederation = 188,\n Rwanda = 189,\n SaudiArabia = 190,\n SolomonIslands = 191,\n Seychelles = 192,\n Sudan = 193,\n Sweden = 194,\n Singapore = 195,\n SaintHelena = 196,\n Slovenia = 197,\n SvalbardAndJanMayen = 198,\n Slovakia = 199,\n SierraLeone = 200,\n SanMarino = 201,\n Senegal = 202,\n Somalia = 203,\n Suriname = 204,\n SaoTomeAndPrincipe = 205,\n ElSalvador = 206,\n SyrianArabRepublic = 207,\n Swaziland = 208,\n TurksAndCaicosIslands = 209,\n Chad = 210,\n FrenchSouthernTerritories = 211,\n Togo = 212,\n Thailand = 213,\n Tajikistan = 214,\n Tokelau = 215,\n TimorLeste = 216,\n Turkmenistan = 217,\n Tunisia = 218,\n Tonga = 219,\n Turkey = 220,\n TrinidadAndTobago = 221,\n Tuvalu = 222,\n Taiwan = 223,\n Tanzania = 224,\n Ukraine = 225,\n Uganda = 226,\n UnitedStatesMinorOutlyingIslands = 227,\n UnitedStates = 228,\n Uruguay = 229,\n Uzbekistan = 230,\n VaticanCityState = 231,\n SaintVincentAndTheGrenadines = 232,\n Venezuela = 233,\n VirginIslandsBritish = 234,\n VirginIslandsUS = 235,\n VietNam = 236,\n Vanuatu = 237,\n WallisAndFutuna = 238,\n Samoa = 239,\n Yemen = 240,\n Mayotte = 241,\n SouthAfrica = 242,\n Zambia = 243,\n Zimbabwe = 244,\n}\n\nexport enum CountryCode {\n Andorra = \"ad\",\n UnitedArabEmirates = \"ae\",\n Afghanistan = \"af\",\n AntiguaAndBarbuda = \"ag\",\n Anguilla = \"ai\",\n Albania = \"al\",\n Armenia = \"am\",\n NetherlandsAntilles = \"an\",\n Angola = \"ao\",\n Antarctica = \"aq\",\n Argentina = \"ar\",\n AmericanSamoa = \"as\",\n Austria = \"at\",\n Australia = \"au\",\n Aruba = \"aw\",\n AlandIslands = \"ax\",\n Azerbaijan = \"az\",\n BosniaAndHerzegovina = \"ba\",\n Barbados = \"bb\",\n Bangladesh = \"bd\",\n Belgium = \"be\",\n BurkinaFaso = \"bf\",\n Bulgaria = \"bg\",\n Bahrain = \"bh\",\n Burundi = \"bi\",\n Benin = \"bj\",\n Bermuda = \"bm\",\n BruneiDarussalam = \"bn\",\n Bolivia = \"bo\",\n Brazil = \"br\",\n Bahamas = \"bs\",\n Bhutan = \"bt\",\n BouvetIsland = \"bv\",\n Botswana = \"bw\",\n Belarus = \"by\",\n Belize = \"bz\",\n Canada = \"ca\",\n CocosKeelingIslands = \"cc\",\n CongoKinshasa = \"cd\",\n CentralAfricanRepublic = \"cf\",\n CongoBrazzaville = \"cg\",\n Switzerland = \"ch\",\n CoteDIvoire = \"ci\",\n CookIslands = \"ck\",\n Chile = \"cl\",\n Cameroon = \"cm\",\n China = \"cn\",\n Colombia = \"co\",\n CostaRica = \"cr\",\n Cuba = \"cu\",\n CapeVerde = \"cv\",\n ChristmasIsland = \"cx\",\n Cyprus = \"cy\",\n CzechRepublic = \"cz\",\n Germany = \"de\",\n Djibouti = \"dj\",\n Denmark = \"dk\",\n Dominica = \"dm\",\n DominicanRepublic = \"do\",\n Algeria = \"dz\",\n Ecuador = \"ec\",\n Estonia = \"ee\",\n Egypt = \"eg\",\n WesternSahara = \"eh\",\n Eritrea = \"er\",\n Spain = \"es\",\n Ethiopia = \"et\",\n Finland = \"fi\",\n Fiji = \"fj\",\n FalklandIslands = \"fk\",\n Micronesia = \"fm\",\n FaroeIslands = \"fo\",\n France = \"fr\",\n Gabon = \"ga\",\n UnitedKingdom = \"gb\",\n Grenada = \"gd\",\n Georgia = \"ge\",\n FrenchGuiana = \"gf\",\n Guernsey = \"gg\",\n Ghana = \"gh\",\n Gibraltar = \"gi\",\n Greenland = \"gl\",\n Gambia = \"gm\",\n Guinea = \"gn\",\n Guadeloupe = \"gp\",\n EquatorialGuinea = \"gq\",\n Greece = \"gr\",\n SouthGeorgiaAndTheSouthSandwichIslands = \"gs\",\n Guatemala = \"gt\",\n Guam = \"gu\",\n GuineaBissau = \"gw\",\n Guyana = \"gy\",\n HongKong = \"hk\",\n HeardIslandAndMcDonaldIslands = \"hm\",\n Honduras = \"hn\",\n Croatia = \"hr\",\n Haiti = \"ht\",\n Hungary = \"hu\",\n Indonesia = \"id\",\n Ireland = \"ie\",\n Israel = \"il\",\n IsleOfMan = \"im\",\n India = \"in\",\n BritishIndianOceanTerritory = \"io\",\n Iraq = \"iq\",\n Iran = \"ir\",\n Iceland = \"is\",\n Italy = \"it\",\n Jersey = \"je\",\n Jamaica = \"jm\",\n Jordan = \"jo\",\n Japan = \"jp\",\n Kenya = \"ke\",\n Kyrgyzstan = \"kg\",\n Cambodia = \"kh\",\n Kiribati = \"ki\",\n Comoros = \"km\",\n SaintKittsAndNevis = \"kn\",\n NorthKorea = \"kp\",\n SouthKorea = \"kr\",\n Kuwait = \"kw\",\n CaymanIslands = \"ky\",\n Kazakhstan = \"kz\",\n Laos = \"la\",\n Lebanon = \"lb\",\n SaintLucia = \"lc\",\n Liechtenstein = \"li\",\n SriLanka = \"lk\",\n Liberia = \"lr\",\n Lesotho = \"ls\",\n Lithuania = \"lt\",\n Luxembourg = \"lu\",\n Latvia = \"lv\",\n LibyanArabJamahiriya = \"ly\",\n Morocco = \"ma\",\n Monaco = \"mc\",\n Moldova = \"md\",\n Montenegro = \"me\",\n Madagascar = \"mg\",\n MarshallIslands = \"mh\",\n Macedonia = \"mk\",\n Mali = \"ml\",\n Myanmar = \"mm\",\n Mongolia = \"mn\",\n Macao = \"mo\",\n NorthernMarianaIslands = \"mp\",\n Martinique = \"mq\",\n Mauritania = \"mr\",\n Montserrat = \"ms\",\n Malta = \"mt\",\n Mauritius = \"mu\",\n Maldives = \"mv\",\n Malawi = \"mw\",\n Mexico = \"mx\",\n Malaysia = \"my\",\n Mozambique = \"mz\",\n Namibia = \"na\",\n NewCaledonia = \"nc\",\n Niger = \"ne\",\n NorfolkIsland = \"nf\",\n Nigeria = \"ng\",\n Nicaragua = \"ni\",\n Netherlands = \"nl\",\n Norway = \"no\",\n Nepal = \"np\",\n Nauru = \"nr\",\n Niue = \"nu\",\n NewZealand = \"nz\",\n Oman = \"om\",\n Panama = \"pa\",\n Peru = \"pe\",\n FrenchPolynesia = \"pf\",\n PapuaNewGuinea = \"pg\",\n Philippines = \"ph\",\n Pakistan = \"pk\",\n Poland = \"pl\",\n SaintPierreAndMiquelon = \"pm\",\n Pitcairn = \"pn\",\n PuertoRico = \"pr\",\n PalestinianTerritory = \"ps\",\n Portugal = \"pt\",\n Palau = \"pw\",\n Paraguay = \"py\",\n Qatar = \"qa\",\n Reunion = \"re\",\n Romania = \"ro\",\n Serbia = \"rs\",\n RussianFederation = \"ru\",\n Rwanda = \"rw\",\n SaudiArabia = \"sa\",\n SolomonIslands = \"sb\",\n Seychelles = \"sc\",\n Sudan = \"sd\",\n Sweden = \"se\",\n Singapore = \"sg\",\n SaintHelena = \"sh\",\n Slovenia = \"si\",\n SvalbardAndJanMayen = \"sj\",\n Slovakia = \"sk\",\n SierraLeone = \"sl\",\n SanMarino = \"sm\",\n Senegal = \"sn\",\n Somalia = \"so\",\n Suriname = \"sr\",\n SaoTomeAndPrincipe = \"st\",\n ElSalvador = \"sv\",\n SyrianArabRepublic = \"sy\",\n Swaziland = \"sz\",\n TurksAndCaicosIslands = \"tc\",\n Chad = \"td\",\n FrenchSouthernTerritories = \"tf\",\n Togo = \"tg\",\n Thailand = \"th\",\n Tajikistan = \"tj\",\n Tokelau = \"tk\",\n TimorLeste = \"tl\",\n Turkmenistan = \"tm\",\n Tunisia = \"tn\",\n Tonga = \"to\",\n Turkey = \"tr\",\n TrinidadAndTobago = \"tt\",\n Tuvalu = \"tv\",\n Taiwan = \"tw\",\n Tanzania = \"tz\",\n Ukraine = \"ua\",\n Uganda = \"ug\",\n UnitedStatesMinorOutlyingIslands = \"um\",\n UnitedStates = \"us\",\n Uruguay = \"uy\",\n Uzbekistan = \"uz\",\n VaticanCityState = \"va\",\n SaintVincentAndTheGrenadines = \"vc\",\n Venezuela = \"ve\",\n VirginIslandsBritish = \"vg\",\n VirginIslandsUS = \"vi\",\n VietNam = \"vn\",\n Vanuatu = \"vu\",\n WallisAndFutuna = \"wf\",\n Samoa = \"ws\",\n Yemen = \"ye\",\n Mayotte = \"yt\",\n SouthAfrica = \"za\",\n Zambia = \"zm\",\n Zimbabwe = \"zw\",\n}\n\nexport enum Region {\n Apac = \"apac\",\n Emea = \"emea\",\n Us = \"us\",\n Latam = \"latam\",\n Na = \"na\",\n}\n\nexport enum CameraRegion {\n APAC = \"apac\",\n AU = \"au\",\n EU = \"eu\",\n UK = \"uk\",\n IE = \"ie\",\n US = \"us\",\n}\n","import { Connector } from \"./connector\"\n\nexport enum AutomationProvider {\n Aconex = Connector.Aconex,\n Procore = Connector.Procore,\n Autodesk = Connector.Autodesk,\n Email = \"email\",\n}\n","import { ErrorType } from \"@evercam/api/types\"\n\nconst createErrorClass = (errorName: string) => {\n return class extends Error {\n constructor(error: unknown) {\n const e =\n error instanceof Error\n ? error\n : new Error(typeof error === \"string\" ? error : \"unknown\")\n super(e.message)\n this.name = errorName\n this.message = e.message\n this.stack = (e.stack || \"\").replace(/^Error: /, `${errorName}: `)\n }\n }\n}\n\nexport const BadRequestError = createErrorClass(ErrorType.BadRequestError)\nexport const NotFoundError = createErrorClass(ErrorType.NotFoundError)\nexport const UnauthorizedError = createErrorClass(ErrorType.UnauthorizedError)\nexport const GatewayTimeoutError = createErrorClass(\n ErrorType.GatewayTimeoutError\n)\nexport const BadGatewayError = createErrorClass(ErrorType.BadGatewayError)\nexport const ForbiddenError = createErrorClass(ErrorType.ForbiddenError)\nexport const HlsError = createErrorClass(ErrorType.HlsError)\nexport const SnapshotError = createErrorClass(ErrorType.SnapshotError)\nexport const ConflictError = createErrorClass(ErrorType.ConflictError)\nexport const InternalServerError = createErrorClass(\n ErrorType.InternalServerError\n)\n","import { camelizeKeys, decamelize, decamelizeKeys } from \"humps\"\nimport Axios, {\n type AxiosError,\n type AxiosRequestConfig,\n type AxiosResponse,\n} from \"axios\"\nimport type { AxiosEnvironment } from \"../../types\"\nimport {\n NotFoundError,\n BadRequestError,\n UnauthorizedError,\n BadGatewayError,\n GatewayTimeoutError,\n ForbiddenError,\n InternalServerError,\n ConflictError,\n} from \"./customErrors\"\nimport axios from \"axios\"\n\nlet numberOfRequestsSentInThePastSecond = 0\nconst maxRequestsPerSecond = 10\nconst requestsRateLimit = async () => {\n while (numberOfRequestsSentInThePastSecond === maxRequestsPerSecond) {\n await new Promise((r) => setTimeout(r, 1000))\n }\n numberOfRequestsSentInThePastSecond++\n\n setTimeout(() => {\n numberOfRequestsSentInThePastSecond--\n }, 1000)\n}\n\nexport const onRequest = async (\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) => {\n if (request?.raw) {\n return request\n }\n\n if (request?.timing) {\n request._metadata = { startTime: performance.now() }\n }\n await requestsRateLimit()\n ensureBaseUrl(request, axiosEnv)\n addAuthTokenHeader(request, axiosEnv)\n if (\n axiosEnv.app === \"dashboard\" &&\n typeof document.referrer === \"string\" &&\n document.referrer.length !== 0\n ) {\n // @ts-expect-error - common type string | number | undefined\n request.headers.common[\"iframe-origin\"] = new URL(document.referrer).origin\n }\n\n if (!request.preserveCasing) {\n transformCamelCaseToSnakeCase(request)\n }\n\n return request\n}\n\nexport const onResponse = (response: AxiosResponse) => {\n if (response?.config?.raw) {\n return response\n }\n\n if (!(\"data\" in response)) {\n return response\n } else if (response.data instanceof Blob) {\n return response.data\n }\n\n const data = response?.config?.preserveCasing\n ? response.data\n : camelizeKeys(response.data)\n\n if (response?.config?.timing && response?.config?._metadata?.startTime) {\n const duration = performance.now() - response.config._metadata.startTime\n\n return {\n ...response,\n data: data,\n duration,\n }\n }\n\n return data\n}\n\nexport const onError = async (\n error: AxiosError,\n axiosEnv: AxiosEnvironment\n) => {\n if (error?.config?.timing && error?.config?._metadata?.startTime) {\n const duration = performance.now() - error.config._metadata.startTime\n\n return { error, duration }\n }\n const statusCode = error.response ? error.response.status : null\n const method = (error.config?.method || \"\").toUpperCase()\n const url = error.config?.url\n // @ts-expect-error - AxiosError has no response property\n const backendErrorCode = error?.response?.data?.code || \"\"\n\n let customError = {}\n let customMessage = error.message\n\n if (url && method && statusCode) {\n customMessage =\n `${method} ${url} (${statusCode}) ${backendErrorCode}`.trim()\n }\n switch (statusCode) {\n case 400:\n customError = new BadRequestError(new Error(customMessage))\n break\n case 401:\n customError = new UnauthorizedError(new Error(customMessage))\n break\n case 403:\n customError = new ForbiddenError(new Error(customMessage))\n break\n case 404:\n customError = new NotFoundError(new Error(customMessage))\n break\n case 409:\n customError = new ConflictError(new Error(customMessage))\n break\n case 500:\n customError = new InternalServerError(new Error(customMessage))\n break\n case 502:\n customError = new BadGatewayError(new Error(customMessage))\n break\n case 504:\n customError = new GatewayTimeoutError(new Error(customMessage))\n break\n case null: // null case\n case 0: // 0 case occurred when user has no internet connection\n customError = new Error(\n \"A network error occurred. This could be a CORS issue, a cancel request or a dropped internet connection.\"\n )\n break\n }\n const isCancelError = Axios.isCancel(error)\n\n if (isCancelError || statusCode === 404) {\n return Promise.reject(customError)\n }\n\n console.warn(\"[@evercam/api/axios.ts]: Caught error:\", error)\n\n const breadcrumbLogger = axiosEnv.errorLogger\n if (url && breadcrumbLogger) {\n breadcrumbLogger({\n // @ts-expect-error axios issue\n category: \"axios.info\",\n data: {\n url: `Error in URL: ${url}`,\n status: statusCode,\n },\n })\n }\n\n return Promise.reject(customError)\n}\n\nfunction addAuthTokenHeader(\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) {\n // Add auth token header\n const JwtToken = axiosEnv?.getAuthToken!()\n if (JwtToken) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore (See https://github.com/axios/axios/issues/4193 )\n request.headers.common.Authorization = `Bearer ${JwtToken}`\n }\n}\n\nfunction ensureBaseUrl(\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) {\n // Set baseURL if not already set\n if (!request.baseURL) {\n request.baseURL = axiosEnv?.baseUrl as string\n }\n}\n\nfunction transformCamelCaseToSnakeCase(\n request: AxiosRequestConfig<Record<string, any>>\n) {\n let paramsIgnoredCasing = {}\n let { data, params } = request\n\n if (\n data &&\n !(\n data instanceof Blob ||\n data instanceof FormData ||\n typeof data === \"string\"\n )\n ) {\n // Ignore casing transformation for some params when prompted using the `ignoreCasingFromParams` prop\n if (data?.ignoreCasingFromParams) {\n paramsIgnoredCasing =\n data.ignoreCasingFromParams.reduce(\n (acc: Record<string, any>, item: any) => ({\n ...acc,\n [item]: data![item],\n }),\n {}\n ) || {}\n delete data.ignoreCasingFromParams\n }\n if (Array.isArray(data)) {\n data = decamelizeKeys(data)\n } else {\n data = { ...decamelizeKeys(data), ...paramsIgnoredCasing }\n }\n }\n\n // Apply camelCase -> snake_cake on the request payload for FormData of instance of data\n if (data && data instanceof FormData) {\n let formData = new FormData()\n // @ts-ignore\n for (const [key, value] of data.entries()) {\n formData.append(decamelize(key), value)\n }\n data = formData\n }\n\n // Apply camelCase -> snake_cake on the request query params\n if (params && !(params instanceof Blob)) {\n params = decamelizeKeys(params)\n }\n\n request.data = data\n request.params = params\n}\n\nexport const OnRequestExpiredTokenInterceptor = async (\n request: AxiosRequestConfig,\n isTokenExpired: () => boolean,\n handler: () => Promise<void>\n) => {\n if (isTokenExpired()) {\n await handler()\n throw new axios.Cancel(\"Request canceled due to expired token\")\n }\n\n return request\n}\n","import Axios, { type CancelTokenSource } from \"axios\"\nimport type {\n ErrorInterceptor,\n ExtendedAxiosInstance,\n RequestInterceptor,\n ResponseInterceptor,\n} from \"@/types\"\nimport { onRequest, onResponse, onError } from \"./interceptors\"\n\nlet requestInterceptors: RequestInterceptor[] = []\nlet responseInterceptors: ResponseInterceptor[] = []\nlet errorInterceptors: ErrorInterceptor[] = []\n\ndeclare module \"axios\" {\n export interface AxiosRequestConfig {\n // Skip all request / response interceptors\n raw?: boolean\n\n // Skip the camelCase / snake_case transformations\n preserveCasing?: boolean\n\n // Measure the request duration (adds a field \"duration\" to the response)\n timing?: boolean\n\n // (readonly) Start time of the request (automatically set when timing == true)\n _metadata?: { startTime: number }\n }\n}\n\nconst axios = Axios.create({\n headers: {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore (See: https://github.com/axios/axios/issues/4193 )\n common: {\n Accept: \"application/json, text/plain, */*\",\n \"Content-Type\": \"application/json\",\n },\n },\n}) as ExtendedAxiosInstance\n\naxios.env = {}\n\naxios.addEnvironmentVariables = (vars: Record<string, any>) => {\n axios.env = { ...axios.env, ...vars }\n // log a warning if some values are null, undefined or no length only if localhost\n Object.entries(axios.env).forEach(([key, value]) => {\n if (\n (value === null ||\n value === undefined ||\n (typeof value === \"string\" && !value.length)) &&\n window.location.hostname.includes(\"localhost\")\n ) {\n console.warn(\n `AXIOS environment value for ${key} is ${value} - check your .env file.`\n )\n }\n })\n}\n\naxios.addRequestInterceptor = (\n requestInterceptor: RequestInterceptor,\n errorInterceptor?: ErrorInterceptor\n) => {\n requestInterceptors.push(requestInterceptor)\n if (errorInterceptor && !errorInterceptors.includes(errorInterceptor)) {\n errorInterceptors.push(errorInterceptor)\n }\n\n // Ensure we only set up the interceptors once to prevent duplicate calls\n // @ts-expect-error\n if (axios.interceptors.request.handlers.length === 0) {\n axios.interceptors.request.use(\n async (request) => {\n for (const interceptor of requestInterceptors) {\n request = await interceptor(request, axios.env)\n }\n\n return request\n },\n (error) => {\n for (const interceptor of errorInterceptors) {\n interceptor(error, axios.env)\n }\n }\n )\n }\n}\n\naxios.addResponseInterceptor = (\n responseInterceptor,\n errorInterceptor?: ErrorInterceptor\n) => {\n responseInterceptors.push(responseInterceptor)\n if (errorInterceptor && !errorInterceptors.includes(errorInterceptor)) {\n errorInterceptors.push(errorInterceptor)\n }\n\n // Ensure we only set up the interceptors once to prevent duplicate calls\n // @ts-expect-error\n if (axios.interceptors.response.handlers.length === 0) {\n axios.interceptors.response.use(\n async (response) => {\n for (const interceptor of responseInterceptors) {\n response = await interceptor(response, axios.env)\n }\n\n return response\n },\n (error) => {\n for (const interceptor of errorInterceptors) {\n interceptor(error, axios.env)\n }\n\n return Promise.reject(error)\n }\n )\n }\n}\n\n// Adds auth guards and applies cameraCase -> snake_case transforms on request payload & params\naxios.addRequestInterceptor(onRequest, onError)\n\n// Apply snake_case -> camelCase on incoming responses data\naxios.addResponseInterceptor(onResponse, onError)\n\nconst setHeader = (headerName: string, value: any) => {\n if (!value) {\n delete axios.defaults.headers.common[headerName]\n } else {\n axios.defaults.headers.common[headerName] = value\n }\n}\n\nconst setToken = (token: string) => {\n setHeader(\"Authorization\", token ? `Bearer ${token}` : null)\n}\n\naxios.CancelToken = Axios.CancelToken\naxios.isCancel = Axios.isCancel\naxios.setHeader = setHeader\naxios.setToken = setToken\n\nlet cancelTokens: CancelTokenSource[] = []\n\naxios.generateCancelTokenSource = () => axios.CancelToken.source()\naxios.addCancelToken = (token: CancelTokenSource) =>\n (cancelTokens = [token, ...cancelTokens])\naxios.resetCancelTokens = () => (cancelTokens = [])\naxios.cancelRequests = () => {\n if (cancelTokens.length) {\n cancelTokens.forEach((t) => {\n t.cancel(\"Operation canceled due to new request\")\n })\n axios.resetCancelTokens()\n }\n}\n\nexport { axios }\n","import { axios } from \"./client\"\nimport type {\n CamerasResponsePayload,\n CameraUpdateRequestPayload,\n PaginatedItems,\n AdminCamera,\n Project,\n Hdd,\n AdminUser,\n ProgressPhotosCreateUpdateRequestPayload,\n ProgressPhoto,\n Kit,\n PatchPayload,\n StorageServersResponsePayload,\n MediaFilterQueryParams,\n Media,\n MediaDeleteRequestPayload,\n AuditLogsParams,\n AuditLog,\n SnapshotExtractionQyeryParams,\n SnapshotExtraction,\n CameraCreateRequestPayload,\n CameraDeletePayload,\n SnapshotTestPayload,\n SnapshotTestResponse,\n DuplicatedCameraFields,\n DuplicatedCameraResponse,\n MergeDuplicatedCameraPayload,\n FetchCameraQueryParams,\n DeleteSnapshotQueryParams,\n SaveNotePayload,\n CameraNote,\n CreateCameraNotePayload,\n CompanyQueryParams,\n Company,\n CompanyUpdatePayload,\n SuppressionsQueryParams,\n Suppression,\n SnapshotExtractionType,\n PaginationParams,\n GateReportProject,\n KitQueryParams,\n KitCreatePayload,\n AdminKit,\n CameraLogsQueryParams,\n CameraLog,\n CameraAuditLogsQueryParams,\n CameraAuditLog,\n NvrQueryParams,\n Nvr,\n SiteVisitCamerasQueryParams,\n OfflineCameraQueryParams,\n OfflineCamera,\n OfflineCameraNoteResponse,\n UserStatsResponse,\n EntityStatsQueryParams,\n EntityStat,\n UserSession,\n UserCameraResponse,\n UserProjectResponse,\n ProjectUsers,\n ProjectCamera,\n ProjectsQueryParams,\n ProjectStatusStats,\n ProjectCreateRequestPayload,\n ProjectCreateResponse,\n ProjectUpdateRequestPayload,\n RouterQueryParams,\n Router,\n RouterCreatePayload,\n GlobalSearchQueryParams,\n CameraShareRequestsQueryParams,\n CameraShareRequest,\n CameraShareRequestPayload,\n ShareCreateResponsePayload,\n ShareQueryParams,\n AdminShare,\n SimCreateUpdatePayload,\n SimsQueryParams,\n Sim,\n SendSmsPayload,\n SendSmsResponse,\n SmsHistoryResponse,\n SmsQueryParams,\n Sms,\n ProgressPhotosQueryParams,\n ProgressPhotoItem,\n progressPhotosHistoryQueryParams,\n ProgressPhotosHistory,\n AdminUserUpdateRequestPayload,\n AdminQueryParams,\n Admin,\n ImpersonateUserResponse,\n AdminUserQueryParams,\n AdminCompareQueryParams,\n AdminCompare,\n NvrCreatePayload,\n} from \"@evercam/api/types\"\n\nimport { KitMetricId } from \"@evercam/api/types\"\n\nexport const AdminApi = {\n mediaHub: {\n getAllMedia(params: {\n params: Partial<MediaFilterQueryParams>\n }): Promise<PaginatedItems<Media>> {\n return axios.get(\"/admin/media-hub\", params)\n },\n deleteMedia(params: Partial<MediaDeleteRequestPayload>): Promise<void> {\n return axios.delete(\"/admin/media-hub\", { params })\n },\n },\n auditLogs: {\n getAuditLogs(params: {\n params: Partial<AuditLogsParams>\n }): Promise<PaginatedItems<AuditLog>[]> {\n return axios.get(\"/admin/audit-logs\", params)\n },\n },\n cameras: {\n getCamerasStats(params: {\n params: {\n email?: string\n }\n }): Promise<CamerasResponsePayload> {\n return axios.get(\"/admin/cameras/status-stats\", params)\n },\n rebootCamera(cameraId: string): Promise<{ message: string }> {\n return axios.post(`/admin/devices/camera/${cameraId}/reboot`)\n },\n focusCamera(\n cameraId: string,\n device: string\n ): Promise<{ message: string }> {\n return axios.post(`/admin/devices/${device}/${cameraId}/focus`)\n },\n getStorageServers(): Promise<StorageServersResponsePayload> {\n return axios.get(\"/admin/storage/servers\")\n },\n getStorageDetails() {\n return axios.get(\"/admin/storage\")\n },\n getSnapshotExtractions(params: {\n params: Partial<SnapshotExtractionQyeryParams>\n }): Promise<PaginatedItems<SnapshotExtraction>> {\n return axios.get(\"/admin/snapshot-extractions\", params)\n },\n createCameras(\n payload: CameraCreateRequestPayload\n ): Promise<{ cameras: [AdminCamera] }> {\n return axios.post(\"/admin/cameras\", payload)\n },\n deleteCamera(exid: string, payload: CameraDeletePayload): Promise<void> {\n return axios.post(`/admin/cameras/${exid}/delete`, payload)\n },\n testSnapshot(payload: SnapshotTestPayload): Promise<SnapshotTestResponse> {\n return axios.post(\"/admin/cameras/test-snapshot\", payload)\n },\n getDuplicateCameras(params: {\n params: {\n fields?: DuplicatedCameraFields[]\n sort?: string\n }\n }): Promise<PaginatedItems<DuplicatedCameraResponse>> {\n return axios.get(\"/admin/duplicate-cameras\", params)\n },\n mergeDuplicateCameras(\n payload: MergeDuplicatedCameraPayload\n ): Promise<{ success: boolean }> {\n return axios.post(\"/admin/merge-cameras\", payload)\n },\n getCameras(params: {\n params: Partial<FetchCameraQueryParams>\n }): Promise<PaginatedItems<AdminCamera>> {\n return axios.get(\"/admin/cameras\", params)\n },\n getCompares(params: {\n params: AdminCompareQueryParams\n }): Promise<PaginatedItems<AdminCompare[]>> {\n return axios.get(\"/admin/compares\", params)\n },\n getCameraDetails(exid: string): Promise<AdminCamera> {\n return axios.get(`/admin/cameras/${exid}`)\n },\n deleteSnapshots(\n cameraId: string,\n params: DeleteSnapshotQueryParams\n ): Promise<void> {\n return axios.delete(`admin/cameras/${cameraId}/snapshots`, {\n params,\n })\n },\n refreshDeviceSettings(cameraId: string): Promise<void> {\n return axios.post(\n `/admin/cameras/${cameraId}/device-settings/refresh`,\n {}\n )\n },\n // (Azhar) Old save note code will be remove once we migrate all old saved camera notes\n saveNote(cameraId: string, params: SaveNotePayload): Promise<CameraNote> {\n return axios.post(`/admin/cameras/${cameraId}/save-note`, params)\n },\n saveCameraNote(\n cameraId: string,\n params: CreateCameraNotePayload\n ): Promise<{ message: string }> {\n return axios.post(`/admin/cameras/${cameraId}/note`, params)\n },\n update(\n cameraId: string,\n params: CameraUpdateRequestPayload\n ): Promise<CamerasResponsePayload> {\n return axios.patch(`/admin/cameras/${cameraId}`, params)\n },\n },\n companies: {\n getCompanies(params: {\n params: Partial<CompanyQueryParams>\n }): Promise<PaginatedItems<Company[]>> {\n return axios.get(\"/admin/companies\", params)\n },\n updateCompany(\n id: string,\n params: CompanyUpdatePayload\n ): Promise<Omit<CompanyUpdatePayload, \"linkedinUrl\">> {\n return axios.patch(`/admin/companies/${id}`, params)\n },\n deleteCompany(params: {\n ids: string | string[]\n }): Promise<{ success: true }> {\n return axios.delete(\"/admin/companies\", { params })\n },\n reSyncCompanies(params: {\n companyIds: string[]\n }): Promise<{ success: true }> {\n return axios.post(\"/admin/companies/resync\", params)\n },\n },\n emailing: {\n performEmailing(template: string, params: Record<string, unknown>) {\n return axios.post(`/admin/mailing/${template}`, params)\n },\n suppressions(params: {\n params: SuppressionsQueryParams\n }): Promise<PaginatedItems<Suppression[]>> {\n return axios.get(\"/admin/mailing/suppressions\", params)\n },\n deleteSuppression(id: number): Promise<void> {\n return axios.delete(`/admin/mailing/suppressions/${id}`)\n },\n },\n extractions: {\n updateCloudRecordings(cameraId: string, params: Record<string, unknown>) {\n return axios.post(`/admin/cameras/${cameraId}/cloud-recordings`, params)\n },\n addExtraction(\n cameraId: string,\n params: SnapshotExtractionQyeryParams\n ): Promise<PaginatedItems<SnapshotExtraction>> {\n return axios.post(`admin/cameras/${cameraId}/extractions`, params)\n },\n getExtractionStatus(\n cameraId: string,\n extractionId: number,\n params: {\n type: SnapshotExtractionType\n }\n ): Promise<{ status: string; jpegs: number }> {\n return axios.get(\n `admin/cameras/${cameraId}/extractions/${extractionId}`,\n {\n params,\n }\n )\n },\n deleteSnapshotExtraction(\n cameraId: string,\n extractionId: number,\n params: {\n type: SnapshotExtractionType\n }\n ): Promise<void> {\n return axios.delete(\n `admin/cameras/${cameraId}/extractions/${extractionId}`,\n {\n params,\n }\n )\n },\n },\n gateReport: {\n getGateReportProjects(params: {\n params: PaginationParams\n }): Promise<PaginatedItems<GateReportProject[]>> {\n return axios.get(\"/admin/gate-report\", params)\n },\n getGateReportProject(projectExid: string): Promise<Project> {\n return axios.get(`/admin/projects/${projectExid}`)\n },\n },\n kits: {\n getAllKits(params: {\n params: KitQueryParams\n }): Promise<PaginatedItems<Kit[]>> {\n return axios.get(\"/admin/kits\", params)\n },\n async getKit(kitId: number): Promise<Kit> {\n return axios.get(`/admin/kits/${kitId}`)\n },\n createKit(params: KitCreatePayload): Promise<AdminKit> {\n return axios.post(\"/admin/kits\", params)\n },\n updateKit(id: string, params: PatchPayload<Kit>) {\n return axios.patch(`/admin/kits/${id}`, params)\n },\n deleteKit(id: string, params: Record<string, unknown>) {\n return axios.delete(`/admin/kits/${id}`, { params })\n },\n getKitStats({\n kitId,\n metric,\n fromDate,\n toDate,\n }: {\n kitId: number\n metric: KitMetricId\n fromDate: string\n toDate: string\n }) {\n return axios.get(`/admin/kits/${kitId}/stats/${metric}`, {\n params: {\n fromDate,\n toDate,\n },\n })\n },\n },\n logs: {\n getAllCamerasStatusLogs(params: {\n params: CameraLogsQueryParams\n }): Promise<{ data: CameraLog[] }> {\n return axios.get(\"/admin/cameras-logs\", params)\n },\n getCameraLogs(\n cameraId: string,\n payload: {\n params: CameraAuditLogsQueryParams\n }\n ): Promise<PaginatedItems<CameraAuditLog[]>> {\n return axios.get(`/admin/cameras/${cameraId}/audit-logs`, payload)\n },\n },\n nvrs: {\n getNvrs(params: {\n params: NvrQueryParams\n }): Promise<PaginatedItems<Nvr[]>> {\n return axios.get(\"/admin/nvrs\", params)\n },\n createNvr(params: NvrCreatePayload) {\n return axios.post(\"/admin/nvrs\", params)\n },\n updateNvr(id: string, params: PatchPayload<Nvr>) {\n return axios.patch(`/admin/nvrs/${id}`, params)\n },\n rebootNVR(cameraId: string): Promise<{ message: string }> {\n return axios.post(`/admin/devices/nvr/${cameraId}/reboot`)\n },\n },\n offlineCameras: {\n getSiteVisitCameras(params: {\n params: Partial<SiteVisitCamerasQueryParams>\n }): Promise<PaginatedItems<AdminCamera>> {\n return axios.get(\"/admin/site-visit-cameras\", params)\n },\n getOfflineCameras(params: {\n params: Partial<OfflineCameraQueryParams>\n }): Promise<PaginatedItems<OfflineCamera>> {\n return axios.get(\"/admin/offline-cameras\", params)\n },\n getOfflineCamerasLastNote(params: {\n cameraIds: number[]\n }): Promise<OfflineCameraNoteResponse> {\n return axios.get(\"/admin/offline-cameras/notes\", { params: params })\n },\n },\n pa: {\n getPAUser(\n id: number,\n params: Record<string, unknown>\n ): Promise<UserStatsResponse> {\n return axios.get(\n `/admin/users/${id}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getPAProjectPeriodEvents(\n id: string | number,\n payload: EntityStatsQueryParams\n ): Promise<EntityStat[]> {\n return axios.get(`/admin/projects/${id}/stats`, { params: payload })\n },\n getPAUserEvents(id: string | number): Promise<UserSession[]> {\n return axios.get(`/admin/users/${id}/events`)\n },\n getPAUserCameras(id: number): Promise<UserCameraResponse> {\n return axios.get(`/admin/users/${id}/cameras`)\n },\n getPAUserProjects(id: number): Promise<UserProjectResponse> {\n return axios.get(`/admin/users/${id}/projects`)\n },\n getPAUserPeriodEvents(\n id: number,\n payload: EntityStatsQueryParams\n ): Promise<EntityStat[]> {\n return axios.get(`/admin/users/${id}/stats`, { params: payload })\n },\n getProjectUsers(id: string): Promise<ProjectUsers> {\n return axios.get(`/admin/projects/${id}/users`)\n },\n getPAProject(\n id: string,\n params: Record<string, unknown>\n ): Promise<{ data: Project }> {\n return axios.get(\n `/admin/projects/${id}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getPAProjectCameras(id: string): Promise<{ data: ProjectCamera[] }> {\n return axios.get(`/admin/projects/${id}/cameras`)\n },\n },\n projects: {\n getAll(params: {\n params: Partial<ProjectsQueryParams>\n }): Promise<PaginatedItems<Project>> {\n return axios.get(\"/admin/projects\", params)\n },\n getProject(exid: string): Promise<Project> {\n return axios.get(`/admin/projects/${exid}`)\n },\n getProjectsStats(): Promise<ProjectStatusStats> {\n return axios.get(\"/admin/projects/status-stats\")\n },\n createProject(\n params: ProjectCreateRequestPayload\n ): Promise<ProjectCreateResponse> {\n return axios.post(\"/admin/projects\", params)\n },\n updateProject(\n projectExid: string,\n params: Partial<ProjectUpdateRequestPayload>\n ): Promise<ProjectCreateResponse> {\n return axios.put(`/admin/projects/${projectExid}`, params)\n },\n deleteProject(projectExid: string): Promise<{ success: boolean }> {\n return axios.delete(`/admin/projects/${projectExid}`)\n },\n addToProject(\n projectExid: string,\n params: { cameraExids: string[] }\n ): Promise<void> {\n return axios.post(`/admin/projects/${projectExid}/add-cameras`, params)\n },\n },\n routers: {\n getRouters(params: {\n params: Partial<RouterQueryParams>\n }): Promise<PaginatedItems<Router[]>> {\n return axios.get(\"/admin/routers\", params)\n },\n getRouterTypes(): Promise<string[]> {\n return axios.get(\"/admin/router-types\")\n },\n createRouter(params: RouterCreatePayload): Promise<{ routerId: number }> {\n return axios.post(\"/admin/routers\", params)\n },\n updateRouter(\n id: number,\n params: RouterCreatePayload\n ): Promise<{ success: boolean }> {\n return axios.patch(`/admin/routers/${id}`, params)\n },\n deleteRouter(id: number): Promise<void> {\n return axios.delete(`/admin/routers/${id}`)\n },\n getRouter(id: number): Promise<Router> {\n return axios.get(`/admin/routers/${id}`)\n },\n },\n search: {\n search(params: {\n params: GlobalSearchQueryParams\n }): Promise<PaginatedItems<Record<string, unknown>>> {\n return axios.get(\"/admin/search\", params)\n },\n },\n hdds: {\n getHdds(payload: { projectId: string; companyId: string }): Promise<Hdd[]> {\n return axios.get(\"/admin/hdds\", { params: payload })\n },\n },\n shareRequests: {\n getShareRequests(params: {\n params: Partial<CameraShareRequestsQueryParams>\n }): Promise<PaginatedItems<CameraShareRequest[]>> {\n return axios.get(\"/admin/camera-share-requests\", params)\n },\n deleteShareRequest(params: {\n ids: number[]\n }): Promise<{ success: boolean }> {\n return axios.delete(\"/admin/camera-share-requests\", { params: params })\n },\n updateShareRequestStatus(params: {\n ids: number[]\n status: string\n }): Promise<{ success: boolean }> {\n return axios.patch(\"/admin/camera-share-requests\", params)\n },\n },\n shares: {\n createShares(\n cameraExid: string,\n payload: CameraShareRequestPayload\n ): Promise<ShareCreateResponsePayload> {\n return axios.post(`/admin/cameras/${cameraExid}/shares`, payload)\n },\n getShares(params: {\n params: Partial<ShareQueryParams>\n }): Promise<PaginatedItems<AdminShare[]>> {\n return axios.get(\"/admin/camera-shares\", params)\n },\n deleteShares(ids: number[]): Promise<void> {\n return axios.delete(\"/admin/camera-shares\", { params: ids })\n },\n },\n sims: {\n deleteSim(simId: number): Promise<{ deleted: boolean }> {\n return axios.delete(`/admin/sims/${simId}`)\n },\n createSim(\n params: Omit<SimCreateUpdatePayload, \"cameraId\">\n ): Promise<{ success: boolean }> {\n return axios.post(\"/admin/sims\", params)\n },\n updateSim(\n simId: number,\n params: CameraShareRequestPayload\n ): Promise<{ success: boolean }> {\n return axios.patch(`/admin/sims/${simId}`, params)\n },\n getSims(params: {\n params: Partial<SimsQueryParams>\n }): Promise<PaginatedItems<Sim[]>> {\n return axios.get(\"/admin/sims\", params)\n },\n getSimProviders() {\n return axios.get(\"/admin/sim-providers\")\n },\n getBillPayers() {\n return axios.get(\"/admin/sims/bill-payers\")\n },\n },\n sms: {\n sendSms(number: string, params: SendSmsPayload): Promise<SendSmsResponse> {\n return axios.post(`/admin/sims/${number}/sms`, params)\n },\n getSimHistory(number: string): Promise<SmsHistoryResponse> {\n return axios.get(`/admin/sims/${number}/sms`)\n },\n getSms(params: {\n params: Partial<SmsQueryParams>\n }): Promise<PaginatedItems<Sms[]>> {\n return axios.get(\"/admin/sms\", params)\n },\n },\n progressPhotos: {\n getProgressPhotos(params: {\n params: Partial<ProgressPhotosQueryParams>\n }): Promise<PaginatedItems<ProgressPhotoItem[]>> {\n return axios.get(\"/admin/progress-photos\", params)\n },\n getProgressPhotosHistory(params: {\n params: Partial<progressPhotosHistoryQueryParams>\n }): Promise<ProgressPhotosHistory> {\n return axios.get(\"/admin/progress-photos/history\", params)\n },\n getProgressPhotoTemplate({\n id,\n }: {\n id: string\n }): Promise<{ progressPhoto: string }> {\n return axios.get(`/admin/progress-photos/history/${id}/email`)\n },\n update(\n id: string,\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<ProgressPhoto> {\n return axios.patch(`/admin/progress-photos/${id}`, payload)\n },\n },\n users: {\n updateUser(\n id: number,\n params: Partial<AdminUserUpdateRequestPayload>\n ): Promise<AdminUser> {\n return axios.put(`/admin/users/${id}`, params)\n },\n getAdmins(params: {\n params: Partial<AdminQueryParams>\n }): Promise<PaginatedItems<Admin[]>> {\n return axios.get(\"/admin\", params)\n },\n deleteAdmin(email: string): Promise<void | { message: string }> {\n return axios.put(`/admin/users/${email}/revoke-admin`)\n },\n makeAdmin(email: string): Promise<void | { message: string }> {\n return axios.put(`/admin/users/${email}/grant-admin`)\n },\n deleteUser(\n email: string,\n params: { verifyEmail: string }\n ): Promise<void | { message: string }> {\n return axios.post(`/users/${email}/delete`, params)\n },\n impersonateUser(email: string): Promise<ImpersonateUserResponse> {\n return axios.post(`/admin/users/${email}/impersonate`)\n },\n getUsers(params: {\n params: Partial<AdminUserQueryParams>\n }): Promise<PaginatedItems<AdminUser>> {\n return axios.get(\"/admin/users\", params)\n },\n getUserPasswordResetLink(\n email: string\n ): Promise<{ passwordResetLink: string }> {\n return axios.post(`/admin/users/${email}/password/reset`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { VideoWallPreset } from \"@evercam/api/types\"\n\nexport const VideoWallApi = {\n presets: {\n getProjectPresets(email: string, projectId: number) {\n const encodedEmail = btoa(email)\n\n return axios.get(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/${projectId}.json`,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n saveProjectPreset(\n email: string,\n projectId: string,\n payload: Record<string, unknown>\n ) {\n const preset = JSON.stringify({ configuration: payload.configuration })\n const presetName = payload.name\n const encodedEmail = btoa(email)\n\n return axios.patch(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/${projectId}/${presetName}.json`,\n preset,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n getGlobalPreset(email: string): Promise<VideoWallPreset> {\n const encodedEmail = btoa(email)\n\n return axios.get(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/global.json`,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n saveGlobalPreset(email: string, payload: VideoWallPreset): Promise<void> {\n const preset = JSON.stringify({ configuration: payload.configuration })\n const encodedEmail = btoa(email)\n\n return axios.patch(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/global.json`,\n preset,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n },\n}\n","import { axios } from \"./client\"\nimport {\n _360ProjectJsonResponse,\n DroneProjectJsonResponse,\n ProjectExid,\n} from \"@evercam/api/types\"\n\nexport const _3dFirebaseApi = {\n drone: {\n getProjectInfo(\n projectExid: ProjectExid\n ): Promise<DroneProjectJsonResponse> {\n return fetch(\n `${axios.env.firebaseDbLink}data/projects/cesium/${projectExid}.json`\n ).then((res) => res.json())\n },\n },\n _360: {\n getProjectInfo(projectExid: ProjectExid): Promise<_360ProjectJsonResponse> {\n return fetch(\n `${axios.env.firebaseDbLink}data/projects/360/${projectExid}.json`\n ).then((res) => res.json())\n },\n },\n}\n","import { decamelizeKeys } from \"humps\"\n\nexport type Falsy = \"\" | null | undefined | false\n\nexport interface QueryParams {\n [k: string]: string | number | boolean | string[] | Falsy\n}\n\nexport const toQueryString = <T extends Record<string, unknown>>(\n paramsObject: T | QueryParams = {},\n { forceSnakeCase = true, forceArrayBrackets = false } = {}\n) => {\n if (Object.keys(paramsObject).length === 0) {\n return\n }\n let params = { ...paramsObject }\n if (forceSnakeCase) {\n params = decamelizeKeys(paramsObject) as QueryParams\n }\n\n return Object.entries(params).reduce((acc, [param, value], index) => {\n let encodedParam = \"\"\n if (\n [\"\", null, undefined]?.includes(value as string | null | undefined) ||\n (Array.isArray(value) && value.length === 0)\n ) {\n return acc\n } else if (value && typeof value === \"object\") {\n encodedParam = Object.entries(value).reduce((_acc, [key, v], i) => {\n let paramName = param\n if (isNaN(Number.parseInt(key))) {\n paramName = `${param}[${key}]`\n } else if (Array.isArray(value) && forceArrayBrackets) {\n paramName = `${param}[]`\n }\n\n return `${_acc}${i > 0 ? \"&\" : \"\"}${paramName}=${encodeURIComponent(v)}`\n }, \"\")\n } else {\n encodedParam = `${param}=${encodeURIComponent(\n value as string | number | boolean\n )}`\n }\n\n return `${acc}${index > 0 ? \"&\" : \"\"}${encodedParam}`\n }, \"\")\n}\n\nexport function queryStringToObject(queryString = \"\"): QueryParams {\n const entries = [\n ...new URLSearchParams(\n queryString.indexOf(\"#\") > -1 ? queryString.split(\"#\")[0] : queryString\n ).entries(),\n ].filter(([, value]) => value)\n\n return entries.reduce<QueryParams>((acc, [key, value]) => {\n const isSingleParam =\n (queryString.match(new RegExp(`${key}=`, \"g\")) || []).length <= 1\n if (isSingleParam) {\n return { ...acc, [key]: value }\n }\n\n if (acc[key]) {\n return {\n ...acc,\n [key]: [...(acc[key] as string[]), value],\n }\n }\n\n return { ...acc, [key]: [value] }\n }, {})\n}\n","import { axios } from \"./client\"\nimport { toQueryString } from \"../utils\"\nimport type {\n AnprQueryParams,\n AnprEvent,\n EventCountRequestPayload,\n EventCountResponsePayload,\n EventsExportRequestParameters,\n EventsRequestPayload,\n EventsResponsePayload,\n GateReportROI,\n PaginatedItems,\n GateReportVerifiedDay,\n ProjectExid,\n CameraExid,\n AnprCountsQueryParams,\n AnprCount,\n AnprBasedGateReportExportRequestParams,\n GateReportResponsePayload,\n GatReportRequestPayload,\n AnalyticsParameters,\n VerifiedDaysQueryParams,\n EventUpdateRequestPayload,\n VerifyDayUpdateRequestPayload,\n ProcessedDaysQueryParams,\n GateReportEventType,\n DateTime,\n RoisQueryParams,\n GateReportROICreateRequestPayload,\n} from \"@evercam/api/types\"\nimport type { AxiosPromise, AxiosRequestConfig } from \"axios\"\nimport { VEHICLE_TYPE_IDS } from \"@evercam/api/types\"\n\nexport const getAiApiUrl = () => {\n if (axios.env.isStaging) {\n return axios.env.stagingAiApiUrl\n }\n\n return axios.env.aiApiUrl\n}\n\nexport const AiApi = {\n analyticsParameters: {\n getParameters(\n cameraId: CameraExid,\n params: Record<string, unknown> = {}\n ): Promise<AnalyticsParameters> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraId}/analytics-parameters`,\n {\n params,\n }\n )\n },\n createParameters(\n params: Omit<AnalyticsParameters, \"id\">\n ): Promise<AnalyticsParameters> {\n return axios.post(`${getAiApiUrl()}/cameras/analytics-parameters`, params)\n },\n updateParameters({\n updatedBy,\n id,\n ...payload\n }: Partial<AnalyticsParameters> & {\n updatedBy: string\n }): Promise<AnalyticsParameters> {\n return axios.patch(\n `${getAiApiUrl()}/cameras/analytics-parameters/${id}?${toQueryString({\n updatedBy,\n })}`,\n payload\n )\n },\n },\n anpr: {\n exportAnprLegacyEvents(projectExid: ProjectExid, params: AnprQueryParams) {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/anpr/export?${toQueryString(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n getAnprEvents(\n projectExid: ProjectExid,\n params: AnprQueryParams\n ): Promise<PaginatedItems<AnprEvent>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr?${toQueryString(params)}`\n )\n },\n getAnprCounts(\n projectExid: ProjectExid,\n payload: AnprCountsQueryParams\n ): Promise<AnprCount[]> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr/counts?${toQueryString(\n payload\n )}`\n )\n },\n updateAnprEvent(anprEventId: string, eventBody: Record<string, unknown>) {\n return axios.patch(`${getAiApiUrl()}/projects/anpr/${anprEventId}`, {\n ...eventBody,\n })\n },\n bulkUpdateAnprRecords(\n anprEventsIds: number[],\n action: \"is_plate\" | \"not_plate\" | \"is_duplicate\" | \"not_duplicate\"\n ) {\n return axios.patch(\n `${getAiApiUrl()}/projects/anpr/update/status?${toQueryString({\n anprEventsIds,\n action,\n })}`\n )\n },\n exportAnprEvents(\n projectExid: string,\n params: AnprBasedGateReportExportRequestParams\n ): AxiosPromise<string> {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/anpr/events/export?${toQueryString<AnprBasedGateReportExportRequestParams>(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n },\n gateReport: {\n getGateReportProjects(params: Record<string, unknown>) {\n return axios.get(\n `${getAiApiUrl()}/projects/gate-report/get-projects-data`,\n params\n )\n },\n getLastVerified(params: Record<string, unknown>) {\n return axios.get(\n `${getAiApiUrl()}/projects/gate-report/last-verified`,\n params\n )\n },\n deleteEvent(id: number, params: Record<string, unknown>) {\n return axios.delete(\n `${getAiApiUrl()}/projects/events/${id}?${toQueryString(params)}`\n )\n },\n dismissEvents(params: Record<string, unknown>) {\n return axios.delete(\n `${getAiApiUrl()}/projects/events?${toQueryString(params)}`\n )\n },\n exportEvents(projectExid: string, params: EventsExportRequestParameters) {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/gate-report/events/export?${toQueryString<EventsExportRequestParameters>(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n exportEventsProgress(projectExid: string, params: { exportDate: string }) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/events/export/progress?${toQueryString(\n params\n )}`\n )\n },\n getAllEvents(\n projectExid: ProjectExid,\n params: EventsRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<EventsResponsePayload> {\n if (!params.vehicleTypes) {\n params.vehicleTypes = VEHICLE_TYPE_IDS\n }\n if (!params.truckTypes) {\n params.vehicleTypes = VEHICLE_TYPE_IDS\n }\n if (!params.camerasExid) {\n params.camerasExid = params.cameras\n }\n\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/events?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n getEventCounts(\n projectExid: string,\n payload: EventCountRequestPayload = {},\n extraParams?: AxiosRequestConfig\n ): Promise<EventCountResponsePayload> {\n if (!payload.vehicleTypes) {\n payload.vehicleTypes = VEHICLE_TYPE_IDS\n }\n\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/project-stats?${toQueryString(\n payload\n )}`,\n {\n ...(extraParams || {}),\n }\n )\n },\n getVerifiedDays(\n projectExid: ProjectExid,\n params: Partial<VerifiedDaysQueryParams>,\n extraParams = {}\n ): Promise<PaginatedItems<GateReportVerifiedDay>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/verified-days?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n updateEventById(\n eventId: number,\n {\n updatedBy,\n payload,\n }: {\n updatedBy: string\n payload: Partial<EventUpdateRequestPayload>\n }\n ) {\n return axios.patch(\n `${getAiApiUrl()}/projects/events/${eventId}?${toQueryString({\n updatedBy,\n })}`,\n payload\n )\n },\n verifyDay(params: VerifyDayUpdateRequestPayload) {\n return axios.post(\n `${getAiApiUrl()}/projects/gate-report/verified-days`,\n params\n )\n },\n regenerateThumbnail(id: number, params: { cameraExid: string }) {\n return axios.put(\n `${getAiApiUrl()}/projects/gate-report/event-thumbnail/render/${id}?${toQueryString(\n params\n )}`,\n {\n method: \"PUT\",\n }\n )\n },\n getDailyStatus(\n projectExid: string,\n params: Partial<ProcessedDaysQueryParams> = {}\n ) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/processed-days`,\n { params }\n )\n },\n getEventThumbnail({\n cameraExid,\n eventType,\n eventTime,\n token,\n }: {\n cameraExid: string\n eventType: GateReportEventType\n eventTime: DateTime\n token: string\n }) {\n return `${getAiApiUrl()}/cameras/${cameraExid}/gate-report/${eventType}/${eventTime}/thumbnail?authorization=${token}`\n },\n getEventSnapshot({\n cameraExid,\n eventType,\n eventTime,\n token,\n }: {\n cameraExid: string\n eventType: GateReportEventType\n eventTime: DateTime\n token: string\n }) {\n return `${getAiApiUrl()}/cameras/${cameraExid}/gate-report/${eventType}/${eventTime}/snapshot?authorization=${token}`\n },\n getEvents(\n projectExid: ProjectExid,\n params: GatReportRequestPayload,\n extraParams: AxiosRequestConfig = {}\n ): Promise<GateReportResponsePayload> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/events?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n getCounts(\n projectExid: string,\n payload: EventCountRequestPayload = {},\n extraParams: AxiosRequestConfig = {}\n ): Promise<EventCountResponsePayload> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/counts?${toQueryString(\n payload\n )}`,\n extraParams\n )\n },\n },\n brainTool: {\n getObjectDetectionsResults(payload = {}) {\n return axios.post(`${getAiApiUrl()}/ai-models/object-detection`, payload)\n },\n getSegments(payload = {}) {\n return axios.post(`${getAiApiUrl()}/ai-models/segment`, payload)\n },\n async getDepth(cameraExid: string, timestamp: string) {\n return axios.post(`${getAiApiUrl()}/depth-estimation`, {\n cameraex: cameraExid,\n timestamp,\n })\n },\n },\n roi: {\n getROIs(\n projectExid: string,\n params: Partial<RoisQueryParams> = {}\n ): Promise<GateReportROI[]> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/rois?${toQueryString(params)}`\n )\n },\n createROI(params: GateReportROICreateRequestPayload) {\n return axios.post(`${getAiApiUrl()}/projects/rois`, params)\n },\n updateROI({\n updatedBy,\n roi,\n }: {\n updatedBy: string\n roi: GateReportROICreateRequestPayload\n }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/rois/${roi.id}?${toQueryString({\n updatedBy,\n })}`,\n roi\n )\n },\n deleteROI({ id, updatedBy }: { id: number; updatedBy: string }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/rois/${id}?${toQueryString({\n updatedBy,\n })}`,\n { isactive: false, note: \"delete roi\" }\n )\n },\n },\n}\n","import axios from \"axios\"\n\nexport const WebRtcApi = {\n webRtc: {\n requestIceServers({ url, token }: { url: string; token: string }) {\n return axios({\n url,\n method: \"OPTIONS\",\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n },\n sendLocalOffer({\n url,\n token,\n data,\n }: {\n url: string\n token: string\n data: {\n sdp: string\n type: string\n }\n }) {\n return axios({\n url,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/sdp\",\n Authorization: `Bearer ${token}`,\n },\n data,\n })\n },\n sendLocalCandidates({\n url,\n token,\n data,\n tag,\n }: {\n url: string\n token: string\n data: Record<string, unknown>\n tag: string\n }) {\n return axios({\n url,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/trickle-ice-sdpfrag\",\n \"If-Match\": tag,\n Authorization: `Bearer ${token}`,\n },\n data,\n })\n },\n },\n}\n","import { axios } from \"./client\"\nimport { toQueryString } from \"@evercam/api/utils\"\nimport {\n HistoryWeatherRequestPayload,\n WeatherDataResponse,\n WeatherProvider,\n WeatherResponsePayload,\n} from \"@evercam/api/types\"\n\nexport const WeatherApi = {\n current: {\n getCurrentWeather({\n projectExid,\n weatherProvider = WeatherProvider.WeatherStack,\n }: {\n projectExid: string\n weatherProvider: WeatherProvider\n }): Promise<WeatherResponsePayload> | undefined {\n if (weatherProvider === WeatherProvider.WeatherStack) {\n return axios.get(`/projects/${projectExid}/weather/current`)\n } else if (weatherProvider === WeatherProvider.AerisWeather) {\n return axios.get(\n `${axios.env.weatherApiBaseUrl}/weatherApi/getWeatherData?projectExid=${projectExid}`\n )\n }\n },\n },\n historical: {\n getWeatherBeforeDate({\n projectExid,\n weatherProvider = WeatherProvider.WeatherStack,\n payload,\n }: {\n projectExid: string\n weatherProvider: WeatherProvider\n payload: HistoryWeatherRequestPayload\n }): Promise<WeatherResponsePayload> | undefined {\n if (weatherProvider === WeatherProvider.WeatherStack) {\n return axios.get(\n `/projects/${projectExid}/weather?${toQueryString(payload)}`\n )\n } else if (weatherProvider === WeatherProvider.AerisWeather) {\n return axios.get(\n `${axios.env.weatherApiBaseUrl}/weatherApi/getWeatherData?projectExid=${projectExid}&day=${payload.day}`\n )\n }\n },\n },\n weather: {\n getWeatherData({\n projectExid,\n weatherProvider = WeatherProvider.WeatherStack,\n payload,\n }: {\n projectExid: string\n weatherProvider: WeatherProvider\n payload: HistoryWeatherRequestPayload\n }): Promise<{ data: WeatherDataResponse[] }> | undefined {\n if (weatherProvider === WeatherProvider.WeatherStack) {\n return axios.get(\n `/projects/${projectExid}/weather/filters?${toQueryString(payload)}`\n )\n } else if (weatherProvider === WeatherProvider.AerisWeather) {\n return axios.get(\n `${axios.env.weatherApiBaseUrl}/weatherApi/getWeatherData?projectExid=${projectExid}&day=${payload.day}`\n )\n }\n },\n },\n}\n","import { axios } from \"./client\"\nimport type {\n CameraExid,\n CopilotConversation,\n CopilotMessage,\n CopilotMessageStep,\n CountByPeriod,\n CountsParams,\n DetectionsFilters,\n DetectionsPresenceByLabel,\n FeedbackPayload,\n GrafanaKitMetrics,\n LabsPaginationParams,\n LuminanceReading,\n MilesightCameraNetworkConfiguration,\n MilesightCameraOsdConfiguration,\n MilesightCameraSdCardInfo,\n MilesightCameraSystemSettings,\n MilesightCameraVideoConfig,\n MilesightRequestParams,\n PaginatedItems,\n SegmentsByLabel,\n SegmentsPresenceByLabel,\n SegmentsSimilaritySearchParams,\n TrackingsByLabel,\n} from \"@evercam/api/types\"\nimport { GrafanaMetricId, KitMetricPeriod } from \"@evercam/api/types\"\n\nexport function getLabsBaseUrl() {\n const labsPrNumber = /labs-(\\d+)/g.exec(window.location.href)?.[1]\n\n return labsPrNumber\n ? `https://${labsPrNumber}.labs.evercam.io`\n : axios.env.evercamLabsUrl\n}\n\nexport const EvercamLabsApi = {\n milesight: {\n getVideoConfig(\n { host, httpPort, username, password }: MilesightRequestParams,\n config = {}\n ): Promise<MilesightCameraVideoConfig> {\n return axios.get(`${getLabsBaseUrl()}/milesight/video`, {\n params: {\n host,\n port: httpPort,\n username,\n password,\n },\n ...config,\n })\n },\n getNetworkConfiguration(\n { host, httpPort, username, password }: MilesightRequestParams,\n config = {}\n ): Promise<MilesightCameraNetworkConfiguration> {\n return axios.get(`${getLabsBaseUrl()}/milesight/network`, {\n params: {\n host,\n port: httpPort,\n username,\n password,\n },\n ...config,\n })\n },\n getSystemSettings(\n { host, httpPort, username, password }: MilesightRequestParams,\n config = {}\n ): Promise<MilesightCameraSystemSettings> {\n return axios.get(`${getLabsBaseUrl()}/milesight/system`, {\n params: {\n host,\n port: httpPort,\n username,\n password,\n },\n ...config,\n })\n },\n getTimeSettings(\n { host, httpPort, username, password }: MilesightRequestParams,\n config = {}\n ): Promise<MilesightCameraSystemSettings> {\n return axios.get(`${getLabsBaseUrl()}/milesight/time`, {\n params: {\n host,\n port: httpPort,\n username,\n password,\n },\n ...config,\n })\n },\n getOsdConfiguration(\n { host, httpPort, username, password }: MilesightRequestParams,\n config = {}\n ): Promise<MilesightCameraOsdConfiguration> {\n return axios.get(`${getLabsBaseUrl()}/milesight/osd`, {\n params: {\n host,\n port: httpPort,\n username,\n password,\n },\n ...config,\n })\n },\n getSdCardInfo(\n { host, httpPort, username, password }: MilesightRequestParams,\n config = {}\n ): Promise<MilesightCameraSdCardInfo> {\n return axios.get(`${getLabsBaseUrl()}/milesight/storage`, {\n params: {\n host,\n port: httpPort,\n username,\n password,\n },\n ...config,\n })\n },\n },\n copilot: {\n async getAllConversations(\n params: LabsPaginationParams & {\n cameraExid?: string\n projectExid?: string\n user?: string\n }\n ): Promise<PaginatedItems<CopilotConversation>> {\n return axios.get(`${getLabsBaseUrl()}/copilot/conversations`, {\n params,\n preserveCasing: true,\n })\n },\n async getOneConversation(\n conversationId: number\n ): Promise<PaginatedItems<CopilotConversation>> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}`,\n {\n preserveCasing: true,\n }\n )\n },\n async getConversationMessages(\n conversationId: number,\n params: LabsPaginationParams\n ): Promise<PaginatedItems<CopilotMessage>> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}/messages`,\n { params, preserveCasing: true }\n )\n },\n async getMessageSteps(\n message: CopilotMessage\n ): Promise<CopilotMessageStep[]> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${\n message.conversationId\n }/messages/${message.id}/steps`\n )\n },\n async submitMessageFeedback<T>({\n conversationId,\n messageId,\n ...params\n }: FeedbackPayload<T>) {\n return axios.post(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}/messages/${messageId}/feedback`,\n params,\n {\n preserveCasing: true,\n }\n )\n },\n },\n detections: {\n async getDetectionsTracking(\n cameraExid: CameraExid,\n params: DetectionsFilters\n ): Promise<TrackingsByLabel> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/detections/tracking`,\n {\n params,\n preserveCasing: true,\n }\n )\n },\n async getSegmentsMasks(\n cameraExid: CameraExid,\n params: DetectionsFilters\n ): Promise<SegmentsByLabel> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/segments/masks`,\n {\n params,\n preserveCasing: true,\n }\n )\n },\n async getDetectionsPresenceDateIntervals({\n cameraExid,\n fromDate,\n toDate,\n precision,\n }: CountsParams): Promise<DetectionsPresenceByLabel> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/detections/presence-intervals`,\n {\n params: { fromDate, toDate, precision },\n preserveCasing: true,\n }\n )\n },\n async getSegmentsDateIntervals({\n cameraExid,\n fromDate,\n toDate,\n precision,\n }: CountsParams): Promise<SegmentsPresenceByLabel> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/segments/presence-intervals`,\n {\n params: { fromDate, toDate, precision },\n preserveCasing: true,\n }\n )\n },\n async getCranesMovement({\n cameraExid,\n fromDate,\n toDate,\n precision,\n }: CountsParams): Promise<CountByPeriod[]> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/detections/movement`,\n {\n params: { fromDate, toDate, precision },\n preserveCasing: true,\n }\n )\n },\n async getSimilarSegmentsInTimeIntervals({\n cameraExid,\n segmentId,\n ...params\n }: SegmentsSimilaritySearchParams) {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/segments/${segmentId}/by-time-intervals`,\n {\n params,\n preserveCasing: true,\n }\n )\n },\n },\n googleCloudStorage: {\n listFiles(\n prefix: string = \"\"\n ): Promise<{ files: string[]; folders: string[] }> {\n return axios.get(\n `${getLabsBaseUrl()}/gc-storage/buckets/evercam-labs/files`,\n {\n params: {\n prefix,\n },\n preserveCasing: true,\n }\n )\n },\n getSignedUrl(fileName: string): Promise<{ url: string }> {\n return axios.get(\n `${getLabsBaseUrl()}/gc-storage/buckets/evercam-labs/files/signed-url`,\n {\n params: {\n fileName,\n },\n preserveCasing: true,\n }\n )\n },\n },\n luminance: {\n getReadings(params: {\n cameraExid: CameraExid\n fromDate: string\n toDate: string\n }): Promise<LuminanceReading[]> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${\n params.cameraExid || \"echel-mdqur\"\n }/luminance/readings`,\n {\n params: {\n fromDate: params.fromDate,\n toDate: params.toDate,\n },\n preserveCasing: true,\n }\n )\n },\n },\n kits: {\n getMetrics(\n kitId: string,\n metrics: GrafanaMetricId[],\n period: KitMetricPeriod = KitMetricPeriod.Last1Hour\n ): Promise<GrafanaKitMetrics> {\n return axios.get(`${getLabsBaseUrl()}/kits/${kitId}/metrics`, {\n params: {\n metrics,\n from: period,\n },\n preserveCasing: true,\n })\n },\n },\n}\n","import { axios } from \"./client\"\nimport type { AxiosRequestConfig } from \"axios\"\nimport { queryStringToObject, toQueryString } from \"@evercam/api/utils\"\nimport type {\n AconexAuthCallbackParams,\n AconexEditedImageUploadRequestPayload,\n AconexUserProjectsResponsePayload,\n ActiveUsersStatsRequestPayload,\n ActiveUserStat,\n AnalyticsRequestPayload,\n ApiCredentials,\n AutodeskFolderResponsePayload,\n AutodeskProjectsResponsePayload,\n AutodeskTokenResponsePayload,\n AutodeskUploadSnapshotPayload,\n AutodeskUserHubsResponsePayload,\n AvailableDaysRequestPayload,\n AvailableDaysResponsePayload,\n AvailableHoursRequestPayload,\n AvailableHoursResponsePayload,\n BatteryReading,\n BatteryVoltage,\n BimCompareExportRequestPayload,\n BimCreationPayload,\n BIMLayer,\n BIMLayerPostPayload,\n BimLayersQueryParams,\n BimModelRequestPayload,\n BimModelResponsePayload,\n BimPendingImage,\n BimSnapshotRequestPayload,\n BimSnapshotResponsePayload,\n BimUploadCameraParameters,\n CameraExid,\n CameraLogsResponsePayload,\n CamerasResponsePayload,\n CameraStatusLog,\n CameraUpdateRequestPayload,\n CheckCameraPortPayload,\n Comment,\n CommentCreationRequestPayload,\n CommentsRequestPayload,\n Company,\n CompanyProject,\n CompanyUser,\n Compare,\n CompareRequestPayload,\n ConnectorResponsePayload,\n Credentials,\n GoogleAuthRequestPayload,\n LoginRequestPayload,\n LoginResponsePayload,\n Logo,\n LogoutParams,\n Media,\n MediaCreateRequestPayload,\n MediaFilterQueryParams,\n MediaUpdateRequestPayload,\n MediaUsersResponsePayload,\n NearestSnapshotRequestPayload,\n NearestSnapshotResponsePayload,\n PaginatedItems,\n PendingBimImagesParams,\n ProcessPendingImagesBimParams,\n ProcoreEditedImageUploadRequestPayload,\n ProcoreProjectsAlbumsPayload,\n ProcoreProjectsAlbumsRequestPayload,\n ProcoreUserCompaniesResponsePayload,\n ProcoreUserProjectRequestPayload,\n ProcoreUserProjectsResponsePayload,\n ProgressPhotosCreateUpdateRequestPayload,\n ProgressPhotosResponsePayload,\n ProgressPhotosUnSubscribeParams,\n ProjectBatteryReading,\n ProjectExid,\n ProjectLogoResponsePayload,\n ProjectPAStatsRequestPayload,\n ProjectPAStatsResponsePayload,\n ProjectResponsePayload,\n ProjectShareResponse,\n RemotePasswordUpdateRequestPayload,\n ResendShareRequestPayload,\n SessionActivitiesListRequestPayload,\n SessionActivity,\n SessionsListRequestPayload,\n Share,\n ShareCreateRequestPayload,\n ShareCreateResponsePayload,\n ShareDeletionRequestPayload,\n SharedUsersResponsePayload,\n ShareProjectCamerasRequestPayload,\n ShareRequestsResponsePayload,\n SharesResponsePayload,\n SignupUserRequestPayload,\n Snapshot,\n SnapshotRangeRequestPayload,\n SnapshotRangeResponsePayload,\n ThumbnailData,\n TimelapseCreationRequestPayload,\n TimelapseCreationResponsePayload,\n TimelapseSnapshotRequestPayload,\n TimelapseSnapshotResponsePayload,\n UpdatePasswordRequestPayload,\n UserDeleteRequestPayload,\n UserSession,\n UserUpdateRequestPayload,\n VoyageControlConnectorPayload,\n Widget,\n WidgetFull,\n WidgetPayload,\n WidgetsListRequestPayload,\n} from \"@evercam/api/types\"\n\nexport const EvercamApi = {\n apiStatus: {\n getApiStatus() {\n return axios.get(\"/status\")\n },\n },\n users: {\n signup(payload: SignupUserRequestPayload) {\n return axios.post(\"/users\", payload)\n },\n fetchAccessFeatures(email: string): Promise<{ features: string[] }> {\n return axios.get(`/users/${email}/features`)\n },\n impersonationLogin(token: string) {\n return axios.post(`/auth/impersonate/${token}`)\n },\n login(params: LoginRequestPayload): Promise<LoginResponsePayload> {\n return axios.post(\"/auth/login\", toQueryString(params))\n },\n loginWithApiCredentials(\n apiId: String,\n apiKey: String\n ): Promise<LoginResponsePayload> {\n return axios.post(`/auth/login?api_id=${apiId}&api_key=${apiKey}`)\n },\n loginWithWidgetCredentials(\n widgetId: String,\n widgetKey: String\n ): Promise<LoginResponsePayload> {\n return axios.post(\n `/auth/login?widget_id=${widgetId}&widget_key=${widgetKey}`\n )\n },\n loginWithProvider(\n provider: string,\n payload: GoogleAuthRequestPayload\n ): Promise<LoginResponsePayload> {\n return axios.post(`/auth/${provider}`, payload)\n },\n getUser(email: string): Promise<{ users: LoginResponsePayload[] }> {\n return axios.get(`/users/${email}`)\n },\n logout(\n payload: LogoutParams,\n config: Partial<AxiosRequestConfig> = {}\n ): Promise<void> {\n return axios.delete(\"/auth/logout\", { params: payload, ...config })\n },\n resetPassword(email: string): Promise<{ message: string }> {\n return axios.post(`/users/${email}/password/reset`)\n },\n getCredentials(): Promise<Credentials> {\n return axios.get(\"/auth/credentials\")\n },\n updatePassword(\n user: string,\n payload: UpdatePasswordRequestPayload\n ): Promise<{ message: string }> {\n return axios.patch(`/users/${user}/password`, payload)\n },\n remotePasswordUpdate(\n email: string,\n payload: RemotePasswordUpdateRequestPayload\n ): Promise<{ message: string }> {\n return axios.patch(`/users/${email}/password/update`, payload)\n },\n confirm(email: string, payload: any): Promise<LoginResponsePayload> {\n return axios.post(`/users/${email}/confirm`, payload)\n },\n deleteActiveSession(sessionId: string, payload: any = {}): Promise<void> {\n return axios.delete(`/users/active-sessions/${sessionId}`, {\n params: payload,\n })\n },\n getActiveSessions(\n payload: SessionsListRequestPayload\n ): Promise<PaginatedItems<UserSession>> {\n return axios.get(\"/users/active-sessions\", {\n params: payload,\n })\n },\n getSessionActivities(\n payload: SessionActivitiesListRequestPayload\n ): Promise<PaginatedItems<SessionActivity>> {\n return axios.get(\"/users/session/activities\", { params: payload })\n },\n update(\n email: string,\n params: Partial<UserUpdateRequestPayload> = {}\n ): Promise<{ users: LoginResponsePayload[] }> {\n return axios.patch(`/users/${email}`, params)\n },\n delete(email: string, params: UserDeleteRequestPayload): Promise<void> {\n return axios.post(`/users/${email}/delete`, params)\n },\n fetchPermissions(): Promise<{ permissions: string[] }> {\n return axios.get(\"/users/permissions\")\n },\n },\n notifications: {\n get() {\n return axios.get(\"/notifications\")\n },\n markAllAsRead(id: string) {\n return axios.patch(`/notifications/${id}`)\n },\n markAsRead() {\n return axios.post(\"/notifications/mark-as-read\")\n },\n },\n bim: {\n getBimSnapshot(\n cameraId: string,\n dateTime: string,\n payload: Partial<BimSnapshotRequestPayload>,\n extraParams?: AxiosRequestConfig\n ): Promise<BimSnapshotResponsePayload> {\n return axios.get(`/cameras/${cameraId}/bim/${dateTime}`, {\n params: payload,\n ...(extraParams || {}),\n })\n },\n getBimModel(\n cameraId: string,\n payload: BimModelRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<BimModelResponsePayload> {\n return axios.get(`/cameras/${cameraId}/bim`, {\n params: payload,\n ...(extraParams || {}),\n })\n },\n pendingBimImages(\n cameraId: string,\n params: PendingBimImagesParams\n ): Promise<BimPendingImage[]> {\n return axios.get(`/cameras/${cameraId}/bim/pending`, { params })\n },\n processPendingImages(\n cameraId: string,\n params: Partial<ProcessPendingImagesBimParams>\n ): Promise<void> {\n return axios.post(`/cameras/${cameraId}/bim/pending`, params)\n },\n createBim(cameraId: string, params: BimCreationPayload): Promise<void> {\n return axios.post(`/cameras/${cameraId}/bim`, params)\n },\n getCameraParameters(\n cameraId: string,\n params: ApiCredentials\n ): Promise<BimUploadCameraParameters> {\n return axios.get(`/cameras/${cameraId}/bim/camera-parameters`, {\n params,\n })\n },\n uploadCameraParameters(\n cameraId: string,\n params: BimUploadCameraParameters\n ): Promise<BimUploadCameraParameters> {\n return axios.post(`/cameras/${cameraId}/bim/camera-parameters`, params)\n },\n exportCompare(\n projectExid: string,\n payload: BimCompareExportRequestPayload\n ): Promise<Compare> {\n return axios.post(\n `/projects/${projectExid}/media-hub/compares/bim-compares`,\n payload\n )\n },\n },\n cameras: {\n getCameras(): Promise<CamerasResponsePayload> {\n return axios.get(\"/cameras\")\n },\n getCameraById(\n cameraId: string,\n params?: ApiCredentials\n ): Promise<CamerasResponsePayload> {\n return axios.get(`/cameras/${cameraId}?${toQueryString(params)}`)\n },\n getCameraLastPublicNote(\n cameraId: string\n ): Promise<CameraLogsResponsePayload> {\n return axios.get(`/cameras/${cameraId}/last-public-note`)\n },\n portCheck(payload: {\n params: CheckCameraPortPayload\n }): Promise<CheckCameraPortPayload & { open: boolean }> {\n return axios.get(\"/cameras/port-check\", payload)\n },\n getNvrStreamingToken({\n cameraExid,\n token,\n }: {\n cameraExid: string\n token: string\n }): Promise<string> {\n return fetch(\n `${axios.env.baseUrl}/cameras/${cameraExid}/hls?authorization=${token}`\n ).then(\n ({ url }) => queryStringToObject(url.split(\"?\")[1] || \"\").access_token\n ) as Promise<string>\n },\n getCameraStatusLogs(\n exid: string,\n params: {\n params: {\n from: string\n to: string\n }\n }\n ): Promise<CameraStatusLog[]> {\n return axios.get(`/cameras/${exid}/health`, params)\n },\n updateCamera(\n exid: string,\n params: CameraUpdateRequestPayload\n ): Promise<CamerasResponsePayload> {\n return axios.patch(`/cameras/${exid}`, params)\n },\n },\n projects: {\n index(params?: ApiCredentials): Promise<ProjectResponsePayload> {\n return axios.get(`/projects?${toQueryString(params)}`)\n },\n getLogos(projectId: string): Promise<ProjectLogoResponsePayload> {\n return axios.get(`/projects/${projectId}/logos`)\n },\n createLogo(\n projectId: string,\n formData: FormData\n ): Promise<Logo & { id: number }> {\n const headers = { \"Content-Type\": \"multipart/form-data\" }\n\n return axios.post(`/projects/${projectId}/logos`, formData, {\n headers,\n })\n },\n deleteLogo(projectId: string, id: number): Promise<void> {\n return axios.delete(`/projects/${projectId}/logos/${id}`)\n },\n updateLogo(projectId: string, id: number, name: string) {\n return axios.patch(\n `/projects/${projectId}/logos/${id}`,\n toQueryString({ name })\n )\n },\n updateThumbnail(\n projectExid: string,\n params: { cameraExid?: string; uploadedThumbnail?: string }\n ): Promise<{ message: string }> {\n if (params.uploadedThumbnail) {\n return axios.post(`/projects/${projectExid}/thumbnail`, {\n thumbnail: params.uploadedThumbnail,\n })\n }\n\n return axios.put(`/projects/${projectExid}/thumbnail`, {\n cameraExid: params.cameraExid,\n })\n },\n getThumbnailData(projectExid: string): Promise<ThumbnailData> {\n return axios.get(`/projects/${projectExid}/thumbnail?include_data=true`)\n },\n },\n timelapse: {\n getSnapshotRange(\n cameraId: string,\n payload: TimelapseSnapshotRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<TimelapseSnapshotResponsePayload> {\n return axios.get(`/cameras/${cameraId}/timelapses/snapshots`, {\n params: payload,\n ...(extraParams || {}),\n })\n },\n createTimelapse(\n projectExid: string,\n payload: TimelapseCreationRequestPayload\n ): Promise<TimelapseCreationResponsePayload> {\n return axios.post(\n `/projects/${projectExid}/media-hub/timelapses`,\n payload\n )\n },\n cUpdate(\n projectExid: string,\n id: string | number,\n payload: MediaUpdateRequestPayload\n ): Promise<TimelapseCreationResponsePayload> {\n return axios.patch(\n `/projects/${projectExid}/media-hub/timelapses/${id}`,\n payload\n )\n },\n cDelete(projectExid: string, id: number): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/timelapses/${id}`)\n },\n },\n compares: {\n cCreate(\n projectExid: string,\n payload: CompareRequestPayload\n ): Promise<Compare> {\n return axios.post(`/projects/${projectExid}/media-hub/compares`, payload)\n },\n cShow(projectExid: string, id: string): Promise<Compare> {\n return axios.get(`/projects/${projectExid}/media-hub/compares/${id}`)\n },\n cUpdate(\n projectExid: string,\n id: string,\n payload: MediaUpdateRequestPayload\n ): Promise<Compare> {\n return axios.patch(\n `/projects/${projectExid}/media-hub/compares/${id}`,\n payload\n )\n },\n cDelete(projectExid: string, id: string): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/compares/${id}`)\n },\n },\n providers: {\n getProviders(): Promise<ConnectorResponsePayload> {\n return axios.get(\"/oauth2-tokens/providers\")\n },\n },\n aconex: {\n authenticate(payload: AconexAuthCallbackParams): Promise<void> {\n return axios.get(\"/aconex/auth/callback\", {\n params: payload,\n })\n },\n getUserProjects(): Promise<AconexUserProjectsResponsePayload> {\n return axios.get(\"/aconex/projects\")\n },\n revoke(): Promise<void> {\n return axios.post(\"/aconex/auth/revoke\")\n },\n uploadEditedSnapshot(\n projectId: number,\n payload: AconexEditedImageUploadRequestPayload\n ): Promise<void> {\n return axios.post(\n `/aconex/projects/${projectId}/upload-snapshot`,\n payload\n )\n },\n getDocumentSchema(projectId: number): Promise<void> {\n return axios.get(`/aconex/projects/${projectId}/register/schema`)\n },\n },\n procore: {\n getUserCompanies(): Promise<ProcoreUserCompaniesResponsePayload> {\n return axios.get(\"/procore/companies\")\n },\n getUserProjects(\n payload: ProcoreUserProjectRequestPayload\n ): Promise<ProcoreUserProjectsResponsePayload> {\n return axios.get(\"/procore/projects\", {\n params: payload,\n })\n },\n getProjectAlbums(\n payload: ProcoreProjectsAlbumsRequestPayload\n ): Promise<ProcoreProjectsAlbumsPayload> {\n return axios.get(\"/procore/image-categories\", {\n params: payload,\n })\n },\n uploadEditedSnapshot(\n payload: ProcoreEditedImageUploadRequestPayload\n ): Promise<void> {\n return axios.post(\"/procore/upload-snapshot\", payload)\n },\n sendRevoke(): Promise<void> {\n return axios.post(\"/users/auth/procore/revoke\")\n },\n },\n autodesk: {\n sendRevoke(): Promise<void> {\n return axios.post(\"/users/auth/autodesk/revoke\")\n },\n getUserHubs(): Promise<AutodeskUserHubsResponsePayload> {\n return axios.get(\"/autodesk/hubs\")\n },\n getProjects(hubId: string): Promise<AutodeskProjectsResponsePayload> {\n return axios.get(`/autodesk/hubs/${hubId}/projects`)\n },\n getFolders(\n hubId: string,\n projectId: string\n ): Promise<Array<AutodeskFolderResponsePayload>> {\n return axios.get(`/autodesk/hubs/${hubId}/projects/${projectId}/folders`)\n },\n getSubFolders(\n projectId: string,\n parentFolderId: string,\n getDerivatives: Boolean\n ): Promise<Array<AutodeskFolderResponsePayload>> {\n return axios.get(\n `/autodesk/projects/${projectId}/folders/${parentFolderId}/subfolders`,\n {\n params: {\n getDerivatives,\n },\n }\n )\n },\n getFolder(\n projectId: string,\n folderId: string\n ): Promise<AutodeskFolderResponsePayload> {\n return axios.get(`/autodesk/projects/${projectId}/folders/${folderId}`)\n },\n uploadEditedSnapshot(\n payload: AutodeskUploadSnapshotPayload\n ): Promise<null> {\n return axios.post(\"/autodesk/upload-snapshot\", payload)\n },\n fetchViewerToken(exid: string): Promise<AutodeskTokenResponsePayload> {\n return axios.get(`/autodesk/${exid}/token/viewer`)\n },\n },\n voyageControl: {\n connect(payload: VoyageControlConnectorPayload): Promise<unknown> {\n return axios.post(\"/voyage-control/auth/connect\", payload)\n },\n sendRevoke(): Promise<null> {\n return axios.post(\"/voyage-control/auth/revoke\")\n },\n },\n recordings: {\n oldest(cameraId: string, payload?: ApiCredentials): Promise<Snapshot> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots/oldest`, {\n params: payload,\n })\n },\n latest(cameraId: string, payload?: ApiCredentials): Promise<Snapshot> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots/latest`, {\n params: payload,\n })\n },\n nearest(\n cameraId: string,\n timestamp: string,\n payload?: NearestSnapshotRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<NearestSnapshotResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${timestamp}/nearest`,\n {\n params: payload,\n ...(extraParams || {}),\n }\n )\n },\n availableDays({\n cameraId,\n year,\n month,\n payload,\n }: AvailableDaysRequestPayload): Promise<AvailableDaysResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${year}/${month}/days`,\n {\n params: payload,\n }\n )\n },\n availableHours({\n cameraId,\n year,\n month,\n day,\n payload,\n cancelToken,\n }: AvailableHoursRequestPayload): Promise<AvailableHoursResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${year}/${month}/${day}/hours`,\n {\n params: payload,\n cancelToken,\n }\n )\n },\n getSnapshot(\n cameraId: string,\n dateTime: string\n ): Promise<SnapshotRangeResponsePayload> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots/${dateTime}`)\n },\n getSnapshotRange(\n cameraId: string,\n payload: SnapshotRangeRequestPayload\n ): Promise<SnapshotRangeResponsePayload> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots`, {\n params: payload,\n })\n },\n },\n progressPhotos: {\n index(): Promise<ProgressPhotosResponsePayload> {\n return axios.get(\"/progress-photos\")\n },\n show(id: string): Promise<ProgressPhotosResponsePayload> {\n return axios.get(`/progress-photos/${id}`)\n },\n create(\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<ProgressPhotosResponsePayload> {\n return axios.post(\"/progress-photos\", payload)\n },\n update(\n id: string,\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<ProgressPhotosResponsePayload> {\n return axios.patch(`/progress-photos/${id}`, payload)\n },\n unsubscribe(\n progressPhotoId: string,\n params: ProgressPhotosUnSubscribeParams\n ): Promise<ProgressPhotosResponsePayload> {\n return axios.patch(\n `/progress-photos/${progressPhotoId}/unsubscribe?${toQueryString(\n params\n )}`\n )\n },\n delete(id: string, params?: ApiCredentials): Promise<void> {\n return axios.delete(`/progress-photos/${id}?${toQueryString(params)}`)\n },\n },\n mediaHub: {\n getAllMedia(\n projectExid: string,\n params: MediaFilterQueryParams\n ): Promise<PaginatedItems<Media>> {\n return axios.get(\n `projects/${projectExid}/media-hub?${toQueryString(params, {\n forceArrayBrackets: true,\n })}`\n )\n },\n getAllMediaUsers(projectExid: string): Promise<MediaUsersResponsePayload> {\n return axios.get(`/projects/${projectExid}/media-hub/users`)\n },\n cShow(projectExid: string, id: string): Promise<Media> {\n return axios.get(`/projects/${projectExid}/media-hub/${id}`)\n },\n cCreate(\n projectExid: string,\n payload: MediaCreateRequestPayload\n ): Promise<Media> {\n return axios.post(`/projects/${projectExid}/media-hub`, payload)\n },\n cUpdate(\n projectExid: number,\n id: number,\n payload: MediaUpdateRequestPayload\n ): Promise<Media> {\n return axios.patch(`/projects/${projectExid}/media-hub/${id}`, payload)\n },\n cDelete(projectExid: number, id: number): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/${id}`)\n },\n },\n analytics: {\n sendAnalyticsEvent(\n params: AnalyticsRequestPayload,\n headers: object\n ): Promise<null> {\n return axios.post(\"/pa/events\", params, headers)\n },\n getPACompanyPeriodEvents(\n id: string | number,\n payload: ProjectPAStatsRequestPayload\n ): Promise<PaginatedItems<ProjectPAStatsResponsePayload>> {\n return axios.get(`/companies/${id}/stats`, { params: payload })\n },\n getPAProjectPeriodEvents(\n projectId: string,\n payload: ProjectPAStatsRequestPayload\n ): Promise<PaginatedItems<ProjectPAStatsResponsePayload>> {\n return axios.get(`/projects/${projectId}/stats`, { params: payload })\n },\n getActiveUsers(params: {\n params: ActiveUsersStatsRequestPayload\n }): Promise<ActiveUserStat> {\n return axios.get(\"/pa/active-users\", params)\n },\n },\n shares: {\n updateShareRights(\n cameraExid: CameraExid,\n payload: { email: string; rights: string }\n ): Promise<Share> {\n return axios.patch(`/cameras/${cameraExid}/shares`, payload)\n },\n updateShareRequestRights(\n cameraExid: CameraExid,\n payload: { email: string; rights: string }\n ) {\n return axios.patch(`/cameras/${cameraExid}/shares/requests`, payload)\n },\n cIndex(cameraId: string): Promise<SharesResponsePayload> {\n return axios.get(`/cameras/${cameraId}/shares`)\n },\n getShareRequest(\n cameraId: string,\n payload: { status: string }\n ): Promise<ShareRequestsResponsePayload> {\n return axios.get(`/cameras/${cameraId}/shares/requests`, {\n params: payload,\n })\n },\n deleteShare(\n cameraId: string,\n payload: { [key: string]: ShareDeletionRequestPayload }\n ): Promise<void> {\n return axios.delete(`/cameras/${cameraId}/shares`, payload)\n },\n deleteRequest(\n cameraId: string,\n payload: { [key: string]: ShareDeletionRequestPayload }\n ): Promise<void> {\n return axios.delete(`/cameras/${cameraId}/shares/requests`, payload)\n },\n deleteShareRequest(payload: {\n params: ShareDeletionRequestPayload\n }): Promise<void> {\n return axios.delete(`/share-requests/${payload.params.key}`)\n },\n getSharedUsers(cameraId: string): Promise<SharedUsersResponsePayload> {\n return axios.get(`/cameras/${cameraId}/shares/users`)\n },\n cCreate(\n cameraId: string,\n payload: ShareCreateRequestPayload\n ): Promise<ShareCreateResponsePayload> {\n return axios.post(`/cameras/${cameraId}/shares`, payload)\n },\n shareProjectCameras(\n projectExid: ProjectExid,\n payload: ShareProjectCamerasRequestPayload\n ) {\n return axios.post(`/projects/${projectExid}/shares/cameras`, payload)\n },\n getShareRequestByKey(\n key: string\n ): Promise<Pick<ShareCreateResponsePayload, \"shareRequests\">> {\n return axios.get(`/shares/requests/${key}`)\n },\n transferOwnership(\n cameraId: string,\n payload: { userId: number }\n ): Promise<void> {\n return axios.put(`/cameras/${cameraId}`, payload)\n },\n resendShareRequest(\n cameraId: string,\n data: ResendShareRequestPayload\n ): Promise<void> {\n return axios.post(`/cameras/${cameraId}/shares/requests/resend`, data)\n },\n getProjectShares(exid: string): Promise<ProjectShareResponse> {\n return axios.get(\n `/projects/${exid}/shares?include_camera_shares=true&sort=fullname|asc`\n )\n },\n },\n companies: {\n getCompanyUsers(\n companyExid: string,\n params: { params: { page: number; limit: number } }\n ): Promise<PaginatedItems<CompanyUser>> {\n return axios.get(`/companies/${companyExid}/users`, params)\n },\n getCompanyProjects(\n companyId: string,\n params: { params: { page: number; limit: number } }\n ): Promise<PaginatedItems<CompanyProject>> {\n return axios.get(`/companies/${companyId}/projects`, params)\n },\n getPACompanyDetails(\n companyId: string,\n params: Record<string, string> = {}\n ): Promise<Company> {\n return axios.get(\n `/companies/${companyId}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getActiveUsers(\n params: ActiveUsersStatsRequestPayload\n ): Promise<ActiveUserStat> {\n return axios.get(\"/pa/active-users\", { params })\n },\n getCompanyCameras(id: string, params: Record<string, string>) {\n return axios.get(`/companies/${id}/cameras`, params)\n },\n },\n batteries: {\n ProjectBatteryReadings(\n projectExid: string\n ): Promise<ProjectBatteryReading[]> {\n return axios.get(`/projects/${projectExid}/battery-readings`)\n },\n batteryReadings(\n cameraExid: string,\n params: { fromDate: string; toDate: string }\n ): Promise<PaginatedItems<BatteryReading>> {\n return axios.get(`/cameras/${cameraExid}/battery-readings`, {\n params: params,\n })\n },\n readingsVoltageSummary(\n cameraExid: string,\n params: { fromDate: string; toDate: string }\n ): Promise<BatteryVoltage[]> {\n return axios.get(\n `/cameras/${cameraExid}//battery-readings/voltage-summary`,\n {\n params: params,\n }\n )\n },\n },\n layers: {\n getLayer(\n cameraId: string,\n params: BimLayersQueryParams,\n extraParams: Record<string, string> = {}\n ): Promise<BIMLayer[]> {\n return axios.get(`/cameras/${cameraId}/layers`, {\n params,\n ...(extraParams || {}),\n })\n },\n getLayersById(\n cameraId: string,\n id: number,\n params: Record<string, string>\n ): Promise<BIMLayer> {\n return axios.get(`/cameras/${cameraId}/layers/${id}`, { params })\n },\n getLayers(\n cameraId: string,\n params: BimLayersQueryParams\n ): Promise<BIMLayer[]> {\n return axios.get(`/cameras/${cameraId}/layers`, { params })\n },\n createLayer(\n cameraId: string,\n params: BIMLayerPostPayload\n ): Promise<BIMLayer> {\n return axios.post(`/cameras/${cameraId}/layers`, params)\n },\n deleteLayer(\n cameraId: string,\n id: number,\n params: Record<string, unknown>\n ): Promise<void> {\n return axios.delete(`/cameras/${cameraId}/layers/${id}`, { params })\n },\n updateLayer(\n cameraId: string,\n id: number,\n params: Partial<BIMLayerPostPayload>\n ): Promise<BIMLayer> {\n return axios.put(`/cameras/${cameraId}/layers/${id}`, params)\n },\n },\n comments: {\n fetchComments(\n projectExid: string,\n params: CommentsRequestPayload\n ): Promise<PaginatedItems<Comment>> {\n return axios.get(`/projects/${projectExid}/comments`, { params })\n },\n addComment(\n projectId: string,\n params: CommentCreationRequestPayload\n ): Promise<Comment> {\n return axios.post(`/projects/${projectId}/comments`, params)\n },\n archiveOrUnarchiveComment(\n projectId: string,\n id: number,\n archive: boolean\n ): Promise<Comment> {\n return axios.patch(\n `/projects/${projectId}/comments/${id}?${toQueryString({ archive })}`\n )\n },\n deleteComment(projectId: string, id: number): Promise<void> {\n return axios.delete(`/projects/${projectId}/comments/${id}`)\n },\n },\n storyblock: {\n getStory(params: { route: string; params: string }) {\n return axios.get(\"/proxy/storyblok\", { params })\n },\n },\n mailing: {\n unsubscribe(params: { key: string }) {\n return axios.post(\"/mailing/unsubscribe\", params)\n },\n },\n widgets: {\n index(params: WidgetsListRequestPayload): Promise<PaginatedItems<Widget>> {\n return axios.get(\"/widgets\", { params })\n },\n show(id: number): Promise<WidgetFull> {\n return axios.get(`/widgets/${id}`)\n },\n getByKeys(): Promise<WidgetFull> {\n return axios.get(\"/widgets/credentials\")\n },\n setSessionSettings(params: any): Promise<WidgetFull> {\n return axios.put(\"/widgets/session\", params)\n },\n createProjectWidget(\n projectId: string,\n payload: WidgetPayload\n ): Promise<WidgetFull> {\n return axios.post(`/projects/${projectId}/widgets`, payload)\n },\n createCameraWidget(\n cameraId: string,\n payload: WidgetPayload\n ): Promise<WidgetFull> {\n return axios.post(`/cameras/${cameraId}/widgets`, payload)\n },\n update(id: number, payload: WidgetPayload): Promise<WidgetFull> {\n return axios.put(`/widgets/${id}`, payload)\n },\n delete(id: number) {\n return axios.delete(`/widgets/${id}`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { MoveParams, ZoomParams } from \"@/types\"\n\nexport const PtzApi = {\n presets: {\n index({ cameraExid }: { cameraExid: string }) {\n return axios.get(`/cameras/${cameraExid}/ptz/presets`)\n },\n go({\n cameraExid,\n presetId,\n }: {\n cameraExid: string\n presetId: string | number\n }) {\n return axios.post(`/cameras/${cameraExid}/ptz/presets/go/${presetId}`)\n },\n home({\n cameraExid,\n isRecordingFromNvr,\n }: {\n cameraExid: string\n isRecordingFromNvr: boolean\n }) {\n if (!isRecordingFromNvr) {\n return axios.post(`/cameras/${cameraExid}/ptz/home`)\n }\n\n return axios.post(`/cameras/${cameraExid}/ptz/relative`)\n },\n create({\n cameraExid,\n presetName,\n }: {\n cameraExid: string\n presetName: string\n }) {\n return axios.post(`/cameras/${cameraExid}/ptz/presets/create`, {\n presetName,\n })\n },\n update({\n cameraExid,\n presetId,\n presetName,\n }: {\n cameraExid: string\n presetId: string | number\n presetName: string\n }) {\n // eslint-disable-next-line\n return axios.post(`/cameras/${cameraExid}/ptz/presets/${presetId}/set`, {\n presetName,\n })\n },\n delete({\n cameraExid,\n presetId,\n }: {\n cameraExid: string\n presetId: string | number\n }) {\n // eslint-disable-next-line\n return axios.delete(\n `/cameras/${cameraExid}/ptz/presets/${presetId}/remove`\n )\n },\n },\n controls: {\n move({ cameraExid, direction, isRecordingFromNvr }: MoveParams) {\n if (!isRecordingFromNvr) {\n return axios.post(`/cameras/${cameraExid}/ptz/relative?${direction}=4`)\n }\n\n return axios.post(\n `/cameras/${cameraExid}/ptz/continuous/start/${direction}`\n )\n },\n zoom({ cameraExid, direction, isRecordingFromNvr }: ZoomParams) {\n if (!isRecordingFromNvr) {\n const zoomValue = direction === \"in\" ? 1 : -1\n\n return axios.post(\n `/cameras/${cameraExid}/ptz/relative?zoom=${zoomValue}`\n )\n }\n\n return axios.post(\n `/cameras/${cameraExid}/ptz/continuous/zoom/${direction}`,\n {\n direction,\n }\n )\n },\n stop({ cameraExid }: { cameraExid: string }) {\n return axios.post(`/cameras/${cameraExid}/ptz/continuous/stop`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport type {\n _360AssetsQueryParams,\n _360AssetsRequestPayload,\n _360AssetsUploadPayload,\n BimUploadPayload,\n BimUploadsQueryParams,\n CalculateMeasuringOperationRequestPayload,\n DronesQueryParams,\n DroneUploadUpdateRequestPayload,\n FlightImagesQueryParams,\n Generate360MapRequestPayload,\n InspectionToolRequestPayload,\n MobileCaptureSnapshot,\n} from \"@evercam/api/types\"\n\nexport const IngestApi = {\n drone: {\n createUpload(projectId: string, params: { uploadedBy: string }) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/${projectId}/upload`,\n null,\n { params }\n )\n },\n reprocessDrone(id: number, params: Record<string, unknown>) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/${id}/reprocess`,\n null,\n { params }\n )\n },\n getDrones(params: { params: Partial<DronesQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/drone/uploads/`, params)\n },\n getArchive(id: number, params: { dataType: string }) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/uploads/archive/${id}`,\n {\n params,\n }\n )\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/drone/uploads/${id}`)\n },\n prepareForUpload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n }\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/drone/${projectId}/prepare-upload`,\n null,\n { params }\n )\n },\n upload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n },\n payload: DroneUploadUpdateRequestPayload\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/drone/${projectId}/upload`,\n payload,\n { params }\n )\n },\n verifyToken(projectId: string, params: { token: string }) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/uploads/${projectId}/verify`,\n {\n params: { token: params.token },\n }\n )\n },\n calculateMeasuringOperation(\n projectId: string,\n params: CalculateMeasuringOperationRequestPayload\n ) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/calculate-measuring-operation`,\n params\n )\n },\n inspectionTool(projectId: string, params: InspectionToolRequestPayload) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/inspection-tool`,\n params\n )\n },\n isInspectionEnabled(projectId: string, params: Record<string, unknown>) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/inspection-enabled`,\n null,\n { params }\n )\n },\n getDroneQueueSize() {\n return axios.get(`${axios.env.ingestApiUrl}/drone/queue`)\n },\n getFlightImages(projectId: string, params: FlightImagesQueryParams) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/flight-images`,\n {\n params,\n }\n )\n },\n },\n assets360: {\n get360Assets(params: { params: Partial<_360AssetsQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/360/assets/`, params)\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/360/assets/${id}`)\n },\n getArchive(id: number, params: { dateType: string }) {\n return axios.get(`${axios.env.ingestApiUrl}/360/assets/archive/${id}`, {\n params,\n })\n },\n createUpload(projectId: string, params: _360AssetsRequestPayload) {\n return axios.post(\n `${axios.env.ingestApiUrl}/360/${projectId}/upload`,\n null,\n { params }\n )\n },\n upload(\n id: number,\n params: Record<string, unknown>,\n payload: _360AssetsUploadPayload\n ) {\n return axios.put(`${axios.env.ingestApiUrl}/360/${id}/upload`, payload, {\n params,\n })\n },\n generate360map(projectId: string, params: Generate360MapRequestPayload) {\n return axios.post(\n `${axios.env.ingestApiUrl}/360/api/${projectId}/generate-360-map`,\n params\n )\n },\n get360QueueSize() {\n return axios.get(`${axios.env.ingestApiUrl}/360/queue`)\n },\n },\n bim: {\n createUpload(projectId: string, params: { uploadedBy: string }) {\n return axios.post(\n `${axios.env.ingestApiUrl}/bim/${projectId}/upload`,\n null,\n { params }\n )\n },\n getBIMs(params: { params: Partial<BimUploadsQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/bim/uploads/`, params)\n },\n getArchive(id: number) {\n return axios.get(`${axios.env.ingestApiUrl}/bim/uploads/archive/${id}`)\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/bim/uploads/${id}`)\n },\n upload(\n projectId: string,\n params: {\n id: string\n name: string\n },\n payload: BimUploadPayload\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/bim/${projectId}/upload`,\n payload,\n { params }\n )\n },\n },\n mobileCapture: {\n getProjectMobileAssets(\n params: Record<string, unknown>\n ): Promise<MobileCaptureSnapshot[]> {\n return axios.get(`${axios.env.ingestApiUrl}/mobile/assets/`, {\n params,\n })\n },\n getMobileAssetPhoto(\n assetId: string | number,\n params: Record<string, unknown>\n ) {\n return axios.get(`${axios.env.ingestApiUrl}/mobile/assets/${assetId}`, {\n params,\n })\n },\n },\n getTotalQueueSize() {\n return axios.get(`${axios.env.ingestApiUrl}/queue`)\n },\n checkFlightAvailableFeatures(\n projectId: string,\n params: Record<string, unknown>\n ) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/flight-available-features`,\n {\n params,\n }\n )\n },\n}\n","import { axios } from \"./client\"\nimport {\n ExNvrDeviceConfig,\n ExNvrLoginResponse,\n ExNvrRecordingInterval,\n ExNvrSystemStatus,\n} from \"@evercam/api/types/\"\n\nexport const ExNvrApi = {\n users: {\n login(\n {\n apiUrl,\n username,\n password,\n }: {\n apiUrl: string\n username: string\n password: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrLoginResponse> {\n return axios.post(\n `${apiUrl}/api/users/login`,\n {\n username,\n password,\n },\n config\n )\n },\n },\n devices: {\n getDevices({\n apiUrl,\n token,\n }: {\n apiUrl: string\n token: string\n }): Promise<ExNvrDeviceConfig> {\n return axios.get(`${apiUrl}/api/devices/`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n },\n getSystemStatus(\n { apiUrl, token }: { apiUrl: string; token: string },\n config: Record<string, string> = {}\n ): Promise<ExNvrSystemStatus> {\n return axios.get(`${apiUrl}/api/system/status`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n getDeviceConfig(\n {\n apiUrl,\n deviceId,\n token,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrDeviceConfig> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n getAvailableRecordings(\n {\n apiUrl,\n deviceId,\n token,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrRecordingInterval[]> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}/recordings`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n downloadFootage({\n apiUrl,\n deviceId,\n token,\n startDate,\n duration,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n startDate: string\n duration: number\n }): Promise<Blob> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}/footage`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n params: {\n startDate,\n duration,\n },\n responseType: \"blob\",\n })\n },\n },\n}\n","import { axios } from \"./client\"\n\nexport const AuthzApi = {\n roles: {\n async get(params: any) {\n return await axios.get(\"/admin/authz/roles\", params)\n },\n async getRoleDetails(id: number) {\n return await axios.get(`/admin/authz/roles/${id}`)\n },\n createRole(params: any) {\n return axios.post(\"/admin/authz/roles\", params)\n },\n updateRole(id: number, params: any) {\n return axios.patch(`/admin/authz/roles/${id}`, params)\n },\n deleteRole(id: number) {\n return axios.delete(`/admin/authz/roles/${id}`)\n },\n addPermission(id: number, action: string) {\n return axios.post(`/admin/authz/roles/${id}/permissions/`, { action })\n },\n deletePermission(id: number, action: string) {\n return axios.delete(`/admin/authz/roles/${id}/permissions/${action}`)\n },\n async getRoleUsers(id: number) {\n return axios.get(`/admin/authz/roles/${id}/users`)\n },\n async assignUsers(id: number, emails: Array<string>, resource_id: string) {\n return axios.post(`/admin/authz/roles/${id}/users`, {\n emails,\n resource_id,\n })\n },\n async unassignUsers(\n id: number,\n emails: Array<string>,\n resource_id: string\n ) {\n return axios.delete(`/admin/authz/roles/${id}/users`, {\n params: {\n emails,\n resource_id,\n },\n })\n },\n getUserRoles() {\n return axios.get(\"/users/roles\")\n },\n },\n scopes: {\n async get() {\n return await axios.get(\"/admin/authz/scopes\")\n },\n create(params: any) {\n return axios.post(\"/admin/authz/scopes\", params)\n },\n delete(id: number) {\n return axios.delete(`/admin/authz/scopes/${id}`)\n },\n update(id: number, params: any) {\n return axios.patch(`/admin/authz/scopes/${id}`, params)\n },\n },\n}\n"],"names":["_360UrlParams","_360AssetType","_360IntergrationType","AconexDocumentDataType","AconexFormComponentType","AconexMandatoryStatus","AnalyticsEventPageId","AnalyticsEvent","AnprDirection","AnprEventStatus","MediaType","MediaFileType","MediaStatus","MediaStatusId","ClipsCategory","BimModelType","BimUploadStatus","BIMLayerTypes","CameraStatus","CameraFeatureFlag","NvrModel","CameraModel","ResolutionDimensions","ResolutionLabel","HddStatus","DuplicatedCameraFields","CompareStatus","CopilotMessageAuthor","CopilotMessageType","CopilotStepId","CopilotMissingFieldsLabels","CopilotSocketEvent","CopilotProvider","CopilotSuggestion","CopilotChatProvider","CopilotLayout","CopilotToolId","CopilotMissingFieldComponent","CopilotMissingFieldName","CopilotMissingFieldType","MilesightCameraCodecId","MilesightCameraVbrQualityId","MilesightCameraRateModeId","DroneUrlParams","ErrorType","EvercamApiErrorCode","GateReportDetectionType","GateReportEventType","DetectionLabel","SegmentLabel","GateReportVehicleType","GateReportDataSource","GateReportEventDirection","GateReportExportType","GateReportROIShapeType","GateReportProcessingStatus","VEHICLE_TYPE_IDS","IngestProcessingStatus","MapType","Connector","NotificationType","NvrDeviceType","NvrHddStatus","ProgressPhotoDialogType","ProjectStatus","ProjectArchiveTier","ProjectFeatureFlag","BrainTool","CloudRecordingFrequency","CloudRecordingDuration","CloudRecordingStatus","SnapshotExtractionInterval","VpnServer","RoiType","RoiShapeType","RoiDirection","UrlParamValue","TimelineUrlParam","Timeline360UrlParams","TimelineDroneUrlParams","TimelineMediaUrlParams","TimelineBimUrlParams","TimelineExNvrRecordingsUrlParams","TimelineAnprUrlParams","TimelineMobileCaptureUrlParams","TimelineCommentsUrlParams","PowerType","PowerSchedule","RouterStatus","SharePermission","ShareType","ShareRequestStatus","ShareVisibility","SmsCommands","SmsStatuses","EMapTypes","EPageType","EPaths","EProjectItems","ERoles","ExNvrHealthCheckTaskId","ExNvrFootageAvailableStatus","ExNvrDeviceState","ExNvrMetricId","TimelapseStatus","TimelapseDuration","TimelapseScheduleType","TimelapsePeriod","TimelapseExportStep","UserFeatureFlag","Persona","VideoWallItemType","WeatherProvider","UnitSystem","MobileDevice","_3dViewer","SsoProvider","InfoPage","EvercamGoFeatures","DownloadTypes","FeedbackContext","TimelinePrecision","TaskStatus","PtzDirection","ZoomDirection","KitStatus","KitAlarm","KitMetricId","KitMetricPeriod","GrafanaMetricId","KitChartType","AuditLogActionType","SnapshotExtractionStatus","SnapshotExtractionType","SiteAnalyticsMode","DelayUnit","CommonWidgetSettingsKeys","RecordingsWidgetSettingsKeys","LiveViewWidgetSettingsKeys","BimCompareWidgetSettingsKeys","VideoWallWidgetSettingsKeys","WidgetType","RessourceByType","CountryId","CountryCode","Region","CameraRegion","AutomationProvider","createErrorClass","errorName","error","e","BadRequestError","NotFoundError","UnauthorizedError","GatewayTimeoutError","BadGatewayError","ForbiddenError","HlsError","SnapshotError","ConflictError","InternalServerError","numberOfRequestsSentInThePastSecond","maxRequestsPerSecond","requestsRateLimit","r","onRequest","request","axiosEnv","ensureBaseUrl","addAuthTokenHeader","transformCamelCaseToSnakeCase","onResponse","response","_a","data","_b","camelizeKeys","_c","_e","_d","duration","onError","statusCode","method","url","backendErrorCode","_g","_f","customError","customMessage","Axios","breadcrumbLogger","JwtToken","paramsIgnoredCasing","params","acc","item","decamelizeKeys","formData","key","value","decamelize","OnRequestExpiredTokenInterceptor","isTokenExpired","handler","axios","requestInterceptors","responseInterceptors","errorInterceptors","vars","requestInterceptor","errorInterceptor","interceptor","responseInterceptor","setHeader","headerName","setToken","token","cancelTokens","t","AdminApi","cameraId","device","payload","exid","id","template","extractionId","projectExid","kitId","metric","fromDate","toDate","cameraExid","ids","simId","number","email","VideoWallApi","projectId","encodedEmail","headers","preset","presetName","_3dFirebaseApi","res","toQueryString","paramsObject","forceSnakeCase","forceArrayBrackets","param","index","encodedParam","_acc","v","i","paramName","queryStringToObject","queryString","getAiApiUrl","AiApi","updatedBy","anprEventId","eventBody","anprEventsIds","action","extraParams","eventId","eventType","eventTime","timestamp","roi","WebRtcApi","tag","WeatherApi","weatherProvider","getLabsBaseUrl","labsPrNumber","EvercamLabsApi","host","httpPort","username","password","config","conversationId","message","messageId","precision","segmentId","prefix","fileName","metrics","period","EvercamApi","apiId","apiKey","widgetId","widgetKey","provider","user","sessionId","dateTime","name","hubId","parentFolderId","getDerivatives","folderId","year","month","day","cancelToken","progressPhotoId","companyExid","companyId","archive","PtzApi","presetId","isRecordingFromNvr","direction","zoomValue","IngestApi","assetId","ExNvrApi","apiUrl","deviceId","startDate","AuthzApi","emails","resource_id"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../types/360.ts","../types/aconex.ts","../types/analytics.ts","../types/anpr.ts","../types/media.ts","../types/bim.ts","../types/camera.ts","../types/compare.ts","../types/copilot.ts","../types/drone.ts","../types/errors.ts","../types/gateReport.ts","../types/hdd.ts","../types/ingest.ts","../types/map.ts","../types/connector.ts","../types/notification.ts","../types/nvr.ts","../types/procore.ts","../types/progressPhoto.ts","../types/project.ts","../types/recording.ts","../types/roi.ts","../types/routeParams.ts","../types/router.ts","../types/shares.ts","../types/sim.ts","../types/systemCheck.ts","../types/planner.ts","../types/streaming.ts","../types/timelapse.ts","../types/user.ts","../types/videoWall.ts","../types/weather.ts","../types/comments.ts","../types/detections.ts","../types/shared.ts","../types/kit.ts","../types/auditLogs.ts","../types/snapshots.ts","../types/siteAnalytics.ts","../types/widget.ts","../types/countries.ts","../types/automation.ts","../types/posthog.ts","../api/client/customErrors.ts","../api/client/interceptors.ts","../../../node_modules/idb-keyval/dist/index.js","../api/client/swr/SwrStore.ts","../api/client/swr/Swr.ts","../api/client/axios.ts","../api/adminApi.ts","../api/videoWallApi.ts","../api/3dFirebaseApi.ts","../utils.ts","../api/aiApi.ts","../api/webRtcApi.ts","../api/weatherApi.ts","../api/evercamLabsApi.ts","../api/evercamApi.ts","../api/ptzApi.ts","../api/ingestApi.ts","../api/exNvrApi.ts","../api/authzApi.ts"],"sourcesContent":["import { DateType } from \"@/types/time\"\n\nexport type _360CameraParams = {\n azimuthAngle: number\n polarAngle: number\n}\n\nexport type _360Floor = {\n floorID: string\n name: string\n}\n\nexport type _360Scene = {\n date: string // DD-MM-YYYY\n dateID: string\n floors: _360Floor[]\n polarAngle: number\n azimuthAngle: number\n}\n\nexport type _360ProjectJsonResponse = {\n dates: _360Scene[]\n [key: string]: any\n}\n\nexport type MobileCaptureSnapshot = {\n id: string\n uploadedBy: string\n updatedAt: string //YYYY-MM-DDTHH:mm:SS.MS (ISO)\n assetType: string //mobile_photos or mobile_audios\n thumbnailUrl: string //presigned S3 URL\n}\n\nexport enum _360UrlParams {\n DateId = \"date_id\",\n Floor = \"floor\",\n Marker = \"marker\",\n PolarAngle = \"polarAngle\",\n AzimuthAngle = \"azimuthAngle\",\n}\n\nexport enum _360AssetType {\n Video = \"video\",\n Image = \"image\",\n Model = \"model\",\n Route = \"route\",\n MobilePhoto = \"mobile_photos\",\n MobileAudio = \"mobile_audios\",\n}\n\nexport enum _360Feature {\n BIM = \"BIM\",\n Minimap = \"Minimap\",\n Minimodel = \"Minimodel\",\n}\n\nexport enum _360IntergrationType {\n Evercam = \"Evercam\",\n Matterport = \"Matterport\",\n OpenSpace = \"Openspace\",\n HoloBuilder = \"Holobuilder\",\n DroneDeploy = \"Dronedeploy\",\n}\n\nexport enum PathMarkerColor {\n Start = \"#00e74c\",\n End = \"#fd7567\",\n Default = \"#2196F3\",\n}\n\nexport type _360AssetsQueryParams = {\n page: number\n limit: number\n projectID: string\n date: DateType\n floor: string\n id: string\n}\n\nexport type _360AssetsRequestPayload = {\n projectId: string\n date: DateType\n floor: string\n uploadedBy?: string\n}\n\nexport type _360AssetsUploadPayload = {\n targetPointsCount: number\n assetType: string\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n deviceSerial: string\n startPosition: string\n endPosition: string\n isTimelapse: boolean\n isImagesOnly: boolean\n}\n\nexport type Generate360MapRequestPayload = {\n dateId: string\n floorId: string\n cameraOffset: string\n startPoint: string\n endPoint: string\n}\n","export type AconexUserProjectsResponsePayload = Array<{\n id: number\n name: string\n shortName: string\n startDate: string\n endDate: string\n}>\n\nexport type AconexDocumentSchemaField = {\n dataType: AconexDocumentDataType\n identifier: string\n schemaValues?: Array<{ id: string; value: string }>\n fieldName: string\n mandatoryStatus: AconexMandatoryStatus\n componentType?: AconexFormComponentType\n items?: Array<any>\n disabled?: boolean\n}\n\nexport enum AconexDocumentDataType {\n Long = \"LONG\",\n Integer = \"INTEGER\",\n String = \"STRING\",\n Boolean = \"BOOLEAN\",\n Date = \"DATE\",\n}\n\nexport enum AconexFormComponentType {\n Select = \"SelectField\",\n Text = \"TextField\",\n DateTime = \"DateTimeField\",\n Switch = \"SwitchField\",\n}\n\nexport enum AconexMandatoryStatus {\n Mandatory = \"MANDATORY\",\n NotMandatory = \"NOT_MANDATORY\",\n}\n\nexport type AconexAuthCallbackParams = {\n code: string\n location: string\n}\n\nexport type AconexEditedImageUploadRequestPayload = {\n projectExid: string\n snapshot: string\n}\n","export enum AnalyticsEventPageId {\n Timeline = \"Timeline\",\n Copilot = \"Copilot\",\n Recordings = \"Recordings\",\n Liveview = \"LiveView\",\n Compare = \"Compare\",\n BimCompare = \"BimCompare\",\n Sharing = \"Sharing\",\n Timelapse = \"Timelapse\",\n Project = \"Project\",\n AllProjects = \"AllProjects\",\n Tutorials = \"Tutorials\",\n SystemCheck = \"SystemCheck\",\n ProjectMapView = \"ProjectMapView\",\n AccountMapView = \"AccountMapView\",\n Automations = \"Automations\",\n ProgressPhotosUnsubscribe = \"ProgressPhotosUnsubscribe\",\n VideoWall = \"VideoWall\",\n ProjectSettings = \"ProjectSettings\",\n ProjectSettingsCameraSettings = \"ProjectSettings-CameraSettings\",\n ProjectSettingsMembers = \"ProjectSettings-Members\",\n ProjectSettingsOverview = \"ProjectSettings-Overview\",\n ProjectSettingsDangerZone = \"ProjectSettings-DangerZone\",\n Settings = \"Settings\",\n SettingsAccount = \"Settings-Account\",\n SettingsConnectors = \"Settings-Connectors\",\n MediaHub = \"MediaHub\",\n MediaOveriew = \"MediaOveriew\",\n GateReport = \"GateReport\",\n Bim = \"Bim\",\n Drone = \"Drone\",\n ThreeSixty = \"360\",\n Planner = \"Planner\",\n Widgets = \"Widgets\",\n Company = \"Company\",\n EmbeddedLive = \"EmbeddedLive\",\n EmbeddedRecordings = \"EmbeddedRecordings\",\n EmbeddedBimCompare = \"EmbeddedBimCompare\",\n GateReportInfo = \"GateReportInfo\",\n BimInfo = \"BimInfo\",\n DroneInfo = \"DroneInfo\",\n ThreeSixtyInfo = \"360Info\",\n BimCompareInfo = \"BimCompareInfo\",\n WeatherReport = \"WeatherReport\",\n PpeReport = \"PpeReport\",\n SmartSearch = \"SmartSearch\",\n}\n\nexport enum AnalyticsEvent {\n // Global events\n PageView = \"PageView\",\n OpenCompanyPage = \"OpenCompanyPage\",\n OpenSettings = \"OpenSettings\",\n ToggleHelpDialog = \"ToggleHelpDialog\",\n\n // Layout events\n LayoutToggleRightSidebar = \"Layout-ToggleRightSidebar\",\n LayoutResizeRightSidebar = \"Layout-ResizeRightSidebar\",\n LayoutThemeMode = \"Layout-ThemeMode\",\n\n // Features toggle events\n Xray = \"Xray-Toggle\",\n Weather = \"Weather-Toggle\",\n MarkUpTool = \"MarkUpTool-Toggle\",\n Comment = \"Comment-Toggle\",\n Compare = \"Compare-Toggle\",\n Copilot = \"Copilot-Toggle\",\n DownloadMediaOpen = \"DownloadMedia-Open\",\n\n // App settings events\n SettingsAccountUpdatePassword = \"UpdatePassword\",\n SettingsAccountUpdatePersonalInformation = \"UpdatePersonalInformation\",\n SettingsAccountRevokeSession = \"RevokeSession\",\n SettingsAccountCancelRevokeSession = \"CancelRevokeSession\",\n SettingsAccountClickRowsPerPage = \"ClickRowsPerPage\",\n SettingsAccountOpenDeleteAccountDialog = \"DeleteAccount\",\n SettingsConnectorsConnectToProcore = \"ConnectToProcore\",\n SettingsConnectorsConnectToAconex = \"ConnectToAconex\",\n SettingsConnectorsConnectToAutodesk = \"ConnectToAutodesk\",\n SettingsConnectorsConnectToVoyageControl = \"ConnectToVoyageControl\",\n SettingsConnectorsContactUsButtonClick = \"ClickContactUs\",\n SettingsConnectorsRemoveAconexConnection = \"RemoveAconex\",\n SettingsConnectorsRemoveAutodeskConnection = \"RemoveAutodesk\",\n SettingsConnectorsRemoveProcoreConnection = \"RemoveProcore\",\n SettingsConnectorsRemoveVoyageControlConnection = \"RemoveVoyageControl\",\n SettingsConnectorsToggleConnectorPromptDialog = \"ToggleConnectorPromptDialog\",\n SettingsConnectorsToggleVoyageControlDialog = \"ToggleVoyageControlDialog\",\n\n // Widgets events\n WidgetsAddWidgetClick = \"AddWidget\",\n WidgetsCancelClick = \"Cancel\",\n WidgetsEditHeight = \"EditHeight\",\n WidgetsEditHeightResolutionType = \"EditHeightResolutionType\",\n WidgetsEditWidth = \"EditWidth\",\n WidgetsEditWidthResolutionType = \"EditWidthResolutionType\",\n WidgetsLayout = \"ClickLayout\",\n WidgetsSaveClick = \"Save\",\n WidgetsSelectCamera = \"SelectCamera\",\n WidgetsSelectTypeBIMCompare = \"SelectTypeBIMCompare\",\n WidgetsSelectTypeLiveView = \"SelectTypeLiveView\",\n WidgetsSelectTypeRecordings = \"SelectTypeRecordings\",\n WidgetsSelectTypeVideoWall = \"SelectTypeVideoWall\",\n WidgetsSettingRefreshRate = \"EditRefreshRate\",\n WidgetsSettingRestrictRecentImagesInput = \"EditRestrictRecentImagesInput\",\n WidgetsSettingToggleBIMCompareDarkMode = \"ToggleBIMDarkMode\",\n WidgetsSettingToggleBIMCompareTimeLine = \"ToggleBIMTimeline\",\n WidgetsSettingToggleBIMCompareCalendar = \"ToggleBIMCalendar\",\n WidgetsSettingToggleDownload = \"ToggleDownload\",\n WidgetsSettingToggleFullScreen = \"ToggleFullScreen\",\n WidgetsSettingTogglePlayPause = \"TogglePlayPause\",\n WidgetsSettingToggleRecordingsCalendar = \"ToggleRecordingsCalendar\",\n WidgetsSettingToggleRecordingsDarkMode = \"ToggleRecordingsDarkMode\",\n WidgetsSettingToggleRestrictRecentImages = \"ToggleRestrictRecentImages\",\n WidgetsSettingToggleZoom = \"ToggleZoom\",\n WidgetsTogglePublicWidget = \"TogglePublicWidget\",\n\n // Player events\n PlayerSelectCamera = \"Player-SelectCamera\",\n PlayerDownload = \"Player-Download\",\n PlayerToggleFullscreen = \"Player-ToggleFullscreen\",\n PlayerEnableLive = \"Player-EnableLive\",\n PlayerTogglePlayback = \"Player-TogglePlayback\",\n PlayerSelectSpeed = \"Player-SelectSpeed\",\n PlayerSelectQuality = \"Player-SelectQuality\",\n PlayerJumptoNextTicks = \"Player-JumptoNextTicks\",\n PlayerJumptoPreviousTicks = \"Player-JumptoPreviousTicks\",\n PlayerSwitchMode = \"Player-SwitchMode\",\n PlayerZoomIn = \"Player-ZoomIn\",\n PlayerZoomOut = \"Player-ZoomOut\",\n\n // PTZ camera events\n PTZAddPresetClick = \"PTZ-AddPresetClick\",\n PTZCreatePreset = \"PTZ-CreatePreset\",\n PTZUpdatePreset = \"PTZ-UpdatePreset\",\n PTZDeletePreset = \"PTZ-DeletePreset\",\n PTZMoveDown = \"PTZ-MoveDown\",\n PTZMoveLeft = \"PTZ-MoveLeft\",\n PTZMoveRight = \"PTZ-MoveRight\",\n PTZMoveUp = \"PTZ-MoveUp\",\n PTZPresetSelect = \"PTZ-PresetSelect\",\n PTZResetPosition = \"PTZ-ResetPosition\",\n PTZToggleCreatePresetForm = \"PTZ-ToggleCreatePresetForm\",\n PTZToggleDeletePresetDialog = \"PTZ-ToggleDeletePresetDialog\",\n PTZToggleEditPresetForm = \"PTZ-ToggleEditPresetForm\",\n PTZTogglePresetsMenu = \"PTZ-TogglePresetsMenu\",\n PTZZoomIn = \"PTZ-ZoomIn\",\n PTZZoomOut = \"PTZ-ZoomOut\",\n\n // Timeline actions\n TimelineClickEvent = \"Timeline-ClickEvent\",\n TimelineCompareMoveBeforeMarker = \"Compare-MoveBeforeMarker\",\n TimelineCompareMoveAfterMarker = \"Compare-MoveAfterMarker\",\n TimelineCompareSlide = \"Compare-Slide\",\n TimelineSelectMilestoneItem = \"Timeline-SelectMilestoneItem\",\n TimelineSelectTimestamp = \"Timeline-SelectTimestamp\",\n\n // Copilot\n CopilotSendMessage = \"Copilot-SendMessage\",\n CopilotClickTimestamp = \"Copilot-ClickTimestamp\",\n CopilotRegenerate = \"Copilot-Regenerate\",\n CopilotError = \"Copilot-Error\",\n CopilotNavigation = \"Copilot-Navigation\",\n CopilotToggle = \"Copilot-Toggle\",\n\n // Timeline groups visibility events\n GroupsVisibilityMobileCapture = \"GroupsVisibility-MobileCapture\",\n GroupsVisibilityAnpr = \"GroupsVisibility-Anpr\",\n GroupsVisibilityComments = \"GroupsVisibility-Comments\",\n GroupsVisibilityMediaHub = \"GroupsVisibility-MediaHub\",\n GroupsVisibilityBimMilestones = \"GroupsVisibility-BimMilestines\",\n GroupsVisibilityDroneFlights = \"GroupsVisibility-DroneFlights\",\n GroupsVisibility360Walks = \"GroupsVisibility-360Walks\",\n GroupsVisibilityExNvrVideoRecordings = \"GroupsVisibility-ExNvrVideoRecordings\",\n GroupsVisibilityLuminance = \"GroupsVisibility-Luminance\",\n\n // Comments events\n CommentsPlaceMarker = \"Comments-PlaceMarker\",\n CommentsSave = \"Comments-Save\",\n CommentsCancelSave = \"Comments-CancelSave\",\n CommentsRemove = \"Comments-Remove\",\n CommentsCancelRemove = \"Comments-CancelRemove\",\n CommentsArchive = \"Comments-Archive\",\n CommentsCancelArchive = \"Comments-CancelArchive\",\n CommentsSelect = \"Comments-Select\",\n\n // Xray events\n XrayMove = \"Xray-Move\",\n XrayMoveBeforeMarker = \"Xray-MoveBeforeMarker\",\n XrayMoveAfterMarker = \"Xray-MoveAfterMarker\",\n XrayToggleExportDialog = \"Xray-ToggleExportDialog\",\n XrayDownload = \"Xray-Download\",\n XraySaveToMediaHub = \"Xray-SaveToMediaHub\",\n XarySelectDate = \"Xray-SelectDate\",\n XarySelectLatestDate = \"Xray-SelectLatestDate\",\n XarySelectOldestDate = \"Xray-SelectOldestDate\",\n XraySendToConnector = \"Xray-SendToConnector\",\n\n // Weather events\n WeatherGoBackDate = \"Weather-GoBackDate\",\n WeatherGoForwardDate = \"Weather-GoForwardDate\",\n WeatherReportExportFile = \"ExportFile\",\n WeatherReportExportType = \"ExportType\",\n WeatherReportMediaHubUploadFile = \"MediaHubUploadFile\",\n WeatherReportSelectStartDate = \"SelectStartDate\",\n WeatherReportSelectEndDate = \"SelectEndDate\",\n WeatherReportViewChart = \"ViewChart\",\n WeatherSelectDate = \"Weather-SelectDate\",\n WeatherSelectLegend = \"Weather-SelectLegend\",\n WeatherSelectProvider = \"Weather-SelectProvider\",\n WeatherSelectTempScale = \"Weather-SelectTempScale\",\n\n // Compare events\n CompareSlide = \"Slide\",\n CompareSelectBeforeDate = \"SelectBeforeDate\",\n CompareSelectBeforeLatestDate = \"SelectBeforeLatestDate\",\n CompareSelectBeforeOldestDate = \"SelectBeforeOldestDate\",\n CompareSelectAfterDate = \"SelectAfterDate\",\n CompareSelectAfterOldestDate = \"SelectAfterOldestDate\",\n CompareSelectAfterLatestDate = \"SelectAfterLatestDate\",\n CompareToggleExportDialog = \"ToggleExportDialog\",\n CompareSaveToMediaHub = \"SaveToMediaHub\",\n CompareGoToMediaHub = \"GoToMediaHub\",\n CompareDownloadAs = \"DownloadAs\",\n CompareCopyDownloadFileUrl = \"CopyDownloadFileUrl\",\n\n // Bim Compare events\n BimCompareSlide = \"BimCompare-Slide\",\n BimCompareSelectCameraDate = \"BimCompare-SelectCameraDate\",\n BimCompareSelectCameraLatestDate = \"BimCompare-SelectCameraLatestDate\",\n BimCompareSelectCameraOldestDate = \"BimCompare-SelectCameraOldestDate\",\n BimCompareSelectBimDate = \"BimCompare-SelectBimDate\",\n BimCompareSelectBimOldestDate = \"BimCompare-SelectBimOldestDate\",\n BimCompareSelectBimLatestDate = \"BimCompare-SelectBimLatestDate\",\n BimCompareSelectModel = \"BimCompare-SelectModel\",\n BimCompareChangeTransparency = \"BimCompare-ChangeTransparency\",\n BimCompareSelectTimelineDate = \"BimCompare-SelectTimelineDate\",\n BimCompareToggleExportDialog = \"BimCompare-ToggleExportDialog\",\n BimCompareSaveToMediaHub = \"BimCompare-SaveToMediaHub\",\n BimCompareGoToMediaHub = \"BimCompare-GoToMediaHub\",\n BimCompareDownloadAs = \"BimCompare-DownloadAs\",\n BimCompareCopyDownloadFileUrl = \"BimCompare-CopyDownloadFileUrl\",\n\n // Mark-up tool events\n MarkUpToolClose = \"MarkUpTool-Close\",\n MarkUpToolCopyImage = \"MarkUpTool-CopyImage\",\n MarkUpToolOpen = \"MarkUpTool-Open\",\n MarkUpToolSelectTool = \"MarkUpTool-SelectTool\",\n MarkUpToolSelectBlur = \"MarkUpTool-SelectBlur\",\n MarkUpToolSelectCrop = \"MarkUpTool-SelectCrop\",\n MarkUpToolSelectLine = \"MarkUpTool-SelectLine\",\n MarkUpToolSelectBrush = \"MarkUpTool-SelectBrush\",\n MarkUpToolSelectRectangle = \"MarkUpTool-SelectRectangle\",\n MarkUpToolSelectCircle = \"MarkUpTool-SelectCircle\",\n MarkUpToolSelectArrow = \"MarkUpTool-SelectArrow\",\n MarkUpToolSelectText = \"MarkUpTool-SelectText\",\n MarkUpToolUndo = \"MarkUpTool-Undo\",\n MarkUpToolRedo = \"MarkUpTool-Redo\",\n MarkUpToolSelectColor = \"MarkUpTool-SelectColor\",\n MarkUpToolApplyCrop = \"MarkUpTool-ApplyCrop\",\n MarkUpToolCancelCrop = \"MarkUpTool-CancelCrop\",\n MarkUpToolCancelSend = \"MarkUpTool-CancelSend\",\n MarkUpToolOpenEditName = \"MarkUpTool-OpenEditName\",\n MarkUpToolCancelEditName = \"MarkUpTool-CancelEditName\",\n MarkUpToolSaveEditedName = \"MarkUpTool-SaveEditedName\",\n MarkUpToolSaveToMediaHub = \"MarkUpTool-SaveToMediaHub\",\n MarkUpToolDownloadAs = \"MarkUpTool-DownloadAs\",\n MarkUpToolSendToConnector = \"MarkUpTool-SendToConnector\",\n\n // Ai Tools events\n AiToolToggleBrainToolsMenu = \"AITool-ToggleBrainToolsMenu\",\n AiToolSelectObjectDetection = \"AITool-SelectObjectDetection\",\n AiToolSelectAskChatGpt = \"AITool-SelectAskChatGpt\",\n AiToolSelectSegmentation = \"AITool-SelectSegmentation\",\n AiToolUpdateTransparency = \"AITool-UpdateTransparency\",\n\n // Recordings events\n RecordingsCancelExportDialog = \"CancelExportDialog\",\n RecordingsClickSupportLink = \"ClickSupportLink\",\n RecordingsCreateClip = \"CreateClip\",\n RecordingsToggleExportDialog = \"ToggleExportDialog\",\n RecordingToggleGateReportEvents = \"ToggleGateReportEvents\",\n RecordingsSelectDate = \"SelectDate\",\n RecordingsSelectDateClickMonthYear = \"SelectDate-ClickMonthYear\",\n RecordingsSelectLatestDate = \"SelectLatestDate\",\n RecordingsSelectOldestDate = \"SelectOldestDate\",\n\n // Sharing events\n SharingToggleAddUserDialog = \"ToggleAddUserDialog\",\n SharingToggleEditVisibilityOptionsDialog = \"ToggleEditVisibilityOptionsDialog\",\n SharingAddUser = \"AddUser\",\n SharingToggleDeleteUserDialog = \"ToggleDeleteUserDialog\",\n SharingDeleteUser = \"DeleteUser\",\n SharingSaveVisibilityOptions = \"SaveVisibilityOptions\",\n SharingCopyLink = \"CopyLink\",\n SharingResendInvite = \"ResendInvite\",\n SharingTransferOwnership = \"TransferOwnership\",\n SharingSortBy = \"SortBy\",\n SharingChangeAccessRight = \"ChangeAccessRight\",\n\n // ThreeSixty events\n ThreeSixtyGallery = \"Gallery\",\n ThreeSixtyGalleryToggleUploadDialog = \"Gallery-ToggleUploadDialog\",\n ThreeSixtyChangeDate = \"ChangeDate\",\n ThreeSixtyChangeFloor = \"ChangeFloor\",\n ThreeSixtyCloseCompare = \"CloseCompare\",\n ThreeSixtyCloseForgeBIM = \"CloseForgeBIM\",\n ThreeSixtyDeleteComment = \"DeleteComment\",\n ThreeSixtyDisableMeasuringTool = \"DisableMeasuringTool\",\n ThreeSixtyDisableCommnetTool = \"DisableCommentTool\",\n ThreeSixtyEnableMeasuringTool = \"EnableMeasuringTool\",\n ThreeSixtyEnableCommentTool = \"EnableCommentTool\",\n ThreeSixtyLockCompare = \"LockCompare\",\n ThreeSixtyLockForgeBIM = \"LockForgeBIM\",\n ThreeSixtyMarkerThumbnailClicked = \"MarkerThumbnailClicked\",\n ThreeSixtyMiniMapMarkerClicked = \"MiniMapMarkerClicked\",\n ThreeSixtyOpen = \"Open\",\n ThreeSixtyOpenCompare = \"OpenCompare\",\n ThreeSixtyOpenForgeBIM = \"OpenForgeBIM\",\n ThreeSixtyOpenMarkersThumbnailsList = \"OpenMarkersThumbnailsList\",\n ThreeSixtyOpenCommentsList = \"OpenCommentsList\",\n ThreeSixtySaveComment = \"SaveComment\",\n ThreeSixtyUnarchiveComment = \"UnarchiveComment\",\n ThreeSixtyArchiveComment = \"ArchiveComment\",\n ThreeSixtyShareView = \"ShareView\",\n ThreeSixtyCommentClicked = \"CommentClicked\",\n ThreeSixtyToggleMarkersVisibility = \"ToggleMarkersVisibility\",\n ThreeSixtyToggleMinimapVisibility = \"ToggleMinimapVisibility\",\n ThreeSixtyToggleMiniModel = \"ToggleMiniModel\",\n ThreeSixtyToggleCommentsVisibility = \"ToggleCommentsVisibility\",\n ThreeSixtyTourPause = \"Tour-Pause\",\n ThreeSixtyTourPlay = \"Tour-Play\",\n ThreeSixtyTourSetSpeedXHalve = \"Tour-SetSpeedX0.5\",\n ThreeSixtyTourSetSpeedX1 = \"Tour-SetSpeedX1\",\n ThreeSixtyTourSetSpeedX2 = \"Tour-SetSpeedX2\",\n ThreeSixtyTourSetSpeedX4 = \"Tour-SetSpeedX4\",\n ThreeSixtyTourToggleLoop = \"Tour-ToggleLoop\",\n ThreeSixtyUnlockCompare = \"UnlockCompare\",\n ThreeSixtyUnlockForgeBIM = \"UnlockForgeBIM\",\n ThreeSixtyUpdateFloorName = \"UpdateFloorName\",\n ThreeSixtyUploadAssets = \"UploadAssets\",\n\n // Drone events\n DroneAreaToolClick = \"AreaTool-Click\",\n DroneChangeDate = \"ChangeDate\",\n DroneChooseTagType = \"ChooseTagType\",\n DroneClickCameraLiveView = \"ClickCameraLiveView\",\n DroneClickCameraMarker = \"ClickCameraMarker\",\n DroneCompareToolClick = \"CompareTool-Click\",\n DroneCompareToolSaveToMediaHub = \"CompareToolSaveToMediaHub\",\n DroneCompareToolSliderMove = \"CompareTool-SliderMove\",\n DroneCompareToolToggleExportDialog = \"CompareToolToggleExportDialog\",\n DroneCopyLocationToClipboard = \"CopyLocationToClipboard\",\n DroneEnable2DImagery = \"Enable2DImagery\",\n DroneGenerateUploadFlight = \"GenerateUploadFlight\",\n DroneInspectionToolClick = \"InspectionTool-Click\",\n DroneMeasuringToolClick = \"MeasuringTool-Click\",\n DroneOpenHelpPanel = \"OpenHelpPanel\",\n DroneOpenImageViewer = \"OpenImageViewer\",\n DroneResetView = \"ResetView\",\n DroneSaveTag = \"SaveTag\",\n DroneSettingsToggle360PathsVisibility = \"Settings-Toggle360PathsVisibility\",\n DroneSettingsToggleCameraMarkersVisibility = \"Settings-ToggleCameraMarkersVisibility\",\n DroneSettingsToggleSurroundingBuildingsTool = \"Settings-ToggleSurroundingBuildingsTool\",\n DroneSettingsToggleTagsVisibility = \"Settings-ToggleTagsVisibility\",\n DroneShareLink = \"ShareLink\",\n DroneTagsToolClick = \"TagsTool-Click\",\n DroneToggleBimCompareTool = \"ToggleBimCompareTool\",\n DroneToggleFullScreen = \"ToggleFullScreen\",\n DroneToggleMapStyle = \"ToggleMapStyle\",\n DroneToggleQualityMode = \"ChooseQuality\",\n DroneToggleSideMenu = \"ToggleSideMenu\",\n DroneToggleImageryPlan = \"ToggleImageryPlan\",\n DroneToggleSceneMode = \"ToggleSceneMode\",\n DroneUploadFlight = \"UploadFlight\",\n DroneViewLocationInGoogleMaps = \"ViewLocationInGoogleMaps\",\n DroneVolumeToolClick = \"VolumeTool-Click\",\n DroneZoomIn = \"ZoomIn\",\n DroneZoomOut = \"ZoomOut\",\n\n // Planner events\n PlannerAddCameraClick = \"AddCameraClick\",\n PlannerAddSitePlanDrawingClick = \"AddSitePlanDrawingClick\",\n PlannerAddSitePlanClick = \"AddSitePlanClick\",\n PlannerAttachSitePlanDrawing = \"AttachSitePlanDrawing\",\n PlannerCameraMarkerEditFOVAngle = \"CameraMarker-EditFOVAngle\",\n PlannerCameraMarkerEditHeading = \"CameraMarker-EditHeading\",\n PlannerCameraMarkerEditName = \"CameraMarker-EditName\",\n PlannerCameraMarkerEditRadius = \"CameraMarker-EditRadius\",\n PlannerCameraMarkerSelectColor = \"CameraMarker-SelectColor\",\n PlannerCameraMarkerToggleVisibility = \"CameraMarker-ToggleVisibility\",\n PlannerCameraMarkerToggleDeleteDialog = \"CameraMarker-ToggleDeleteDialog\",\n PlannerCancelUploadSitePlanDrawing = \"CancelUploadSitePlanDrawing\",\n PlannerChangeLocation = \"ChangeLocation\",\n PlannerOpen = \"Open\",\n PlannerResetView = \"ResetView\",\n PlannerSitePlansList = \"SitePlansList\",\n PlannerToggleCamerasLabel = \"ToggleCamerasLabel\",\n PlannerToggleFullscreen = \"ToggleFullscreen\",\n PlannerToggleMapStyle = \"ToggleMapStyle\",\n PlannerToggleSaveSessionDialog = \"ToggleSaveSessionDialog\",\n PlannerUploadSitePlanDrawing = \"UploadSitePlanDrawing\",\n PlannerZoomIn = \"ZoomIn\",\n PlannerZoomOut = \"ZoomOut\",\n\n // Markers events\n MarkerClicked = \"MarkerClicked\",\n\n // Timelapse Creator events\n TimelapseToggleHelpDialog = \"ToggleHelpDialog\",\n TimelapseSelectCustomPeriod = \"SelectCustomPeriod\",\n TimelapseToggleCustomScheduleDialog = \"ToggleCustomScheduleDialog\",\n TimelapseSaveCustomSchedule = \"SaveCustomSchedule\",\n TimelapseToggleExportDialog = \"ToggleExportDialog\",\n TimelapseExportSelectStep = \"SelectStep\",\n TimelapseSelectOption = \"SelectOption\",\n TimelapseSelectSchedule = \"SelectSchedule\",\n TimelapseSaveToMediaHub = \"SaveToMediaHub\",\n TimelapseGoToMediaHub = \"GoToMediaHub\",\n TimelapseToggleUploadLogoDialog = \"ToggleUploadLogoDialog\",\n TimelapseUploadLogo = \"UploadLogo\",\n\n // Progress Photos events\n ProgressPhotoCancelPause = \"ProgressPhoto-CancelPause\",\n ProgressPhotoCancelResume = \"ProgressPhoto-CancelResume\",\n ProgressPhotoCancelDelete = \"ProgressPhoto-CancelDelete\",\n ProgressPhotoCreate = \"ProgressPhoto-Create\",\n ProgressPhotoDelete = \"ProgressPhoto-Delete\",\n ProgressPhotoEdit = \"ProgressPhoto-Edit\",\n ProgressPhotoEditCamerasFilter = \"ProgressPhoto-EditCamerasFilter\",\n ProgressPhotoEditDaysFilter = \"ProgressPhoto-EditDaysFilter\",\n ProgressPhotoEditProjectsFilter = \"ProgressPhoto-EditProjectsFilter\",\n ProgressPhotoEditSearchFilter = \"ProgressPhoto-EditSearchFilter\",\n ProgressPhotoEditStatusFilter = \"ProgressPhoto-EditStatusFilter\",\n ProgressPhotoEditUsersFilter = \"ProgressPhoto-EditUsersFilter\",\n ProgressPhotoFiltersClicked = \"ProgressPhoto-FiltersClicked\",\n ProgressPhotoPause = \"ProgressPhoto-Pause\",\n ProgressPhotoResume = \"ProgressPhoto-Resume\",\n ProgressPhotoResumeDelete = \"ProgressPhoto-ResumeDelete\",\n ProgressPhotoSelectType = \"ProgressPhoto-SelectType\",\n ProgressPhotoSelectCameras = \"ProgressPhoto-SelectCameras\",\n ProgressPhotoSelectDays = \"ProgressPhoto-SelectDays\",\n ProgressPhotoSelectMember = \"ProgressPhoto-SelectMember\",\n ProgressPhotoSelectProvider = \"ProgressPhoto-SelectProvider\",\n ProgressPhotoSelectTime = \"ProgressPhoto-SelectTime\",\n ProgressPhotoSelectTimezone = \"ProgressPhoto-SelectTimezone\",\n ProgressPhotoSelectDelay = \"ProgressPhoto-SelectDelay\",\n ProgressPhotoToggleCreateDialog = \"ProgressPhoto-ToggleCreateDialog\",\n ProgressPhotoToggleEditDialog = \"ProgressPhoto-ToggleEditDialog\",\n ProgressPhotoUnsubscribeUser = \"ProgressPhoto-UnsubscribeUser\",\n\n // Map View events\n MapViewChooseSatellite = \"MapView-ChooseSatellite\",\n MapViewChooseTerrain = \"MapView-ChooseMap\",\n MapViewClickCameraLink = \"MapView-ClickCameraLink\",\n MapViewToggleCameraMapInfoTooltip = \"MapView-ToggleCameraMapInfoTooltip\",\n\n // Video Wall events\n VideoWallToggleFullscreen = \"VideoWall-ToggleFullscreen\",\n VideoWallToggleCameraFullscreen = \"VideoWall-ToggleCameraFullscreen\",\n VideoWallToggleConfigDialog = \"VideoWall-ToggleConfigDialog\",\n VideoWallToggleCameraVisibility = \"VideoWall-ToggleCameraVisibility\",\n VideoWallPositionCameraOnWall = \"VideoWall-PositionCameraOnWall\",\n VideoWallSaveConfig = \"VideoWall-SaveConfig\",\n\n // Project Settings\n ProjectSettingsCameraSettingsCancelEditCameraName = \"CancelEditCameraName\",\n ProjectSettingsCameraSettingsEditCameraName = \"EditCameraName\",\n ProjectSettingsCameraSettingsEditCameraVisibility = \"EditCameraVisibility\",\n ProjectSettingsCameraSettingsSaveCameraName = \"SaveCameraName\",\n ProjectSettingsMembersApplyCamerasFilter = \"ApplyCamerasFilter\",\n ProjectSettingsMembersApplySearchFilter = \"ApplySearchFilter\",\n ProjectSettingsMembersAddMember = \"AddMember\",\n ProjectSettingsMembersDeleteCameraAccess = \"DeleteCameraAccess\",\n ProjectSettingsMembersEditCameraAccess = \"EditCameraAccess\",\n ProjectSettingsMembersFiltersClick = \"FiltersClick\",\n ProjectSettingsMembersShareCamera = \"ShareCamera\",\n ProjectSettingsMembersToggleAddDialog = \"ToggleAddDialog\",\n ProjectSettingsOverviewOpenInMapView = \"OpenInMapView\",\n ProjectSettingsOverviewCloseUpdateThumbnailDialog = \"CloseUpdateThumbnailDialog\",\n ProjectSettingsOverviewOpenUpdateThumbnailDialog = \"UpdateThumbnailClicked\",\n ProjectSettingsOverviewUploadNewThumbnail = \"UploadNewThumbnail\",\n ProjectSettingsOverviewUpdateThumbnail = \"UpdateThumbnail\",\n\n // Media Hub events\n MediaHubSelectFilter = \"SelectFilter\",\n MediaHubApplyFilters = \"ApplyFilters\",\n MediaHubToggleAddMediaUrlDialog = \"ToggleAddMediaUrlDialog\",\n MediaHubToggleUploadFileDialog = \"ToggleUploadFileDialog\",\n MediaHubToggleUploadLocalClipDialog = \"ToggleUploadLocalClipDialog\",\n MediaHubSaveMediaUrl = \"SaveMediaUrl\",\n MediaHubUploadFile = \"UploadFile\",\n MediaHubSelectPage = \"SelectPage\",\n MediaHubGoToNextPage = \"GoToNextPage\",\n MediaHubGoToPreviousPage = \"GoToPreviousPage\",\n\n // Media Hub Item events\n MediaDelete = \"Media-Delete\",\n MediaToggleTitleEditing = \"Media-ToggleTitleEditing\",\n MediaSaveTitle = \"Media-SaveTitle\",\n MediaDownloadAs = \"Media-DownloadAs\",\n MediaTogglePublicVisibility = \"Media-TogglePublicVisibility\",\n MediaShareToPlatform = \"Media-ShareToPlatform\",\n MediaCopyMediaLink = \"Media-CopyMediaLink\",\n MediaGoToMediaHub = \"Media-GoBackToMediaHub\",\n\n // Gate report\n GateReportCalendarTreeDateClick = \"CalendarTree-DateClick\",\n GateReportFilterEntryExit = \"FilterEntryExit\",\n GateReportFilterPlateNumber = \"FilterPlateNumber\",\n GateReportFilterVehicleTypes = \"FilterVehicleTypes\",\n GateReportOpenVehicleTypeInfo = \"OpenVehicleTypeInfo\",\n GateReportTimelineDateClick = \"Timeline-DateClick\",\n GateReportToggleThumbnails = \"ToggleThumbnails\",\n\n PpeTimelineDateClick = \"PpeTimeline-DateClick\",\n // TODO: The events bellow are old events, should be updated!\n\n //Help Menu\n HelpMenuToggleMenuButton = \"HelpMenu-ToggleMenuButton\",\n HelpMenuOpenLiveChat = \"HelpMenu-OpenLiveChat\",\n HelpMenuClickTutorialsLink = \"HelpMenu-ClickTutorialsLink\",\n HelpMenuClickWhatsNewLink = \"HelpMenu-ClickWhatsNewLink\",\n HelpMenuClickUserManuaLink = \"HelpMenu-ClickUserManuaLink\",\n HelpMenuClickSupportTicketsLink = \"HelpMenu-ClickSupportTicketsLink\",\n HelpMenuClickSystemCheckLink = \"HelpMenu-ClickSystemCheckLink\",\n\n Recording = \"Recording\",\n CameraFilter = \"CameraFilter\",\n MissingEquipmentHardHat = \"MissingEquipment-HardHat\",\n MissingEquipmentHighVisibilityVest = \"MissingEquipment-HighVisibilityVest\",\n MissingEquipmentSafetyGlasses = \"MissingEquipment-SafetyGlasses\",\n MissingEquipmentSafetyGloves = \"MissingEquipment-SafteyGLoves\",\n ExportAs = \"ExportAs\",\n\n ExportPdf = \"ExportPdf\",\n ExportCsv = \"ExportCsv\",\n FilterCameras = \"FilterCameras\",\n\n // Smart Search\n SmartSearchToggleQueryBuilder = \"SmartSearch-ToggleQueryBuilder\",\n SmartSearchToggleQuerySelector = \"SmartSearch-ToggleQuerySelector\",\n SmartSearchDeleteComponent = \"SmartSearch-DeleteComponent\",\n SmartSearchPageChange = \"SmartSearch-PageChange\",\n SmartSearchExecuteQuery = \"SmartSearch-ExecuteQuery\",\n SmartSearchAddComponent = \"SmartSearch-AddComponent\",\n SmartSearchConnectComponent = \"SmartSearch-ConnectComponent\",\n SmartSearchUpdateComponent = \"SmartSearch-UpdateComponent\",\n SmartSearchSavedQueryClick = \"SmartSearch-SavedQueryClick\",\n SmartSearchFilterSavedQueries = \"SmartSearch-FilterSavedQueries\",\n SmartSearchThumbnailHover = \"SmartSearch-ThumbnailHover\",\n SmartSearchThumbnailError = \"SmartSearch-ThumbnailError\",\n SmartSearchCameraSelected = \"SmartSearch-CameraSelected\",\n SmartSearchOptionClicked = \"SmartSearch-OptionClicked\",\n SmartSearchEditQuery = \"SmartSearch-EditQuery\",\n SmartSearchDeleteQuery = \"SmartSearch-DeleteQuery\",\n SmartSearchSaveQuery = \"SmartSearch-SaveQuery\",\n SmartSearchThumbnailPlay = \"SmartSearch-ThumbnailPlay\",\n SmartSearchExportFile = \"SmartSearch-ExportFile\",\n}\n","import {\n BoundingBox,\n CameraExid,\n DateType,\n GateReportVehicleType,\n TimelinePrecision,\n} from \"@/types\"\n\nexport type AnprQueryParams = {\n page?: number\n limit?: number\n firstSeen?: {\n gte: DateType\n }\n lastSeen?: {\n lte: DateType\n }\n captureTime?: {\n gte?: DateType\n lt?: DateType\n }\n direction?: { eq?: string } | string\n plateNumber?: { eq?: string } | string\n sort?: string\n fromDate?: DateType\n toDate?: DateType\n tab?: string\n}\n\nexport type AnprCountsQueryParams = {\n precision: TimelinePrecision\n fromDate?: string\n toDate?: string\n isPublic?: boolean\n cameras?: CameraExid[]\n direction?: AnprDirection\n isPlate?: boolean\n isDuplicate?: boolean\n vehicleTypes?: GateReportVehicleType[]\n camerasExid?: CameraExid[]\n}\n\nexport enum AnprDirection {\n Left = \"reverse\",\n Arrived = \"forward\",\n Unknown = \"unknown\",\n}\n\nexport type AnprEvent = {\n id: number\n plateNumber: string\n cameraExid: CameraExid\n cameraex: CameraExid\n picName: string\n eventTime: string\n insertedAt: string\n isDuplicate: boolean\n direction: AnprDirection\n updatedAt: string\n edited?: boolean\n isPlate: boolean\n isPostprocessed: boolean\n vehicleType?: GateReportVehicleType\n contextVehicleType?: GateReportVehicleType\n anprVehicleType?: string\n anprVehicleModel?: string\n anprVehicleMake?: string\n anprVehicleColor?: string\n anprVehicleSpeed?: number\n anprSnapshotLink: string\n contextSnapshotLink: string\n mainSnapshotLink: string\n contextCamera: string\n votedVehicleType: GateReportVehicleType | string\n roiId?: number\n captureTime: DateType\n metadata_: {\n evercamMetadata?: {\n anpr?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n context?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n }\n plateRecognizerMetadata?: {\n plateNumber?: string\n vehicleMake?: string\n vehicleType?: string\n vehicleColor?: string\n vehicleModel?: string\n vehicleOrientation?: string\n }\n }\n}\n\nexport type AnprCount = {\n date: string\n counts: Record<AnprDirection, number>\n}\n\nexport enum AnprEventStatus {\n IsPlate = \"is_plate\",\n NotPlate = \"not_plate\",\n IsDuplicate = \"is_duplicate\",\n NotDuplicate = \"not_duplicate\",\n}\n","import type { CameraExid, Exid, DateType } from \"@/types\"\n\nexport type MediaExid = Exid\n\nexport type Media = {\n project_exid?: string\n cameraExid?: CameraExid\n cameraName: string\n cameraTimezone: string\n createdAt: string\n fromDate: string\n id: number\n requesterEmail: string\n requesterName: string\n title: string\n toDate: string\n url?: string\n exid?: MediaExid\n embedCode?: string\n fileName?: string\n format?: string\n frames?: number\n link?: string\n public?: boolean\n type: MediaType\n status?: MediaStatus\n projectExid?: string\n thumbnailUrl?: string\n mediaUrl?: string\n}\n\nexport enum MediaType {\n EditedImage = \"edit\",\n ExternalUrl = \"url\",\n Clip = \"clip\",\n File = \"file\",\n LocalClip = \"local_clip\",\n XRay = \"x-ray\",\n Timelapse = \"timelapse\",\n Compare = \"compare\",\n MobileAsset = \"mobile-asset\",\n}\n\nexport enum MediaFileType {\n Gif = \"gif\",\n Mp4 = \"mp4\",\n Png = \"png\",\n Pdf = \"pdf\",\n Jpeg = \"jpeg\",\n}\n\nexport enum MediaStatus {\n Pending = \"Pending\",\n Creating = \"Creating\",\n Processing = \"Processing\",\n Extracting = \"Extracting\",\n Uploading = \"Uploading\",\n Completed = \"Completed\",\n Failed = \"Failed\",\n NoData = \"No Data\",\n}\n\nexport enum MediaStatusId {\n Pending = 0,\n Processing = 1,\n Completed = 2,\n Failed = 3,\n}\n\nexport type MediaFilterQueryParams = {\n title?: string\n sort?: string\n sortBy?: string\n dateRange?: string | string[]\n fromDate?: string\n toDate?: string\n cameraName?: string\n requesterEmail?: string\n type?: MediaType\n cameraExid?: string\n page?: number\n limit?: number\n camera?: string\n}\n\nexport type MediaUpdateRequestPayload = {\n name?: string\n title?: string\n public?: boolean\n}\n\nexport type MediaCreateRequestPayload = {\n fromDate: DateType\n toDate: DateType\n title: string\n type: MediaType\n fileUrl?: string\n fileExtension?: string\n url?: string\n content?: string\n cameraExid?: string\n requestedBy?: string\n notes?: string\n category?: ClipsCategory\n isUrgent?: boolean\n storeAsType?: MediaType\n}\n\nexport type MediaUsersResponsePayload = Array<{\n id: number\n email: string\n name: string\n}>\nexport enum ClipsCategory {\n HealthSafetySecurity = \"health_safety_security\",\n Legal = \"legal\",\n Marketing = \"marketing\",\n BestPracticies = \"best_practices\",\n}\n\nexport type MediaDeleteRequestPayload = {\n timelapseIds: (string | number)[]\n compareIds: (string | number)[]\n archiveIds: (string | number)[]\n}\n","import { DateTime, DateType } from \"@/types\"\n\nexport enum BimModelType {\n Architectural = \"Architectural\",\n Structural = \"Structural\",\n FourD = \"4D\",\n Mep = \"Mep\",\n}\n\nexport type BimSnapshotRequestPayload = {\n model: string\n layerTimestamp: string\n apiKey: string\n apiId: string\n}\n\nexport type BimSnapshotResponsePayload = {\n imageUrl?: string\n}\n\nexport type BimModelRequestPayload = {\n model?: string\n timestamp?: string\n apiKey?: string\n apiId?: string\n}\n\nexport type BimModelResponsePayload = {\n dates?: [string]\n height?: number\n imageUrl?: string\n model?: string\n models?: [string]\n rotation?: number\n scaleX?: number\n scaleY?: number\n viewerHeight?: number\n viewerWidth?: number\n width?: number\n x?: number\n y?: number\n}\n\nexport type BimCompareExportRequestPayload = {\n name: string\n cameraExid: string\n snapshotDate: string\n bimDate: string\n embed: string\n compareExid: string\n createAnimation: boolean\n bimTransparency?: number\n model?: string\n layerId?: number\n maskId?: number\n evercamWatermark?: boolean\n}\n\nexport type BimLayerResponsePayload = {\n id: number\n name: string\n insertedAt: DateTime\n updatedAt: DateTime\n shapes: string\n startAt: DateTime\n}\n\nexport enum BimUploadStatus {\n Initial = 0,\n Saving = 1,\n Success = 2,\n Failed = 3,\n}\n\nexport type BimCreationPayload = {\n title: string\n software:\n | \"synchro\"\n | \"navisworks\"\n | \"revit\"\n | \"tekla\"\n | \"archicad\"\n | \"solibri\"\n | \"bim360\"\n | \"other\"\n model: string\n apiKey: string\n apiId: string\n displayName: string\n fileUrl: string\n requestor: string\n finalView: boolean\n enableDistortion: boolean\n startAt: string\n}\n\nexport enum BIMLayerTypes {\n Mask = \"mask\",\n MeasuringGrid = \"measuring_grid\",\n BimArchitectural = \"bim_architectural\",\n BimStructural = \"bim_structural\",\n Bim4D = \"bim_4d\",\n BimMep = \"bim_mep\",\n RecordingsTag = \"recordings_tag\",\n Milestone = \"milestone\",\n}\n\nexport type BimLayersQueryParams = {\n layerType: BIMLayerTypes\n timestamp: DateType\n}\n\nexport type BIMLayerPostPayload = {\n name: string\n layerType: BIMLayerTypes\n startAt: DateType\n shapes: string\n zIndex: number\n}\n\nexport type BIMLayer = {\n id: number\n name: string\n layerType: BIMLayerTypes\n startAt: DateType\n insertedAt: DateType\n updatedAt: DateType\n shapes: string\n}\n\nexport type BimPendingImage = {\n url: string\n s3Url: string\n}\n\nexport type BimUploadCameraParameters = {\n distortionFov: [number]\n horizontalFov: number\n verticalFov: number\n focalLength1: number\n focalLength2: number\n centerX: number\n centerY: number\n}\n\nexport type PendingBimImagesParams = {\n model: string\n apiKey: string\n apiId: string\n}\n\nexport type ProcessPendingImagesBimParams = {\n model: string\n names: string[]\n enableDistortion: boolean\n apiId: string\n apiKey: string\n}\n\nexport type BimUploadsQueryParams = {\n page: number\n limit: number\n projectId: string\n id: string\n uploadedBy: string\n}\n\nexport type BimUploadPayload = {\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n}\n","import {\n AuditLogActionType,\n DateTime_Z_micros,\n DateType,\n EntityByExid,\n NvrDeviceType,\n PaginationParams,\n PowerSchedule,\n PowerType,\n ProjectExid,\n Schedule,\n} from \"@/types\"\n\nexport type CameraExid = string\n\nexport type CamerasByExid = EntityByExid<Camera>\n\nexport type Cartesian3 = {\n x: number\n y: number\n z: number\n}\n\nexport type Camera = {\n cameraPowerSchedule?: Schedule\n camPassword?: string\n camUsername?: string\n cloudRecordings: {\n frequency: number\n schedule: Schedule\n status: string\n storageDuration: string\n }\n createdAt: DateTime_Z_micros\n description: string | null\n discoverable: boolean\n external: {\n host: string\n http: {\n camera: string\n jpg: string\n nvrJpg: string\n nvrPort: string\n port: string\n }\n rtsp: {\n h264: string\n port: string\n }\n }\n featureFlags: Array<CameraFeatureFlag>\n fovAngle: number\n fovRadius: number\n heading: null\n id: CameraExid\n exid: CameraExid\n isOnline: boolean\n isPowerScheduleActive: boolean\n isPublic: boolean\n lastOnlineAt: DateTime_Z_micros\n lastPolledAt: DateTime_Z_micros\n location: { lat: number; lng: number }\n modelId: string\n modelName: string\n name: string\n nvrChannel: number\n nvrDeviceId: string\n nvrHost: string\n nvrHttpPort: number\n nvrModel: NvrModel\n nvrScheme: string\n nvrSnapshotEndpoint: string\n nvrStreamingEndpoint: string\n offlineReason: string\n owned: boolean\n owner: string\n pitch: string | null\n project: { id: string; name: string }\n proxyUrl: { hls: string; rtmp: string }\n ptz: boolean\n rights: string\n roll: string | null\n routerId: number\n status: CameraStatus\n streamingServer: string\n thumbnailUrl: string\n largeThumbnailUrl?: string\n timezone: string\n updatedAt: DateTime_Z_micros\n vendorName: string\n isAccessRestricted?: boolean\n kitAlarms?: string[]\n}\n\nexport type AdminCamera = {\n cameraHost: string\n cameraHttpPort: number\n cameraModel: string\n cameraPassword: string\n cameraPictureEndpoint: string\n cameraRtspPort: number\n cameraScheme: string\n cameraUsername: string\n cameraFirmwareVersion: string\n cameraTimezone: string\n cloudRecordingFrequency: number\n cloudRecordingId: number\n cloudRecordingSchedule: Schedule\n cloudRecordingStatus: string\n cloudRecordingStorageDuration: number\n createdAt: DateTime_Z_micros\n description: null\n discoverable: false\n exid: CameraExid\n featureFlags: CameraFeatureFlag[]\n fovAngle: 45.0\n fovRadius: number\n heading: null\n id: number\n isPowerScheduleActive: true\n isPublic: false\n kitId?: number\n lastOnlineAt: DateTime_Z_micros\n lastPolledAt: DateTime_Z_micros\n location: { lat: number; lng: number }\n macAddress: string\n name: string\n nvrChannel: null\n nvrDeviceId: string\n nvrHost: string\n nvrHttpPort: number\n nvrModel: NvrModel\n nvrPassword: string\n nvrPictureEndpoint: string\n nvrRtspPort: number\n nvrScheme: string\n nvrUsername: string\n offlineReason: null\n pitch: null\n powerSchedule: Schedule\n projectExid: string\n projectFeatureFlags: []\n projectId: number\n projectName: string\n ptz: false\n recordingFromNvr: false\n roll: null\n routerId: number\n status: string\n storageProviders: []\n streamEndpoint: string\n timezone: string\n updatedAt: DateTime_Z_micros\n userApiId: string\n userApiKey: string\n userEmail: string\n userFullname: string\n userId: number\n zohoId: string\n thumbnailUrl?: string\n}\n\nexport type CameraMapMarker = {\n isOnline: boolean\n location: {\n lat: number\n lng: number\n }\n needFov: boolean\n rotation: number\n fovAngle: number\n fovRadius: number\n}\n\nexport enum CameraStatus {\n Online = \"online\",\n Offline = \"offline\",\n OfflineScheduled = \"offline_scheduled\",\n Decommissioned = \"decommissioned\",\n OnHold = \"on_hold\",\n Waiting = \"waiting\",\n UnderMaintenance = \"under_maintenance\",\n WaitingForSiteVisit = \"waiting_for_site_visit\",\n}\n\nexport enum CameraFeatureFlag {\n EdgeVideo = \"edge_video\",\n BimCompare = \"bim_compare\",\n TwoDBimCompare = \"2d_bim_compare\",\n ForgeBIMCompare = \"forge_bim_compare\",\n GateReport = \"gate_report\",\n VideoStream = \"video_stream\",\n WebRTC = \"webrtc\",\n ANPR = \"anpr\",\n ReverseANPR = \"reverse_anpr\",\n PTZ = \"ptz\",\n ObjectDetection = \"object_detection\",\n Segmentation = \"segmentation\",\n SegmentationAutoLabelling = \"segmentation_auto_labelling\",\n PpeMonitoring = \"ppe_monitoring\",\n}\n\nexport type CameraLogsRequestPayload = {\n limit: number\n page: number\n types: string\n from: string\n to: string\n}\n\nexport type CameraUpdateRequestPayload = {\n status?: string\n timezone?: string\n isPuclic?: boolean\n discoverable?: boolean\n fullname?: string\n lastOnline?: string\n owner?: string\n description?: string\n cameraPowerSchedule?: Schedule\n isPowerScheduleActive?: boolean\n powerSchedule?: object\n ptz?: boolean\n camUsername?: string\n camPassword?: string\n project?: { id: string; name: string }\n modelName?: string\n host?: string\n nvrChannel?: number\n nvrPortHttp?: string\n externalRtspPort?: string\n name?: string\n h264Url?: string\n snapshotUrl?: string\n nvrSnapshotUrl?: string\n routerId?: string | number\n coordinates?: Array<number>\n heading?: number\n fovAngle?: number\n fovRadius?: number\n featureFlags: CameraFeatureFlag[]\n isAccessRestricted?: boolean\n}\n\nexport type CamerasResponsePayload = {\n cameras?: Camera[]\n}\n\nexport type CameraLogsResponsePayload = {\n cameraExid: string\n cameraName: string\n logs?: Log[]\n details?: { customMessage?: string }\n}\n\nexport type CameraStatusLog = {\n start: string\n end: string\n state: CameraStatus\n}\n\nexport type Log = {\n details: {\n agent?: string\n country?: string\n countryCode?: string\n ip?: string\n with?: string\n message?: string\n status?: string\n type?: string\n }\n insertedAt: string\n type: string\n who: string\n}\n\nexport type NvrConfig = {\n apiUrl: string\n username?: string\n password?: string\n deviceId: string\n streamingUrl: string\n snapshotUrl: string\n bifUrl: string\n}\n\nexport enum NvrModel {\n YCam = \"y-cam\",\n Axis = \"axis\",\n Dahua = \"dahua\",\n Mobotix = \"mobotix\",\n Hikvision = \"hikvision\",\n Avigilion = \"avigilion\",\n Hanwha = \"hanwha\",\n Nxwitness = \"nxwitness\",\n ExNvr = \"ex_nvr\",\n}\n\nexport enum CameraModel {\n YCam = \"y-cam\",\n Axis = \"axis\",\n Dahua = \"dahua\",\n Mobotix = \"mobotix\",\n Milesight = \"milesight\",\n Hikvision = \"hikvision\",\n Avigilion = \"avigilion\",\n Hanwha = \"hanwha\",\n Other = \"other\",\n}\n\nexport type DroneCameraTransform = {\n position: Cartesian3\n direction: Cartesian3\n up: Cartesian3\n right: Cartesian3\n}\n\nexport type Footage = {\n cameraExid: string\n cameraName: string\n endDate: string | null\n startDate: string | null\n}\n\nexport type Hdd = {\n id: number\n location: string\n serialNumber: string\n hddStatus: string\n shelfBlock: string\n type: string\n size: string\n format: string\n footages: Array<Footage>\n reportedCapacity: string\n reportedFreeSpace: string\n reportedProperty: string\n reportedPath: string\n reportedHddType: string\n errorStatus: string\n canExpand: boolean\n}\n\nexport type CameraPath = {\n projectExid: ProjectExid\n cameraExid: CameraExid\n}\n\nexport type CheckCameraPortPayload = {\n address: string\n port: number\n}\n\nexport type CameraCreateRequestPayload = {\n status: CameraStatus\n timezone?: string\n powerSchedule?: Schedule\n isPowerScheduleActive?: boolean\n ptz?: boolean\n name: string\n coordinates?: [number, number]\n recordingFromNvr?: boolean\n CameraConfig: {\n model: CameraModel\n scheme?: \"http\" | \"https\"\n host: string\n httpPort: number\n username: string\n password: string\n rtspPort?: number\n pictureEndpoint?: string\n streamEndpoint?: string\n }\n nvr?: {\n model: NvrModel\n serial?: string\n deviceType?: NvrDeviceType\n macAddress?: string\n username: string\n password: string\n httpUrl: string\n rtspUrl?: string\n }\n cloudRecording?: {\n id?: number\n frequency: 1 | 2 | 4 | 5 | 6 | 10 | 12 | 30 | 60\n storageDuration: -1 | 1 | 7 | 30 | 90\n status: \"on\" | \"off\" | \"paused\" | \"on_scheduled\"\n schedule: Schedule\n }\n ownerId: number\n projectId: number\n}\n\nexport type CameraDeletePayload = {\n verify: string\n password: string\n}\n\nexport type SaveNotePayload = {\n noteType: string\n content: string\n}\n\nexport type CameraNote = {\n id: number\n cameraId: number\n noteType: string\n content: string\n insertedAt: DateType\n}\n\nexport type CreateCameraNotePayload = {\n id?: number\n cameraExid: CameraExid\n customMessage: string\n action: string\n}\n\nexport enum HddStatus {\n Error = \"error\",\n Idle = \"idle\",\n NotExist = \"notExist\",\n Unformatted = \"unformatted\",\n Ok = \"ok\",\n}\n\nexport type NvrQueryParams = PaginationParams & {\n ownerId: number\n cameraName: string\n cameraExid: CameraExid\n cameraIp: string\n hddStatus: HddStatus\n}\n\nexport type OfflineCamera = {\n id: number\n exid: string\n name: string\n fullname: string\n timezone: string\n status: CameraStatus\n zohoId: string\n externalHost: string\n nvrHttpPort: string\n externalRtspPort: string\n username: string\n password: string\n createdAt: DateType\n lastPolledAt: DateType\n lastOnlineAt: DateType\n powerType: PowerType\n powerSchedule: PowerSchedule\n batteryReadingsLastSeen: DateType\n batteryReadingsLastVoltage: number\n sims: {\n billPayer: string\n number: string\n provider: string\n }[]\n}\n\nexport type OfflineCameraQueryParams = PaginationParams & {\n status: CameraStatus\n cameraExid: CameraExid\n cameraName: string\n timezone: string\n cameraOwner: string\n powerType: PowerType\n powerSchedule: PowerSchedule\n batteryReadingsLastVoltage: number\n}\n\nexport type OfflineCameraNote = {\n action: AuditLogActionType\n username: string\n insertedAt: DateType\n cameraId: number\n customMessage: string\n}\n\nexport type OfflineCameraNoteResponse = {\n publicNotes: OfflineCameraNote[]\n privateNotes: OfflineCameraNote[]\n}\n\nexport type SiteVisitCamerasQueryParams = PaginationParams & {\n cameraOwner: string\n}\n\nexport type ProjectCamera = {\n apiId: string\n apiKey: string\n exid: string\n id: number\n name: string\n ownerEmail: string\n ownerFullname: string\n}\n\nexport enum DuplicatedCameraFields {\n Host = \"host\",\n CameraHttpPort = \"camera_http_port\",\n NvrHttpPort = \"nvr_http_port\",\n NvrDeviceId = \"nvr_device_id\",\n}\n\nexport type DuplicatedCameraObject = {\n exid: string\n name: string\n cameraStatus: string\n crStatus: string\n}\n\nexport type DuplicatedCameraResponse = {\n cameras: DuplicatedCameraObject[]\n host: string\n cameraHttpPort: number\n nvrHttpPort: number\n nvrDeviceId: string\n count: number\n}\n\nexport type MergeDuplicatedCameraPayload = {\n masterCamera: Record<string, unknown>\n shareeCameras: Record<string, unknown>\n}\n\nexport type FetchCameraQueryParams = PaginationParams & {\n status: CameraStatus\n isPublic: boolean\n featureFlags: CameraFeatureFlag[]\n ptz: boolean\n frequency: number\n channel: number\n cameraExid: CameraExid\n cameraExids: CameraExid[]\n cameraName: string\n projectName: string\n timezone: string\n region: string\n cameraModel: CameraModel\n nvrModel: NvrModel\n cameraOwner: string\n ownerEmail: string\n isRecording: boolean\n cloudRecordingStorageDuration: number\n cameraIds: string\n hasLocation: boolean\n externalHttpPort: string\n externalRsptPort: string\n nvrHttpPort: string\n}\n\nexport enum BimType {\n TwoD = \"2D\",\n Forge = \"Forge\",\n}\n","import { DateType, PaginationParams } from \"@/types\"\n\nexport type Compare = {\n cameraExid: string\n createdAt: string\n embedCode: string\n embedTime: boolean\n fileName: string\n frames: number\n fromDate: string\n id: number\n exid: string\n mediaUrls: {\n gif: string\n mp4: string\n }\n public: boolean\n requesterEmail: string\n requesterName: string\n status: string\n thumbnailUrl: string\n title: string\n toDate: string\n type: string\n}\n\nexport enum CompareStatus {\n Processing = 0,\n Completed = 1,\n Failed = 2,\n}\n\nexport type CompareRequestPayload = {\n name: string\n afterDate: string\n beforeDate: string\n embed: string\n compareExid: string\n cameraExid?: string\n createAnimation: boolean\n evercamWatermark?: boolean\n}\n\nexport type AdminCompare = {\n id: number\n compareExid: string\n exid: string\n projectId: string\n apiId: string\n apiKey: string\n name: string\n fullname: string\n camera: string\n status: number\n embedCode: string\n insertedAt: DateType\n}\n\nexport type AdminCompareQueryParams = PaginationParams & {\n name: string\n camera: string\n}\n","import type {\n AnalyticsEventPageId,\n CameraExid,\n CameraFeatureFlag,\n CameraStatus,\n ProjectExid,\n ProjectFeatureFlag,\n ProjectStatus,\n} from \"@/types\"\n\nexport enum CopilotMessageAuthor {\n Copilot = \"copilot\",\n User = \"user\",\n System = \"system\",\n}\n\nexport enum CopilotMessageType {\n Text = \"text\",\n Progress = \"progress\",\n Error = \"error\",\n Json = \"json\",\n}\n\nexport type CopilotMessage = {\n content: string\n url?: string\n type: CopilotMessageType\n id?: number\n conversationId?: number\n}\n\nexport enum CopilotStepId {\n SendToLLM = \"send_to_llm\",\n FunctionCallRequest = \"function_call_request\",\n ExecFunctionCall = \"exec_function_call\",\n SendToUser = \"send_to_user\",\n RequestMissingFields = \"request_missing_fields\",\n CompletedFieldsResponse = \"completed_fields_response\",\n SendRawToolCallResponse = \"send_raw_tool_call_response\",\n SubmitToolOutputsToLLM = \"submit_tool_outputs_to_llm\",\n CancelCall = \"cancel_call\",\n}\n\nexport enum CopilotMissingFieldsLabels {\n ProjectExid = \"Project\",\n CameraExid = \"Camera\",\n FromDate = \"Start date\",\n ToDate = \"End date\",\n}\n\nexport type CopilotMissingField<T = any> = {\n name: string\n label: string\n value: any\n type: string\n toolId: string\n error?: T\n}\n\nexport type CopilotMissingFields = Record<number, CopilotMissingField[]>\n\nexport type UserConversations = CopilotConversation & {\n Message: CopilotMessage[]\n}\n\nexport enum CopilotSocketEvent {\n ConversationStart = \"conversation:start\",\n ConversationCreated = \"conversation:created\",\n LLMMessageChunk = \"llm:message:chunk\",\n LLMMessageComplete = \"llm:message:complete\",\n LLMMessageLoading = \"llm:message:loading\",\n LLMRequestCancel = \"llm:request:cancel\",\n LLMRequestCanceled = \"llm:request:canceled\",\n UserMessage = \"user:message\",\n ContextError = \"chat:contextError\",\n ChatError = \"chat:chatError\",\n MissingFields = \"chat:missingFields\",\n MissingFieldsCompleted = \"chat:missingFields:completed\",\n SystemToolCallResponse = \"system:toolCall:response\",\n ChangeProvider = \"chat:changeProvider\",\n}\n\nexport type CopilotConversation = {\n id: number\n user: string\n model: string\n context: string\n cameraExid: CameraExid\n projectExid: ProjectExid\n startDate: string\n endDate: string\n messagesCount: number\n}\n\nexport enum CopilotProvider {\n Gemini = \"gemini\",\n ChatGPT = \"chatgpt\",\n}\n\nexport enum CopilotSuggestion {\n UserManual = \"user_manual\",\n GateReport = \"gate_report\",\n Weather = \"weather\",\n Clip = \"clip\",\n Timelapse = \"timelapse\",\n Chart = \"chart\",\n}\n\nexport enum CopilotChatProvider {\n Gemini = \"gemini\",\n ChatGpt = \"chatGpt\",\n}\n\nexport enum CopilotLayout {\n Floating = \"floating\",\n}\n\nexport enum CopilotToolId {\n GetReports = \"getReports\",\n GetVehiclesDetections = \"getVehiclesDetections\",\n GetVehiclesDetectionsCounts = \"getVehiclesDetectionsCounts\",\n GetWeather = \"getWeather\",\n CreateClip = \"createClip\",\n NavigateToPage = \"navigateToPage\",\n CreateTimelapse = \"createTimelapse\",\n RequestMissingFields = \"requestMissingFields\",\n RenderCharts = \"renderCharts\",\n}\n\nexport type CopilotSystemToolCallResponse<I = unknown, O = unknown> = {\n toolId?: CopilotToolId\n input?: I\n output?: O\n}\n\nexport type CopilotCamera = {\n name: string\n exid: CameraExid\n status: CameraStatus\n featureFlags?: CameraFeatureFlag[]\n}\n\nexport type CopilotProject = {\n name: string\n exid: ProjectExid\n status: ProjectStatus\n featureFlags?: ProjectFeatureFlag[]\n cameras?: CopilotCamera[]\n}\n\nexport type CopilotMessageContext = {\n pageId?: AnalyticsEventPageId\n selectedCamera?: CopilotCamera\n selectedProject?: CopilotProject\n}\n\nexport type CopilotMessageStep = {\n args: string[]\n depth: number\n id?: number\n message_id?: number\n step: CopilotStepId\n timestamp: string\n}\n\nexport enum CopilotMissingFieldComponent {\n Select = \"SelectField\",\n DateTime = \"DateTimeField\",\n Schedule = \"ScheduleField\",\n MultiOptions = \"MultiOptionsField\",\n Switch = \"SwitchField\",\n}\n\nexport enum CopilotMissingFieldName {\n ProjectExid = \"projectExid\",\n CameraExid = \"cameraExid\",\n FromDate = \"fromDate\",\n ToDate = \"toDate\",\n Schedule = \"schedule\",\n Duration = \"duration\",\n}\n\nexport enum CopilotMissingFieldType {\n Boolean = \"boolean\",\n String = \"string\",\n Number = \"number\",\n}\n\nexport type CopilotCompletedFields = Record<string, unknown>\n","export type DroneModel = {\n cesiumId: string\n cesiumId2D: string\n date: string\n cesiumPointCloudId: string\n pointSize: string\n maximumScreenSpaceError: string\n link: string\n trueIndex: number\n}\n\nexport type DroneProjectJsonResponse = {\n models: DroneModel[]\n [key: string]: any\n}\n\nexport enum DroneUrlParams {\n Date = \"date\",\n}\n","import { AxiosError } from \"axios\"\n\nexport enum ErrorType {\n BadRequestError = \"BadRequestError\",\n NotFoundError = \"NotFoundError\",\n UnauthorizedError = \"UnauthorizedError\",\n GatewayTimeoutError = \"GatewayTimeoutError\",\n BadGatewayError = \"BadGatewayError\",\n ForbiddenError = \"ForbiddenError\",\n HlsError = \"HlsError\",\n SnapshotError = \"SnapshotError\",\n ConflictError = \"ConflictError\",\n InternalServerError = \"InternalServerError\",\n CanceledError = \"CanceledError\",\n UnhandledRejection = \"UnhandledRejection\",\n TypeError = \"TypeError\",\n}\n\nexport enum ErrorCode {\n InternalServerError = 500,\n BadGatewayError = 502,\n ServiceUnavailableError = 503,\n GatewayTimeoutError = 504,\n BadRequestError = 400,\n UnauthorizedError = 401,\n ForbiddenError = 403,\n NotFoundError = 404,\n ConflictError = 409,\n}\n\nexport enum EvercamApiErrorCode {\n BadArgument = \"BAD_ARGUMENT\",\n DeviceError = \"DEVICE_ERROR\",\n UnsupportedOperation = \"UNSUPPORTED_OPERATION\",\n QuotaExceeded = \"QUOTA_EXCEEDED\",\n InvalidCredentials = \"INVALID_CREDENTIALS\",\n InvalidToken = \"INVALID_TOKEN\",\n ProviderAuthFailure = \"PROVIDER_AUTH_FAILURE\",\n ProviderEmailRequired = \"PROVIDER_EMAIL_REQUIRED\",\n PasswordReset = \"PASSWORD_RESET\",\n RequireShareRequest = \"REQUIRE_SHARE_REQUEST\",\n Generic = \"GENERIC\",\n}\n\ntype _EvercamApiError = {\n code: EvercamApiErrorCode\n message: string\n details: string\n innerError?: _EvercamApiError\n}\n\nexport type EvercamApiError = AxiosError<_EvercamApiError>\n","import {\n AnprDirection,\n CameraExid,\n Date_HH,\n Date_YYYY,\n Date_YYYY_MM,\n Date_YYYY_MM_DD,\n DateTime,\n DateTimeSpaceSeparated,\n DateType,\n PaginatedItems,\n PaginationParams,\n ProjectExid,\n ProjectFeatureFlag,\n Timestamp,\n} from \"@/types\"\n\nexport enum GateReportDetectionType {\n Auto = \"auto\",\n Manual = \"manual\",\n Cloud = \"cloud\",\n Edge = \"edge\",\n}\n\nexport enum GateReportEventType {\n Arrived = \"arrived\",\n Left = \"left\",\n}\n\nexport enum DetectionLabel {\n ArticulatedDumper = \"articulated-dumper\",\n BackhoeLoader = \"backhoe-loader\",\n CompactExcavator = \"compact-excavator\",\n ConcretePump = \"concrete-pump\",\n Dumper = \"dumper\",\n Excavator = \"excavator\",\n FlatbedSemiTrailer = \"flatbed-semi-trailer\",\n IndustrialTruck = \"industrial-truck\",\n Loader = \"loader\",\n Mewps = \"mewps\",\n MobileCrane = \"mobile-crane\",\n MobileCrusher = \"mobile-crusher\",\n OtherTruck = \"other-truck\",\n PileDrillingRig = \"pile-drilling-rig\",\n RoadVehicle = \"road-vehicle\",\n Roller = \"roller\",\n SemiTrailer = \"semi-trailer\",\n SkidSteerLoader = \"skid-steer-loader\",\n SkipTruck = \"skip-truck\",\n SmallTruck = \"small-truck\",\n TankTruck = \"tank-truck\",\n TeleHandler = \"tele-handler\",\n TippingTruck = \"tipping-truck\",\n TowerCrane = \"tower-crane\",\n TowerMountedConcreteMix = \"tower-mounted-concrete-mix\",\n TractorDozer = \"tractor-dozer\",\n TruckHead = \"truck-head\",\n TruckMixer = \"truck-mixer\",\n TruckMountedMobileCrane = \"truck-mounted-mobile-crane\",\n Unknown = \"unknown\",\n Worker = \"worker\",\n Rubble = \"rubble\",\n Puddle = \"puddle\",\n DirtGravelCementPile = \"dirt_gravel_cement_pile\",\n DetachedExcavatorBucket = \"detached_excavator_bucket\",\n IntermediateBulkContainer = \"intermediate_bulk_container\",\n WoodenPallet = \"wooden_pallet\",\n ShippingContainer = \"shipping_container\",\n AirCompressor = \"air_compressor\",\n DryMortarSilo = \"dry_mortar_silo\",\n Fence = \"fence\",\n Brick = \"brick\",\n Barrel = \"barrel\",\n Cardboard = \"cardboard\",\n CardboardBox = \"cardboard_box\",\n CementBag = \"cement_bag\",\n ConcreteBlock = \"concrete_block\",\n ConcretePipe = \"concrete_pipe\",\n ConcreteSlab = \"concrete_slab\",\n PlasticWrap = \"plastic_wrap\",\n ContainerOffice = \"container_office\",\n ElectricalPole = \"electrical_pole\",\n ElectricalBox = \"electrical_box\",\n FireHydrant = \"fire_hydrant\",\n HoseReel = \"hose_reel\",\n Ladder = \"ladder\",\n MetalBeam = \"metal_beam\",\n MetalPipe = \"metal_pipe\",\n Pallet = \"pallet\",\n Pillar = \"pillar\",\n PlasticBin = \"plastic_bin\",\n PlasticBucket = \"plastic_bucket\",\n PlasticPipe = \"plastic_pipe\",\n PublicToilet = \"public_toilet\",\n Sign = \"sign\",\n SiteToolbox = \"site_toolbox\",\n StreetSink = \"street_sink\",\n TrafficBarrier = \"traffic_barrier\",\n TrafficCone = \"traffic_cone\",\n Wall = \"wall\",\n WasteContainer = \"waste_container\",\n WaterStorageTank = \"water_storage_tank\",\n Wheelbarrow = \"wheelbarrow\",\n Window = \"window\",\n WoodPlank = \"wood_plank\",\n CableReel = \"cable_reel\",\n AirConditioningSystem = \"air_conditioning_system\",\n WoodenBox = \"wooden_box\",\n PlasticBag = \"plastic_bag\",\n MaterialStack = \"material_stack\"\n}\n\nexport enum SegmentLabel {\n AirCompressor = \"air_compressor\",\n Brick = \"brick\",\n Building = \"building\",\n CableReel = \"cable_reel\",\n CementMixer = \"cement_mixer\",\n CementPile = \"cement_pile\",\n ConcreteBarrier = \"concrete_barrier\",\n ConcreteBlock = \"concrete_block\",\n ConstructionContainer = \"construction_container\",\n ConstructionSite = \"construction_site\",\n Crane = \"crane\",\n DetachedExcavatorBucket = \"detached_excavator_bucket\",\n DryMortarSilo = \"dry_mortar_silo\",\n DumpTruck = \"dump_truck\",\n Dumpster = \"dumpster\",\n Fence = \"fence\",\n FireHydrant = \"fire_hydrant\",\n GarbageBin = \"garbage_bin\",\n HoseReel = \"hose_reel\",\n Ibc = \"ibc\",\n JerryCan = \"jerry_can\",\n MetalBeam = \"metal_beam\",\n MiniDumper = \"mini_dumper\",\n Pallet = \"pallet\",\n Pipe = \"pipe\",\n Puddle = \"puddle\",\n Rebar = \"rebar\",\n Rubble = \"rubble\",\n Scaffolding = \"scaffolding\",\n ShippingContainer = \"shipping_container\",\n SiteOffice = \"site_office\",\n TrafficCone = \"traffic_cone\",\n Transformer = \"transformer\",\n Vehicle = \"vehicle\",\n Window = \"window\",\n WoodenSpool = \"wooden_spool\",\n Unknown = \"unknown\",\n}\n\nexport enum GateReportVehicleType {\n ConcretePump = DetectionLabel.ConcretePump,\n FlatbedSemiTrailer = DetectionLabel.FlatbedSemiTrailer,\n OtherTruck = DetectionLabel.OtherTruck,\n RoadVehicle = DetectionLabel.RoadVehicle,\n SemiTrailer = DetectionLabel.SemiTrailer,\n SmallTruck = DetectionLabel.SmallTruck,\n TankTruck = DetectionLabel.TankTruck,\n TippingTruck = DetectionLabel.TippingTruck,\n TruckHead = DetectionLabel.TruckHead,\n TruckMixer = DetectionLabel.TruckMixer,\n Unknown = DetectionLabel.Unknown,\n}\n\nexport type GateReportVehicleTypeItem = {\n name: string\n id: GateReportVehicleType\n}\n\nexport type GateReportEvent = {\n id: number\n vehicleTypes: GateReportVehicleType\n exid: string\n cameraExid?: string\n boundingBox: BoundingBox\n detectionType: GateReportDetectionType\n edited: boolean\n eventTime: string\n timestamp?: string\n eventType: GateReportEventType\n isPublic: boolean\n roiId: string\n truckType: GateReportVehicleType\n thumbnailUrl?: string\n}\n\nexport type GateReportArrivedEvent = GateReportEvent & {\n eventType: GateReportEventType.Arrived\n}\n\nexport type GateReportLeftEvent = GateReportEvent & {\n eventType: GateReportEventType.Left\n}\n\nexport type GateReportVerifiedDay = {\n id: number\n day: Date_YYYY_MM_DD\n isMatched: boolean\n insertedAt: DateTime\n updatedAt: DateTime\n verifiedBy: string\n cameraExid: CameraExid\n projectExid: ProjectExid\n}\n\nexport type BoundingBox = {\n xmax: number\n xmin: number\n ymax: number\n ymin: number\n}\n\nexport type EventsCountsByVehicleType = Record<GateReportVehicleType, number>\n\nexport type EventsCount = {\n in: number\n out: number\n source: GateReportDataSource\n}\n\nexport type YearlyEventCount = EventsCount & {\n year: Date_YYYY\n}\n\nexport type MonthlyEventCount = EventsCount & {\n month: Date_YYYY_MM\n}\n\nexport type DailyEventCount = EventsCount & {\n day: Date_YYYY_MM_DD\n}\n\nexport type HourlyEventCount = {\n hour: Date_HH\n count: number\n}\n\nexport type EventCountRequestPayload = {\n vehicleTypes?: GateReportVehicleType[]\n isPublic?: boolean\n camerasExid?: string[]\n}\n\nexport type EventCountResponsePayload = {\n days?: DailyEventCount[]\n months?: MonthlyEventCount[]\n years?: YearlyEventCount[]\n}\n\nexport type ProcessedDaysRequestPayload = {\n apiId?: string\n apiKey?: string\n isPublic?: Boolean\n}\n\nexport type EventsRequestPayload = {\n apiId?: string\n apiKey?: string\n camerasExid?: CameraExid[]\n cameras?: string[]\n eventType?: GateReportEventType\n fromDate?: DateTime\n isPublic?: boolean\n toDate?: DateTime\n truckTypes?: GateReportVehicleType[]\n vehicleTypes?: string[]\n} & PaginationParams\n\nexport type EventsResponsePayload = PaginatedItems<GateReportEvent>\n\nexport enum GateReportDataSource {\n Anpr = \"anpr\",\n Events = \"events\",\n}\n\nexport type GateReportResponsePayload = {\n source: GateReportDataSource\n results: PaginatedItems<GateReportEvent>\n}\n\nexport enum GateReportEventDirection {\n In = \"in\",\n Out = \"out\",\n Unknown = \"unknown\",\n}\n\nexport type GatReportRequestPayload = {\n camerasExid?: CameraExid[]\n eventType?: GateReportEventType\n fromDate?: DateTime\n isPublic?: boolean\n toDate?: DateTime\n vehicleTypes?: GateReportVehicleType[]\n} & PaginationParams\n\nexport enum GateReportExportType {\n Pdf = \"pdf\",\n Csv = \"csv\",\n}\n\nexport type EventsExportRequestParameters = {\n vehicleTypes: GateReportVehicleType[]\n fileType: GateReportExportType\n fromDate: DateTimeSpaceSeparated\n toDate: DateTimeSpaceSeparated\n camerasExid: CameraExid[]\n eventType: GateReportEventType\n}\n\nexport type AnprBasedGateReportExportRequestParams = {\n vehicleTypes?: GateReportVehicleType[]\n fileType?: GateReportExportType\n fromDate?: DateTimeSpaceSeparated\n toDate?: DateTimeSpaceSeparated\n camerasExid?: CameraExid[]\n direction?: AnprDirection\n}\n\ntype X1 = number\ntype Y1 = number\ntype X2 = number\ntype Y2 = number\n\nexport enum GateReportROIShapeType {\n Rectangle = \"rectangle\",\n Direction = \"direction\",\n Line = \"line\",\n}\n\nexport type GateReportROIShape = {\n coordinates: [[X1, Y1], [X2, Y2]]\n type: GateReportROIShapeType\n}\n\nexport type GateReportROI = {\n cameraex?: string\n fromDate?: string\n directionFilter?: string\n id?: number\n insertedAt?: Timestamp\n isactive?: boolean\n name?: string\n roiType?: string\n updatedAt?: Timestamp\n shapes?: GateReportROIShape[]\n}\n\nexport enum GateReportProcessingStatus {\n Processed = \"processed\",\n Unprocessed = \"unprocessed\",\n}\n\nexport const VEHICLE_TYPE_IDS = Object.values(GateReportVehicleType)\n\nexport type GateReportCamera = {\n exid: number\n name: string\n status: string\n note: string\n last_published_day: DateType\n last_processed_day: DateType\n}\n\nexport type GateReportProject = {\n exid: string\n name: string\n status: string\n featureFlags: ProjectFeatureFlag\n cameras: GateReportCamera[]\n}\n\nexport type AnalyticsParameters = {\n id: number\n cameraex: string\n processingType: string\n startDate: DateTime\n endDate: DateTime\n skipWeekend: boolean\n hourSiteOpening: number\n hourSiteClosure: number\n gateReportActive: boolean\n countingActive: boolean\n queueSystem: string\n reprocess: boolean\n framesToSkip: number\n detection_model: string\n detectionThreshold: number\n printLogsFrame: number\n crossingVectorAngleLimit: number\n minTruckLife: number\n insideMinTime: number\n trackerMaxAge: number\n trackerMinHit: number\n snapshotUpload: boolean\n snapshotPerSecond: number\n detectionClasses: string\n deepEventEndpointUrl: string\n timestampCalculation: string\n matchingEmbeddedDstCoeff: number\n matchingTimeCoeff: number\n matchingQueueOrderCoeff: number\n rabbitmqServerUrl: string\n rabbitmqEventsQueue: string\n rabbitmqEventsExchange: string\n rabbitmqCountingQueue: string\n rabbitmqCountingExchange: string\n dangerZones: boolean\n workflows: boolean\n linkedAnprCameras: Record<string, unknown>\n}\n\nexport type VerifiedDaysQueryParams = PaginationParams & {\n projectExid: ProjectExid\n camerasExid: CameraExid[]\n verifiedBy: string\n isMatched: boolean\n insertedAt: DateTime[]\n updatedAt: DateTime[]\n day: string\n}\n\nexport type EventUpdateRequestPayload = {\n cameraex: string\n roiId: number\n eventType: string\n eventTime: \"2024-12-13T14:25:58.066Z\"\n truckType: string\n isPublic: boolean\n boundingBox: {\n additionalProp1: number\n additionalProp2: number\n additionalProp3: number\n }\n valid: boolean\n loadState: string\n embeddingId: number\n embedding: number[]\n similarityDst: number\n detectionType: string\n trackingId: number\n deliveriesId: number\n edited: boolean\n isDeleted: boolean\n modelVersion: string\n}\n\nexport type VerifyDayUpdateRequestPayload = {\n camerasExid: string[]\n projectExid: string\n day: Date_YYYY_MM_DD\n isMatched: boolean\n verifiedBy: string\n}\n\nexport type ProcessedDaysQueryParams = {\n camerasExid: CameraExid[]\n isPublic: boolean\n eventType: GateReportEventType\n}\n\nexport type SecurityMeasurementQueryParams = {\n cameraex: string\n timestamp: DateTime\n prompt: string\n snapshotUrl: string\n}\n\nexport type ObjectDetectionQueryParams = {\n cameraex: string\n timestamp: DateTime\n base64Img: string\n snapshotUrl: string\n}\n\nexport type RoisQueryParams = {\n cameraExid: string\n id: number\n name: string\n fromDate: string\n roiType: GateReportROIShapeType\n isactive: boolean\n directionFilter: string\n sort: string\n}\n\nexport type GateReportROICreateRequestPayload = {\n id?: number\n roi: {\n cameraex: string\n name: string\n roiType: string\n isactive: true\n fromDate: string\n shapes: Record<string, unknown>[]\n directionFilter: string\n note: string\n }\n createdBy: string\n}\n","import { PaginationParams } from \"@/types\"\n\nexport enum HddFormat {\n ExFat = \"ExFAT\",\n HikFs = \"HikFS\",\n}\n\nexport enum HddType {\n Magnetic35 = '3.5\" Magnetic',\n Magnetic25 = '2.5\" Magnetic',\n Ssd25 = '2.5\" SSD',\n}\n\nexport enum HddState {\n Blank = \"Blank\",\n InUse = \"In Use\",\n ColdStorage = \"Cold Storage\",\n}\n\nexport enum WarehouseLocationIndex {\n IEWarehouse = 1,\n Deployed = 2,\n CustomerStorage = 3,\n USWarehouse = 4,\n AUWarehouse = 5,\n UKWarehouse = 6,\n}\n\nexport enum WarehouseLocation {\n IEWarehouse = \"IE Warehouse\",\n Deployed = \"Deployed\",\n CustomerStorage = \"Customer Storage\",\n USWarehouse = \"US Warehouse\",\n AUWarehouse = \"AU Warehouse\",\n UKWarehouse = \"UK Warehouse\",\n}\n\nexport enum HddSize {\n TwoTB = \"2 TB\",\n FourTB = \"4 TB\",\n FiveTB = \"5 TB\",\n SixTB = \"6 TB\",\n EightTB = \"8 TB\",\n TenTB = \"10 TB\",\n}\n\nexport type FootageCreateUpdatePayload = {\n cameraId: string\n startDate: string\n endDate: string\n}\n\nexport type HDDCreateUpdatePayload = {\n size: string\n type: string\n format: string\n locationId: string\n serialNumber: string\n hddStatus: string\n shelfBlock: string\n}\n\nexport type HDDsQueryParams = PaginationParams & {\n id: number\n location: string\n serialNumber: string\n shelfBlock: string\n format: string\n size: string\n type: string\n hddStatus: string\n}\n","import { PaginationParams, DateType } from \"@/types\"\n\nexport enum IngestProcessingStatus {\n Completed = \"completed\",\n Uploading = \"uploading\",\n Created = \"created\",\n Failed = \"failed\",\n Aborted = \"aborted\",\n Paused = \"paused\",\n InProgress = \"inprogress\",\n Pending = \"pending\",\n}\n\nexport enum IngestVersions {\n V1 = \"v1\",\n V2 = \"v2\",\n}\n\nexport type DronesQueryParams = Omit<PaginationParams, \"sort\"> & {\n projectId: string\n consumed: string\n token: string\n processingStatus: IngestProcessingStatus\n}\n\nexport type DroneUploadUpdateRequestPayload = {\n flightMetadata: {\n dateTime: string\n gpsAltitude: string\n gpsCoordinates: string\n }\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n projectName: string\n}\n\nexport type CalculateMeasuringOperationRequestPayload = {\n date: DateType\n points: [number, number][]\n operation: string\n}\n\nexport type FlightImagesQueryParams = Partial<\n Omit<PaginationParams, \"sort\">\n> & {\n date: DateType\n}\n\nexport type InspectionToolRequestPayload = {\n date: DateType\n gpsAltitude: string\n gpsCoordinates: string\n}\n","export enum MapType {\n Hybrid = \"hybrid\",\n Terrain = \"terrain\",\n}\n","export type ConnectorDetail = {\n login: string\n hostname: string\n}\n\nexport enum Connector {\n Aconex = \"aconex\",\n Procore = \"procore\",\n Autodesk = \"autodesk\",\n AutodeskViewer = \"autodesk_viewer\",\n VoyageControl = \"voyage_control\",\n\n // Project connectors\n XWeather = \"xweather\",\n}\n\nexport enum ProcoreType {\n Observations = \"observations\",\n Photos = \"photos\",\n}\n\nexport type ConnectorResponsePayload = Array<{\n hostname: string\n login: string\n provider: string\n}>\n","export enum NotificationType {\n CameraShare = \"camera_share\",\n CameraStatusChange = \"camera_status_changed\",\n Mention = \"mention\",\n TimelapseCreated = \"timelapse_created\",\n TimelapseFailed = \"timelapse_failed\",\n DroneProcessing = \"drone_processing_done\",\n Processing360 = \"three_sixty_done\",\n}\n\nexport interface CameraShareContext {\n cameraExid: string\n projectExid: string\n shareId: number\n}\n\n// export interface CameraStatusChangeContext {\n// cameraExid: string;\n// projectExid: string;\n// status: string;\n// }\n\n// export interface MentionContext {\n// postId: number;\n// commentId?: number;\n// }\n\nexport type Notification = {\n id: number\n type: NotificationType\n insertedAt: string\n initiatorId: number\n initiatorFullname: string\n initiatorEmail: string\n targetId: number\n targetFullname: string\n targetEmail: string\n readTimestamp: string | null\n context: CameraShareContext //| CameraStatusChangeContext | MentionContext\n}\n","import type { NvrModel } from \"@evercam/api/types\"\n\nexport type Nvr = {\n id?: number\n deviceType: NvrDeviceType\n serial: string\n model: NvrModel\n httpUrl: string\n rtspUrl: string\n macAddress: string\n username: string\n password: string\n nerves: boolean\n}\n\nexport enum NvrDeviceType {\n Rpi4 = \"rpi4\",\n Rpi5 = \"rpi5\",\n OrinNano = \"orin_nano\",\n Giraffe = \"giraffe\",\n}\n\nexport enum NvrHddStatus {\n Error = \"error\",\n Idle = \"idle\",\n NotExist = \"notexist\",\n Ok = \"ok\",\n Unformatted = \"unformatted\",\n}\n\nexport type NvrCreatePayload = {\n serial?: string\n httpUrl: string\n rtspUrl?: string\n deviceType?: NvrDeviceType\n model: NvrModel\n username: string\n password: string\n kitId?: number\n}\n","export type ProcoreUserCompaniesResponsePayload = Array<{\n id: number\n isActive?: boolean\n name: string\n}>\n\nexport type ProcoreCompanyRequestPayload = {\n companyId: number\n}\n\nexport type ProcoreProjectRequestPayload = {\n companyId: number\n projectId: number\n}\n\nexport type ProcoreObservationListItem = {\n id: number\n name: string\n}\n\nexport type ProcoreObservationDefaultList = Array<\n ProcoreObservationListItem & {\n active: boolean\n global: boolean\n createdAt: string\n updatedAt: string\n }\n>\n\nexport type ProcoreObservationAssignee = ProcoreObservationListItem & {\n vendor: ProcoreObservationListItem\n}\n\nexport type ProcoreObservationDistributionMember =\n ProcoreObservationListItem & {\n login: string\n }\n\nexport type ProcoreObservationTrades = ProcoreObservationListItem & {\n active: boolean\n updatedAt: string\n}\n\nexport type ProcoreObservationLocation = ProcoreObservationListItem & {\n nodeName: string\n parentId: number\n createdAt: string\n updatedAt: string\n code: string\n}\n\nexport type ProcoreObservationSpecificationSection = {\n id: number\n number: string\n description: string\n label: string\n currentRevisionId: number\n}\n\nexport type ProcoreUserProjectsResponsePayload = Array<{\n accountingProjectNumber?: number\n active: boolean\n address: string\n city: string\n company: {\n id: number\n name: string\n }\n completionDate: string\n countryCode: string\n county: string\n createdAt: string\n customFields?: object\n designatedMarketArea: string\n displayName: string\n estimatedValue: string\n id: number\n isDemo: boolean\n latitude: number\n longitude: number\n name: string\n originCode: string | number | null\n originData: string | null\n originId: number | null\n ownersProjectId: number | null\n parentJobId: number | null\n phone: string | number\n photoId: number\n projectBidTypeId: number | null\n projectNumber: string\n projectOwnerTypeId: number | null\n projectRegionId: number | null\n stage: string\n startDate: string\n stateCode: string\n storeNumber?: string\n timeZone: string\n totalValue: string\n updatedAt: string\n zip: number\n}>\n\nexport type ProcoreToolUserAccessLevel = {\n id: ProcoreToolUserAccessLevelIds\n name: string\n}\n\nexport type ProcoreToolPermittedAction = {\n id: number\n actionName: string\n label: string\n toolName: string\n}\n\nexport type ProcoreToolPermissions = {\n id: number\n name: string\n friendlyName: string\n domainId: number\n tabGroup: string\n availableForUser: boolean\n url: string\n userAccessLevel: ProcoreToolUserAccessLevel\n permittedActions: Array<ProcoreToolPermittedAction>\n createUrl: string\n canCreate: boolean\n trial: boolean\n}\n\nexport type ProcoreUserProjectPermissionsResponsePayload = {\n tools: Array<ProcoreToolPermissions>\n}\n\nexport type ProcoreEditedImageUploadRequestPayload = {\n projectExid: string\n companyId: number\n projectId: number\n snapshot: string\n categoryId?: number\n}\n\nexport type ProcoreProjectsAlbumsPayload = Array<{\n count: number\n coverPhoto: string | null\n createdAt: string\n id: number\n links: {\n delete: string\n show: string\n update: string\n }\n name: string\n position: number\n private: boolean\n updatedAt: string\n}>\n\nexport type ProcoreObservationTypesResponsePayload = Array<{\n id: number\n name: string\n localizedName: string\n category: string\n categoryKey: string\n companyActive: boolean\n active: boolean\n kind: string\n parentInactive: boolean\n isUse: boolean\n nameTranslations: string\n}>\n\nexport type ProcoreObservationFormRequestPayload = {\n projectId: number\n companyId: number\n observationType: string\n}\n\nexport type ProcoreObservationForm = Record<\n string,\n ProcoreObservationField | ProcoreObservationCustomField\n>\n\nexport type ProcoreObservationField = {\n name: string\n required: boolean\n visible: boolean\n}\n\nexport type ProcoreObservationCustomField = {\n id: number\n required: boolean\n visible: boolean\n name: string\n label: string\n description: string\n customFieldDefinitionId: number\n dataType: ProcoreObservationCustomFieldDataType\n variant: string\n position: number\n row: number\n column: number\n columnWidth: number\n optionsUrl: string | null\n defaultValue: string | null\n}\n\nexport type ProcoreNextObservationAvailableNumber = {\n nextAvailableNumber: number\n}\n\nexport enum ProcoreObservationCustomFieldDataType {\n RichText = \"rich_text\",\n Date = \"date\",\n DateTime = \"datetime\",\n LovEntry = \"lov_entry\",\n LovEntries = \"lov_entries\",\n Boolean = \"boolean\",\n Vendor = \"vendor\",\n Decimal = \"decimal\",\n String = \"string\",\n LoginInformation = \"login_information\",\n LoginInformations = \"login_informations\",\n Dropdown = \"dropdown\",\n}\n\nexport enum ProcoreObservationDefaultFieldNames {\n Number = \"number\",\n Name = \"name\",\n Status = \"status\",\n Trade = \"tradeId\",\n Assignee = \"assigneeId\",\n DueDate = \"dueDate\",\n SpecificationSection = \"specificationSectionId\",\n Priority = \"priority\",\n Location = \"locationId\",\n DistributionMembers = \"distributionMemberIds\",\n Personal = \"personal\",\n Hazard = \"hazardId\",\n ContributingBehavior = \"contributingBehaviorId\",\n ContributingCondition = \"contributingConditionId\",\n Description = \"description\",\n}\n\nexport enum ProcoreTools {\n Observations = \"observations\",\n ProgressPhotos = \"images\",\n}\n\nexport enum ProcoreToolUserAccessLevelIds {\n NoAccess = 1,\n ReadOnly = 2,\n Standard = 3,\n Admin = 4,\n}\n","import { AutomationType, DateTime, DateType, PaginationParams } from \"@/types\"\nexport type Automation = {\n name?: string\n cameraIds: string\n cameraNames: number\n cameraExids?: string[]\n createdAt: string\n id: number\n provider: string\n type: AutomationType\n config: Partial<{\n recipients: string | Record<string, string>[]\n companyId: number\n compareDelay: number\n categoryId: string\n hubId: string\n folderId: string\n projectId: number\n }>\n isPaused: boolean\n notifyDays: string | string[]\n notifyTime: string\n requesterEmail: string\n requesterName: string\n timezone: string\n title: string\n compareDelay?: number\n selectedProvider?: string\n restrictedCameraExids?: string[]\n recipients?: string | string[]\n}\n\nexport type ProgressPhotosCreateUpdateRequestPayload = {\n cameraExids?: string\n notifyDays?: string\n compareDelay?: AutomationType\n notifyTime?: string\n provider?: string\n type?: string\n config?: {\n compareDelay?: AutomationType\n recipients?: string\n projectId?: number\n companyId?: number\n catergoryId?: string\n }\n subject?: string\n isPaused?: boolean\n timezone?: string\n}\n\nexport type ProgressPhotosUnSubscribeParams = {\n email: string\n token?: string\n}\n\nexport type ProgressPhotosResponsePayload = {\n progressPhotos: Automation[]\n}\n\nexport enum AutomationDialogType {\n Create = \"create\",\n Edit = \"edit\",\n Pause = \"pause\",\n}\n\nexport type CameraOption = {\n exid: string\n name: string\n}\n\nexport interface ProgressPhotoItem {\n id: number\n cameras: CameraOption[] | string[] | string\n insertedAt: string\n provider: string\n config: {\n recipients: string | string[]\n sendSnapshotAs: string\n }\n isPaused: boolean\n notifyDays: string | string[]\n notifyTime: string\n api_id: string\n api_key: string\n timezone: string\n exid: string\n fullname: string\n}\n\nexport type ProgressPhotosQueryParams = PaginationParams & {\n fullname: string\n recipients: string\n notifyTime: string\n timezone: string\n cameras: string\n}\n\nexport type progressPhotosHistoryQueryParams = {\n insertedAt: DateType[]\n recipients: string\n subject: string\n cameraId: string\n failedCameraId: string\n}\n\nexport type ProgressPhotosHistory = {\n id: number\n cameraIds: string\n failedCameraIds: string\n subject: string\n recipients: DateTime\n}\n","import {\n AdminCamera,\n Camera,\n CameraExid,\n DateTime,\n DateType,\n EntityByExid,\n Exid,\n PaginationParams,\n} from \"@/types\"\n\nexport type ProjectExid = Exid\n\nexport type ProjectsByExid = EntityByExid<Project>\n\nexport type Project = {\n id: string | number\n exid: ProjectExid\n name: string\n status?: ProjectStatus\n insertedAt?: string\n startedAt?: string\n timezone?: string\n zohoId?: string\n userId?: number\n cameras?: Array<Camera | AdminCamera>\n unrestrictedCameras?: Array<Camera | AdminCamera>\n featureFlags: Array<ProjectFeatureFlag>\n owner?: { email?: string }\n ownerEmail?: string\n ownerName?: string\n camerasRestrictionType?: string\n}\n\nexport enum ProjectStatus {\n ToStart = \"To Start\",\n InProgress = \"In Progress\",\n Completed = \"Completed\",\n NotAplicable = \"Not Applicable\",\n}\n\nexport enum ProjectArchiveTier {\n Full = \"Full\",\n Partial = \"Partial\",\n Minimal = \"Minimal\",\n ScheduledForDeletion = \"Scheduled for Deletion\",\n}\n\nexport type ProjectResponsePayload = {\n data?: Project[]\n}\n\nexport type UpdateCameraRestrictionPayload = {\n isAccessRestricted?: boolean\n}\n\nexport type Logo = {\n name: string\n url: string\n}\n\nexport type ProjectLogoResponsePayload = Logo[]\n\nexport enum ProjectFeatureFlag {\n AnprLegacy = \"anpr_legacy\",\n DroneView = \"drone_view\",\n Bim = \"4d_bim\",\n BimItwin = \"4d_bim_itwin\",\n BimForge = \"4d_bim_forge\",\n ThreeSixtyView = \"360_view\",\n NdaMc = \"NDA/MC\",\n GateReport = \"gate_report\",\n GateReportAutoVerify = \"auto_publish\",\n GateReportMotionDetection = \"motion_detection\",\n FullEmpty = \"full_empty\",\n MediaHubSharing = \"archives_sharing\",\n GateReportAnprBased = \"anpr_sourced\",\n NoLicensePlate = \"no_license_plate\",\n DefaultToProjectApp = \"default_to_project_app\",\n SmartSearch = \"smart_search\",\n PpeMonitoring = \"ppe_monitoring\",\n}\n\nexport type ProjectBatteryReading = {\n exid: number\n voltage: number\n lastSeen: DateType\n}\n\nexport type ThumbnailData = {\n cameraExid: CameraExid\n custom: boolean\n image: string\n}\n\nexport type ProjectsQueryParams = PaginationParams & {\n name: string\n exid: string\n status: ProjectStatus\n cameras: string\n featureFlags: Array<ProjectFeatureFlag>\n archived: string\n}\n\nexport type ProjectCreateRequestPayload = {\n projectExid?: string\n projectName: string\n ownerId: number\n cameras: string[]\n}\n\nexport type ProjectCreateResponse = {\n name: string\n exid: string\n id: number\n userId: number\n zohoId: string\n}\n\nexport type ProjectUpdateRequestPayload = {\n name: string\n timezone: string\n featureFlags: ProjectFeatureFlag[]\n cameras: string[]\n}\n\nexport type ProjectStatusStats = {\n nil: number\n Completed: number\n \"In Progress\": number\n \"Not Applicable\": number\n \"To Start\": number\n}\n\nexport type ProjectUserProperty = {\n active: boolean\n activeOneMonth: boolean\n cameraExid: string\n cameraName: string\n cameraRights: string\n email: string\n eventsCount: number\n fullname: string\n id: number\n lastSeenAt: DateTime\n persona: string\n}\n\nexport type ProjectUsers = {\n cameras: {\n exid: string\n name: string\n }[]\n users: Record<string, ProjectUserProperty[]>\n}\n","import { ApiCredentials } from \"@/types\"\nimport { CancelToken } from \"axios\"\n\nexport type Snapshot = {\n createdAt: string\n data: string\n status?: string\n}\n\nexport type NearestSnapshotRequestPayload = {\n apiKey?: string\n apiId?: string\n token?: string\n cancelToken?: object\n}\n\nexport type AvailableDaysRequestPayload = {\n cameraId: string\n year: string\n month: string\n payload?: ApiCredentials\n}\nexport type AvailableDaysResponsePayload = {\n days: Array<number>\n}\n\nexport type AvailableHoursRequestPayload = {\n cameraId: string\n year: string\n month: string\n day: string\n payload?: ApiCredentials\n cancelToken?: CancelToken\n}\nexport type AvailableHoursResponsePayload = {\n hours: Array<number>\n}\n\nexport type NearestSnapshotResponsePayload = {\n snapshots: Array<{\n createdAt: string\n data: string\n notes?: string\n }>\n}\n\nexport type SnapshotRangeRequestPayload = {\n from: string\n to: string\n limit?: number\n page?: number\n schedule?: boolean\n count?: number\n}\nexport type SnapshotInstance = {\n createdAt: string\n notes?: string\n data?: string\n}\nexport type SnapshotRangeResponsePayload = {\n snapshots: Array<SnapshotInstance>\n}\n\nexport enum BrainTool {\n Detections = \"detections\",\n Segmentation = \"sam\",\n}\n\nexport enum CloudRecordingFrequency {\n EverySecond = 60,\n Every2Seconds = 30,\n Every5Seconds = 12,\n Every10Seconds = 6,\n Every15Seconds = 4,\n Every30Seconds = 2,\n Every60Seconds = 1,\n Every5Minutes = 5,\n Every10Minutes = 10,\n}\n\nexport enum CloudRecordingDuration {\n Infinity = -1,\n Day = 1,\n Week = 7,\n Month = 30,\n ThreeMonths = 90,\n}\n\nexport enum CloudRecordingStatus {\n On = \"on\",\n Off = \"off\",\n Paused = \"paused\",\n OnScheduled = \"on-scheduled\",\n}\n\nexport enum SnapshotExtractionInterval {\n EverySecond = 1,\n Every5Seconds = 5,\n Every10Seconds = 10,\n Every15Seconds = 15,\n Every20Seconds = 20,\n Every30Second = 30,\n EveryMinute = 60,\n Every5Minutes = 300,\n Every10Minutes = 600,\n Every15Minutes = 900,\n Every20Minutes = 1200,\n Every30Minutes = 1800,\n EveryHour = 3600,\n Every2Hours = 7200,\n Every6Hours = 21600,\n Every12Hours = 43200,\n Every24Hours = 86400,\n}\n\nexport enum VpnServer {\n None = \"None\",\n OpenVPN1 = \"OpenVPN1\",\n OpenVPN2 = \"OpenVPN2\",\n OpenVPN3 = \"OpenVPN3\",\n OpenVPN4 = \"OpenVPN4\",\n OpenVPN5 = \"OpenVPN5\",\n PPTP1 = \"PPTP1\",\n PPTP2 = \"PPTP2\",\n WireGuard1 = \"WireGuard1\",\n WireGuard2 = \"WireGuard2\",\n WireGuard3 = \"WireGuard3\",\n WireGuard4 = \"WireGuard4\",\n WireGuard5 = \"WireGuard5\",\n WireGuard6 = \"WireGuard6\",\n WireGuard7 = \"WireGuard7\",\n WireGuard8 = \"WireGuard8\",\n WireGuard9 = \"WireGuard9\",\n WireGuard10 = \"WireGuard10\",\n}\n","export enum RoiType {\n Gate = \"gate\",\n AnprContext = \"anpr_context\",\n ExclusionZone = \"exclusion_zone\",\n WorkflowArea = \"workflow_area\",\n SiteAnalytics = \"site_analytics\",\n}\n\nexport enum RoiShapeType {\n Polygon = \"polygon\",\n Line = \"line\",\n Direction = \"direction\",\n Rectangle = \"rectangle\",\n ROIBox = \"ROIBox\",\n}\n\nexport type RoiShape = {\n id: number | null\n name: string\n x1: number\n x2: number\n y1: number\n y2: number\n}\n\nexport enum RoiDirection {\n Arrived = \"arrived\",\n Left = \"left\",\n Bidirectional = \"arrived,left\",\n}\n","export type RouteParams = {\n projectExid?: string\n cameraExid?: string\n timestamp?: string\n fromDate?: string\n toDate?: string\n}\n\nexport enum UrlParamValue {\n True = \"true\",\n False = \"false\",\n}\n\nexport enum TimelineUrlParam {\n CameraExid = \"cameraExid\",\n Timestamp = \"timestamp\",\n FromDate = \"fromDate\",\n ToDate = \"toDate\",\n Live = \"live\",\n Video = \"video\",\n OverlayType = \"overlayType\",\n ShowOverlay = \"showOverlay\",\n ShowCompare = \"showCompare\",\n Sidebar = \"sidebar\",\n ThreeSixtyId = \"_360Id\",\n DroneId = \"droneId\",\n MediaId = \"mediaId\",\n}\n\nexport enum Timeline360UrlParams {\n Show360 = \"show360\",\n}\n\nexport enum TimelineDroneUrlParams {\n ShowDrone = \"showDrone\",\n}\n\nexport enum TimelineMediaUrlParams {\n ShowMedia = \"showMedia\",\n}\n\nexport enum TimelineBimUrlParams {\n ShowBim = \"showBim\",\n}\n\nexport enum TimelineExNvrRecordingsUrlParams {\n ShowExNvrRecordings = \"showExNvrRecordings\",\n}\n\nexport enum TimelineAnprUrlParams {\n ShowAnpr = \"showAnpr\",\n}\n\nexport enum TimelineMobileCaptureUrlParams {\n ShowMobileCapture = \"showMobileCapture\",\n}\n\nexport enum TimelineCommentsUrlParams {\n ShowComments = \"showComments\",\n}\n\nexport type TimelineUrlParams = Record<\n | TimelineUrlParam\n | TimelineMediaUrlParams\n | TimelineBimUrlParams\n | TimelineExNvrRecordingsUrlParams\n | TimelineAnprUrlParams\n | TimelineMobileCaptureUrlParams\n | TimelineCommentsUrlParams,\n string | null\n>\n","import { Camera, PaginationParams, Project, Sim } from \"@/types\"\nexport type RouterBillPayer = { name: string }\n\nexport type SimProvider = { name: string }\n\nexport type Router = {\n id?: number\n kitId: number | null\n routerType: string\n routerUserId: string\n routerPassword: string\n serialNumber: number | null\n rmsUrl?: string\n externalHost?: string\n routerHttpPort: number | null\n vpnPassword: string\n vpnUserId: string\n vpnServer: string\n netbirdUrl: string\n status: RouterStatus\n powerType: PowerType\n powerSchedule: string\n battery?: {\n lastVoltage: number\n lastSeen: string\n }\n sims: Array<Pick<Sim, \"id\" | \"number\">>\n billPayers?: Array<RouterBillPayer>\n simProviders?: Array<SimProvider>\n projects?: Pick<Project, \"exid\" | \"id\" | \"name\">[]\n cameras?: Pick<Camera, \"id\" | \"name\">[]\n}\n\nexport enum PowerType {\n Mains = \"mains\",\n Battery = \"battery\",\n Solar = \"solar\",\n Generator = \"generator\",\n Other = \"other\",\n}\n\nexport enum PowerSchedule {\n Schedule = \"schedule\",\n FullTime = \"24/7\",\n}\n\nexport enum RouterStatus {\n Active = \"active\",\n Inactive = \"inactive\",\n}\n\nexport type RouterQueryParams = PaginationParams & {\n routerType: string\n vpnServer: string\n serialNumber: string\n}\n\nexport type RouterCreatePayload = {\n serialNumber: number\n vpnUserId?: string\n vpnPassword?: string\n routerType: string\n routerUserId?: string\n routerPassword?: string\n routerHttpPort: number\n powerType: PowerType\n powerSchedule: PowerSchedule\n vpnServer?: string\n netbirdUrl?: string\n}\n","import type { CameraExid, DateTime, DateType } from \"@/types\"\n\nexport type ShareRequest = {\n cameraId: string\n createdAt: DateType | number\n email: string\n id: number\n rights: string\n sharerEmail: string\n sharerName: string\n userId: number\n}\n\nexport type Share = {\n cameraId: string\n createdAt: DateType | number\n email: string\n fullname: string\n id: number\n lastSeenAt: DateType\n rights: string\n sessionCount: number\n sharerEmail: string\n sharerId: number\n sharerName: string\n userId: number\n isUserAccessRestricted: boolean\n}\n\nexport type ShareRequestsResponsePayload = {\n shareRequests: ShareRequest[]\n}\n\nexport type ShareOwner = {\n email: string\n fullname: string\n lastSeenAt: DateType\n sessionCount: number\n}\n\nexport type SharesResponsePayload = {\n owner: ShareOwner\n shares: Share[]\n}\n\nexport type ShareDeletionRequestPayload = {\n email?: string\n key?: string\n origin?: string\n}\n\nexport type SharedUsersResponsePayload = Array<{\n email: string\n name: string\n}>\n\nexport type ShareCreateRequestPayload = {\n email: string[] | string\n message?: string\n permission?: string\n rights: string\n apiId?: string\n apiKey?: string\n}\n\nexport type ShareProjectCamerasRequestPayload = {\n email: string[]\n cameraExids: CameraExid[]\n message: string\n permission?: string\n rights: string\n}\n\nexport type UpdateUserRestrictionPayload = {\n email: string[]\n isUserAccessRestricted: boolean\n}\n\nexport type ShareCreateResponsePayload = {\n shares: Share[]\n shareRequests: ShareRequest[]\n}\n\nexport type ShareRequestByKeyResponsePayload = {\n shareRequests: Array<{\n id: string\n email: string\n rights: string\n cameraId: string\n sharerName: string\n userId: string\n sharerEmail: string\n createdAt: DateType\n }>\n}\n\nexport type ResendShareRequestPayload = {\n email: string\n apiId?: string\n apiKey?: string\n}\n\nexport enum SharePermission {\n Minimum = \"minimum\",\n Share = \"minimal+share\",\n Full = \"full\",\n Custom = \"custom\",\n}\n\nexport enum ShareType {\n Share = \"share\",\n Request = \"request\",\n}\n\nexport enum ShareRequestStatus {\n Pending = -1,\n Cancelled = -2,\n Failed = -3,\n Used = 1,\n}\n\nexport enum ShareVisibility {\n PublicDiscoverable = \"publicDiscoverable\",\n PublicUndiscoverable = \"publicUndiscoverable\",\n Private = \"private\",\n}\n\nexport type ProjectShare = {\n id: number\n projectId: string\n userId: number\n email: string\n fullname: string\n sharerId: number\n sharerEmail: string\n sharerName: string\n role: \"member\" | \"admin\"\n cameras: Record<string, string>\n message: string | null\n updatedAt: DateType\n insertedAt: DateType\n}\n\nexport type ProjectShareRequest = ProjectShare\n\nexport type ProjectShareResponse = {\n projectShares: ProjectShare[]\n projectShareRequests: ProjectShareRequest[]\n}\n\nexport type AdminShare = {\n sharerId: number\n sharerFullname: string\n sharerApiId: string\n sharerApiKey: string\n shareeId: number\n shareeFullname: string\n shareeApiId: string\n shareeApiKey: string\n shareeEmail: string\n cameraId: number\n exid: string\n projectId: string\n name: string\n id: number\n message: string\n createdAt: DateType\n}\n\nexport type CameraShareRequestPayload = {\n email: string[]\n rights: string\n message?: string\n}\n\nexport type ShareQueryParams = {\n exid: string\n sharerFullname: string\n shareeFullname: string\n shareeEmail: string\n}\n\nexport type CameraShare = {\n sharerId: number\n sharerFullname: string\n sharerApiId: string\n sharerApiKey: string\n shareeId: number\n shareeFullname: string\n shareeApiId: string\n shareeApiKey: string\n shareeEmail: string\n cameraId: number\n exid: string\n projectId: string\n name: string\n id: number\n message: string\n createdAt: DateTime\n}\n\nexport type CameraShareRequestsQueryParams = {\n shareeEmail: string\n camera: string\n sharer: string\n status: string\n}\n\nexport type CameraShareRequest = {\n id: number\n shareeEmail: string\n camera: string\n sharer: string\n message: number\n rights: string\n status: number\n projectId: string\n cameraExid: string\n apiId: string\n apiKey: number\n createdAt: DateTime\n}\n","import { DateTime, PaginationParams } from \"@/types\"\nexport enum SmsCommands {\n Cellular = \"cellular\",\n Gpson = \"gpson\",\n GPS = \"gps\",\n IPUnblock = \"ipunblock\",\n IOStatus = \"iostatus\",\n IOSet = \"ioset\",\n MonitoringStatus = \"monitoring_status\",\n MobileOn = \"mobileon\",\n MobileOff = \"mobileoff\",\n Reboot = \"reboot\",\n Restore = \"restore\",\n RmsOn = \"rms_on\",\n RmsConnect = \"rms_connect\",\n RmsStatus = \"rms_status\",\n SwitchSIM = \"switch_sim\",\n Status = \"status\",\n SshOn = \"sshon\",\n SshOff = \"sshoff\",\n Uci = \"uci\",\n VpnOn = \"vpnon\",\n VpnOff = \"vpnoff\",\n VpnStatus = \"vpnstatus\",\n WifiOn = \"wifion\",\n WifiOff = \"wifioff\",\n Wakeup = \"wakeup\",\n WebOn = \"webon\",\n WebOff = \"weboff\",\n}\n\nexport enum SmsStatuses {\n Delivered = \"Delivered\",\n Accepted = \"accepted\",\n Pending = \"Pending\",\n}\n\nexport type SimCreateUpdatePayload = {\n number: string\n simProvider: string\n billPayer?: string\n pin1?: string\n pin2?: string\n puk?: string\n iccid?: string\n description?: string\n cameraId: string[]\n}\n\nexport type SimsQueryParams = PaginationParams & {\n simProvider: string\n number: string\n billPayer: string\n iccid: string\n cameraName: string\n description: string\n}\n\nexport type Sim = {\n id: number\n number: string\n simProvider: string\n billPayer: string\n lastSms: string\n pin1: string\n pin2: string\n puk: string\n iccid: string\n description: string\n lastSmsAt: DateTime\n cameras: {\n name: string\n exid: string\n id: number\n }[]\n}\n\nexport type SendSmsPayload = {\n number: string\n smsMessage: string\n}\n\nexport type SendSmsResponse = {\n status: number\n errorText: string\n}\n\nexport type SmsHistory = {\n insertedAt: DateTime\n type: string\n status: string\n text: string\n deliveryDatetime: DateTime\n}\n\nexport type SmsHistoryResponse = {\n singleSimSms: SmsHistory[]\n}\n\nexport type Sms = {\n id: number\n from: string\n fromName: string\n to: string\n toName: string\n messageId: string\n status: string\n text: string\n type: string\n insertedAt: DateTime\n deliveryDatetime: DateTime\n}\n\nexport type SmsQueryParams = PaginationParams & {\n dateRange: string\n fromName: string\n toName: string\n fromNumber: string\n toNumber: string\n smsText: string\n smsType: string\n smsStatus: SmsStatuses\n deliveryDatetime: string\n}\n","export enum PerformanceStatus {\n Pending = \"pending\",\n Done = \"done\",\n}\nexport enum WebGLExtensions {\n OESTextureFloat = \"OES_texture_float\",\n EXTFloatBlend = \"EXT_float_blend\",\n EXTTextureFilterAnisotropic = \"EXT_texture_filter_anisotropic\",\n OESElementIndexUint = \"OES_element_index_uint\",\n WEBGLDebugRendererInfo = \"WEBGL_debug_renderer_info\",\n}\n","export enum EDistortImageModes {\n FreeRotate = \"freeRotate\",\n Lock = \"lock\",\n}\n\nexport enum EMapTypes {\n Blank = \"Blank\",\n Satellite = \"Satellite\",\n Street = \"Street\",\n GoogleSatellite = \"hybrid\",\n GoogleStreet = \"roadmap\",\n GoogleTerrain = \"terrain\",\n}\n\nexport enum EMarkers {\n CameraMarker = \"cameraMarker\",\n ThreeSixtyMarker = \"threeSixtyMarkers\",\n}\n\nexport enum EPageType {\n List = \"list\",\n Item = \"item\",\n}\n\nexport enum EPaths {\n Home = \"/\",\n Session = \"/session\",\n}\n\nexport enum EProjectItems {\n Camera = \"camera\",\n Overlay = \"overlay\",\n}\n\nexport enum ERoles {\n Admin = \"admin\",\n User = \"user\",\n}\n","import { DateTime_Z_micros, KitMetricData } from \"@/types\"\nexport type ExNvrLoginResponse = { accessToken: string }\n\nexport type ExNvrRecordingInterval = {\n active: boolean\n startDate: DateTime_Z_micros\n endDate: DateTime_Z_micros\n}\n\nexport type ExNvrDeviceConfig = {\n id: string\n name: string\n type: string\n state: ExNvrDeviceState\n credentials: {\n password: string\n username: string\n }\n mac: string\n url: string\n insertedAt: string\n updatedAt: string\n settings: {\n storageAddress: string\n overrideOnFullDisk: boolean\n overrideOnFullDiskThreshold: number\n generateBif: boolean\n }\n vendor: string\n model: string\n streamConfig: {\n filename: string | null\n duration: string | null\n temporaryPath: string | null\n snapshotUri: string\n streamUri: string\n subStreamUri: string\n }\n timezone: string\n}\n\nexport enum ExNvrFootageAvailableStatus {\n Available = \"Available\",\n NotAvailable = \"Not Available\",\n}\n\nexport enum ExNvrDeviceState {\n Recording = \"recording\",\n Failed = \"failed\",\n Stopped = \"stopped\",\n}\n\nexport type ExNvrCpuStatus = {\n load: number[]\n numCores: number\n}\n\nexport type ExNvrMemoryStatus = {\n systemTotalMemory: number\n freeMemory: number\n totalMemory: number\n bufferedMemory: number\n cachedMemory: number\n totalSwap: number\n freeSwap: number\n availableMemory: number\n}\n\nexport type ExNvrSolarChargerStatus = {\n v: number\n vpv: number\n ppv: number\n i: number\n il: number\n load: string\n relayState: string\n offReason: number\n h19: number\n h20: number\n h21: number\n h22: number\n h23: number\n err: number\n cs: string\n fw: string\n pid: string\n serialNumber: string\n}\n\nexport type ExNvrSystemStatus = {\n version: string\n cpu: ExNvrCpuStatus\n memory: ExNvrMemoryStatus\n solarCharger: ExNvrSolarChargerStatus\n}\n\nexport enum ExNvrMetricId {\n CpuLoad = \"cpu_load\",\n RamUsage = \"ram_usage\",\n}\n\nexport type ExNvrMetric = KitMetricData & {\n metricId: ExNvrMetricId\n value: number\n}\n","import { DateType, Schedule } from \"@/types\"\n\nexport enum TimelapseStatus {\n Pending = 11,\n Completed = 5,\n Failed = 7,\n}\n\nexport enum TimelapseDuration {\n ThirtySeconds = 30,\n SixtySeconds = 60,\n NintySeconds = 90,\n}\n\nexport type TimelapseVideoOptions = {\n width?: number\n height?: number\n removeTimestamp: boolean\n smoothTransition: boolean\n evercamWatermark: boolean\n timestampPosition?: TimestampPositionCoordinates\n}\n\nexport type TimestampPositionCoordinates = {\n x: number\n y: number\n w: number\n h: number\n}\n\nexport type TimelapseLogoOptions = {\n id: number\n x: number\n y: number\n width: number\n height: number\n}\n\nexport type TimelapseSchedules = string | Schedule\n\nexport enum TimelapseScheduleType {\n Continuous = \"continuous\",\n WorkingHours = \"workingHours\",\n Custom = \"custom\",\n}\n\nexport enum TimelapsePeriod {\n Day = 1,\n Week = 7,\n Month = 30,\n WholeProject = \"whole_project\",\n Custom = \"custom\",\n}\n\nexport enum TimelapseType {\n Hour = \"hour\",\n Day = \"day\",\n Week = \"week\",\n Month = \"month\",\n Year = \"year\",\n FullProject = \"full_project\",\n}\n\nexport type TimelapseFilterQueryParams = {\n from?: DateType\n to?: DateType\n period?: TimelapsePeriod\n duration?: number\n schedule?: TimelapseSchedules\n}\n\nexport type TimelapseCreationRequestPayload = {\n title: string\n duration: number\n fromDatetime: string\n toDatetime: string\n cameraExid: string\n schedule: Schedule\n videoOptions: TimelapseVideoOptions\n logo?: TimelapseLogoOptions\n}\n\nexport type TimelapseCreationResponsePayload = {\n Timelapse: {\n camera: string\n createdAt: string\n fromDate: string\n id: number\n duration: number\n requestor: string\n schedule: Schedule\n status: number\n toDate: string\n updatedAt: string\n }\n}\n\nexport type TimelapseSnapshotRequestPayload = {\n from: string\n to: string\n schedule: string\n count: number\n}\n\nexport type TimelapseSnapshotResponsePayload = {\n snapshots: string[]\n}\n\nexport enum TimelapseExportStep {\n Format = 1,\n Effects = 2,\n Confirm = 3,\n Finish = 4,\n}\n","import type { DateTime, PaginationParams } from \"@/types\"\n\nexport type User = {\n id?: number\n fullname?: string\n firstname: string\n lastname: string\n email: string\n telephone: string\n country: string\n isAdmin: boolean\n persona: Persona\n companyId?: string\n companyName?: string\n companyExid?: string\n features?: Array<UserFeatureFlag>\n}\n\nexport type AdminUser = {\n id: number\n fullname: string\n firstname: string\n email: string\n telephone: string\n country: string\n isAdmin: boolean\n companyId: string\n companyName: string\n companyExid: string\n features: Array<UserFeatureFlag>\n active: boolean\n cameraShares: number\n camerasCount: number\n camerasOwned: number\n countryId: number\n countryName: string\n createdAt: DateTime\n integrations: string[]\n lastSeenAt: DateTime\n lastLoginAt: string\n lastname: string\n persona: string\n projects: string[]\n projectsCount: number\n referralUrl?: string\n snapmailCount: number\n zohoId: string\n}\n\nexport enum UserFeatureFlag {\n CompanyAdmin = \"company-admin\",\n VideoWalls = \"video-walls\",\n MassCameraSharing = \"mass-camera-sharing\",\n Copilot = \"copilot\",\n ProjectSharing = \"project-sharing\",\n}\n\nexport type ProjectUser = User & {\n lastSeenAt: string\n active: boolean\n activeOneMonth: boolean\n eventsCount: string\n cameraExid: string\n cameraRights: string\n}\n\nexport enum Persona {\n HQ = \"HQ\",\n PM = \"PM\",\n QS = \"QS\",\n Marketing = \"Marketing\",\n HS = \"H&S\",\n DI = \"DI\",\n Other = \"Other\",\n}\n\nexport type UpdatePasswordRequestPayload = {\n token: string\n password: string\n}\n\nexport type Credentials = {\n apiKey: string\n apiId: string\n}\n\nexport type LoginRequestPayload = {\n username: string\n password: string\n redirectToZoho?: boolean\n}\n\nexport type RemotePasswordUpdateRequestPayload = {\n currentPassword: string\n newPassword: string\n}\n\nexport type LoginResponsePayload = {\n confirmedAt?: string\n country?: string\n createdAt?: string\n email?: string\n firstname?: string\n id?: string\n isAdmin?: boolean\n lastLoginAt?: string\n lastname?: string\n persona?: Persona\n telephone?: string\n token?: string\n updatedAt?: string\n evercamAccount?: string\n}\n\nexport type LogoutParams = {\n token: string\n fromAdmin?: boolean\n}\n\nexport type UserSession = {\n browser: string\n createdAt: string\n id: number\n ipAddress: string\n isCurrent: boolean\n lastUsedAt: string\n os: string\n}\n\nexport type SessionsListRequestPayload = {\n authorization: string\n browser?: string\n os?: string\n ipAddress?: string\n sort: string\n limit: number\n page: number\n}\n\nexport type SessionActivityCamSettingsDetail = {\n new: any\n old: any\n}\n\nexport type SessionActivityDetail = {\n agent: string\n camSettings: SessionActivityCamSettingsDetail\n country: string\n countryCode: string\n ip: string\n}\n\nexport type SessionActivity = {\n cameraExid: string\n details: SessionActivityDetail\n insertedAt: string\n type: string\n who: string\n}\n\nexport type SessionActivitiesListRequestPayload = {\n limit: number\n from: string\n to: string\n}\n\nexport type SignupUserRequestPayload = {\n telephone: string\n token: string\n firstname: string\n lastname: string\n email: string\n password: string\n shareRequestKey: string\n referralUrl: string\n persona: string\n disablePassword: boolean\n}\n\nexport type UserUpdateRequestPayload = {\n firstname: string\n lastname: string\n email: string\n telephone: string\n country: string\n persona: string\n}\n\nexport type UserDeleteRequestPayload = {\n verifEmail: string\n}\n\nexport type GoogleAuthRequestPayload = { code: string; redirectUri: string }\n\nexport type UserStatsResponse = { data: { userStats: AdminUser } }\n\nexport type UserCamera = {\n id: number\n exid: string\n ownerFullname: string\n ownerEmail: string\n apiId: string\n apiKey: string\n}\n\nexport type UserCameraResponse = { data: UserCamera[] }\n\nexport type UserProject = {\n id: number\n exid: string\n name: string\n startedAt: DateTime\n}\n\nexport type UserProjectResponse = { data: UserProject[] }\n\nexport type AdminUserUpdateRequestPayload = {\n companyId: string\n email: string\n persona: Persona\n country: string\n features: UserFeatureFlag[]\n}\n\nexport type AdminQueryParams = PaginationParams & {\n email: string\n fullname: string\n}\n\nexport type Admin = {\n id: number\n fullname: string\n email: string\n createdAt: DateTime\n updatedAt: DateTime\n lastSignInAt: DateTime\n signInCount: number\n lastSignInIp: string\n apiId: string\n apiKey: string\n}\n\nexport type ImpersonateUserResponse = {\n id: string\n firstname: string\n lastname: string\n telephone: string\n email: string\n is_admin: boolean\n persona: Persona\n country: string\n companyId: number\n companyExid: string\n companyName: string\n evercamAccount: boolean\n createdAt: DateTime\n updatedAt: DateTime\n confirmedAt: DateTime\n last_loginAt: DateTime\n features: UserFeatureFlag[]\n token: string\n}\n\nexport type AdminUserQueryParams = PaginationParams & {\n fullname: string\n email: string\n telephone: string\n persona: Persona\n companyName: string\n camerasCount: string\n projectsCount: string\n snapmailCount: string\n camerasOwned: string\n cameraShares: string\n createdAtDate: string\n lastLoginAtDate: string\n integrations: \"procore\" | \"aconex\" | \"autodesk\"\n features: UserFeatureFlag.ProjectSharing | UserFeatureFlag.VideoWalls\n}\n\nexport type SuppressionsQueryParams = PaginationParams & {\n id: number\n email: string\n source: string\n}\n\nexport type Suppression = {\n id: number\n email: string\n source: string\n insertedAt: DateTime\n updatedAt: DateTime\n}\n","import { Camera, Media } from \"@/types\"\n\nexport enum VideoWallItemType {\n LiveView = \"live\",\n Video = \"video\",\n Image = \"image\",\n}\n\nexport type VideoWallItem<T extends Camera | Media> = {\n value: T\n type: VideoWallItemType\n}\n\nexport type VideoWallPresetItemConfig = {\n camera: Camera\n h: number\n i: string | number\n moved: boolean\n w: number\n x: number\n y: number\n}\n\nexport type VideoWallPreset = {\n name?: string\n configuration: Array<VideoWallPresetItemConfig>\n}\n\nexport type VideoWallPresetItem = {\n i: string | number\n x: number\n y: number\n w: number\n h: number\n camera: Camera\n weather?: Record<string, unknown>\n media?: Media\n}\n","import { Date_YYYY_MM_DD, DateType } from \"@/types/time\"\n\nexport type HistoryWeatherRequestPayload = {\n day: string\n provider: WeatherProvider\n}\n\nexport type CurrentWeatherRequestPayload = {\n provider: WeatherProvider\n}\n\nexport type WeatherResponsePayload = Array<{\n hour?: number\n temp?: number\n clouds?: number\n feelsLike?: number\n pressure?: number\n humidity?: number\n windSpeed?: number\n windDegree?: number\n weather?: [WeatherSummary]\n rain?: HourlyReading\n snow?: HourlyReading\n}>\n\nexport type WeatherSummary = {\n id?: number\n main?: string\n description?: string\n icon?: string\n}\n\nexport type HourlyReading = {\n \"1h\"?: number\n \"3h\"?: number\n}\n\nexport enum WeatherProvider {\n WeatherStack = \"weather_stack\",\n XWeather = \"xweather\",\n}\n\nexport type Weatherstatus = {\n description: string\n hour: DateType\n id: number\n temp: number\n}\n\nexport type WeatherDataResponse = {\n minFeelsLike: number\n id: number\n sunhour: number\n maxFeelsLike: number\n minWindchill: number\n minPressure: number\n minWindDegree: number\n minDewpoint: number\n maxClouds: number\n maxWindgust: number\n minWindSpeed: number\n astro: {\n moonIllumination: number\n moonPhase: string\n moonrise: string\n moonset: string\n sunrise: string\n sunset: string\n }\n insertedAt: string\n maxDewpoint: number\n maxTemp: number\n minClouds: number\n weather: Weatherstatus[]\n minHeatindex: number\n minPrecip: number\n maxWindDegree: number\n maxUvIndex: number\n minHumidity: number\n maxWindSpeed: number\n minWindgust: number\n updatedAt: DateType\n maxPrecip: number\n uvIndex: number\n maxHeatindex: number\n minTemp: number\n date: Date_YYYY_MM_DD\n totalsnow: number\n maxPressure: number\n maxWindchill: number\n maxHumidity: number\n avgtemp: number\n projectId: number\n minUvIndex: number\n}\n","import { CameraExid, DateType, ProjectExid, PaginationParams } from \"@/types\"\n\nexport enum CommentsScope {\n Recordings = \"recordings\",\n ThreeSixty = \"360\",\n Drone = \"drone\",\n}\n\nexport enum CommentsLabel {\n Info = \"Info\",\n Danger = \"Danger\",\n Restricted = \"Restricted\",\n}\n\nexport type CommentsRequestPayload = {\n cameraExid: CameraExid\n fromDate: string\n toDate: string\n scope: CommentsScope\n page?: number\n limit?: number\n}\n\nexport type CommentsListRequestPayload = PaginationParams & {\n projectExid?: ProjectExid\n cameraExid?: CameraExid\n fromDate?: string\n toDate?: string\n scope?: CommentsScope\n creatorEmail?: string\n content?: string\n includeArchived?: boolean\n}\n\nexport type Comment = {\n fromDate?: string\n toDate?: string\n timestamp: string\n projectExid: ProjectExid\n updatedAt?: string\n id?: number\n cameraExid: CameraExid\n content: string\n createdAt?: string\n creatorEmail?: string\n creatorName?: string\n position2d?: [number, number]\n position3d?: [number, number, number]\n context?: Record<string, unknown>\n canDelete?: boolean\n archivedAt?: string\n}\n\nexport type CommentCreationRequestPayload = {\n fromDate?: DateType\n toDate?: DateType\n timestamp?: DateType\n scope?: CommentsScope\n projectExid: ProjectExid\n cameraExid?: CameraExid\n content: string\n position2d?: [number, number]\n position3d?: [number, number, number]\n context?: Record<string, unknown>\n}\n","import {\n type BoundingBox,\n type ProjectExid,\n type CameraExid,\n type DateType,\n DetectionLabel,\n SegmentLabel,\n type TimelineDateInterval,\n TimelinePrecision,\n} from \"@/types\"\n\nexport type BaseDetectionsFilters = {\n fromDate: string | Date\n toDate: string | Date\n labels: DetectionLabel | DetectionLabel[]\n trackId?: number\n}\n\nexport type DetectionsFilters = BaseDetectionsFilters & {\n projectExid: ProjectExid\n cameraExids?: CameraExid[]\n}\n\nexport type SegmentsFilters = BaseDetectionsFilters & {\n cameraExid: CameraExid\n}\n\nexport type BBox = number[]\n\nexport type SelectedObjectPath = {\n label: string\n trackId: string\n paths: Array<{\n timestamp: number\n center: [number, number]\n bbox: BBox\n }>\n}\n\nexport type Label = DetectionLabel | PpeLabel\n\nexport type Detection = {\n bbox: BBox\n timestamp: string | Date\n label: DetectionLabel\n confidenceScore: number\n}\n\nexport type DetectionsGroup = {\n timestamp: DateType\n detections: Detection[]\n}\n\nexport type DetectionsCounts = {\n timestamps: number\n} & {\n [label in Label]: number\n}\n\nexport type DetectionsCountsByPeriod = {\n days: Array<{ day: string } & DetectionsCounts>\n months: Array<{ month: string } & DetectionsCounts>\n years: Array<{ year: string } & DetectionsCounts>\n}\n\nexport type Tracking = {\n trackId: number\n fromDate: string | Date\n toDate: string | Date\n detections: Detection[]\n}\n\nexport type TrackingLabel = string\n\nexport type TrackingsByLabel = Record<TrackingLabel, Tracking[]>\n\nexport type SegmentsByLabel = Record<SegmentLabel, Segment[]>\n\nexport type SegmentPolygonCoords = number[][]\n\nexport type Segment = {\n id: number\n mask?: SegmentPolygonCoords\n label: string\n timestamp: string | Date\n cameraExid?: CameraExid\n bbox?: BoundingBox\n area?: number\n}\n\nexport type SegmentSimilarityResult = {\n distance: number\n segment: Segment\n}\n\nexport type SegmentsSimilaritySearchResult = {\n firstSeen: DateType | null\n lastSeen: DateType | null\n similarSegments: SegmentSimilarityResult[]\n}\n\nexport type SegmentsSimilaritySearchParams = {\n cameraExid: CameraExid\n referenceId: string\n iouThreshold?: number\n fromDate: string\n toDate: string\n}\n\nexport type BaseCountsParams = {\n fromDate: string | Date\n toDate: string | Date\n precision: keyof typeof TimelinePrecision\n trackId: number\n labels: DetectionLabel | DetectionLabel[]\n}\n\nexport type DetectionsCountsParams = BaseCountsParams & {\n projectExid: ProjectExid\n cameraExids?: CameraExid[]\n}\n\nexport type SegmentsCountsParams = BaseCountsParams & {\n cameraExid: CameraExid\n}\n\nexport type CountByPeriod = {\n date: string | Date\n counts: Record<string, number>\n}\n\nexport type DetectionsPresenceByLabel = Record<\n DetectionLabel,\n TimelineDateInterval[]\n>\n\nexport type SegmentsPresenceByLabel = Record<\n SegmentLabel,\n TimelineDateInterval[]\n>\n\nexport type LuminanceReading = {\n timestamp: string\n luminanceDelta: number\n luminanceAverage: number\n}\n\nexport enum PpeLabel {\n Helmet = \"helmet\",\n HighVisibilityVest = \"high-visibility-vest\",\n SafetyGlasses = \"safety-glasses\",\n Person = \"person\",\n Man = \"man\",\n Woman = \"woman\",\n}\n\nexport enum DetectionModel {\n Yolov10 = 1,\n Yolov11 = 2,\n Yolov112 = 3,\n GroundingDino = 4,\n Owlv2 = 5,\n}\n","import { DateType } from \"@/types\"\n\ntype sortby = string\ntype sortDirection = \"asc\" | \"desc\"\n\nexport type SortingUrlParam = `${sortby}|${sortDirection}`\n\nexport type BatteryReading = {\n id: number\n voltage: number\n datetime: DateType\n serialNo: string\n iValue: number\n vpvValue: number\n ppvValue: number\n csValue: number\n errValue: number\n h19Value: number\n h20Value: number\n h21Value: number\n h22Value: number\n h23Value: number\n ilValue: number\n mpptValue: number\n loadValue: number\n pValue: number\n consumedAmphours: number\n socValue: number\n timeToGo: number\n alarm: string\n relay: string\n arValue: number\n bmvValue: number\n h1Value: number\n h2Value: number\n h3Value: number\n h4Value: number\n h5Value: number\n h6Value: number\n h7Value: number\n h8Value: number\n h9Value: number\n h10Value: number\n h11Value: number\n}\n\nexport interface PaginatedItems<T> {\n from: number\n items: Array<T>\n limit: number\n page: number\n to: number\n total: number\n}\n\nexport enum UnitSystem {\n Imperial = \"imperial\",\n Metric = \"metric\",\n}\n\nexport type Timestamp = string | number\n\nexport type Schedule = {\n Friday: string[]\n Monday: string[]\n Saturday: string[]\n Sunday: string[]\n Thursday: string[]\n Tuesday: string[]\n Wednesday: string[]\n}\n\nexport type ScheduleLowercase = {\n friday: string[]\n monday: string[]\n saturday: string[]\n sunday: string[]\n thursday: string[]\n tuesday: string[]\n wednesday: string[]\n}\n\nexport type PaginationParams = {\n sort?: SortingUrlParam\n page?: number\n limit?: number\n}\n\nexport type LabsPaginationParams = {\n sortBy?: string\n sortDirection?: \"asc\" | \"desc\"\n page?: number\n limit?: number\n}\n\nexport enum MobileDevice {\n Ios = \"ios\",\n Android = \"android\",\n}\n\nexport enum _3dViewer {\n Itwin = \"itwin\",\n Cesium = \"cesium\",\n}\n\nexport enum InfoPage {\n ThreeSixtyView = \"360\",\n BIMView = \"bim\",\n BimCompare = \"bim-compare\",\n GateReport = \"gate-report\",\n DroneView = \"drone-view\",\n Compare = \"compare\",\n Timeline = \"timeline\",\n WeatherReport = \"weather-report\",\n}\n\nexport enum DownloadFileType {\n Jpeg = \"jpeg\",\n Pdf = \"pdf\",\n Csv = \"csv\",\n}\n\nexport enum FeedbackContext {\n CopilotMessage = \"copilot_message\",\n}\n\nexport type FeedbackPayload<T> = {\n id?: number\n user: string\n text: string\n type: T\n context: FeedbackContext\n messageId?: number\n conversationId?: number\n}\n\nexport type Stringified<T> = string & {\n [P in keyof T]: { \"_ value\": T[P] }\n}\n\nexport interface JSON {\n stringify<T>(\n value: T,\n replacer?: (key: string, value: unknown) => unknown,\n space?: string | number\n ): string & Stringified<T>\n\n parse<T>(\n text: Stringified<T>,\n reviver?: (key: unknown, value: unknown) => unknown\n ): T\n}\n\nexport type Exid = string\n\nexport type EntityByExid<Entity extends unknown> = Record<Exid, Entity>\n\nexport type BatteryVoltage = {\n date: DateType\n max_value: number\n min_value: number\n}\n\nexport type GlobalSearchQueryParams = PaginationParams & {\n resource: \"projects\" | \"users\" | \"cameras\" | \"companies\" | \"sims\" | \"routers\"\n term: string\n email: string\n featureFlag: string\n}\n\nexport type TimelineDateInterval = {\n fromDate: string\n toDate: string\n}\n\nexport enum TimelinePrecision {\n Year = \"year\",\n Month = \"month\",\n Week = \"week\",\n Day = \"day\",\n Hour = \"hour\",\n Minute = \"minute\",\n Events = \"events\",\n}\n\nexport type EntityStatsQueryParams = {\n period: \"day\" | \"week\" | \"month\"\n startDate: string\n endDate: string\n}\n\nexport type EntityStat = {\n period: string\n name: string\n count: number\n}\n\nexport enum TaskStatus {\n Idle = \"idle\",\n Loading = \"loading\",\n Success = \"success\",\n Error = \"error\",\n}\n\nexport type PatchPayload<T> = Partial<T> & { [K in keyof T]?: T[K] | undefined }\n\nexport enum PtzDirection {\n Up = \"up\",\n Down = \"down\",\n Left = \"left\",\n Right = \"right\",\n}\n\nexport type MoveParams = {\n cameraExid: string\n direction: PtzDirection\n useContinuous: boolean\n}\n\nexport enum ZoomDirection {\n In = \"in\",\n Out = \"out\",\n}\n\nexport type ZoomParams = {\n cameraExid: string\n direction: ZoomDirection\n isRecordingFromNvr: boolean\n}\n","import {\n CameraExid,\n CountryCode,\n CountryId,\n DateTime,\n DateType,\n Nvr,\n PaginationParams,\n PowerType,\n Project,\n Router,\n Schedule,\n Tag,\n} from \"@/types\"\n\nexport type Kit = {\n alarms: KitAlarm[]\n countryCode: CountryCode\n countryId: CountryId\n countryName: string\n countryRegion: KitRegion\n id?: number\n jobId: number\n name: string\n nvr: Nvr\n powerType: PowerType\n project: Project\n projectId: number\n router: Partial<Router>\n serial: string\n status: KitStatus\n powerSchedule: Schedule\n tags: Tag[]\n storages: KitStorage[]\n}\n\nexport enum KitStatus {\n New = \"new\",\n Active = \"active\",\n Deployed = \"deployed\",\n Decommissioned = \"decommissioned\",\n}\n\nexport enum KitRegion {\n APAC = \"apac\",\n EMEA = \"emea\",\n LATAM = \"latam\",\n US = \"na\",\n}\n\nexport enum KitAlarm {\n NvrOffline = \"nvr_offline\",\n UnknownCamera = \"unknown_camera\",\n NotRecordingCamera = \"not_recording_camera\",\n OfflineScheduled = \"offline_scheduled\",\n FullSD = \"full_sd\",\n FullStorage = \"full_storage\",\n HddUnmounted = \"hdd_unmounted\",\n NoHdd = \"no_hdd\",\n MissingRouterInfo = \"missing_router_info\",\n PowerLost = \"ac_failure\",\n UpsLowBattery = \"low_battery\",\n}\n\nexport enum KitMetricId {\n SolarCharger = \"solar_charger\",\n PanelPower = \"panel_power\",\n}\n\nexport enum KitMetricPeriod {\n Last15Minutes = \"now-15m\",\n Last1Hour = \"now-1h\",\n Last24Hours = \"now-24h\",\n Last7Days = \"now-7d\",\n Last30Days = \"now-30d\",\n Last90Days = \"now-90d\",\n}\n\nexport enum GrafanaMetricId {\n SbcCpuLoad = \"SbcCpuLoad\",\n SbcSystemLoad5MnAvg = \"SbcSystemLoad5MnAvg\",\n SbcSystemLoad15MnAvg = \"SbcSystemLoad15MnAvg\",\n SbcRamUsed = \"SbcRamUsed\",\n SbcSwapUsed = \"SbcSwapUsed\",\n SbcRootFsUsed = \"SbcRootFsUsed\",\n SbcCpuCoresTotal = \"SbcCpuCoresTotal\",\n SbcRamTotal = \"SbcRamTotal\",\n SbcSwapTotal = \"SbcSwapTotal\",\n SbcRootFsTotal = \"SbcRootFsTotal\",\n SbcUptime = \"SbcUptime\",\n SbcCpuStats = \"SbcCpuStats\",\n SbcRamStats = \"SbcRamStats\",\n SbcNetworkStats = \"SbcNetworkStats\",\n SbcTimeSyncStats = \"SbcTimeSyncStats\",\n SbcTemperatureStats = \"SbcTemperatureStats\",\n SbcTimeSyncDriftStats = \"SbcTimeSyncDriftStats\",\n CameraInfo = \"CameraInfo\",\n CameraRecordingStateTimeline = \"CameraRecordingStateTimeline\",\n CameraStreamInfo = \"CameraStreamInfo\",\n LocalStorage = \"LocalStorage\",\n StorageSpaceUsed = \"StorageSpaceUsed\",\n RouterTemperature = \"RouterTemperature\",\n RouterCpuLoad = \"RouterCpuLoad\",\n RouterRamUsed = \"RouterRamUsed\",\n RouterSystemLoad5MnAvg = \"RouterSystemLoad5MnAvg\",\n RouterSwapTotal = \"RouterSwapTotal\",\n RouterRamTotal = \"RouterRamTotal\",\n RouterUptime = \"RouterUptime\",\n RouterCpuCoresTotal = \"RouterCpuCoresTotal\",\n RouterSignalReliability = \"RouterSignalReliability\",\n RouterSINR = \"RouterSINR\",\n RouterRSRP = \"RouterRSRP\",\n RouterRSRQ = \"RouterRSRQ\",\n RouterRSSI = \"RouterRSSI\",\n RouterSignalStrengthStats = \"RouterSignalStrengthStats\",\n RouterSignalQualityStats = \"RouterSignalQualityStats\",\n RouterDataConsumptionStats = \"RouterDataConsumptionStats\",\n BatteryVoltageAndCurrentStats = \"BatteryVoltageAndCurrentStats\",\n PanelVoltageAndPowerStats = \"PanelVoltageAndPowerStats\",\n ExNvrStatus = \"ExNvrStatus\",\n ExNvrVersion = \"ExNvrVersion\",\n ExNvrMemoryUsage = \"ExNvrMemoryUsage\",\n ExNvrLogs = \"ExNvrLogs\",\n}\n\nexport enum KitChartType {\n Stat = \"stat\",\n Gauge = \"gauge\",\n Graph = \"graph\",\n Table = \"table\",\n StateTimeline = \"state-timeline\",\n Logs = \"logs\",\n TimeSeries = \"timeseries\",\n BarChart = \"barchart\",\n}\n\nexport type GrafanaDataSource = {\n type: string\n uid: string\n}\n\nexport type GrafanaTarget = {\n expr: string\n refId: string\n datasourceId?: string\n intervalMs?: number\n maxDataPoints?: number\n}\n\nexport type GrafanaPanel = {\n [key: string]: unknown\n id: GrafanaMetricId\n name: keyof GrafanaMetricId\n title: string\n description: string\n type: KitChartType\n datasource: GrafanaDataSource\n targets: GrafanaTarget[]\n maxDataPoints?: number\n interval?: string\n timeFrom?: string\n timeShift?: string\n options?: {\n maxDataPoints?: number\n interval?: string\n }\n}\n\nexport type GrafanaDashboard = {\n [key: string]: unknown\n panels: GrafanaPanel[]\n time?: {\n from: string\n to: string\n }\n timepicker?: {\n refresh_intervals: string[]\n time_options: string[]\n }\n}\n\nexport type GrafanaQueryOptions = {\n metricId: GrafanaMetricId\n host: string\n job?: string\n from?: string\n to?: string\n variables?: Record<string, string>\n}\n\nexport type GrafanaTimeSeriesValue = number | string | null\nexport type GrafanaTimeSeriesValues = GrafanaTimeSeriesValue[][]\n\nexport type GrafanaFieldConfig = {\n displayNameFromDS?: string\n links?: string[]\n color?: string\n custom?: {\n lineInterpolation?: string\n fillOpacity?: number\n gradientMode?: string\n lineWidth?: number\n spanNulls?: boolean\n resultType?: string\n }\n thresholds?: {\n mode: string\n steps: Array<{\n color: string\n value: number | null\n }>\n }\n unit?: string\n decimals?: number\n interval?: number\n}\n\nexport type GrafanaField = {\n name: string\n type: string\n typeInfo: {\n frame: string\n nullable?: boolean\n }\n config: GrafanaFieldConfig\n labels?: {\n [key: string]: string\n }\n values?: GrafanaTimeSeriesValues\n}\n\nexport type GrafanaSchemaMeta = {\n type?: string\n typeVersion?: number[]\n custom?: {\n resultType?: string\n frameType?: string\n }\n stats?: Array<{\n displayName: string\n value: number\n unit?: string\n }>\n executedQueryString?: string\n}\n\nexport type GrafanaSchema = {\n name?: string\n refId: string\n meta: GrafanaSchemaMeta\n fields: GrafanaField[]\n}\n\nexport type GrafanaFrame = {\n schema: GrafanaSchema\n data: {\n values: GrafanaTimeSeriesValues\n nanos?: Array<number[] | null>\n }\n}\n\nexport type KitMetricData = {\n type: KitChartType\n chartProps?: Record<string, unknown>\n}\n\nexport type GrafanaQueryResult = {\n status: number\n frames: GrafanaFrame[]\n}\n\nexport type GrafanaMetricData = KitMetricData & {\n results: {\n [key: string]: GrafanaQueryResult\n }\n}\n\nexport type EvercamMetricData = KitMetricData & {\n stats: EvercamStats[]\n}\n\nexport type GrafanaKitMetrics = Record<\n keyof typeof GrafanaMetricId,\n GrafanaMetricData\n>\n\nexport type EvercamStats = {\n [k: string]: number | string\n timestamp: string\n}\n\nexport type KitQueryParams = PaginationParams & {\n name: string\n serial: string\n status: KitStatus\n tagId: number | number[]\n}\n\nexport type AdminKit = {\n id: number\n name: string\n serial: string\n status: string\n powerType: PowerType\n location: string\n countryId: number\n countryName: string\n countryRegion: string\n nvr: Nvr\n router: {\n id: number\n serialNumber: number\n vpnUserId: string\n vpnPassword: string\n routerType: string\n routerUserId: string\n routerPassword: string\n routerHttpPort: number\n powerType: PowerType\n powerSchedule: Schedule\n vpnServer: string\n netbirdUrl: string\n sims: {\n id: number\n number: string\n }[]\n }\n project: {\n id: number\n exid: string\n name: string\n timezone: string\n status: string\n zohoId: string\n insertedAt: DateType\n }\n}\n\nexport type KitCreatePayload = {\n projectId?: number\n countryCode?: string\n name: string\n status: KitStatus\n powerType: PowerType\n config: {\n region: KitRegion\n }\n}\n\nexport type KitUpdatePayload = {\n countryId: number\n name: string\n kitSerial: string\n kitStatus: KitStatus\n type: string\n}\n\nexport enum KitStorageTransport {\n Sata = \"sata\",\n Nvme = \"nvme\",\n Usb = \"usb\",\n}\n\nexport type KitStorageRequestPayload = {\n kitId: number\n}\n\nexport type KitStorage = {\n id: number\n serial: string\n status: string\n type: string\n metadata: {\n formFactor: string\n }\n model: string\n insertedAt: DateTime\n updatedAt: DateTime\n vendor: string\n kitId: number\n capacity: number\n freeSpace: number\n tran: KitStorageTransport\n}\n\nexport type KitFootageRequestPayload = {\n cameraId: CameraExid\n storageId: number\n}\n\nexport type KitFootageResponsePayload = {\n id: number\n startDate: string\n endDate: string\n cameraId: number\n storageId: number\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { CameraStatus, DateType, PaginationParams } from \"@/types\"\n\nexport enum AuditLogActionType {\n VH_STATUS = \"vh_status\",\n CR_UPDATED = \"cr_updated\",\n CR_CREATED = \"cr_created\",\n ONLINE = \"online\",\n OFFLINE = \"offline\",\n ON_HOLD = \"on_hold\",\n WAITING = \"waiting\",\n DECOMMISSIONED = \"decommissioned\",\n UNDER_MAINTENANCE = \"under_maintenance\",\n WAITING_FOR_SITE_VISIT = \"waiting_for_site_visit\",\n SMS = \"sms\",\n CUSTOM = \"custom\",\n PUBLIC_NOTE = \"public_note\",\n SIM = \"sim\",\n LOGIN = \"login\",\n LOGOUT = \"logout\",\n CREATE = \"create\",\n UPDATE = \"update\",\n DELETE = \"delete\",\n DEVICE_SETTINGS = \"device_settings\",\n LINK_SIM_WITH_ROUTER = \"link_sim_with_router\",\n UNLINK_SIM_FROM_ROUTER = \"unlink_sim_from_router\",\n LINK_CAMERA_WITH_ROUTER = \"link_camera_with_router\",\n UNLINK_CAMERA_FROM_ROUTER = \"unlink_camera_from_router\",\n SHARE = \"share\",\n UPDATE_SHARE = \"update_share\",\n DELETE_SHARE = \"delete_share\",\n SHARE_REQUEST = \"share_request\",\n DELETE_SHARE_REQUEST = \"delete_share_request\",\n TRANSFER_OWNERSHIP = \"transfer_ownership\",\n BIM_NOTE = \"bim_note\",\n GATE_REPORT_NOTE = \"gate_report_note\",\n}\n\nexport type AuditLog = {\n id: number\n action: AuditLogActionType\n details: Record<string, any>\n insertedAt: DateType\n entity: string\n user_details: {\n browser: string\n country: string\n countryCode: string\n device: string | null\n ip: string\n os: string | null\n }\n who: string\n}\n\nexport type AuditLogsParams = PaginationParams & {\n routerId: number\n cameraId: number\n entity: string\n byRouter: boolean\n byCamera: boolean\n byProject: boolean\n action: string\n}\n\nexport type CameraLogsQueryParams = {\n historyDays: number\n accountId?: string\n status: CameraStatus[]\n}\n\nexport type CameraLogItem = {\n start: DateType\n state: CameraStatus\n end: DateType\n}\n\nexport type CameraLog = {\n data: CameraLogItem[]\n measure: string\n}\n\nexport type CameraAuditLog = {\n id: number\n action: AuditLogActionType\n details: {\n error_body?: string\n exid: string\n id: number\n name: string\n reason?: string\n }\n insertedAt: DateType\n entity: string\n user_details: {\n ip: string\n country: string\n countryCode: string\n agent: string\n }\n who: string\n}\n\nexport type CameraAuditLogsQueryParams = PaginationParams & {\n from: string\n to: string\n action: AuditLogActionType[]\n}\n","import { CameraExid, DateType, PaginationParams, Schedule } from \"@/types\"\n\nexport type SnapshotExtractionQyeryParams = PaginationParams & {\n camera: string // search by camera name\n cameraExid: CameraExid\n status: SnapshotExtractionStatus\n}\n\nexport enum SnapshotExtractionStatus {\n Completed = \"completed\",\n Failed = \"failed\",\n Processing = \"processing\",\n}\n\nexport enum SnapshotExtractionType {\n Cloud = \"cloud\",\n Local = \"local\",\n Timelapse = \"timelapse\",\n}\n\nexport type SnapshotExtraction = {\n id: number\n cameraId: number\n cameraExid: CameraExid\n cameraName: string\n fromDate: DateType\n toDate: DateType\n type: SnapshotExtractionType\n notes: string\n status: SnapshotExtractionStatus\n interval: number\n requestor: string\n jpegsToDropbox: boolean\n injectTo_cr: Boolean\n schedule: Schedule\n created_at: DateType\n}\n\nexport type SnapshotTestPayload = {\n cameraExid?: CameraExid\n camUsername: string\n camPassword: string\n externalUrl: string\n jpgUrl: string\n}\n\nexport type SnapshotTestResponse = {\n status: string\n data: string\n}\n\nexport type DeleteSnapshotQueryParams = {\n fromDate: DateType\n toDate: DateType\n adminEmail: string\n adminFullname: string\n}\n","import type {\n BBox,\n BoundingBox,\n DateType,\n Schedule,\n CameraExid,\n DateTime,\n DetectionModel,\n PaginationParams,\n PpeLabel,\n ProjectExid,\n} from \"@evercam/api/types\"\nimport { DetectionLabel, DownloadFileType } from \"@evercam/api/types\"\n\nexport enum SiteAnalyticsMode {\n Detections = \"detections\",\n Segments = \"segments\",\n}\n\nexport type SmartSearchOptionData = {\n id?: string\n type: SmartSearchQueryComponentType\n value:\n | DetectionLabel\n | SmartSearchOperatorType\n | SmartSearchConditionData\n | SmartSearchCondition\n | SmartSearchDateRange\n | string\n}\n\nexport type SmartSearchQueryPart =\n | SmartSearchOptionData\n | [SmartSearchQueryPart]\n | SmartSearchQueryPart[]\n\nexport enum SmartSearchQueryComponentType {\n Condition = \"condition\",\n Object = \"object\",\n Area = \"in_area\",\n Time = \"time\",\n Operator = \"operator\",\n Camera = \"camera\",\n DateRange = \"date_range\",\n}\n\nexport type SmartSearchDateRange = {\n start: DateType\n end: DateType\n}\n\nexport type SmartSearchQueryComponentData = {\n id: string\n type: SmartSearchQueryComponentType\n parts: [SmartSearchQueryPart]\n}\n\nexport enum SmartSearchCondition {\n InArea = \"in_area\",\n Intersects = \"intersects\",\n Time = \"time\",\n}\n\nexport type SmartSearchConditionData = {\n condition: SmartSearchCondition\n value: string | BoundingBox | DetectionLabel | Date\n}\n\nexport type SmartSearchQueryCondition = {\n type: SmartSearchQueryConditionTypes\n target: SmartSearchQueryTargets\n operator?: SmartSearchQueryOperators\n attribute?: string\n value: string | number | string[]\n reference?: {\n target: SmartSearchQueryTargets\n attribute: string\n value: string | number | string[]\n }\n polygon?: BBox\n}\n\nexport type SmartSearchQuery = {\n returnTargets: SmartSearchQueryTargets[]\n rulesLogic: SmartSearchOperatorType\n rules: {\n logic: SmartSearchOperatorType\n conditions: SmartSearchQueryCondition[]\n }[]\n returnType: SmartSearchQueryReturnType\n}\n\nexport enum SmartSearchQueryTargets {\n Tracking = \"tracking\",\n Segments = \"segments\",\n}\n\nexport enum SmartSearchQueryReturnType {\n All = \"all\",\n FirstLastSeen = \"first_last_seen\",\n}\n\nexport enum SmartSearchOperatorType {\n And = \"AND\",\n Or = \"OR\",\n}\n\nexport enum SmartSearchQueryOperators {\n Near = \"near\",\n Far = \"far\",\n Intersects = \"intersects\",\n DoesNotIntersect = \"does_not_intersect\",\n Inside = \"inside\",\n Outside = \"outside\",\n DistanceBelow = \"distance_below\",\n DistanceAbove = \"distance_above\",\n Area = \"in_area\",\n Equal = \"=\",\n}\n\nexport enum SmartSearchQueryConditionTypes {\n Selection = \"selection\",\n Spatial = \"spatial\",\n Area = \"area\",\n Iou = \"iou\",\n Near = \"near\",\n Far = \"far\",\n}\n\nexport type SmartSearchOptionValue =\n | DetectionLabel\n | SmartSearchOperatorType\n | SmartSearchConditionData\n\nexport type SmartSearchQueryParams = {\n cameraExid: string\n name: string\n description: string\n query: {\n req: SmartSearchQuery\n timeSchedule?: Schedule | undefined\n }\n fromDate?: DateType\n toDate?: DateType\n author: string\n createdAt: DateType\n params?: Record<string, unknown>\n}\n\nexport type SavedQuery = {\n description: string\n id: number\n query: {\n req: SmartSearchQuery\n timeSchedule?: Schedule | undefined\n }\n params: Record<string, string>\n components?: Omit<SmartSearchOptionData, \"id\">[]\n toDate?: DateType\n createdAt?: DateType\n cameraExid: string\n name: string\n fromDate?: DateType\n author?: string\n}\n\nexport type DetectionsRequestParams = {\n projectExid: ProjectExid\n cameraExids: CameraExid[]\n fromDate?: DateTime\n toDate?: DateTime\n labels?: Array<DetectionLabel | PpeLabel>\n modelId?: DetectionModel\n trackId?: number\n thresholds?: string[]\n excludeLabels?: Array<DetectionLabel | PpeLabel>\n mergedClasses?: Array<string>\n confidenceThreshold?: number\n} & PaginationParams\n\nexport type DetectionsExportRequestParams = DetectionsRequestParams & {\n fileType: DownloadFileType\n columns?: string[]\n directDownload?: boolean\n}\n","import type { DateTime } from \"@evercam/api/types/time\"\nimport { PaginationParams } from \"@/types\"\nimport { VideoWallPresetItemConfig } from \"@evercam/api/types/videoWall\"\n\nexport enum DelayUnit {\n Minute = \"Minutes\",\n Hour = \"Hours\",\n Day = \"Days\",\n}\n\nexport enum CommonWidgetSettingsKeys {\n Width = \"width\",\n WidthResolution = \"resolution\",\n Height = \"height\",\n HeightResolution = \"heightResolution\",\n}\n\nexport enum RecordingsWidgetSettingsKeys {\n DarkMode = \"darkMode\",\n Calendar = \"calendar\",\n HasDelay = \"hasDelay\",\n Delay = \"delay\",\n DelayUnit = \"delayUnit\",\n HasRange = \"hasRange\",\n DateRange = \"dateRange\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum LiveViewWidgetSettingsKeys {\n Fullscreen = \"fullscreen\",\n Download = \"download\",\n Zoom = \"zoom\",\n Playpause = \"playpause\",\n Refresh = \"refresh\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum BimCompareWidgetSettingsKeys {\n Timeline = \"timeline\",\n Calendar = \"calendar\",\n DarkMode = \"darkMode\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum VideoWallWidgetSettingsKeys {\n Preset = \"preset\",\n RefreshRate = \"refreshRate\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport type CommonWidgetSettings = {\n width: number\n resolution: string\n height: number\n heightResolution: string\n}\n\nexport type RecordingsWidgetSettings = CommonWidgetSettings & {\n darkMode: boolean\n calendar: boolean\n hasDelay: boolean\n delay: number\n delayUnit: DelayUnit\n}\n\nexport type LiveViewWidgetSettings = CommonWidgetSettings & {\n fullscreen: boolean\n download: boolean\n zoom: boolean\n playpause: boolean\n refresh: number\n}\n\nexport type BimCompareWidgetSettings = CommonWidgetSettings & {\n timeline: boolean\n darkMode: boolean\n}\n\nexport type VideoWallWidgetSettings = CommonWidgetSettings & {\n preset: VideoWallPresetItemConfig\n refreshRate: number\n}\n\nexport type WidgetSettings =\n | RecordingsWidgetSettings\n | LiveViewWidgetSettings\n | BimCompareWidgetSettings\n | VideoWallWidgetSettings\n\nexport enum WidgetType {\n LiveWidget = \"Live View\",\n Recording = \"Recordings\",\n BimCompare = \"BIM Compare\",\n VideoWall = \"Video Wall\",\n}\n\nexport const WidgetTypesByResource = {\n camera: [WidgetType.LiveWidget, WidgetType.Recording, WidgetType.BimCompare],\n project: [WidgetType.VideoWall],\n}\n\nexport type WidgetsListRequestPayload = PaginationParams & {\n userId: number\n projectId: number\n cameraId: number\n active: boolean\n settings: WidgetSettings\n widgetType: WidgetType\n isPublic: boolean\n allowedOrigin: string\n}\n\nexport type Widget = {\n id: number\n ressources: {\n camera?: {\n id: number\n exid: string\n name: string\n }\n project?: {\n id: number\n exid: string\n name: string\n }\n }\n widgetType: WidgetType\n settings: WidgetSettings\n allowedOrigin: string\n isPublic: boolean\n active: boolean\n user: {\n id: number\n email: string\n firstname: string\n lastname: string\n }\n insertedAt: DateTime\n updatedAt: DateTime\n}\n\nexport type WidgetFull = {\n id: number\n ressources: {\n camera?: {\n id: number\n exid: string\n name: string\n }\n project?: {\n id: number\n exid: string\n name: string\n }\n }\n widgetType: WidgetType\n widgetKey: string\n widgetId: string\n active: boolean\n user: {\n id: number\n email: string\n }\n settings: WidgetSettings\n sessionSettings: any\n allowedOrigin: string\n isPublic: boolean\n insertedAt: DateTime\n updatedAt: DateTime\n}\n\nexport type WidgetPayload = {\n ressources: {\n cameraId?: number\n projectId?: number\n }\n widgetType: WidgetType\n active: boolean\n settings: WidgetSettings\n isPublic: boolean\n allowedOrigin: string\n}\n","export enum CountryId {\n Andorra = 1,\n UnitedArabEmirates = 2,\n Afghanistan = 3,\n AntiguaAndBarbuda = 4,\n Anguilla = 5,\n Albania = 6,\n Armenia = 7,\n NetherlandsAntilles = 8,\n Angola = 9,\n Antarctica = 10,\n Argentina = 11,\n AmericanSamoa = 12,\n Austria = 13,\n Australia = 14,\n Aruba = 15,\n AlandIslands = 16,\n Azerbaijan = 17,\n BosniaAndHerzegovina = 18,\n Barbados = 19,\n Bangladesh = 20,\n Belgium = 21,\n BurkinaFaso = 22,\n Bulgaria = 23,\n Bahrain = 24,\n Burundi = 25,\n Benin = 26,\n Bermuda = 27,\n BruneiDarussalam = 28,\n Bolivia = 29,\n Brazil = 30,\n Bahamas = 31,\n Bhutan = 32,\n BouvetIsland = 33,\n Botswana = 34,\n Belarus = 35,\n Belize = 36,\n Canada = 37,\n CocosKeelingIslands = 38,\n CongoKinshasa = 39,\n CentralAfricanRepublic = 40,\n CongoBrazzaville = 41,\n Switzerland = 42,\n CoteDIvoire = 43,\n CookIslands = 44,\n Chile = 45,\n Cameroon = 46,\n China = 47,\n Colombia = 48,\n CostaRica = 49,\n Cuba = 50,\n CapeVerde = 51,\n ChristmasIsland = 52,\n Cyprus = 53,\n CzechRepublic = 54,\n Germany = 55,\n Djibouti = 56,\n Denmark = 57,\n Dominica = 58,\n DominicanRepublic = 59,\n Algeria = 60,\n Ecuador = 61,\n Estonia = 62,\n Egypt = 63,\n WesternSahara = 64,\n Eritrea = 65,\n Spain = 66,\n Ethiopia = 67,\n Finland = 68,\n Fiji = 69,\n FalklandIslands = 70,\n Micronesia = 71,\n FaroeIslands = 72,\n France = 73,\n Gabon = 74,\n UnitedKingdom = 75,\n Grenada = 76,\n Georgia = 77,\n FrenchGuiana = 78,\n Guernsey = 79,\n Ghana = 80,\n Gibraltar = 81,\n Greenland = 82,\n Gambia = 83,\n Guinea = 84,\n Guadeloupe = 85,\n EquatorialGuinea = 86,\n Greece = 87,\n SouthGeorgiaAndTheSouthSandwichIslands = 88,\n Guatemala = 89,\n Guam = 90,\n GuineaBissau = 91,\n Guyana = 92,\n HongKong = 93,\n HeardIslandAndMcDonaldIslands = 94,\n Honduras = 95,\n Croatia = 96,\n Haiti = 97,\n Hungary = 98,\n Indonesia = 99,\n Ireland = 100,\n Israel = 101,\n IsleOfMan = 102,\n India = 103,\n BritishIndianOceanTerritory = 104,\n Iraq = 105,\n Iran = 106,\n Iceland = 107,\n Italy = 108,\n Jersey = 109,\n Jamaica = 110,\n Jordan = 111,\n Japan = 112,\n Kenya = 113,\n Kyrgyzstan = 114,\n Cambodia = 115,\n Kiribati = 116,\n Comoros = 117,\n SaintKittsAndNevis = 118,\n NorthKorea = 119,\n SouthKorea = 120,\n Kuwait = 121,\n CaymanIslands = 122,\n Kazakhstan = 123,\n Laos = 124,\n Lebanon = 125,\n SaintLucia = 126,\n Liechtenstein = 127,\n SriLanka = 128,\n Liberia = 129,\n Lesotho = 130,\n Lithuania = 131,\n Luxembourg = 132,\n Latvia = 133,\n LibyanArabJamahiriya = 134,\n Morocco = 135,\n Monaco = 136,\n Moldova = 137,\n Montenegro = 138,\n Madagascar = 139,\n MarshallIslands = 140,\n Macedonia = 141,\n Mali = 142,\n Myanmar = 143,\n Mongolia = 144,\n Macao = 145,\n NorthernMarianaIslands = 146,\n Martinique = 147,\n Mauritania = 148,\n Montserrat = 149,\n Malta = 150,\n Mauritius = 151,\n Maldives = 152,\n Malawi = 153,\n Mexico = 154,\n Malaysia = 155,\n Mozambique = 156,\n Namibia = 157,\n NewCaledonia = 158,\n Niger = 159,\n NorfolkIsland = 160,\n Nigeria = 161,\n Nicaragua = 162,\n Netherlands = 163,\n Norway = 164,\n Nepal = 165,\n Nauru = 166,\n Niue = 167,\n NewZealand = 168,\n Oman = 169,\n Panama = 170,\n Peru = 171,\n FrenchPolynesia = 172,\n PapuaNewGuinea = 173,\n Philippines = 174,\n Pakistan = 175,\n Poland = 176,\n SaintPierreAndMiquelon = 177,\n Pitcairn = 178,\n PuertoRico = 179,\n PalestinianTerritory = 180,\n Portugal = 181,\n Palau = 182,\n Paraguay = 183,\n Qatar = 184,\n Reunion = 185,\n Romania = 186,\n Serbia = 187,\n RussianFederation = 188,\n Rwanda = 189,\n SaudiArabia = 190,\n SolomonIslands = 191,\n Seychelles = 192,\n Sudan = 193,\n Sweden = 194,\n Singapore = 195,\n SaintHelena = 196,\n Slovenia = 197,\n SvalbardAndJanMayen = 198,\n Slovakia = 199,\n SierraLeone = 200,\n SanMarino = 201,\n Senegal = 202,\n Somalia = 203,\n Suriname = 204,\n SaoTomeAndPrincipe = 205,\n ElSalvador = 206,\n SyrianArabRepublic = 207,\n Swaziland = 208,\n TurksAndCaicosIslands = 209,\n Chad = 210,\n FrenchSouthernTerritories = 211,\n Togo = 212,\n Thailand = 213,\n Tajikistan = 214,\n Tokelau = 215,\n TimorLeste = 216,\n Turkmenistan = 217,\n Tunisia = 218,\n Tonga = 219,\n Turkey = 220,\n TrinidadAndTobago = 221,\n Tuvalu = 222,\n Taiwan = 223,\n Tanzania = 224,\n Ukraine = 225,\n Uganda = 226,\n UnitedStatesMinorOutlyingIslands = 227,\n UnitedStates = 228,\n Uruguay = 229,\n Uzbekistan = 230,\n VaticanCityState = 231,\n SaintVincentAndTheGrenadines = 232,\n Venezuela = 233,\n VirginIslandsBritish = 234,\n VirginIslandsUS = 235,\n VietNam = 236,\n Vanuatu = 237,\n WallisAndFutuna = 238,\n Samoa = 239,\n Yemen = 240,\n Mayotte = 241,\n SouthAfrica = 242,\n Zambia = 243,\n Zimbabwe = 244,\n}\n\nexport enum CountryCode {\n Andorra = \"ad\",\n UnitedArabEmirates = \"ae\",\n Afghanistan = \"af\",\n AntiguaAndBarbuda = \"ag\",\n Anguilla = \"ai\",\n Albania = \"al\",\n Armenia = \"am\",\n NetherlandsAntilles = \"an\",\n Angola = \"ao\",\n Antarctica = \"aq\",\n Argentina = \"ar\",\n AmericanSamoa = \"as\",\n Austria = \"at\",\n Australia = \"au\",\n Aruba = \"aw\",\n AlandIslands = \"ax\",\n Azerbaijan = \"az\",\n BosniaAndHerzegovina = \"ba\",\n Barbados = \"bb\",\n Bangladesh = \"bd\",\n Belgium = \"be\",\n BurkinaFaso = \"bf\",\n Bulgaria = \"bg\",\n Bahrain = \"bh\",\n Burundi = \"bi\",\n Benin = \"bj\",\n Bermuda = \"bm\",\n BruneiDarussalam = \"bn\",\n Bolivia = \"bo\",\n Brazil = \"br\",\n Bahamas = \"bs\",\n Bhutan = \"bt\",\n BouvetIsland = \"bv\",\n Botswana = \"bw\",\n Belarus = \"by\",\n Belize = \"bz\",\n Canada = \"ca\",\n CocosKeelingIslands = \"cc\",\n CongoKinshasa = \"cd\",\n CentralAfricanRepublic = \"cf\",\n CongoBrazzaville = \"cg\",\n Switzerland = \"ch\",\n CoteDIvoire = \"ci\",\n CookIslands = \"ck\",\n Chile = \"cl\",\n Cameroon = \"cm\",\n China = \"cn\",\n Colombia = \"co\",\n CostaRica = \"cr\",\n Cuba = \"cu\",\n CapeVerde = \"cv\",\n ChristmasIsland = \"cx\",\n Cyprus = \"cy\",\n CzechRepublic = \"cz\",\n Germany = \"de\",\n Djibouti = \"dj\",\n Denmark = \"dk\",\n Dominica = \"dm\",\n DominicanRepublic = \"do\",\n Algeria = \"dz\",\n Ecuador = \"ec\",\n Estonia = \"ee\",\n Egypt = \"eg\",\n WesternSahara = \"eh\",\n Eritrea = \"er\",\n Spain = \"es\",\n Ethiopia = \"et\",\n Finland = \"fi\",\n Fiji = \"fj\",\n FalklandIslands = \"fk\",\n Micronesia = \"fm\",\n FaroeIslands = \"fo\",\n France = \"fr\",\n Gabon = \"ga\",\n UnitedKingdom = \"gb\",\n Grenada = \"gd\",\n Georgia = \"ge\",\n FrenchGuiana = \"gf\",\n Guernsey = \"gg\",\n Ghana = \"gh\",\n Gibraltar = \"gi\",\n Greenland = \"gl\",\n Gambia = \"gm\",\n Guinea = \"gn\",\n Guadeloupe = \"gp\",\n EquatorialGuinea = \"gq\",\n Greece = \"gr\",\n SouthGeorgiaAndTheSouthSandwichIslands = \"gs\",\n Guatemala = \"gt\",\n Guam = \"gu\",\n GuineaBissau = \"gw\",\n Guyana = \"gy\",\n HongKong = \"hk\",\n HeardIslandAndMcDonaldIslands = \"hm\",\n Honduras = \"hn\",\n Croatia = \"hr\",\n Haiti = \"ht\",\n Hungary = \"hu\",\n Indonesia = \"id\",\n Ireland = \"ie\",\n Israel = \"il\",\n IsleOfMan = \"im\",\n India = \"in\",\n BritishIndianOceanTerritory = \"io\",\n Iraq = \"iq\",\n Iran = \"ir\",\n Iceland = \"is\",\n Italy = \"it\",\n Jersey = \"je\",\n Jamaica = \"jm\",\n Jordan = \"jo\",\n Japan = \"jp\",\n Kenya = \"ke\",\n Kyrgyzstan = \"kg\",\n Cambodia = \"kh\",\n Kiribati = \"ki\",\n Comoros = \"km\",\n SaintKittsAndNevis = \"kn\",\n NorthKorea = \"kp\",\n SouthKorea = \"kr\",\n Kuwait = \"kw\",\n CaymanIslands = \"ky\",\n Kazakhstan = \"kz\",\n Laos = \"la\",\n Lebanon = \"lb\",\n SaintLucia = \"lc\",\n Liechtenstein = \"li\",\n SriLanka = \"lk\",\n Liberia = \"lr\",\n Lesotho = \"ls\",\n Lithuania = \"lt\",\n Luxembourg = \"lu\",\n Latvia = \"lv\",\n LibyanArabJamahiriya = \"ly\",\n Morocco = \"ma\",\n Monaco = \"mc\",\n Moldova = \"md\",\n Montenegro = \"me\",\n Madagascar = \"mg\",\n MarshallIslands = \"mh\",\n Macedonia = \"mk\",\n Mali = \"ml\",\n Myanmar = \"mm\",\n Mongolia = \"mn\",\n Macao = \"mo\",\n NorthernMarianaIslands = \"mp\",\n Martinique = \"mq\",\n Mauritania = \"mr\",\n Montserrat = \"ms\",\n Malta = \"mt\",\n Mauritius = \"mu\",\n Maldives = \"mv\",\n Malawi = \"mw\",\n Mexico = \"mx\",\n Malaysia = \"my\",\n Mozambique = \"mz\",\n Namibia = \"na\",\n NewCaledonia = \"nc\",\n Niger = \"ne\",\n NorfolkIsland = \"nf\",\n Nigeria = \"ng\",\n Nicaragua = \"ni\",\n Netherlands = \"nl\",\n Norway = \"no\",\n Nepal = \"np\",\n Nauru = \"nr\",\n Niue = \"nu\",\n NewZealand = \"nz\",\n Oman = \"om\",\n Panama = \"pa\",\n Peru = \"pe\",\n FrenchPolynesia = \"pf\",\n PapuaNewGuinea = \"pg\",\n Philippines = \"ph\",\n Pakistan = \"pk\",\n Poland = \"pl\",\n SaintPierreAndMiquelon = \"pm\",\n Pitcairn = \"pn\",\n PuertoRico = \"pr\",\n PalestinianTerritory = \"ps\",\n Portugal = \"pt\",\n Palau = \"pw\",\n Paraguay = \"py\",\n Qatar = \"qa\",\n Reunion = \"re\",\n Romania = \"ro\",\n Serbia = \"rs\",\n RussianFederation = \"ru\",\n Rwanda = \"rw\",\n SaudiArabia = \"sa\",\n SolomonIslands = \"sb\",\n Seychelles = \"sc\",\n Sudan = \"sd\",\n Sweden = \"se\",\n Singapore = \"sg\",\n SaintHelena = \"sh\",\n Slovenia = \"si\",\n SvalbardAndJanMayen = \"sj\",\n Slovakia = \"sk\",\n SierraLeone = \"sl\",\n SanMarino = \"sm\",\n Senegal = \"sn\",\n Somalia = \"so\",\n Suriname = \"sr\",\n SaoTomeAndPrincipe = \"st\",\n ElSalvador = \"sv\",\n SyrianArabRepublic = \"sy\",\n Swaziland = \"sz\",\n TurksAndCaicosIslands = \"tc\",\n Chad = \"td\",\n FrenchSouthernTerritories = \"tf\",\n Togo = \"tg\",\n Thailand = \"th\",\n Tajikistan = \"tj\",\n Tokelau = \"tk\",\n TimorLeste = \"tl\",\n Turkmenistan = \"tm\",\n Tunisia = \"tn\",\n Tonga = \"to\",\n Turkey = \"tr\",\n TrinidadAndTobago = \"tt\",\n Tuvalu = \"tv\",\n Taiwan = \"tw\",\n Tanzania = \"tz\",\n Ukraine = \"ua\",\n Uganda = \"ug\",\n UnitedStatesMinorOutlyingIslands = \"um\",\n UnitedStates = \"us\",\n Uruguay = \"uy\",\n Uzbekistan = \"uz\",\n VaticanCityState = \"va\",\n SaintVincentAndTheGrenadines = \"vc\",\n Venezuela = \"ve\",\n VirginIslandsBritish = \"vg\",\n VirginIslandsUS = \"vi\",\n VietNam = \"vn\",\n Vanuatu = \"vu\",\n WallisAndFutuna = \"wf\",\n Samoa = \"ws\",\n Yemen = \"ye\",\n Mayotte = \"yt\",\n SouthAfrica = \"za\",\n Zambia = \"zm\",\n Zimbabwe = \"zw\",\n}\n\nexport enum CameraRegion {\n APAC = \"apac\",\n AU = \"au\",\n EU = \"eu\",\n UK = \"uk\",\n IE = \"ie\",\n US = \"us\",\n}\n","import { Connector } from \"./connector\"\n\nexport enum AutomationProvider {\n Aconex = Connector.Aconex,\n Procore = Connector.Procore,\n Autodesk = Connector.Autodesk,\n Email = \"email\",\n}\n\nexport enum AutomationType {\n Photo = \"photo\",\n Compare = \"compare\",\n}\n","export type ActiveUsersRequestPayload = {\n from?: string\n to?: string\n companyExid?: string\n projectExid?: string\n cameraExid?: string\n}\n\nexport type ActiveUsersResponsePayload = Array<{\n date?: string\n dau?: number\n wau?: number\n mau?: number\n}>\n\nexport enum ActiveUsersMetric {\n DAU = \"dau\",\n WAU = \"wau\",\n MAU = \"mau\",\n}\n","import { ErrorType } from \"@evercam/api/types\"\n\nconst createErrorClass = (errorName: string) => {\n return class extends Error {\n constructor(error: unknown) {\n const e =\n error instanceof Error\n ? error\n : new Error(typeof error === \"string\" ? error : \"unknown\")\n super(e.message)\n this.name = errorName\n this.message = e.message\n this.stack = (e.stack || \"\").replace(/^Error: /, `${errorName}: `)\n }\n }\n}\n\nexport const BadRequestError = createErrorClass(ErrorType.BadRequestError)\nexport const NotFoundError = createErrorClass(ErrorType.NotFoundError)\nexport const UnauthorizedError = createErrorClass(ErrorType.UnauthorizedError)\nexport const GatewayTimeoutError = createErrorClass(\n ErrorType.GatewayTimeoutError\n)\nexport const BadGatewayError = createErrorClass(ErrorType.BadGatewayError)\nexport const ForbiddenError = createErrorClass(ErrorType.ForbiddenError)\nexport const HlsError = createErrorClass(ErrorType.HlsError)\nexport const SnapshotError = createErrorClass(ErrorType.SnapshotError)\nexport const ConflictError = createErrorClass(ErrorType.ConflictError)\nexport const InternalServerError = createErrorClass(\n ErrorType.InternalServerError\n)\n","import humps from \"humps\"\nimport Axios, {\n AxiosDefaults,\n type AxiosError,\n type AxiosRequestConfig,\n type AxiosResponse,\n} from \"axios\"\nimport { ErrorCode, type AxiosEnvironment } from \"@evercam/api/types\"\nimport {\n NotFoundError,\n BadRequestError,\n UnauthorizedError,\n BadGatewayError,\n GatewayTimeoutError,\n ForbiddenError,\n InternalServerError,\n ConflictError,\n} from \"./customErrors\"\nimport axios from \"axios\"\n\nlet numberOfRequestsSentInThePastSecond = 0\nconst maxRequestsPerSecond = 10\nconst requestsRateLimit = async () => {\n while (numberOfRequestsSentInThePastSecond === maxRequestsPerSecond) {\n await new Promise((r) => setTimeout(r, 1000))\n }\n numberOfRequestsSentInThePastSecond++\n\n setTimeout(() => {\n numberOfRequestsSentInThePastSecond--\n }, 1000)\n}\n\nexport const onRequest = async (\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) => {\n if (request?.raw) {\n return request\n }\n\n if (request?.timing) {\n request._metadata = { startTime: performance.now() }\n }\n await requestsRateLimit()\n ensureBaseUrl(request, axiosEnv)\n addAuthTokenHeader(request, axiosEnv)\n if (\n axiosEnv.app === \"dashboard\" &&\n typeof document.referrer === \"string\" &&\n document.referrer.length !== 0\n ) {\n // @ts-expect-error - common type string | number | undefined\n request.headers.common[\"iframe-origin\"] = new URL(document.referrer).origin\n }\n\n if (!request.preserveCasing) {\n transformCamelCaseToSnakeCase(request)\n }\n\n return request\n}\n\nexport const onResponse = (response: AxiosResponse) => {\n if (response?.config?.raw) {\n return response\n }\n\n if (!(\"data\" in response)) {\n return response\n } else if (response.data instanceof Blob) {\n return response.data\n }\n\n const data = response?.config?.preserveCasing\n ? response.data\n : humps.camelizeKeys(response.data)\n\n if (response?.config?.timing && response?.config?._metadata?.startTime) {\n const duration = performance.now() - response.config._metadata.startTime\n\n return {\n ...response,\n data: data,\n duration,\n }\n }\n\n return data\n}\n\nexport const onError = async (\n error: AxiosError,\n axiosEnv: AxiosEnvironment\n) => {\n if (error?.config?.timing && error?.config?._metadata?.startTime) {\n const duration = performance.now() - error.config._metadata.startTime\n\n return { error, duration }\n }\n const statusCode = error.response ? error.response.status : null\n const method = (error.config?.method || \"\").toUpperCase()\n const url = error.config?.url\n // @ts-expect-error - AxiosError has no response property\n const backendErrorCode = error?.response?.data?.code || \"\"\n\n let customError = {}\n let customMessage = error.message\n\n if (url && method && statusCode) {\n customMessage =\n `${method} ${url} (${statusCode}) ${backendErrorCode}`.trim()\n }\n switch (statusCode) {\n case ErrorCode.BadRequestError:\n customError = new BadRequestError(new Error(customMessage))\n break\n case ErrorCode.UnauthorizedError:\n customError = new UnauthorizedError(new Error(customMessage))\n break\n case ErrorCode.ForbiddenError:\n customError = new ForbiddenError(new Error(customMessage))\n break\n case ErrorCode.NotFoundError:\n customError = new NotFoundError(new Error(customMessage))\n break\n case ErrorCode.ConflictError:\n customError = new ConflictError(new Error(customMessage))\n break\n case ErrorCode.InternalServerError:\n customError = new InternalServerError(new Error(customMessage))\n break\n case ErrorCode.BadGatewayError:\n customError = new BadGatewayError(new Error(customMessage))\n break\n case ErrorCode.GatewayTimeoutError:\n customError = new GatewayTimeoutError(new Error(customMessage))\n break\n case null: // null case\n case 0: // 0 case occurred when user has no internet connection\n customError = new Error(\n \"A network error occurred. This could be a CORS issue, a cancel request or a dropped internet connection.\"\n )\n break\n }\n const isCancelError = Axios.isCancel(error)\n\n if (isCancelError || statusCode === ErrorCode.NotFoundError) {\n return Promise.reject(customError)\n }\n\n console.warn(\"[@evercam/api/axios.ts]: Caught error:\", error)\n\n const breadcrumbLogger = axiosEnv.errorLogger\n if (url && breadcrumbLogger) {\n breadcrumbLogger({\n // @ts-expect-error axios issue\n category: \"axios.info\",\n data: {\n url: `Error in URL: ${url}`,\n status: statusCode,\n },\n })\n }\n\n return Promise.reject(customError)\n}\n\nexport const ensureCommonHeaders = (\n target: AxiosDefaults | AxiosRequestConfig\n) => {\n if (!target.headers) {\n // @ts-ignore\n target.headers = {}\n }\n if (!target.headers.common) {\n target.headers.common = {}\n }\n}\n\nfunction addAuthTokenHeader(\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) {\n // Add auth token header\n const JwtToken = axiosEnv?.getAuthToken?.()\n if (!JwtToken) {\n return\n }\n ensureCommonHeaders(request)\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore (See https://github.com/axios/axios/issues/4193 )\n request.headers.common.Authorization = `Bearer ${JwtToken}`\n}\n\nfunction ensureBaseUrl(\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) {\n // Set baseURL if not already set\n if (!request.baseURL) {\n request.baseURL = axiosEnv?.baseUrl as string\n }\n}\n\nfunction transformCamelCaseToSnakeCase(\n request: AxiosRequestConfig<Record<string, any>>\n) {\n let paramsIgnoredCasing = {}\n let { data, params } = request\n\n if (\n data &&\n !(\n data instanceof Blob ||\n data instanceof FormData ||\n typeof data === \"string\"\n )\n ) {\n // Ignore casing transformation for some params when prompted using the `ignoreCasingFromParams` prop\n if (data?.ignoreCasingFromParams) {\n paramsIgnoredCasing =\n data.ignoreCasingFromParams.reduce(\n (acc: Record<string, any>, item: any) => ({\n ...acc,\n [item]: data![item],\n }),\n {}\n ) || {}\n delete data.ignoreCasingFromParams\n }\n if (Array.isArray(data)) {\n data = humps.decamelizeKeys(data)\n } else {\n data = { ...humps.decamelizeKeys(data), ...paramsIgnoredCasing }\n }\n }\n\n // Apply camelCase -> snake_cake on the request payload for FormData of instance of data\n if (data && data instanceof FormData) {\n let formData = new FormData()\n // @ts-ignore\n for (const [key, value] of data.entries()) {\n formData.append(humps.decamelize(key), value)\n }\n data = formData\n }\n\n // Apply camelCase -> snake_cake on the request query params\n if (params && !(params instanceof Blob)) {\n params = humps.decamelizeKeys(params)\n }\n\n request.data = data\n request.params = params\n}\n\nexport const OnRequestExpiredTokenInterceptor = async (\n request: AxiosRequestConfig,\n isTokenExpired: () => boolean,\n handler: () => Promise<void>\n) => {\n if (isTokenExpired()) {\n await handler()\n throw new axios.Cancel(\"Request canceled due to expired token\")\n }\n\n return request\n}\n","function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n let dbp;\n const getDB = () => {\n if (dbp)\n return dbp;\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n dbp = promisifyRequest(request);\n dbp.then((db) => {\n // It seems like Safari sometimes likes to just close the connection.\n // It's supposed to fire this event when that happens. Let's hope it does!\n db.onclose = () => (dbp = undefined);\n }, () => { });\n return dbp;\n };\n return (txMode, callback) => getDB().then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n","import { get, set, del, clear } from \"idb-keyval\"\nimport { AxiosRequestConfig } from \"axios\"\n\nexport class SwrStore {\n private prefix: string\n\n constructor(prefix: string) {\n this.prefix = prefix\n }\n\n generateKey(config: AxiosRequestConfig): string {\n const url = config.baseURL\n ? `${config.baseURL.replace(/\\/$/, \"\")}/${config.url?.replace(/^\\//, \"\")}`\n : config.url!\n\n let paramsKey = \"\"\n if (config.params) {\n const params = Object.keys(config.params)\n .sort()\n .reduce((acc, key) => {\n acc[key] = config.params![key]\n\n return acc\n }, {} as Record<string, any>)\n paramsKey = JSON.stringify(params)\n }\n\n return `${this.prefix}:${\n config.method?.toUpperCase() || \"GET\"\n }:${url}?${paramsKey}`\n }\n\n async get(key: string) {\n let value\n\n try {\n value = await get(key)\n if (value === undefined) {\n return\n }\n } catch (e) {\n console.error(`[SWR Store]: Error getting value for key \"${key}\"`, e)\n\n return\n }\n\n try {\n value = JSON.parse(value as string)\n } catch (e) {\n console.error(\n `[SWR Store]: Error parsing value for key \"${key}\", got ${value}`,\n e\n )\n }\n\n return value\n }\n\n async set(key: string, value: unknown) {\n try {\n const serializedValue = JSON.stringify(value)\n await set(key, serializedValue)\n } catch (e) {\n console.error(\n `[SWR Store]: Error setting value: ${value} for key \"${key}\"`,\n e\n )\n }\n }\n\n async delete(key: string) {\n try {\n await del(key)\n } catch (e) {\n console.error(`[SWR Store]: Error deleting key \"${key}\"`, e)\n }\n }\n\n async clear() {\n try {\n await clear()\n } catch (e) {\n console.error(\"[SWR Store]: Error clearing cache\", e)\n }\n }\n}\n","import { AxiosRequestConfig, type AxiosResponse } from \"axios\"\nimport { ExtendedAxiosInstance, ResponseValue } from \"@/types\"\nimport { SwrStore } from \"./SwrStore\"\n\nexport class Swr {\n private axiosInstance: ExtendedAxiosInstance\n private store: SwrStore\n\n constructor({\n key,\n axiosInstance,\n }: {\n key: string\n axiosInstance: ExtendedAxiosInstance\n }) {\n this.store = new SwrStore(key)\n this.axiosInstance = axiosInstance\n }\n\n async get<T = any>(\n url: string,\n config: AxiosRequestConfig = {}\n ): Promise<ResponseValue<T>> {\n const finalConfig: AxiosRequestConfig = {\n ...config,\n method: \"get\",\n url,\n }\n\n const key = this.store.generateKey(finalConfig)\n const cachedPromise = this.getCachedValue(key, finalConfig)\n const freshPromise = this.getFreshValue(key, finalConfig)\n\n return Promise.race([\n cachedPromise.then((v) => v ?? freshPromise),\n freshPromise,\n ])\n }\n\n private async getCachedValue(\n key: string,\n config: AxiosRequestConfig\n ): Promise<unknown> {\n try {\n const value = await this.store.get(key)\n if (!value) {\n return\n }\n\n if (config.onSwrHit) {\n config.onSwrHit(value)\n }\n\n return value\n } catch (error) {\n console.warn(`[SWR] Error fetching value for key: ${key}`, error)\n }\n }\n\n private async getFreshValue<T = any>(\n key: string,\n config: AxiosRequestConfig\n ): Promise<ResponseValue<T>> {\n try {\n const response: AxiosResponse<T> = await this.axiosInstance.request<T>(\n config\n )\n const fresh = (response?.data ??\n (response as unknown)) as ResponseValue<T>\n\n this.store.set(key, fresh).catch((err: unknown) => {\n console.warn(`[SWR] Failed to write to cache: ${key}`, err)\n })\n\n if (config.onSwrRefresh) {\n config.onSwrRefresh(fresh)\n }\n\n return fresh\n } catch (err) {\n console.warn(`[SWR] Request failed: ${config.url}`, err)\n if (config.onSwrError) {\n config.onSwrError(err as Error)\n }\n\n throw err\n }\n }\n\n async clear() {\n await this.store.clear()\n }\n}\n","import Axios, { AxiosResponse, type CancelTokenSource } from \"axios\"\nimport type {\n ErrorInterceptor,\n ExtendedAxiosInstance,\n RequestInterceptor,\n ResponseInterceptor,\n} from \"@/types\"\nimport {\n onRequest,\n onResponse,\n onError,\n ensureCommonHeaders,\n} from \"./interceptors\"\nimport { Swr } from \"./swr/Swr\"\n\nlet requestInterceptors: RequestInterceptor[] = []\nlet responseInterceptors: ResponseInterceptor[] = []\nlet errorInterceptors: ErrorInterceptor[] = []\n\ndeclare module \"axios\" {\n export interface AxiosRequestConfig {\n // Skip all request / response interceptors\n raw?: boolean\n\n // Skip the camelCase / snake_case transformations\n preserveCasing?: boolean\n\n // Measure the request duration (adds a field \"duration\" to the response)\n timing?: boolean\n\n // (readonly) Start time of the request (automatically set when timing == true)\n _metadata?: { startTime: number }\n }\n}\n\nconst axios = Axios.create({\n headers: {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore (See: https://github.com/axios/axios/issues/4193 )\n common: {\n Accept: \"application/json, text/plain, */*\",\n \"Content-Type\": \"application/json\",\n },\n },\n}) as ExtendedAxiosInstance\n\naxios.env = {}\n\naxios.addEnvironmentVariables = (vars: Record<string, any>) => {\n axios.env = { ...axios.env, ...vars }\n // log a warning if some values are null, undefined or no length only if localhost\n Object.entries(axios.env).forEach(([key, value]) => {\n if (\n (value === null ||\n value === undefined ||\n (typeof value === \"string\" && !value.length)) &&\n window.location.hostname.includes(\"localhost\")\n ) {\n console.warn(\n `AXIOS environment value for ${key} is ${value} - check your .env file.`\n )\n }\n })\n}\n\naxios.swr = new Swr({\n key: axios.env.swrKey || \"swr\",\n axiosInstance: axios,\n})\n\nconst defaultGet = axios.get.bind(axios)\n\naxios.swr = new Swr({\n key: axios.env.swrKey || \"swr\",\n axiosInstance: axios,\n})\n\naxios.get = function <T = any, R = AxiosResponse<T>>(\n ...args: Parameters<typeof defaultGet>\n) {\n const config = args[1] || {}\n\n return (\n config.swr ? this.swr.get<T>(...args) : defaultGet(...args)\n ) as Promise<R>\n}\n\naxios.addRequestInterceptor = (\n requestInterceptor: RequestInterceptor,\n errorInterceptor?: ErrorInterceptor\n) => {\n requestInterceptors.push(requestInterceptor)\n if (errorInterceptor && !errorInterceptors.includes(errorInterceptor)) {\n errorInterceptors.push(errorInterceptor)\n }\n\n // Ensure we only set up the interceptors once to prevent duplicate calls\n // @ts-expect-error\n if (axios.interceptors.request.handlers.length === 0) {\n axios.interceptors.request.use(\n async (request) => {\n for (const interceptor of requestInterceptors) {\n request = await interceptor(request, axios.env)\n }\n\n return request\n },\n (error) => {\n for (const interceptor of errorInterceptors) {\n interceptor(error, axios.env)\n }\n }\n )\n }\n}\n\naxios.addResponseInterceptor = (\n responseInterceptor,\n errorInterceptor?: ErrorInterceptor\n) => {\n responseInterceptors.push(responseInterceptor)\n if (errorInterceptor && !errorInterceptors.includes(errorInterceptor)) {\n errorInterceptors.push(errorInterceptor)\n }\n\n // Ensure we only set up the interceptors once to prevent duplicate calls\n // @ts-expect-error\n if (axios.interceptors.response.handlers.length === 0) {\n axios.interceptors.response.use(\n async (response) => {\n for (const interceptor of responseInterceptors) {\n response = await interceptor(response, axios.env)\n }\n\n return response\n },\n (error) => {\n for (const interceptor of errorInterceptors) {\n interceptor(error, axios.env)\n }\n\n return Promise.reject(error)\n }\n )\n }\n}\n\n// Adds auth guards and applies cameraCase -> snake_case transforms on request payload & params\naxios.addRequestInterceptor(onRequest, onError)\n\n// Apply snake_case -> camelCase on incoming responses data\naxios.addResponseInterceptor(onResponse, onError)\n\nconst setHeader = (headerName: string, value: any) => {\n ensureCommonHeaders(axios.defaults)\n if (!value) {\n delete axios.defaults.headers.common[headerName]\n } else {\n axios.defaults.headers.common[headerName] = value\n }\n}\nconst setToken = (token: string) => {\n setHeader(\"Authorization\", token ? `Bearer ${token}` : null)\n}\n\naxios.CancelToken = Axios.CancelToken\naxios.isCancel = Axios.isCancel\naxios.setHeader = setHeader\naxios.setToken = setToken\n\nlet cancelTokens: CancelTokenSource[] = []\n\naxios.generateCancelTokenSource = () => axios.CancelToken.source()\naxios.addCancelToken = (token: CancelTokenSource) =>\n (cancelTokens = [token, ...cancelTokens])\naxios.resetCancelTokens = () => (cancelTokens = [])\naxios.cancelRequests = () => {\n if (cancelTokens.length) {\n cancelTokens.forEach((t) => {\n t.cancel(\"Operation canceled due to new request\")\n })\n axios.resetCancelTokens()\n }\n}\n\nexport { axios }\n","import {\n FootageCreateUpdatePayload,\n HDDCreateUpdatePayload,\n HDDsQueryParams,\n} from \"@/types/hdd\"\nimport { axios } from \"./client\"\nimport type {\n CamerasResponsePayload,\n CameraUpdateRequestPayload,\n PaginatedItems,\n AdminCamera,\n Project,\n Hdd,\n AdminUser,\n ProgressPhotosCreateUpdateRequestPayload,\n Kit,\n PatchPayload,\n StorageServersResponsePayload,\n MediaFilterQueryParams,\n Media,\n MediaDeleteRequestPayload,\n AuditLogsParams,\n AuditLog,\n SnapshotExtractionQyeryParams,\n SnapshotExtraction,\n CameraCreateRequestPayload,\n CameraDeletePayload,\n SnapshotTestPayload,\n SnapshotTestResponse,\n DuplicatedCameraFields,\n DuplicatedCameraResponse,\n MergeDuplicatedCameraPayload,\n FetchCameraQueryParams,\n DeleteSnapshotQueryParams,\n SaveNotePayload,\n CameraNote,\n CreateCameraNotePayload,\n CompanyQueryParams,\n Company,\n CompanyUpdatePayload,\n SsoProvider,\n SsoUpdatePayload,\n SsoCreatePayload,\n SuppressionsQueryParams,\n Suppression,\n SnapshotExtractionType,\n KitQueryParams,\n KitCreatePayload,\n AdminKit,\n CameraLogsQueryParams,\n CameraLog,\n CameraAuditLogsQueryParams,\n CameraAuditLog,\n NvrQueryParams,\n Nvr,\n SiteVisitCamerasQueryParams,\n OfflineCameraQueryParams,\n OfflineCamera,\n OfflineCameraNoteResponse,\n UserStatsResponse,\n UserCameraResponse,\n UserProjectResponse,\n ProjectUsers,\n ProjectCamera,\n ProjectsQueryParams,\n ProjectStatusStats,\n ProjectCreateRequestPayload,\n ProjectCreateResponse,\n ProjectUpdateRequestPayload,\n RouterQueryParams,\n Router,\n RouterCreatePayload,\n GlobalSearchQueryParams,\n CameraShareRequestsQueryParams,\n CameraShareRequest,\n CameraShareRequestPayload,\n ShareCreateResponsePayload,\n ShareQueryParams,\n AdminShare,\n SimCreateUpdatePayload,\n SimsQueryParams,\n Sim,\n SendSmsPayload,\n SendSmsResponse,\n SmsHistoryResponse,\n SmsQueryParams,\n Sms,\n ProgressPhotosQueryParams,\n ProgressPhotoItem,\n progressPhotosHistoryQueryParams,\n ProgressPhotosHistory,\n AdminUserUpdateRequestPayload,\n AdminQueryParams,\n Admin,\n ImpersonateUserResponse,\n AdminUserQueryParams,\n AdminCompareQueryParams,\n AdminCompare,\n NvrCreatePayload,\n WidgetsListRequestPayload,\n Widget,\n WidgetFull,\n WidgetPayload,\n PaginationParams,\n KitStorageRequestPayload,\n CompanyUser,\n CompanyProject,\n Automation,\n KitStorage,\n KitFootageRequestPayload,\n KitFootageResponsePayload,\n CommentsListRequestPayload,\n Comment,\n} from \"@evercam/api/types\"\n\nimport { KitMetricId } from \"@evercam/api/types\"\nimport { Tag } from \"@/types/tag\"\n\nexport const AdminApi = {\n mediaHub: {\n getAllMedia(params: {\n params: Partial<MediaFilterQueryParams>\n }): Promise<PaginatedItems<Media>> {\n return axios.get(\"/admin/media-hub\", params)\n },\n deleteMedia(params: Partial<MediaDeleteRequestPayload>): Promise<void> {\n return axios.delete(\"/admin/media-hub\", { params })\n },\n },\n auditLogs: {\n getAuditLogs(params: {\n params: Partial<AuditLogsParams>\n }): Promise<PaginatedItems<AuditLog>[]> {\n return axios.get(\"/admin/audit-logs\", params)\n },\n },\n cameras: {\n getCamerasStats(params: {\n params: {\n email?: string\n }\n }): Promise<CamerasResponsePayload> {\n return axios.get(\"/admin/cameras/status-stats\", params)\n },\n rebootCamera(cameraId: string): Promise<{ message: string }> {\n return axios.post(`/admin/devices/camera/${cameraId}/reboot`)\n },\n focusCamera(\n cameraId: string,\n device: string\n ): Promise<{ message: string }> {\n return axios.post(`/admin/devices/${device}/${cameraId}/focus`)\n },\n getStorageServers(): Promise<StorageServersResponsePayload> {\n return axios.get(\"/admin/storage/servers\")\n },\n getStorageDetails() {\n return axios.get(\"/admin/storage\")\n },\n getSnapshotExtractions(params: {\n params: Partial<SnapshotExtractionQyeryParams>\n }): Promise<PaginatedItems<SnapshotExtraction>> {\n return axios.get(\"/admin/snapshot-extractions\", params)\n },\n createCameras(\n payload: CameraCreateRequestPayload\n ): Promise<{ cameras: [AdminCamera] }> {\n return axios.post(\"/admin/cameras\", payload)\n },\n deleteCamera(exid: string, payload: CameraDeletePayload): Promise<void> {\n return axios.post(`/admin/cameras/${exid}/delete`, payload)\n },\n restoreCamera(exid: string): Promise<{ message: string }> {\n return axios.put(`/admin/cameras/${exid}/restore`)\n },\n testSnapshot(payload: SnapshotTestPayload): Promise<SnapshotTestResponse> {\n return axios.post(\"/admin/cameras/test-snapshot\", payload)\n },\n getDuplicateCameras(params: {\n params: {\n fields?: DuplicatedCameraFields[]\n sort?: string\n }\n }): Promise<PaginatedItems<DuplicatedCameraResponse>> {\n return axios.get(\"/admin/duplicate-cameras\", params)\n },\n mergeDuplicateCameras(\n payload: MergeDuplicatedCameraPayload\n ): Promise<{ success: boolean }> {\n return axios.post(\"/admin/merge-cameras\", payload)\n },\n getCameras(params: {\n params: Partial<FetchCameraQueryParams>\n }): Promise<PaginatedItems<AdminCamera>> {\n return axios.get(\"/admin/cameras\", params)\n },\n getCompares(params: {\n params: AdminCompareQueryParams\n }): Promise<PaginatedItems<AdminCompare[]>> {\n return axios.get(\"/admin/compares\", params)\n },\n getCameraDetails(exid: string): Promise<AdminCamera> {\n return axios.get(`/admin/cameras/${exid}`)\n },\n deleteSnapshots(\n cameraId: string,\n params: DeleteSnapshotQueryParams\n ): Promise<void> {\n return axios.delete(`admin/cameras/${cameraId}/snapshots`, {\n params,\n })\n },\n refreshDeviceSettings(cameraId: string): Promise<void> {\n return axios.post(\n `/admin/cameras/${cameraId}/device-settings/refresh`,\n {}\n )\n },\n // (Azhar) Old save note code will be remove once we migrate all old saved camera notes\n saveNote(cameraId: string, params: SaveNotePayload): Promise<CameraNote> {\n return axios.post(`/admin/cameras/${cameraId}/save-note`, params)\n },\n saveCameraNote(\n cameraId: string,\n params: CreateCameraNotePayload\n ): Promise<{ message: string }> {\n return axios.post(`/admin/cameras/${cameraId}/note`, params)\n },\n update(\n cameraId: string,\n params: CameraUpdateRequestPayload\n ): Promise<CamerasResponsePayload> {\n return axios.patch(`/admin/cameras/${cameraId}`, params)\n },\n transferOwnership(cameraId: string, newOwnerId: number): Promise<void> {\n return axios.put(`/admin/cameras/${cameraId}/transfer/${newOwnerId}`)\n },\n },\n companies: {\n show(id: string, params: Object): Promise<Company> {\n return axios.get(`/admin/companies/${id}`, params)\n },\n getCompanyUsers(\n id: string,\n params: {\n params: { page: number; limit: number }\n }\n ): Promise<PaginatedItems<CompanyUser>> {\n return axios.get(`/admin/companies/${id}/users`, params)\n },\n getCompanyProjects(\n id: string,\n params: {\n params: { page: number; limit: number }\n }\n ): Promise<PaginatedItems<CompanyProject>> {\n return axios.get(`/admin/companies/${id}/projects`, params)\n },\n getCompanyKits(\n id: string,\n params: {\n params: { page: number; limit: number; sort?: string }\n }\n ): Promise<PaginatedItems<Kit[]>> {\n return axios.get(`/admin/companies/${id}/kits`, params)\n },\n getCompanyCameras(id: string, params: Record<string, string>) {\n return axios.get(`/admin/companies/${id}/cameras`, params)\n },\n getCompanies(params: {\n params: Partial<CompanyQueryParams>\n }): Promise<PaginatedItems<Company[]>> {\n return axios.get(\"/admin/companies\", params)\n },\n updateCompany(\n id: string,\n params: CompanyUpdatePayload\n ): Promise<Omit<CompanyUpdatePayload, \"linkedinUrl\">> {\n return axios.patch(`/admin/companies/${id}`, params)\n },\n deleteCompany(params: {\n ids: string | string[]\n }): Promise<{ success: true }> {\n return axios.delete(\"/admin/companies\", { params })\n },\n reSyncCompanies(params: {\n companyIds: string[]\n }): Promise<{ success: true }> {\n return axios.post(\"/admin/companies/resync\", params)\n },\n },\n sso: {\n getProviders(params: { params: PaginationParams }): Promise<SsoProvider[]> {\n return axios.get(\"/admin/sso-providers\", params)\n },\n updateProvider(id: string, params: SsoUpdatePayload): Promise<SsoProvider> {\n return axios.patch(`/admin/sso-providers/${id}`, params)\n },\n createProvider(params: SsoCreatePayload): Promise<SsoProvider> {\n return axios.post(\"/admin/sso-providers\", params)\n },\n deleteProviders(ids: string[]): Promise<{ success: true }> {\n return axios.delete(\"/admin/sso-providers\", { params: { ids } })\n },\n },\n emailing: {\n performEmailing(template: string, params: Record<string, unknown>) {\n return axios.post(`/admin/mailing/${template}`, params)\n },\n suppressions(params: {\n params: SuppressionsQueryParams\n }): Promise<PaginatedItems<Suppression[]>> {\n return axios.get(\"/admin/mailing/suppressions\", params)\n },\n deleteSuppression(id: number): Promise<void> {\n return axios.delete(`/admin/mailing/suppressions/${id}`)\n },\n },\n extractions: {\n updateCloudRecordings(cameraId: string, params: Record<string, unknown>) {\n return axios.post(`/admin/cameras/${cameraId}/cloud-recordings`, params)\n },\n addExtraction(\n cameraId: string,\n params: SnapshotExtractionQyeryParams\n ): Promise<PaginatedItems<SnapshotExtraction>> {\n return axios.post(`admin/cameras/${cameraId}/extractions`, params)\n },\n getExtractionStatus(\n cameraId: string,\n extractionId: number,\n params: {\n type: SnapshotExtractionType\n }\n ): Promise<{ status: string; jpegs: number }> {\n return axios.get(\n `admin/cameras/${cameraId}/extractions/${extractionId}`,\n {\n params,\n }\n )\n },\n deleteSnapshotExtraction(\n cameraId: string,\n extractionId: number,\n params: {\n type: SnapshotExtractionType\n }\n ): Promise<void> {\n return axios.delete(\n `admin/cameras/${cameraId}/extractions/${extractionId}`,\n {\n params,\n }\n )\n },\n },\n kits: {\n getAllKits(params: {\n params: KitQueryParams\n }): Promise<PaginatedItems<Kit[]>> {\n return axios.get(\"/admin/kits\", params)\n },\n async getKit(kitId: number): Promise<Kit> {\n return axios.get(`/admin/kits/${kitId}`)\n },\n createKit(params: KitCreatePayload): Promise<AdminKit> {\n return axios.post(\"/admin/kits\", params)\n },\n updateKit(id: string, params: PatchPayload<Kit>) {\n return axios.patch(`/admin/kits/${id}`, params)\n },\n deleteKit(id: string, params: Record<string, unknown>) {\n return axios.delete(`/admin/kits/${id}`, { params })\n },\n getKitStats({\n kitId,\n metric,\n fromDate,\n toDate,\n }: {\n kitId: number\n metric: KitMetricId\n fromDate: string\n toDate: string\n }) {\n return axios.get(`/admin/kits/${kitId}/stats/${metric}`, {\n params: {\n fromDate,\n toDate,\n },\n })\n },\n attachTag(kitId: number, tagId: number): Promise<void> {\n return axios.post(`/admin/kits/${kitId}/tags`, { tagId: tagId })\n },\n detachTag(kitId: number, tagId: number): Promise<void> {\n return axios.delete(`/admin/kits/${kitId}/tags/${tagId}`)\n },\n getStorages(params: {\n params: KitStorageRequestPayload\n }): Promise<PaginatedItems<KitStorage[]>> {\n return axios.get(\"/admin/kits/storages\", params)\n },\n getFootage(\n id: number,\n params: { params: KitFootageRequestPayload }\n ): Promise<KitFootageResponsePayload[]> {\n return axios.get(`/admin/kits/${id}/footage`, params)\n },\n },\n logs: {\n getAllCamerasStatusLogs(params: {\n params: CameraLogsQueryParams\n }): Promise<{ data: CameraLog[] }> {\n return axios.get(\"/admin/cameras-logs\", params)\n },\n getCameraLogs(\n cameraId: string,\n payload: {\n params: CameraAuditLogsQueryParams\n }\n ): Promise<PaginatedItems<CameraAuditLog[]>> {\n return axios.get(`/admin/cameras/${cameraId}/audit-logs`, payload)\n },\n togglePinNote(id: string): Promise<PaginatedItems<CameraAuditLog[]>> {\n return axios.patch(`/admin/audit-logs/${id}/toggle-pin`)\n },\n },\n nvrs: {\n getNvrs(params: {\n params: NvrQueryParams\n }): Promise<PaginatedItems<Nvr[]>> {\n return axios.get(\"/admin/nvrs\", params)\n },\n createNvr(params: NvrCreatePayload) {\n return axios.post(\"/admin/nvrs\", params)\n },\n updateNvr(id: string, params: PatchPayload<Nvr>) {\n return axios.patch(`/admin/nvrs/${id}`, params)\n },\n rebootNVR(cameraId: string): Promise<{ message: string }> {\n return axios.post(`/admin/devices/nvr/${cameraId}/reboot`)\n },\n },\n offlineCameras: {\n getSiteVisitCameras(params: {\n params: Partial<SiteVisitCamerasQueryParams>\n }): Promise<PaginatedItems<AdminCamera>> {\n return axios.get(\"/admin/site-visit-cameras\", params)\n },\n getOfflineCameras(params: {\n params: Partial<OfflineCameraQueryParams>\n }): Promise<PaginatedItems<OfflineCamera>> {\n return axios.get(\"/admin/offline-cameras\", params)\n },\n getOfflineCamerasLastNote(params: {\n cameraIds: number[]\n }): Promise<OfflineCameraNoteResponse> {\n return axios.get(\"/admin/offline-cameras/notes\", { params: params })\n },\n },\n projects: {\n index(params: {\n params: Partial<ProjectsQueryParams>\n }): Promise<PaginatedItems<Project>> {\n return axios.get(\"/admin/projects\", params)\n },\n show(\n exid: string,\n params: Record<string, unknown> = {}\n ): Promise<{ data: Project }> {\n return axios.get(\n `/admin/projects/${exid}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getUsers(id: string): Promise<ProjectUsers> {\n return axios.get(`/admin/projects/${id}/users`)\n },\n getCameras(id: string): Promise<{ data: ProjectCamera[] }> {\n return axios.get(`/admin/projects/${id}/cameras`)\n },\n getProjectsStats(): Promise<ProjectStatusStats> {\n return axios.get(\"/admin/projects/status-stats\")\n },\n createProject(\n params: ProjectCreateRequestPayload\n ): Promise<ProjectCreateResponse> {\n return axios.post(\"/admin/projects\", params)\n },\n updateProject(\n projectExid: string,\n params: Partial<ProjectUpdateRequestPayload>\n ): Promise<ProjectCreateResponse> {\n return axios.put(`/admin/projects/${projectExid}`, params)\n },\n deleteProject(projectExid: string): Promise<{ success: boolean }> {\n return axios.delete(`/admin/projects/${projectExid}`)\n },\n addToProject(\n projectExid: string,\n params: { cameraExids: string[] }\n ): Promise<void> {\n return axios.post(`/admin/projects/${projectExid}/add-cameras`, params)\n },\n },\n routers: {\n getRouters(params: {\n params: Partial<RouterQueryParams>\n }): Promise<PaginatedItems<Router[]>> {\n return axios.get(\"/admin/routers\", params)\n },\n getRouterTypes(): Promise<string[]> {\n return axios.get(\"/admin/router-types\")\n },\n createRouter(params: RouterCreatePayload): Promise<{ routerId: number }> {\n return axios.post(\"/admin/routers\", params)\n },\n updateRouter(\n id: number,\n params: RouterCreatePayload\n ): Promise<{ success: boolean }> {\n return axios.patch(`/admin/routers/${id}`, params)\n },\n deleteRouter(id: number): Promise<void> {\n return axios.delete(`/admin/routers/${id}`)\n },\n getRouter(id: number): Promise<Router> {\n return axios.get(`/admin/routers/${id}`)\n },\n },\n search: {\n search(params: {\n params: GlobalSearchQueryParams\n }): Promise<PaginatedItems<Record<string, unknown>>> {\n return axios.get(\"/admin/search\", params)\n },\n },\n hdds: {\n getHdds(payload: { projectId: string; companyId: string }): Promise<Hdd[]> {\n return axios.get(\"/admin/hdds\", { params: payload })\n },\n getAllHdds(params: { params: Partial<HDDsQueryParams> }) {\n return axios.get(\"/admin/hdds\", params)\n },\n deleteHdd(hddId: number) {\n return axios.delete(`/admin/hdds/${hddId}`)\n },\n saveHdd(params: HDDCreateUpdatePayload) {\n return axios.post(\"/admin/hdds\", params)\n },\n updateHdd(hddId: number, params: HDDCreateUpdatePayload) {\n return axios.patch(`/admin/hdds/${hddId}`, params)\n },\n saveFootage(hddId: number, params: FootageCreateUpdatePayload) {\n return axios.post(`/admin/hdds/${hddId}/footages`, params)\n },\n deleteFootage(hddId: number, footageId: number) {\n return axios.delete(`/admin/hdds/${hddId}/footages/${footageId}`)\n },\n updateFootage(\n hddId: number,\n footageId: number,\n params: FootageCreateUpdatePayload\n ) {\n return axios.patch(`/admin/hdds/${hddId}/footages/${footageId}`, params)\n },\n },\n shareRequests: {\n getShareRequests(params: {\n params: Partial<CameraShareRequestsQueryParams>\n }): Promise<PaginatedItems<CameraShareRequest[]>> {\n return axios.get(\"/admin/camera-share-requests\", params)\n },\n deleteShareRequest(params: {\n ids: number[]\n }): Promise<{ success: boolean }> {\n return axios.delete(\"/admin/camera-share-requests\", { params: params })\n },\n updateShareRequestStatus(params: {\n ids: number[]\n status: string\n }): Promise<{ success: boolean }> {\n return axios.patch(\"/admin/camera-share-requests\", params)\n },\n },\n shares: {\n createShares(\n cameraExid: string,\n payload: CameraShareRequestPayload\n ): Promise<ShareCreateResponsePayload> {\n return axios.post(`/admin/cameras/${cameraExid}/shares`, payload)\n },\n getShares(params: {\n params: Partial<ShareQueryParams>\n }): Promise<PaginatedItems<AdminShare[]>> {\n return axios.get(\"/admin/camera-shares\", params)\n },\n deleteShares(ids: number[]): Promise<void> {\n return axios.delete(\"/admin/camera-shares\", { params: ids })\n },\n },\n sims: {\n deleteSim(simId: number): Promise<{ deleted: boolean }> {\n return axios.delete(`/admin/sims/${simId}`)\n },\n createSim(\n params: Omit<SimCreateUpdatePayload, \"cameraId\">\n ): Promise<{ success: boolean }> {\n return axios.post(\"/admin/sims\", params)\n },\n updateSim(\n simId: number,\n params: CameraShareRequestPayload\n ): Promise<{ success: boolean }> {\n return axios.patch(`/admin/sims/${simId}`, params)\n },\n getSims(params: {\n params: Partial<SimsQueryParams>\n }): Promise<PaginatedItems<Sim[]>> {\n return axios.get(\"/admin/sims\", params)\n },\n getSimProviders() {\n return axios.get(\"/admin/sim-providers\")\n },\n getBillPayers() {\n return axios.get(\"/admin/sims/bill-payers\")\n },\n },\n sms: {\n sendSms(number: string, params: SendSmsPayload): Promise<SendSmsResponse> {\n return axios.post(`/admin/sims/${number}/sms`, params)\n },\n getSimHistory(number: string): Promise<SmsHistoryResponse> {\n return axios.get(`/admin/sims/${number}/sms`)\n },\n getSms(params: {\n params: Partial<SmsQueryParams>\n }): Promise<PaginatedItems<Sms[]>> {\n return axios.get(\"/admin/sms\", params)\n },\n },\n progressPhotos: {\n getProgressPhotos(params: {\n params: Partial<ProgressPhotosQueryParams>\n }): Promise<PaginatedItems<ProgressPhotoItem[]>> {\n return axios.get(\"/admin/progress-photos\", params)\n },\n getProgressPhotosHistory(params: {\n params: Partial<progressPhotosHistoryQueryParams>\n }): Promise<ProgressPhotosHistory> {\n return axios.get(\"/admin/progress-photos/history\", params)\n },\n getProgressPhotoTemplate({\n id,\n }: {\n id: string\n }): Promise<{ progressPhoto: string }> {\n return axios.get(`/admin/progress-photos/history/${id}/email`)\n },\n update(\n id: string,\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<Automation> {\n return axios.patch(`/admin/progress-photos/${id}`, payload)\n },\n },\n tags: {\n index(): Promise<Tag[]> {\n return axios.get(\"/admin/tags\")\n },\n create(tag: Tag): Promise<Tag> {\n return axios.post(\"/admin/tags\", tag)\n },\n update(tag: Tag): Promise<Tag> {\n return axios.patch(`/admin/tags/${tag.id}`, tag)\n },\n delete(tag: Tag): Promise<void> {\n return axios.delete(`/admin/tags/${tag.id}`)\n },\n },\n users: {\n updateUser(\n id: number,\n params: Partial<AdminUserUpdateRequestPayload>\n ): Promise<AdminUser> {\n return axios.put(`/admin/users/${id}`, params)\n },\n getAdmins(params: {\n params: Partial<AdminQueryParams>\n }): Promise<PaginatedItems<Admin[]>> {\n return axios.get(\"/admin\", params)\n },\n deleteAdmin(email: string): Promise<void | { message: string }> {\n return axios.put(`/admin/users/${email}/revoke-admin`)\n },\n makeAdmin(email: string): Promise<void | { message: string }> {\n return axios.put(`/admin/users/${email}/grant-admin`)\n },\n deleteUser(\n email: string,\n params: { verifyEmail: string }\n ): Promise<void | { message: string }> {\n return axios.post(`/users/${email}/delete`, params)\n },\n impersonateUser(email: string): Promise<ImpersonateUserResponse> {\n return axios.post(`/admin/users/${email}/impersonate`)\n },\n getUsers(params: {\n params: Partial<AdminUserQueryParams>\n }): Promise<PaginatedItems<AdminUser>> {\n return axios.get(\"/admin/users\", params)\n },\n show(\n id: number,\n params: Record<string, unknown>\n ): Promise<UserStatsResponse> {\n return axios.get(\n `/admin/users/${id}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getProjects(id: number): Promise<UserProjectResponse> {\n return axios.get(`/admin/users/${id}/projects`)\n },\n getCameras(id: number): Promise<UserCameraResponse> {\n return axios.get(`/admin/users/${id}/cameras`)\n },\n getUserPasswordResetLink(\n email: string\n ): Promise<{ passwordResetLink: string }> {\n return axios.post(`/admin/users/${email}/password/reset`)\n },\n },\n widgets: {\n index(params: {\n params: Partial<WidgetsListRequestPayload>\n }): Promise<PaginatedItems<Widget>> {\n return axios.get(\"/admin/widgets\", params)\n },\n show(id: number): Promise<WidgetFull> {\n return axios.get(`/admin/widgets/${id}`)\n },\n update(id: number, payload: WidgetPayload): Promise<WidgetFull> {\n return axios.put(`/admin/widgets/${id}`, payload)\n },\n delete(id: number) {\n return axios.delete(`/admin/widgets/${id}`)\n },\n },\n zohoDesk: {\n searchTickets(params: Record<string, unknown>) {\n return axios.get(\"/admin/zoho/desk/tickets/search\", {\n params,\n preserveCasing: true,\n })\n },\n },\n comments: {\n index(params: {\n params: Partial<CommentsListRequestPayload>\n }): Promise<PaginatedItems<Comment>> {\n return axios.get(\"/admin/comments\", params)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { VideoWallPreset } from \"@evercam/api/types\"\n\nexport const VideoWallApi = {\n presets: {\n getProjectPresets(email: string, projectId: number) {\n const encodedEmail = btoa(email)\n\n return axios.get(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/${projectId}.json`,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n saveProjectPreset(\n email: string,\n projectId: string,\n payload: Record<string, unknown>\n ) {\n const preset = JSON.stringify({ configuration: payload.configuration })\n const presetName = payload.name\n const encodedEmail = btoa(email)\n\n return axios.patch(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/${projectId}/${presetName}.json`,\n preset,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n getGlobalPreset(email: string): Promise<VideoWallPreset> {\n const encodedEmail = btoa(email)\n\n return axios.get(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/global.json`,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n saveGlobalPreset(email: string, payload: VideoWallPreset): Promise<void> {\n const preset = JSON.stringify({ configuration: payload.configuration })\n const encodedEmail = btoa(email)\n\n return axios.patch(\n `${axios.env.firebaseVideowallUrl}/${encodedEmail}/presets/global.json`,\n preset,\n {\n transformRequest: (data, headers) => {\n // @ts-expect-error - common type string | number | undefined\n delete headers.common[\"Authorization\"]\n\n return data\n },\n }\n )\n },\n },\n}\n","import { axios } from \"./client\"\nimport {\n _360ProjectJsonResponse,\n DroneProjectJsonResponse,\n ProjectExid,\n} from \"@evercam/api/types\"\n\nexport const getFirebaseDbApi = () => axios.env.firebaseDbLink\nexport const getFirebaseStorageUrl = () => axios.env.firebaseStorageUrl\nexport const getFirebaseStorageToken = () => axios.env.firebaseStorageToken\n\nexport const _3dFirebaseApi = {\n drone: {\n getProjectInfo(\n projectExid: ProjectExid\n ): Promise<DroneProjectJsonResponse> {\n return fetch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectExid}.json`\n ).then((res) => res.json())\n },\n },\n _360: {\n getProjectInfo(projectExid: ProjectExid): Promise<_360ProjectJsonResponse> {\n return fetch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}.json`\n ).then((res) => res.json())\n },\n updateFloor(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n body: any\n ): Promise<_360ProjectJsonResponse> {\n return fetch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/dates/${dateId}/floors/${floorIndex}.json`,\n {\n method: \"PATCH\",\n body: JSON.stringify(body),\n }\n ).then((res) => res.json())\n },\n updateRoute(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n body: any\n ): Promise<any> {\n return fetch(\n `${getFirebaseDbApi()}360/${projectExid}/${dateId}/${floorIndex}/route.json`,\n {\n method: \"PATCH\",\n body: JSON.stringify(body),\n }\n ).then((res) => res.json())\n },\n async updateFeatureFlag(\n projectID: string,\n dateID: string,\n floorID: string,\n featureFlagName: string,\n value: boolean\n ): Promise<any> {\n return fetch(\n `${getFirebaseDbApi()}360/${projectID}/${dateID}/${floorID}/${featureFlagName}.json`,\n {\n method: \"PUT\",\n body: JSON.stringify(value),\n }\n ).then((res) => res.json())\n },\n async saveSteps(\n projectID: string,\n dateID: string,\n floorID: string,\n stepsValue: number\n ): Promise<any> {\n return fetch(\n `${getFirebaseDbApi()}360/${projectID}/${dateID}/${floorID}/steps.json`,\n {\n method: \"PUT\",\n body: JSON.stringify(stepsValue),\n }\n ).then((res) => res.json())\n },\n updateGPXFile(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n gpxContent: any\n ): Promise<any> {\n // Create the new GPX file to upload\n const blob = new Blob([gpxContent], { type: \"application/gpx+xml\" })\n\n // Upload the new GPX file\n const formData = new FormData()\n formData.append(\"gpxFile\", blob, \"updated-track.gpx\")\n\n return fetch(\n `${\n getFirebaseStorageUrl() +\n encodeURIComponent(\"/\" + projectExid + \"/\") +\n dateId +\n encodeURIComponent(\"/\" + floorIndex + \"/route/track.gpx\")\n }?alt=media&token=${getFirebaseStorageToken()}`,\n {\n method: \"POST\",\n body: formData,\n }\n )\n },\n },\n forge: {\n async getProjectInfo(projectExid: ProjectExid): Promise<any> {\n return fetch(\n `${getFirebaseDbApi()}data/projects/forge/${projectExid}.json`\n ).then((res) => res.json())\n },\n },\n}\n","import humps from \"humps\"\n\nexport type Falsy = \"\" | null | undefined | false\n\nexport interface QueryParams {\n [k: string]: string | number | boolean | string[] | Falsy\n}\n\nexport const toQueryString = <T extends Record<string, unknown>>(\n paramsObject: T | QueryParams = {},\n { forceSnakeCase = true, forceArrayBrackets = false } = {}\n) => {\n if (Object.keys(paramsObject).length === 0) {\n return\n }\n let params = { ...paramsObject }\n if (forceSnakeCase) {\n params = humps.decamelizeKeys(paramsObject) as QueryParams\n }\n\n return Object.entries(params).reduce((acc, [param, value], index) => {\n let encodedParam = \"\"\n if (\n [\"\", null, undefined]?.includes(value as string | null | undefined) ||\n (Array.isArray(value) && value.length === 0)\n ) {\n return acc\n } else if (value && typeof value === \"object\") {\n encodedParam = Object.entries(value).reduce((_acc, [key, v], i) => {\n let paramName = param\n if (isNaN(Number.parseInt(key))) {\n paramName = `${param}[${key}]`\n } else if (Array.isArray(value) && forceArrayBrackets) {\n paramName = `${param}[]`\n }\n\n return `${_acc}${i > 0 ? \"&\" : \"\"}${paramName}=${encodeURIComponent(v)}`\n }, \"\")\n } else {\n encodedParam = `${param}=${encodeURIComponent(\n value as string | number | boolean\n )}`\n }\n\n return `${acc}${index > 0 ? \"&\" : \"\"}${encodedParam}`\n }, \"\")\n}\n\nexport function queryStringToObject(queryString = \"\"): QueryParams {\n const entries = [\n ...new URLSearchParams(\n queryString.indexOf(\"#\") > -1 ? queryString.split(\"#\")[0] : queryString\n ).entries(),\n ].filter(([, value]) => value)\n\n return entries.reduce<QueryParams>((acc, [key, value]) => {\n const isSingleParam =\n (queryString.match(new RegExp(`(?:^|[?&])${key}=`, \"g\")) || []).length <=\n 1\n if (isSingleParam) {\n return { ...acc, [key]: value }\n }\n\n if (acc[key]) {\n return {\n ...acc,\n [key]: [...(acc[key] as string[]), value],\n }\n }\n\n return { ...acc, [key]: [value] }\n }, {})\n}\n","import { axios } from \"./client\"\nimport { toQueryString } from \"../utils\"\nimport {\n AnprQueryParams,\n AnprEvent,\n EventCountRequestPayload,\n EventCountResponsePayload,\n EventsExportRequestParameters,\n EventsRequestPayload,\n EventsResponsePayload,\n GateReportROI,\n PaginatedItems,\n GateReportVerifiedDay,\n ProjectExid,\n CameraExid,\n AnprCountsQueryParams,\n AnprCount,\n AnprBasedGateReportExportRequestParams,\n GateReportResponsePayload,\n GatReportRequestPayload,\n AnalyticsParameters,\n VerifiedDaysQueryParams,\n EventUpdateRequestPayload,\n VerifyDayUpdateRequestPayload,\n ProcessedDaysQueryParams,\n GateReportEventType,\n DateTime,\n RoisQueryParams,\n GateReportROICreateRequestPayload,\n SegmentsSimilaritySearchParams,\n DetectionsFilters,\n TrackingsByLabel,\n SegmentsByLabel,\n DetectionsCountsParams,\n DetectionsPresenceByLabel,\n SmartSearchQueryParams,\n SavedQuery,\n DateType,\n DetectionsRequestParams,\n DetectionsGroup,\n DetectionsCountsByPeriod,\n DetectionsExportRequestParams,\n SegmentsFilters,\n DownloadFileType,\n SmartSearchQuery,\n Schedule,\n} from \"@evercam/api/types\"\nimport type { AxiosPromise, AxiosRequestConfig } from \"axios\"\nimport { VEHICLE_TYPE_IDS } from \"@evercam/api/types\"\nimport {\n CreateCoolifyAppRequestPayload,\n SaveCoolifyAppRequestPayload,\n} from \"@/types/coolify\"\n\nexport const getAiApiUrl = () => axios.env.aiApiUrl\n\nexport const AiApi = {\n analyticsParameters: {\n getParameters(\n cameraId: CameraExid,\n params: Record<string, unknown> = {}\n ): Promise<AnalyticsParameters> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraId}/analytics-parameters`,\n {\n params,\n }\n )\n },\n createParameters(\n params: Omit<AnalyticsParameters, \"id\">\n ): Promise<AnalyticsParameters> {\n return axios.post(`${getAiApiUrl()}/cameras/analytics-parameters`, params)\n },\n updateParameters({\n updatedBy,\n id,\n ...payload\n }: Partial<AnalyticsParameters> & {\n updatedBy: string\n }): Promise<AnalyticsParameters> {\n return axios.patch(\n `${getAiApiUrl()}/cameras/analytics-parameters/${id}?${toQueryString({\n updatedBy,\n })}`,\n payload\n )\n },\n },\n anpr: {\n exportAnprLegacyEvents(projectExid: ProjectExid, params: AnprQueryParams) {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/anpr/export?${toQueryString(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n getAnprEvents(\n projectExid: ProjectExid,\n params: AnprQueryParams\n ): Promise<PaginatedItems<AnprEvent>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr?${toQueryString(params)}`\n )\n },\n getAnprCounts(\n projectExid: ProjectExid,\n payload: AnprCountsQueryParams\n ): Promise<AnprCount[]> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr/counts?${toQueryString(\n payload\n )}`\n )\n },\n updateAnprEvent(anprEventId: string, eventBody: Record<string, unknown>) {\n return axios.patch(`${getAiApiUrl()}/projects/anpr/${anprEventId}`, {\n ...eventBody,\n })\n },\n bulkUpdateAnprRecords(\n anprEventsIds: number[],\n action: \"is_plate\" | \"not_plate\" | \"is_duplicate\" | \"not_duplicate\"\n ) {\n return axios.patch(\n `${getAiApiUrl()}/projects/anpr/update/status?${toQueryString({\n anprEventsIds,\n action,\n })}`\n )\n },\n exportAnprEvents(\n projectExid: string,\n params: AnprBasedGateReportExportRequestParams\n ): AxiosPromise<string> {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/anpr/events/export?${toQueryString<AnprBasedGateReportExportRequestParams>(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n },\n gateReport: {\n getLastVerified(params: Record<string, unknown>) {\n return axios.get(\n `${getAiApiUrl()}/projects/gate-report/last-verified`,\n params\n )\n },\n deleteEvent(id: number, params: Record<string, unknown>) {\n return axios.delete(\n `${getAiApiUrl()}/projects/events/${id}?${toQueryString(params)}`\n )\n },\n dismissEvents(params: Record<string, unknown>) {\n return axios.delete(\n `${getAiApiUrl()}/projects/events?${toQueryString(params)}`\n )\n },\n exportEvents(projectExid: string, params: EventsExportRequestParameters) {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/gate-report/events/export?${toQueryString<EventsExportRequestParameters>(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n exportEventsProgress(projectExid: string, params: { exportDate: string }) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/events/export/progress?${toQueryString(\n params\n )}`\n )\n },\n\n generateAnprThumbnail(cameraExid: CameraExid, captureTime: DateTime) {\n return axios.post(\n `${getAiApiUrl()}/cameras/${cameraExid}/anpr/${captureTime}/snapshot/generate`,\n {},\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n )\n },\n\n getAllEvents(\n projectExid: ProjectExid,\n params: EventsRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<EventsResponsePayload> {\n if (!params.vehicleTypes) {\n params.vehicleTypes = VEHICLE_TYPE_IDS\n }\n if (!params.truckTypes) {\n params.vehicleTypes = VEHICLE_TYPE_IDS\n }\n if (!params.camerasExid) {\n params.camerasExid = params.cameras\n }\n\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/events?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n getEventCounts(\n projectExid: string,\n payload: EventCountRequestPayload = {},\n extraParams?: AxiosRequestConfig\n ): Promise<EventCountResponsePayload> {\n if (!payload.vehicleTypes) {\n payload.vehicleTypes = VEHICLE_TYPE_IDS\n }\n\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/project-stats?${toQueryString(\n payload\n )}`,\n {\n ...(extraParams || {}),\n }\n )\n },\n getVerifiedDays(\n projectExid: ProjectExid,\n params: Partial<VerifiedDaysQueryParams>,\n extraParams = {}\n ): Promise<PaginatedItems<GateReportVerifiedDay>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/verified-days?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n updateEventById(\n eventId: number,\n {\n updatedBy,\n payload,\n }: {\n updatedBy: string\n payload: Partial<EventUpdateRequestPayload>\n }\n ) {\n return axios.patch(\n `${getAiApiUrl()}/projects/events/${eventId}?${toQueryString({\n updatedBy,\n })}`,\n payload\n )\n },\n verifyDay(params: VerifyDayUpdateRequestPayload) {\n return axios.post(\n `${getAiApiUrl()}/projects/gate-report/verified-days`,\n params\n )\n },\n regenerateThumbnail(id: number, params: { cameraExid: string }) {\n return axios.put(\n `${getAiApiUrl()}/projects/gate-report/event-thumbnail/render/${id}?${toQueryString(\n params\n )}`,\n {\n method: \"PUT\",\n }\n )\n },\n getDailyStatus(\n projectExid: string,\n params: Partial<ProcessedDaysQueryParams> = {}\n ) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/processed-days`,\n { params }\n )\n },\n getEventThumbnail({\n cameraExid,\n eventType,\n eventTime,\n token,\n }: {\n cameraExid: string\n eventType: GateReportEventType\n eventTime: DateTime\n token: string\n }) {\n return `${getAiApiUrl()}/cameras/${cameraExid}/gate-report/${eventType}/${eventTime}/thumbnail?authorization=${token}`\n },\n getEventSnapshot({\n cameraExid,\n eventType,\n eventTime,\n token,\n }: {\n cameraExid: string\n eventType: GateReportEventType\n eventTime: DateTime\n token: string\n }) {\n return `${getAiApiUrl()}/cameras/${cameraExid}/gate-report/${eventType}/${eventTime}/snapshot?authorization=${token}`\n },\n getEvents(\n projectExid: ProjectExid,\n params: GatReportRequestPayload,\n extraParams: AxiosRequestConfig = {}\n ): Promise<GateReportResponsePayload> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/events?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n getCounts(\n projectExid: string,\n payload: EventCountRequestPayload = {},\n extraParams: AxiosRequestConfig = {}\n ): Promise<EventCountResponsePayload> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/counts?${toQueryString(\n payload\n )}`,\n extraParams\n )\n },\n getGateReportApplications(projectExid: string, anprCameraExid: string) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${anprCameraExid}/gate-report/apps`\n )\n },\n getGateReportProjectsInfos(params: Record<string, unknown>) {\n return axios.get(\n `${getAiApiUrl()}/projects/gate-report/get-projects-info`,\n params\n )\n },\n },\n brainTool: {\n getObjectDetectionsResults(payload = {}) {\n return axios.post(`${getAiApiUrl()}/ai-models/object-detection`, payload)\n },\n getSegments(payload = {}) {\n return axios.post(`${getAiApiUrl()}/ai-models/segment`, payload)\n },\n },\n roi: {\n getROIs(\n projectExid: string,\n params: Partial<RoisQueryParams> = {}\n ): Promise<GateReportROI[]> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/rois?${toQueryString(params)}`\n )\n },\n createROI(params: GateReportROICreateRequestPayload) {\n return axios.post(`${getAiApiUrl()}/projects/rois`, params)\n },\n updateROI({\n updatedBy,\n roi,\n }: {\n updatedBy: string\n roi: GateReportROICreateRequestPayload\n }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/rois/${roi.id}?${toQueryString({\n updatedBy,\n })}`,\n roi\n )\n },\n deleteROI({ id, updatedBy }: { id: number; updatedBy: string }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/rois/${id}?${toQueryString({\n updatedBy,\n })}`,\n { isactive: false, note: \"delete roi\" }\n )\n },\n },\n detections: {\n async getDetections({ projectExid, ...params }: DetectionsRequestParams) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections?${toQueryString(\n params\n )}`\n )\n },\n async getDetectionsCounts({\n projectExid,\n ...params\n }: DetectionsRequestParams): Promise<DetectionsCountsByPeriod> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/counts?${toQueryString(\n params\n )}`\n )\n },\n async getDetectionsByTimestamp({\n projectExid,\n ...params\n }: DetectionsRequestParams): Promise<PaginatedItems<DetectionsGroup>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/timestamps?${toQueryString(\n params\n )}`\n )\n },\n async getSimilarSegmentsInTimeIntervals({\n cameraExid,\n iouThreshold = 0.8,\n ...params\n }: SegmentsSimilaritySearchParams) {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/segments/appearance-from-points`,\n {\n params: {\n cameraExid,\n iouThreshold,\n ...params,\n },\n }\n )\n },\n async getDetectionsTracking(\n projectExid: ProjectExid,\n params: DetectionsFilters\n ): Promise<TrackingsByLabel> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/trackings?${toQueryString(\n params\n )}`\n )\n },\n async getSegmentsMasks(\n cameraExid: CameraExid,\n params: SegmentsFilters\n ): Promise<SegmentsByLabel> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/segments/masks`,\n {\n params,\n }\n )\n },\n async getDetectionsPresenceDateIntervals({\n projectExid,\n ...params\n }: DetectionsCountsParams): Promise<DetectionsPresenceByLabel> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/presence-intervals?${toQueryString(\n params\n )}`\n )\n },\n async requestExport({\n projectExid,\n ...params\n }: DetectionsExportRequestParams) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/timestamps/export?${toQueryString(\n params\n )}`,\n { responseType: \"blob\" }\n )\n },\n },\n siteAnalytics: {\n smartSearch({\n cameraExid,\n payload,\n fromDate,\n toDate,\n page = 1,\n pageSize = 20,\n }: {\n cameraExid: CameraExid\n payload: Record<string, unknown>\n fromDate?: string\n toDate?: string\n page?: number\n pageSize?: number\n }) {\n let url = `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search?page=${page}&page_size=${pageSize}`\n if (fromDate && toDate) {\n url += `&from_date=${fromDate}&to_date=${toDate}`\n }\n\n return axios.post(url, payload)\n },\n saveQuery(payload: SmartSearchQueryParams) {\n return axios.post(\n `${getAiApiUrl()}/cameras/${\n payload.cameraExid\n }/advanced_search/queries`,\n payload\n )\n },\n getQueries(\n cameraExid: CameraExid,\n params: { name?: string }\n ): Promise<SavedQuery[]> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries`,\n {\n params,\n }\n )\n },\n getQueryById(\n cameraExid: CameraExid,\n queryId: number\n ): Promise<SmartSearchQueryParams> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries/${queryId}`\n )\n },\n updateQuery(\n cameraExid: CameraExid,\n queryId: number,\n payload: Partial<SavedQuery>\n ) {\n return axios.put(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries/${queryId}`,\n payload\n )\n },\n deleteQuery(cameraExid: CameraExid, queryId: number) {\n return axios.delete(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries/${queryId}`,\n {}\n )\n },\n getProcessedTimes({\n projectExid,\n cameraExids,\n granularity = \"day\",\n endDate,\n startDate,\n }: {\n projectExid: string\n cameraExids: string[]\n granularity?: \"day\" | \"hour\"\n startDate?: DateType\n endDate?: DateType\n }): Promise<Record<string, string[]>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/processed_times`,\n {\n params: {\n camera_exids: cameraExids,\n granularity,\n start_date: startDate,\n end_date: endDate,\n },\n preserveCasing: true,\n }\n )\n },\n exportResultsData({\n cameraExid,\n fromDate,\n toDate,\n query,\n fileType = DownloadFileType.Csv,\n directDownload = true,\n payload,\n }: {\n cameraExid: CameraExid\n fromDate?: DateType\n toDate?: DateType\n query: string\n fileType: DownloadFileType\n directDownload?: boolean\n payload: {\n req: SmartSearchQuery\n timeSchedule?: Schedule\n columns?: string[]\n }\n }) {\n return axios.post(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/export`,\n payload,\n {\n responseType: \"blob\",\n params: {\n fromDate,\n toDate,\n query,\n fileType,\n directDownload,\n },\n }\n )\n },\n },\n coolify: {\n getCoolifyServers() {\n return axios.get(`${getAiApiUrl()}/coolify/servers`)\n },\n createAppOnCoolify(payload: CreateCoolifyAppRequestPayload) {\n return axios.post(\n `${getAiApiUrl()}/projects/cameras/${\n payload.cameraExid\n }/anpr/create_app?${toQueryString(payload)}`\n )\n },\n saveAppOnCoolify(\n projectExid: string,\n cameraExid: string,\n payload: SaveCoolifyAppRequestPayload\n ) {\n return axios.post(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${cameraExid}/gate_report/apps`,\n payload\n )\n },\n updateApp({\n appUuid,\n appId,\n payload,\n cameraExid,\n projectExid,\n }: {\n projectExid: string\n cameraExid: string\n appId: string\n appUuid: string\n payload: Partial<SaveCoolifyAppRequestPayload>\n }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${cameraExid}/gate_report/apps/${appId}?app_uuid=${appUuid}`,\n payload\n )\n },\n deleteApp({\n appUuid,\n appId,\n cameraExid,\n projectExid,\n }: {\n projectExid: string\n cameraExid: string\n appId: string\n appUuid: string\n }) {\n return axios.delete(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${cameraExid}/gate_report/apps/${appId}?app_uuid=${appUuid}`\n )\n },\n startService(serviceId: string) {\n return axios.post(`${getAiApiUrl()}/coolify/services/${serviceId}/start`)\n },\n pauseService(serviceId: string) {\n return axios.post(`${getAiApiUrl()}/coolify/services/${serviceId}/stop`)\n },\n restartService(serviceId: string) {\n return axios.post(\n `${getAiApiUrl()}/coolify/services/${serviceId}/restart`\n )\n },\n },\n}\n","import axios from \"axios\"\n\nexport const WebRtcApi = {\n webRtc: {\n requestIceServers({ url, token }: { url: string; token: string }) {\n return axios({\n url,\n method: \"OPTIONS\",\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n },\n sendLocalOffer({\n url,\n token,\n data,\n }: {\n url: string\n token: string\n data: {\n sdp: string\n type: string\n }\n }) {\n return axios({\n url,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/sdp\",\n Authorization: `Bearer ${token}`,\n },\n data,\n })\n },\n sendLocalCandidates({\n url,\n token,\n data,\n tag,\n }: {\n url: string\n token: string\n data: Record<string, unknown>\n tag: string\n }) {\n return axios({\n url,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/trickle-ice-sdpfrag\",\n \"If-Match\": tag,\n Authorization: `Bearer ${token}`,\n },\n data,\n })\n },\n },\n}\n","import { axios } from \"./client\"\nimport {\n CurrentWeatherRequestPayload,\n HistoryWeatherRequestPayload,\n WeatherDataResponse,\n WeatherResponsePayload,\n} from \"@evercam/api/types\"\nimport { AxiosRequestConfig } from \"axios\"\n\nexport const WeatherApi = {\n current(\n projectExid: string,\n payload: CurrentWeatherRequestPayload\n ): Promise<WeatherResponsePayload> | undefined {\n return axios.get(`/projects/${projectExid}/weather/current`, {\n params: payload,\n })\n },\n historical(\n projectExid: string,\n payload: HistoryWeatherRequestPayload\n ): Promise<WeatherResponsePayload> | undefined {\n return axios.get(`/projects/${projectExid}/weather`, { params: payload })\n },\n report(\n projectExid: string,\n payload: HistoryWeatherRequestPayload,\n config?: AxiosRequestConfig\n ): Promise<{ data: WeatherDataResponse[] }> | undefined {\n return axios.get(`/projects/${projectExid}/weather/filters`, {\n params: payload,\n ...config,\n })\n },\n}\n","import { axios } from \"./client\"\nimport type {\n CameraExid,\n CopilotConversation,\n CopilotMessage,\n CopilotMessageStep,\n SegmentsCountsParams,\n FeedbackPayload,\n GrafanaKitMetrics,\n LabsPaginationParams,\n LuminanceReading,\n PaginatedItems,\n SegmentsPresenceByLabel,\n ActiveUsersResponsePayload,\n ActiveUsersRequestPayload,\n} from \"@evercam/api/types\"\nimport { GrafanaMetricId, KitMetricPeriod } from \"@evercam/api/types\"\n\nexport function getLabsBaseUrl() {\n const labsPrNumber = /labs-(\\d+)/g.exec(window.location.href)?.[1]\n\n return labsPrNumber\n ? `https://${labsPrNumber}.labs.evercam.io`\n : axios.env.evercamLabsUrl\n}\n\nexport const EvercamLabsApi = {\n posthog: {\n getEvents(params: any): Promise<PaginatedItems<any>> {\n return axios.get(`${getLabsBaseUrl()}/posthog/events`, {\n params,\n })\n },\n getUsers(params: any): Promise<any> {\n return axios.get(`${getLabsBaseUrl()}/posthog/users`, {\n params,\n })\n },\n getActiveUsers(\n params: ActiveUsersRequestPayload\n ): Promise<ActiveUsersResponsePayload> {\n return axios.get(`${getLabsBaseUrl()}/posthog/active-users`, {\n params,\n preserveCasing: true,\n })\n },\n },\n copilot: {\n async getAllConversations(\n params: LabsPaginationParams & {\n cameraExid?: string\n projectExid?: string\n user?: string\n }\n ): Promise<PaginatedItems<CopilotConversation>> {\n return axios.get(`${getLabsBaseUrl()}/copilot/conversations`, {\n params,\n preserveCasing: true,\n })\n },\n async getOneConversation(\n conversationId: number\n ): Promise<PaginatedItems<CopilotConversation>> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}`,\n {\n preserveCasing: true,\n }\n )\n },\n async getConversationMessages(\n conversationId: number,\n params: LabsPaginationParams\n ): Promise<PaginatedItems<CopilotMessage>> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}/messages`,\n { params, preserveCasing: true }\n )\n },\n async getMessageSteps(\n message: CopilotMessage\n ): Promise<CopilotMessageStep[]> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${\n message.conversationId\n }/messages/${message.id}/steps`\n )\n },\n async submitMessageFeedback<T>({\n conversationId,\n messageId,\n ...params\n }: FeedbackPayload<T>) {\n return axios.post(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}/messages/${messageId}/feedback`,\n params,\n {\n preserveCasing: true,\n }\n )\n },\n },\n detections: {\n async getSegmentsDateIntervals({\n cameraExid,\n fromDate,\n toDate,\n precision,\n }: SegmentsCountsParams): Promise<SegmentsPresenceByLabel> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/segments/presence-intervals`,\n {\n params: { fromDate, toDate, precision },\n preserveCasing: true,\n }\n )\n },\n },\n googleCloudStorage: {\n listFiles(\n prefix: string = \"\"\n ): Promise<{ files: string[]; folders: string[] }> {\n return axios.get(\n `${getLabsBaseUrl()}/gc-storage/buckets/evercam-labs/files`,\n {\n params: {\n prefix,\n },\n preserveCasing: true,\n }\n )\n },\n getSignedUrl(fileName: string): Promise<{ url: string }> {\n return axios.get(\n `${getLabsBaseUrl()}/gc-storage/buckets/evercam-labs/files/signed-url`,\n {\n params: {\n fileName,\n },\n preserveCasing: true,\n }\n )\n },\n },\n luminance: {\n getReadings(params: {\n cameraExid: CameraExid\n fromDate: string\n toDate: string\n }): Promise<LuminanceReading[]> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${\n params.cameraExid || \"echel-mdqur\"\n }/luminance/readings`,\n {\n params: {\n fromDate: params.fromDate,\n toDate: params.toDate,\n },\n preserveCasing: true,\n }\n )\n },\n },\n kits: {\n getMetrics(\n kitId: string,\n metrics: GrafanaMetricId[],\n period: KitMetricPeriod = KitMetricPeriod.Last24Hours\n ): Promise<GrafanaKitMetrics> {\n return axios.get(`${getLabsBaseUrl()}/kits/${kitId}/metrics`, {\n params: {\n metrics,\n from: period,\n },\n preserveCasing: true,\n })\n },\n },\n}\n","import { axios } from \"./client\"\nimport type { AxiosRequestConfig } from \"axios\"\nimport { queryStringToObject, toQueryString } from \"@evercam/api/utils\"\nimport type {\n AconexAuthCallbackParams,\n AconexEditedImageUploadRequestPayload,\n AconexUserProjectsResponsePayload,\n ApiCredentials,\n AutodeskFolderResponsePayload,\n AutodeskProjectsResponsePayload,\n AutodeskTokenResponsePayload,\n AutodeskUploadSnapshotPayload,\n AutodeskUserHubsResponsePayload,\n AvailableDaysRequestPayload,\n AvailableDaysResponsePayload,\n AvailableHoursRequestPayload,\n AvailableHoursResponsePayload,\n BatteryReading,\n BatteryVoltage,\n BimCompareExportRequestPayload,\n BimCreationPayload,\n BIMLayer,\n BIMLayerPostPayload,\n BimLayersQueryParams,\n BimModelRequestPayload,\n BimModelResponsePayload,\n BimPendingImage,\n BimSnapshotRequestPayload,\n BimSnapshotResponsePayload,\n BimUploadCameraParameters,\n CameraExid,\n CameraLogsResponsePayload,\n CamerasResponsePayload,\n CameraStatusLog,\n CameraUpdateRequestPayload,\n CheckCameraPortPayload,\n Comment,\n CommentCreationRequestPayload,\n CommentsRequestPayload,\n Company,\n CompanyProject,\n CompanyKit,\n CompanyUser,\n Compare,\n CompareRequestPayload,\n ConnectorResponsePayload,\n Credentials,\n FetchCameraQueryParams,\n GoogleAuthRequestPayload,\n LoginRequestPayload,\n LoginResponsePayload,\n Logo,\n LogoutParams,\n Media,\n MediaCreateRequestPayload,\n MediaFilterQueryParams,\n MediaUpdateRequestPayload,\n MediaUsersResponsePayload,\n NearestSnapshotRequestPayload,\n NearestSnapshotResponsePayload,\n PaginatedItems,\n PendingBimImagesParams,\n ProcessPendingImagesBimParams,\n ProcoreEditedImageUploadRequestPayload,\n ProcoreObservationFormRequestPayload,\n ProcoreObservationTypesResponsePayload,\n ProcoreProjectsAlbumsPayload,\n ProcoreProjectRequestPayload,\n ProcoreUserCompaniesResponsePayload,\n ProcoreCompanyRequestPayload,\n ProcoreUserProjectsResponsePayload,\n ProcoreUserProjectPermissionsResponsePayload,\n ProcoreObservationAssignee,\n ProcoreObservationDistributionMember,\n ProcoreObservationTrades,\n ProcoreObservationLocation,\n ProcoreObservationSpecificationSection,\n ProcoreObservationForm,\n ProgressPhotosCreateUpdateRequestPayload,\n ProgressPhotosResponsePayload,\n ProgressPhotosUnSubscribeParams,\n ProjectBatteryReading,\n ProjectExid,\n ProjectLogoResponsePayload,\n ProjectResponsePayload,\n ProjectShareResponse,\n RemotePasswordUpdateRequestPayload,\n ResendShareRequestPayload,\n SessionsListRequestPayload,\n Share,\n ShareCreateRequestPayload,\n ShareCreateResponsePayload,\n ShareDeletionRequestPayload,\n SharedUsersResponsePayload,\n ShareProjectCamerasRequestPayload,\n UpdateUserRestrictionPayload,\n UpdateCameraRestrictionPayload,\n ShareRequestsResponsePayload,\n SharesResponsePayload,\n SignupUserRequestPayload,\n Snapshot,\n SnapshotRangeRequestPayload,\n SnapshotRangeResponsePayload,\n ThumbnailData,\n TimelapseCreationRequestPayload,\n TimelapseCreationResponsePayload,\n TimelapseSnapshotRequestPayload,\n TimelapseSnapshotResponsePayload,\n UpdatePasswordRequestPayload,\n UserDeleteRequestPayload,\n UserSession,\n UserUpdateRequestPayload,\n VoyageControlConnectorPayload,\n XWeatherCreatePayload,\n XWeatherResponse,\n Widget,\n WidgetFull,\n WidgetPayload,\n WidgetsListRequestPayload,\n Camera,\n ProcoreNextObservationAvailableNumber,\n} from \"@evercam/api/types\"\n\nexport const EvercamApi = {\n apiStatus: {\n getApiStatus() {\n return axios.get(\"/status\")\n },\n },\n users: {\n signup(payload: SignupUserRequestPayload) {\n return axios.post(\"/users\", payload)\n },\n fetchAccessFeatures(email: string): Promise<{ features: string[] }> {\n return axios.get(`/users/${email}/features`)\n },\n impersonationLogin(token: string) {\n return axios.post(`/auth/impersonate/${token}`)\n },\n fetchLoginOptions(email: string): Promise<{ options: any[] }> {\n return axios.get(`/auth/options?email=${email}`)\n },\n fetchSignupOptions(email: string): Promise<{ options: any[] }> {\n const url = \"/auth/signup_options\" + (email ? `?email=${email}` : \"\")\n\n return axios.get(url)\n },\n fetchProviderConfig(provider: string): Promise<any> {\n return axios.get(`/auth/provider/${provider}`)\n },\n login(params: LoginRequestPayload): Promise<LoginResponsePayload> {\n return axios.post(\"/auth/login\", toQueryString(params))\n },\n loginWithApiCredentials(\n apiId: String,\n apiKey: String\n ): Promise<LoginResponsePayload> {\n return axios.post(`/auth/login?api_id=${apiId}&api_key=${apiKey}`)\n },\n loginWithWidgetCredentials(\n widgetId: String,\n widgetKey: String\n ): Promise<LoginResponsePayload> {\n return axios.post(\n `/auth/login?widget_id=${widgetId}&widget_key=${widgetKey}`\n )\n },\n loginWithProvider(\n provider: string,\n payload: GoogleAuthRequestPayload\n ): Promise<LoginResponsePayload> {\n return axios.post(`/auth/${provider}`, payload)\n },\n show(email: string): Promise<{ users: LoginResponsePayload[] }> {\n return axios.get(`/users/${email}`)\n },\n logout(\n payload: LogoutParams,\n config: Partial<AxiosRequestConfig> = {}\n ): Promise<void> {\n return axios.delete(\"/auth/logout\", { params: payload, ...config })\n },\n resetPassword(email: string): Promise<{ message: string }> {\n return axios.post(`/users/${email}/password/reset`)\n },\n getCredentials(): Promise<Credentials> {\n return axios.get(\"/auth/credentials\")\n },\n updatePassword(\n user: string,\n payload: UpdatePasswordRequestPayload\n ): Promise<{ message: string }> {\n return axios.patch(`/users/${user}/password`, payload)\n },\n remotePasswordUpdate(\n email: string,\n payload: RemotePasswordUpdateRequestPayload\n ): Promise<{ message: string }> {\n return axios.patch(`/users/${email}/password/update`, payload)\n },\n confirm(email: string, payload: any): Promise<LoginResponsePayload> {\n return axios.post(`/users/${email}/confirm`, payload)\n },\n deleteActiveSession(sessionId: string, payload: any = {}): Promise<void> {\n return axios.delete(`/users/active-sessions/${sessionId}`, {\n params: payload,\n })\n },\n getActiveSessions(\n payload: SessionsListRequestPayload\n ): Promise<PaginatedItems<UserSession>> {\n return axios.get(\"/users/active-sessions\", {\n params: payload,\n })\n },\n update(\n email: string,\n params: Partial<UserUpdateRequestPayload> = {}\n ): Promise<{ users: LoginResponsePayload[] }> {\n return axios.patch(`/users/${email}`, params)\n },\n delete(email: string, params: UserDeleteRequestPayload): Promise<void> {\n return axios.post(`/users/${email}/delete`, params)\n },\n fetchPermissions(): Promise<{ permissions: string[] }> {\n return axios.get(\"/users/permissions\")\n },\n },\n notifications: {\n get() {\n return axios.get(\"/notifications\")\n },\n markAllAsRead(id: string) {\n return axios.patch(`/notifications/${id}`)\n },\n markAsRead() {\n return axios.post(\"/notifications/mark-as-read\")\n },\n },\n bim: {\n getBimSnapshot(\n cameraId: string,\n dateTime: string,\n payload: Partial<BimSnapshotRequestPayload>,\n extraParams?: AxiosRequestConfig\n ): Promise<BimSnapshotResponsePayload> {\n return axios.get(`/cameras/${cameraId}/bim/${dateTime}`, {\n params: payload,\n ...(extraParams || {}),\n })\n },\n getBimModel(\n cameraId: string,\n payload: BimModelRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<BimModelResponsePayload> {\n return axios.get(`/cameras/${cameraId}/bim`, {\n params: payload,\n ...(extraParams || {}),\n })\n },\n pendingBimImages(\n cameraId: string,\n params: PendingBimImagesParams\n ): Promise<BimPendingImage[]> {\n return axios.get(`/cameras/${cameraId}/bim/pending`, { params })\n },\n processPendingImages(\n cameraId: string,\n params: Partial<ProcessPendingImagesBimParams>\n ): Promise<void> {\n return axios.post(`/cameras/${cameraId}/bim/pending`, params)\n },\n createBim(cameraId: string, params: BimCreationPayload): Promise<void> {\n return axios.post(`/cameras/${cameraId}/bim`, params)\n },\n getCameraParameters(\n cameraId: string,\n params: ApiCredentials\n ): Promise<BimUploadCameraParameters> {\n return axios.get(`/cameras/${cameraId}/bim/camera-parameters`, {\n params,\n })\n },\n uploadCameraParameters(\n cameraId: string,\n params: BimUploadCameraParameters\n ): Promise<BimUploadCameraParameters> {\n return axios.post(`/cameras/${cameraId}/bim/camera-parameters`, params)\n },\n exportCompare(\n projectExid: string,\n payload: BimCompareExportRequestPayload\n ): Promise<Compare> {\n return axios.post(\n `/projects/${projectExid}/media-hub/compares/bim-compares`,\n payload\n )\n },\n },\n cameras: {\n getCameras(params: {\n params?: Partial<FetchCameraQueryParams>\n config?: AxiosRequestConfig\n }): Promise<CamerasResponsePayload> {\n return axios.get(\"/cameras\", { params, ...params.config })\n },\n getCameraById(\n cameraId: string,\n params?: ApiCredentials\n ): Promise<CamerasResponsePayload> {\n return axios.get(`/cameras/${cameraId}?${toQueryString(params)}`)\n },\n getCameraLastPublicNote(\n cameraId: string\n ): Promise<CameraLogsResponsePayload> {\n return axios.get(`/cameras/${cameraId}/last-public-note`)\n },\n portCheck(payload: {\n params: CheckCameraPortPayload\n }): Promise<CheckCameraPortPayload & { open: boolean }> {\n return axios.get(\"/cameras/port-check\", payload)\n },\n getNvrStreamingToken({\n cameraExid,\n token,\n }: {\n cameraExid: string\n token: string\n }): Promise<string> {\n return fetch(\n `${axios.env.baseUrl}/cameras/${cameraExid}/hls?authorization=${token}`\n ).then(\n ({ url }) => queryStringToObject(url.split(\"?\")[1] || \"\").access_token\n ) as Promise<string>\n },\n getCameraStatusLogs(\n exid: string,\n params: {\n params: {\n from: string\n to: string\n }\n }\n ): Promise<CameraStatusLog[]> {\n return axios.get(`/cameras/${exid}/health`, params)\n },\n updateCamera(\n exid: string,\n params: CameraUpdateRequestPayload\n ): Promise<CamerasResponsePayload> {\n return axios.patch(`/cameras/${exid}`, params)\n },\n },\n projects: {\n index({\n params,\n config,\n }: {\n params?: ApiCredentials\n config: AxiosRequestConfig\n }): Promise<ProjectResponsePayload> {\n return axios.get(`/projects?${toQueryString(params)}`, config)\n },\n getLogos(projectId: string): Promise<ProjectLogoResponsePayload> {\n return axios.get(`/projects/${projectId}/logos`)\n },\n createLogo(\n projectId: string,\n formData: FormData\n ): Promise<Logo & { id: number }> {\n const headers = { \"Content-Type\": \"multipart/form-data\" }\n\n return axios.post(`/projects/${projectId}/logos`, formData, {\n headers,\n })\n },\n deleteLogo(projectId: string, id: number): Promise<void> {\n return axios.delete(`/projects/${projectId}/logos/${id}`)\n },\n updateLogo(projectId: string, id: number, name: string) {\n return axios.patch(\n `/projects/${projectId}/logos/${id}`,\n toQueryString({ name })\n )\n },\n updateThumbnail(\n projectExid: string,\n params: { cameraExid?: string; uploadedThumbnail?: string }\n ): Promise<{ message: string }> {\n if (params.uploadedThumbnail) {\n return axios.post(`/projects/${projectExid}/thumbnail`, {\n thumbnail: params.uploadedThumbnail,\n })\n }\n\n return axios.put(`/projects/${projectExid}/thumbnail`, {\n cameraExid: params.cameraExid,\n })\n },\n getThumbnailData(projectExid: string): Promise<ThumbnailData> {\n return axios.get(`/projects/${projectExid}/thumbnail?include_data=true`)\n },\n updateCamerasRestriction(\n projectExid: ProjectExid,\n payload: UpdateCameraRestrictionPayload\n ) {\n return axios.patch(`/projects/${projectExid}/cameras`, payload)\n },\n updatePlaceholderThumbnail(\n projectExid: string,\n params: { placeholder?: string }\n ): Promise<{ message: string }> {\n return axios.post(\n `/projects/${projectExid}/waiting-camera-placeholder`,\n params\n )\n },\n getPlaceholderThumbnailData(projectExid: string) {\n return axios.get(`/projects/${projectExid}/waiting-camera-placeholder`)\n },\n transferOwnership(\n projectExid: string,\n newOwnerId: number\n ): Promise<{ message: string }> {\n return axios.put(`/projects/${projectExid}/transfer/${newOwnerId}`)\n },\n getUsers(projectExid: string) {\n return axios.get(`/projects/${projectExid}/users`)\n },\n getCameras(projectExid: string): Promise<{ cameras: Camera[] }> {\n return axios.get(`/projects/${projectExid}/cameras`)\n },\n getCameraRefs(projectExid: string): Promise<{ cameras: Camera[] }> {\n return axios.get(`/projects/${projectExid}/camera_refs`)\n },\n },\n timelapse: {\n getSnapshotRange(\n cameraId: string,\n payload: TimelapseSnapshotRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<TimelapseSnapshotResponsePayload> {\n return axios.get(`/cameras/${cameraId}/timelapses/snapshots`, {\n params: payload,\n ...(extraParams || {}),\n })\n },\n createTimelapse(\n projectExid: string,\n payload: TimelapseCreationRequestPayload\n ): Promise<TimelapseCreationResponsePayload> {\n return axios.post(\n `/projects/${projectExid}/media-hub/timelapses`,\n payload\n )\n },\n cUpdate(\n projectExid: string,\n id: string | number,\n payload: MediaUpdateRequestPayload\n ): Promise<TimelapseCreationResponsePayload> {\n return axios.patch(\n `/projects/${projectExid}/media-hub/timelapses/${id}`,\n payload\n )\n },\n cDelete(projectExid: string, id: number): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/timelapses/${id}`)\n },\n },\n compares: {\n cCreate(\n projectExid: string,\n payload: CompareRequestPayload\n ): Promise<Compare> {\n return axios.post(`/projects/${projectExid}/media-hub/compares`, payload)\n },\n cShow(projectExid: string, id: string): Promise<Compare> {\n return axios.get(`/projects/${projectExid}/media-hub/compares/${id}`)\n },\n cUpdate(\n projectExid: string,\n id: string,\n payload: MediaUpdateRequestPayload\n ): Promise<Compare> {\n return axios.patch(\n `/projects/${projectExid}/media-hub/compares/${id}`,\n payload\n )\n },\n cDelete(projectExid: string, id: string): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/compares/${id}`)\n },\n },\n projectConnectos: {\n index(projectExid: string): Promise<Array<XWeatherResponse>> {\n return axios.get(`/projects/${projectExid}/connectors`)\n },\n },\n providers: {\n getProviders(): Promise<ConnectorResponsePayload> {\n return axios.get(\"/oauth2-tokens/providers\")\n },\n },\n aconex: {\n authenticate(payload: AconexAuthCallbackParams): Promise<void> {\n return axios.get(\"/aconex/auth/callback\", {\n params: payload,\n })\n },\n getUserProjects(): Promise<AconexUserProjectsResponsePayload> {\n return axios.get(\"/aconex/projects\")\n },\n revoke(): Promise<void> {\n return axios.post(\"/aconex/auth/revoke\")\n },\n uploadEditedSnapshot(\n projectId: number,\n payload: AconexEditedImageUploadRequestPayload\n ): Promise<void> {\n return axios.post(\n `/aconex/projects/${projectId}/upload-snapshot`,\n payload\n )\n },\n getDocumentSchema(projectId: number): Promise<void> {\n return axios.get(`/aconex/projects/${projectId}/register/schema`)\n },\n },\n procore: {\n getUserCompanies(): Promise<ProcoreUserCompaniesResponsePayload> {\n return axios.get(\"/procore/companies\")\n },\n getUserProjects(\n payload: ProcoreCompanyRequestPayload\n ): Promise<ProcoreUserProjectsResponsePayload> {\n return axios.get(\"/procore/projects\", {\n params: payload,\n })\n },\n getUserProjectPermissions(\n payload: ProcoreProjectRequestPayload\n ): Promise<ProcoreUserProjectPermissionsResponsePayload> {\n return axios.get(\"/procore/projects/permissions\", {\n params: payload,\n })\n },\n getProjectAlbums(\n payload: ProcoreProjectRequestPayload\n ): Promise<ProcoreProjectsAlbumsPayload> {\n return axios.get(\"/procore/image-categories\", {\n params: payload,\n })\n },\n uploadEditedSnapshot(\n payload: ProcoreEditedImageUploadRequestPayload\n ): Promise<void> {\n return axios.post(\"/procore/upload-snapshot\", payload)\n },\n sendRevoke(): Promise<void> {\n return axios.post(\"/users/auth/procore/revoke\")\n },\n getObservationTypes(\n payload: ProcoreProjectRequestPayload\n ): Promise<ProcoreObservationTypesResponsePayload> {\n return axios.get(\"/procore/companies/observation-types\", {\n params: payload,\n })\n },\n getObservationForm(\n payload: ProcoreObservationFormRequestPayload\n ): Promise<ProcoreObservationForm> {\n return axios.get(\"/procore/observations/form\", {\n params: payload,\n })\n },\n getNextAvailableObservationNumber(\n payload: ProcoreProjectRequestPayload\n ): Promise<ProcoreNextObservationAvailableNumber> {\n return axios.get(\"/procore/observations/next-available-number\", {\n params: payload,\n })\n },\n getAssignees(\n payload: ProcoreProjectRequestPayload\n ): Promise<Array<ProcoreObservationAssignee>> {\n return axios.get(\"/procore/observations/assignees\", {\n params: payload,\n })\n },\n getDistributionMembers(\n payload: ProcoreProjectRequestPayload\n ): Promise<Array<ProcoreObservationDistributionMember>> {\n return axios.get(\"/procore/observations/distribution-members\", {\n params: payload,\n })\n },\n createObservation(formData: FormData): Promise<void> {\n const headers = { \"Content-Type\": \"multipart/form-data\" }\n\n return axios.post(\"/procore/observations\", formData, {\n headers,\n })\n },\n getContributingBehaviors(\n payload: ProcoreCompanyRequestPayload\n ): Promise<ProcoreProjectRequestPayload> {\n return axios.get(\"/procore/companies/contributing-behaviors\", {\n params: payload,\n })\n },\n getContributingConditions(\n payload: ProcoreCompanyRequestPayload\n ): Promise<ProcoreProjectRequestPayload> {\n return axios.get(\"/procore/companies/contributing-conditions\", {\n params: payload,\n })\n },\n getTrades(\n payload: ProcoreCompanyRequestPayload\n ): Promise<Array<ProcoreObservationTrades>> {\n return axios.get(\"/procore/companies/trades\", {\n params: payload,\n })\n },\n getHazards(\n payload: ProcoreCompanyRequestPayload\n ): Promise<ProcoreProjectRequestPayload> {\n return axios.get(\"/procore/companies/hazards\", {\n params: payload,\n })\n },\n getLocations(\n payload: ProcoreProjectRequestPayload\n ): Promise<Array<ProcoreObservationLocation>> {\n return axios.get(\"/procore/projects/locations\", {\n params: payload,\n })\n },\n getSpecificationSections(\n payload: ProcoreProjectRequestPayload\n ): Promise<Array<ProcoreObservationSpecificationSection>> {\n return axios.get(\"/procore/specification-sections\", {\n params: payload,\n })\n },\n getCustomFieldOptions(\n payload: ProcoreProjectRequestPayload\n ): Promise<{ options: { [key: string]: string[] } }> {\n return axios.get(\"/procore/custom-field-options\", {\n params: payload,\n })\n },\n },\n autodesk: {\n sendRevoke(): Promise<void> {\n return axios.post(\"/users/auth/autodesk/revoke\")\n },\n getUserHubs(): Promise<AutodeskUserHubsResponsePayload> {\n return axios.get(\"/autodesk/hubs\")\n },\n getProjects(hubId: string): Promise<AutodeskProjectsResponsePayload> {\n return axios.get(`/autodesk/hubs/${hubId}/projects`)\n },\n getFolders(\n hubId: string,\n projectId: string\n ): Promise<Array<AutodeskFolderResponsePayload>> {\n return axios.get(`/autodesk/hubs/${hubId}/projects/${projectId}/folders`)\n },\n getSubFolders(\n projectId: string,\n parentFolderId: string,\n getDerivatives: Boolean\n ): Promise<Array<AutodeskFolderResponsePayload>> {\n return axios.get(\n `/autodesk/projects/${projectId}/folders/${parentFolderId}/subfolders`,\n {\n params: {\n getDerivatives,\n },\n }\n )\n },\n getFolder(\n projectId: string,\n folderId: string\n ): Promise<AutodeskFolderResponsePayload> {\n return axios.get(`/autodesk/projects/${projectId}/folders/${folderId}`)\n },\n uploadEditedSnapshot(\n payload: AutodeskUploadSnapshotPayload\n ): Promise<null> {\n return axios.post(\"/autodesk/upload-snapshot\", payload)\n },\n fetchViewerToken(exid: string): Promise<AutodeskTokenResponsePayload> {\n return axios.get(`/autodesk/${exid}/token/viewer`)\n },\n },\n voyageControl: {\n connect(payload: VoyageControlConnectorPayload): Promise<unknown> {\n return axios.post(\"/voyage-control/auth/connect\", payload)\n },\n sendRevoke(): Promise<null> {\n return axios.post(\"/voyage-control/auth/revoke\")\n },\n },\n xweather: {\n connect(\n projectExid: string,\n payload: XWeatherCreatePayload\n ): Promise<XWeatherResponse> {\n return axios.post(`/projects/${projectExid}/xweather/connect`, payload)\n },\n revoke(projectExid: string): Promise<null> {\n return axios.post(`/projects/${projectExid}/xweather/revoke`)\n },\n },\n recordings: {\n oldest(cameraId: string, payload?: ApiCredentials): Promise<Snapshot> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots/oldest`, {\n params: payload,\n })\n },\n latest(cameraId: string, payload?: ApiCredentials): Promise<Snapshot> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots/latest`, {\n params: payload,\n })\n },\n nearest(\n cameraId: string,\n timestamp: string,\n payload?: NearestSnapshotRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<NearestSnapshotResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${timestamp}/nearest`,\n {\n params: payload,\n ...(extraParams || {}),\n }\n )\n },\n availableDays({\n cameraId,\n year,\n month,\n payload,\n }: AvailableDaysRequestPayload): Promise<AvailableDaysResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${year}/${month}/days`,\n {\n params: payload,\n }\n )\n },\n availableHours({\n cameraId,\n year,\n month,\n day,\n payload,\n cancelToken,\n }: AvailableHoursRequestPayload): Promise<AvailableHoursResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${year}/${month}/${day}/hours`,\n {\n params: payload,\n cancelToken,\n }\n )\n },\n getSnapshot(\n cameraId: string,\n dateTime: string\n ): Promise<SnapshotRangeResponsePayload> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots/${dateTime}`)\n },\n getSnapshotRange(\n cameraId: string,\n payload: SnapshotRangeRequestPayload\n ): Promise<SnapshotRangeResponsePayload> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots`, {\n params: payload,\n })\n },\n },\n progressPhotos: {\n index(): Promise<ProgressPhotosResponsePayload> {\n return axios.get(\"/progress-photos\")\n },\n show(id: string): Promise<ProgressPhotosResponsePayload> {\n return axios.get(`/progress-photos/${id}`)\n },\n create(\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<ProgressPhotosResponsePayload> {\n return axios.post(\"/progress-photos\", payload)\n },\n update(\n id: string,\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<ProgressPhotosResponsePayload> {\n return axios.patch(`/progress-photos/${id}`, payload)\n },\n unsubscribe(\n progressPhotoId: string,\n params: ProgressPhotosUnSubscribeParams\n ): Promise<ProgressPhotosResponsePayload> {\n return axios.patch(\n `/progress-photos/${progressPhotoId}/unsubscribe?${toQueryString(\n params\n )}`\n )\n },\n delete(id: string, params?: ApiCredentials): Promise<void> {\n return axios.delete(`/progress-photos/${id}?${toQueryString(params)}`)\n },\n },\n mediaHub: {\n getAllMedia(\n projectExid: string,\n params: MediaFilterQueryParams\n ): Promise<PaginatedItems<Media>> {\n return axios.get(\n `projects/${projectExid}/media-hub?${toQueryString(params, {\n forceArrayBrackets: true,\n })}`\n )\n },\n getAllMediaUsers(projectExid: string): Promise<MediaUsersResponsePayload> {\n return axios.get(`/projects/${projectExid}/media-hub/users`)\n },\n cShow(projectExid: string, id: string): Promise<Media> {\n return axios.get(`/projects/${projectExid}/media-hub/${id}`)\n },\n cCreate(\n projectExid: string,\n payload: MediaCreateRequestPayload\n ): Promise<Media> {\n return axios.post(`/projects/${projectExid}/media-hub`, payload)\n },\n cUpdate(\n projectExid: number,\n id: number,\n payload: MediaUpdateRequestPayload\n ): Promise<Media> {\n return axios.patch(`/projects/${projectExid}/media-hub/${id}`, payload)\n },\n cDelete(projectExid: number, id: number): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/${id}`)\n },\n },\n shares: {\n updateShareRights(\n cameraExid: CameraExid,\n payload: { email: string; rights: string }\n ): Promise<Share> {\n return axios.patch(`/cameras/${cameraExid}/shares`, payload)\n },\n updateShareRequestRights(\n cameraExid: CameraExid,\n payload: { email: string; rights: string }\n ) {\n return axios.patch(`/cameras/${cameraExid}/shares/requests`, payload)\n },\n cIndex(cameraId: string): Promise<SharesResponsePayload> {\n return axios.get(`/cameras/${cameraId}/shares`)\n },\n getShareRequest(\n cameraId: string,\n payload: { status: string }\n ): Promise<ShareRequestsResponsePayload> {\n return axios.get(`/cameras/${cameraId}/shares/requests`, {\n params: payload,\n })\n },\n deleteShare(\n cameraId: string,\n payload: { [key: string]: ShareDeletionRequestPayload }\n ): Promise<void> {\n return axios.delete(`/cameras/${cameraId}/shares`, payload)\n },\n deleteRequest(\n cameraId: string,\n payload: { [key: string]: ShareDeletionRequestPayload }\n ): Promise<void> {\n return axios.delete(`/cameras/${cameraId}/shares/requests`, payload)\n },\n deleteShareRequest(payload: {\n params: ShareDeletionRequestPayload\n }): Promise<void> {\n return axios.delete(`/share-requests/${payload.params.key}`)\n },\n getSharedUsers(cameraId: string): Promise<SharedUsersResponsePayload> {\n return axios.get(`/cameras/${cameraId}/shares/users`)\n },\n cCreate(\n cameraId: string,\n payload: ShareCreateRequestPayload\n ): Promise<ShareCreateResponsePayload> {\n return axios.post(`/cameras/${cameraId}/shares`, payload)\n },\n shareProjectCameras(\n projectExid: ProjectExid,\n payload: ShareProjectCamerasRequestPayload\n ) {\n return axios.post(`/projects/${projectExid}/shares/cameras`, payload)\n },\n getShareRequestByKey(\n key: string\n ): Promise<Pick<ShareCreateResponsePayload, \"shareRequests\">> {\n return axios.get(`/shares/requests/${key}`)\n },\n resendShareRequest(\n cameraId: string,\n data: ResendShareRequestPayload\n ): Promise<void> {\n return axios.post(`/cameras/${cameraId}/shares/requests/resend`, data)\n },\n getProjectShares(exid: string): Promise<ProjectShareResponse> {\n return axios.get(\n `/projects/${exid}/shares?include_camera_shares=true&sort=fullname|asc`\n )\n },\n updateUserRestriction(\n projectExid: ProjectExid,\n payload: UpdateUserRestrictionPayload\n ) {\n return axios.patch(`/projects/${projectExid}/shares/cameras`, payload)\n },\n },\n company: {\n show(\n companyId: string | undefined,\n params: Record<string, string> = {}\n ): Promise<Company> {\n if (!companyId) return axios.get(\"/company\")\n else\n return axios.get(\n `/company/${companyId}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getCompanyUsers(params: {\n params: { page: number; limit: number }\n }): Promise<PaginatedItems<CompanyUser>> {\n return axios.get(\"/company/users\", params)\n },\n getCompanyProjects(params: {\n params: { page: number; limit: number }\n }): Promise<PaginatedItems<CompanyProject>> {\n return axios.get(\"/company/projects\", params)\n },\n getCompanyCameras(params: Record<string, string>) {\n return axios.get(\"/company/cameras\", params)\n },\n getCompanyKits(params: {\n params: { page: number; limit: number }\n }): Promise<PaginatedItems<CompanyKit>> {\n return axios.get(\"/company/kits\", params)\n },\n },\n batteries: {\n ProjectBatteryReadings(\n projectExid: string\n ): Promise<ProjectBatteryReading[]> {\n return axios.get(`/projects/${projectExid}/battery-readings`)\n },\n batteryReadings(\n cameraExid: string,\n params: { fromDate: string; toDate: string }\n ): Promise<PaginatedItems<BatteryReading>> {\n return axios.get(`/cameras/${cameraExid}/battery-readings`, {\n params: params,\n })\n },\n readingsVoltageSummary(\n cameraExid: string,\n params: { fromDate: string; toDate: string }\n ): Promise<BatteryVoltage[]> {\n return axios.get(\n `/cameras/${cameraExid}//battery-readings/voltage-summary`,\n {\n params: params,\n }\n )\n },\n },\n layers: {\n getLayer(\n cameraId: string,\n params: BimLayersQueryParams,\n extraParams: Record<string, string> = {}\n ): Promise<BIMLayer[]> {\n return axios.get(`/cameras/${cameraId}/layers`, {\n params,\n ...(extraParams || {}),\n })\n },\n getLayersById(\n cameraId: string,\n id: number,\n params: Record<string, string>\n ): Promise<BIMLayer> {\n return axios.get(`/cameras/${cameraId}/layers/${id}`, { params })\n },\n getLayers(\n cameraId: string,\n params: BimLayersQueryParams\n ): Promise<BIMLayer[]> {\n return axios.get(`/cameras/${cameraId}/layers`, { params })\n },\n createLayer(\n cameraId: string,\n params: BIMLayerPostPayload\n ): Promise<BIMLayer> {\n return axios.post(`/cameras/${cameraId}/layers`, params)\n },\n deleteLayer(\n cameraId: string,\n id: number,\n params: Record<string, unknown>\n ): Promise<void> {\n return axios.delete(`/cameras/${cameraId}/layers/${id}`, { params })\n },\n updateLayer(\n cameraId: string,\n id: number,\n params: Partial<BIMLayerPostPayload>\n ): Promise<BIMLayer> {\n return axios.put(`/cameras/${cameraId}/layers/${id}`, params)\n },\n },\n comments: {\n fetchComments(\n projectExid: string,\n params: CommentsRequestPayload\n ): Promise<PaginatedItems<Comment>> {\n return axios.get(`/projects/${projectExid}/comments`, { params })\n },\n addComment(\n projectId: string,\n params: CommentCreationRequestPayload\n ): Promise<Comment> {\n return axios.post(`/projects/${projectId}/comments`, params)\n },\n archiveOrUnarchiveComment(\n projectId: string,\n id: number,\n archive: boolean\n ): Promise<Comment> {\n return axios.patch(\n `/projects/${projectId}/comments/${id}?${toQueryString({ archive })}`\n )\n },\n deleteComment(projectId: string, id: number): Promise<void> {\n return axios.delete(`/projects/${projectId}/comments/${id}`)\n },\n },\n storyblock: {\n getStory(params: { route: string; params: string }) {\n return axios.get(\"/proxy/storyblok\", { params })\n },\n },\n mailing: {\n unsubscribe(params: { key: string }) {\n return axios.post(\"/mailing/unsubscribe\", params)\n },\n },\n widgets: {\n index(\n params: Partial<WidgetsListRequestPayload>\n ): Promise<PaginatedItems<Widget>> {\n return axios.get(`/widgets?${toQueryString(params)}`)\n },\n show(id: number): Promise<WidgetFull> {\n return axios.get(`/widgets/${id}`)\n },\n getByKeys(): Promise<WidgetFull> {\n return axios.get(\"/widgets/credentials\")\n },\n setSessionSettings(params: any): Promise<WidgetFull> {\n return axios.put(\"/widgets/session\", params)\n },\n createProjectWidget(\n projectId: string,\n payload: WidgetPayload\n ): Promise<WidgetFull> {\n return axios.post(`/projects/${projectId}/widgets`, payload)\n },\n createCameraWidget(\n cameraId: string,\n payload: WidgetPayload\n ): Promise<WidgetFull> {\n return axios.post(`/cameras/${cameraId}/widgets`, payload)\n },\n update(id: number, payload: WidgetPayload): Promise<WidgetFull> {\n return axios.put(`/widgets/${id}`, payload)\n },\n delete(id: number) {\n return axios.delete(`/widgets/${id}`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { MoveParams, ZoomParams } from \"@/types\"\n\nexport const PtzApi = {\n presets: {\n index({ cameraExid }: { cameraExid: string }) {\n return axios.get(`/cameras/${cameraExid}/ptz/presets`)\n },\n go({\n cameraExid,\n presetId,\n }: {\n cameraExid: string\n presetId: string | number\n }) {\n return axios.post(`/cameras/${cameraExid}/ptz/presets/go/${presetId}`)\n },\n home({\n cameraExid,\n isRecordingFromNvr,\n }: {\n cameraExid: string\n isRecordingFromNvr: boolean\n }) {\n if (!isRecordingFromNvr) {\n return axios.post(`/cameras/${cameraExid}/ptz/home`)\n }\n\n return axios.post(`/cameras/${cameraExid}/ptz/relative`)\n },\n create({\n cameraExid,\n presetName,\n }: {\n cameraExid: string\n presetName: string\n }) {\n return axios.post(`/cameras/${cameraExid}/ptz/presets/create`, {\n presetName,\n })\n },\n update({\n cameraExid,\n presetId,\n presetName,\n }: {\n cameraExid: string\n presetId: string | number\n presetName: string\n }) {\n // eslint-disable-next-line\n return axios.post(`/cameras/${cameraExid}/ptz/presets/${presetId}/set`, {\n presetName,\n })\n },\n delete({\n cameraExid,\n presetId,\n }: {\n cameraExid: string\n presetId: string | number\n }) {\n // eslint-disable-next-line\n return axios.delete(\n `/cameras/${cameraExid}/ptz/presets/${presetId}/remove`\n )\n },\n },\n controls: {\n move({ cameraExid, direction, useContinuous }: MoveParams) {\n if (useContinuous) {\n return axios.post(\n `/cameras/${cameraExid}/ptz/continuous/start/${direction}`\n )\n }\n\n return axios.post(`/cameras/${cameraExid}/ptz/relative?${direction}=4`)\n },\n zoom({ cameraExid, direction, isRecordingFromNvr }: ZoomParams) {\n if (!isRecordingFromNvr) {\n const zoomValue = direction === \"in\" ? 1 : -1\n\n return axios.post(\n `/cameras/${cameraExid}/ptz/relative?zoom=${zoomValue}`\n )\n }\n\n return axios.post(\n `/cameras/${cameraExid}/ptz/continuous/zoom/${direction}`,\n {\n direction,\n }\n )\n },\n stop({ cameraExid }: { cameraExid: string }) {\n return axios.post(`/cameras/${cameraExid}/ptz/continuous/stop`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport type {\n _360AssetsQueryParams,\n _360AssetsRequestPayload,\n _360AssetsUploadPayload,\n BimUploadPayload,\n BimUploadsQueryParams,\n CalculateMeasuringOperationRequestPayload,\n DronesQueryParams,\n DroneUploadUpdateRequestPayload,\n FlightImagesQueryParams,\n Generate360MapRequestPayload,\n InspectionToolRequestPayload,\n MobileCaptureSnapshot,\n} from \"@evercam/api/types\"\nimport { IngestVersions } from \"@evercam/shared/types\"\n\nexport const IngestApi = {\n drone: {\n createUpload(projectId: string, params: { uploadedBy: string }) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/${projectId}/upload`,\n null,\n { params }\n )\n },\n reprocessDrone(id: number, params: Record<string, unknown>) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/${id}/reprocess`,\n null,\n { params }\n )\n },\n getDrones(params: { params: Partial<DronesQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/drone/uploads/`, params)\n },\n getArchive(id: number, params: { dataType: string }) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/uploads/archive/${id}`,\n {\n params,\n }\n )\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/drone/uploads/${id}`)\n },\n prepareForUpload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n }\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/drone/${projectId}/prepare-upload`,\n null,\n { params }\n )\n },\n upload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n },\n payload: DroneUploadUpdateRequestPayload\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/drone/${projectId}/upload`,\n payload,\n { params }\n )\n },\n verifyToken(projectId: string, params: { token: string }) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/uploads/${projectId}/verify`,\n {\n params: { token: params.token },\n }\n )\n },\n calculateMeasuringOperation(\n projectId: string,\n params: CalculateMeasuringOperationRequestPayload\n ) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/calculate-measuring-operation`,\n params\n )\n },\n inspectionTool(projectId: string, params: InspectionToolRequestPayload) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/inspection-tool`,\n params\n )\n },\n isInspectionEnabled(projectId: string, params: Record<string, unknown>) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/inspection-enabled`,\n null,\n { params }\n )\n },\n getDroneQueueSize(\n version = IngestVersions.V1\n ): Promise<Record<string, any>> {\n const baseUrl =\n version === IngestVersions.V1\n ? axios.env.ingestApiUrl\n : axios.env.ingestGpuApiUrl\n\n return axios.get(`${baseUrl}/drone/queue`)\n },\n getFlightImages(projectId: string, params: FlightImagesQueryParams) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/flight-images`,\n {\n params,\n }\n )\n },\n checkFlightAvailableFeatures(\n projectId: string,\n params: Record<string, unknown>\n ) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/flight-available-features`,\n {\n params,\n }\n )\n },\n },\n assets360: {\n get360Assets(\n params: { params: Partial<_360AssetsQueryParams> },\n version = IngestVersions.V1\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.get(`${baseUrl}/360/assets/`, params)\n },\n get360AssetLink(\n projectId: string,\n date: string,\n floor: string,\n assetType: string,\n marker: string | null\n ) {\n return axios.get(\n `${axios.env.ingestGpuApiUrl}/360/assets/${projectId}/${date}/${floor}`,\n {\n params: { marker: marker, assetType: assetType },\n }\n )\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/360/assets/${id}`)\n },\n getArchive(id: number, params: { dateType: string }) {\n return axios.get(`${axios.env.ingestApiUrl}/360/assets/archive/${id}`, {\n params,\n })\n },\n createUpload(\n projectId: string,\n params: _360AssetsRequestPayload,\n version = IngestVersions.V1\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.post(`${baseUrl}/360/${projectId}/upload`, null, { params })\n },\n\n upload(\n id: number,\n params: Record<string, unknown>,\n payload: _360AssetsUploadPayload,\n version = IngestVersions.V1\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.put(`${baseUrl}/360/${id}/upload`, payload, { params })\n },\n generate360map(projectId: string, params: Generate360MapRequestPayload) {\n return axios.post(\n `${axios.env.ingestApiUrl}/360/api/${projectId}/generate-360-map`,\n params\n )\n },\n get360QueueSize(version = IngestVersions.V1): Promise<Record<string, any>> {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.get(`${baseUrl}/360/queue`)\n },\n },\n bim: {\n createUpload(projectId: string, params: { uploadedBy: string }) {\n return axios.post(\n `${axios.env.ingestApiUrl}/bim/${projectId}/upload`,\n null,\n { params }\n )\n },\n getBIMs(params: { params: Partial<BimUploadsQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/bim/uploads/`, params)\n },\n getArchive(id: number) {\n return axios.get(`${axios.env.ingestApiUrl}/bim/uploads/archive/${id}`)\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/bim/uploads/${id}`)\n },\n upload(\n projectId: string,\n params: {\n id: string\n name: string\n },\n payload: BimUploadPayload\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/bim/${projectId}/upload`,\n payload,\n { params }\n )\n },\n },\n mobileCapture: {\n getProjectMobileAssets(\n params: Record<string, unknown>\n ): Promise<MobileCaptureSnapshot[]> {\n return axios.get(`${axios.env.ingestGpuApiUrl}/mobile/assets/`, {\n params,\n })\n },\n getMobileAssetPhoto(\n assetId: string | number,\n params: Record<string, unknown>\n ) {\n return axios.get(\n `${axios.env.ingestGpuApiUrl}/mobile/assets/${assetId}`,\n {\n params,\n }\n )\n },\n },\n getTotalQueueSize() {\n return axios.get(`${axios.env.ingestApiUrl}/queue`)\n },\n\n async loadAllAssetsInQueue() {\n try {\n const versions = [IngestVersions.V1, IngestVersions.V2]\n const allAssets = []\n\n for (const v of versions) {\n const [assets360, assetsDrone] = await Promise.all([\n this.assets360.get360QueueSize(v),\n this.drone.getDroneQueueSize(v),\n ])\n\n const combinedAssets = [\n assets360?.assets360,\n assetsDrone?.assetsDrone,\n ].flatMap((a: any) =>\n (a || []).map((asset: any) => ({\n ...asset,\n ingestVersion: v === IngestVersions.V1 ? \"V1\" : \"V2\",\n }))\n )\n\n allAssets.push(...combinedAssets)\n }\n\n return allAssets.sort(\n (a, b) =>\n new Date(a.updatedAt).getTime() - new Date(b.updatedAt).getTime()\n )\n } catch (error) {\n console.error(\"Error:\", error)\n\n return []\n }\n },\n}\n","import { axios } from \"./client\"\nimport {\n ExNvrDeviceConfig,\n ExNvrLoginResponse,\n ExNvrRecordingInterval,\n ExNvrSystemStatus,\n} from \"@evercam/api/types/\"\n\nexport const ExNvrApi = {\n users: {\n login(\n {\n apiUrl,\n username,\n password,\n }: {\n apiUrl: string\n username: string\n password: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrLoginResponse> {\n return axios.post(\n `${apiUrl}/api/users/login`,\n {\n username,\n password,\n },\n config\n )\n },\n },\n devices: {\n getDevices({\n apiUrl,\n token,\n }: {\n apiUrl: string\n token: string\n }): Promise<ExNvrDeviceConfig> {\n return axios.get(`${apiUrl}/api/devices/`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n },\n getSystemStatus(\n { apiUrl, token }: { apiUrl: string; token: string },\n config: Record<string, string> = {}\n ): Promise<ExNvrSystemStatus> {\n return axios.get(`${apiUrl}/api/system/status`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n getDeviceConfig(\n {\n apiUrl,\n deviceId,\n token,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrDeviceConfig> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n getAvailableRecordings(\n {\n apiUrl,\n deviceId,\n token,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrRecordingInterval[]> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}/recordings`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n downloadFootage({\n apiUrl,\n deviceId,\n token,\n startDate,\n duration,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n startDate: string\n duration: number\n }): Promise<Blob> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}/footage`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n params: {\n startDate,\n duration,\n },\n responseType: \"blob\",\n })\n },\n },\n}\n","import { axios } from \"./client\"\n\nexport const AuthzApi = {\n roles: {\n async get(params: any) {\n return await axios.get(\"/admin/authz/roles\", params)\n },\n async getRoleDetails(id: number) {\n return await axios.get(`/admin/authz/roles/${id}`)\n },\n createRole(params: any) {\n return axios.post(\"/admin/authz/roles\", params)\n },\n updateRole(id: number, params: any) {\n return axios.patch(`/admin/authz/roles/${id}`, params)\n },\n deleteRole(id: number) {\n return axios.delete(`/admin/authz/roles/${id}`)\n },\n addPermission(id: number, action: string) {\n return axios.post(`/admin/authz/roles/${id}/permissions/`, { action })\n },\n deletePermission(id: number, action: string) {\n return axios.delete(`/admin/authz/roles/${id}/permissions/${action}`)\n },\n async getRoleUsers(id: number) {\n return axios.get(`/admin/authz/roles/${id}/users`)\n },\n async assignUsers(id: number, emails: Array<string>, resource_id: string) {\n return axios.post(`/admin/authz/roles/${id}/users`, {\n emails,\n resource_id,\n })\n },\n async unassignUsers(\n id: number,\n emails: Array<string>,\n resource_id: string\n ) {\n return axios.delete(`/admin/authz/roles/${id}/users`, {\n params: {\n emails,\n resource_id,\n },\n })\n },\n getUserRoles() {\n return axios.get(\"/users/roles\")\n },\n },\n scopes: {\n async get() {\n return await axios.get(\"/admin/authz/scopes\")\n },\n create(params: any) {\n return axios.post(\"/admin/authz/scopes\", params)\n },\n delete(id: number) {\n return axios.delete(`/admin/authz/scopes/${id}`)\n },\n update(id: number, params: any) {\n return axios.patch(`/admin/authz/scopes/${id}`, params)\n },\n },\n}\n"],"names":["_360UrlParams","_360AssetType","_360Feature","_360IntergrationType","PathMarkerColor","AconexDocumentDataType","AconexFormComponentType","AconexMandatoryStatus","AnalyticsEventPageId","AnalyticsEvent","AnprDirection","AnprEventStatus","MediaType","MediaFileType","MediaStatus","MediaStatusId","ClipsCategory","BimModelType","BimUploadStatus","BIMLayerTypes","CameraStatus","CameraFeatureFlag","NvrModel","CameraModel","HddStatus","DuplicatedCameraFields","BimType","CompareStatus","CopilotMessageAuthor","CopilotMessageType","CopilotStepId","CopilotMissingFieldsLabels","CopilotSocketEvent","CopilotProvider","CopilotSuggestion","CopilotChatProvider","CopilotLayout","CopilotToolId","CopilotMissingFieldComponent","CopilotMissingFieldName","CopilotMissingFieldType","DroneUrlParams","ErrorType","ErrorCode","EvercamApiErrorCode","GateReportDetectionType","GateReportEventType","DetectionLabel","SegmentLabel","GateReportVehicleType","GateReportDataSource","GateReportEventDirection","GateReportExportType","GateReportROIShapeType","GateReportProcessingStatus","VEHICLE_TYPE_IDS","HddFormat","HddType","HddState","WarehouseLocationIndex","WarehouseLocation","HddSize","IngestProcessingStatus","IngestVersions","MapType","Connector","ProcoreType","NotificationType","NvrDeviceType","NvrHddStatus","ProcoreObservationCustomFieldDataType","ProcoreObservationDefaultFieldNames","ProcoreTools","ProcoreToolUserAccessLevelIds","AutomationDialogType","ProjectStatus","ProjectArchiveTier","ProjectFeatureFlag","BrainTool","CloudRecordingFrequency","CloudRecordingDuration","CloudRecordingStatus","SnapshotExtractionInterval","VpnServer","RoiType","RoiShapeType","RoiDirection","UrlParamValue","TimelineUrlParam","Timeline360UrlParams","TimelineDroneUrlParams","TimelineMediaUrlParams","TimelineBimUrlParams","TimelineExNvrRecordingsUrlParams","TimelineAnprUrlParams","TimelineMobileCaptureUrlParams","TimelineCommentsUrlParams","PowerType","PowerSchedule","RouterStatus","SharePermission","ShareType","ShareRequestStatus","ShareVisibility","SmsCommands","SmsStatuses","PerformanceStatus","WebGLExtensions","EDistortImageModes","EMapTypes","EMarkers","EPageType","EPaths","EProjectItems","ERoles","ExNvrFootageAvailableStatus","ExNvrDeviceState","ExNvrMetricId","TimelapseStatus","TimelapseDuration","TimelapseScheduleType","TimelapsePeriod","TimelapseType","TimelapseExportStep","UserFeatureFlag","Persona","VideoWallItemType","WeatherProvider","CommentsScope","CommentsLabel","PpeLabel","DetectionModel","UnitSystem","MobileDevice","_3dViewer","InfoPage","DownloadFileType","FeedbackContext","TimelinePrecision","TaskStatus","PtzDirection","ZoomDirection","KitStatus","KitRegion","KitAlarm","KitMetricId","KitMetricPeriod","GrafanaMetricId","KitChartType","KitStorageTransport","AuditLogActionType","SnapshotExtractionStatus","SnapshotExtractionType","SiteAnalyticsMode","SmartSearchQueryComponentType","SmartSearchCondition","SmartSearchQueryTargets","SmartSearchQueryReturnType","SmartSearchOperatorType","SmartSearchQueryOperators","SmartSearchQueryConditionTypes","DelayUnit","CommonWidgetSettingsKeys","RecordingsWidgetSettingsKeys","LiveViewWidgetSettingsKeys","BimCompareWidgetSettingsKeys","VideoWallWidgetSettingsKeys","WidgetType","WidgetTypesByResource","CountryId","CountryCode","CameraRegion","AutomationProvider","AutomationType","ActiveUsersMetric","createErrorClass","errorName","error","e","BadRequestError","NotFoundError","UnauthorizedError","GatewayTimeoutError","BadGatewayError","ForbiddenError","HlsError","SnapshotError","ConflictError","InternalServerError","numberOfRequestsSentInThePastSecond","maxRequestsPerSecond","requestsRateLimit","r","onRequest","request","axiosEnv","ensureBaseUrl","addAuthTokenHeader","transformCamelCaseToSnakeCase","onResponse","response","_a","data","_b","humps","_c","_e","_d","duration","onError","statusCode","method","url","backendErrorCode","_g","_f","customError","customMessage","Axios","breadcrumbLogger","ensureCommonHeaders","target","JwtToken","paramsIgnoredCasing","params","acc","item","formData","key","value","OnRequestExpiredTokenInterceptor","isTokenExpired","handler","axios","promisifyRequest","resolve","reject","createStore","dbName","storeName","dbp","getDB","db","txMode","callback","defaultGetStoreFunc","defaultGetStore","get","customStore","store","set","del","clear","SwrStore","prefix","__publicField","config","paramsKey","serializedValue","Swr","axiosInstance","finalConfig","cachedPromise","freshPromise","v","fresh","err","requestInterceptors","responseInterceptors","errorInterceptors","vars","defaultGet","args","requestInterceptor","errorInterceptor","interceptor","responseInterceptor","setHeader","headerName","setToken","token","cancelTokens","t","AdminApi","cameraId","device","payload","exid","newOwnerId","id","ids","template","extractionId","kitId","metric","fromDate","toDate","tagId","projectExid","hddId","footageId","cameraExid","simId","number","tag","email","VideoWallApi","projectId","encodedEmail","headers","preset","presetName","getFirebaseDbApi","getFirebaseStorageUrl","getFirebaseStorageToken","_3dFirebaseApi","res","dateId","floorIndex","body","projectID","dateID","floorID","featureFlagName","stepsValue","gpxContent","blob","toQueryString","paramsObject","forceSnakeCase","forceArrayBrackets","param","index","encodedParam","_acc","i","paramName","queryStringToObject","queryString","getAiApiUrl","AiApi","updatedBy","anprEventId","eventBody","anprEventsIds","action","captureTime","extraParams","eventId","eventType","eventTime","anprCameraExid","roi","iouThreshold","page","pageSize","queryId","cameraExids","granularity","endDate","startDate","query","fileType","directDownload","appUuid","appId","serviceId","WebRtcApi","WeatherApi","getLabsBaseUrl","labsPrNumber","EvercamLabsApi","conversationId","message","messageId","precision","fileName","metrics","period","EvercamApi","provider","apiId","apiKey","widgetId","widgetKey","user","sessionId","dateTime","name","hubId","parentFolderId","getDerivatives","folderId","timestamp","year","month","day","cancelToken","progressPhotoId","companyId","archive","PtzApi","presetId","isRecordingFromNvr","direction","useContinuous","zoomValue","IngestApi","version","baseUrl","date","floor","assetType","marker","assetId","versions","allAssets","assets360","assetsDrone","combinedAssets","a","asset","b","ExNvrApi","apiUrl","username","password","deviceId","AuthzApi","emails","resource_id"],"mappings":"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","x_google_ignoreList":[47]}