@evercam/api 1.0.0-preview-fix-evercam-ui-publish-script-07a483d2b → 1.0.0-preview-test-on-pr-ff50e7c86

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 (64) hide show
  1. package/README.md +4 -1
  2. package/dist/api/3dFirebaseApi.d.ts +12 -0
  3. package/dist/api/adminApi.d.ts +118 -26
  4. package/dist/api/aiApi.d.ts +87 -5
  5. package/dist/api/client/customErrors.d.ts +10 -0
  6. package/dist/api/client/interceptors.d.ts +3 -2
  7. package/dist/api/client/swr/Swr.d.ts +14 -0
  8. package/dist/api/client/swr/SwrStore.d.ts +10 -0
  9. package/dist/api/evercamApi.d.ts +81 -33
  10. package/dist/api/evercamLabsApi.d.ts +10 -16
  11. package/dist/api/ingestApi.d.ts +41 -11
  12. package/dist/api/ptzApi.d.ts +1 -1
  13. package/dist/api/weatherApi.d.ts +7 -23
  14. package/dist/index.js +1485 -763
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.umd.cjs +1 -1
  17. package/dist/index.umd.cjs.map +1 -1
  18. package/dist/types/360.d.ts +60 -2
  19. package/dist/types/aconex.d.ts +103 -5
  20. package/dist/types/analytics.d.ts +99 -71
  21. package/dist/types/anpr.d.ts +16 -17
  22. package/dist/types/automation.d.ts +55 -0
  23. package/dist/types/axios.d.ts +15 -1
  24. package/dist/types/camera.d.ts +30 -57
  25. package/dist/types/comments.d.ts +31 -8
  26. package/dist/types/company.d.ts +29 -1
  27. package/dist/types/connector.d.ts +6 -1
  28. package/dist/types/coolify.d.ts +20 -0
  29. package/dist/types/copilot.d.ts +11 -9
  30. package/dist/types/countries.d.ts +0 -7
  31. package/dist/types/detections.d.ts +73 -23
  32. package/dist/types/errors.d.ts +13 -0
  33. package/dist/types/gateReport.d.ts +50 -1
  34. package/dist/types/hdd.d.ts +63 -0
  35. package/dist/types/index.d.ts +10 -2
  36. package/dist/types/ingest.d.ts +8 -0
  37. package/dist/types/kit.d.ts +94 -10
  38. package/dist/types/nvr.d.ts +2 -1
  39. package/dist/types/{sitePlanner.d.ts → planner.d.ts} +10 -1
  40. package/dist/types/posthog.d.ts +18 -0
  41. package/dist/types/procore.d.ts +149 -3
  42. package/dist/types/progressPhoto.d.ts +6 -22
  43. package/dist/types/project.d.ts +14 -2
  44. package/dist/types/recording.d.ts +1 -2
  45. package/dist/types/recycleBin.d.ts +14 -0
  46. package/dist/types/roi.d.ts +2 -1
  47. package/dist/types/routeParams.d.ts +4 -2
  48. package/dist/types/shared.d.ts +3 -17
  49. package/dist/types/shares.d.ts +5 -1
  50. package/dist/types/siteAnalytics.d.ts +159 -1
  51. package/dist/types/snapshots.d.ts +9 -0
  52. package/dist/types/sso.d.ts +55 -0
  53. package/dist/types/streaming.d.ts +4 -27
  54. package/dist/types/systemCheck.d.ts +11 -0
  55. package/dist/types/tag.d.ts +12 -0
  56. package/dist/types/time.d.ts +6 -0
  57. package/dist/types/timelapse.d.ts +15 -0
  58. package/dist/types/user.d.ts +1 -6
  59. package/dist/types/weather.d.ts +8 -2
  60. package/dist/types/widget.d.ts +36 -11
  61. package/dist/types/xweather.d.ts +12 -0
  62. package/dist/utils.d.ts +1 -0
  63. package/package.json +8 -7
  64. package/dist/types/devices.d.ts +0 -228
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.cjs","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 GrafanaChartType,\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 = {\n metricId: ExNvrMetricId\n type: GrafanaChartType\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 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}\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 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 GrafanaChartType {\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: GrafanaChartType\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 GrafanaQueryResult = {\n status: number\n frames: GrafanaFrame[]\n}\n\nexport type GrafanaMetricResponse = {\n results: {\n [key: string]: GrafanaQueryResult\n }\n type: GrafanaChartType\n}\n\nexport type GrafanaKitMetrics = Record<\n keyof typeof GrafanaMetricId,\n GrafanaMetricResponse\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\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 },\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 value === null ||\n value === 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 MilesightCameraVideoConfig,\n MilesightRequestParams,\n MilesightCameraNetworkConfiguration,\n MilesightCameraSystemSettings,\n MilesightCameraOsdConfiguration,\n MilesightCameraSdCardInfo,\n CopilotConversation,\n CopilotMessage,\n PaginatedItems,\n CopilotMessageStep,\n DetectionsFilters,\n TrackingsByLabel,\n CameraExid,\n CountsParams,\n CountByPeriod,\n DetectionsPresenceByLabel,\n FeedbackPayload,\n LabsPaginationParams,\n SegmentsPresenceByLabel,\n SegmentsByLabel,\n SegmentsSimilaritySearchParams,\n LuminanceReading,\n GrafanaKitMetrics,\n GrafanaMetricId,\n} 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 ): Promise<GrafanaKitMetrics> {\n return axios.get(`${getLabsBaseUrl()}/kits/${kitId}/metrics`, {\n params: {\n metrics,\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","GrafanaMetricId","GrafanaChartType","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","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","fromDate","toDate","precision","segmentId","prefix","fileName","metrics","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.umd.cjs","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","../types/index.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 _360AssetLabel {\n Walks = \"walks\",\n MobilePhotos = \"mobilePhotos\",\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 DrawingsRequestPayload = {\n projectId?: string\n name?: string\n changedBy?: string\n mapStyle?: string\n startDate?: string\n endDate?: string\n id?: number\n page?: number\n limit?: number\n paginate?: boolean\n}\n\nexport type GenerateFloorPayload = {\n overlay?: {\n url: string\n title: string\n fileExtension: string\n }\n changedBy: string\n name?: string\n mapStyle?: string\n overlayPositionCorners: {\n northEast: {\n lat: number\n lng: number\n }\n northWest: {\n lat: number\n lng: number\n }\n southWest: {\n lat: number\n lng: number\n }\n southEast: {\n lat: number\n lng: number\n }\n }\n}\n\nexport type _360QueueQueryParams = {\n projectId?: 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 active: boolean\n hidden: boolean\n}>\n\nexport type AconexDocumentSchemaResponsePayload = Array<{\n dataType: AconexDocumentDataType\n identifier: AconexIdentifiers\n fieldName: string\n modifiedFieldName?: string\n mandatoryStatus: AconexMandatoryStatus\n schemaValues?: Array<{ id: string; value: string }>\n}>\n\nexport type AconexDocumentTypeSchemaResponsePayload = Array<{\n dataType: AconexDocumentDataType\n identifier: string\n fieldName: string\n modifiedFieldName?: string\n mandatoryStatus: string\n specifications?: Array<AconexFieldSpecification>\n}>\n\nexport type AconexDocumentSchemaField = {\n dataType: AconexDocumentDataType\n identifier: AconexIdentifiers | string\n schemaValues?: Array<{ id: string; value: string }>\n fieldName: string\n modifiedFieldName?: string\n mandatoryStatus: AconexMandatoryStatus\n componentType?: AconexFormComponentType\n items?: Array<any>\n disabled?: boolean\n specifications?: Array<AconexFieldSpecification>\n}\nexport type AconexFormSchema = Record<\n AconexIdentifiers | string,\n AconexDocumentSchemaField\n>\n\nexport type AconexFieldSpecification = {\n name: string\n options: Array<string>\n}\n\nexport enum AconexDocumentDataType {\n String = \"STRING\",\n Boolean = \"BOOLEAN\",\n Ratio = \"RATIO\",\n Integer = \"INTEGER\",\n Double = \"DOUBLE\",\n Long = \"LONG\",\n Date = \"DATE\",\n Complex = \"COMPLEX\",\n SingleLineText = \"SINGLE_LINE_TEXT\",\n MultiLineText = \"MULTI_LINE_TEXT\",\n SingleSelect = \"SINGLE_SELECT\",\n MultiSelect = \"MULTI_SELECT\",\n User = \"USER\",\n Number = \"NUMBER\",\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\nexport enum AconexIdentifiers {\n DocumentNumber = \"DocumentNumber\",\n DocumentTypeId = \"DocumentTypeId\",\n Revision = \"Revision\",\n HasFile = \"HasFile\",\n AccessList = \"AccessList\",\n AsBuiltRequired = \"AsBuiltRequired\",\n Attribute1 = \"Attribute1\",\n Attribute2 = \"Attribute2\",\n Attribute3 = \"Attribute3\",\n Attribute4 = \"Attribute4\",\n Author = \"Author\",\n AuthorisedBy = \"AuthorisedBy\",\n Category = \"Category\",\n Check1 = \"Check1\",\n Check2 = \"Check2\",\n Comments = \"Comments\",\n Comments2 = \"Comments2\",\n ContractNumber = \"ContractNumber\",\n ContractDeliverable = \"ContractDeliverable\",\n ContractorDocumentNumber = \"ContractorDocumentNumber\",\n ContractorRev = \"ContractorRev\",\n Date1 = \"Date1\",\n Date2 = \"Date2\",\n DateApproved = \"DateApproved\",\n DateCreated = \"DateCreated\",\n DateForReview = \"DateForReview\",\n DateReviewed = \"DateReviewed\",\n Discipline = \"Discipline\",\n DocumentStatusId = \"DocumentStatusId\",\n MilestoneDate = \"MilestoneDate\",\n PackageNumber = \"PackageNumber\",\n PercentageComplete = \"PercentageComplete\",\n PlannedSubmissionDate = \"PlannedSubmissionDate\",\n PrintSize = \"PrintSize\",\n ProjectField1 = \"ProjectField1\",\n ProjectField2 = \"ProjectField2\",\n ProjectField3 = \"ProjectField3\",\n Reference = \"Reference\",\n RevisionDate = \"RevisionDate\",\n Scale = \"Scale\",\n SelectList1 = \"SelectList1\",\n SelectList2 = \"SelectList2\",\n SelectList3 = \"SelectList3\",\n SelectList4 = \"SelectList4\",\n SelectList5 = \"SelectList5\",\n SelectList6 = \"SelectList6\",\n SelectList7 = \"SelectList7\",\n SelectList8 = \"SelectList8\",\n SelectList9 = \"SelectList9\",\n SelectList10 = \"SelectList10\",\n TagNumber = \"TagNumber\",\n Title = \"Title\",\n ToClientDate = \"ToClientDate\",\n UploadDate = \"UploadDate\",\n UploadedBy = \"UploadedBy\",\n Vdrcode = \"Vdrcode\",\n VendorDocumentNumber = \"VendorDocumentNumber\",\n VendorRev = \"VendorRev\",\n AutoNumber = \"AutoNumber\",\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 Drawings = \"Drawings\",\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 WidgetsSelectTypeThreeSixty = \"Widgets-SelectType360\",\n WidgetsSelectProject = \"SelectProject\",\n WidgetsSelect360Date = \"Select360Date\",\n WidgetsSelect360Floor = \"Select360Floor\",\n WidgetsSelect360Marker = \"Select360Marker\",\n Widgets360LockMedia = \"360LockMedia\",\n\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 WidgetsToggleRestrictRecordingsRange = \"ToggleRestrictRecordingsRange\",\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 ThreeSixtyGalleryFilterAssetTypes = \"Gallery-FilterAssetTypes\",\n ThreeSixtyGalleryFilterDateRange = \"Gallery-FilterDateRange\",\n ThreeSixtyGalleryFilterFeatures = \"Gallery-FilterFeatures\",\n ThreeSixtyGalleryFilterFloorName = \"Gallery-FilterFloorName\",\n ThreeSixtyGalleryFilterUploadedBy = \"Gallery-FilterUploadedBy\",\n ThreeSixtyGalleryTimelineSelectMilestoneItem = \"Gallery-TimelineSelectMilestoneItem\",\n ThreeSixtyGalleryTimelineDateClick = \"Gallery-TimelineDateClick\",\n ThreeSixtyGalleryToggleUploadDialog = \"Gallery-ToggleUploadDialog\",\n ThreeSixtyGalleryToggleFilters = \"Gallery-ToggleFilters\",\n ThreeSixtyGalleryUpdateFloorName = \"Gallery-UpdateFloorName\",\n ThreeSixtyGalleryEditWalkName = \"Gallery-EditWalkName\",\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 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 DroneUploadSkipping = \"SkipImageUpload\", // To be removed later\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 // Drawings\n DrawingUpdateName = \"UpdateName\",\n DrawingEditName = \"EditName\",\n\n // Markers events\n MarkerClicked = \"MarkerClicked\",\n MarkerSelected = \"MarkerSelected\",\n\n // Timelapse Creator events\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 direction?: { eq?: string } | string\n plateNumber?: { eq?: string } | string\n sort?: string\n fromDate?: DateType\n toDate?: DateType\n camerasExid?: CameraExid[]\n vehicleTypes?: GateReportVehicleType[]\n isDuplicate?: boolean\n isPostprocessed?: boolean\n isPlate?: boolean\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 ProjectFeatureFlag,\n Schedule,\n} from \"@/types\"\nimport { DateRangeFilter } from \"@/types/time\"\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: ProjectFeatureFlag[]\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 IntensityChangeColors {\n High = \"#FF5252\",\n Moderate = \"#FBC02D\",\n Low = \"#006400\",\n NoChange = \"#3ACF3A\",\n Default = \"black\",\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 open: boolean\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\nexport type CameraDateRangeFilter = DateRangeFilter & {\n cameraExid: CameraExid\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 IntegrationError = \"INTEGRATION_ERROR\",\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 MobileAssetsType {\n Audio = \"mobile_audios\",\n Photo = \"mobile_photos\",\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 {\n Automation,\n AutomationType,\n DateTime,\n DateType,\n PaginationParams,\n} from \"@/types\"\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 DateRangeFilter,\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\nexport type ProjectDateRangeFilter = DateRangeFilter & {\n projectExid: ProjectExid\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 SelectedCommentId = \"selectedCommentId\",\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 includeForecast?: boolean\n forecastDays?: number\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 DateRangeFilter,\n ProjectDateRangeFilter,\n CameraDateRangeFilter,\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 SegmentsSimilaritySearchParams = {\n cameraExid: CameraExid\n referenceId: string\n iouThreshold?: number\n fromDate: string\n toDate: string\n}\n\nexport type BaseCountsParams = DateRangeFilter & {\n precision: keyof typeof TimelinePrecision\n trackId: number\n labels: DetectionLabel | DetectionLabel[]\n}\n\nexport type DetectionsCountsParams = ProjectDateRangeFilter &\n BaseCountsParams & {\n cameraExids?: CameraExid[]\n }\n\nexport type SegmentsCountsParams = CameraDateRangeFilter & BaseCountsParams\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 createdAt: string\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 // NVR\n NvrOffline = \"nvr_offline\",\n OfflineScheduled = \"offline_scheduled\",\n\n // Cameras\n UnknownCamera = \"unknown_camera\",\n NotRecordingCamera = \"not_recording_camera\",\n\n // Storage\n FullSD = \"full_sd\",\n FullStorage = \"full_storage\",\n HddUnmounted = \"hdd_unmounted\",\n NoHdd = \"no_hdd\",\n\n // Router\n MissingRouterInfo = \"missing_router_info\",\n\n // UPS\n AcFailure = \"ac_failure\",\n LowBattery = \"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 KitFootage = {\n id: number\n startDate: string\n endDate: string\n cameraId: number\n storageId: number\n}\n\nexport type KitAlarmItem = {\n id: number\n kitId: number\n alarm: KitAlarm\n startDate: DateTime\n endDate: DateTime | null\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\nexport type TransferCloudRecordingsQueryParams = {\n targetCameraExid: CameraExid\n fromDate: DateType\n toDate: DateType\n overwriteExistingSnapshots?: boolean\n keepSourceSnapshots?: boolean\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 CameraDateRangeFilter,\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 SmartSearchQueryPartData = {\n id?: string\n type: SmartSearchQueryPartType\n value:\n | DetectionLabel\n | SmartSearchOperatorType\n | SmartSearchConditionData\n | SmartSearchCondition\n | SmartSearchDateRange\n | string\n}\n\nexport type SmartSearchQueryPart =\n | SmartSearchQueryPartData\n | SmartSearchQueryPartData[]\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 Heatmap = \"heatmap\",\n}\n\nexport type SmartSearchQueryPartType =\n | SmartSearchQueryComponentType\n | SmartSearchCondition\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<SmartSearchQueryPartData, \"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\nexport type SmartSearchHeatmapPoint = {\n coordinates: [number, number]\n detectionsCount: number\n}\n\nexport type SmartSearchHeatmapData = {\n label: string\n points: SmartSearchHeatmapPoint[]\n}\n\nexport type SmartSearchNearConfig = {\n sourceLabels: DetectionLabel[]\n targetLabel?: DetectionLabel\n}\n\nexport type HeatmapIntersectionsRequestParams = CameraDateRangeFilter &\n SmartSearchNearConfig\n\nexport type SmartSearchSidebarItem = {\n key: string\n displayLabel: string\n data: SmartSearchHeatmapData\n imagePath?: string\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 enum ThreeSixtyKeys {\n DateId = \"dateId\",\n DateLocked = \"dateLocked\",\n FloorId = \"floorId\",\n FloorLocked = \"floorLocked\",\n Marker = \"markerId\",\n MarkerLocked = \"markerLocked\",\n MediaLocked = \"mediaLocked\",\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 ThreeSixtyWidgetSettings = CommonWidgetSettings & {\n dateId: string\n floorId: string\n markerId: string\n}\n\nexport type WidgetSettings =\n | RecordingsWidgetSettings\n | LiveViewWidgetSettings\n | BimCompareWidgetSettings\n | VideoWallWidgetSettings\n | ThreeSixtyWidgetSettings\n\nexport enum WidgetType {\n LiveWidget = \"Live View\",\n Recording = \"Recordings\",\n BimCompare = \"BIM Compare\",\n VideoWall = \"Video Wall\",\n ThreeSixty = \"360\",\n}\n\nexport const WidgetTypesByResource = {\n camera: [WidgetType.LiveWidget, WidgetType.Recording, WidgetType.BimCompare],\n project: [WidgetType.VideoWall, WidgetType.ThreeSixty],\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 domainRestricted: 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 domainRestricted: 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 domainRestricted: 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 domainRestricted: 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 { AconexIdentifiers, CameraExid, Connector } from \"@evercam/api/types\"\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\nexport type AutomationCompareConfig = {\n compareDelay: number\n}\n\nexport type AutomationEmailProviderConfig = {\n recipients: string | string[]\n}\n\nexport type AutomationProcoreProviderConfig = {\n companyId: number\n companyName: string\n projectId: number\n projectName: string\n categoryId: number\n categoryName: string\n}\n\nexport type AutomationAconexProviderConfig = {\n projectId: number\n projectName: string\n} & Partial<Record<AconexIdentifiers, string | number | boolean>>\n\nexport type AutomationAutodeskProviderConfig = {\n hubId: number\n hubName: string\n projectId: number\n projectName: string\n folderId: number\n accFileType: string\n accFolderType: string\n folderName: string\n}\n\nexport type AutomationProviderConfig =\n | AutomationEmailProviderConfig\n | AutomationProcoreProviderConfig\n | AutomationAconexProviderConfig\n | AutomationAutodeskProviderConfig\n\nexport type AutomationOptionsConfig = AutomationCompareConfig | {}\n\nexport type AutomationConfig = AutomationProviderConfig &\n AutomationOptionsConfig\n\nexport type Automation = {\n cameraExids: CameraExid[]\n name: string\n subject?: string\n provider: AutomationProvider\n type: AutomationType\n config: AutomationConfig\n notifyDays: string[]\n notifyTime: string\n timezone: string\n isPaused: boolean\n restrictedCameraExids?: string[]\n}\n\nexport enum AutomationConfigStep {\n Type = \"type\",\n Cameras = \"cameras\",\n Settings = \"settings\",\n Destination = \"destination\",\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","export * from \"./360\"\nexport * from \"./aconex\"\nexport * from \"./analytics\"\nexport * from \"./anpr\"\nexport * from \"./media\"\nexport * from \"./autodesk\"\nexport * from \"./bim\"\nexport * from \"./camera\"\nexport * from \"./compare\"\nexport * from \"./copilot\"\nexport * from \"./credentials\"\nexport * from \"./drone\"\nexport * from \"./errors\"\nexport * from \"./gateReport\"\nexport * from \"./hdd\"\nexport * from \"./ingest\"\nexport * from \"./map\"\nexport * from \"./connector\"\nexport * from \"./notification\"\nexport * from \"./nvr\"\nexport * from \"./procore\"\nexport * from \"./progressPhoto\"\nexport * from \"./project\"\nexport * from \"./recording\"\nexport * from \"./roi\"\nexport * from \"./routeParams\"\nexport * from \"./router\"\nexport * from \"./shares\"\nexport * from \"./sim\"\nexport * from \"./systemCheck\"\nexport * from \"./planner\"\nexport * from \"./storageServers\"\nexport * from \"./streaming\"\nexport * from \"./time\"\nexport * from \"./timelapse\"\nexport * from \"./user\"\nexport * from \"./vendorModel\"\nexport * from \"./videoWall\"\nexport * from \"./voyageControl\"\nexport * from \"./weather\"\nexport * from \"./comments\"\nexport * from \"./detections\"\nexport * from \"./axios\"\nexport * from \"./shared\"\nexport * from \"./company\"\nexport * from \"./kit\"\nexport * from \"./auditLogs\"\nexport * from \"./snapshots\"\nexport * from \"./siteAnalytics\"\nexport * from \"./widget\"\nexport * from \"./countries\"\nexport * from \"./automation\"\nexport * from \"./sso\"\nexport * from \"./coolify\"\nexport * from \"./tag\"\nexport * from \"./xweather\"\nexport * from \"./posthog\"\nexport * from \"./recycleBin\"\n\n// TODO - Remove\n// Dummy export to test the publishing process\nexport const Foo = \"bar...\"\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 CommentsListRequestPayload,\n Comment,\n KitFootage,\n KitAlarmItem,\n RecycleBin,\n RecycleBinQueryParams,\n TransferCloudRecordingsQueryParams,\n CheckCameraPortPayload,\n} from \"@evercam/api/types\"\n\nimport { KitMetricId } from \"@evercam/api/types\"\nimport { Tag } from \"@/types/tag\"\nimport type { AxiosRequestConfig } from \"axios\"\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(\n params: { params: Partial<FetchCameraQueryParams> },\n extraConfig: AxiosRequestConfig = {}\n ): Promise<PaginatedItems<AdminCamera>> {\n return axios.get(\"/admin/cameras\", {\n ...params,\n ...extraConfig,\n })\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 transferCloudRecordings(\n cameraId: string,\n params: TransferCloudRecordingsQueryParams\n ): Promise<void> {\n return axios.post(`admin/cameras/${cameraId}/snapshots/transfer`, params)\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 portCheck(payload: {\n params: CheckCameraPortPayload\n }): Promise<CheckCameraPortPayload & { open: boolean }> {\n return axios.get(\"/admin/cameras/port-check\", payload)\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<KitFootage[]> {\n return axios.get(`/admin/kits/${id}/footage`, params)\n },\n getAlarms(kitId: number): Promise<KitAlarmItem[]> {\n return axios.get(`/admin/kits/${kitId}/alarms`)\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 recycleBin: {\n getAllDeleted(params: {\n params: RecycleBinQueryParams\n }): Promise<PaginatedItems<RecycleBin[]>> {\n return axios.get(\"/admin/recycle-bin\", params)\n },\n restore(params: {\n type: string\n camera_ids: number[]\n project_ids: number[]\n }): Promise<void> {\n return axios.patch(\"/admin/recycle-bin/restore\", params)\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(\n number: string,\n params: { params: PaginationParams }\n ): Promise<PaginatedItems<SmsHistoryResponse>> {\n return axios.get(`/admin/sims/${number}/sms`, params)\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 getProjectTags(\n projectExid: ProjectExid\n ): Promise<DroneProjectJsonResponse> {\n return fetch(\n `${getFirebaseDbApi()}cesium/${projectExid}/transform/tags.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\nexport function capitalizeFirstLetter(inputString: string) {\n if (inputString.length === 0) return inputString\n\n return (\n inputString.charAt(0).toUpperCase() + inputString.slice(1).toLowerCase()\n )\n}\n","import { axios } from \"./client\"\nimport { toQueryString } from \"@evercam/api/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 SmartSearchHeatmapData,\n SmartSearchOperatorType,\n DetectionLabel,\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 extraParams: AxiosRequestConfig = {}\n ): Promise<PaginatedItems<AnprEvent>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n getAnprCounts(\n projectExid: ProjectExid,\n payload: AnprCountsQueryParams,\n extraParams?: AxiosRequestConfig\n ): Promise<AnprCount[]> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr/counts?${toQueryString(\n payload\n )}`,\n extraParams\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, ...params }: DetectionsRequestParams,\n extraParams: AxiosRequestConfig = {}\n ): Promise<DetectionsCountsByPeriod> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/counts?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n async getDetectionsByTimestamp(\n { projectExid, ...params }: DetectionsRequestParams,\n extraParams: AxiosRequestConfig = {}\n ): Promise<PaginatedItems<DetectionsGroup>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/timestamps?${toQueryString(\n params\n )}`,\n extraParams\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 getDetectionsHeatmapData(\n cameraExid: CameraExid,\n params: {\n fromDate: DateType | string\n toDate: DateType | string\n labels: DetectionLabel[]\n operator?: SmartSearchOperatorType\n }\n ): Promise<{ results: SmartSearchHeatmapData[]; sqlQuery: string }> {\n return axios.post(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/heatmap?${toQueryString(\n params,\n { forceArrayBrackets: true }\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 fovChanges: {\n getCameraFovChanges(\n cameraExid: string,\n extraConfig: AxiosRequestConfig = {}\n ) {\n return axios.post(\n `${getAiApiUrl()}/cameras/${cameraExid}/fov_changes`,\n {},\n extraConfig\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 {\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 HeatmapIntersectionsRequestParams,\n SmartSearchHeatmapPoint,\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 siteAnalytics: {\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 async getIntersectionsHeatmapData(\n params: HeatmapIntersectionsRequestParams\n ): Promise<SmartSearchHeatmapPoint[]> {\n const { cameraExid, ...queryParams } = params\n\n return axios.get(\n `${getLabsBaseUrl()}/site-analytics/cameras/${cameraExid}/heatmap/intersections`,\n {\n params: queryParams,\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 AconexDocumentSchemaResponsePayload,\n AconexDocumentTypeSchemaResponsePayload,\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 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\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 getTeamMembers() {\n return axios.get(\"/projects/team-members\")\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(\n projectId: number\n ): Promise<AconexDocumentSchemaResponsePayload> {\n return axios.get(`/aconex/projects/${projectId}/register/schema`)\n },\n getDocumentTypeSchema(\n projectId: number,\n documentTypeId: string\n ): Promise<AconexDocumentTypeSchemaResponsePayload> {\n return axios.get(\n `/aconex/projects/${projectId}/register/schema/${documentTypeId}`\n )\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 setStatus(id: number, params: { active: boolean }): Promise<WidgetFull> {\n return axios.patch(`/widgets/${id}/status`, params)\n },\n create(payload: WidgetPayload): Promise<WidgetFull> {\n return axios.post(\"/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 { toQueryString } from \"@evercam/api/utils\"\nimport { axios } from \"./client\"\nimport type { AxiosRequestConfig } from \"axios\"\nimport type {\n _360AssetsQueryParams,\n _360AssetsRequestPayload,\n _360QueueQueryParams,\n _360AssetsUploadPayload,\n BimUploadPayload,\n BimUploadsQueryParams,\n CalculateMeasuringOperationRequestPayload,\n DrawingsRequestPayload,\n DronesQueryParams,\n DroneUploadUpdateRequestPayload,\n FlightImagesQueryParams,\n Generate360MapRequestPayload,\n GenerateFloorPayload,\n InspectionToolRequestPayload,\n MobileCaptureSnapshot,\n} from \"@evercam/api/types\"\nimport { IngestVersions } from \"@evercam/api/types\"\n\nexport const getIngestApiUrl = (version: string): string | undefined | null => {\n const ingestApiMapping = {\n [IngestVersions.V1]: axios.env.ingestApiUrl,\n [IngestVersions.V2]: axios.env.ingestGpuApiUrl,\n } as Record<string, string | undefined | null>\n\n return ingestApiMapping[version]\n}\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 return axios.get(`${getIngestApiUrl(version)}/360/assets/`, params)\n },\n get360AssetsCounts(\n projectId: string,\n params: { uploadedBy: string },\n version = IngestVersions.V2\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.get(`${baseUrl}/360/assets/${projectId}/counts`, {\n params,\n })\n },\n get360AssetLink(\n projectId: string,\n date: string,\n floor: string,\n assetType: string,\n drawingId: string,\n marker: string | null\n ) {\n return axios.get(\n `${axios.env.ingestGpuApiUrl}/360/assets/${projectId}/${date}/${drawingId}`,\n {\n params: { marker: marker, assetType: assetType, name: floor },\n }\n )\n },\n update360(\n id: number,\n payload: _360AssetsRequestPayload,\n version = IngestVersions.V1\n ) {\n return axios.put(`${getIngestApiUrl(version)}/360/assets/${id}`, payload)\n },\n update360ByProjectDateName(\n projectId: string,\n date: string,\n floor: string,\n payload: _360AssetsRequestPayload,\n version = IngestVersions.V2\n ) {\n return axios.put(\n `${getIngestApiUrl(version)}/360/assets/${projectId}/${date}/${floor}`,\n payload\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 return axios.post(\n `${getIngestApiUrl(version)}/360/${projectId}/upload`,\n null,\n { params }\n )\n },\n upload(\n id: number,\n params: Record<string, unknown>,\n payload: _360AssetsUploadPayload,\n version = IngestVersions.V1\n ) {\n return axios.put(\n `${getIngestApiUrl(version)}/360/${id}/upload`,\n payload,\n { params }\n )\n },\n reprocess360(id: number) {\n return axios.put(`${axios.env.ingestApiUrl}/360/${id}/reprocess`)\n },\n drawingExists(\n payload: {\n params: {\n name: string\n project_id: string\n }\n },\n version = IngestVersions.V2\n ) {\n return axios.get(\n `${getIngestApiUrl(version)}/360/floors/exists?${toQueryString(\n payload.params ?? payload\n )}`\n )\n },\n getDrawings(\n payload: { params: DrawingsRequestPayload },\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(\n `${baseUrl}/360/floors/?${toQueryString(payload.params ?? payload)}`\n )\n },\n getDrawingById(\n id: number,\n projectExid: string,\n version = IngestVersions.V2\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.get(`${baseUrl}/360/floors/${id}?project_id=${projectExid}`)\n },\n updateDrawing(\n id: number,\n projectExid: string,\n payload: GenerateFloorPayload,\n version = IngestVersions.V2\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.put(\n `${baseUrl}/360/floors/${id}?project_id=${projectExid}`,\n payload\n )\n },\n deleteDrawing(id: number, version = IngestVersions.V2) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.delete(`${baseUrl}/360/floors/${id}`)\n },\n transferWalks(\n sourceId: number,\n targetId: number,\n projectExid: string,\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(\n `${baseUrl}/360/floors/${sourceId}/transfer-walks/${targetId}?project_id=${projectExid}`\n )\n },\n createDrawing(\n projectExid: string,\n payload: GenerateFloorPayload,\n createdBy: string,\n version = IngestVersions.V2\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.post(\n `${baseUrl}/360/floors/${projectExid}?created_by=${createdBy}`,\n payload\n )\n },\n fetchDrawingOverlay(\n id: number,\n params: { view: boolean },\n onDownloadProgress: (_progress: any) => {},\n version = IngestVersions.V2\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.get(`${baseUrl}/360/floors/${id}/overlay`, {\n params,\n onDownloadProgress,\n })\n },\n generate360map(\n projectId: string,\n params: Generate360MapRequestPayload,\n version = IngestVersions.V2\n ) {\n return axios.post(\n `${getIngestApiUrl(version)}/360/api/${projectId}/generate-360-map`,\n params\n )\n },\n get360QueueSize(\n params: _360QueueQueryParams,\n version = IngestVersions.V1\n ): Promise<Record<string, any>> {\n return axios.get(`${getIngestApiUrl(version)}/360/queue`, { params })\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 extraConfig: AxiosRequestConfig = {},\n version = IngestVersions.V1\n ): Promise<MobileCaptureSnapshot[]> {\n return axios.get(`${getIngestApiUrl(version)}/mobile/assets/`, {\n params,\n ...extraConfig,\n })\n },\n getMobileAssetPhoto(\n assetId: string | number,\n params: Record<string, unknown>,\n version = IngestVersions.V1\n ) {\n return axios.get(`${getIngestApiUrl(version)}/mobile/assets/${assetId}`, {\n params,\n })\n },\n deleteAsset(assetId: string | number, version = IngestVersions.V1) {\n return axios.delete(\n `${getIngestApiUrl(version)}/mobile/assets/${assetId}`\n )\n },\n },\n utils: {\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 IngestApi.assets360.get360QueueSize({}, v),\n IngestApi.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:\n v === IngestVersions.V1\n ? IngestVersions.V1.toUpperCase()\n : IngestVersions.V2.toUpperCase(),\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}\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","_360AssetLabel","_360Feature","_360IntergrationType","PathMarkerColor","AconexDocumentDataType","AconexFormComponentType","AconexMandatoryStatus","AconexIdentifiers","AnalyticsEventPageId","AnalyticsEvent","AnprDirection","AnprEventStatus","MediaType","MediaFileType","MediaStatus","MediaStatusId","ClipsCategory","BimModelType","BimUploadStatus","BIMLayerTypes","CameraStatus","IntensityChangeColors","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","MobileAssetsType","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","ThreeSixtyKeys","WidgetType","WidgetTypesByResource","CountryId","CountryCode","CameraRegion","AutomationProvider","AutomationType","AutomationConfigStep","ActiveUsersMetric","Foo","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","extraConfig","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","capitalizeFirstLetter","inputString","getAiApiUrl","AiApi","updatedBy","extraParams","anprEventId","eventBody","anprEventsIds","action","captureTime","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","queryParams","fileName","metrics","period","EvercamApi","provider","apiId","apiKey","widgetId","widgetKey","user","sessionId","dateTime","name","documentTypeId","hubId","parentFolderId","getDerivatives","folderId","timestamp","year","month","day","cancelToken","progressPhotoId","companyId","archive","PtzApi","presetId","isRecordingFromNvr","direction","useContinuous","zoomValue","getIngestApiUrl","version","IngestApi","baseUrl","date","floor","assetType","drawingId","marker","sourceId","targetId","createdBy","onDownloadProgress","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":[48]}