@evercam/api 1.0.0-e03adefb8 → 1.0.0-e405b2c39

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 (59) hide show
  1. package/README.md +3 -0
  2. package/dist/api/api/3dFirebaseApi.d.ts +17 -1
  3. package/dist/api/api/adminApi.d.ts +67 -33
  4. package/dist/api/api/aiApi.d.ts +26 -45
  5. package/dist/api/api/authzApi.d.ts +10 -1
  6. package/dist/api/api/client/axios.d.ts +1 -0
  7. package/dist/api/api/client/swr/Swr.d.ts +14 -0
  8. package/dist/api/api/client/swr/SwrStore.d.ts +10 -0
  9. package/dist/api/api/evercamApi.d.ts +42 -44
  10. package/dist/api/api/evercamLabsApi.d.ts +5 -2
  11. package/dist/api/api/ingestApi.d.ts +40 -12
  12. package/dist/api/api/ptzApi.d.ts +4 -0
  13. package/dist/api/api/videoWallApi.d.ts +7 -7
  14. package/dist/api/types/360.d.ts +188 -3
  15. package/dist/api/types/aconex.d.ts +102 -4
  16. package/dist/api/types/analytics.d.ts +89 -6
  17. package/dist/api/types/anpr.d.ts +5 -11
  18. package/dist/api/types/authz.d.ts +23 -0
  19. package/dist/api/types/automation.d.ts +51 -0
  20. package/dist/api/types/axios.d.ts +15 -0
  21. package/dist/api/types/camera.d.ts +23 -6
  22. package/dist/api/types/comments.d.ts +18 -2
  23. package/dist/api/types/company.d.ts +29 -1
  24. package/dist/api/types/coolify.d.ts +2 -0
  25. package/dist/api/types/countries.d.ts +0 -7
  26. package/dist/api/types/credentials.d.ts +1 -0
  27. package/dist/api/types/detections.d.ts +5 -20
  28. package/dist/api/types/errors.d.ts +1 -0
  29. package/dist/api/types/gateReport.d.ts +4 -101
  30. package/dist/api/types/index.d.ts +3 -0
  31. package/dist/api/types/ingest.d.ts +4 -0
  32. package/dist/api/types/kit.d.ts +55 -7
  33. package/dist/api/types/planner.d.ts +4 -1
  34. package/dist/api/types/procore.d.ts +13 -10
  35. package/dist/api/types/progressPhoto.d.ts +5 -23
  36. package/dist/api/types/project.d.ts +47 -3
  37. package/dist/api/types/recording.d.ts +1 -0
  38. package/dist/api/types/recycleBin.d.ts +14 -0
  39. package/dist/api/types/routeParams.d.ts +2 -1
  40. package/dist/api/types/router.d.ts +19 -0
  41. package/dist/api/types/shared.d.ts +1 -6
  42. package/dist/api/types/shares.d.ts +6 -144
  43. package/dist/api/types/siteAnalytics.d.ts +135 -29
  44. package/dist/api/types/snapshots.d.ts +9 -0
  45. package/dist/api/types/sso.d.ts +55 -0
  46. package/dist/api/types/streaming.d.ts +1 -2
  47. package/dist/api/types/time.d.ts +4 -0
  48. package/dist/api/types/user.d.ts +4 -0
  49. package/dist/api/types/videoWall.d.ts +34 -1
  50. package/dist/api/types/weather.d.ts +2 -0
  51. package/dist/api/types/widget.d.ts +27 -6
  52. package/dist/api/utils.d.ts +1 -0
  53. package/dist/index.js +1227 -866
  54. package/dist/index.js.map +1 -1
  55. package/dist/index.umd.cjs +1 -1
  56. package/dist/index.umd.cjs.map +1 -1
  57. package/dist/shared/types/components.d.ts +18 -3
  58. package/dist/shared/types/imagePlayer.d.ts +1 -1
  59. package/package.json +5 -4
@@ -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/drone.ts","../types/errors.ts","../types/gateReport.ts","../types/hdd.ts","../types/ingest.ts","../types/map.ts","../types/connector.ts","../types/notification.ts","../types/nvr.ts","../types/procore.ts","../types/progressPhoto.ts","../types/project.ts","../types/recording.ts","../types/roi.ts","../types/routeParams.ts","../types/router.ts","../types/shares.ts","../types/sim.ts","../types/systemCheck.ts","../types/planner.ts","../types/streaming.ts","../types/timelapse.ts","../types/user.ts","../types/videoWall.ts","../types/weather.ts","../types/comments.ts","../types/detections.ts","../types/shared.ts","../types/kit.ts","../types/auditLogs.ts","../types/snapshots.ts","../types/siteAnalytics.ts","../types/widget.ts","../types/countries.ts","../types/automation.ts","../types/posthog.ts","../api/client/customErrors.ts","../api/client/interceptors.ts","../api/client/axios.ts","../api/adminApi.ts","../api/videoWallApi.ts","../api/3dFirebaseApi.ts","../utils.ts","../api/aiApi.ts","../api/webRtcApi.ts","../api/weatherApi.ts","../api/evercamLabsApi.ts","../api/evercamApi.ts","../api/ptzApi.ts","../api/ingestApi.ts","../api/exNvrApi.ts","../api/authzApi.ts"],"sourcesContent":["import { DateType } from \"@/types/time\"\n\nexport type _360CameraParams = {\n azimuthAngle: number\n polarAngle: number\n}\n\nexport type _360Floor = {\n floorID: string\n name: string\n}\n\nexport type _360Scene = {\n date: string // DD-MM-YYYY\n dateID: string\n floors: _360Floor[]\n polarAngle: number\n azimuthAngle: number\n}\n\nexport type _360ProjectJsonResponse = {\n dates: _360Scene[]\n [key: string]: any\n}\n\nexport type MobileCaptureSnapshot = {\n id: string\n uploadedBy: string\n updatedAt: string //YYYY-MM-DDTHH:mm:SS.MS (ISO)\n assetType: string //mobile_photos or mobile_audios\n thumbnailUrl: string //presigned S3 URL\n}\n\nexport enum _360UrlParams {\n DateId = \"date_id\",\n Floor = \"floor\",\n Marker = \"marker\",\n PolarAngle = \"polarAngle\",\n AzimuthAngle = \"azimuthAngle\",\n}\n\nexport enum _360AssetType {\n Video = \"video\",\n Image = \"image\",\n Model = \"model\",\n Route = \"route\",\n MobilePhoto = \"mobile_photos\",\n MobileAudio = \"mobile_audios\",\n}\n\nexport enum _360Feature {\n BIM = \"BIM\",\n Minimap = \"Minimap\",\n Minimodel = \"Minimodel\",\n}\n\nexport enum _360IntergrationType {\n Evercam = \"Evercam\",\n Matterport = \"Matterport\",\n OpenSpace = \"Openspace\",\n HoloBuilder = \"Holobuilder\",\n DroneDeploy = \"Dronedeploy\",\n}\n\nexport type _360AssetsQueryParams = {\n page: number\n limit: number\n projectID: string\n date: DateType\n floor: string\n id: string\n}\n\nexport type _360AssetsRequestPayload = {\n projectId: string\n date: DateType\n floor: string\n uploadedBy?: string\n}\n\nexport type _360AssetsUploadPayload = {\n targetPointsCount: number\n assetType: string\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n deviceSerial: string\n startPosition: string\n endPosition: string\n isTimelapse: boolean\n isImagesOnly: boolean\n}\n\nexport type Generate360MapRequestPayload = {\n dateId: string\n floorId: string\n cameraOffset: string\n startPoint: string\n endPoint: string\n}\n","export type AconexUserProjectsResponsePayload = Array<{\n id: number\n name: string\n shortName: string\n startDate: string\n endDate: string\n}>\n\nexport type AconexDocumentSchemaField = {\n dataType: AconexDocumentDataType\n identifier: string\n schemaValues?: Array<{ id: string; value: string }>\n fieldName: string\n mandatoryStatus: AconexMandatoryStatus\n componentType?: AconexFormComponentType\n items?: Array<any>\n disabled?: boolean\n}\n\nexport enum AconexDocumentDataType {\n Long = \"LONG\",\n Integer = \"INTEGER\",\n String = \"STRING\",\n Boolean = \"BOOLEAN\",\n Date = \"DATE\",\n}\n\nexport enum AconexFormComponentType {\n Select = \"SelectField\",\n Text = \"TextField\",\n DateTime = \"DateTimeField\",\n Switch = \"SwitchField\",\n}\n\nexport enum AconexMandatoryStatus {\n Mandatory = \"MANDATORY\",\n NotMandatory = \"NOT_MANDATORY\",\n}\n\nexport type AconexAuthCallbackParams = {\n code: string\n location: string\n}\n\nexport type AconexEditedImageUploadRequestPayload = {\n projectExid: string\n snapshot: string\n}\n","export enum AnalyticsEventPageId {\n Timeline = \"Timeline\",\n Copilot = \"Copilot\",\n Recordings = \"Recordings\",\n Liveview = \"LiveView\",\n Compare = \"Compare\",\n BimCompare = \"BimCompare\",\n Sharing = \"Sharing\",\n Timelapse = \"Timelapse\",\n Project = \"Project\",\n AllProjects = \"AllProjects\",\n Tutorials = \"Tutorials\",\n SystemCheck = \"SystemCheck\",\n ProjectMapView = \"ProjectMapView\",\n AccountMapView = \"AccountMapView\",\n Automations = \"Automations\",\n ProgressPhotosUnsubscribe = \"ProgressPhotosUnsubscribe\",\n VideoWall = \"VideoWall\",\n ProjectSettings = \"ProjectSettings\",\n ProjectSettingsCameraSettings = \"ProjectSettings-CameraSettings\",\n ProjectSettingsMembers = \"ProjectSettings-Members\",\n ProjectSettingsOverview = \"ProjectSettings-Overview\",\n ProjectSettingsDangerZone = \"ProjectSettings-DangerZone\",\n Settings = \"Settings\",\n SettingsAccount = \"Settings-Account\",\n SettingsConnectors = \"Settings-Connectors\",\n MediaHub = \"MediaHub\",\n MediaOveriew = \"MediaOveriew\",\n GateReport = \"GateReport\",\n Bim = \"Bim\",\n Drone = \"Drone\",\n ThreeSixty = \"360\",\n Planner = \"Planner\",\n Widgets = \"Widgets\",\n Company = \"Company\",\n EmbeddedLive = \"EmbeddedLive\",\n EmbeddedRecordings = \"EmbeddedRecordings\",\n EmbeddedBimCompare = \"EmbeddedBimCompare\",\n GateReportInfo = \"GateReportInfo\",\n BimInfo = \"BimInfo\",\n DroneInfo = \"DroneInfo\",\n ThreeSixtyInfo = \"360Info\",\n BimCompareInfo = \"BimCompareInfo\",\n WeatherReport = \"WeatherReport\",\n PpeReport = \"PpeReport\",\n SmartSearch = \"SmartSearch\",\n}\n\nexport enum AnalyticsEvent {\n // Global events\n PageView = \"PageView\",\n OpenCompanyPage = \"OpenCompanyPage\",\n OpenSettings = \"OpenSettings\",\n ToggleHelpDialog = \"ToggleHelpDialog\",\n\n // Layout events\n LayoutToggleRightSidebar = \"Layout-ToggleRightSidebar\",\n LayoutResizeRightSidebar = \"Layout-ResizeRightSidebar\",\n LayoutThemeMode = \"Layout-ThemeMode\",\n\n // Features toggle events\n Xray = \"Xray-Toggle\",\n Weather = \"Weather-Toggle\",\n MarkUpTool = \"MarkUpTool-Toggle\",\n Comment = \"Comment-Toggle\",\n Compare = \"Compare-Toggle\",\n Copilot = \"Copilot-Toggle\",\n DownloadMediaOpen = \"DownloadMedia-Open\",\n\n // App settings events\n SettingsAccountUpdatePassword = \"UpdatePassword\",\n SettingsAccountUpdatePersonalInformation = \"UpdatePersonalInformation\",\n SettingsAccountRevokeSession = \"RevokeSession\",\n SettingsAccountCancelRevokeSession = \"CancelRevokeSession\",\n SettingsAccountClickRowsPerPage = \"ClickRowsPerPage\",\n SettingsAccountOpenDeleteAccountDialog = \"DeleteAccount\",\n SettingsConnectorsConnectToProcore = \"ConnectToProcore\",\n SettingsConnectorsConnectToAconex = \"ConnectToAconex\",\n SettingsConnectorsConnectToAutodesk = \"ConnectToAutodesk\",\n SettingsConnectorsConnectToVoyageControl = \"ConnectToVoyageControl\",\n SettingsConnectorsContactUsButtonClick = \"ClickContactUs\",\n SettingsConnectorsRemoveAconexConnection = \"RemoveAconex\",\n SettingsConnectorsRemoveAutodeskConnection = \"RemoveAutodesk\",\n SettingsConnectorsRemoveProcoreConnection = \"RemoveProcore\",\n SettingsConnectorsRemoveVoyageControlConnection = \"RemoveVoyageControl\",\n SettingsConnectorsToggleConnectorPromptDialog = \"ToggleConnectorPromptDialog\",\n SettingsConnectorsToggleVoyageControlDialog = \"ToggleVoyageControlDialog\",\n\n // Widgets events\n WidgetsAddWidgetClick = \"AddWidget\",\n WidgetsCancelClick = \"Cancel\",\n WidgetsEditHeight = \"EditHeight\",\n WidgetsEditHeightResolutionType = \"EditHeightResolutionType\",\n WidgetsEditWidth = \"EditWidth\",\n WidgetsEditWidthResolutionType = \"EditWidthResolutionType\",\n WidgetsLayout = \"ClickLayout\",\n WidgetsSaveClick = \"Save\",\n WidgetsSelectCamera = \"SelectCamera\",\n WidgetsSelectTypeBIMCompare = \"SelectTypeBIMCompare\",\n WidgetsSelectTypeLiveView = \"SelectTypeLiveView\",\n WidgetsSelectTypeRecordings = \"SelectTypeRecordings\",\n WidgetsSelectTypeVideoWall = \"SelectTypeVideoWall\",\n WidgetsSettingRefreshRate = \"EditRefreshRate\",\n WidgetsSettingRestrictRecentImagesInput = \"EditRestrictRecentImagesInput\",\n WidgetsSettingToggleBIMCompareDarkMode = \"ToggleBIMDarkMode\",\n WidgetsSettingToggleBIMCompareTimeLine = \"ToggleBIMTimeline\",\n WidgetsSettingToggleBIMCompareCalendar = \"ToggleBIMCalendar\",\n WidgetsSettingToggleDownload = \"ToggleDownload\",\n WidgetsSettingToggleFullScreen = \"ToggleFullScreen\",\n WidgetsSettingTogglePlayPause = \"TogglePlayPause\",\n WidgetsSettingToggleRecordingsCalendar = \"ToggleRecordingsCalendar\",\n WidgetsSettingToggleRecordingsDarkMode = \"ToggleRecordingsDarkMode\",\n WidgetsSettingToggleRestrictRecentImages = \"ToggleRestrictRecentImages\",\n WidgetsSettingToggleZoom = \"ToggleZoom\",\n WidgetsTogglePublicWidget = \"TogglePublicWidget\",\n\n // Player events\n PlayerSelectCamera = \"Player-SelectCamera\",\n PlayerDownload = \"Player-Download\",\n PlayerToggleFullscreen = \"Player-ToggleFullscreen\",\n PlayerEnableLive = \"Player-EnableLive\",\n PlayerTogglePlayback = \"Player-TogglePlayback\",\n PlayerSelectSpeed = \"Player-SelectSpeed\",\n PlayerSelectQuality = \"Player-SelectQuality\",\n PlayerJumptoNextTicks = \"Player-JumptoNextTicks\",\n PlayerJumptoPreviousTicks = \"Player-JumptoPreviousTicks\",\n PlayerSwitchMode = \"Player-SwitchMode\",\n PlayerZoomIn = \"Player-ZoomIn\",\n PlayerZoomOut = \"Player-ZoomOut\",\n\n // PTZ camera events\n PTZAddPresetClick = \"PTZ-AddPresetClick\",\n PTZCreatePreset = \"PTZ-CreatePreset\",\n PTZUpdatePreset = \"PTZ-UpdatePreset\",\n PTZDeletePreset = \"PTZ-DeletePreset\",\n PTZMoveDown = \"PTZ-MoveDown\",\n PTZMoveLeft = \"PTZ-MoveLeft\",\n PTZMoveRight = \"PTZ-MoveRight\",\n PTZMoveUp = \"PTZ-MoveUp\",\n PTZPresetSelect = \"PTZ-PresetSelect\",\n PTZResetPosition = \"PTZ-ResetPosition\",\n PTZToggleCreatePresetForm = \"PTZ-ToggleCreatePresetForm\",\n PTZToggleDeletePresetDialog = \"PTZ-ToggleDeletePresetDialog\",\n PTZToggleEditPresetForm = \"PTZ-ToggleEditPresetForm\",\n PTZTogglePresetsMenu = \"PTZ-TogglePresetsMenu\",\n PTZZoomIn = \"PTZ-ZoomIn\",\n PTZZoomOut = \"PTZ-ZoomOut\",\n\n // Timeline actions\n TimelineClickEvent = \"Timeline-ClickEvent\",\n TimelineCompareMoveBeforeMarker = \"Compare-MoveBeforeMarker\",\n TimelineCompareMoveAfterMarker = \"Compare-MoveAfterMarker\",\n TimelineCompareSlide = \"Compare-Slide\",\n TimelineSelectMilestoneItem = \"Timeline-SelectMilestoneItem\",\n TimelineSelectTimestamp = \"Timeline-SelectTimestamp\",\n\n // Copilot\n CopilotSendMessage = \"Copilot-SendMessage\",\n CopilotClickTimestamp = \"Copilot-ClickTimestamp\",\n CopilotRegenerate = \"Copilot-Regenerate\",\n CopilotError = \"Copilot-Error\",\n CopilotNavigation = \"Copilot-Navigation\",\n CopilotToggle = \"Copilot-Toggle\",\n\n // Timeline groups visibility events\n GroupsVisibilityMobileCapture = \"GroupsVisibility-MobileCapture\",\n GroupsVisibilityAnpr = \"GroupsVisibility-Anpr\",\n GroupsVisibilityComments = \"GroupsVisibility-Comments\",\n GroupsVisibilityMediaHub = \"GroupsVisibility-MediaHub\",\n GroupsVisibilityBimMilestones = \"GroupsVisibility-BimMilestines\",\n GroupsVisibilityDroneFlights = \"GroupsVisibility-DroneFlights\",\n GroupsVisibility360Walks = \"GroupsVisibility-360Walks\",\n GroupsVisibilityExNvrVideoRecordings = \"GroupsVisibility-ExNvrVideoRecordings\",\n GroupsVisibilityLuminance = \"GroupsVisibility-Luminance\",\n\n // Comments events\n CommentsPlaceMarker = \"Comments-PlaceMarker\",\n CommentsSave = \"Comments-Save\",\n CommentsCancelSave = \"Comments-CancelSave\",\n CommentsRemove = \"Comments-Remove\",\n CommentsCancelRemove = \"Comments-CancelRemove\",\n CommentsArchive = \"Comments-Archive\",\n CommentsCancelArchive = \"Comments-CancelArchive\",\n CommentsSelect = \"Comments-Select\",\n\n // Xray events\n XrayMove = \"Xray-Move\",\n XrayMoveBeforeMarker = \"Xray-MoveBeforeMarker\",\n XrayMoveAfterMarker = \"Xray-MoveAfterMarker\",\n XrayToggleExportDialog = \"Xray-ToggleExportDialog\",\n XrayDownload = \"Xray-Download\",\n XraySaveToMediaHub = \"Xray-SaveToMediaHub\",\n XarySelectDate = \"Xray-SelectDate\",\n XarySelectLatestDate = \"Xray-SelectLatestDate\",\n XarySelectOldestDate = \"Xray-SelectOldestDate\",\n XraySendToConnector = \"Xray-SendToConnector\",\n\n // Weather events\n WeatherGoBackDate = \"Weather-GoBackDate\",\n WeatherGoForwardDate = \"Weather-GoForwardDate\",\n WeatherReportExportFile = \"ExportFile\",\n WeatherReportExportType = \"ExportType\",\n WeatherReportMediaHubUploadFile = \"MediaHubUploadFile\",\n WeatherReportSelectStartDate = \"SelectStartDate\",\n WeatherReportSelectEndDate = \"SelectEndDate\",\n WeatherReportViewChart = \"ViewChart\",\n WeatherSelectDate = \"Weather-SelectDate\",\n WeatherSelectLegend = \"Weather-SelectLegend\",\n WeatherSelectProvider = \"Weather-SelectProvider\",\n WeatherSelectTempScale = \"Weather-SelectTempScale\",\n\n // Compare events\n CompareSlide = \"Slide\",\n CompareSelectBeforeDate = \"SelectBeforeDate\",\n CompareSelectBeforeLatestDate = \"SelectBeforeLatestDate\",\n CompareSelectBeforeOldestDate = \"SelectBeforeOldestDate\",\n CompareSelectAfterDate = \"SelectAfterDate\",\n CompareSelectAfterOldestDate = \"SelectAfterOldestDate\",\n CompareSelectAfterLatestDate = \"SelectAfterLatestDate\",\n CompareToggleExportDialog = \"ToggleExportDialog\",\n CompareSaveToMediaHub = \"SaveToMediaHub\",\n CompareGoToMediaHub = \"GoToMediaHub\",\n CompareDownloadAs = \"DownloadAs\",\n CompareCopyDownloadFileUrl = \"CopyDownloadFileUrl\",\n\n // Bim Compare events\n BimCompareSlide = \"BimCompare-Slide\",\n BimCompareSelectCameraDate = \"BimCompare-SelectCameraDate\",\n BimCompareSelectCameraLatestDate = \"BimCompare-SelectCameraLatestDate\",\n BimCompareSelectCameraOldestDate = \"BimCompare-SelectCameraOldestDate\",\n BimCompareSelectBimDate = \"BimCompare-SelectBimDate\",\n BimCompareSelectBimOldestDate = \"BimCompare-SelectBimOldestDate\",\n BimCompareSelectBimLatestDate = \"BimCompare-SelectBimLatestDate\",\n BimCompareSelectModel = \"BimCompare-SelectModel\",\n BimCompareChangeTransparency = \"BimCompare-ChangeTransparency\",\n BimCompareSelectTimelineDate = \"BimCompare-SelectTimelineDate\",\n BimCompareToggleExportDialog = \"BimCompare-ToggleExportDialog\",\n BimCompareSaveToMediaHub = \"BimCompare-SaveToMediaHub\",\n BimCompareGoToMediaHub = \"BimCompare-GoToMediaHub\",\n BimCompareDownloadAs = \"BimCompare-DownloadAs\",\n BimCompareCopyDownloadFileUrl = \"BimCompare-CopyDownloadFileUrl\",\n\n // Mark-up tool events\n MarkUpToolClose = \"MarkUpTool-Close\",\n MarkUpToolCopyImage = \"MarkUpTool-CopyImage\",\n MarkUpToolOpen = \"MarkUpTool-Open\",\n MarkUpToolSelectTool = \"MarkUpTool-SelectTool\",\n MarkUpToolSelectBlur = \"MarkUpTool-SelectBlur\",\n MarkUpToolSelectCrop = \"MarkUpTool-SelectCrop\",\n MarkUpToolSelectLine = \"MarkUpTool-SelectLine\",\n MarkUpToolSelectBrush = \"MarkUpTool-SelectBrush\",\n MarkUpToolSelectRectangle = \"MarkUpTool-SelectRectangle\",\n MarkUpToolSelectCircle = \"MarkUpTool-SelectCircle\",\n MarkUpToolSelectArrow = \"MarkUpTool-SelectArrow\",\n MarkUpToolSelectText = \"MarkUpTool-SelectText\",\n MarkUpToolUndo = \"MarkUpTool-Undo\",\n MarkUpToolRedo = \"MarkUpTool-Redo\",\n MarkUpToolSelectColor = \"MarkUpTool-SelectColor\",\n MarkUpToolApplyCrop = \"MarkUpTool-ApplyCrop\",\n MarkUpToolCancelCrop = \"MarkUpTool-CancelCrop\",\n MarkUpToolCancelSend = \"MarkUpTool-CancelSend\",\n MarkUpToolOpenEditName = \"MarkUpTool-OpenEditName\",\n MarkUpToolCancelEditName = \"MarkUpTool-CancelEditName\",\n MarkUpToolSaveEditedName = \"MarkUpTool-SaveEditedName\",\n MarkUpToolSaveToMediaHub = \"MarkUpTool-SaveToMediaHub\",\n MarkUpToolDownloadAs = \"MarkUpTool-DownloadAs\",\n MarkUpToolSendToConnector = \"MarkUpTool-SendToConnector\",\n\n // Ai Tools events\n AiToolToggleBrainToolsMenu = \"AITool-ToggleBrainToolsMenu\",\n AiToolSelectObjectDetection = \"AITool-SelectObjectDetection\",\n AiToolSelectAskChatGpt = \"AITool-SelectAskChatGpt\",\n AiToolSelectSegmentation = \"AITool-SelectSegmentation\",\n AiToolUpdateTransparency = \"AITool-UpdateTransparency\",\n\n // Recordings events\n RecordingsCancelExportDialog = \"CancelExportDialog\",\n RecordingsClickSupportLink = \"ClickSupportLink\",\n RecordingsCreateClip = \"CreateClip\",\n RecordingsToggleExportDialog = \"ToggleExportDialog\",\n RecordingToggleGateReportEvents = \"ToggleGateReportEvents\",\n RecordingsSelectDate = \"SelectDate\",\n RecordingsSelectDateClickMonthYear = \"SelectDate-ClickMonthYear\",\n RecordingsSelectLatestDate = \"SelectLatestDate\",\n RecordingsSelectOldestDate = \"SelectOldestDate\",\n\n // Sharing events\n SharingToggleAddUserDialog = \"ToggleAddUserDialog\",\n SharingToggleEditVisibilityOptionsDialog = \"ToggleEditVisibilityOptionsDialog\",\n SharingAddUser = \"AddUser\",\n SharingToggleDeleteUserDialog = \"ToggleDeleteUserDialog\",\n SharingDeleteUser = \"DeleteUser\",\n SharingSaveVisibilityOptions = \"SaveVisibilityOptions\",\n SharingCopyLink = \"CopyLink\",\n SharingResendInvite = \"ResendInvite\",\n SharingTransferOwnership = \"TransferOwnership\",\n SharingSortBy = \"SortBy\",\n SharingChangeAccessRight = \"ChangeAccessRight\",\n\n // ThreeSixty events\n ThreeSixtyList = \"360List\",\n ThreeSixtyChangeDate = \"ChangeDate\",\n ThreeSixtyChangeFloor = \"ChangeFloor\",\n ThreeSixtyCloseCompare = \"CloseCompare\",\n ThreeSixtyCloseForgeBIM = \"CloseForgeBIM\",\n ThreeSixtyDeleteComment = \"DeleteComment\",\n ThreeSixtyDisableMeasuringTool = \"DisableMeasuringTool\",\n ThreeSixtyDisableCommnetTool = \"DisableCommentTool\",\n ThreeSixtyEnableMeasuringTool = \"EnableMeasuringTool\",\n ThreeSixtyEnableCommentTool = \"EnableCommentTool\",\n ThreeSixtyLockCompare = \"LockCompare\",\n ThreeSixtyLockForgeBIM = \"LockForgeBIM\",\n ThreeSixtyMarkerThumbnailClicked = \"MarkerThumbnailClicked\",\n ThreeSixtyMiniMapMarkerClicked = \"MiniMapMarkerClicked\",\n ThreeSixtyOpen = \"Open\",\n ThreeSixtyOpenCompare = \"OpenCompare\",\n ThreeSixtyOpenForgeBIM = \"OpenForgeBIM\",\n ThreeSixtyOpenMarkersThumbnailsList = \"OpenMarkersThumbnailsList\",\n ThreeSixtyOpenCommentsList = \"OpenCommentsList\",\n ThreeSixtySaveComment = \"SaveComment\",\n ThreeSixtyUnarchiveComment = \"UnarchiveComment\",\n ThreeSixtyArchiveComment = \"ArchiveComment\",\n ThreeSixtyShareView = \"ShareView\",\n ThreeSixtyCommentClicked = \"CommentClicked\",\n ThreeSixtyToggleMarkersVisibility = \"ToggleMarkersVisibility\",\n ThreeSixtyToggleMinimapVisibility = \"ToggleMinimapVisibility\",\n ThreeSixtyToggleMiniModel = \"ToggleMiniModel\",\n ThreeSixtyToggleCommentsVisibility = \"ToggleCommentsVisibility\",\n ThreeSixtyTourPause = \"Tour-Pause\",\n ThreeSixtyTourPlay = \"Tour-Play\",\n ThreeSixtyTourSetSpeedXHalve = \"Tour-SetSpeedX0.5\",\n ThreeSixtyTourSetSpeedX1 = \"Tour-SetSpeedX1\",\n ThreeSixtyTourSetSpeedX2 = \"Tour-SetSpeedX2\",\n ThreeSixtyTourSetSpeedX4 = \"Tour-SetSpeedX4\",\n ThreeSixtyTourToggleLoop = \"Tour-ToggleLoop\",\n ThreeSixtyUnlockCompare = \"UnlockCompare\",\n ThreeSixtyUnlockForgeBIM = \"UnlockForgeBIM\",\n ThreeSixtyUpdateFloorName = \"UpdateFloorName\",\n\n // Drone events\n DroneAreaToolClick = \"AreaTool-Click\",\n DroneChangeDate = \"ChangeDate\",\n DroneChooseTagType = \"ChooseTagType\",\n DroneClickCameraLiveView = \"ClickCameraLiveView\",\n DroneClickCameraMarker = \"ClickCameraMarker\",\n DroneCompareToolClick = \"CompareTool-Click\",\n DroneCompareToolSaveToMediaHub = \"CompareToolSaveToMediaHub\",\n DroneCompareToolSliderMove = \"CompareTool-SliderMove\",\n DroneCompareToolToggleExportDialog = \"CompareToolToggleExportDialog\",\n DroneCopyLocationToClipboard = \"CopyLocationToClipboard\",\n DroneEnable2DImagery = \"Enable2DImagery\",\n DroneGenerateUploadFlight = \"GenerateUploadFlight\",\n DroneInspectionToolClick = \"InspectionTool-Click\",\n DroneMeasuringToolClick = \"MeasuringTool-Click\",\n DroneOpenHelpPanel = \"OpenHelpPanel\",\n DroneOpenImageViewer = \"OpenImageViewer\",\n DroneResetView = \"ResetView\",\n DroneSaveTag = \"SaveTag\",\n DroneSettingsToggle360PathsVisibility = \"Settings-Toggle360PathsVisibility\",\n DroneSettingsToggleCameraMarkersVisibility = \"Settings-ToggleCameraMarkersVisibility\",\n DroneSettingsToggleSurroundingBuildingsTool = \"Settings-ToggleSurroundingBuildingsTool\",\n DroneSettingsToggleTagsVisibility = \"Settings-ToggleTagsVisibility\",\n DroneShareLink = \"ShareLink\",\n DroneTagsToolClick = \"TagsTool-Click\",\n DroneToggleBimCompareTool = \"ToggleBimCompareTool\",\n DroneToggleFullScreen = \"ToggleFullScreen\",\n DroneToggleMapStyle = \"ToggleMapStyle\",\n DroneToggleQualityMode = \"ChooseQuality\",\n DroneToggleSideMenu = \"ToggleSideMenu\",\n DroneToggleImageryPlan = \"ToggleImageryPlan\",\n DroneToggleSceneMode = \"ToggleSceneMode\",\n DroneUploadFlight = \"UploadFlight\",\n DroneViewLocationInGoogleMaps = \"ViewLocationInGoogleMaps\",\n DroneVolumeToolClick = \"VolumeTool-Click\",\n DroneZoomIn = \"ZoomIn\",\n DroneZoomOut = \"ZoomOut\",\n\n // Planner events\n PlannerAddCameraClick = \"AddCameraClick\",\n PlannerAddSitePlanDrawingClick = \"AddSitePlanDrawingClick\",\n PlannerAddSitePlanClick = \"AddSitePlanClick\",\n PlannerAttachSitePlanDrawing = \"AttachSitePlanDrawing\",\n PlannerCameraMarkerEditFOVAngle = \"CameraMarker-EditFOVAngle\",\n PlannerCameraMarkerEditHeading = \"CameraMarker-EditHeading\",\n PlannerCameraMarkerEditName = \"CameraMarker-EditName\",\n PlannerCameraMarkerEditRadius = \"CameraMarker-EditRadius\",\n PlannerCameraMarkerSelectColor = \"CameraMarker-SelectColor\",\n PlannerCameraMarkerToggleVisibility = \"CameraMarker-ToggleVisibility\",\n PlannerCameraMarkerToggleDeleteDialog = \"CameraMarker-ToggleDeleteDialog\",\n PlannerCancelUploadSitePlanDrawing = \"CancelUploadSitePlanDrawing\",\n PlannerChangeLocation = \"ChangeLocation\",\n PlannerOpen = \"Open\",\n PlannerResetView = \"ResetView\",\n PlannerSitePlansList = \"SitePlansList\",\n PlannerToggleCamerasLabel = \"ToggleCamerasLabel\",\n PlannerToggleFullscreen = \"ToggleFullscreen\",\n PlannerToggleMapStyle = \"ToggleMapStyle\",\n PlannerToggleSaveSessionDialog = \"ToggleSaveSessionDialog\",\n PlannerUploadSitePlanDrawing = \"UploadSitePlanDrawing\",\n PlannerZoomIn = \"ZoomIn\",\n PlannerZoomOut = \"ZoomOut\",\n\n // Markers events\n MarkerClicked = \"MarkerClicked\",\n\n // Timelapse Creator events\n TimelapseToggleHelpDialog = \"ToggleHelpDialog\",\n TimelapseSelectCustomPeriod = \"SelectCustomPeriod\",\n TimelapseToggleCustomScheduleDialog = \"ToggleCustomScheduleDialog\",\n TimelapseSaveCustomSchedule = \"SaveCustomSchedule\",\n TimelapseToggleExportDialog = \"ToggleExportDialog\",\n TimelapseExportSelectStep = \"SelectStep\",\n TimelapseSelectOption = \"SelectOption\",\n TimelapseSelectSchedule = \"SelectSchedule\",\n TimelapseSaveToMediaHub = \"SaveToMediaHub\",\n TimelapseGoToMediaHub = \"GoToMediaHub\",\n TimelapseToggleUploadLogoDialog = \"ToggleUploadLogoDialog\",\n TimelapseUploadLogo = \"UploadLogo\",\n\n // Progress Photos events\n ProgressPhotoCancelPause = \"ProgressPhoto-CancelPause\",\n ProgressPhotoCancelResume = \"ProgressPhoto-CancelResume\",\n ProgressPhotoCancelDelete = \"ProgressPhoto-CancelDelete\",\n ProgressPhotoCreate = \"ProgressPhoto-Create\",\n ProgressPhotoDelete = \"ProgressPhoto-Delete\",\n ProgressPhotoEdit = \"ProgressPhoto-Edit\",\n ProgressPhotoEditCamerasFilter = \"ProgressPhoto-EditCamerasFilter\",\n ProgressPhotoEditDaysFilter = \"ProgressPhoto-EditDaysFilter\",\n ProgressPhotoEditProjectsFilter = \"ProgressPhoto-EditProjectsFilter\",\n ProgressPhotoEditSearchFilter = \"ProgressPhoto-EditSearchFilter\",\n ProgressPhotoEditStatusFilter = \"ProgressPhoto-EditStatusFilter\",\n ProgressPhotoEditUsersFilter = \"ProgressPhoto-EditUsersFilter\",\n ProgressPhotoFiltersClicked = \"ProgressPhoto-FiltersClicked\",\n ProgressPhotoPause = \"ProgressPhoto-Pause\",\n ProgressPhotoResume = \"ProgressPhoto-Resume\",\n ProgressPhotoResumeDelete = \"ProgressPhoto-ResumeDelete\",\n 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 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 ExportPdf = \"ExportPdf\",\n ExportCsv = \"ExportCsv\",\n FilterCameras = \"FilterCameras\",\n\n // Smart Search\n SmartSearchToggleQueryBuilder = \"SmartSearch-ToggleQueryBuilder\",\n SmartSearchToggleQuerySelector = \"SmartSearch-ToggleQuerySelector\",\n SmartSearchDeleteComponent = \"SmartSearch-DeleteComponent\",\n SmartSearchPageChange = \"SmartSearch-PageChange\",\n SmartSearchExecuteQuery = \"SmartSearch-ExecuteQuery\",\n SmartSearchAddComponent = \"SmartSearch-AddComponent\",\n SmartSearchConnectComponent = \"SmartSearch-ConnectComponent\",\n SmartSearchUpdateComponent = \"SmartSearch-UpdateComponent\",\n SmartSearchSavedQueryClick = \"SmartSearch-SavedQueryClick\",\n SmartSearchFilterSavedQueries = \"SmartSearch-FilterSavedQueries\",\n SmartSearchThumbnailHover = \"SmartSearch-ThumbnailHover\",\n SmartSearchThumbnailError = \"SmartSearch-ThumbnailError\",\n SmartSearchCameraSelected = \"SmartSearch-CameraSelected\",\n SmartSearchOptionClicked = \"SmartSearch-OptionClicked\",\n SmartSearchEditQuery = \"SmartSearch-EditQuery\",\n SmartSearchDeleteQuery = \"SmartSearch-DeleteQuery\",\n SmartSearchSaveQuery = \"SmartSearch-SaveQuery\",\n SmartSearchThumbnailPlay = \"SmartSearch-ThumbnailPlay\",\n SmartSearchExportFile = \"SmartSearch-ExportFile\",\n}\n","import {\n BoundingBox,\n CameraExid,\n DateType,\n GateReportVehicleType,\n TimelinePrecision,\n} from \"@/types\"\n\nexport type AnprQueryParams = {\n page?: number\n limit?: number\n firstSeen?: {\n gte: DateType\n }\n lastSeen?: {\n lte: DateType\n }\n captureTime?: {\n gte?: DateType\n lt?: DateType\n }\n direction?: { eq?: string } | string\n plateNumber?: { eq?: string } | string\n sort?: string\n fromDate?: DateType\n toDate?: DateType\n tab?: string\n}\n\nexport type AnprCountsQueryParams = {\n precision: TimelinePrecision\n fromDate?: string\n toDate?: string\n isPublic?: boolean\n cameras?: CameraExid[]\n direction?: AnprDirection\n isPlate?: boolean\n isDuplicate?: boolean\n vehicleTypes?: GateReportVehicleType[]\n camerasExid?: CameraExid[]\n}\n\nexport enum AnprDirection {\n Left = \"reverse\",\n Arrived = \"forward\",\n Unknown = \"unknown\",\n}\n\nexport type AnprEvent = {\n id: number\n plateNumber: string\n cameraExid: CameraExid\n cameraex: CameraExid\n picName: string\n eventTime: string\n insertedAt: string\n isDuplicate: boolean\n direction: AnprDirection\n updatedAt: string\n edited?: boolean\n isPlate: boolean\n isPostprocessed: boolean\n vehicleType?: GateReportVehicleType\n contextVehicleType?: GateReportVehicleType\n anprVehicleType?: string\n anprVehicleModel?: string\n anprVehicleMake?: string\n anprVehicleColor?: string\n anprVehicleSpeed?: number\n anprSnapshotLink: string\n contextSnapshotLink: string\n mainSnapshotLink: string\n contextCamera: string\n votedVehicleType: GateReportVehicleType | string\n roiId?: number\n captureTime: DateType\n metadata_: {\n evercamMetadata?: {\n anpr?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n context?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n }\n plateRecognizerMetadata?: {\n plateNumber?: string\n vehicleMake?: string\n vehicleType?: string\n vehicleColor?: string\n vehicleModel?: string\n vehicleOrientation?: string\n }\n }\n}\n\nexport type AnprCount = {\n date: string\n counts: Record<AnprDirection, number>\n}\n\nexport enum AnprEventStatus {\n IsPlate = \"is_plate\",\n NotPlate = \"not_plate\",\n IsDuplicate = \"is_duplicate\",\n NotDuplicate = \"not_duplicate\",\n}\n","import type { CameraExid, Exid, DateType } from \"@/types\"\n\nexport type MediaExid = Exid\n\nexport type Media = {\n project_exid?: string\n cameraExid?: CameraExid\n cameraName: string\n cameraTimezone: string\n createdAt: string\n fromDate: string\n id: number\n requesterEmail: string\n requesterName: string\n title: string\n toDate: string\n url?: string\n exid?: MediaExid\n embedCode?: string\n fileName?: string\n format?: string\n frames?: number\n link?: string\n public?: boolean\n type: MediaType\n status?: MediaStatus\n projectExid?: string\n thumbnailUrl?: string\n mediaUrl?: string\n}\n\nexport enum MediaType {\n EditedImage = \"edit\",\n ExternalUrl = \"url\",\n Clip = \"clip\",\n File = \"file\",\n LocalClip = \"local_clip\",\n XRay = \"x-ray\",\n Timelapse = \"timelapse\",\n Compare = \"compare\",\n MobileAsset = \"mobile-asset\",\n}\n\nexport enum MediaFileType {\n Gif = \"gif\",\n Mp4 = \"mp4\",\n Png = \"png\",\n Pdf = \"pdf\",\n Jpeg = \"jpeg\",\n}\n\nexport enum MediaStatus {\n Pending = \"Pending\",\n Creating = \"Creating\",\n Processing = \"Processing\",\n Extracting = \"Extracting\",\n Uploading = \"Uploading\",\n Completed = \"Completed\",\n Failed = \"Failed\",\n NoData = \"No Data\",\n}\n\nexport enum MediaStatusId {\n Pending = 0,\n Processing = 1,\n Completed = 2,\n Failed = 3,\n}\n\nexport type MediaFilterQueryParams = {\n title?: string\n sort?: string\n sortBy?: string\n dateRange?: string | string[]\n fromDate?: string\n toDate?: string\n cameraName?: string\n requesterEmail?: string\n type?: MediaType\n cameraExid?: string\n page?: number\n limit?: number\n camera?: string\n}\n\nexport type MediaUpdateRequestPayload = {\n name?: string\n title?: string\n public?: boolean\n}\n\nexport type MediaCreateRequestPayload = {\n fromDate: DateType\n toDate: DateType\n title: string\n type: MediaType\n fileUrl?: string\n fileExtension?: string\n url?: string\n content?: string\n cameraExid?: string\n requestedBy?: string\n notes?: string\n category?: ClipsCategory\n isUrgent?: boolean\n storeAsType?: MediaType\n}\n\nexport type MediaUsersResponsePayload = Array<{\n id: number\n email: string\n name: string\n}>\nexport enum ClipsCategory {\n HealthSafetySecurity = \"health_safety_security\",\n Legal = \"legal\",\n Marketing = \"marketing\",\n BestPracticies = \"best_practices\",\n}\n\nexport type MediaDeleteRequestPayload = {\n timelapseIds: (string | number)[]\n compareIds: (string | number)[]\n archiveIds: (string | number)[]\n}\n","import { DateTime, DateType } from \"@/types\"\n\nexport enum BimModelType {\n Architectural = \"Architectural\",\n Structural = \"Structural\",\n FourD = \"4D\",\n Mep = \"Mep\",\n}\n\nexport type BimSnapshotRequestPayload = {\n model: string\n layerTimestamp: string\n apiKey: string\n apiId: string\n}\n\nexport type BimSnapshotResponsePayload = {\n imageUrl?: string\n}\n\nexport type BimModelRequestPayload = {\n model?: string\n timestamp?: string\n apiKey?: string\n apiId?: string\n}\n\nexport type BimModelResponsePayload = {\n dates?: [string]\n height?: number\n imageUrl?: string\n model?: string\n models?: [string]\n rotation?: number\n scaleX?: number\n scaleY?: number\n viewerHeight?: number\n viewerWidth?: number\n width?: number\n x?: number\n y?: number\n}\n\nexport type BimCompareExportRequestPayload = {\n name: string\n cameraExid: string\n snapshotDate: string\n bimDate: string\n embed: string\n compareExid: string\n createAnimation: boolean\n bimTransparency?: number\n model?: string\n layerId?: number\n maskId?: number\n evercamWatermark?: boolean\n}\n\nexport type BimLayerResponsePayload = {\n id: number\n name: string\n insertedAt: DateTime\n updatedAt: DateTime\n shapes: string\n startAt: DateTime\n}\n\nexport enum BimUploadStatus {\n Initial = 0,\n Saving = 1,\n Success = 2,\n Failed = 3,\n}\n\nexport type BimCreationPayload = {\n title: string\n software:\n | \"synchro\"\n | \"navisworks\"\n | \"revit\"\n | \"tekla\"\n | \"archicad\"\n | \"solibri\"\n | \"bim360\"\n | \"other\"\n model: string\n apiKey: string\n apiId: string\n displayName: string\n fileUrl: string\n requestor: string\n finalView: boolean\n enableDistortion: boolean\n startAt: string\n}\n\nexport enum BIMLayerTypes {\n Mask = \"mask\",\n MeasuringGrid = \"measuring_grid\",\n BimArchitectural = \"bim_architectural\",\n BimStructural = \"bim_structural\",\n Bim4D = \"bim_4d\",\n BimMep = \"bim_mep\",\n RecordingsTag = \"recordings_tag\",\n Milestone = \"milestone\",\n}\n\nexport type BimLayersQueryParams = {\n layerType: BIMLayerTypes\n timestamp: DateType\n}\n\nexport type BIMLayerPostPayload = {\n name: string\n layerType: BIMLayerTypes\n startAt: DateType\n shapes: string\n zIndex: number\n}\n\nexport type BIMLayer = {\n id: number\n name: string\n layerType: BIMLayerTypes\n startAt: DateType\n insertedAt: DateType\n updatedAt: DateType\n shapes: string\n}\n\nexport type BimPendingImage = {\n url: string\n s3Url: string\n}\n\nexport type BimUploadCameraParameters = {\n distortionFov: [number]\n horizontalFov: number\n verticalFov: number\n focalLength1: number\n focalLength2: number\n centerX: number\n centerY: number\n}\n\nexport type PendingBimImagesParams = {\n model: string\n apiKey: string\n apiId: string\n}\n\nexport type ProcessPendingImagesBimParams = {\n model: string\n names: string[]\n enableDistortion: boolean\n apiId: string\n apiKey: string\n}\n\nexport type BimUploadsQueryParams = {\n page: number\n limit: number\n projectId: string\n id: string\n uploadedBy: string\n}\n\nexport type BimUploadPayload = {\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n}\n","import {\n AuditLogActionType,\n DateTime_Z_micros,\n DateType,\n EntityByExid,\n NvrDeviceType,\n PaginationParams,\n PowerSchedule,\n PowerType,\n ProjectExid,\n Schedule,\n} from \"@/types\"\n\nexport type CameraExid = string\n\nexport type CamerasByExid = EntityByExid<Camera>\n\nexport type Cartesian3 = {\n x: number\n y: number\n z: number\n}\n\nexport type Camera = {\n cameraPowerSchedule?: Schedule\n camPassword?: string\n camUsername?: string\n cloudRecordings: {\n frequency: number\n schedule: Schedule\n status: string\n storageDuration: string\n }\n createdAt: DateTime_Z_micros\n description: 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 isAccessRestricted?: boolean\n kitAlarms?: string[]\n}\n\nexport type AdminCamera = {\n cameraHost: string\n cameraHttpPort: number\n cameraModel: string\n cameraPassword: string\n cameraPictureEndpoint: string\n cameraRtspPort: number\n cameraScheme: string\n cameraUsername: string\n cameraFirmwareVersion: string\n cameraTimezone: string\n cloudRecordingFrequency: number\n cloudRecordingId: number\n cloudRecordingSchedule: Schedule\n cloudRecordingStatus: string\n cloudRecordingStorageDuration: number\n createdAt: DateTime_Z_micros\n description: null\n discoverable: false\n exid: CameraExid\n featureFlags: CameraFeatureFlag[]\n fovAngle: 45.0\n fovRadius: number\n heading: null\n id: number\n isPowerScheduleActive: true\n isPublic: false\n kitId?: number\n lastOnlineAt: DateTime_Z_micros\n lastPolledAt: DateTime_Z_micros\n location: { lat: number; lng: number }\n macAddress: string\n name: string\n nvrChannel: null\n nvrDeviceId: string\n nvrHost: string\n nvrHttpPort: number\n nvrModel: NvrModel\n nvrPassword: string\n nvrPictureEndpoint: string\n nvrRtspPort: number\n nvrScheme: string\n nvrUsername: string\n offlineReason: null\n pitch: null\n powerSchedule: Schedule\n projectExid: string\n projectFeatureFlags: []\n projectId: number\n projectName: string\n ptz: false\n recordingFromNvr: false\n roll: null\n routerId: number\n status: string\n storageProviders: []\n streamEndpoint: string\n timezone: string\n updatedAt: DateTime_Z_micros\n userApiId: string\n userApiKey: string\n userEmail: string\n userFullname: string\n userId: number\n zohoId: string\n thumbnailUrl?: string\n}\n\nexport type CameraMapMarker = {\n isOnline: boolean\n location: {\n lat: number\n lng: number\n }\n needFov: boolean\n rotation: number\n fovAngle: number\n fovRadius: number\n}\n\nexport enum CameraStatus {\n Online = \"online\",\n Offline = \"offline\",\n OfflineScheduled = \"offline_scheduled\",\n Decommissioned = \"decommissioned\",\n OnHold = \"on_hold\",\n Waiting = \"waiting\",\n UnderMaintenance = \"under_maintenance\",\n WaitingForSiteVisit = \"waiting_for_site_visit\",\n}\n\nexport enum CameraFeatureFlag {\n EdgeVideo = \"edge_video\",\n BimCompare = \"bim_compare\",\n TwoDBimCompare = \"2d_bim_compare\",\n ForgeBIMCompare = \"forge_bim_compare\",\n GateReport = \"gate_report\",\n VideoStream = \"video_stream\",\n WebRTC = \"webrtc\",\n ANPR = \"anpr\",\n ReverseANPR = \"reverse_anpr\",\n PTZ = \"ptz\",\n ObjectDetection = \"object_detection\",\n Segmentation = \"segmentation\",\n SegmentationAutoLabelling = \"segmentation_auto_labelling\",\n PpeMonitoring = \"ppe_monitoring\",\n}\n\nexport type CameraLogsRequestPayload = {\n limit: number\n page: number\n types: string\n from: string\n to: string\n}\n\nexport type CameraUpdateRequestPayload = {\n status?: string\n timezone?: string\n isPuclic?: boolean\n discoverable?: boolean\n fullname?: string\n lastOnline?: string\n owner?: string\n description?: string\n cameraPowerSchedule?: Schedule\n isPowerScheduleActive?: boolean\n powerSchedule?: object\n ptz?: boolean\n camUsername?: string\n camPassword?: string\n project?: { id: string; name: string }\n modelName?: string\n host?: string\n nvrChannel?: number\n nvrPortHttp?: string\n externalRtspPort?: string\n name?: string\n h264Url?: string\n snapshotUrl?: string\n nvrSnapshotUrl?: string\n routerId?: string | number\n coordinates?: Array<number>\n heading?: number\n fovAngle?: number\n fovRadius?: number\n featureFlags: CameraFeatureFlag[]\n isAccessRestricted?: boolean\n}\n\nexport type CamerasResponsePayload = {\n cameras?: Camera[]\n}\n\nexport type CameraLogsResponsePayload = {\n cameraExid: string\n cameraName: string\n logs?: Log[]\n details?: { customMessage?: string }\n}\n\nexport type CameraStatusLog = {\n start: string\n end: string\n state: CameraStatus\n}\n\nexport type Log = {\n details: {\n agent?: string\n country?: string\n countryCode?: string\n ip?: string\n with?: string\n message?: string\n status?: string\n type?: string\n }\n insertedAt: string\n type: string\n who: string\n}\n\nexport type NvrConfig = {\n apiUrl: string\n username?: string\n password?: string\n deviceId: string\n streamingUrl: string\n snapshotUrl: string\n bifUrl: string\n}\n\nexport enum NvrModel {\n YCam = \"y-cam\",\n Axis = \"axis\",\n Dahua = \"dahua\",\n Mobotix = \"mobotix\",\n Hikvision = \"hikvision\",\n Avigilion = \"avigilion\",\n Hanwha = \"hanwha\",\n Nxwitness = \"nxwitness\",\n ExNvr = \"ex_nvr\",\n}\n\nexport enum CameraModel {\n YCam = \"y-cam\",\n Axis = \"axis\",\n Dahua = \"dahua\",\n Mobotix = \"mobotix\",\n Milesight = \"milesight\",\n Hikvision = \"hikvision\",\n Avigilion = \"avigilion\",\n Hanwha = \"hanwha\",\n Other = \"other\",\n}\n\nexport type DroneCameraTransform = {\n position: Cartesian3\n direction: Cartesian3\n up: Cartesian3\n right: Cartesian3\n}\n\nexport type Footage = {\n cameraExid: string\n cameraName: string\n endDate: string | null\n startDate: string | null\n}\n\nexport type Hdd = {\n id: number\n location: string\n serialNumber: string\n hddStatus: string\n shelfBlock: string\n type: string\n size: string\n format: string\n footages: Array<Footage>\n reportedCapacity: string\n reportedFreeSpace: string\n reportedProperty: string\n reportedPath: string\n reportedHddType: string\n errorStatus: string\n canExpand: boolean\n}\n\nexport type CameraPath = {\n projectExid: ProjectExid\n cameraExid: CameraExid\n}\n\nexport type CheckCameraPortPayload = {\n address: string\n port: number\n}\n\nexport type CameraCreateRequestPayload = {\n status: CameraStatus\n timezone?: string\n powerSchedule?: Schedule\n isPowerScheduleActive?: boolean\n ptz?: boolean\n name: string\n coordinates?: [number, number]\n recordingFromNvr?: boolean\n CameraConfig: {\n model: CameraModel\n scheme?: \"http\" | \"https\"\n host: string\n httpPort: number\n username: string\n password: string\n rtspPort?: number\n pictureEndpoint?: string\n streamEndpoint?: string\n }\n nvr?: {\n model: NvrModel\n serial?: string\n deviceType?: NvrDeviceType\n macAddress?: string\n username: string\n password: string\n httpUrl: string\n rtspUrl?: string\n }\n cloudRecording?: {\n id?: number\n frequency: 1 | 2 | 4 | 5 | 6 | 10 | 12 | 30 | 60\n storageDuration: -1 | 1 | 7 | 30 | 90\n status: \"on\" | \"off\" | \"paused\" | \"on_scheduled\"\n schedule: Schedule\n }\n ownerId: number\n projectId: number\n}\n\nexport type CameraDeletePayload = {\n verify: string\n password: string\n}\n\nexport type SaveNotePayload = {\n noteType: string\n content: string\n}\n\nexport type CameraNote = {\n id: number\n cameraId: number\n noteType: string\n content: string\n insertedAt: DateType\n}\n\nexport type CreateCameraNotePayload = {\n id?: number\n cameraExid: CameraExid\n customMessage: string\n action: string\n}\n\nexport enum HddStatus {\n Error = \"error\",\n Idle = \"idle\",\n NotExist = \"notExist\",\n Unformatted = \"unformatted\",\n Ok = \"ok\",\n}\n\nexport type NvrQueryParams = PaginationParams & {\n ownerId: number\n cameraName: string\n cameraExid: CameraExid\n cameraIp: string\n hddStatus: HddStatus\n}\n\nexport type OfflineCamera = {\n id: number\n exid: string\n name: string\n fullname: string\n timezone: string\n status: CameraStatus\n zohoId: string\n externalHost: string\n nvrHttpPort: string\n externalRtspPort: string\n username: string\n password: string\n createdAt: DateType\n lastPolledAt: DateType\n lastOnlineAt: DateType\n powerType: PowerType\n powerSchedule: PowerSchedule\n batteryReadingsLastSeen: DateType\n batteryReadingsLastVoltage: number\n sims: {\n billPayer: string\n number: string\n provider: string\n }[]\n}\n\nexport type OfflineCameraQueryParams = PaginationParams & {\n status: CameraStatus\n cameraExid: CameraExid\n cameraName: string\n timezone: string\n cameraOwner: string\n powerType: PowerType\n powerSchedule: PowerSchedule\n batteryReadingsLastVoltage: number\n}\n\nexport type OfflineCameraNote = {\n action: AuditLogActionType\n username: string\n insertedAt: DateType\n cameraId: number\n customMessage: string\n}\n\nexport type OfflineCameraNoteResponse = {\n publicNotes: OfflineCameraNote[]\n privateNotes: OfflineCameraNote[]\n}\n\nexport type SiteVisitCamerasQueryParams = PaginationParams & {\n cameraOwner: string\n}\n\nexport type ProjectCamera = {\n apiId: string\n apiKey: string\n exid: string\n id: number\n name: string\n ownerEmail: string\n ownerFullname: string\n}\n\nexport enum DuplicatedCameraFields {\n Host = \"host\",\n CameraHttpPort = \"camera_http_port\",\n NvrHttpPort = \"nvr_http_port\",\n NvrDeviceId = \"nvr_device_id\",\n}\n\nexport type DuplicatedCameraObject = {\n exid: string\n name: string\n cameraStatus: string\n crStatus: string\n}\n\nexport type DuplicatedCameraResponse = {\n cameras: DuplicatedCameraObject[]\n host: string\n cameraHttpPort: number\n nvrHttpPort: number\n nvrDeviceId: string\n count: number\n}\n\nexport type MergeDuplicatedCameraPayload = {\n masterCamera: Record<string, unknown>\n shareeCameras: Record<string, unknown>\n}\n\nexport type FetchCameraQueryParams = PaginationParams & {\n status: CameraStatus\n isPublic: boolean\n featureFlags: CameraFeatureFlag[]\n ptz: boolean\n frequency: number\n channel: number\n cameraExid: CameraExid\n cameraExids: CameraExid[]\n cameraName: string\n projectName: string\n timezone: string\n region: string\n cameraModel: CameraModel\n nvrModel: NvrModel\n cameraOwner: string\n ownerEmail: string\n isRecording: boolean\n cloudRecordingStorageDuration: number\n cameraIds: string\n hasLocation: boolean\n externalHttpPort: string\n externalRsptPort: string\n nvrHttpPort: string\n}\n","import { DateType, PaginationParams } from \"@/types\"\n\nexport type Compare = {\n cameraExid: string\n createdAt: string\n embedCode: string\n embedTime: boolean\n fileName: string\n frames: number\n fromDate: string\n id: number\n exid: string\n mediaUrls: {\n gif: string\n mp4: string\n }\n public: boolean\n requesterEmail: string\n requesterName: string\n status: string\n thumbnailUrl: string\n title: string\n toDate: string\n type: string\n}\n\nexport enum CompareStatus {\n Processing = 0,\n Completed = 1,\n Failed = 2,\n}\n\nexport type CompareRequestPayload = {\n name: string\n afterDate: string\n beforeDate: string\n embed: string\n compareExid: string\n cameraExid?: string\n createAnimation: boolean\n evercamWatermark?: boolean\n}\n\nexport type AdminCompare = {\n id: number\n compareExid: string\n exid: string\n projectId: string\n apiId: string\n apiKey: string\n name: string\n fullname: string\n camera: string\n status: number\n embedCode: string\n insertedAt: DateType\n}\n\nexport type AdminCompareQueryParams = PaginationParams & {\n name: string\n camera: string\n}\n","import type {\n AnalyticsEventPageId,\n CameraExid,\n CameraFeatureFlag,\n CameraStatus,\n ProjectExid,\n ProjectFeatureFlag,\n ProjectStatus,\n} from \"@/types\"\n\nexport enum CopilotMessageAuthor {\n Copilot = \"copilot\",\n User = \"user\",\n System = \"system\",\n}\n\nexport enum CopilotMessageType {\n Text = \"text\",\n Progress = \"progress\",\n Error = \"error\",\n Json = \"json\",\n}\n\nexport type CopilotMessage = {\n content: string\n url?: string\n type: CopilotMessageType\n id?: number\n conversationId?: number\n}\n\nexport enum CopilotStepId {\n SendToLLM = \"send_to_llm\",\n FunctionCallRequest = \"function_call_request\",\n ExecFunctionCall = \"exec_function_call\",\n SendToUser = \"send_to_user\",\n RequestMissingFields = \"request_missing_fields\",\n CompletedFieldsResponse = \"completed_fields_response\",\n SendRawToolCallResponse = \"send_raw_tool_call_response\",\n SubmitToolOutputsToLLM = \"submit_tool_outputs_to_llm\",\n CancelCall = \"cancel_call\",\n}\n\nexport enum CopilotMissingFieldsLabels {\n ProjectExid = \"Project\",\n CameraExid = \"Camera\",\n FromDate = \"Start date\",\n ToDate = \"End date\",\n}\n\nexport type CopilotMissingField<T = any> = {\n name: string\n label: string\n value: any\n type: string\n toolId: string\n error?: T\n}\n\nexport type CopilotMissingFields = Record<number, CopilotMissingField[]>\n\nexport type UserConversations = CopilotConversation & {\n Message: CopilotMessage[]\n}\n\nexport enum CopilotSocketEvent {\n ConversationStart = \"conversation:start\",\n ConversationCreated = \"conversation:created\",\n LLMMessageChunk = \"llm:message:chunk\",\n LLMMessageComplete = \"llm:message:complete\",\n LLMMessageLoading = \"llm:message:loading\",\n LLMRequestCancel = \"llm:request:cancel\",\n LLMRequestCanceled = \"llm:request:canceled\",\n UserMessage = \"user:message\",\n ContextError = \"chat:contextError\",\n ChatError = \"chat:chatError\",\n MissingFields = \"chat:missingFields\",\n MissingFieldsCompleted = \"chat:missingFields:completed\",\n SystemToolCallResponse = \"system:toolCall:response\",\n ChangeProvider = \"chat:changeProvider\",\n}\n\nexport type CopilotConversation = {\n id: number\n user: string\n model: string\n context: string\n cameraExid: CameraExid\n projectExid: ProjectExid\n startDate: string\n endDate: string\n messagesCount: number\n}\n\nexport enum CopilotProvider {\n Gemini = \"gemini\",\n ChatGPT = \"chatgpt\",\n}\n\nexport enum CopilotSuggestion {\n UserManual = \"user_manual\",\n GateReport = \"gate_report\",\n Weather = \"weather\",\n Clip = \"clip\",\n Timelapse = \"timelapse\",\n Chart = \"chart\",\n}\n\nexport enum CopilotChatProvider {\n Gemini = \"gemini\",\n ChatGpt = \"chatGpt\",\n}\n\nexport enum CopilotLayout {\n Floating = \"floating\",\n}\n\nexport enum CopilotToolId {\n GetReports = \"getReports\",\n GetVehiclesDetections = \"getVehiclesDetections\",\n GetVehiclesDetectionsCounts = \"getVehiclesDetectionsCounts\",\n GetWeather = \"getWeather\",\n CreateClip = \"createClip\",\n NavigateToPage = \"navigateToPage\",\n CreateTimelapse = \"createTimelapse\",\n RequestMissingFields = \"requestMissingFields\",\n RenderCharts = \"renderCharts\",\n}\n\nexport type CopilotSystemToolCallResponse<I = unknown, O = unknown> = {\n toolId?: CopilotToolId\n input?: I\n output?: O\n}\n\nexport type CopilotCamera = {\n name: string\n exid: CameraExid\n status: CameraStatus\n featureFlags?: CameraFeatureFlag[]\n}\n\nexport type CopilotProject = {\n name: string\n exid: ProjectExid\n status: ProjectStatus\n featureFlags?: ProjectFeatureFlag[]\n cameras?: CopilotCamera[]\n}\n\nexport type CopilotMessageContext = {\n pageId?: AnalyticsEventPageId\n selectedCamera?: CopilotCamera\n selectedProject?: CopilotProject\n}\n\nexport type CopilotMessageStep = {\n args: string[]\n depth: number\n id?: number\n message_id?: number\n step: CopilotStepId\n timestamp: string\n}\n\nexport enum CopilotMissingFieldComponent {\n Select = \"SelectField\",\n DateTime = \"DateTimeField\",\n Schedule = \"ScheduleField\",\n MultiOptions = \"MultiOptionsField\",\n Switch = \"SwitchField\",\n}\n\nexport enum CopilotMissingFieldName {\n ProjectExid = \"projectExid\",\n CameraExid = \"cameraExid\",\n FromDate = \"fromDate\",\n ToDate = \"toDate\",\n Schedule = \"schedule\",\n Duration = \"duration\",\n}\n\nexport enum CopilotMissingFieldType {\n Boolean = \"boolean\",\n String = \"string\",\n Number = \"number\",\n}\n\nexport type CopilotCompletedFields = Record<string, unknown>\n","export type DroneModel = {\n cesiumId: string\n cesiumId2D: string\n date: string\n cesiumPointCloudId: string\n pointSize: string\n maximumScreenSpaceError: string\n link: string\n trueIndex: number\n}\n\nexport type DroneProjectJsonResponse = {\n models: DroneModel[]\n [key: string]: any\n}\n\nexport enum DroneUrlParams {\n Date = \"date\",\n}\n","import { AxiosError } from \"axios\"\n\nexport enum ErrorType {\n BadRequestError = \"BadRequestError\",\n NotFoundError = \"NotFoundError\",\n UnauthorizedError = \"UnauthorizedError\",\n GatewayTimeoutError = \"GatewayTimeoutError\",\n BadGatewayError = \"BadGatewayError\",\n ForbiddenError = \"ForbiddenError\",\n HlsError = \"HlsError\",\n SnapshotError = \"SnapshotError\",\n ConflictError = \"ConflictError\",\n InternalServerError = \"InternalServerError\",\n CanceledError = \"CanceledError\",\n UnhandledRejection = \"UnhandledRejection\",\n TypeError = \"TypeError\",\n}\n\nexport enum ErrorCode {\n InternalServerError = 500,\n BadGatewayError = 502,\n ServiceUnavailableError = 503,\n GatewayTimeoutError = 504,\n BadRequestError = 400,\n UnauthorizedError = 401,\n ForbiddenError = 403,\n NotFoundError = 404,\n ConflictError = 409,\n}\n\nexport enum EvercamApiErrorCode {\n BadArgument = \"BAD_ARGUMENT\",\n DeviceError = \"DEVICE_ERROR\",\n UnsupportedOperation = \"UNSUPPORTED_OPERATION\",\n QuotaExceeded = \"QUOTA_EXCEEDED\",\n InvalidCredentials = \"INVALID_CREDENTIALS\",\n InvalidToken = \"INVALID_TOKEN\",\n ProviderAuthFailure = \"PROVIDER_AUTH_FAILURE\",\n ProviderEmailRequired = \"PROVIDER_EMAIL_REQUIRED\",\n PasswordReset = \"PASSWORD_RESET\",\n RequireShareRequest = \"REQUIRE_SHARE_REQUEST\",\n Generic = \"GENERIC\",\n}\n\ntype _EvercamApiError = {\n code: EvercamApiErrorCode\n message: string\n details: string\n innerError?: _EvercamApiError\n}\n\nexport type EvercamApiError = AxiosError<_EvercamApiError>\n","import {\n AnprDirection,\n CameraExid,\n Date_HH,\n Date_YYYY,\n Date_YYYY_MM,\n Date_YYYY_MM_DD,\n DateTime,\n DateTimeSpaceSeparated,\n DateType,\n PaginatedItems,\n PaginationParams,\n ProjectExid,\n ProjectFeatureFlag,\n Timestamp,\n} from \"@/types\"\n\nexport enum GateReportDetectionType {\n Auto = \"auto\",\n Manual = \"manual\",\n Cloud = \"cloud\",\n Edge = \"edge\",\n}\n\nexport enum GateReportEventType {\n Arrived = \"arrived\",\n Left = \"left\",\n}\n\nexport enum DetectionLabel {\n ArticulatedDumper = \"articulated-dumper\",\n BackhoeLoader = \"backhoe-loader\",\n CompactExcavator = \"compact-excavator\",\n ConcretePump = \"concrete-pump\",\n Dumper = \"dumper\",\n Excavator = \"excavator\",\n FlatbedSemiTrailer = \"flatbed-semi-trailer\",\n IndustrialTruck = \"industrial-truck\",\n Loader = \"loader\",\n Mewps = \"mewps\",\n MobileCrane = \"mobile-crane\",\n MobileCrusher = \"mobile-crusher\",\n OtherTruck = \"other-truck\",\n PileDrillingRig = \"pile-drilling-rig\",\n RoadVehicle = \"road-vehicle\",\n Roller = \"roller\",\n SemiTrailer = \"semi-trailer\",\n SkidSteerLoader = \"skid-steer-loader\",\n SkipTruck = \"skip-truck\",\n SmallTruck = \"small-truck\",\n TankTruck = \"tank-truck\",\n TeleHandler = \"tele-handler\",\n TippingTruck = \"tipping-truck\",\n TowerCrane = \"tower-crane\",\n TowerMountedConcreteMix = \"tower-mounted-concrete-mix\",\n TractorDozer = \"tractor-dozer\",\n TruckHead = \"truck-head\",\n TruckMixer = \"truck-mixer\",\n TruckMountedMobileCrane = \"truck-mounted-mobile-crane\",\n Unknown = \"unknown\",\n Worker = \"worker\",\n Rubble = \"rubble\",\n Puddle = \"puddle\",\n DirtGravelCementPile = \"dirt_gravel_cement_pile\",\n DetachedExcavatorBucket = \"detached_excavator_bucket\",\n IntermediateBulkContainer = \"intermediate_bulk_container\",\n WoodenPallet = \"wooden_pallet\",\n ShippingContainer = \"shipping_container\",\n AirCompressor = \"air_compressor\",\n DryMortarSilo = \"dry_mortar_silo\",\n Fence = \"fence\",\n Brick = \"brick\",\n Barrel = \"barrel\",\n Cardboard = \"cardboard\",\n CardboardBox = \"cardboard_box\",\n CementBag = \"cement_bag\",\n ConcreteBlock = \"concrete_block\",\n ConcretePipe = \"concrete_pipe\",\n ConcreteSlab = \"concrete_slab\",\n PlasticWrap = \"plastic_wrap\",\n ContainerOffice = \"container_office\",\n ElectricalPole = \"electrical_pole\",\n ElectricalBox = \"electrical_box\",\n FireHydrant = \"fire_hydrant\",\n HoseReel = \"hose_reel\",\n Ladder = \"ladder\",\n MetalBeam = \"metal_beam\",\n MetalPipe = \"metal_pipe\",\n Pallet = \"pallet\",\n Pillar = \"pillar\",\n PlasticBin = \"plastic_bin\",\n PlasticBucket = \"plastic_bucket\",\n PlasticPipe = \"plastic_pipe\",\n PublicToilet = \"public_toilet\",\n Sign = \"sign\",\n SiteToolbox = \"site_toolbox\",\n StreetSink = \"street_sink\",\n TrafficBarrier = \"traffic_barrier\",\n TrafficCone = \"traffic_cone\",\n Wall = \"wall\",\n WasteContainer = \"waste_container\",\n WaterStorageTank = \"water_storage_tank\",\n Wheelbarrow = \"wheelbarrow\",\n Window = \"window\",\n WoodPlank = \"wood_plank\",\n CableReel = \"cable_reel\",\n AirConditioningSystem = \"air_conditioning_system\",\n WoodenBox = \"wooden_box\",\n PlasticBag = \"plastic_bag\",\n MaterialStack = \"material_stack\"\n}\n\nexport enum SegmentLabel {\n AirCompressor = \"air_compressor\",\n Brick = \"brick\",\n Building = \"building\",\n CableReel = \"cable_reel\",\n CementMixer = \"cement_mixer\",\n CementPile = \"cement_pile\",\n ConcreteBarrier = \"concrete_barrier\",\n ConcreteBlock = \"concrete_block\",\n ConstructionContainer = \"construction_container\",\n ConstructionSite = \"construction_site\",\n Crane = \"crane\",\n DetachedExcavatorBucket = \"detached_excavator_bucket\",\n DryMortarSilo = \"dry_mortar_silo\",\n DumpTruck = \"dump_truck\",\n Dumpster = \"dumpster\",\n Fence = \"fence\",\n FireHydrant = \"fire_hydrant\",\n GarbageBin = \"garbage_bin\",\n HoseReel = \"hose_reel\",\n Ibc = \"ibc\",\n JerryCan = \"jerry_can\",\n MetalBeam = \"metal_beam\",\n MiniDumper = \"mini_dumper\",\n Pallet = \"pallet\",\n Pipe = \"pipe\",\n Puddle = \"puddle\",\n Rebar = \"rebar\",\n Rubble = \"rubble\",\n Scaffolding = \"scaffolding\",\n ShippingContainer = \"shipping_container\",\n SiteOffice = \"site_office\",\n TrafficCone = \"traffic_cone\",\n Transformer = \"transformer\",\n Vehicle = \"vehicle\",\n Window = \"window\",\n WoodenSpool = \"wooden_spool\",\n Unknown = \"unknown\",\n}\n\nexport enum GateReportVehicleType {\n ConcretePump = DetectionLabel.ConcretePump,\n FlatbedSemiTrailer = DetectionLabel.FlatbedSemiTrailer,\n OtherTruck = DetectionLabel.OtherTruck,\n RoadVehicle = DetectionLabel.RoadVehicle,\n SemiTrailer = DetectionLabel.SemiTrailer,\n SmallTruck = DetectionLabel.SmallTruck,\n TankTruck = DetectionLabel.TankTruck,\n TippingTruck = DetectionLabel.TippingTruck,\n TruckHead = DetectionLabel.TruckHead,\n TruckMixer = DetectionLabel.TruckMixer,\n Unknown = DetectionLabel.Unknown,\n}\n\nexport type GateReportVehicleTypeItem = {\n name: string\n id: GateReportVehicleType\n}\n\nexport type GateReportEvent = {\n id: number\n vehicleTypes: GateReportVehicleType\n exid: string\n cameraExid?: string\n boundingBox: BoundingBox\n detectionType: GateReportDetectionType\n edited: boolean\n eventTime: string\n timestamp?: string\n eventType: GateReportEventType\n isPublic: boolean\n roiId: string\n truckType: GateReportVehicleType\n thumbnailUrl?: string\n}\n\nexport type GateReportArrivedEvent = GateReportEvent & {\n eventType: GateReportEventType.Arrived\n}\n\nexport type GateReportLeftEvent = GateReportEvent & {\n eventType: GateReportEventType.Left\n}\n\nexport type GateReportVerifiedDay = {\n id: number\n day: Date_YYYY_MM_DD\n isMatched: boolean\n insertedAt: DateTime\n updatedAt: DateTime\n verifiedBy: string\n cameraExid: CameraExid\n projectExid: ProjectExid\n}\n\nexport type BoundingBox = {\n xmax: number\n xmin: number\n ymax: number\n ymin: number\n}\n\nexport type EventsCountsByVehicleType = Record<GateReportVehicleType, number>\n\nexport type EventsCount = {\n in: number\n out: number\n source: GateReportDataSource\n}\n\nexport type YearlyEventCount = EventsCount & {\n year: Date_YYYY\n}\n\nexport type MonthlyEventCount = EventsCount & {\n month: Date_YYYY_MM\n}\n\nexport type DailyEventCount = EventsCount & {\n day: Date_YYYY_MM_DD\n}\n\nexport type HourlyEventCount = {\n hour: Date_HH\n count: number\n}\n\nexport type EventCountRequestPayload = {\n vehicleTypes?: GateReportVehicleType[]\n isPublic?: boolean\n camerasExid?: string[]\n}\n\nexport type EventCountResponsePayload = {\n days?: DailyEventCount[]\n months?: MonthlyEventCount[]\n years?: YearlyEventCount[]\n}\n\nexport type ProcessedDaysRequestPayload = {\n apiId?: string\n apiKey?: string\n isPublic?: Boolean\n}\n\nexport type EventsRequestPayload = {\n apiId?: string\n apiKey?: string\n camerasExid?: CameraExid[]\n cameras?: string[]\n eventType?: GateReportEventType\n fromDate?: DateTime\n isPublic?: boolean\n toDate?: DateTime\n truckTypes?: GateReportVehicleType[]\n vehicleTypes?: string[]\n} & PaginationParams\n\nexport type EventsResponsePayload = PaginatedItems<GateReportEvent>\n\nexport enum GateReportDataSource {\n Anpr = \"anpr\",\n Events = \"events\",\n}\n\nexport type GateReportResponsePayload = {\n source: GateReportDataSource\n results: PaginatedItems<GateReportEvent>\n}\n\nexport enum GateReportEventDirection {\n In = \"in\",\n Out = \"out\",\n Unknown = \"unknown\",\n}\n\nexport type GatReportRequestPayload = {\n camerasExid?: CameraExid[]\n eventType?: GateReportEventType\n fromDate?: DateTime\n isPublic?: boolean\n toDate?: DateTime\n vehicleTypes?: GateReportVehicleType[]\n} & PaginationParams\n\nexport enum GateReportExportType {\n Pdf = \"pdf\",\n Csv = \"csv\",\n}\n\nexport type EventsExportRequestParameters = {\n vehicleTypes: GateReportVehicleType[]\n fileType: GateReportExportType\n fromDate: DateTimeSpaceSeparated\n toDate: DateTimeSpaceSeparated\n camerasExid: CameraExid[]\n eventType: GateReportEventType\n}\n\nexport type AnprBasedGateReportExportRequestParams = {\n vehicleTypes?: GateReportVehicleType[]\n fileType?: GateReportExportType\n fromDate?: DateTimeSpaceSeparated\n toDate?: DateTimeSpaceSeparated\n camerasExid?: CameraExid[]\n direction?: AnprDirection\n}\n\ntype X1 = number\ntype Y1 = number\ntype X2 = number\ntype Y2 = number\n\nexport enum GateReportROIShapeType {\n Rectangle = \"rectangle\",\n Direction = \"direction\",\n Line = \"line\",\n}\n\nexport type GateReportROIShape = {\n coordinates: [[X1, Y1], [X2, Y2]]\n type: GateReportROIShapeType\n}\n\nexport type GateReportROI = {\n cameraex?: string\n fromDate?: string\n directionFilter?: string\n id?: number\n insertedAt?: Timestamp\n isactive?: boolean\n name?: string\n roiType?: string\n updatedAt?: Timestamp\n shapes?: GateReportROIShape[]\n}\n\nexport enum GateReportProcessingStatus {\n Processed = \"processed\",\n Unprocessed = \"unprocessed\",\n}\n\nexport const VEHICLE_TYPE_IDS = Object.values(GateReportVehicleType)\n\nexport type GateReportCamera = {\n exid: number\n name: string\n status: string\n note: string\n last_published_day: DateType\n last_processed_day: DateType\n}\n\nexport type GateReportProject = {\n exid: string\n name: string\n status: string\n featureFlags: ProjectFeatureFlag\n cameras: GateReportCamera[]\n}\n\nexport type AnalyticsParameters = {\n id: number\n cameraex: string\n processingType: string\n startDate: DateTime\n endDate: DateTime\n skipWeekend: boolean\n hourSiteOpening: number\n hourSiteClosure: number\n gateReportActive: boolean\n countingActive: boolean\n queueSystem: string\n reprocess: boolean\n framesToSkip: number\n detection_model: string\n detectionThreshold: number\n printLogsFrame: number\n crossingVectorAngleLimit: number\n minTruckLife: number\n insideMinTime: number\n trackerMaxAge: number\n trackerMinHit: number\n snapshotUpload: boolean\n snapshotPerSecond: number\n detectionClasses: string\n deepEventEndpointUrl: string\n timestampCalculation: string\n matchingEmbeddedDstCoeff: number\n matchingTimeCoeff: number\n matchingQueueOrderCoeff: number\n rabbitmqServerUrl: string\n rabbitmqEventsQueue: string\n rabbitmqEventsExchange: string\n rabbitmqCountingQueue: string\n rabbitmqCountingExchange: string\n dangerZones: boolean\n workflows: boolean\n linkedAnprCameras: Record<string, unknown>\n}\n\nexport type VerifiedDaysQueryParams = PaginationParams & {\n projectExid: ProjectExid\n camerasExid: CameraExid[]\n verifiedBy: string\n isMatched: boolean\n insertedAt: DateTime[]\n updatedAt: DateTime[]\n day: string\n}\n\nexport type EventUpdateRequestPayload = {\n cameraex: string\n roiId: number\n eventType: string\n eventTime: \"2024-12-13T14:25:58.066Z\"\n truckType: string\n isPublic: boolean\n boundingBox: {\n additionalProp1: number\n additionalProp2: number\n additionalProp3: number\n }\n valid: boolean\n loadState: string\n embeddingId: number\n embedding: number[]\n similarityDst: number\n detectionType: string\n trackingId: number\n deliveriesId: number\n edited: boolean\n isDeleted: boolean\n modelVersion: string\n}\n\nexport type VerifyDayUpdateRequestPayload = {\n camerasExid: string[]\n projectExid: string\n day: Date_YYYY_MM_DD\n isMatched: boolean\n verifiedBy: string\n}\n\nexport type ProcessedDaysQueryParams = {\n camerasExid: CameraExid[]\n isPublic: boolean\n eventType: GateReportEventType\n}\n\nexport type SecurityMeasurementQueryParams = {\n cameraex: string\n timestamp: DateTime\n prompt: string\n snapshotUrl: string\n}\n\nexport type ObjectDetectionQueryParams = {\n cameraex: string\n timestamp: DateTime\n base64Img: string\n snapshotUrl: string\n}\n\nexport type RoisQueryParams = {\n cameraExid: string\n id: number\n name: string\n fromDate: string\n roiType: GateReportROIShapeType\n isactive: boolean\n directionFilter: string\n sort: string\n}\n\nexport type GateReportROICreateRequestPayload = {\n id?: number\n roi: {\n cameraex: string\n name: string\n roiType: string\n isactive: true\n fromDate: string\n shapes: Record<string, unknown>[]\n directionFilter: string\n note: string\n }\n createdBy: string\n}\n","import { PaginationParams } from \"@/types\"\n\nexport enum HddFormat {\n ExFat = \"ExFAT\",\n HikFs = \"HikFS\",\n}\n\nexport enum HddType {\n Magnetic35 = '3.5\" Magnetic',\n Magnetic25 = '2.5\" Magnetic',\n Ssd25 = '2.5\" SSD',\n}\n\nexport enum HddState {\n Blank = \"Blank\",\n InUse = \"In Use\",\n ColdStorage = \"Cold Storage\",\n}\n\nexport enum WarehouseLocationIndex {\n IEWarehouse = 1,\n Deployed = 2,\n CustomerStorage = 3,\n USWarehouse = 4,\n AUWarehouse = 5,\n UKWarehouse = 6,\n}\n\nexport enum WarehouseLocation {\n IEWarehouse = \"IE Warehouse\",\n Deployed = \"Deployed\",\n CustomerStorage = \"Customer Storage\",\n USWarehouse = \"US Warehouse\",\n AUWarehouse = \"AU Warehouse\",\n UKWarehouse = \"UK Warehouse\",\n}\n\nexport enum HddSize {\n TwoTB = \"2 TB\",\n FourTB = \"4 TB\",\n FiveTB = \"5 TB\",\n SixTB = \"6 TB\",\n EightTB = \"8 TB\",\n TenTB = \"10 TB\",\n}\n\nexport type FootageCreateUpdatePayload = {\n cameraId: string\n startDate: string\n endDate: string\n}\n\nexport type HDDCreateUpdatePayload = {\n size: string\n type: string\n format: string\n locationId: string\n serialNumber: string\n hddStatus: string\n shelfBlock: string\n}\n\nexport type HDDsQueryParams = PaginationParams & {\n id: number\n location: string\n serialNumber: string\n shelfBlock: string\n format: string\n size: string\n type: string\n hddStatus: string\n}\n","import { PaginationParams, DateType } from \"@/types\"\n\nexport enum IngestProcessingStatus {\n Completed = \"completed\",\n Uploading = \"uploading\",\n Created = \"created\",\n Failed = \"failed\",\n Aborted = \"aborted\",\n Paused = \"paused\",\n InProgress = \"inprogress\",\n Pending = \"pending\",\n}\n\nexport enum IngestVersions {\n V1 = \"v1\",\n V2 = \"v2\",\n}\n\nexport type DronesQueryParams = Omit<PaginationParams, \"sort\"> & {\n projectId: string\n consumed: string\n token: string\n processingStatus: IngestProcessingStatus\n}\n\nexport type DroneUploadUpdateRequestPayload = {\n flightMetadata: {\n dateTime: string\n gpsAltitude: string\n gpsCoordinates: string\n }\n upload: {\n url: string\n title: string\n fileExtension: string\n }[]\n projectName: string\n}\n\nexport type CalculateMeasuringOperationRequestPayload = {\n date: DateType\n points: [number, number][]\n operation: string\n}\n\nexport type FlightImagesQueryParams = Partial<\n Omit<PaginationParams, \"sort\">\n> & {\n date: DateType\n}\n\nexport type InspectionToolRequestPayload = {\n date: DateType\n gpsAltitude: string\n gpsCoordinates: string\n}\n","export enum MapType {\n Hybrid = \"hybrid\",\n Terrain = \"terrain\",\n}\n","export type ConnectorDetail = {\n login: string\n hostname: string\n}\n\nexport enum Connector {\n Aconex = \"aconex\",\n Procore = \"procore\",\n Autodesk = \"autodesk\",\n AutodeskViewer = \"autodesk_viewer\",\n VoyageControl = \"voyage_control\",\n\n // Project connectors\n XWeather = \"xweather\",\n}\n\nexport enum ProcoreType {\n Observations = \"observations\",\n Photos = \"photos\",\n}\n\nexport type ConnectorResponsePayload = Array<{\n hostname: string\n login: string\n provider: string\n}>\n","export enum NotificationType {\n CameraShare = \"camera_share\",\n CameraStatusChange = \"camera_status_changed\",\n Mention = \"mention\",\n TimelapseCreated = \"timelapse_created\",\n TimelapseFailed = \"timelapse_failed\",\n DroneProcessing = \"drone_processing_done\",\n Processing360 = \"three_sixty_done\",\n}\n\nexport interface CameraShareContext {\n cameraExid: string\n projectExid: string\n shareId: number\n}\n\n// export interface CameraStatusChangeContext {\n// cameraExid: string;\n// projectExid: string;\n// status: string;\n// }\n\n// export interface MentionContext {\n// postId: number;\n// commentId?: number;\n// }\n\nexport type Notification = {\n id: number\n type: NotificationType\n insertedAt: string\n initiatorId: number\n initiatorFullname: string\n initiatorEmail: string\n targetId: number\n targetFullname: string\n targetEmail: string\n readTimestamp: string | null\n context: CameraShareContext //| CameraStatusChangeContext | MentionContext\n}\n","import type { NvrModel } from \"@evercam/api/types\"\n\nexport type Nvr = {\n id?: number\n deviceType: NvrDeviceType\n serial: string\n model: NvrModel\n httpUrl: string\n rtspUrl: string\n macAddress: string\n username: string\n password: string\n nerves: boolean\n}\n\nexport enum NvrDeviceType {\n Rpi4 = \"rpi4\",\n Rpi5 = \"rpi5\",\n OrinNano = \"orin_nano\",\n Giraffe = \"giraffe\",\n}\n\nexport enum NvrHddStatus {\n Error = \"error\",\n Idle = \"idle\",\n NotExist = \"notexist\",\n Ok = \"ok\",\n Unformatted = \"unformatted\",\n}\n\nexport type NvrCreatePayload = {\n serial?: string\n httpUrl: string\n rtspUrl?: string\n deviceType?: NvrDeviceType\n model: NvrModel\n username: string\n password: string\n kitId?: number\n}\n","export type ProcoreUserCompaniesResponsePayload = Array<{\n id: number\n isActive?: boolean\n name: string\n}>\n\nexport type ProcoreCompanyRequestPayload = {\n companyId: number\n}\n\nexport type ProcoreProjectRequestPayload = {\n companyId: number\n projectId: number\n}\n\nexport type ProcoreObservationListItem = {\n id: number\n name: string\n}\n\nexport type ProcoreObservationDefaultList = Array<\n ProcoreObservationListItem & {\n active: boolean\n global: boolean\n createdAt: string\n updatedAt: string\n }\n>\n\nexport type ProcoreObservationAssignee = ProcoreObservationListItem & {\n vendor: ProcoreObservationListItem\n}\n\nexport type ProcoreObservationDistributionMember =\n ProcoreObservationListItem & {\n login: string\n }\n\nexport type ProcoreObservationTrades = ProcoreObservationListItem & {\n active: boolean\n updatedAt: string\n}\n\nexport type ProcoreObservationLocation = ProcoreObservationListItem & {\n nodeName: string\n parentId: number\n createdAt: string\n updatedAt: string\n code: string\n}\n\nexport type ProcoreObservationSpecificationSection = {\n id: number\n number: string\n description: string\n label: string\n currentRevisionId: number\n}\n\nexport type ProcoreUserProjectsResponsePayload = Array<{\n accountingProjectNumber?: number\n active: boolean\n address: string\n city: string\n company: {\n id: number\n name: string\n }\n completionDate: string\n countryCode: string\n county: string\n createdAt: string\n customFields?: object\n designatedMarketArea: string\n displayName: string\n estimatedValue: string\n id: number\n isDemo: boolean\n latitude: number\n longitude: number\n name: string\n originCode: string | number | null\n originData: string | null\n originId: number | null\n ownersProjectId: number | null\n parentJobId: number | null\n phone: string | number\n photoId: number\n projectBidTypeId: number | null\n projectNumber: string\n projectOwnerTypeId: number | null\n projectRegionId: number | null\n stage: string\n startDate: string\n stateCode: string\n storeNumber?: string\n timeZone: string\n totalValue: string\n updatedAt: string\n zip: number\n}>\n\nexport type ProcoreToolUserAccessLevel = {\n id: ProcoreToolUserAccessLevelIds\n name: string\n}\n\nexport type ProcoreToolPermittedAction = {\n id: number\n actionName: string\n label: string\n toolName: string\n}\n\nexport type ProcoreToolPermissions = {\n id: number\n name: string\n friendlyName: string\n domainId: number\n tabGroup: string\n availableForUser: boolean\n url: string\n userAccessLevel: ProcoreToolUserAccessLevel\n permittedActions: Array<ProcoreToolPermittedAction>\n createUrl: string\n canCreate: boolean\n trial: boolean\n}\n\nexport type ProcoreUserProjectPermissionsResponsePayload = {\n tools: Array<ProcoreToolPermissions>\n}\n\nexport type ProcoreEditedImageUploadRequestPayload = {\n projectExid: string\n companyId: number\n projectId: number\n snapshot: string\n categoryId?: number\n}\n\nexport type ProcoreProjectsAlbumsPayload = Array<{\n count: number\n coverPhoto: string | null\n createdAt: string\n id: number\n links: {\n delete: string\n show: string\n update: string\n }\n name: string\n position: number\n private: boolean\n updatedAt: string\n}>\n\nexport type ProcoreObservationTypesResponsePayload = Array<{\n id: number\n name: string\n localizedName: string\n category: string\n categoryKey: string\n companyActive: boolean\n active: boolean\n kind: string\n parentInactive: boolean\n isUse: boolean\n nameTranslations: string\n}>\n\nexport type ProcoreObservationFormRequestPayload = {\n projectId: number\n companyId: number\n observationType: string\n}\n\nexport type ProcoreObservationForm = Record<\n string,\n ProcoreObservationField | ProcoreObservationCustomField\n>\n\nexport type ProcoreObservationField = {\n name: string\n required: boolean\n visible: boolean\n}\n\nexport type ProcoreObservationCustomField = {\n id: number\n required: boolean\n visible: boolean\n name: string\n label: string\n description: string\n customFieldDefinitionId: number\n dataType: ProcoreObservationCustomFieldDataType\n variant: string\n position: number\n row: number\n column: number\n columnWidth: number\n optionsUrl: string | null\n defaultValue: string | null\n}\n\nexport enum ProcoreObservationCustomFieldDataType {\n RichText = \"rich_text\",\n Date = \"date\",\n DateTime = \"datetime\",\n LovEnty = \"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 = \"trade_id\",\n Assignee = \"assignee_id\",\n DueDate = \"due_date\",\n SpecificationSection = \"specification_section_id\",\n Priority = \"priority\",\n Location = \"location_id\",\n DistributionMembers = \"distribution_member_ids\",\n Personal = \"personal\",\n Hazard = \"hazard_id\",\n ContributingBehavior = \"contributing_behavior_id\",\n ContributingCondition = \"contributing_condition_id\",\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 { DateTime, DateType, PaginationParams } from \"@/types\"\nexport type ProgressPhoto = {\n cameraIds: string\n cameraNames: number\n createdAt: string\n id: number\n provider: string\n type: 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 type?: 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 userId?: number\n cameras?: Array<Camera | AdminCamera>\n featureFlags: Array<ProjectFeatureFlag>\n owner?: { email?: string }\n ownerEmail?: string\n ownerName?: string\n camerasRestrictionType?: string\n}\n\nexport enum ProjectStatus {\n ToStart = \"To Start\",\n InProgress = \"In Progress\",\n Completed = \"Completed\",\n NotAplicable = \"Not Applicable\",\n}\n\nexport enum ProjectArchiveTier {\n Full = \"Full\",\n Partial = \"Partial\",\n Minimal = \"Minimal\",\n ScheduledForDeletion = \"Scheduled for Deletion\",\n}\n\nexport type ProjectResponsePayload = {\n data?: Project[]\n}\n\nexport type UpdateCameraRestrictionPayload = {\n isAccessRestricted?: boolean\n}\n\nexport type Logo = {\n name: string\n url: string\n}\n\nexport type ProjectLogoResponsePayload = Logo[]\n\nexport enum ProjectFeatureFlag {\n AnprLegacy = \"anpr_legacy\",\n DroneView = \"drone_view\",\n Bim = \"4d_bim\",\n BimItwin = \"4d_bim_itwin\",\n BimForge = \"4d_bim_forge\",\n ThreeSixtyView = \"360_view\",\n NdaMc = \"NDA/MC\",\n GateReport = \"gate_report\",\n GateReportAutoVerify = \"auto_publish\",\n GateReportMotionDetection = \"motion_detection\",\n FullEmpty = \"full_empty\",\n MediaHubSharing = \"archives_sharing\",\n GateReportAnprBased = \"anpr_sourced\",\n NoLicensePlate = \"no_license_plate\",\n DefaultToProjectApp = \"default_to_project_app\",\n SmartSearch = \"smart_search\",\n PpeMonitoring = \"ppe_monitoring\",\n}\n\nexport type ProjectBatteryReading = {\n exid: number\n voltage: number\n lastSeen: DateType\n}\n\nexport type ThumbnailData = {\n cameraExid: CameraExid\n custom: boolean\n image: string\n}\n\nexport type ProjectsQueryParams = PaginationParams & {\n name: string\n exid: string\n status: ProjectStatus\n cameras: string\n featureFlags: Array<ProjectFeatureFlag>\n archived: string\n}\n\nexport type ProjectCreateRequestPayload = {\n projectExid?: string\n projectName: string\n ownerId: number\n cameras: string[]\n}\n\nexport type ProjectCreateResponse = {\n name: string\n exid: string\n id: number\n userId: number\n zohoId: string\n}\n\nexport type ProjectUpdateRequestPayload = {\n name: string\n timezone: string\n featureFlags: ProjectFeatureFlag[]\n cameras: string[]\n}\n\nexport type ProjectStatusStats = {\n nil: number\n Completed: number\n \"In Progress\": number\n \"Not Applicable\": number\n \"To Start\": number\n}\n\nexport type ProjectUserProperty = {\n active: boolean\n activeOneMonth: boolean\n cameraExid: string\n cameraName: string\n cameraRights: string\n email: string\n eventsCount: number\n fullname: string\n id: number\n lastSeenAt: DateTime\n persona: string\n}\n\nexport type ProjectUsers = {\n cameras: {\n exid: string\n name: string\n }[]\n users: Record<string, ProjectUserProperty[]>\n}\n","import { ApiCredentials } from \"@/types\"\nimport { CancelToken } from \"axios\"\n\nexport type Snapshot = {\n createdAt: string\n data: string\n status?: string\n}\n\nexport type NearestSnapshotRequestPayload = {\n apiKey?: string\n apiId?: string\n token?: string\n cancelToken?: object\n}\n\nexport type AvailableDaysRequestPayload = {\n cameraId: string\n year: string\n month: string\n payload?: ApiCredentials\n}\nexport type AvailableDaysResponsePayload = {\n days: Array<number>\n}\n\nexport type AvailableHoursRequestPayload = {\n cameraId: string\n year: string\n month: string\n day: string\n payload?: ApiCredentials\n cancelToken?: CancelToken\n}\nexport type AvailableHoursResponsePayload = {\n hours: Array<number>\n}\n\nexport type NearestSnapshotResponsePayload = {\n snapshots: Array<{\n createdAt: string\n data: string\n notes?: string\n }>\n}\n\nexport type SnapshotRangeRequestPayload = {\n from: string\n to: string\n limit?: number\n page?: number\n schedule?: boolean\n count?: number\n}\nexport type SnapshotInstance = {\n createdAt: string\n notes?: string\n data?: string\n}\nexport type SnapshotRangeResponsePayload = {\n snapshots: Array<SnapshotInstance>\n}\n\nexport enum BrainTool {\n Detections = \"detections\",\n Segmentation = \"sam\",\n}\n\nexport enum CloudRecordingFrequency {\n EverySecond = 60,\n Every2Seconds = 30,\n Every5Seconds = 12,\n Every10Seconds = 6,\n Every15Seconds = 4,\n Every30Seconds = 2,\n Every60Seconds = 1,\n Every5Minutes = 5,\n Every10Minutes = 10,\n}\n\nexport enum CloudRecordingDuration {\n Infinity = -1,\n Day = 1,\n Week = 7,\n Month = 30,\n ThreeMonths = 90,\n}\n\nexport enum CloudRecordingStatus {\n On = \"on\",\n Off = \"off\",\n Paused = \"paused\",\n OnScheduled = \"on-scheduled\",\n}\n\nexport enum SnapshotExtractionInterval {\n EverySecond = 1,\n Every5Seconds = 5,\n Every10Seconds = 10,\n Every15Seconds = 15,\n Every20Seconds = 20,\n Every30Second = 30,\n EveryMinute = 60,\n Every5Minutes = 300,\n Every10Minutes = 600,\n Every15Minutes = 900,\n Every20Minutes = 1200,\n Every30Minutes = 1800,\n EveryHour = 3600,\n Every2Hours = 7200,\n Every6Hours = 21600,\n Every12Hours = 43200,\n Every24Hours = 86400,\n}\n\nexport enum VpnServer {\n None = \"None\",\n OpenVPN1 = \"OpenVPN1\",\n OpenVPN2 = \"OpenVPN2\",\n OpenVPN3 = \"OpenVPN3\",\n OpenVPN4 = \"OpenVPN4\",\n OpenVPN5 = \"OpenVPN5\",\n PPTP1 = \"PPTP1\",\n PPTP2 = \"PPTP2\",\n WireGuard1 = \"WireGuard1\",\n WireGuard2 = \"WireGuard2\",\n WireGuard3 = \"WireGuard3\",\n WireGuard4 = \"WireGuard4\",\n WireGuard5 = \"WireGuard5\",\n WireGuard6 = \"WireGuard6\",\n WireGuard7 = \"WireGuard7\",\n WireGuard8 = \"WireGuard8\",\n WireGuard9 = \"WireGuard9\",\n WireGuard10 = \"WireGuard10\",\n}\n","export enum RoiType {\n Gate = \"gate\",\n AnprContext = \"anpr_context\",\n ExclusionZone = \"exclusion_zone\",\n WorkflowArea = \"workflow_area\",\n SiteAnalytics = \"site_analytics\",\n}\n\nexport enum RoiShapeType {\n Polygon = \"polygon\",\n Line = \"line\",\n Direction = \"direction\",\n Rectangle = \"rectangle\",\n ROIBox = \"ROIBox\",\n}\n\nexport type RoiShape = {\n id: number | null\n name: string\n x1: number\n x2: number\n y1: number\n y2: number\n}\n\nexport enum RoiDirection {\n Arrived = \"arrived\",\n Left = \"left\",\n Bidirectional = \"arrived,left\",\n}\n","export type RouteParams = {\n projectExid?: string\n cameraExid?: string\n timestamp?: string\n fromDate?: string\n toDate?: string\n}\n\nexport enum UrlParamValue {\n True = \"true\",\n False = \"false\",\n}\n\nexport enum TimelineUrlParam {\n CameraExid = \"cameraExid\",\n Timestamp = \"timestamp\",\n FromDate = \"fromDate\",\n ToDate = \"toDate\",\n Live = \"live\",\n Video = \"video\",\n OverlayType = \"overlayType\",\n ShowOverlay = \"showOverlay\",\n ShowCompare = \"showCompare\",\n Sidebar = \"sidebar\",\n ThreeSixtyId = \"_360Id\",\n DroneId = \"droneId\",\n MediaId = \"mediaId\",\n}\n\nexport enum Timeline360UrlParams {\n Show360 = \"show360\",\n}\n\nexport enum TimelineDroneUrlParams {\n ShowDrone = \"showDrone\",\n}\n\nexport enum TimelineMediaUrlParams {\n ShowMedia = \"showMedia\",\n}\n\nexport enum TimelineBimUrlParams {\n ShowBim = \"showBim\",\n}\n\nexport enum TimelineExNvrRecordingsUrlParams {\n ShowExNvrRecordings = \"showExNvrRecordings\",\n}\n\nexport enum TimelineAnprUrlParams {\n ShowAnpr = \"showAnpr\",\n}\n\nexport enum TimelineMobileCaptureUrlParams {\n ShowMobileCapture = \"showMobileCapture\",\n}\n\nexport enum TimelineCommentsUrlParams {\n ShowComments = \"showComments\",\n}\n\nexport type TimelineUrlParams = Record<\n | TimelineUrlParam\n | TimelineMediaUrlParams\n | TimelineBimUrlParams\n | TimelineExNvrRecordingsUrlParams\n | TimelineAnprUrlParams\n | TimelineMobileCaptureUrlParams\n | TimelineCommentsUrlParams,\n string | null\n>\n","import { Camera, PaginationParams, Project, Sim } from \"@/types\"\nexport type RouterBillPayer = { name: string }\n\nexport type SimProvider = { name: string }\n\nexport type Router = {\n id?: number\n kitId: number | null\n routerType: string\n routerUserId: string\n routerPassword: string\n serialNumber: number | null\n rmsUrl?: string\n externalHost?: string\n routerHttpPort: number | null\n vpnPassword: string\n vpnUserId: string\n vpnServer: string\n netbirdUrl: string\n status: RouterStatus\n powerType: PowerType\n powerSchedule: string\n battery?: {\n lastVoltage: number\n lastSeen: string\n }\n sims: Array<Pick<Sim, \"id\" | \"number\">>\n billPayers?: Array<RouterBillPayer>\n simProviders?: Array<SimProvider>\n projects?: Pick<Project, \"exid\" | \"id\" | \"name\">[]\n cameras?: Pick<Camera, \"id\" | \"name\">[]\n}\n\nexport enum PowerType {\n Mains = \"mains\",\n Battery = \"battery\",\n Solar = \"solar\",\n Generator = \"generator\",\n Other = \"other\",\n}\n\nexport enum PowerSchedule {\n Schedule = \"schedule\",\n FullTime = \"24/7\",\n}\n\nexport enum RouterStatus {\n Active = \"active\",\n Inactive = \"inactive\",\n}\n\nexport type RouterQueryParams = PaginationParams & {\n routerType: string\n vpnServer: string\n serialNumber: string\n}\n\nexport type RouterCreatePayload = {\n serialNumber: number\n vpnUserId?: string\n vpnPassword?: string\n routerType: string\n routerUserId?: string\n routerPassword?: string\n routerHttpPort: number\n powerType: PowerType\n powerSchedule: PowerSchedule\n vpnServer?: string\n netbirdUrl?: string\n}\n","import type { CameraExid, DateTime, DateType } from \"@/types\"\n\nexport type ShareRequest = {\n cameraId: string\n createdAt: DateType | number\n email: string\n id: number\n rights: string\n sharerEmail: string\n sharerName: string\n userId: number\n}\n\nexport type Share = {\n cameraId: string\n createdAt: DateType | number\n email: string\n fullname: string\n id: number\n lastSeenAt: DateType\n rights: string\n sessionCount: number\n sharerEmail: string\n sharerId: number\n sharerName: string\n userId: number\n isUserAccessRestricted: boolean\n}\n\nexport type ShareRequestsResponsePayload = {\n shareRequests: ShareRequest[]\n}\n\nexport type ShareOwner = {\n email: string\n fullname: string\n lastSeenAt: DateType\n sessionCount: number\n}\n\nexport type SharesResponsePayload = {\n owner: ShareOwner\n shares: Share[]\n}\n\nexport type ShareDeletionRequestPayload = {\n email?: string\n key?: string\n origin?: string\n}\n\nexport type SharedUsersResponsePayload = Array<{\n email: string\n name: string\n}>\n\nexport type ShareCreateRequestPayload = {\n email: string[] | string\n message?: string\n permission?: string\n rights: string\n apiId?: string\n apiKey?: string\n}\n\nexport type ShareProjectCamerasRequestPayload = {\n email: string[]\n cameraExids: CameraExid[]\n message: string\n permission?: string\n rights: string\n}\n\nexport type UpdateUserRestrictionPayload = {\n email: string[]\n isUserAccessRestricted: boolean\n}\n\nexport type ShareCreateResponsePayload = {\n shares: Share[]\n shareRequests: ShareRequest[]\n}\n\nexport type ShareRequestByKeyResponsePayload = {\n shareRequests: Array<{\n id: string\n email: string\n rights: string\n cameraId: string\n sharerName: string\n userId: string\n sharerEmail: string\n createdAt: DateType\n }>\n}\n\nexport type ResendShareRequestPayload = {\n email: string\n apiId?: string\n apiKey?: string\n}\n\nexport enum SharePermission {\n Minimum = \"minimum\",\n Share = \"minimal+share\",\n Full = \"full\",\n Custom = \"custom\",\n}\n\nexport enum ShareType {\n Share = \"share\",\n Request = \"request\",\n}\n\nexport enum ShareRequestStatus {\n Pending = -1,\n Cancelled = -2,\n Failed = -3,\n Used = 1,\n}\n\nexport enum ShareVisibility {\n PublicDiscoverable = \"publicDiscoverable\",\n PublicUndiscoverable = \"publicUndiscoverable\",\n Private = \"private\",\n}\n\nexport type ProjectShare = {\n id: number\n projectId: string\n userId: number\n email: string\n fullname: string\n sharerId: number\n sharerEmail: string\n sharerName: string\n role: \"member\" | \"admin\"\n cameras: Record<string, string>\n message: string | null\n updatedAt: DateType\n insertedAt: DateType\n}\n\nexport type ProjectShareRequest = ProjectShare\n\nexport type ProjectShareResponse = {\n projectShares: ProjectShare[]\n projectShareRequests: ProjectShareRequest[]\n}\n\nexport type AdminShare = {\n sharerId: number\n sharerFullname: string\n sharerApiId: string\n sharerApiKey: string\n shareeId: number\n shareeFullname: string\n shareeApiId: string\n shareeApiKey: string\n shareeEmail: string\n cameraId: number\n exid: string\n projectId: string\n name: string\n id: number\n message: string\n createdAt: DateType\n}\n\nexport type CameraShareRequestPayload = {\n email: string[]\n rights: string\n message?: string\n}\n\nexport type ShareQueryParams = {\n exid: string\n sharerFullname: string\n shareeFullname: string\n shareeEmail: string\n}\n\nexport type CameraShare = {\n sharerId: number\n sharerFullname: string\n sharerApiId: string\n sharerApiKey: string\n shareeId: number\n shareeFullname: string\n shareeApiId: string\n shareeApiKey: string\n shareeEmail: string\n cameraId: number\n exid: string\n projectId: string\n name: string\n id: number\n message: string\n createdAt: DateTime\n}\n\nexport type CameraShareRequestsQueryParams = {\n shareeEmail: string\n camera: string\n sharer: string\n status: string\n}\n\nexport type CameraShareRequest = {\n id: number\n shareeEmail: string\n camera: string\n sharer: string\n message: number\n rights: string\n status: number\n projectId: string\n cameraExid: string\n apiId: string\n apiKey: number\n createdAt: DateTime\n}\n","import { DateTime, PaginationParams } from \"@/types\"\nexport enum SmsCommands {\n Cellular = \"cellular\",\n Gpson = \"gpson\",\n GPS = \"gps\",\n IPUnblock = \"ipunblock\",\n IOStatus = \"iostatus\",\n IOSet = \"ioset\",\n MonitoringStatus = \"monitoring_status\",\n MobileOn = \"mobileon\",\n MobileOff = \"mobileoff\",\n Reboot = \"reboot\",\n Restore = \"restore\",\n RmsOn = \"rms_on\",\n RmsConnect = \"rms_connect\",\n RmsStatus = \"rms_status\",\n SwitchSIM = \"switch_sim\",\n Status = \"status\",\n SshOn = \"sshon\",\n SshOff = \"sshoff\",\n Uci = \"uci\",\n VpnOn = \"vpnon\",\n VpnOff = \"vpnoff\",\n VpnStatus = \"vpnstatus\",\n WifiOn = \"wifion\",\n WifiOff = \"wifioff\",\n Wakeup = \"wakeup\",\n WebOn = \"webon\",\n WebOff = \"weboff\",\n}\n\nexport enum SmsStatuses {\n Delivered = \"Delivered\",\n Accepted = \"accepted\",\n Pending = \"Pending\",\n}\n\nexport type SimCreateUpdatePayload = {\n number: string\n simProvider: string\n billPayer?: string\n pin1?: string\n pin2?: string\n puk?: string\n iccid?: string\n description?: string\n cameraId: string[]\n}\n\nexport type SimsQueryParams = PaginationParams & {\n simProvider: string\n number: string\n billPayer: string\n iccid: string\n cameraName: string\n description: string\n}\n\nexport type Sim = {\n id: number\n number: string\n simProvider: string\n billPayer: string\n lastSms: string\n pin1: string\n pin2: string\n puk: string\n iccid: string\n description: string\n lastSmsAt: DateTime\n cameras: {\n name: string\n exid: string\n id: number\n }[]\n}\n\nexport type SendSmsPayload = {\n number: string\n smsMessage: string\n}\n\nexport type SendSmsResponse = {\n status: number\n errorText: string\n}\n\nexport type SmsHistory = {\n insertedAt: DateTime\n type: string\n status: string\n text: string\n deliveryDatetime: DateTime\n}\n\nexport type SmsHistoryResponse = {\n singleSimSms: SmsHistory[]\n}\n\nexport type Sms = {\n id: number\n from: string\n fromName: string\n to: string\n toName: string\n messageId: string\n status: string\n text: string\n type: string\n insertedAt: DateTime\n deliveryDatetime: DateTime\n}\n\nexport type SmsQueryParams = PaginationParams & {\n dateRange: string\n fromName: string\n toName: string\n fromNumber: string\n toNumber: string\n smsText: string\n smsType: string\n smsStatus: SmsStatuses\n deliveryDatetime: string\n}\n","export enum PerformanceStatus {\n Pending = \"pending\",\n Done = \"done\",\n}\nexport enum WebGLExtensions {\n OESTextureFloat = \"OES_texture_float\",\n EXTFloatBlend = \"EXT_float_blend\",\n EXTTextureFilterAnisotropic = \"EXT_texture_filter_anisotropic\",\n OESElementIndexUint = \"OES_element_index_uint\",\n WEBGLDebugRendererInfo = \"WEBGL_debug_renderer_info\",\n}\n","export enum EDistortImageModes {\n FreeRotate = \"freeRotate\",\n Lock = \"lock\",\n}\n\nexport enum EMapTypes {\n Blank = \"Blank\",\n Satellite = \"Satellite\",\n Street = \"Street\",\n GoogleSatellite = \"hybrid\",\n GoogleStreet = \"roadmap\",\n GoogleTerrain = \"terrain\",\n}\n\nexport enum EMarkers {\n CameraMarker = \"cameraMarker\",\n ThreeSixtyMarker = \"threeSixtyMarkers\",\n}\n\nexport enum EPageType {\n List = \"list\",\n Item = \"item\",\n}\n\nexport enum EPaths {\n Home = \"/\",\n Session = \"/session\",\n}\n\nexport enum EProjectItems {\n Camera = \"camera\",\n Overlay = \"overlay\",\n}\n\nexport enum ERoles {\n Admin = \"admin\",\n User = \"user\",\n}\n","import { DateTime_Z_micros, KitMetricData } from \"@/types\"\nexport type ExNvrLoginResponse = { accessToken: string }\n\nexport type ExNvrRecordingInterval = {\n active: boolean\n startDate: DateTime_Z_micros\n endDate: DateTime_Z_micros\n}\n\nexport type ExNvrDeviceConfig = {\n id: string\n name: string\n type: string\n state: ExNvrDeviceState\n credentials: {\n password: string\n username: string\n }\n mac: string\n url: string\n insertedAt: string\n updatedAt: string\n settings: {\n storageAddress: string\n overrideOnFullDisk: boolean\n overrideOnFullDiskThreshold: number\n generateBif: boolean\n }\n vendor: string\n model: string\n streamConfig: {\n filename: string | null\n duration: string | null\n temporaryPath: string | null\n snapshotUri: string\n streamUri: string\n subStreamUri: string\n }\n timezone: string\n}\n\nexport enum ExNvrFootageAvailableStatus {\n 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}\n\nexport type ExNvrMetric = KitMetricData & {\n metricId: ExNvrMetricId\n value: number\n}\n","import { DateType, Schedule } from \"@/types\"\n\nexport enum TimelapseStatus {\n Pending = 11,\n Completed = 5,\n Failed = 7,\n}\n\nexport enum TimelapseDuration {\n ThirtySeconds = 30,\n SixtySeconds = 60,\n NintySeconds = 90,\n}\n\nexport type TimelapseVideoOptions = {\n width?: number\n height?: number\n removeTimestamp: boolean\n smoothTransition: boolean\n evercamWatermark: boolean\n timestampPosition?: TimestampPositionCoordinates\n}\n\nexport type TimestampPositionCoordinates = {\n x: number\n y: number\n w: number\n h: number\n}\n\nexport type TimelapseLogoOptions = {\n id: number\n x: number\n y: number\n width: number\n height: number\n}\n\nexport type TimelapseSchedules = string | Schedule\n\nexport enum TimelapseScheduleType {\n Continuous = \"continuous\",\n WorkingHours = \"workingHours\",\n Custom = \"custom\",\n}\n\nexport enum TimelapsePeriod {\n Day = 1,\n Week = 7,\n Month = 30,\n WholeProject = \"whole_project\",\n Custom = \"custom\",\n}\n\nexport enum TimelapseType {\n Hour = \"hour\",\n Day = \"day\",\n Week = \"week\",\n Month = \"month\",\n Year = \"year\",\n FullProject = \"full_project\",\n}\n\nexport type TimelapseFilterQueryParams = {\n from?: DateType\n to?: DateType\n period?: TimelapsePeriod\n duration?: number\n schedule?: TimelapseSchedules\n}\n\nexport type TimelapseCreationRequestPayload = {\n title: string\n duration: number\n fromDatetime: string\n toDatetime: string\n cameraExid: string\n schedule: Schedule\n videoOptions: TimelapseVideoOptions\n logo?: TimelapseLogoOptions\n}\n\nexport type TimelapseCreationResponsePayload = {\n Timelapse: {\n camera: string\n createdAt: string\n fromDate: string\n id: number\n duration: number\n requestor: string\n schedule: Schedule\n status: number\n toDate: string\n updatedAt: string\n }\n}\n\nexport type TimelapseSnapshotRequestPayload = {\n from: string\n to: string\n schedule: string\n count: number\n}\n\nexport type TimelapseSnapshotResponsePayload = {\n snapshots: string[]\n}\n\nexport enum TimelapseExportStep {\n Format = 1,\n Effects = 2,\n Confirm = 3,\n Finish = 4,\n}\n","import type { DateTime, PaginationParams } from \"@/types\"\n\nexport type User = {\n id?: number\n fullname?: string\n firstname: string\n lastname: string\n email: string\n telephone: string\n country: string\n isAdmin: boolean\n persona: Persona\n companyId?: string\n companyName?: string\n companyExid?: string\n features?: Array<UserFeatureFlag>\n}\n\nexport type AdminUser = {\n id: number\n fullname: string\n firstname: string\n email: string\n telephone: string\n country: string\n isAdmin: boolean\n companyId: string\n companyName: string\n companyExid: string\n features: Array<UserFeatureFlag>\n active: boolean\n cameraShares: number\n camerasCount: number\n camerasOwned: number\n countryId: number\n countryName: string\n createdAt: DateTime\n integrations: string[]\n lastSeenAt: DateTime\n lastLoginAt: string\n lastname: string\n persona: string\n projects: string[]\n projectsCount: number\n referralUrl?: string\n snapmailCount: number\n zohoId: string\n}\n\nexport enum UserFeatureFlag {\n CompanyAdmin = \"company-admin\",\n VideoWalls = \"video-walls\",\n MassCameraSharing = \"mass-camera-sharing\",\n Copilot = \"copilot\",\n ProjectSharing = \"project-sharing\",\n}\n\nexport type ProjectUser = User & {\n lastSeenAt: string\n active: boolean\n activeOneMonth: boolean\n eventsCount: string\n cameraExid: string\n cameraRights: string\n}\n\nexport enum Persona {\n HQ = \"HQ\",\n PM = \"PM\",\n QS = \"QS\",\n Marketing = \"Marketing\",\n HS = \"H&S\",\n DI = \"DI\",\n Other = \"Other\",\n}\n\nexport type UpdatePasswordRequestPayload = {\n token: string\n password: string\n}\n\nexport type Credentials = {\n apiKey: string\n apiId: string\n}\n\nexport type LoginRequestPayload = {\n username: string\n password: string\n redirectToZoho?: boolean\n}\n\nexport type RemotePasswordUpdateRequestPayload = {\n currentPassword: string\n newPassword: string\n}\n\nexport type LoginResponsePayload = {\n confirmedAt?: string\n country?: string\n createdAt?: string\n email?: string\n firstname?: string\n id?: string\n isAdmin?: boolean\n lastLoginAt?: string\n lastname?: string\n persona?: Persona\n telephone?: string\n token?: string\n updatedAt?: string\n evercamAccount?: string\n}\n\nexport type LogoutParams = {\n token: string\n fromAdmin?: boolean\n}\n\nexport type UserSession = {\n browser: string\n createdAt: string\n id: number\n ipAddress: string\n isCurrent: boolean\n lastUsedAt: string\n os: string\n}\n\nexport type SessionsListRequestPayload = {\n authorization: string\n browser?: string\n os?: string\n ipAddress?: string\n sort: string\n limit: number\n page: number\n}\n\nexport type SessionActivityCamSettingsDetail = {\n new: any\n old: any\n}\n\nexport type SessionActivityDetail = {\n agent: string\n camSettings: SessionActivityCamSettingsDetail\n country: string\n countryCode: string\n ip: string\n}\n\nexport type SessionActivity = {\n cameraExid: string\n details: SessionActivityDetail\n insertedAt: string\n type: string\n who: string\n}\n\nexport type SessionActivitiesListRequestPayload = {\n limit: number\n from: string\n to: string\n}\n\nexport type SignupUserRequestPayload = {\n telephone: string\n token: string\n firstname: string\n lastname: string\n email: string\n password: string\n shareRequestKey: string\n referralUrl: string\n persona: string\n disablePassword: boolean\n}\n\nexport type UserUpdateRequestPayload = {\n firstname: string\n lastname: string\n email: string\n telephone: string\n country: string\n persona: string\n}\n\nexport type UserDeleteRequestPayload = {\n verifEmail: string\n}\n\nexport type GoogleAuthRequestPayload = { code: string; redirectUri: string }\n\nexport type UserStatsResponse = { data: { userStats: AdminUser } }\n\nexport type UserCamera = {\n id: number\n exid: string\n ownerFullname: string\n ownerEmail: string\n apiId: string\n apiKey: string\n}\n\nexport type UserCameraResponse = { data: UserCamera[] }\n\nexport type UserProject = {\n id: number\n exid: string\n name: string\n startedAt: DateTime\n}\n\nexport type UserProjectResponse = { data: UserProject[] }\n\nexport type AdminUserUpdateRequestPayload = {\n companyId: string\n email: string\n persona: Persona\n country: string\n features: UserFeatureFlag[]\n}\n\nexport type AdminQueryParams = PaginationParams & {\n email: string\n fullname: string\n}\n\nexport type Admin = {\n id: number\n fullname: string\n email: string\n createdAt: DateTime\n updatedAt: DateTime\n lastSignInAt: DateTime\n signInCount: number\n lastSignInIp: string\n apiId: string\n apiKey: string\n}\n\nexport type ImpersonateUserResponse = {\n id: string\n firstname: string\n lastname: string\n telephone: string\n email: string\n is_admin: boolean\n persona: Persona\n country: string\n companyId: number\n companyExid: string\n companyName: string\n evercamAccount: boolean\n createdAt: DateTime\n updatedAt: DateTime\n confirmedAt: DateTime\n last_loginAt: DateTime\n features: UserFeatureFlag[]\n token: string\n}\n\nexport type AdminUserQueryParams = PaginationParams & {\n fullname: string\n email: string\n telephone: string\n persona: Persona\n companyName: string\n camerasCount: string\n projectsCount: string\n snapmailCount: string\n camerasOwned: string\n cameraShares: string\n createdAtDate: string\n lastLoginAtDate: string\n integrations: \"procore\" | \"aconex\" | \"autodesk\"\n features: UserFeatureFlag.ProjectSharing | UserFeatureFlag.VideoWalls\n}\n\nexport type SuppressionsQueryParams = PaginationParams & {\n id: number\n email: string\n source: string\n}\n\nexport type Suppression = {\n id: number\n email: string\n source: string\n insertedAt: DateTime\n updatedAt: DateTime\n}\n","import { Camera, Media } from \"@/types\"\n\nexport enum VideoWallItemType {\n LiveView = \"live\",\n Video = \"video\",\n Image = \"image\",\n}\n\nexport type VideoWallItem<T extends Camera | Media> = {\n value: T\n type: VideoWallItemType\n}\n\nexport type VideoWallPresetItemConfig = {\n camera: Camera\n h: number\n i: string | number\n moved: boolean\n w: number\n x: number\n y: number\n}\n\nexport type VideoWallPreset = {\n name?: string\n configuration: Array<VideoWallPresetItemConfig>\n}\n\nexport type VideoWallPresetItem = {\n i: string | number\n x: number\n y: number\n w: number\n h: number\n camera: Camera\n weather?: Record<string, unknown>\n media?: Media\n}\n","import { Date_YYYY_MM_DD, DateType } from \"@/types/time\"\n\nexport type HistoryWeatherRequestPayload = {\n day: string\n provider: WeatherProvider\n}\n\nexport type CurrentWeatherRequestPayload = {\n provider: WeatherProvider\n}\n\nexport type WeatherResponsePayload = Array<{\n hour?: number\n temp?: number\n clouds?: number\n feelsLike?: number\n pressure?: number\n humidity?: number\n windSpeed?: number\n windDegree?: number\n weather?: [WeatherSummary]\n rain?: HourlyReading\n snow?: HourlyReading\n}>\n\nexport type WeatherSummary = {\n id?: number\n main?: string\n description?: string\n icon?: string\n}\n\nexport type HourlyReading = {\n \"1h\"?: number\n \"3h\"?: number\n}\n\nexport enum WeatherProvider {\n WeatherStack = \"weather_stack\",\n XWeather = \"xweather\",\n}\n\nexport type Weatherstatus = {\n description: string\n hour: DateType\n id: number\n temp: number\n}\n\nexport type WeatherDataResponse = {\n minFeelsLike: number\n id: number\n sunhour: number\n maxFeelsLike: number\n minWindchill: number\n minPressure: number\n minWindDegree: number\n minDewpoint: number\n maxClouds: number\n maxWindgust: number\n minWindSpeed: number\n astro: {\n moonIllumination: number\n moonPhase: string\n moonrise: string\n moonset: string\n sunrise: string\n sunset: string\n }\n insertedAt: string\n maxDewpoint: number\n maxTemp: number\n minClouds: number\n weather: Weatherstatus[]\n minHeatindex: number\n minPrecip: number\n maxWindDegree: number\n maxUvIndex: number\n minHumidity: number\n maxWindSpeed: number\n minWindgust: number\n updatedAt: DateType\n maxPrecip: number\n uvIndex: number\n maxHeatindex: number\n minTemp: number\n date: Date_YYYY_MM_DD\n totalsnow: number\n maxPressure: number\n maxWindchill: number\n maxHumidity: number\n avgtemp: number\n projectId: number\n minUvIndex: number\n}\n","import { CameraExid, DateType, ProjectExid } from \"@/types\"\n\nexport enum CommentsScope {\n Recordings = \"recordings\",\n ThreeSixty = \"360\",\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 Comment = {\n fromDate?: string\n toDate?: string\n timestamp: string\n projectExid: ProjectExid\n updatedAt?: string\n id?: number\n cameraExid: CameraExid\n content: string\n createdAt?: string\n creatorEmail?: string\n creatorName?: string\n position2d?: [number, number]\n position3d?: [number, number, number]\n context?: Record<string, unknown>\n canDelete?: boolean\n archivedAt?: string\n}\n\nexport type CommentCreationRequestPayload = {\n fromDate?: DateType\n toDate?: DateType\n timestamp?: DateType\n scope?: CommentsScope\n projectExid: ProjectExid\n cameraExid?: CameraExid\n content: string\n position2d?: [number, number]\n position3d?: [number, number, number]\n context?: Record<string, unknown>\n}\n","import {\n type BoundingBox,\n type ProjectExid,\n type CameraExid,\n type DateType,\n DetectionLabel,\n SegmentLabel,\n type TimelineDateInterval,\n TimelinePrecision,\n} from \"@/types\"\n\nexport type BaseDetectionsFilters = {\n fromDate: string | Date\n toDate: string | Date\n labels: DetectionLabel | DetectionLabel[]\n trackId?: number\n}\n\nexport type DetectionsFilters = BaseDetectionsFilters & {\n projectExid: ProjectExid\n cameraExids?: CameraExid[]\n}\n\nexport type SegmentsFilters = BaseDetectionsFilters & {\n cameraExid: CameraExid\n}\n\nexport type BBox = number[]\n\nexport type SelectedObjectPath = {\n label: string\n trackId: string\n paths: Array<{\n timestamp: number\n center: [number, number]\n bbox: BBox\n }>\n}\n\nexport type Label = DetectionLabel | PpeLabel\n\nexport type Detection = {\n bbox: BBox\n timestamp: string | Date\n label: DetectionLabel\n confidenceScore: number\n}\n\nexport type DetectionsGroup = {\n timestamp: DateType\n detections: Detection[]\n}\n\nexport type DetectionsCounts = {\n timestamps: number\n} & {\n [label in Label]: number\n}\n\nexport type DetectionsCountsByPeriod = {\n days: Array<{ day: string } & DetectionsCounts>\n months: Array<{ month: string } & DetectionsCounts>\n years: Array<{ year: string } & DetectionsCounts>\n}\n\nexport type Tracking = {\n trackId: number\n fromDate: string | Date\n toDate: string | Date\n detections: Detection[]\n}\n\nexport type TrackingLabel = string\n\nexport type TrackingsByLabel = Record<TrackingLabel, Tracking[]>\n\nexport type SegmentsByLabel = Record<SegmentLabel, Segment[]>\n\nexport type SegmentPolygonCoords = number[][]\n\nexport type Segment = {\n id: number\n mask?: SegmentPolygonCoords\n label: string\n timestamp: string | Date\n cameraExid?: CameraExid\n bbox?: BoundingBox\n area?: number\n}\n\nexport type SegmentSimilarityResult = {\n distance: number\n segment: Segment\n}\n\nexport type SegmentsSimilaritySearchResult = {\n firstSeen: DateType | null\n lastSeen: DateType | null\n similarSegments: SegmentSimilarityResult[]\n}\n\nexport type SegmentsSimilaritySearchParams = {\n cameraExid: CameraExid\n referenceId: string\n iouThreshold?: number\n fromDate: string\n toDate: string\n}\n\nexport type BaseCountsParams = {\n fromDate: string | Date\n toDate: string | Date\n precision: keyof typeof TimelinePrecision\n trackId: number\n labels: DetectionLabel | DetectionLabel[]\n}\n\nexport type DetectionsCountsParams = BaseCountsParams & {\n projectExid: ProjectExid\n cameraExids?: CameraExid[]\n}\n\nexport type SegmentsCountsParams = BaseCountsParams & {\n cameraExid: CameraExid\n}\n\nexport type CountByPeriod = {\n date: string | Date\n counts: Record<string, number>\n}\n\nexport type DetectionsPresenceByLabel = Record<\n DetectionLabel,\n TimelineDateInterval[]\n>\n\nexport type SegmentsPresenceByLabel = Record<\n SegmentLabel,\n TimelineDateInterval[]\n>\n\nexport type LuminanceReading = {\n timestamp: string\n luminanceDelta: number\n luminanceAverage: number\n}\n\nexport enum PpeLabel {\n Helmet = \"helmet\",\n HighVisibilityVest = \"high-visibility-vest\",\n SafetyGlasses = \"safety-glasses\",\n Gloves = \"gloves\",\n Person = \"person\",\n Man = \"man\",\n Woman = \"woman\",\n}\n\nexport enum DetectionModel {\n Yolov10 = 1,\n Yolov11 = 2,\n Yolov11_2 = 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 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}\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 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 CountryCode,\n CountryId,\n DateTime,\n DateType,\n Nvr,\n PaginationParams,\n PowerType,\n Project,\n Region,\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: Region\n id?: number\n jobId: number\n name: string\n nvr: Nvr\n powerType: PowerType\n project: Project\n projectId: number\n router: Partial<Router>\n serial: string\n status: KitStatus\n powerSchedule: Schedule\n tags: Tag[]\n}\n\nexport enum KitStatus {\n New = \"new\",\n Active = \"active\",\n Deployed = \"deployed\",\n Decommissioned = \"decommissioned\",\n}\n\nexport enum KitAlarm {\n NvrOffline = \"nvr_offline\",\n UnknownCamera = \"unknown_camera\",\n NotRecordingCamera = \"not_recording_camera\",\n OfflineScheduled = \"offline_scheduled\",\n FullSD = \"full_sd\",\n FullStorage = \"full_storage\",\n HddUnmounted = \"hdd_unmounted\",\n NoHdd = \"no_hdd\",\n MissingRouterInfo = \"missing_router_info\",\n PowerLost = \"ac_failure\",\n UpsLowBattery = \"low_battery\",\n}\n\nexport enum KitMetricId {\n SolarCharger = \"solar_charger\",\n PanelPower = \"panel_power\",\n}\n\nexport enum KitMetricPeriod {\n Last15Minutes = \"now-15m\",\n Last1Hour = \"now-1h\",\n Last24Hours = \"now-24h\",\n Last7Days = \"now-7d\",\n Last30Days = \"now-30d\",\n Last90Days = \"now-90d\",\n}\n\nexport enum GrafanaMetricId {\n SbcCpuLoad = \"SbcCpuLoad\",\n SbcSystemLoad5MnAvg = \"SbcSystemLoad5MnAvg\",\n SbcSystemLoad15MnAvg = \"SbcSystemLoad15MnAvg\",\n SbcRamUsed = \"SbcRamUsed\",\n SbcSwapUsed = \"SbcSwapUsed\",\n SbcRootFsUsed = \"SbcRootFsUsed\",\n SbcCpuCoresTotal = \"SbcCpuCoresTotal\",\n SbcRamTotal = \"SbcRamTotal\",\n SbcSwapTotal = \"SbcSwapTotal\",\n SbcRootFsTotal = \"SbcRootFsTotal\",\n SbcUptime = \"SbcUptime\",\n SbcCpuStats = \"SbcCpuStats\",\n SbcRamStats = \"SbcRamStats\",\n SbcNetworkStats = \"SbcNetworkStats\",\n SbcTimeSyncStats = \"SbcTimeSyncStats\",\n SbcTemperatureStats = \"SbcTemperatureStats\",\n SbcTimeSyncDriftStats = \"SbcTimeSyncDriftStats\",\n CameraInfo = \"CameraInfo\",\n CameraRecordingStateTimeline = \"CameraRecordingStateTimeline\",\n CameraStreamInfo = \"CameraStreamInfo\",\n LocalStorage = \"LocalStorage\",\n StorageSpaceUsed = \"StorageSpaceUsed\",\n RouterTemperature = \"RouterTemperature\",\n RouterCpuLoad = \"RouterCpuLoad\",\n RouterRamUsed = \"RouterRamUsed\",\n RouterSystemLoad5MnAvg = \"RouterSystemLoad5MnAvg\",\n RouterSwapTotal = \"RouterSwapTotal\",\n RouterRamTotal = \"RouterRamTotal\",\n RouterUptime = \"RouterUptime\",\n RouterCpuCoresTotal = \"RouterCpuCoresTotal\",\n RouterSignalReliability = \"RouterSignalReliability\",\n RouterSINR = \"RouterSINR\",\n RouterRSRP = \"RouterRSRP\",\n RouterRSRQ = \"RouterRSRQ\",\n RouterRSSI = \"RouterRSSI\",\n RouterSignalStrengthStats = \"RouterSignalStrengthStats\",\n RouterSignalQualityStats = \"RouterSignalQualityStats\",\n RouterDataConsumptionStats = \"RouterDataConsumptionStats\",\n BatteryVoltageAndCurrentStats = \"BatteryVoltageAndCurrentStats\",\n PanelVoltageAndPowerStats = \"PanelVoltageAndPowerStats\",\n ExNvrStatus = \"ExNvrStatus\",\n ExNvrVersion = \"ExNvrVersion\",\n ExNvrMemoryUsage = \"ExNvrMemoryUsage\",\n ExNvrLogs = \"ExNvrLogs\",\n}\n\nexport enum KitChartType {\n Stat = \"stat\",\n Gauge = \"gauge\",\n Graph = \"graph\",\n Table = \"table\",\n StateTimeline = \"state-timeline\",\n Logs = \"logs\",\n TimeSeries = \"timeseries\",\n BarChart = \"barchart\",\n}\n\nexport type GrafanaDataSource = {\n type: string\n uid: string\n}\n\nexport type GrafanaTarget = {\n expr: string\n refId: string\n datasourceId?: string\n intervalMs?: number\n maxDataPoints?: number\n}\n\nexport type GrafanaPanel = {\n [key: string]: unknown\n id: GrafanaMetricId\n name: keyof GrafanaMetricId\n title: string\n description: string\n type: KitChartType\n datasource: GrafanaDataSource\n targets: GrafanaTarget[]\n maxDataPoints?: number\n interval?: string\n timeFrom?: string\n timeShift?: string\n options?: {\n maxDataPoints?: number\n interval?: string\n }\n}\n\nexport type GrafanaDashboard = {\n [key: string]: unknown\n panels: GrafanaPanel[]\n time?: {\n from: string\n to: string\n }\n timepicker?: {\n refresh_intervals: string[]\n time_options: string[]\n }\n}\n\nexport type GrafanaQueryOptions = {\n metricId: GrafanaMetricId\n host: string\n job?: string\n from?: string\n to?: string\n variables?: Record<string, string>\n}\n\nexport type GrafanaTimeSeriesValue = number | string | null\nexport type GrafanaTimeSeriesValues = GrafanaTimeSeriesValue[][]\n\nexport type GrafanaFieldConfig = {\n displayNameFromDS?: string\n links?: string[]\n color?: string\n custom?: {\n lineInterpolation?: string\n fillOpacity?: number\n gradientMode?: string\n lineWidth?: number\n spanNulls?: boolean\n resultType?: string\n }\n thresholds?: {\n mode: string\n steps: Array<{\n color: string\n value: number | null\n }>\n }\n unit?: string\n decimals?: number\n interval?: number\n}\n\nexport type GrafanaField = {\n name: string\n type: string\n typeInfo: {\n frame: string\n nullable?: boolean\n }\n config: GrafanaFieldConfig\n labels?: {\n [key: string]: string\n }\n values?: GrafanaTimeSeriesValues\n}\n\nexport type GrafanaSchemaMeta = {\n type?: string\n typeVersion?: number[]\n custom?: {\n resultType?: string\n frameType?: string\n }\n stats?: Array<{\n displayName: string\n value: number\n unit?: string\n }>\n executedQueryString?: string\n}\n\nexport type GrafanaSchema = {\n name?: string\n refId: string\n meta: GrafanaSchemaMeta\n fields: GrafanaField[]\n}\n\nexport type GrafanaFrame = {\n schema: GrafanaSchema\n data: {\n values: GrafanaTimeSeriesValues\n nanos?: Array<number[] | null>\n }\n}\n\nexport type KitMetricData = {\n type: KitChartType\n chartProps?: Record<string, unknown>\n}\n\nexport type GrafanaQueryResult = {\n status: number\n frames: GrafanaFrame[]\n}\n\nexport type GrafanaMetricData = KitMetricData & {\n results: {\n [key: string]: GrafanaQueryResult\n }\n}\n\nexport type EvercamMetricData = KitMetricData & {\n stats: EvercamStats[]\n}\n\nexport type GrafanaKitMetrics = Record<\n keyof typeof GrafanaMetricId,\n GrafanaMetricData\n>\n\nexport type EvercamStats = {\n [k: string]: number | string\n timestamp: string\n}\n\nexport type KitQueryParams = PaginationParams & {\n name: string\n serial: string\n status: KitStatus\n tagId: number | number[]\n}\n\nexport type AdminKit = {\n id: number\n name: string\n serial: string\n status: string\n powerType: PowerType\n location: string\n countryId: number\n countryName: string\n countryRegion: string\n nvr: Nvr\n router: {\n id: number\n serialNumber: number\n vpnUserId: string\n vpnPassword: string\n routerType: string\n routerUserId: string\n routerPassword: string\n routerHttpPort: number\n powerType: PowerType\n powerSchedule: Schedule\n vpnServer: string\n netbirdUrl: string\n sims: {\n id: number\n number: string\n }[]\n }\n project: {\n id: number\n exid: string\n name: string\n timezone: string\n status: string\n zohoId: string\n insertedAt: DateType\n }\n}\n\nexport type KitCreatePayload = {\n projectId?: number\n countryCode?: string\n name: string\n status: KitStatus\n powerType: PowerType\n config: {\n region: Region\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 KitStorageResponsePayload = {\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 tran: KitStorageTransport\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { CameraStatus, DateType, PaginationParams } from \"@/types\"\n\nexport enum AuditLogActionType {\n VH_STATUS = \"vh_status\",\n CR_UPDATED = \"cr_updated\",\n CR_CREATED = \"cr_created\",\n ONLINE = \"online\",\n OFFLINE = \"offline\",\n ON_HOLD = \"on_hold\",\n WAITING = \"waiting\",\n DECOMMISSIONED = \"decommissioned\",\n UNDER_MAINTENANCE = \"under_maintenance\",\n WAITING_FOR_SITE_VISIT = \"waiting_for_site_visit\",\n SMS = \"sms\",\n CUSTOM = \"custom\",\n PUBLIC_NOTE = \"public_note\",\n SIM = \"sim\",\n LOGIN = \"login\",\n LOGOUT = \"logout\",\n CREATE = \"create\",\n UPDATE = \"update\",\n DELETE = \"delete\",\n DEVICE_SETTINGS = \"device_settings\",\n LINK_SIM_WITH_ROUTER = \"link_sim_with_router\",\n UNLINK_SIM_FROM_ROUTER = \"unlink_sim_from_router\",\n LINK_CAMERA_WITH_ROUTER = \"link_camera_with_router\",\n UNLINK_CAMERA_FROM_ROUTER = \"unlink_camera_from_router\",\n SHARE = \"share\",\n UPDATE_SHARE = \"update_share\",\n DELETE_SHARE = \"delete_share\",\n SHARE_REQUEST = \"share_request\",\n DELETE_SHARE_REQUEST = \"delete_share_request\",\n TRANSFER_OWNERSHIP = \"transfer_ownership\",\n BIM_NOTE = \"bim_note\",\n GATE_REPORT_NOTE = \"gate_report_note\",\n}\n\nexport type AuditLog = {\n id: number\n action: AuditLogActionType\n details: Record<string, any>\n insertedAt: DateType\n entity: string\n user_details: {\n browser: string\n country: string\n countryCode: string\n device: string | null\n ip: string\n os: string | null\n }\n who: string\n}\n\nexport type AuditLogsParams = PaginationParams & {\n routerId: number\n cameraId: number\n entity: string\n byRouter: boolean\n byCamera: boolean\n byProject: boolean\n action: string\n}\n\nexport type CameraLogsQueryParams = {\n historyDays: number\n accountId?: string\n status: CameraStatus[]\n}\n\nexport type CameraLogItem = {\n start: DateType\n state: CameraStatus\n end: DateType\n}\n\nexport type CameraLog = {\n data: CameraLogItem[]\n measure: string\n}\n\nexport type CameraAuditLog = {\n id: number\n action: AuditLogActionType\n details: {\n error_body?: string\n exid: string\n id: number\n name: string\n reason?: string\n }\n insertedAt: DateType\n entity: string\n user_details: {\n ip: string\n country: string\n countryCode: string\n agent: string\n }\n who: string\n}\n\nexport type CameraAuditLogsQueryParams = PaginationParams & {\n from: string\n to: string\n action: AuditLogActionType[]\n}\n","import { CameraExid, DateType, PaginationParams, Schedule } from \"@/types\"\n\nexport type SnapshotExtractionQyeryParams = PaginationParams & {\n camera: string // search by camera name\n cameraExid: CameraExid\n status: SnapshotExtractionStatus\n}\n\nexport enum SnapshotExtractionStatus {\n Completed = \"completed\",\n Failed = \"failed\",\n Processing = \"processing\",\n}\n\nexport enum SnapshotExtractionType {\n Cloud = \"cloud\",\n Local = \"local\",\n Timelapse = \"timelapse\",\n}\n\nexport type SnapshotExtraction = {\n id: number\n cameraId: number\n cameraExid: CameraExid\n cameraName: string\n fromDate: DateType\n toDate: DateType\n type: SnapshotExtractionType\n notes: string\n status: SnapshotExtractionStatus\n interval: number\n requestor: string\n jpegsToDropbox: boolean\n injectTo_cr: Boolean\n schedule: Schedule\n created_at: DateType\n}\n\nexport type SnapshotTestPayload = {\n cameraExid?: CameraExid\n camUsername: string\n camPassword: string\n externalUrl: string\n jpgUrl: string\n}\n\nexport type SnapshotTestResponse = {\n status: string\n data: string\n}\n\nexport type DeleteSnapshotQueryParams = {\n fromDate: DateType\n toDate: DateType\n adminEmail: string\n adminFullname: string\n}\n","import type {\n BBox,\n BoundingBox,\n DateType,\n Schedule,\n CameraExid,\n DateTime,\n DetectionModel,\n PaginationParams,\n PpeLabel,\n ProjectExid,\n} from \"@evercam/api/types\"\nimport { DetectionLabel, DownloadTypes } from \"@evercam/api/types\"\n\nexport enum SiteAnalyticsMode {\n Detections = \"detections\",\n Segments = \"segments\",\n}\n\nexport type SmartSearchOptionData = {\n id?: string\n type: SmartSearchQueryComponentType\n value:\n | DetectionLabel\n | SmartSearchOperatorType\n | SmartSearchConditionData\n | SmartSearchCondition\n | SmartSearchDateRange\n | string\n}\n\nexport type SmartSearchQueryPart =\n | SmartSearchOptionData\n | [SmartSearchQueryPart]\n | SmartSearchQueryPart[]\n\nexport enum SmartSearchQueryComponentType {\n Condition = \"condition\",\n Object = \"object\",\n Area = \"in_area\",\n Time = \"time\",\n Operator = \"operator\",\n Camera = \"camera\",\n DateRange = \"date_range\",\n}\n\nexport type SmartSearchDateRange = {\n start: DateType\n end: DateType\n}\n\nexport type SmartSearchQueryComponentData = {\n id: string\n type: SmartSearchQueryComponentType\n parts: [SmartSearchQueryPart]\n}\n\nexport enum SmartSearchCondition {\n InArea = \"in_area\",\n Intersects = \"intersects\",\n Time = \"time\",\n}\n\nexport type SmartSearchConditionData = {\n condition: SmartSearchCondition\n value: string | BoundingBox | DetectionLabel | Date\n}\n\nexport type SmartSearchQueryCondition = {\n type: SmartSearchQueryConditionTypes\n target: SmartSearchQueryTargets\n operator?: SmartSearchQueryOperators\n attribute?: string\n value: string | number | string[]\n reference?: {\n target: SmartSearchQueryTargets\n attribute: string\n value: string | number | string[]\n }\n polygon?: BBox\n}\n\nexport type SmartSearchQuery = {\n returnTargets: SmartSearchQueryTargets[]\n rulesLogic: SmartSearchOperatorType\n rules: {\n logic: SmartSearchOperatorType\n conditions: SmartSearchQueryCondition[]\n }[]\n returnType: SmartSearchQueryReturnType\n}\n\nexport enum SmartSearchQueryTargets {\n Tracking = \"tracking\",\n Segments = \"segments\",\n}\n\nexport enum SmartSearchQueryReturnType {\n All = \"all\",\n FirstLastSeen = \"first_last_seen\",\n}\n\nexport enum SmartSearchOperatorType {\n And = \"AND\",\n Or = \"OR\",\n}\n\nexport enum SmartSearchQueryOperators {\n Near = \"near\",\n Far = \"far\",\n Intersects = \"intersects\",\n DoesNotIntersect = \"does_not_intersect\",\n Inside = \"inside\",\n Outside = \"outside\",\n DistanceBelow = \"distance_below\",\n DistanceAbove = \"distance_above\",\n Area = \"in_area\",\n Equal = \"=\",\n}\n\nexport enum SmartSearchQueryConditionTypes {\n Selection = \"selection\",\n Spatial = \"spatial\",\n Area = \"area\",\n Iou = \"iou\",\n Near = \"near\",\n Far = \"far\",\n}\n\nexport type SmartSearchOptionValue =\n | DetectionLabel\n | SmartSearchOperatorType\n | SmartSearchConditionData\n\nexport type SmartSearchQueryParams = {\n cameraExid: string\n name: string\n description: string\n query: {\n req: SmartSearchQuery\n timeSchedule?: Schedule | undefined\n }\n fromDate?: DateType\n toDate?: DateType\n author: string\n createdAt: DateType\n params?: Record<string, unknown>\n}\n\nexport type SavedQuery = {\n description: string\n id: number\n query: {\n req: SmartSearchQuery\n timeSchedule?: Schedule | undefined\n }\n params: Record<string, string>\n components?: Omit<SmartSearchOptionData, \"id\">[]\n toDate?: DateType\n createdAt?: DateType\n cameraExid: string\n name: string\n fromDate?: DateType\n author?: string\n}\n\nexport type DetectionsRequestParams = {\n projectExid: ProjectExid\n cameraExids: CameraExid[]\n fromDate?: DateTime\n toDate?: DateTime\n labels?: Array<DetectionLabel | PpeLabel>\n modelId?: DetectionModel\n trackId?: number\n thresholds?: string[]\n excludeLabels?: Array<DetectionLabel | PpeLabel>\n confidenceThreshold?: number\n} & PaginationParams\n\nexport type DetectionsExportRequestParams = DetectionsRequestParams & {\n fileType: DownloadTypes\n columns?: string[]\n directDownload?: boolean\n}\n","import type { DateTime } from \"@evercam/api/types/time\"\nimport { PaginationParams } from \"@/types\"\nimport { VideoWallPresetItemConfig } from \"@evercam/api/types/videoWall\"\n\nexport enum DelayUnit {\n Minute = \"Minutes\",\n Hour = \"Hours\",\n Day = \"Days\",\n}\n\nexport enum CommonWidgetSettingsKeys {\n Width = \"width\",\n WidthResolution = \"resolution\",\n Height = \"height\",\n HeightResolution = \"heightResolution\",\n}\n\nexport enum RecordingsWidgetSettingsKeys {\n DarkMode = \"darkMode\",\n Calendar = \"calendar\",\n HasDelay = \"hasDelay\",\n Delay = \"delay\",\n DelayUnit = \"delayUnit\",\n HasRange = \"hasRange\",\n DateRange = \"dateRange\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum LiveViewWidgetSettingsKeys {\n Fullscreen = \"fullscreen\",\n Download = \"download\",\n Zoom = \"zoom\",\n Playpause = \"playpause\",\n Refresh = \"refresh\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum BimCompareWidgetSettingsKeys {\n Timeline = \"timeline\",\n Calendar = \"calendar\",\n DarkMode = \"darkMode\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport enum VideoWallWidgetSettingsKeys {\n Preset = \"preset\",\n RefreshRate = \"refreshRate\",\n Width = CommonWidgetSettingsKeys.Width,\n WidthResolution = CommonWidgetSettingsKeys.WidthResolution,\n Height = CommonWidgetSettingsKeys.Height,\n HeightResolution = CommonWidgetSettingsKeys.HeightResolution,\n}\n\nexport type CommonWidgetSettings = {\n width: number\n resolution: string\n height: number\n heightResolution: string\n}\n\nexport type RecordingsWidgetSettings = CommonWidgetSettings & {\n darkMode: boolean\n calendar: boolean\n hasDelay: boolean\n delay: number\n delayUnit: DelayUnit\n}\n\nexport type LiveViewWidgetSettings = CommonWidgetSettings & {\n fullscreen: boolean\n download: boolean\n zoom: boolean\n playpause: boolean\n refresh: number\n}\n\nexport type BimCompareWidgetSettings = CommonWidgetSettings & {\n timeline: boolean\n darkMode: boolean\n}\n\nexport type VideoWallWidgetSettings = CommonWidgetSettings & {\n preset: VideoWallPresetItemConfig\n refreshRate: number\n}\n\nexport type WidgetSettings =\n | RecordingsWidgetSettings\n | LiveViewWidgetSettings\n | BimCompareWidgetSettings\n | VideoWallWidgetSettings\n\nexport enum WidgetType {\n LiveWidget = \"Live View\",\n Recording = \"Recordings\",\n BimCompare = \"BIM Compare\",\n VideoWall = \"Video Wall\",\n}\n\nexport const WidgetTypesByResource = {\n camera: [WidgetType.LiveWidget, WidgetType.Recording, WidgetType.BimCompare],\n project: [WidgetType.VideoWall],\n}\n\nexport type WidgetsListRequestPayload = PaginationParams & {\n userId: number\n projectId: number\n cameraId: number\n active: boolean\n settings: WidgetSettings\n widgetType: WidgetType\n isPublic: boolean\n allowedOrigin: string\n}\n\nexport type Widget = {\n id: number\n ressources: {\n camera?: {\n id: number\n exid: string\n name: string\n }\n project?: {\n id: number\n exid: string\n name: string\n }\n }\n widgetType: WidgetType\n settings: WidgetSettings\n allowedOrigin: string\n isPublic: boolean\n active: boolean\n user: {\n id: number\n email: string\n firstname: string\n lastname: string\n }\n insertedAt: DateTime\n updatedAt: DateTime\n}\n\nexport type WidgetFull = {\n id: number\n ressources: {\n camera?: {\n id: number\n exid: string\n name: string\n }\n project?: {\n id: number\n exid: string\n name: string\n }\n }\n widgetType: WidgetType\n widgetKey: string\n widgetId: string\n active: boolean\n user: {\n id: number\n email: string\n }\n settings: WidgetSettings\n sessionSettings: any\n allowedOrigin: string\n isPublic: boolean\n insertedAt: DateTime\n updatedAt: DateTime\n}\n\nexport type WidgetPayload = {\n ressources: {\n cameraId?: number\n projectId?: number\n }\n widgetType: WidgetType\n active: boolean\n settings: WidgetSettings\n isPublic: boolean\n allowedOrigin: string\n}\n","export enum CountryId {\n Andorra = 1,\n UnitedArabEmirates = 2,\n Afghanistan = 3,\n AntiguaAndBarbuda = 4,\n Anguilla = 5,\n Albania = 6,\n Armenia = 7,\n NetherlandsAntilles = 8,\n Angola = 9,\n Antarctica = 10,\n Argentina = 11,\n AmericanSamoa = 12,\n Austria = 13,\n Australia = 14,\n Aruba = 15,\n AlandIslands = 16,\n Azerbaijan = 17,\n BosniaAndHerzegovina = 18,\n Barbados = 19,\n Bangladesh = 20,\n Belgium = 21,\n BurkinaFaso = 22,\n Bulgaria = 23,\n Bahrain = 24,\n Burundi = 25,\n Benin = 26,\n Bermuda = 27,\n BruneiDarussalam = 28,\n Bolivia = 29,\n Brazil = 30,\n Bahamas = 31,\n Bhutan = 32,\n BouvetIsland = 33,\n Botswana = 34,\n Belarus = 35,\n Belize = 36,\n Canada = 37,\n CocosKeelingIslands = 38,\n CongoKinshasa = 39,\n CentralAfricanRepublic = 40,\n CongoBrazzaville = 41,\n Switzerland = 42,\n CoteDIvoire = 43,\n CookIslands = 44,\n Chile = 45,\n Cameroon = 46,\n China = 47,\n Colombia = 48,\n CostaRica = 49,\n Cuba = 50,\n CapeVerde = 51,\n ChristmasIsland = 52,\n Cyprus = 53,\n CzechRepublic = 54,\n Germany = 55,\n Djibouti = 56,\n Denmark = 57,\n Dominica = 58,\n DominicanRepublic = 59,\n Algeria = 60,\n Ecuador = 61,\n Estonia = 62,\n Egypt = 63,\n WesternSahara = 64,\n Eritrea = 65,\n Spain = 66,\n Ethiopia = 67,\n Finland = 68,\n Fiji = 69,\n FalklandIslands = 70,\n Micronesia = 71,\n FaroeIslands = 72,\n France = 73,\n Gabon = 74,\n UnitedKingdom = 75,\n Grenada = 76,\n Georgia = 77,\n FrenchGuiana = 78,\n Guernsey = 79,\n Ghana = 80,\n Gibraltar = 81,\n Greenland = 82,\n Gambia = 83,\n Guinea = 84,\n Guadeloupe = 85,\n EquatorialGuinea = 86,\n Greece = 87,\n SouthGeorgiaAndTheSouthSandwichIslands = 88,\n Guatemala = 89,\n Guam = 90,\n GuineaBissau = 91,\n Guyana = 92,\n HongKong = 93,\n HeardIslandAndMcDonaldIslands = 94,\n Honduras = 95,\n Croatia = 96,\n Haiti = 97,\n Hungary = 98,\n Indonesia = 99,\n Ireland = 100,\n Israel = 101,\n IsleOfMan = 102,\n India = 103,\n BritishIndianOceanTerritory = 104,\n Iraq = 105,\n Iran = 106,\n Iceland = 107,\n Italy = 108,\n Jersey = 109,\n Jamaica = 110,\n Jordan = 111,\n Japan = 112,\n Kenya = 113,\n Kyrgyzstan = 114,\n Cambodia = 115,\n Kiribati = 116,\n Comoros = 117,\n SaintKittsAndNevis = 118,\n NorthKorea = 119,\n SouthKorea = 120,\n Kuwait = 121,\n CaymanIslands = 122,\n Kazakhstan = 123,\n Laos = 124,\n Lebanon = 125,\n SaintLucia = 126,\n Liechtenstein = 127,\n SriLanka = 128,\n Liberia = 129,\n Lesotho = 130,\n Lithuania = 131,\n Luxembourg = 132,\n Latvia = 133,\n LibyanArabJamahiriya = 134,\n Morocco = 135,\n Monaco = 136,\n Moldova = 137,\n Montenegro = 138,\n Madagascar = 139,\n MarshallIslands = 140,\n Macedonia = 141,\n Mali = 142,\n Myanmar = 143,\n Mongolia = 144,\n Macao = 145,\n NorthernMarianaIslands = 146,\n Martinique = 147,\n Mauritania = 148,\n Montserrat = 149,\n Malta = 150,\n Mauritius = 151,\n Maldives = 152,\n Malawi = 153,\n Mexico = 154,\n Malaysia = 155,\n Mozambique = 156,\n Namibia = 157,\n NewCaledonia = 158,\n Niger = 159,\n NorfolkIsland = 160,\n Nigeria = 161,\n Nicaragua = 162,\n Netherlands = 163,\n Norway = 164,\n Nepal = 165,\n Nauru = 166,\n Niue = 167,\n NewZealand = 168,\n Oman = 169,\n Panama = 170,\n Peru = 171,\n FrenchPolynesia = 172,\n PapuaNewGuinea = 173,\n Philippines = 174,\n Pakistan = 175,\n Poland = 176,\n SaintPierreAndMiquelon = 177,\n Pitcairn = 178,\n PuertoRico = 179,\n PalestinianTerritory = 180,\n Portugal = 181,\n Palau = 182,\n Paraguay = 183,\n Qatar = 184,\n Reunion = 185,\n Romania = 186,\n Serbia = 187,\n RussianFederation = 188,\n Rwanda = 189,\n SaudiArabia = 190,\n SolomonIslands = 191,\n Seychelles = 192,\n Sudan = 193,\n Sweden = 194,\n Singapore = 195,\n SaintHelena = 196,\n Slovenia = 197,\n SvalbardAndJanMayen = 198,\n Slovakia = 199,\n SierraLeone = 200,\n SanMarino = 201,\n Senegal = 202,\n Somalia = 203,\n Suriname = 204,\n SaoTomeAndPrincipe = 205,\n ElSalvador = 206,\n SyrianArabRepublic = 207,\n Swaziland = 208,\n TurksAndCaicosIslands = 209,\n Chad = 210,\n FrenchSouthernTerritories = 211,\n Togo = 212,\n Thailand = 213,\n Tajikistan = 214,\n Tokelau = 215,\n TimorLeste = 216,\n Turkmenistan = 217,\n Tunisia = 218,\n Tonga = 219,\n Turkey = 220,\n TrinidadAndTobago = 221,\n Tuvalu = 222,\n Taiwan = 223,\n Tanzania = 224,\n Ukraine = 225,\n Uganda = 226,\n UnitedStatesMinorOutlyingIslands = 227,\n UnitedStates = 228,\n Uruguay = 229,\n Uzbekistan = 230,\n VaticanCityState = 231,\n SaintVincentAndTheGrenadines = 232,\n Venezuela = 233,\n VirginIslandsBritish = 234,\n VirginIslandsUS = 235,\n VietNam = 236,\n Vanuatu = 237,\n WallisAndFutuna = 238,\n Samoa = 239,\n Yemen = 240,\n Mayotte = 241,\n SouthAfrica = 242,\n Zambia = 243,\n Zimbabwe = 244,\n}\n\nexport enum CountryCode {\n Andorra = \"ad\",\n UnitedArabEmirates = \"ae\",\n Afghanistan = \"af\",\n AntiguaAndBarbuda = \"ag\",\n Anguilla = \"ai\",\n Albania = \"al\",\n Armenia = \"am\",\n NetherlandsAntilles = \"an\",\n Angola = \"ao\",\n Antarctica = \"aq\",\n Argentina = \"ar\",\n AmericanSamoa = \"as\",\n Austria = \"at\",\n Australia = \"au\",\n Aruba = \"aw\",\n AlandIslands = \"ax\",\n Azerbaijan = \"az\",\n BosniaAndHerzegovina = \"ba\",\n Barbados = \"bb\",\n Bangladesh = \"bd\",\n Belgium = \"be\",\n BurkinaFaso = \"bf\",\n Bulgaria = \"bg\",\n Bahrain = \"bh\",\n Burundi = \"bi\",\n Benin = \"bj\",\n Bermuda = \"bm\",\n BruneiDarussalam = \"bn\",\n Bolivia = \"bo\",\n Brazil = \"br\",\n Bahamas = \"bs\",\n Bhutan = \"bt\",\n BouvetIsland = \"bv\",\n Botswana = \"bw\",\n Belarus = \"by\",\n Belize = \"bz\",\n Canada = \"ca\",\n CocosKeelingIslands = \"cc\",\n CongoKinshasa = \"cd\",\n CentralAfricanRepublic = \"cf\",\n CongoBrazzaville = \"cg\",\n Switzerland = \"ch\",\n CoteDIvoire = \"ci\",\n CookIslands = \"ck\",\n Chile = \"cl\",\n Cameroon = \"cm\",\n China = \"cn\",\n Colombia = \"co\",\n CostaRica = \"cr\",\n Cuba = \"cu\",\n CapeVerde = \"cv\",\n ChristmasIsland = \"cx\",\n Cyprus = \"cy\",\n CzechRepublic = \"cz\",\n Germany = \"de\",\n Djibouti = \"dj\",\n Denmark = \"dk\",\n Dominica = \"dm\",\n DominicanRepublic = \"do\",\n Algeria = \"dz\",\n Ecuador = \"ec\",\n Estonia = \"ee\",\n Egypt = \"eg\",\n WesternSahara = \"eh\",\n Eritrea = \"er\",\n Spain = \"es\",\n Ethiopia = \"et\",\n Finland = \"fi\",\n Fiji = \"fj\",\n FalklandIslands = \"fk\",\n Micronesia = \"fm\",\n FaroeIslands = \"fo\",\n France = \"fr\",\n Gabon = \"ga\",\n UnitedKingdom = \"gb\",\n Grenada = \"gd\",\n Georgia = \"ge\",\n FrenchGuiana = \"gf\",\n Guernsey = \"gg\",\n Ghana = \"gh\",\n Gibraltar = \"gi\",\n Greenland = \"gl\",\n Gambia = \"gm\",\n Guinea = \"gn\",\n Guadeloupe = \"gp\",\n EquatorialGuinea = \"gq\",\n Greece = \"gr\",\n SouthGeorgiaAndTheSouthSandwichIslands = \"gs\",\n Guatemala = \"gt\",\n Guam = \"gu\",\n GuineaBissau = \"gw\",\n Guyana = \"gy\",\n HongKong = \"hk\",\n HeardIslandAndMcDonaldIslands = \"hm\",\n Honduras = \"hn\",\n Croatia = \"hr\",\n Haiti = \"ht\",\n Hungary = \"hu\",\n Indonesia = \"id\",\n Ireland = \"ie\",\n Israel = \"il\",\n IsleOfMan = \"im\",\n India = \"in\",\n BritishIndianOceanTerritory = \"io\",\n Iraq = \"iq\",\n Iran = \"ir\",\n Iceland = \"is\",\n Italy = \"it\",\n Jersey = \"je\",\n Jamaica = \"jm\",\n Jordan = \"jo\",\n Japan = \"jp\",\n Kenya = \"ke\",\n Kyrgyzstan = \"kg\",\n Cambodia = \"kh\",\n Kiribati = \"ki\",\n Comoros = \"km\",\n SaintKittsAndNevis = \"kn\",\n NorthKorea = \"kp\",\n SouthKorea = \"kr\",\n Kuwait = \"kw\",\n CaymanIslands = \"ky\",\n Kazakhstan = \"kz\",\n Laos = \"la\",\n Lebanon = \"lb\",\n SaintLucia = \"lc\",\n Liechtenstein = \"li\",\n SriLanka = \"lk\",\n Liberia = \"lr\",\n Lesotho = \"ls\",\n Lithuania = \"lt\",\n Luxembourg = \"lu\",\n Latvia = \"lv\",\n LibyanArabJamahiriya = \"ly\",\n Morocco = \"ma\",\n Monaco = \"mc\",\n Moldova = \"md\",\n Montenegro = \"me\",\n Madagascar = \"mg\",\n MarshallIslands = \"mh\",\n Macedonia = \"mk\",\n Mali = \"ml\",\n Myanmar = \"mm\",\n Mongolia = \"mn\",\n Macao = \"mo\",\n NorthernMarianaIslands = \"mp\",\n Martinique = \"mq\",\n Mauritania = \"mr\",\n Montserrat = \"ms\",\n Malta = \"mt\",\n Mauritius = \"mu\",\n Maldives = \"mv\",\n Malawi = \"mw\",\n Mexico = \"mx\",\n Malaysia = \"my\",\n Mozambique = \"mz\",\n Namibia = \"na\",\n NewCaledonia = \"nc\",\n Niger = \"ne\",\n NorfolkIsland = \"nf\",\n Nigeria = \"ng\",\n Nicaragua = \"ni\",\n Netherlands = \"nl\",\n Norway = \"no\",\n Nepal = \"np\",\n Nauru = \"nr\",\n Niue = \"nu\",\n NewZealand = \"nz\",\n Oman = \"om\",\n Panama = \"pa\",\n Peru = \"pe\",\n FrenchPolynesia = \"pf\",\n PapuaNewGuinea = \"pg\",\n Philippines = \"ph\",\n Pakistan = \"pk\",\n Poland = \"pl\",\n SaintPierreAndMiquelon = \"pm\",\n Pitcairn = \"pn\",\n PuertoRico = \"pr\",\n PalestinianTerritory = \"ps\",\n Portugal = \"pt\",\n Palau = \"pw\",\n Paraguay = \"py\",\n Qatar = \"qa\",\n Reunion = \"re\",\n Romania = \"ro\",\n Serbia = \"rs\",\n RussianFederation = \"ru\",\n Rwanda = \"rw\",\n SaudiArabia = \"sa\",\n SolomonIslands = \"sb\",\n Seychelles = \"sc\",\n Sudan = \"sd\",\n Sweden = \"se\",\n Singapore = \"sg\",\n SaintHelena = \"sh\",\n Slovenia = \"si\",\n SvalbardAndJanMayen = \"sj\",\n Slovakia = \"sk\",\n SierraLeone = \"sl\",\n SanMarino = \"sm\",\n Senegal = \"sn\",\n Somalia = \"so\",\n Suriname = \"sr\",\n SaoTomeAndPrincipe = \"st\",\n ElSalvador = \"sv\",\n SyrianArabRepublic = \"sy\",\n Swaziland = \"sz\",\n TurksAndCaicosIslands = \"tc\",\n Chad = \"td\",\n FrenchSouthernTerritories = \"tf\",\n Togo = \"tg\",\n Thailand = \"th\",\n Tajikistan = \"tj\",\n Tokelau = \"tk\",\n TimorLeste = \"tl\",\n Turkmenistan = \"tm\",\n Tunisia = \"tn\",\n Tonga = \"to\",\n Turkey = \"tr\",\n TrinidadAndTobago = \"tt\",\n Tuvalu = \"tv\",\n Taiwan = \"tw\",\n Tanzania = \"tz\",\n Ukraine = \"ua\",\n Uganda = \"ug\",\n UnitedStatesMinorOutlyingIslands = \"um\",\n UnitedStates = \"us\",\n Uruguay = \"uy\",\n Uzbekistan = \"uz\",\n VaticanCityState = \"va\",\n SaintVincentAndTheGrenadines = \"vc\",\n Venezuela = \"ve\",\n VirginIslandsBritish = \"vg\",\n VirginIslandsUS = \"vi\",\n VietNam = \"vn\",\n Vanuatu = \"vu\",\n WallisAndFutuna = \"wf\",\n Samoa = \"ws\",\n Yemen = \"ye\",\n Mayotte = \"yt\",\n SouthAfrica = \"za\",\n Zambia = \"zm\",\n Zimbabwe = \"zw\",\n}\n\nexport enum 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\nexport enum AutomationType {\n Photo = \"photo\",\n Compare = \"compare\",\n}\n","export type ActiveUsersRequestPayload = {\n from?: string\n to?: string\n companyExid?: string\n projectExid?: string\n cameraExid?: string\n}\n\nexport type ActiveUsersResponsePayload = Array<{\n date?: string\n dau?: number\n wau?: number\n mau?: number\n}>\n\nexport enum ActiveUsersMetric {\n DAU = \"dau\",\n WAU = \"wau\",\n MAU = \"mau\",\n}\n","import { ErrorType } from \"@evercam/api/types\"\n\nconst createErrorClass = (errorName: string) => {\n return class extends Error {\n constructor(error: unknown) {\n const e =\n error instanceof Error\n ? error\n : new Error(typeof error === \"string\" ? error : \"unknown\")\n super(e.message)\n this.name = errorName\n this.message = e.message\n this.stack = (e.stack || \"\").replace(/^Error: /, `${errorName}: `)\n }\n }\n}\n\nexport const BadRequestError = createErrorClass(ErrorType.BadRequestError)\nexport const NotFoundError = createErrorClass(ErrorType.NotFoundError)\nexport const UnauthorizedError = createErrorClass(ErrorType.UnauthorizedError)\nexport const GatewayTimeoutError = createErrorClass(\n ErrorType.GatewayTimeoutError\n)\nexport const BadGatewayError = createErrorClass(ErrorType.BadGatewayError)\nexport const ForbiddenError = createErrorClass(ErrorType.ForbiddenError)\nexport const HlsError = createErrorClass(ErrorType.HlsError)\nexport const SnapshotError = createErrorClass(ErrorType.SnapshotError)\nexport const ConflictError = createErrorClass(ErrorType.ConflictError)\nexport const InternalServerError = createErrorClass(\n ErrorType.InternalServerError\n)\n","import humps from \"humps\"\nimport Axios, {\n AxiosDefaults,\n type AxiosError,\n type AxiosRequestConfig,\n type AxiosResponse,\n} from \"axios\"\nimport { ErrorCode, type AxiosEnvironment } from \"@evercam/api/types\"\nimport {\n NotFoundError,\n BadRequestError,\n UnauthorizedError,\n BadGatewayError,\n GatewayTimeoutError,\n ForbiddenError,\n InternalServerError,\n ConflictError,\n} from \"./customErrors\"\nimport axios from \"axios\"\n\nlet numberOfRequestsSentInThePastSecond = 0\nconst maxRequestsPerSecond = 10\nconst requestsRateLimit = async () => {\n while (numberOfRequestsSentInThePastSecond === maxRequestsPerSecond) {\n await new Promise((r) => setTimeout(r, 1000))\n }\n numberOfRequestsSentInThePastSecond++\n\n setTimeout(() => {\n numberOfRequestsSentInThePastSecond--\n }, 1000)\n}\n\nexport const onRequest = async (\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) => {\n if (request?.raw) {\n return request\n }\n\n if (request?.timing) {\n request._metadata = { startTime: performance.now() }\n }\n await requestsRateLimit()\n ensureBaseUrl(request, axiosEnv)\n addAuthTokenHeader(request, axiosEnv)\n if (\n axiosEnv.app === \"dashboard\" &&\n typeof document.referrer === \"string\" &&\n document.referrer.length !== 0\n ) {\n // @ts-expect-error - common type string | number | undefined\n request.headers.common[\"iframe-origin\"] = new URL(document.referrer).origin\n }\n\n if (!request.preserveCasing) {\n transformCamelCaseToSnakeCase(request)\n }\n\n return request\n}\n\nexport const onResponse = (response: AxiosResponse) => {\n if (response?.config?.raw) {\n return response\n }\n\n if (!(\"data\" in response)) {\n return response\n } else if (response.data instanceof Blob) {\n return response.data\n }\n\n const data = response?.config?.preserveCasing\n ? response.data\n : humps.camelizeKeys(response.data)\n\n if (response?.config?.timing && response?.config?._metadata?.startTime) {\n const duration = performance.now() - response.config._metadata.startTime\n\n return {\n ...response,\n data: data,\n duration,\n }\n }\n\n return data\n}\n\nexport const onError = async (\n error: AxiosError,\n axiosEnv: AxiosEnvironment\n) => {\n if (error?.config?.timing && error?.config?._metadata?.startTime) {\n const duration = performance.now() - error.config._metadata.startTime\n\n return { error, duration }\n }\n const statusCode = error.response ? error.response.status : null\n const method = (error.config?.method || \"\").toUpperCase()\n const url = error.config?.url\n // @ts-expect-error - AxiosError has no response property\n const backendErrorCode = error?.response?.data?.code || \"\"\n\n let customError = {}\n let customMessage = error.message\n\n if (url && method && statusCode) {\n customMessage =\n `${method} ${url} (${statusCode}) ${backendErrorCode}`.trim()\n }\n switch (statusCode) {\n case ErrorCode.BadRequestError:\n customError = new BadRequestError(new Error(customMessage))\n break\n case ErrorCode.UnauthorizedError:\n customError = new UnauthorizedError(new Error(customMessage))\n break\n case ErrorCode.ForbiddenError:\n customError = new ForbiddenError(new Error(customMessage))\n break\n case ErrorCode.NotFoundError:\n customError = new NotFoundError(new Error(customMessage))\n break\n case ErrorCode.ConflictError:\n customError = new ConflictError(new Error(customMessage))\n break\n case ErrorCode.InternalServerError:\n customError = new InternalServerError(new Error(customMessage))\n break\n case ErrorCode.BadGatewayError:\n customError = new BadGatewayError(new Error(customMessage))\n break\n case ErrorCode.GatewayTimeoutError:\n customError = new GatewayTimeoutError(new Error(customMessage))\n break\n case null: // null case\n case 0: // 0 case occurred when user has no internet connection\n customError = new Error(\n \"A network error occurred. This could be a CORS issue, a cancel request or a dropped internet connection.\"\n )\n break\n }\n const isCancelError = Axios.isCancel(error)\n\n if (isCancelError || statusCode === ErrorCode.NotFoundError) {\n return Promise.reject(customError)\n }\n\n console.warn(\"[@evercam/api/axios.ts]: Caught error:\", error)\n\n const breadcrumbLogger = axiosEnv.errorLogger\n if (url && breadcrumbLogger) {\n breadcrumbLogger({\n // @ts-expect-error axios issue\n category: \"axios.info\",\n data: {\n url: `Error in URL: ${url}`,\n status: statusCode,\n },\n })\n }\n\n return Promise.reject(customError)\n}\n\nexport const ensureCommonHeaders = (\n target: AxiosDefaults | AxiosRequestConfig\n) => {\n if (!target.headers) {\n // @ts-ignore\n target.headers = {}\n }\n if (!target.headers.common) {\n target.headers.common = {}\n }\n}\n\nfunction addAuthTokenHeader(\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) {\n // Add auth token header\n const JwtToken = axiosEnv?.getAuthToken?.()\n if (!JwtToken) {\n return\n }\n ensureCommonHeaders(request)\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore (See https://github.com/axios/axios/issues/4193 )\n request.headers.common.Authorization = `Bearer ${JwtToken}`\n}\n\nfunction ensureBaseUrl(\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) {\n // Set baseURL if not already set\n if (!request.baseURL) {\n request.baseURL = axiosEnv?.baseUrl as string\n }\n}\n\nfunction transformCamelCaseToSnakeCase(\n request: AxiosRequestConfig<Record<string, any>>\n) {\n let paramsIgnoredCasing = {}\n let { data, params } = request\n\n if (\n data &&\n !(\n data instanceof Blob ||\n data instanceof FormData ||\n typeof data === \"string\"\n )\n ) {\n // Ignore casing transformation for some params when prompted using the `ignoreCasingFromParams` prop\n if (data?.ignoreCasingFromParams) {\n paramsIgnoredCasing =\n data.ignoreCasingFromParams.reduce(\n (acc: Record<string, any>, item: any) => ({\n ...acc,\n [item]: data![item],\n }),\n {}\n ) || {}\n delete data.ignoreCasingFromParams\n }\n if (Array.isArray(data)) {\n data = humps.decamelizeKeys(data)\n } else {\n data = { ...humps.decamelizeKeys(data), ...paramsIgnoredCasing }\n }\n }\n\n // Apply camelCase -> snake_cake on the request payload for FormData of instance of data\n if (data && data instanceof FormData) {\n let formData = new FormData()\n // @ts-ignore\n for (const [key, value] of data.entries()) {\n formData.append(humps.decamelize(key), value)\n }\n data = formData\n }\n\n // Apply camelCase -> snake_cake on the request query params\n if (params && !(params instanceof Blob)) {\n params = humps.decamelizeKeys(params)\n }\n\n request.data = data\n request.params = params\n}\n\nexport const OnRequestExpiredTokenInterceptor = async (\n request: AxiosRequestConfig,\n isTokenExpired: () => boolean,\n handler: () => Promise<void>\n) => {\n if (isTokenExpired()) {\n await handler()\n throw new axios.Cancel(\"Request canceled due to expired token\")\n }\n\n return request\n}\n","import Axios, { 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\"\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 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 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 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 KitStorageRequestPayload,\n KitStorageResponsePayload,\n} from \"@evercam/api/types\"\n\nimport { KitMetricId } from \"@evercam/api/types\"\nimport { Tag } from \"@/types/tag\"\n\nexport const AdminApi = {\n mediaHub: {\n getAllMedia(params: {\n params: Partial<MediaFilterQueryParams>\n }): Promise<PaginatedItems<Media>> {\n return axios.get(\"/admin/media-hub\", params)\n },\n deleteMedia(params: Partial<MediaDeleteRequestPayload>): Promise<void> {\n return axios.delete(\"/admin/media-hub\", { params })\n },\n },\n auditLogs: {\n getAuditLogs(params: {\n params: Partial<AuditLogsParams>\n }): Promise<PaginatedItems<AuditLog>[]> {\n return axios.get(\"/admin/audit-logs\", params)\n },\n },\n cameras: {\n getCamerasStats(params: {\n params: {\n email?: string\n }\n }): Promise<CamerasResponsePayload> {\n return axios.get(\"/admin/cameras/status-stats\", params)\n },\n rebootCamera(cameraId: string): Promise<{ message: string }> {\n return axios.post(`/admin/devices/camera/${cameraId}/reboot`)\n },\n focusCamera(\n cameraId: string,\n device: string\n ): Promise<{ message: string }> {\n return axios.post(`/admin/devices/${device}/${cameraId}/focus`)\n },\n getStorageServers(): Promise<StorageServersResponsePayload> {\n return axios.get(\"/admin/storage/servers\")\n },\n getStorageDetails() {\n return axios.get(\"/admin/storage\")\n },\n getSnapshotExtractions(params: {\n params: Partial<SnapshotExtractionQyeryParams>\n }): Promise<PaginatedItems<SnapshotExtraction>> {\n return axios.get(\"/admin/snapshot-extractions\", params)\n },\n createCameras(\n payload: CameraCreateRequestPayload\n ): Promise<{ cameras: [AdminCamera] }> {\n return axios.post(\"/admin/cameras\", payload)\n },\n deleteCamera(exid: string, payload: CameraDeletePayload): Promise<void> {\n return axios.post(`/admin/cameras/${exid}/delete`, payload)\n },\n restoreCamera(exid: string): Promise<{ message: string }> {\n return axios.put(`/admin/cameras/${exid}/restore`)\n },\n testSnapshot(payload: SnapshotTestPayload): Promise<SnapshotTestResponse> {\n return axios.post(\"/admin/cameras/test-snapshot\", payload)\n },\n getDuplicateCameras(params: {\n params: {\n fields?: DuplicatedCameraFields[]\n sort?: string\n }\n }): Promise<PaginatedItems<DuplicatedCameraResponse>> {\n return axios.get(\"/admin/duplicate-cameras\", params)\n },\n mergeDuplicateCameras(\n payload: MergeDuplicatedCameraPayload\n ): Promise<{ success: boolean }> {\n return axios.post(\"/admin/merge-cameras\", payload)\n },\n getCameras(params: {\n params: Partial<FetchCameraQueryParams>\n }): Promise<PaginatedItems<AdminCamera>> {\n return axios.get(\"/admin/cameras\", params)\n },\n getCompares(params: {\n params: AdminCompareQueryParams\n }): Promise<PaginatedItems<AdminCompare[]>> {\n return axios.get(\"/admin/compares\", params)\n },\n getCameraDetails(exid: string): Promise<AdminCamera> {\n return axios.get(`/admin/cameras/${exid}`)\n },\n deleteSnapshots(\n cameraId: string,\n params: DeleteSnapshotQueryParams\n ): Promise<void> {\n return axios.delete(`admin/cameras/${cameraId}/snapshots`, {\n params,\n })\n },\n refreshDeviceSettings(cameraId: string): Promise<void> {\n return axios.post(\n `/admin/cameras/${cameraId}/device-settings/refresh`,\n {}\n )\n },\n // (Azhar) Old save note code will be remove once we migrate all old saved camera notes\n saveNote(cameraId: string, params: SaveNotePayload): Promise<CameraNote> {\n return axios.post(`/admin/cameras/${cameraId}/save-note`, params)\n },\n saveCameraNote(\n cameraId: string,\n params: CreateCameraNotePayload\n ): Promise<{ message: string }> {\n return axios.post(`/admin/cameras/${cameraId}/note`, params)\n },\n update(\n cameraId: string,\n params: CameraUpdateRequestPayload\n ): Promise<CamerasResponsePayload> {\n return axios.patch(`/admin/cameras/${cameraId}`, params)\n },\n },\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 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<KitStorageResponsePayload[]>> {\n return axios.get(\"/admin/kits/storages\", params)\n },\n },\n logs: {\n getAllCamerasStatusLogs(params: {\n params: CameraLogsQueryParams\n }): Promise<{ data: CameraLog[] }> {\n return axios.get(\"/admin/cameras-logs\", params)\n },\n getCameraLogs(\n cameraId: string,\n payload: {\n params: CameraAuditLogsQueryParams\n }\n ): Promise<PaginatedItems<CameraAuditLog[]>> {\n return axios.get(`/admin/cameras/${cameraId}/audit-logs`, payload)\n },\n togglePinNote(id: string): Promise<PaginatedItems<CameraAuditLog[]>> {\n return axios.patch(`/admin/audit-logs/${id}/toggle-pin`)\n },\n },\n nvrs: {\n getNvrs(params: {\n params: NvrQueryParams\n }): Promise<PaginatedItems<Nvr[]>> {\n return axios.get(\"/admin/nvrs\", params)\n },\n createNvr(params: NvrCreatePayload) {\n return axios.post(\"/admin/nvrs\", params)\n },\n updateNvr(id: string, params: PatchPayload<Nvr>) {\n return axios.patch(`/admin/nvrs/${id}`, params)\n },\n rebootNVR(cameraId: string): Promise<{ message: string }> {\n return axios.post(`/admin/devices/nvr/${cameraId}/reboot`)\n },\n },\n offlineCameras: {\n getSiteVisitCameras(params: {\n params: Partial<SiteVisitCamerasQueryParams>\n }): Promise<PaginatedItems<AdminCamera>> {\n return axios.get(\"/admin/site-visit-cameras\", params)\n },\n getOfflineCameras(params: {\n params: Partial<OfflineCameraQueryParams>\n }): Promise<PaginatedItems<OfflineCamera>> {\n return axios.get(\"/admin/offline-cameras\", params)\n },\n getOfflineCamerasLastNote(params: {\n cameraIds: number[]\n }): Promise<OfflineCameraNoteResponse> {\n return axios.get(\"/admin/offline-cameras/notes\", { params: params })\n },\n },\n projects: {\n index(params: {\n params: Partial<ProjectsQueryParams>\n }): Promise<PaginatedItems<Project>> {\n return axios.get(\"/admin/projects\", params)\n },\n show(\n exid: string,\n params: Record<string, unknown> = {}\n ): Promise<{ data: Project }> {\n return axios.get(\n `/admin/projects/${exid}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getUsers(id: string): Promise<ProjectUsers> {\n return axios.get(`/admin/projects/${id}/users`)\n },\n getCameras(id: string): Promise<{ data: ProjectCamera[] }> {\n return axios.get(`/admin/projects/${id}/cameras`)\n },\n getProjectsStats(): Promise<ProjectStatusStats> {\n return axios.get(\"/admin/projects/status-stats\")\n },\n createProject(\n params: ProjectCreateRequestPayload\n ): Promise<ProjectCreateResponse> {\n return axios.post(\"/admin/projects\", params)\n },\n updateProject(\n projectExid: string,\n params: Partial<ProjectUpdateRequestPayload>\n ): Promise<ProjectCreateResponse> {\n return axios.put(`/admin/projects/${projectExid}`, params)\n },\n deleteProject(projectExid: string): Promise<{ success: boolean }> {\n return axios.delete(`/admin/projects/${projectExid}`)\n },\n addToProject(\n projectExid: string,\n params: { cameraExids: string[] }\n ): Promise<void> {\n return axios.post(`/admin/projects/${projectExid}/add-cameras`, params)\n },\n },\n routers: {\n getRouters(params: {\n params: Partial<RouterQueryParams>\n }): Promise<PaginatedItems<Router[]>> {\n return axios.get(\"/admin/routers\", params)\n },\n getRouterTypes(): Promise<string[]> {\n return axios.get(\"/admin/router-types\")\n },\n createRouter(params: RouterCreatePayload): Promise<{ routerId: number }> {\n return axios.post(\"/admin/routers\", params)\n },\n updateRouter(\n id: number,\n params: RouterCreatePayload\n ): Promise<{ success: boolean }> {\n return axios.patch(`/admin/routers/${id}`, params)\n },\n deleteRouter(id: number): Promise<void> {\n return axios.delete(`/admin/routers/${id}`)\n },\n getRouter(id: number): Promise<Router> {\n return axios.get(`/admin/routers/${id}`)\n },\n },\n search: {\n search(params: {\n params: GlobalSearchQueryParams\n }): Promise<PaginatedItems<Record<string, unknown>>> {\n return axios.get(\"/admin/search\", params)\n },\n },\n hdds: {\n getHdds(payload: { projectId: string; companyId: string }): Promise<Hdd[]> {\n return axios.get(\"/admin/hdds\", { params: payload })\n },\n getAllHdds(params: { params: Partial<HDDsQueryParams> }) {\n return axios.get(\"/admin/hdds\", params)\n },\n deleteHdd(hddId: number) {\n return axios.delete(`/admin/hdds/${hddId}`)\n },\n saveHdd(params: HDDCreateUpdatePayload) {\n return axios.post(\"/admin/hdds\", params)\n },\n updateHdd(hddId: number, params: HDDCreateUpdatePayload) {\n return axios.patch(`/admin/hdds/${hddId}`, params)\n },\n saveFootage(hddId: number, params: FootageCreateUpdatePayload) {\n return axios.post(`/admin/hdds/${hddId}/footages`, params)\n },\n deleteFootage(hddId: number, footageId: number) {\n return axios.delete(`/admin/hdds/${hddId}/footages/${footageId}`)\n },\n updateFootage(\n hddId: number,\n footageId: number,\n params: FootageCreateUpdatePayload\n ) {\n return axios.patch(`/admin/hdds/${hddId}/footages/${footageId}`, params)\n },\n },\n shareRequests: {\n getShareRequests(params: {\n params: Partial<CameraShareRequestsQueryParams>\n }): Promise<PaginatedItems<CameraShareRequest[]>> {\n return axios.get(\"/admin/camera-share-requests\", params)\n },\n deleteShareRequest(params: {\n ids: number[]\n }): Promise<{ success: boolean }> {\n return axios.delete(\"/admin/camera-share-requests\", { params: params })\n },\n updateShareRequestStatus(params: {\n ids: number[]\n status: string\n }): Promise<{ success: boolean }> {\n return axios.patch(\"/admin/camera-share-requests\", params)\n },\n },\n shares: {\n createShares(\n cameraExid: string,\n payload: CameraShareRequestPayload\n ): Promise<ShareCreateResponsePayload> {\n return axios.post(`/admin/cameras/${cameraExid}/shares`, payload)\n },\n getShares(params: {\n params: Partial<ShareQueryParams>\n }): Promise<PaginatedItems<AdminShare[]>> {\n return axios.get(\"/admin/camera-shares\", params)\n },\n deleteShares(ids: number[]): Promise<void> {\n return axios.delete(\"/admin/camera-shares\", { params: ids })\n },\n },\n sims: {\n deleteSim(simId: number): Promise<{ deleted: boolean }> {\n return axios.delete(`/admin/sims/${simId}`)\n },\n createSim(\n params: Omit<SimCreateUpdatePayload, \"cameraId\">\n ): Promise<{ success: boolean }> {\n return axios.post(\"/admin/sims\", params)\n },\n updateSim(\n simId: number,\n params: CameraShareRequestPayload\n ): Promise<{ success: boolean }> {\n return axios.patch(`/admin/sims/${simId}`, params)\n },\n getSims(params: {\n params: Partial<SimsQueryParams>\n }): Promise<PaginatedItems<Sim[]>> {\n return axios.get(\"/admin/sims\", params)\n },\n getSimProviders() {\n return axios.get(\"/admin/sim-providers\")\n },\n getBillPayers() {\n return axios.get(\"/admin/sims/bill-payers\")\n },\n },\n sms: {\n sendSms(number: string, params: SendSmsPayload): Promise<SendSmsResponse> {\n return axios.post(`/admin/sims/${number}/sms`, params)\n },\n getSimHistory(number: string): Promise<SmsHistoryResponse> {\n return axios.get(`/admin/sims/${number}/sms`)\n },\n getSms(params: {\n params: Partial<SmsQueryParams>\n }): Promise<PaginatedItems<Sms[]>> {\n return axios.get(\"/admin/sms\", params)\n },\n },\n progressPhotos: {\n getProgressPhotos(params: {\n params: Partial<ProgressPhotosQueryParams>\n }): Promise<PaginatedItems<ProgressPhotoItem[]>> {\n return axios.get(\"/admin/progress-photos\", params)\n },\n getProgressPhotosHistory(params: {\n params: Partial<progressPhotosHistoryQueryParams>\n }): Promise<ProgressPhotosHistory> {\n return axios.get(\"/admin/progress-photos/history\", params)\n },\n getProgressPhotoTemplate({\n id,\n }: {\n id: string\n }): Promise<{ progressPhoto: string }> {\n return axios.get(`/admin/progress-photos/history/${id}/email`)\n },\n update(\n id: string,\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<ProgressPhoto> {\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}\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\n\nexport const _3dFirebaseApi = {\n drone: {\n getProjectInfo(\n projectExid: ProjectExid\n ): Promise<DroneProjectJsonResponse> {\n return fetch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectExid}.json`\n ).then((res) => res.json())\n },\n },\n _360: {\n getProjectInfo(projectExid: ProjectExid): Promise<_360ProjectJsonResponse> {\n return fetch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}.json`\n ).then((res) => res.json())\n },\n updateFloor(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n body: any\n ): Promise<_360ProjectJsonResponse> {\n return fetch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/dates/${dateId}/floors/${floorIndex}.json`,\n {\n method: \"PATCH\",\n body: JSON.stringify(body),\n }\n ).then((res) => res.json())\n },\n },\n}\n","import humps from \"humps\"\n\nexport type Falsy = \"\" | null | undefined | false\n\nexport interface QueryParams {\n [k: string]: string | number | boolean | string[] | Falsy\n}\n\nexport const toQueryString = <T extends Record<string, unknown>>(\n paramsObject: T | QueryParams = {},\n { forceSnakeCase = true, forceArrayBrackets = false } = {}\n) => {\n if (Object.keys(paramsObject).length === 0) {\n return\n }\n let params = { ...paramsObject }\n if (forceSnakeCase) {\n params = humps.decamelizeKeys(paramsObject) as QueryParams\n }\n\n return Object.entries(params).reduce((acc, [param, value], index) => {\n let encodedParam = \"\"\n if (\n [\"\", null, undefined]?.includes(value as string | null | undefined) ||\n (Array.isArray(value) && value.length === 0)\n ) {\n return acc\n } else if (value && typeof value === \"object\") {\n encodedParam = Object.entries(value).reduce((_acc, [key, v], i) => {\n let paramName = param\n if (isNaN(Number.parseInt(key))) {\n paramName = `${param}[${key}]`\n } else if (Array.isArray(value) && forceArrayBrackets) {\n paramName = `${param}[]`\n }\n\n return `${_acc}${i > 0 ? \"&\" : \"\"}${paramName}=${encodeURIComponent(v)}`\n }, \"\")\n } else {\n encodedParam = `${param}=${encodeURIComponent(\n value as string | number | boolean\n )}`\n }\n\n return `${acc}${index > 0 ? \"&\" : \"\"}${encodedParam}`\n }, \"\")\n}\n\nexport function queryStringToObject(queryString = \"\"): QueryParams {\n const entries = [\n ...new URLSearchParams(\n queryString.indexOf(\"#\") > -1 ? queryString.split(\"#\")[0] : queryString\n ).entries(),\n ].filter(([, value]) => value)\n\n return entries.reduce<QueryParams>((acc, [key, value]) => {\n const isSingleParam =\n (queryString.match(new RegExp(`(?:^|[?&])${key}=`, \"g\")) || []).length <=\n 1\n if (isSingleParam) {\n return { ...acc, [key]: value }\n }\n\n if (acc[key]) {\n return {\n ...acc,\n [key]: [...(acc[key] as string[]), value],\n }\n }\n\n return { ...acc, [key]: [value] }\n }, {})\n}\n","import { axios } from \"./client\"\nimport { toQueryString } from \"../utils\"\nimport {\n AnprQueryParams,\n AnprEvent,\n EventCountRequestPayload,\n EventCountResponsePayload,\n EventsExportRequestParameters,\n EventsRequestPayload,\n EventsResponsePayload,\n GateReportROI,\n PaginatedItems,\n GateReportVerifiedDay,\n ProjectExid,\n CameraExid,\n AnprCountsQueryParams,\n AnprCount,\n AnprBasedGateReportExportRequestParams,\n GateReportResponsePayload,\n GatReportRequestPayload,\n AnalyticsParameters,\n VerifiedDaysQueryParams,\n EventUpdateRequestPayload,\n VerifyDayUpdateRequestPayload,\n ProcessedDaysQueryParams,\n GateReportEventType,\n DateTime,\n RoisQueryParams,\n GateReportROICreateRequestPayload,\n SegmentsSimilaritySearchParams,\n DetectionsFilters,\n TrackingsByLabel,\n SegmentsByLabel,\n DetectionsCountsParams,\n DetectionsPresenceByLabel,\n SmartSearchQueryParams,\n SavedQuery,\n DateType,\n DetectionsRequestParams,\n DetectionsGroup,\n DetectionsCountsByPeriod,\n DetectionsExportRequestParams,\n SegmentsFilters,\n DownloadTypes,\n SmartSearchQuery,\n Schedule,\n} from \"@evercam/api/types\"\nimport type { AxiosPromise, AxiosRequestConfig } from \"axios\"\nimport { VEHICLE_TYPE_IDS } from \"@evercam/api/types\"\nimport {\n CreateCoolifyAppRequestPayload,\n SaveCoolifyAppRequestPayload,\n} from \"@/types/coolify\"\n\nexport const getAiApiUrl = () => axios.env.aiApiUrl\n\nexport const AiApi = {\n analyticsParameters: {\n getParameters(\n cameraId: CameraExid,\n params: Record<string, unknown> = {}\n ): Promise<AnalyticsParameters> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraId}/analytics-parameters`,\n {\n params,\n }\n )\n },\n createParameters(\n params: Omit<AnalyticsParameters, \"id\">\n ): Promise<AnalyticsParameters> {\n return axios.post(`${getAiApiUrl()}/cameras/analytics-parameters`, params)\n },\n updateParameters({\n updatedBy,\n id,\n ...payload\n }: Partial<AnalyticsParameters> & {\n updatedBy: string\n }): Promise<AnalyticsParameters> {\n return axios.patch(\n `${getAiApiUrl()}/cameras/analytics-parameters/${id}?${toQueryString({\n updatedBy,\n })}`,\n payload\n )\n },\n },\n anpr: {\n exportAnprLegacyEvents(projectExid: ProjectExid, params: AnprQueryParams) {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/anpr/export?${toQueryString(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n getAnprEvents(\n projectExid: ProjectExid,\n params: AnprQueryParams\n ): Promise<PaginatedItems<AnprEvent>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr?${toQueryString(params)}`\n )\n },\n getAnprCounts(\n projectExid: ProjectExid,\n payload: AnprCountsQueryParams\n ): Promise<AnprCount[]> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/anpr/counts?${toQueryString(\n payload\n )}`\n )\n },\n updateAnprEvent(anprEventId: string, eventBody: Record<string, unknown>) {\n return axios.patch(`${getAiApiUrl()}/projects/anpr/${anprEventId}`, {\n ...eventBody,\n })\n },\n bulkUpdateAnprRecords(\n anprEventsIds: number[],\n action: \"is_plate\" | \"not_plate\" | \"is_duplicate\" | \"not_duplicate\"\n ) {\n return axios.patch(\n `${getAiApiUrl()}/projects/anpr/update/status?${toQueryString({\n anprEventsIds,\n action,\n })}`\n )\n },\n exportAnprEvents(\n projectExid: string,\n params: AnprBasedGateReportExportRequestParams\n ): AxiosPromise<string> {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/anpr/events/export?${toQueryString<AnprBasedGateReportExportRequestParams>(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n },\n gateReport: {\n getLastVerified(params: Record<string, unknown>) {\n return axios.get(\n `${getAiApiUrl()}/projects/gate-report/last-verified`,\n params\n )\n },\n deleteEvent(id: number, params: Record<string, unknown>) {\n return axios.delete(\n `${getAiApiUrl()}/projects/events/${id}?${toQueryString(params)}`\n )\n },\n dismissEvents(params: Record<string, unknown>) {\n return axios.delete(\n `${getAiApiUrl()}/projects/events?${toQueryString(params)}`\n )\n },\n exportEvents(projectExid: string, params: EventsExportRequestParameters) {\n return axios({\n url: `${getAiApiUrl()}/projects/${projectExid}/gate-report/events/export?${toQueryString<EventsExportRequestParameters>(\n params\n )}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n },\n exportEventsProgress(projectExid: string, params: { exportDate: string }) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/events/export/progress?${toQueryString(\n params\n )}`\n )\n },\n\n generateAnprThumbnail(cameraExid: CameraExid, captureTime: DateTime) {\n return axios.post(\n `${getAiApiUrl()}/cameras/${cameraExid}/anpr/${captureTime}/snapshot/generate`,\n {},\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n )\n },\n\n getAllEvents(\n projectExid: ProjectExid,\n params: EventsRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<EventsResponsePayload> {\n if (!params.vehicleTypes) {\n params.vehicleTypes = VEHICLE_TYPE_IDS\n }\n if (!params.truckTypes) {\n params.vehicleTypes = VEHICLE_TYPE_IDS\n }\n if (!params.camerasExid) {\n params.camerasExid = params.cameras\n }\n\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/events?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n getEventCounts(\n projectExid: string,\n payload: EventCountRequestPayload = {},\n extraParams?: AxiosRequestConfig\n ): Promise<EventCountResponsePayload> {\n if (!payload.vehicleTypes) {\n payload.vehicleTypes = VEHICLE_TYPE_IDS\n }\n\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/project-stats?${toQueryString(\n payload\n )}`,\n {\n ...(extraParams || {}),\n }\n )\n },\n getVerifiedDays(\n projectExid: ProjectExid,\n params: Partial<VerifiedDaysQueryParams>,\n extraParams = {}\n ): Promise<PaginatedItems<GateReportVerifiedDay>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/verified-days?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n updateEventById(\n eventId: number,\n {\n updatedBy,\n payload,\n }: {\n updatedBy: string\n payload: Partial<EventUpdateRequestPayload>\n }\n ) {\n return axios.patch(\n `${getAiApiUrl()}/projects/events/${eventId}?${toQueryString({\n updatedBy,\n })}`,\n payload\n )\n },\n verifyDay(params: VerifyDayUpdateRequestPayload) {\n return axios.post(\n `${getAiApiUrl()}/projects/gate-report/verified-days`,\n params\n )\n },\n regenerateThumbnail(id: number, params: { cameraExid: string }) {\n return axios.put(\n `${getAiApiUrl()}/projects/gate-report/event-thumbnail/render/${id}?${toQueryString(\n params\n )}`,\n {\n method: \"PUT\",\n }\n )\n },\n getDailyStatus(\n projectExid: string,\n params: Partial<ProcessedDaysQueryParams> = {}\n ) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/processed-days`,\n { params }\n )\n },\n getEventThumbnail({\n cameraExid,\n eventType,\n eventTime,\n token,\n }: {\n cameraExid: string\n eventType: GateReportEventType\n eventTime: DateTime\n token: string\n }) {\n return `${getAiApiUrl()}/cameras/${cameraExid}/gate-report/${eventType}/${eventTime}/thumbnail?authorization=${token}`\n },\n getEventSnapshot({\n cameraExid,\n eventType,\n eventTime,\n token,\n }: {\n cameraExid: string\n eventType: GateReportEventType\n eventTime: DateTime\n token: string\n }) {\n return `${getAiApiUrl()}/cameras/${cameraExid}/gate-report/${eventType}/${eventTime}/snapshot?authorization=${token}`\n },\n getEvents(\n projectExid: ProjectExid,\n params: GatReportRequestPayload,\n extraParams: AxiosRequestConfig = {}\n ): Promise<GateReportResponsePayload> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/events?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n getCounts(\n projectExid: string,\n payload: EventCountRequestPayload = {},\n extraParams: AxiosRequestConfig = {}\n ): Promise<EventCountResponsePayload> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/gate-report/counts?${toQueryString(\n payload\n )}`,\n extraParams\n )\n },\n getGateReportApplications(projectExid: string, anprCameraExid: string) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${anprCameraExid}/gate-report/apps`\n )\n },\n getGateReportProjectsInfos(params: Record<string, unknown>) {\n return axios.get(\n `${getAiApiUrl()}/projects/gate-report/get-projects-info`,\n params\n )\n },\n },\n brainTool: {\n getObjectDetectionsResults(payload = {}) {\n return axios.post(`${getAiApiUrl()}/ai-models/object-detection`, payload)\n },\n getSegments(payload = {}) {\n return axios.post(`${getAiApiUrl()}/ai-models/segment`, payload)\n },\n },\n roi: {\n getROIs(\n projectExid: string,\n params: Partial<RoisQueryParams> = {}\n ): Promise<GateReportROI[]> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/rois?${toQueryString(params)}`\n )\n },\n createROI(params: GateReportROICreateRequestPayload) {\n return axios.post(`${getAiApiUrl()}/projects/rois`, params)\n },\n updateROI({\n updatedBy,\n roi,\n }: {\n updatedBy: string\n roi: GateReportROICreateRequestPayload\n }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/rois/${roi.id}?${toQueryString({\n updatedBy,\n })}`,\n roi\n )\n },\n deleteROI({ id, updatedBy }: { id: number; updatedBy: string }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/rois/${id}?${toQueryString({\n updatedBy,\n })}`,\n { isactive: false, note: \"delete roi\" }\n )\n },\n },\n detections: {\n async getDetections({ projectExid, ...params }: DetectionsRequestParams) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections?${toQueryString(\n params\n )}`\n )\n },\n async getDetectionsCounts({\n projectExid,\n ...params\n }: DetectionsRequestParams): Promise<DetectionsCountsByPeriod> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/counts?${toQueryString(\n params\n )}`\n )\n },\n async getDetectionsByTimestamp({\n projectExid,\n ...params\n }: DetectionsRequestParams): Promise<PaginatedItems<DetectionsGroup>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/timestamps?${toQueryString(\n params\n )}`\n )\n },\n async getSimilarSegmentsInTimeIntervals({\n cameraExid,\n iouThreshold = 0.8,\n ...params\n }: SegmentsSimilaritySearchParams) {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/segments/appearance-from-points`,\n {\n params: {\n cameraExid,\n iouThreshold,\n ...params,\n },\n }\n )\n },\n async getDetectionsTracking(\n projectExid: ProjectExid,\n params: DetectionsFilters\n ): Promise<TrackingsByLabel> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/trackings?${toQueryString(\n params\n )}`\n )\n },\n async getSegmentsMasks(\n cameraExid: CameraExid,\n params: SegmentsFilters\n ): Promise<SegmentsByLabel> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/segments/masks`,\n {\n params,\n }\n )\n },\n async getDetectionsPresenceDateIntervals({\n projectExid,\n ...params\n }: DetectionsCountsParams): Promise<DetectionsPresenceByLabel> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/presence-intervals?${toQueryString(\n params\n )}`\n )\n },\n async requestExport({\n projectExid,\n ...params\n }: DetectionsExportRequestParams) {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/detections/timestamps/export?${toQueryString(\n params\n )}`,\n { responseType: \"blob\" }\n )\n },\n },\n siteAnalytics: {\n smartSearch({\n cameraExid,\n payload,\n fromDate,\n toDate,\n page = 1,\n pageSize = 20,\n }: {\n cameraExid: CameraExid\n payload: Record<string, unknown>\n fromDate?: string\n toDate?: string\n page?: number\n pageSize?: number\n }) {\n let url = `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search?page=${page}&page_size=${pageSize}`\n if (fromDate && toDate) {\n url += `&from_date=${fromDate}&to_date=${toDate}`\n }\n\n return axios.post(url, payload)\n },\n saveQuery(payload: SmartSearchQueryParams) {\n return axios.post(\n `${getAiApiUrl()}/cameras/${\n payload.cameraExid\n }/advanced_search/queries`,\n payload\n )\n },\n getQueries(\n cameraExid: CameraExid,\n params: { name?: string }\n ): Promise<SavedQuery[]> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries`,\n {\n params,\n }\n )\n },\n getQueryById(\n cameraExid: CameraExid,\n queryId: number\n ): Promise<SmartSearchQueryParams> {\n return axios.get(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries/${queryId}`\n )\n },\n updateQuery(\n cameraExid: CameraExid,\n queryId: number,\n payload: Partial<SavedQuery>\n ) {\n return axios.put(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries/${queryId}`,\n payload\n )\n },\n deleteQuery(cameraExid: CameraExid, queryId: number) {\n return axios.delete(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/queries/${queryId}`,\n {}\n )\n },\n getProcessedTimes({\n projectExid,\n cameraExids,\n granularity = \"day\",\n endDate,\n startDate,\n }: {\n projectExid: string\n cameraExids: string[]\n granularity?: \"day\" | \"hour\"\n startDate?: DateType\n endDate?: DateType\n }): Promise<Record<string, string[]>> {\n return axios.get(\n `${getAiApiUrl()}/projects/${projectExid}/processed_times`,\n {\n params: {\n camera_exids: cameraExids,\n granularity,\n start_date: startDate,\n end_date: endDate,\n },\n preserveCasing: true,\n }\n )\n },\n exportResultsData({\n cameraExid,\n fromDate,\n toDate,\n query,\n fileType = DownloadTypes.Csv,\n directDownload = true,\n payload,\n }: {\n cameraExid: CameraExid\n fromDate?: DateType\n toDate?: DateType\n query: string\n fileType: DownloadTypes\n directDownload?: boolean\n payload: {\n req: SmartSearchQuery\n timeSchedule?: Schedule\n columns?: string[]\n }\n }) {\n return axios.post(\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search/export`,\n payload,\n {\n responseType: \"blob\",\n params: {\n fromDate,\n toDate,\n query,\n fileType,\n directDownload,\n },\n }\n )\n },\n },\n coolify: {\n getCoolifyServers() {\n return axios.get(`${getAiApiUrl()}/coolify/servers`)\n },\n createAppOnCoolify(payload: CreateCoolifyAppRequestPayload) {\n return axios.post(\n `${getAiApiUrl()}/projects/cameras/${\n payload.cameraExid\n }/anpr/create_app?${toQueryString(payload)}`\n )\n },\n saveAppOnCoolify(\n projectExid: string,\n cameraExid: string,\n payload: SaveCoolifyAppRequestPayload\n ) {\n return axios.post(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${cameraExid}/gate_report/apps`,\n payload\n )\n },\n updateApp({\n appUuid,\n appId,\n payload,\n cameraExid,\n projectExid,\n }: {\n projectExid: string\n cameraExid: string\n appId: string\n appUuid: string\n payload: Partial<SaveCoolifyAppRequestPayload>\n }) {\n return axios.patch(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${cameraExid}/gate_report/apps/${appId}?app_uuid=${appUuid}`,\n payload\n )\n },\n deleteApp({\n appUuid,\n appId,\n cameraExid,\n projectExid,\n }: {\n projectExid: string\n cameraExid: string\n appId: string\n appUuid: string\n }) {\n return axios.delete(\n `${getAiApiUrl()}/projects/${projectExid}/cameras/${cameraExid}/gate_report/apps/${appId}?app_uuid=${appUuid}`\n )\n },\n startService(serviceId: string) {\n return axios.post(`${getAiApiUrl()}/coolify/services/${serviceId}/start`)\n },\n pauseService(serviceId: string) {\n return axios.post(`${getAiApiUrl()}/coolify/services/${serviceId}/stop`)\n },\n restartService(serviceId: string) {\n return axios.post(\n `${getAiApiUrl()}/coolify/services/${serviceId}/restart`\n )\n },\n },\n}\n","import axios from \"axios\"\n\nexport const WebRtcApi = {\n webRtc: {\n requestIceServers({ url, token }: { url: string; token: string }) {\n return axios({\n url,\n method: \"OPTIONS\",\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n },\n sendLocalOffer({\n url,\n token,\n data,\n }: {\n url: string\n token: string\n data: {\n sdp: string\n type: string\n }\n }) {\n return axios({\n url,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/sdp\",\n Authorization: `Bearer ${token}`,\n },\n data,\n })\n },\n sendLocalCandidates({\n url,\n token,\n data,\n tag,\n }: {\n url: string\n token: string\n data: Record<string, unknown>\n tag: string\n }) {\n return axios({\n url,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/trickle-ice-sdpfrag\",\n \"If-Match\": tag,\n Authorization: `Bearer ${token}`,\n },\n data,\n })\n },\n },\n}\n","import { axios } from \"./client\"\nimport {\n CurrentWeatherRequestPayload,\n HistoryWeatherRequestPayload,\n WeatherDataResponse,\n WeatherResponsePayload,\n} from \"@evercam/api/types\"\nimport { AxiosRequestConfig } from \"axios\"\n\nexport const WeatherApi = {\n current(\n projectExid: string,\n payload: CurrentWeatherRequestPayload\n ): Promise<WeatherResponsePayload> | undefined {\n return axios.get(`/projects/${projectExid}/weather/current`, {\n params: payload,\n })\n },\n historical(\n projectExid: string,\n payload: HistoryWeatherRequestPayload\n ): Promise<WeatherResponsePayload> | undefined {\n return axios.get(`/projects/${projectExid}/weather`, { params: payload })\n },\n report(\n projectExid: string,\n payload: HistoryWeatherRequestPayload,\n config?: AxiosRequestConfig\n ): Promise<{ data: WeatherDataResponse[] }> | undefined {\n return axios.get(`/projects/${projectExid}/weather/filters`, {\n params: payload,\n ...config,\n })\n },\n}\n","import { axios } from \"./client\"\nimport type {\n CameraExid,\n CopilotConversation,\n CopilotMessage,\n CopilotMessageStep,\n SegmentsCountsParams,\n FeedbackPayload,\n GrafanaKitMetrics,\n LabsPaginationParams,\n LuminanceReading,\n PaginatedItems,\n SegmentsPresenceByLabel,\n ActiveUsersResponsePayload,\n ActiveUsersRequestPayload,\n} from \"@evercam/api/types\"\nimport { GrafanaMetricId, KitMetricPeriod } from \"@evercam/api/types\"\n\nexport function getLabsBaseUrl() {\n const labsPrNumber = /labs-(\\d+)/g.exec(window.location.href)?.[1]\n\n return labsPrNumber\n ? `https://${labsPrNumber}.labs.evercam.io`\n : axios.env.evercamLabsUrl\n}\n\nexport const EvercamLabsApi = {\n posthog: {\n getEvents(params: any): Promise<PaginatedItems<any>> {\n return axios.get(`${getLabsBaseUrl()}/posthog/events`, {\n params,\n })\n },\n getUsers(params: any): Promise<any> {\n return axios.get(`${getLabsBaseUrl()}/posthog/users`, {\n params,\n })\n },\n getActiveUsers(\n params: ActiveUsersRequestPayload\n ): Promise<ActiveUsersResponsePayload> {\n return axios.get(`${getLabsBaseUrl()}/posthog/active-users`, {\n params,\n preserveCasing: true,\n })\n },\n },\n copilot: {\n async getAllConversations(\n params: LabsPaginationParams & {\n cameraExid?: string\n projectExid?: string\n user?: string\n }\n ): Promise<PaginatedItems<CopilotConversation>> {\n return axios.get(`${getLabsBaseUrl()}/copilot/conversations`, {\n params,\n preserveCasing: true,\n })\n },\n async getOneConversation(\n conversationId: number\n ): Promise<PaginatedItems<CopilotConversation>> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}`,\n {\n preserveCasing: true,\n }\n )\n },\n async getConversationMessages(\n conversationId: number,\n params: LabsPaginationParams\n ): Promise<PaginatedItems<CopilotMessage>> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}/messages`,\n { params, preserveCasing: true }\n )\n },\n async getMessageSteps(\n message: CopilotMessage\n ): Promise<CopilotMessageStep[]> {\n return axios.get(\n `${getLabsBaseUrl()}/copilot/conversations/${\n message.conversationId\n }/messages/${message.id}/steps`\n )\n },\n async submitMessageFeedback<T>({\n conversationId,\n messageId,\n ...params\n }: FeedbackPayload<T>) {\n return axios.post(\n `${getLabsBaseUrl()}/copilot/conversations/${conversationId}/messages/${messageId}/feedback`,\n params,\n {\n preserveCasing: true,\n }\n )\n },\n },\n detections: {\n async getSegmentsDateIntervals({\n cameraExid,\n fromDate,\n toDate,\n precision,\n }: SegmentsCountsParams): Promise<SegmentsPresenceByLabel> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${cameraExid}/segments/presence-intervals`,\n {\n params: { fromDate, toDate, precision },\n preserveCasing: true,\n }\n )\n },\n },\n googleCloudStorage: {\n listFiles(\n prefix: string = \"\"\n ): Promise<{ files: string[]; folders: string[] }> {\n return axios.get(\n `${getLabsBaseUrl()}/gc-storage/buckets/evercam-labs/files`,\n {\n params: {\n prefix,\n },\n preserveCasing: true,\n }\n )\n },\n getSignedUrl(fileName: string): Promise<{ url: string }> {\n return axios.get(\n `${getLabsBaseUrl()}/gc-storage/buckets/evercam-labs/files/signed-url`,\n {\n params: {\n fileName,\n },\n preserveCasing: true,\n }\n )\n },\n },\n luminance: {\n getReadings(params: {\n cameraExid: CameraExid\n fromDate: string\n toDate: string\n }): Promise<LuminanceReading[]> {\n return axios.get(\n `${getLabsBaseUrl()}/cameras/${\n params.cameraExid || \"echel-mdqur\"\n }/luminance/readings`,\n {\n params: {\n fromDate: params.fromDate,\n toDate: params.toDate,\n },\n preserveCasing: true,\n }\n )\n },\n },\n kits: {\n getMetrics(\n kitId: string,\n metrics: GrafanaMetricId[],\n period: KitMetricPeriod = KitMetricPeriod.Last24Hours\n ): Promise<GrafanaKitMetrics> {\n return axios.get(`${getLabsBaseUrl()}/kits/${kitId}/metrics`, {\n params: {\n metrics,\n from: period,\n },\n preserveCasing: true,\n })\n },\n },\n}\n","import { axios } from \"./client\"\nimport type { AxiosRequestConfig } from \"axios\"\nimport { queryStringToObject, toQueryString } from \"@evercam/api/utils\"\nimport type {\n AconexAuthCallbackParams,\n AconexEditedImageUploadRequestPayload,\n AconexUserProjectsResponsePayload,\n ApiCredentials,\n AutodeskFolderResponsePayload,\n AutodeskProjectsResponsePayload,\n AutodeskTokenResponsePayload,\n AutodeskUploadSnapshotPayload,\n AutodeskUserHubsResponsePayload,\n AvailableDaysRequestPayload,\n AvailableDaysResponsePayload,\n AvailableHoursRequestPayload,\n AvailableHoursResponsePayload,\n BatteryReading,\n BatteryVoltage,\n BimCompareExportRequestPayload,\n BimCreationPayload,\n BIMLayer,\n BIMLayerPostPayload,\n BimLayersQueryParams,\n BimModelRequestPayload,\n BimModelResponsePayload,\n BimPendingImage,\n BimSnapshotRequestPayload,\n BimSnapshotResponsePayload,\n BimUploadCameraParameters,\n CameraExid,\n CameraLogsResponsePayload,\n CamerasResponsePayload,\n CameraStatusLog,\n CameraUpdateRequestPayload,\n CheckCameraPortPayload,\n Comment,\n CommentCreationRequestPayload,\n CommentsRequestPayload,\n Company,\n CompanyProject,\n 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} 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 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 }): Promise<CamerasResponsePayload> {\n return axios.get(\"/cameras\", params)\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 updateCamerasRestriction(\n projectExid: ProjectExid,\n payload: UpdateCameraRestrictionPayload\n ) {\n return axios.patch(`/projects/${projectExid}/cameras`, payload)\n },\n updatePlaceholderThumbnail(\n projectExid: string,\n params: { placeholder?: string }\n ): Promise<{ message: string }> {\n return axios.post(\n `/projects/${projectExid}/waiting-camera-placeholder`,\n params\n )\n },\n getPlaceholderThumbnailData(projectExid: string) {\n return axios.get(`/projects/${projectExid}/waiting-camera-placeholder`)\n },\n transferOwnership(\n projectExid: string,\n newOwnerId: number\n ): Promise<{ message: string }> {\n return axios.put(`/projects/${projectExid}/transfer/${newOwnerId}`)\n },\n getUsers(projectExid: string) {\n return axios.get(`/projects/${projectExid}/users`)\n },\n getCameras(projectExid: string): Promise<{ cameras: Camera[] }> {\n return axios.get(`/projects/${projectExid}/cameras`)\n },\n getCameraRefs(projectExid: string): Promise<{ cameras: Camera[] }> {\n return axios.get(`/projects/${projectExid}/camera_refs`)\n },\n },\n timelapse: {\n getSnapshotRange(\n cameraId: string,\n payload: TimelapseSnapshotRequestPayload,\n extraParams?: AxiosRequestConfig\n ): Promise<TimelapseSnapshotResponsePayload> {\n return axios.get(`/cameras/${cameraId}/timelapses/snapshots`, {\n params: payload,\n ...(extraParams || {}),\n })\n },\n createTimelapse(\n projectExid: string,\n payload: TimelapseCreationRequestPayload\n ): Promise<TimelapseCreationResponsePayload> {\n return axios.post(\n `/projects/${projectExid}/media-hub/timelapses`,\n payload\n )\n },\n cUpdate(\n projectExid: string,\n id: string | number,\n payload: MediaUpdateRequestPayload\n ): Promise<TimelapseCreationResponsePayload> {\n return axios.patch(\n `/projects/${projectExid}/media-hub/timelapses/${id}`,\n payload\n )\n },\n cDelete(projectExid: string, id: number): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/timelapses/${id}`)\n },\n },\n compares: {\n cCreate(\n projectExid: string,\n payload: CompareRequestPayload\n ): Promise<Compare> {\n return axios.post(`/projects/${projectExid}/media-hub/compares`, payload)\n },\n cShow(projectExid: string, id: string): Promise<Compare> {\n return axios.get(`/projects/${projectExid}/media-hub/compares/${id}`)\n },\n cUpdate(\n projectExid: string,\n id: string,\n payload: MediaUpdateRequestPayload\n ): Promise<Compare> {\n return axios.patch(\n `/projects/${projectExid}/media-hub/compares/${id}`,\n payload\n )\n },\n cDelete(projectExid: string, id: string): Promise<void> {\n return axios.delete(`/projects/${projectExid}/media-hub/compares/${id}`)\n },\n },\n projectConnectos: {\n index(projectExid: string): Promise<Array<XWeatherResponse>> {\n return axios.get(`/projects/${projectExid}/connectors`)\n },\n },\n providers: {\n getProviders(): Promise<ConnectorResponsePayload> {\n return axios.get(\"/oauth2-tokens/providers\")\n },\n },\n aconex: {\n authenticate(payload: AconexAuthCallbackParams): Promise<void> {\n return axios.get(\"/aconex/auth/callback\", {\n params: payload,\n })\n },\n getUserProjects(): Promise<AconexUserProjectsResponsePayload> {\n return axios.get(\"/aconex/projects\")\n },\n revoke(): Promise<void> {\n return axios.post(\"/aconex/auth/revoke\")\n },\n uploadEditedSnapshot(\n projectId: number,\n payload: AconexEditedImageUploadRequestPayload\n ): Promise<void> {\n return axios.post(\n `/aconex/projects/${projectId}/upload-snapshot`,\n payload\n )\n },\n getDocumentSchema(projectId: number): Promise<void> {\n return axios.get(`/aconex/projects/${projectId}/register/schema`)\n },\n },\n procore: {\n getUserCompanies(): Promise<ProcoreUserCompaniesResponsePayload> {\n return axios.get(\"/procore/companies\")\n },\n getUserProjects(\n payload: ProcoreCompanyRequestPayload\n ): Promise<ProcoreUserProjectsResponsePayload> {\n return axios.get(\"/procore/projects\", {\n params: payload,\n })\n },\n getUserProjectPermissions(\n payload: ProcoreProjectRequestPayload\n ): Promise<ProcoreUserProjectPermissionsResponsePayload> {\n return axios.get(\"/procore/projects/permissions\", {\n params: payload,\n })\n },\n getProjectAlbums(\n payload: ProcoreProjectRequestPayload\n ): Promise<ProcoreProjectsAlbumsPayload> {\n return axios.get(\"/procore/image-categories\", {\n params: payload,\n })\n },\n uploadEditedSnapshot(\n payload: ProcoreEditedImageUploadRequestPayload\n ): Promise<void> {\n return axios.post(\"/procore/upload-snapshot\", payload)\n },\n sendRevoke(): Promise<void> {\n return axios.post(\"/users/auth/procore/revoke\")\n },\n getObservationTypes(\n payload: ProcoreProjectRequestPayload\n ): Promise<ProcoreObservationTypesResponsePayload> {\n return axios.get(\"/procore/companies/observation-types\", {\n params: payload,\n })\n },\n getObservationForm(\n payload: ProcoreObservationFormRequestPayload\n ): Promise<ProcoreObservationForm> {\n return axios.get(\"/procore/observations/form\", {\n params: payload,\n })\n },\n 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 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 updateUserRestriction(\n projectExid: ProjectExid,\n payload: UpdateUserRestrictionPayload\n ) {\n return axios.patch(`/projects/${projectExid}/shares/cameras`, payload)\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 show(\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 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(\n params: Partial<WidgetsListRequestPayload>\n ): Promise<PaginatedItems<Widget>> {\n return axios.get(`/widgets?${toQueryString(params)}`)\n },\n show(id: number): Promise<WidgetFull> {\n return axios.get(`/widgets/${id}`)\n },\n getByKeys(): Promise<WidgetFull> {\n return axios.get(\"/widgets/credentials\")\n },\n setSessionSettings(params: any): Promise<WidgetFull> {\n return axios.put(\"/widgets/session\", params)\n },\n createProjectWidget(\n projectId: string,\n payload: WidgetPayload\n ): Promise<WidgetFull> {\n return axios.post(`/projects/${projectId}/widgets`, payload)\n },\n createCameraWidget(\n cameraId: string,\n payload: WidgetPayload\n ): Promise<WidgetFull> {\n return axios.post(`/cameras/${cameraId}/widgets`, payload)\n },\n update(id: number, payload: WidgetPayload): Promise<WidgetFull> {\n return axios.put(`/widgets/${id}`, payload)\n },\n delete(id: number) {\n return axios.delete(`/widgets/${id}`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { MoveParams, ZoomParams } from \"@/types\"\n\nexport const PtzApi = {\n presets: {\n index({ cameraExid }: { cameraExid: string }) {\n return axios.get(`/cameras/${cameraExid}/ptz/presets`)\n },\n go({\n cameraExid,\n presetId,\n }: {\n cameraExid: string\n presetId: string | number\n }) {\n return axios.post(`/cameras/${cameraExid}/ptz/presets/go/${presetId}`)\n },\n home({\n cameraExid,\n isRecordingFromNvr,\n }: {\n cameraExid: string\n isRecordingFromNvr: boolean\n }) {\n if (!isRecordingFromNvr) {\n return axios.post(`/cameras/${cameraExid}/ptz/home`)\n }\n\n return axios.post(`/cameras/${cameraExid}/ptz/relative`)\n },\n create({\n cameraExid,\n presetName,\n }: {\n cameraExid: string\n presetName: string\n }) {\n return axios.post(`/cameras/${cameraExid}/ptz/presets/create`, {\n presetName,\n })\n },\n update({\n cameraExid,\n presetId,\n presetName,\n }: {\n cameraExid: string\n presetId: string | number\n presetName: string\n }) {\n // eslint-disable-next-line\n return axios.post(`/cameras/${cameraExid}/ptz/presets/${presetId}/set`, {\n presetName,\n })\n },\n delete({\n cameraExid,\n presetId,\n }: {\n cameraExid: string\n presetId: string | number\n }) {\n // eslint-disable-next-line\n return axios.delete(\n `/cameras/${cameraExid}/ptz/presets/${presetId}/remove`\n )\n },\n },\n controls: {\n move({ cameraExid, direction, useContinuous }: MoveParams) {\n if (useContinuous) {\n return axios.post(\n `/cameras/${cameraExid}/ptz/continuous/start/${direction}`\n )\n }\n\n return axios.post(`/cameras/${cameraExid}/ptz/relative?${direction}=4`)\n },\n zoom({ cameraExid, direction, isRecordingFromNvr }: ZoomParams) {\n if (!isRecordingFromNvr) {\n const zoomValue = direction === \"in\" ? 1 : -1\n\n return axios.post(\n `/cameras/${cameraExid}/ptz/relative?zoom=${zoomValue}`\n )\n }\n\n return axios.post(\n `/cameras/${cameraExid}/ptz/continuous/zoom/${direction}`,\n {\n direction,\n }\n )\n },\n stop({ cameraExid }: { cameraExid: string }) {\n return axios.post(`/cameras/${cameraExid}/ptz/continuous/stop`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport type {\n _360AssetsQueryParams,\n _360AssetsRequestPayload,\n _360AssetsUploadPayload,\n BimUploadPayload,\n BimUploadsQueryParams,\n CalculateMeasuringOperationRequestPayload,\n DronesQueryParams,\n DroneUploadUpdateRequestPayload,\n FlightImagesQueryParams,\n Generate360MapRequestPayload,\n InspectionToolRequestPayload,\n MobileCaptureSnapshot,\n} from \"@evercam/api/types\"\nimport { IngestVersions } from \"@evercam/shared/types\"\n\nexport const IngestApi = {\n drone: {\n createUpload(projectId: string, params: { uploadedBy: string }) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/${projectId}/upload`,\n null,\n { params }\n )\n },\n reprocessDrone(id: number, params: Record<string, unknown>) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/${id}/reprocess`,\n null,\n { params }\n )\n },\n getDrones(params: { params: Partial<DronesQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/drone/uploads/`, params)\n },\n getArchive(id: number, params: { dataType: string }) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/uploads/archive/${id}`,\n {\n params,\n }\n )\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/drone/uploads/${id}`)\n },\n prepareForUpload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n }\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/drone/${projectId}/prepare-upload`,\n null,\n { params }\n )\n },\n upload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n },\n payload: DroneUploadUpdateRequestPayload\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/drone/${projectId}/upload`,\n payload,\n { params }\n )\n },\n verifyToken(projectId: string, params: { token: string }) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/uploads/${projectId}/verify`,\n {\n params: { token: params.token },\n }\n )\n },\n calculateMeasuringOperation(\n projectId: string,\n params: CalculateMeasuringOperationRequestPayload\n ) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/calculate-measuring-operation`,\n params\n )\n },\n inspectionTool(projectId: string, params: InspectionToolRequestPayload) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/inspection-tool`,\n params\n )\n },\n isInspectionEnabled(projectId: string, params: Record<string, unknown>) {\n return axios.post(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/inspection-enabled`,\n null,\n { params }\n )\n },\n getDroneQueueSize(\n version = IngestVersions.V1\n ): Promise<Record<string, any>> {\n const baseUrl =\n version === IngestVersions.V1\n ? axios.env.ingestApiUrl\n : axios.env.ingestGpuApiUrl\n\n return axios.get(`${baseUrl}/drone/queue`)\n },\n getFlightImages(projectId: string, params: FlightImagesQueryParams) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/flight-images`,\n {\n params,\n }\n )\n },\n checkFlightAvailableFeatures(\n projectId: string,\n params: Record<string, unknown>\n ) {\n return axios.get(\n `${axios.env.ingestApiUrl}/drone/api/${projectId}/flight-available-features`,\n {\n params,\n }\n )\n },\n },\n assets360: {\n get360Assets(params: { params: Partial<_360AssetsQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/360/assets/`, params)\n },\n get360AssetLink(\n projectId: string,\n date: string,\n floor: string,\n assetType: string,\n marker: string | null\n ) {\n return axios.get(\n `${axios.env.ingestApiUrl}/360/assets/${projectId}/${date}/${floor}`,\n {\n params: { marker: marker, assetType: assetType },\n }\n )\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/360/assets/${id}`)\n },\n getArchive(id: number, params: { dateType: string }) {\n return axios.get(`${axios.env.ingestApiUrl}/360/assets/archive/${id}`, {\n params,\n })\n },\n createUpload(\n projectId: string,\n params: _360AssetsRequestPayload,\n version = IngestVersions.V1\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.post(`${baseUrl}/360/${projectId}/upload`, null, { params })\n },\n\n upload(\n id: number,\n params: Record<string, unknown>,\n payload: _360AssetsUploadPayload,\n version = IngestVersions.V1\n ) {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.put(`${baseUrl}/360/${id}/upload`, payload, { params })\n },\n generate360map(projectId: string, params: Generate360MapRequestPayload) {\n return axios.post(\n `${axios.env.ingestApiUrl}/360/api/${projectId}/generate-360-map`,\n params\n )\n },\n get360QueueSize(version = IngestVersions.V1): Promise<Record<string, any>> {\n const baseUrl =\n version === IngestVersions.V2\n ? axios.env.ingestGpuApiUrl\n : axios.env.ingestApiUrl\n\n return axios.get(`${baseUrl}/360/queue`)\n },\n },\n bim: {\n createUpload(projectId: string, params: { uploadedBy: string }) {\n return axios.post(\n `${axios.env.ingestApiUrl}/bim/${projectId}/upload`,\n null,\n { params }\n )\n },\n getBIMs(params: { params: Partial<BimUploadsQueryParams> }) {\n return axios.get(`${axios.env.ingestApiUrl}/bim/uploads/`, params)\n },\n getArchive(id: number) {\n return axios.get(`${axios.env.ingestApiUrl}/bim/uploads/archive/${id}`)\n },\n deleteUpload(id: number) {\n return axios.delete(`${axios.env.ingestApiUrl}/bim/uploads/${id}`)\n },\n upload(\n projectId: string,\n params: {\n id: string\n name: string\n },\n payload: BimUploadPayload\n ) {\n return axios.put(\n `${axios.env.ingestApiUrl}/bim/${projectId}/upload`,\n payload,\n { params }\n )\n },\n },\n mobileCapture: {\n getProjectMobileAssets(\n params: Record<string, unknown>\n ): Promise<MobileCaptureSnapshot[]> {\n return axios.get(`${axios.env.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\n async loadAllAssetsInQueue() {\n try {\n const versions = [IngestVersions.V1, IngestVersions.V2]\n const allAssets = []\n\n for (const v of versions) {\n const [assets360, assetsDrone] = await Promise.all([\n this.assets360.get360QueueSize(v),\n this.drone.getDroneQueueSize(v),\n ])\n\n const combinedAssets = [\n assets360?.assets360,\n assetsDrone?.assetsDrone,\n ].flatMap((a: any) =>\n (a || []).map((asset: any) => ({\n ...asset,\n ingestVersion: v === IngestVersions.V1 ? \"V1\" : \"V2\",\n }))\n )\n\n allAssets.push(...combinedAssets)\n }\n\n return allAssets.sort(\n (a, b) =>\n new Date(a.updatedAt).getTime() - new Date(b.updatedAt).getTime()\n )\n } catch (error) {\n console.error(\"Error:\", error)\n\n return []\n }\n },\n}\n","import { axios } from \"./client\"\nimport {\n ExNvrDeviceConfig,\n ExNvrLoginResponse,\n ExNvrRecordingInterval,\n ExNvrSystemStatus,\n} from \"@evercam/api/types/\"\n\nexport const ExNvrApi = {\n users: {\n login(\n {\n apiUrl,\n username,\n password,\n }: {\n apiUrl: string\n username: string\n password: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrLoginResponse> {\n return axios.post(\n `${apiUrl}/api/users/login`,\n {\n username,\n password,\n },\n config\n )\n },\n },\n devices: {\n getDevices({\n apiUrl,\n token,\n }: {\n apiUrl: string\n token: string\n }): Promise<ExNvrDeviceConfig> {\n return axios.get(`${apiUrl}/api/devices/`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n },\n getSystemStatus(\n { apiUrl, token }: { apiUrl: string; token: string },\n config: Record<string, string> = {}\n ): Promise<ExNvrSystemStatus> {\n return axios.get(`${apiUrl}/api/system/status`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n getDeviceConfig(\n {\n apiUrl,\n deviceId,\n token,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrDeviceConfig> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n getAvailableRecordings(\n {\n apiUrl,\n deviceId,\n token,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n },\n config: { timing?: boolean } = {}\n ): Promise<ExNvrRecordingInterval[]> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}/recordings`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n ...config,\n })\n },\n downloadFootage({\n apiUrl,\n deviceId,\n token,\n startDate,\n duration,\n }: {\n apiUrl: string\n deviceId: string\n token: string\n startDate: string\n duration: number\n }): Promise<Blob> {\n return axios.get(`${apiUrl}/api/devices/${deviceId}/footage`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n params: {\n startDate,\n duration,\n },\n responseType: \"blob\",\n })\n },\n },\n}\n","import { axios } from \"./client\"\n\nexport const AuthzApi = {\n roles: {\n async get(params: any) {\n return await axios.get(\"/admin/authz/roles\", params)\n },\n async getRoleDetails(id: number) {\n return await axios.get(`/admin/authz/roles/${id}`)\n },\n createRole(params: any) {\n return axios.post(\"/admin/authz/roles\", params)\n },\n updateRole(id: number, params: any) {\n return axios.patch(`/admin/authz/roles/${id}`, params)\n },\n deleteRole(id: number) {\n return axios.delete(`/admin/authz/roles/${id}`)\n },\n addPermission(id: number, action: string) {\n return axios.post(`/admin/authz/roles/${id}/permissions/`, { action })\n },\n deletePermission(id: number, action: string) {\n return axios.delete(`/admin/authz/roles/${id}/permissions/${action}`)\n },\n async getRoleUsers(id: number) {\n return axios.get(`/admin/authz/roles/${id}/users`)\n },\n async assignUsers(id: number, emails: Array<string>, resource_id: string) {\n return axios.post(`/admin/authz/roles/${id}/users`, {\n emails,\n resource_id,\n })\n },\n async unassignUsers(\n id: number,\n emails: Array<string>,\n resource_id: string\n ) {\n return axios.delete(`/admin/authz/roles/${id}/users`, {\n params: {\n emails,\n resource_id,\n },\n })\n },\n getUserRoles() {\n return axios.get(\"/users/roles\")\n },\n },\n scopes: {\n async get() {\n return await axios.get(\"/admin/authz/scopes\")\n },\n create(params: any) {\n return axios.post(\"/admin/authz/scopes\", params)\n },\n delete(id: number) {\n return axios.delete(`/admin/authz/scopes/${id}`)\n },\n update(id: number, params: any) {\n return axios.patch(`/admin/authz/scopes/${id}`, params)\n },\n },\n}\n"],"names":["_360UrlParams","_360AssetType","_360Feature","_360IntergrationType","AconexDocumentDataType","AconexFormComponentType","AconexMandatoryStatus","AnalyticsEventPageId","AnalyticsEvent","AnprDirection","AnprEventStatus","MediaType","MediaFileType","MediaStatus","MediaStatusId","ClipsCategory","BimModelType","BimUploadStatus","BIMLayerTypes","CameraStatus","CameraFeatureFlag","NvrModel","CameraModel","HddStatus","DuplicatedCameraFields","CompareStatus","CopilotMessageAuthor","CopilotMessageType","CopilotStepId","CopilotMissingFieldsLabels","CopilotSocketEvent","CopilotProvider","CopilotSuggestion","CopilotChatProvider","CopilotLayout","CopilotToolId","CopilotMissingFieldComponent","CopilotMissingFieldName","CopilotMissingFieldType","DroneUrlParams","ErrorType","ErrorCode","EvercamApiErrorCode","GateReportDetectionType","GateReportEventType","DetectionLabel","SegmentLabel","GateReportVehicleType","GateReportDataSource","GateReportEventDirection","GateReportExportType","GateReportROIShapeType","GateReportProcessingStatus","VEHICLE_TYPE_IDS","HddFormat","HddType","HddState","WarehouseLocationIndex","WarehouseLocation","HddSize","IngestProcessingStatus","IngestVersions","MapType","Connector","ProcoreType","NotificationType","NvrDeviceType","NvrHddStatus","ProcoreObservationCustomFieldDataType","ProcoreObservationDefaultFieldNames","ProcoreTools","ProcoreToolUserAccessLevelIds","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","PerformanceStatus","WebGLExtensions","EDistortImageModes","EMapTypes","EMarkers","EPageType","EPaths","EProjectItems","ERoles","ExNvrFootageAvailableStatus","ExNvrDeviceState","ExNvrMetricId","TimelapseStatus","TimelapseDuration","TimelapseScheduleType","TimelapsePeriod","TimelapseType","TimelapseExportStep","UserFeatureFlag","Persona","VideoWallItemType","WeatherProvider","CommentsScope","PpeLabel","DetectionModel","UnitSystem","MobileDevice","_3dViewer","SsoProvider","InfoPage","DownloadTypes","FeedbackContext","TimelinePrecision","TaskStatus","PtzDirection","ZoomDirection","KitStatus","KitAlarm","KitMetricId","KitMetricPeriod","GrafanaMetricId","KitChartType","KitStorageTransport","AuditLogActionType","SnapshotExtractionStatus","SnapshotExtractionType","SiteAnalyticsMode","SmartSearchQueryComponentType","SmartSearchCondition","SmartSearchQueryTargets","SmartSearchQueryReturnType","SmartSearchOperatorType","SmartSearchQueryOperators","SmartSearchQueryConditionTypes","DelayUnit","CommonWidgetSettingsKeys","RecordingsWidgetSettingsKeys","LiveViewWidgetSettingsKeys","BimCompareWidgetSettingsKeys","VideoWallWidgetSettingsKeys","WidgetType","WidgetTypesByResource","CountryId","CountryCode","Region","CameraRegion","AutomationProvider","AutomationType","ActiveUsersMetric","createErrorClass","errorName","error","e","BadRequestError","NotFoundError","UnauthorizedError","GatewayTimeoutError","BadGatewayError","ForbiddenError","HlsError","SnapshotError","ConflictError","InternalServerError","numberOfRequestsSentInThePastSecond","maxRequestsPerSecond","requestsRateLimit","r","onRequest","request","axiosEnv","ensureBaseUrl","addAuthTokenHeader","transformCamelCaseToSnakeCase","onResponse","response","_a","data","_b","humps","_c","_e","_d","duration","onError","statusCode","method","url","backendErrorCode","_g","_f","customError","customMessage","Axios","breadcrumbLogger","ensureCommonHeaders","target","JwtToken","paramsIgnoredCasing","params","acc","item","formData","key","value","OnRequestExpiredTokenInterceptor","isTokenExpired","handler","axios","requestInterceptors","responseInterceptors","errorInterceptors","vars","requestInterceptor","errorInterceptor","interceptor","responseInterceptor","setHeader","headerName","setToken","token","cancelTokens","t","AdminApi","cameraId","device","payload","exid","id","template","extractionId","kitId","metric","fromDate","toDate","tagId","projectExid","hddId","footageId","cameraExid","ids","simId","number","tag","email","VideoWallApi","projectId","encodedEmail","headers","preset","presetName","getFirebaseDbApi","_3dFirebaseApi","res","dateId","floorIndex","body","toQueryString","paramsObject","forceSnakeCase","forceArrayBrackets","param","index","encodedParam","_acc","v","i","paramName","queryStringToObject","queryString","getAiApiUrl","AiApi","updatedBy","anprEventId","eventBody","anprEventsIds","action","captureTime","extraParams","eventId","eventType","eventTime","anprCameraExid","roi","iouThreshold","page","pageSize","queryId","cameraExids","granularity","endDate","startDate","query","fileType","directDownload","appUuid","appId","serviceId","WebRtcApi","WeatherApi","config","getLabsBaseUrl","labsPrNumber","EvercamLabsApi","conversationId","message","messageId","precision","prefix","fileName","metrics","period","EvercamApi","apiId","apiKey","widgetId","widgetKey","provider","user","sessionId","dateTime","name","newOwnerId","hubId","parentFolderId","getDerivatives","folderId","timestamp","year","month","day","cancelToken","progressPhotoId","companyExid","companyId","archive","PtzApi","presetId","isRecordingFromNvr","direction","useContinuous","zoomValue","IngestApi","version","baseUrl","date","floor","assetType","marker","assetId","versions","allAssets","assets360","assetsDrone","combinedAssets","a","asset","b","ExNvrApi","apiUrl","username","password","deviceId","AuthzApi","emails","resource_id"],"mappings":"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"}
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/authz.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 _360Vector3D = {\n x: number\n y: number\n z: number\n}\n\nexport type _360Geolocation = {\n latitude: number\n longitude: number\n}\n\nexport type _360CameraRotation = {\n azimuthAngle: number\n polarAngle: number\n}\n\nexport type _360Marker3D = {\n cameraPosition: _360Vector3D\n geolocation: _360Geolocation\n nextRoomId: _360MakerId\n position: _360Vector3D\n rotation: {\n _order: \"XYZ\" | string\n _x: number\n _y: number\n _z: number\n isEuler: boolean\n }\n}\n\nexport type _360Tag = {\n id: string\n tagType: string\n comment: string\n creationDate: number\n currentRoom: _360MakerId\n position: _360Vector3D\n cameraRotation: _360CameraRotation\n}\n\nexport type _360FloorId = string | number\n\nexport type _360Walk = Record<_360FloorId, _360Floor>\n\nexport type _360MakerId = string\n\nexport type _360Floor = {\n _3DMarkers: _360Marker3D[]\n cameraRotation: _360CameraRotation\n fbxModel: string\n initialMarker: _360MakerId\n modelViewerFeatureFlag: boolean\n route: {\n cameraHeadingOffset: string\n overlayID: number\n track: string\n }\n sceneScale: number\n steps: number\n tags: Record<string, _360Tag>\n}\n\nexport type _360WalkV2 = {\n archive: string\n date: string\n deviceSerial: string | null\n endPosition: unknown | null\n floor: string\n floorId: number\n id: number\n images: string[]\n insertedAt: string\n mobileAudios: string[]\n mobileAudiosArchive: string\n mobilePhotos: string[]\n mobilePhotosArchive: string\n model: string\n name: string\n processingStatus: string\n projectId: string\n report: string\n route: unknown | null\n startPosition: unknown | null\n tusLinks: unknown | null\n updatedAt: string\n uploadedBy: string\n videoArchive: string\n videos: string[]\n}\n\nexport type _360FloorV2 = {\n id: _360FloorId\n assets: _360WalkV2[]\n projectId: string\n name: string\n mapStyle: string\n hasOverlay: boolean\n isCalibrated: boolean\n createdBy: string | null\n overlayPosition: {\n northEast: { lat: number; lng: number }\n northWest: { lat: number; lng: number }\n southEast: { lat: number; lng: number }\n southWest: { lat: number; lng: number }\n }\n insertedAt: string\n updatedAt: string\n}\n\nexport type _360Scene = {\n date: string // DD-MM-YYYY\n dateID: number\n floors: {\n floorID: _360FloorId\n name: string\n }[]\n polarAngle: number\n azimuthAngle: number\n}\n\nexport type _360SceneRoute = {\n cameraHeadingOffset?: number\n overlayID?: number\n track?: string\n}\n\nexport type _360FullProject = {\n dates: _360SceneWithFloors[]\n integrationType: string\n projectId: string\n projectName: string\n providerID: string\n providerPrefix: string\n providerSuffix: string\n timeline: string\n uniqueId: string\n}\n\nexport type _360FullFloor = _360Floor & {\n id: _360FloorId\n name: string\n}\n\nexport type _360SceneWithFloors = _360Scene & {\n floors: _360FullFloor[]\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 Date = \"date\",\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 Creation Dialog Events\n WidgetsSelectTypeThreeSixty = \"Widgets-SelectType360\",\n WidgetsSelectProject = \"SelectProject\",\n WidgetsSelect360Date = \"Select360Date\",\n WidgetsSelect360Floor = \"Select360Floor\",\n WidgetsSelect360Marker = \"Select360Marker\",\n Widgets360LockMedia = \"360LockMedia\",\n\n // Widgets Events\n WidgetsPauseWidget = \"PauseWidget\",\n WidgetsEditWidget = \"EditWidget\",\n WidgetsOpenCredentials = \"OpenCredentials\",\n WidgetsCopyEmbeddedCode = \"CopyEmbeddedCode\",\n WidgetsCopyIFrameCode = \"CopyIFrameCode\",\n WidgetsCopyURLCode = \"CopyURLCode\",\n WidgetsDeleteWidget = \"DeleteWidget\",\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 DrawingCreateSave = \"CreateSave\",\n DrawingUpdateSave = \"UpdateSave\",\n DrawingEditName = \"EditName\",\n DrawingUpdateName = \"UpdateName\",\n DrawingToggleSaveDialog = \"ToggleSaveDialog\",\n DrawingClickHome = \"ClickHome\",\n DrawingsUploadDrawing = \"UploadDrawing\",\n DrawingsCreateDrawing = \"CreateDrawing\",\n DrawingToggleFilter = \"ToggleFilter\",\n DrawingToggleMapStyle = \"ToggleMapStyle\",\n DrawingToggleMapLabels = \"ToggleMapLabels\",\n DrawingToggleCamerasLabels = \"ToggleCamerasLabels\",\n DrawingToggleCamerasVisibility = \"ToggleCamerasVisibility\",\n DrawingToggleTransparencyMode = \"ToggleTransparencyMode\",\n DrawingChooseDrawing = \"ChooseDrawing\",\n DrawingChangeLocation = \"ChangeLocation\",\n DrawingFilterDateRange = \"FilterDateRange\",\n DrawingFilterDrawingName = \"FilterDrawingName\",\n DrawingFilterCreatedBy = \"FilterCreatedBy\",\n DrawingFilterMapStyle = \"FilterMapStyle\",\n DrawingToggleRotate = \"ToggleRotate\",\n DrawingToggleScale = \"ToggleScale\",\n DrawingOpenExistingDrawing = \"OpenExistingDrawing\",\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 ProgressPhotoToggleSelectAllOnlineCameras = \"ProgressPhoto-ToggleSelectAllOnlineCameras\",\n ProgressPhotoToggleSelectAllCameras = \"ProgressPhoto-ToggleSelectAllCameras\",\n ProgressPhotoClearAllCameras = \"ProgressPhoto-ClearAllCameras\",\n ProgressPhotoEditCamerasSearchFilter = \"ProgressPhoto-EditCamerasSearchFilter\",\n ProgressPhotoSelectDays = \"ProgressPhoto-SelectDays\",\n ProgressPhotoSelectMember = \"ProgressPhoto-SelectMember\",\n ProgressPhotoSelectProvider = \"ProgressPhoto-SelectProvider\",\n ProgressPhotoSelectTime = \"ProgressPhoto-SelectTime\",\n ProgressPhotoSelectTimezone = \"ProgressPhoto-SelectTimezone\",\n ProgressPhotoEditSelectedCameras = \"ProgressPhoto-EditSelectedCameras\",\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\n //Help Menu\n HelpMenuToggleMenuButton = \"HelpMenu-ToggleMenuButton\",\n HelpMenuOpenProjectContactsDialog = \"HelpMenu-OpenProjectContactsDialog\",\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 // Automations\n CompareSelectProvider = \"Compare-SelectProvider\",\n CompareEditSelectedCameras = \"Compare-EditSelectedCameras\",\n CompareEdit = \"Compare-Edit\",\n CompareSelectTimezone = \"Compare-SelectTimezone\",\n CompareSelectMember = \"Compare-SelectMember\",\n CompareToggleSelectAllOnlineCameras = \"Compare-ToggleSelectAllOnlineCameras\",\n CompareToggleSelectAllCameras = \"Compare-ToggleSelectAllCameras\",\n CompareClearAllCameras = \"Compare-ClearAllCameras\",\n CompareEditCamerasSearchFilter = \"Compare-EditCamerasSearchFilter\",\n\n AutomationsSelectProgressPhoto = \"SelectProgressPhoto\",\n AutomationsSelectCompare = \"SelectCompare\",\n AutomationsCreateCompare = \"CreateCompare\",\n AutomationToggleEditDialog = \"ToggleEditDialog\",\n AutomationToggleCreateDialog = \"ToggleCreateDialog\",\n AutomationTypeName = \"TypeName\",\n\n CompareSelectDays = \"Compare-SelectDays\",\n CompareSelectDelay = \"Compare-SelectDelay\",\n CompareSelectTime = \"Compare-SelectTime\",\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 SmartSearchViewSelected = \"SmartSearch-ViewSelected\",\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 SmartSearchDownloadHeatmapImage = \"SmartSearch-DownloadHeatmapImage\",\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 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 sharedWithConstruction: boolean\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 IntensityChange {\n High = \"High\",\n Moderate = \"Moderate\",\n Low = \"Low\",\n NoChange = \"No change\",\n Default = \"Default\",\n}\n\nexport const IntensityChangeColorMap: Record<IntensityChange, string> = {\n [IntensityChange.High]: \"#FF5252\",\n [IntensityChange.Moderate]: \"#FBC02D\",\n [IntensityChange.Low]: \"#006400\",\n [IntensityChange.NoChange]: \"#3ACF3A\",\n [IntensityChange.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 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 Door = \"door\",\n PlasticWrap = \"plastic_wrap\",\n ContainerOffice = \"container_office\",\n ElectricalPole = \"electrical_pole\",\n ElectricalBox = \"electrical_box\",\n FireHydrant = \"fire_hydrant\",\n FireExtinguisher = \"fire-extinguisher\",\n HoseReel = \"hose_reel\",\n Ladder = \"ladder\",\n MetalBeam = \"metal_beam\",\n MetalPipe = \"metal_pipe\",\n Pallet = \"pallet\",\n Person = \"person\",\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 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 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 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 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 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 NoGdpr = \"no_gdpr\",\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}\nexport type ProjectRole = {\n id: string\n name: string\n}\n\nexport type ProjectMember = {\n id: string\n email: string\n fullname: string\n role: ProjectRole\n permissions?: string[]\n subRoles?: Array<{\n resourceId: string\n roleId: number\n }>\n}\n\nexport type ProjectInvite = {\n id?: string\n email: string\n role?: ProjectRole\n invitedAt?: string\n}\n\nexport type ProjectMembersResponsePayload = {\n users: ProjectMember[]\n invites: ProjectInvite[]\n}\n\nexport type ProjectMembersRequestPayload = {\n roleId: number\n emails: string[]\n overrideRole?: Partial<{\n permissions?: string[]\n subRoles?: Array<{\n resourceId: string\n roleId: number\n }>\n }>\n}\n\nexport type ProjectInviteMembersResponsePayload = {\n users: ProjectMember[]\n invites: ProjectInvite[]\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 includeImage?: boolean\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 enum RouterScanInputMode {\n Qr = \"qr\",\n Manual = \"manual\",\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\nexport type RouterQRScanResult = {\n raw: string\n timestamp: string\n sn?: string\n m?: string\n u?: string\n pw?: string\n t?: string\n s?: string\n p?: string\n i?: string\n b?: string\n boxId?: string\n isDuplicate?: boolean\n}\n","import type { 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 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 ShareCreateResponsePayload = {\n shares: Share[]\n shareRequests: ShareRequest[]\n}\n\nexport enum InviteStatus {\n Pending = 0,\n Cancelled = -1,\n Used = 1,\n Failed = -2,\n}\n\nexport enum ShareVisibility {\n PublicDiscoverable = \"publicDiscoverable\",\n PublicUndiscoverable = \"publicUndiscoverable\",\n Private = \"private\",\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 Rotate = \"rotate\",\n Scale = \"scale\",\n Pan = \"drag\",\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 ContactRole {\n SalesExecutive = \"Sales Executive\",\n CustomerSuccessManager = \"Customer Success Manager\",\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, PaginationParams } 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\nexport type VideoWallSource = \"default\" | \"widget\"\n\nexport interface VideoWall {\n id: number\n exid: string\n name: string\n source: VideoWallSource\n config: Record<string, any>\n inserted_at: string\n updated_at: string\n user: { id: number; firstname: string; lastname: string; email: string }\n}\n\nexport interface ListParams extends PaginationParams {\n project_exid?: string\n id?: number\n exid?: string\n project_id?: number\n user_id?: number\n name?: string\n project?: string\n user?: string\n source?: VideoWallSource\n}\n\nexport type VideoWallCreateUpdatePayload = {\n project_exid: string\n name: string\n source?: VideoWallSource\n config: Record<string, unknown>\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 ups: boolean\n boxId: string\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\nexport type KitBox = {\n id: string\n gatewaySerial: string\n gatewayMac: string\n gatewayConfig: Record<string, unknown> | null\n insertedAt: DateTime\n updatedAt: DateTime\n}\n\nexport type KitBoxCreatePayload = {\n id?: string\n gatewaySerial: string\n gatewayMac: string\n gatewayConfig?: Record<string, unknown>\n}\n\nexport type KitBoxQueryParams = PaginationParams & {\n id: string\n gatewaySerial: string\n gatewayMac: 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\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 {\n BBox,\n BoundingBox,\n DateType,\n Schedule,\n CameraExid,\n DateTime,\n DetectionModel,\n PaginationParams,\n PpeLabel,\n ProjectExid,\n CameraDateRangeFilter,\n CameraFeatureFlag,\n TimelineDateInterval,\n Camera,\n AdminCamera,\n _360FullProject,\n _360FloorId,\n PaginatedItems,\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 SmartSearchPart = {\n id?: string\n type: SmartSearchPartType\n value:\n | DetectionLabel\n | SmartSearchOperatorType\n | SmartSearchConditionData\n | SmartSearchCondition\n | SmartSearchDateRange\n | string\n}\n\nexport enum SmartSearchComponentType {\n Condition = \"condition\",\n Object = \"object\",\n Area = \"in_area\",\n Time = \"time\",\n Operator = \"operator\",\n View = \"view\",\n DateRange = \"date_range\",\n Heatmap = \"heatmap\",\n}\n\nexport type SmartSearchPartType =\n | SmartSearchComponentType\n | SmartSearchCondition\n\nexport type SmartSearchDateRange = {\n start: DateType\n end: DateType\n}\n\nexport type SmartSearchComponentData = {\n id: string\n type: SmartSearchComponentType\n parts: SmartSearchPart[]\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 SmartSearchBackendQueryCondition = {\n type: SmartSearchConditionTypes\n target: SmartSearchTargets\n operator?: SmartSearchOperators\n attribute?: string\n value: string | number | string[]\n reference?: {\n target: SmartSearchTargets\n attribute: string\n value: string | number | string[]\n }\n polygon?: BBox\n}\n\nexport type SmartSearchBackendQuery = {\n returnTargets: SmartSearchTargets[]\n rulesLogic: SmartSearchOperatorType\n rules: {\n logic: SmartSearchOperatorType\n conditions: SmartSearchBackendQueryCondition[]\n }[]\n returnType: SmartSearchReturnType\n}\n\nexport enum SmartSearchTargets {\n Tracking = \"tracking\",\n Segments = \"segments\",\n}\n\nexport enum SmartSearchReturnType {\n All = \"all\",\n FirstLastSeen = \"first_last_seen\",\n}\n\nexport enum SmartSearchOperatorType {\n And = \"AND\",\n Or = \"OR\",\n}\n\nexport enum SmartSearchOperators {\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 SmartSearchConditionTypes {\n Selection = \"selection\",\n Spatial = \"spatial\",\n Area = \"area\",\n GeoArea = \"in_geo_area\",\n Iou = \"iou\",\n Near = \"near\",\n Far = \"far\",\n}\n\nexport type SmartSearchOptionValue =\n | DetectionLabel\n | SmartSearchOperatorType\n | SmartSearchConditionData\n\nexport type SmartSearchBackendQueryPayload = {\n cameraExid: string\n name: string\n description: string\n query: {\n req: SmartSearchBackendQuery\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: SmartSearchBackendQuery\n timeSchedule?: Schedule | undefined\n }\n params: Record<string, string>\n components?: Omit<SmartSearchPart, \"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\nexport enum SiteAnalyticsViewType {\n Camera = \"camera\",\n ThreeSixty = \"360\",\n}\n\ntype SiteAnalyticsViewByType = {\n [SiteAnalyticsViewType.Camera]: Camera | AdminCamera\n [SiteAnalyticsViewType.ThreeSixty]: _360FullProject\n}\n\nexport type SiteAnalyticsView<\n T extends SiteAnalyticsViewType = SiteAnalyticsViewType.Camera\n> = {\n type: SiteAnalyticsViewType\n value: SiteAnalyticsViewByType[T]\n}\n\nexport type SiteAnalyticsProcessingStatusPayload = {\n projectExid?: ProjectExid\n fromDate?: DateType\n toDate?: DateType\n cameraExid?: CameraExid\n drawingId?: string\n features?: CameraFeatureFlag[]\n}\n\nexport type SiteAnalyticsProcessingStatus = {\n projectExid: ProjectExid\n viewType: SiteAnalyticsViewType\n viewId: string\n feature: CameraFeatureFlag\n processedIntervals: TimelineDateInterval[]\n}\n\nexport type SmartSearchRequestPayload = {\n cameraExids?: CameraExid[]\n drawingIds?: _360FloorId[]\n walkIds?: string[]\n markerIds?: string[]\n payload: SmartSearchBackendQuery\n fromDate?: string\n toDate?: string\n page?: number\n pageSize?: number\n threshold?: number\n}\n\ntype SmartSearchResultItemBase = {\n area: number\n bbox: BBox\n cameraExid?: CameraExid\n centroid: number[]\n confidenceScore: number\n drawingId?: _360FloorId\n label: DetectionLabel\n modelId: DetectionModel\n projectExid: ProjectExid\n segmentId?: number\n trackId: number\n walkId?: string | number\n}\n\nexport type SmartSearchResultItemFirstLastSeen = SmartSearchResultItemBase & {\n firstSeen: DateType\n firstSeenMarkerId?: string | number\n lastSeen: DateType\n lastSeenMarkerId?: string | number\n}\n\nexport type SmartSearchResultItemAll = SmartSearchResultItemBase & {\n walkId?: string | number\n markerId?: string | number\n geolocation?: number[]\n mask?: number[][]\n timestamp: DateType\n}\n\ntype SmartSearchResultItemByType = {\n [SmartSearchReturnType.FirstLastSeen]: SmartSearchResultItemFirstLastSeen\n [SmartSearchReturnType.All]: SmartSearchResultItemAll\n}\n\nexport type SmartSearchResponse<\n R extends SmartSearchReturnType = SmartSearchReturnType.FirstLastSeen\n> = {\n data: PaginatedItems<SmartSearchResultItemByType[R]>\n message?: string\n success: boolean\n}\n\nexport type SmartSearchMinifiedPart = {\n t: SmartSearchComponentType\n v: unknown\n}\n\nexport type SmartSearchMinifiedComponent = {\n t: SmartSearchComponentType\n p: SmartSearchMinifiedPart[]\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 hasRange: boolean\n dateRange: [DateTime, DateTime] | null\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 enum RoleResourceType {\n App = \"app\",\n Camera = \"camera\",\n Project = \"project\",\n}\n\nexport type Role = {\n id: number\n name: string\n resource: string\n resourceType: RoleResourceType\n permissions: string[]\n subRoles?: Array<{\n resourceId: string\n roleId: number\n }>\n}\n\nexport type ProjectResourceRole = Role & {\n resourceType: RoleResourceType.Project\n}\nexport type CameraResourceRole = Omit<Role, \"subRoles\"> & {\n resourceType: RoleResourceType.Camera\n}\n\nexport type ProjectRoleRequestPayload = Omit<\n Role,\n \"id\" | \"resource\" | \"resourceType\"\n>\n","import { ErrorType } from \"@evercam/api/types\"\n\nconst createErrorClass = (errorName: string) => {\n return class extends Error {\n constructor(error: unknown) {\n const e =\n error instanceof Error\n ? error\n : new Error(typeof error === \"string\" ? error : \"unknown\")\n super(e.message)\n this.name = errorName\n this.message = e.message\n this.stack = (e.stack || \"\").replace(/^Error: /, `${errorName}: `)\n }\n }\n}\n\nexport const BadRequestError = createErrorClass(ErrorType.BadRequestError)\nexport const NotFoundError = createErrorClass(ErrorType.NotFoundError)\nexport const UnauthorizedError = createErrorClass(ErrorType.UnauthorizedError)\nexport const GatewayTimeoutError = createErrorClass(\n ErrorType.GatewayTimeoutError\n)\nexport const BadGatewayError = createErrorClass(ErrorType.BadGatewayError)\nexport const ForbiddenError = createErrorClass(ErrorType.ForbiddenError)\nexport const HlsError = createErrorClass(ErrorType.HlsError)\nexport const SnapshotError = createErrorClass(ErrorType.SnapshotError)\nexport const ConflictError = createErrorClass(ErrorType.ConflictError)\nexport const InternalServerError = createErrorClass(\n ErrorType.InternalServerError\n)\n","import humps from \"humps\"\nimport Axios, {\n AxiosDefaults,\n type AxiosError,\n type AxiosRequestConfig,\n type AxiosResponse,\n} from \"axios\"\nimport { ErrorCode, type AxiosEnvironment } from \"@evercam/api/types\"\nimport {\n NotFoundError,\n BadRequestError,\n UnauthorizedError,\n BadGatewayError,\n GatewayTimeoutError,\n ForbiddenError,\n InternalServerError,\n ConflictError,\n} from \"./customErrors\"\nimport axios from \"axios\"\n\nlet numberOfRequestsSentInThePastSecond = 0\nconst maxRequestsPerSecond = 10\nconst requestsRateLimit = async () => {\n while (numberOfRequestsSentInThePastSecond === maxRequestsPerSecond) {\n await new Promise((r) => setTimeout(r, 1000))\n }\n numberOfRequestsSentInThePastSecond++\n\n setTimeout(() => {\n numberOfRequestsSentInThePastSecond--\n }, 1000)\n}\n\nexport const onRequest = async (\n request: AxiosRequestConfig,\n axiosEnv: AxiosEnvironment\n) => {\n if (request?.raw) {\n return request\n }\n\n if (request?.timing) {\n request._metadata = { startTime: performance.now() }\n }\n await requestsRateLimit()\n ensureBaseUrl(request, axiosEnv)\n\n if (request?.skipAuth) {\n removeAuthorizationHeader(request)\n } else {\n addAuthTokenHeader(request, axiosEnv)\n }\n\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\nfunction removeAuthorizationHeader(request: AxiosRequestConfig) {\n if (!request.headers) {\n return\n }\n\n const h: any = request.headers\n delete h.Authorization\n delete h.authorization\n\n if (h.common) {\n delete h.common.Authorization\n delete h.common.authorization\n }\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 // Skip authentication (no Authorization header)\n skipAuth?: 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 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 CameraStatusLog,\n KitBox,\n KitBoxCreatePayload,\n KitBoxQueryParams,\n} from \"@evercam/api/types\"\n\nimport { KitMetricId } from \"@evercam/api/types\"\nimport { Tag } from \"@/types/tag\"\nimport type { AxiosRequestConfig } from \"axios\"\n\ntype AxiosPaginationRequestParams = AxiosRequestConfig & {\n params: PaginationParams\n}\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(\n params: AxiosRequestConfig & { 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(\n params: AxiosRequestConfig & {\n params: Partial<SnapshotExtractionQyeryParams>\n }\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 getCameraStatusLogs(\n exid: string,\n params: {\n params: {\n from: string\n to: string\n }\n }\n ): Promise<CameraStatusLog[]> {\n return axios.get(`/admin/cameras/${exid}/health`, params)\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: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<CompanyUser>> {\n return axios.get(`/admin/companies/${id}/users`, params)\n },\n getCompanyProjects(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<CompanyProject>> {\n return axios.get(`/admin/companies/${id}/projects`, params)\n },\n getCompanyKits(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<Kit[]>> {\n return axios.get(`/admin/companies/${id}/kits`, params)\n },\n getCompanyCameras(id: string, params: AxiosPaginationRequestParams) {\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(\n params: AxiosRequestConfig & { 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 getBoxes(params: {\n params: Partial<KitBoxQueryParams>\n }): Promise<PaginatedItems<KitBox>> {\n return axios.get(\"/admin/kit-boxes\", params)\n },\n createBox(params: KitBoxCreatePayload): Promise<KitBox> {\n return axios.post(\"/admin/kit-boxes\", 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 params: CameraAuditLogsQueryParams\n ): Promise<PaginatedItems<CameraAuditLog[]>> {\n return axios.get(`/admin/cameras/${cameraId}/audit-logs`, {\n params,\n })\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 shares: {\n async getInvites(params: any) {\n return axios.get(\"/admin/invites\", params)\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: SimCreateUpdatePayload\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: AxiosPaginationRequestParams\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 { type PaginatedItems } from \"@evercam/shared/types\"\nimport {\n VideoWall,\n ListParams,\n VideoWallCreateUpdatePayload,\n} from \"@evercam/api/types/videoWall\"\n\nexport const VideoWallApi = {\n list(params: ListParams = {}) {\n return axios.get<PaginatedItems<VideoWall>>(\"/video-walls\", { params })\n },\n\n create(body: VideoWallCreateUpdatePayload) {\n return axios.post<VideoWall>(\"/video-walls\", {\n source: \"default\",\n ...body,\n })\n },\n\n get(exid: string | number) {\n return axios.get<VideoWall>(`/video-walls/${exid}`)\n },\n\n update(exid: string | number, body: Partial<VideoWallCreateUpdatePayload>) {\n return axios.put<VideoWall>(`/video-walls/${exid}`, {\n source: \"default\",\n ...body,\n })\n },\n\n delete(exid: string | number) {\n return axios.delete(`/video-walls/${exid}`)\n },\n}\n","import { axios } from \"./client\"\nimport {\n _360ProjectJsonResponse,\n DroneProjectJsonResponse,\n ProjectExid,\n} from \"@evercam/api/types\"\nimport { AxiosRequestConfig } from \"axios\"\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(\n projectExid: ProjectExid,\n params: {\n config?: AxiosRequestConfig\n } = { config: {} }\n ): Promise<_360ProjectJsonResponse> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}.json`,\n {\n ...params.config,\n skipAuth: true,\n preserveCasing: true,\n }\n )\n },\n getDateWalks(projectExid: ProjectExid, dateId: string): Promise<any> {\n return fetch(\n `${getFirebaseDbApi()}360/${projectExid}/${dateId}.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 getRoute(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string\n ): Promise<any> {\n return fetch(\n `${getFirebaseDbApi()}360/${projectExid}/${dateId}/${floorIndex}/route.json`,\n {\n method: \"GET\",\n }\n ).then((res) => res.json())\n },\n getGPXText(url: string): Promise<any> {\n return fetch(url?.replace(/token=\\s*/, \"token=\")).then((res) =>\n res.text()\n )\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 GateReportROI,\n PaginatedItems,\n GateReportVerifiedDay,\n ProjectExid,\n CameraExid,\n AnprCountsQueryParams,\n AnprCount,\n AnprBasedGateReportExportRequestParams,\n GateReportResponsePayload,\n GatReportRequestPayload,\n VerifiedDaysQueryParams,\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 SmartSearchBackendQueryPayload,\n SavedQuery,\n DateType,\n DetectionsRequestParams,\n DetectionsGroup,\n DetectionsCountsByPeriod,\n DetectionsExportRequestParams,\n SegmentsFilters,\n DownloadFileType,\n SmartSearchBackendQuery,\n Schedule,\n SmartSearchHeatmapData,\n SmartSearchOperatorType,\n DetectionLabel,\n SmartSearchResponse,\n SmartSearchRequestPayload,\n} from \"@evercam/api/types\"\nimport type { AxiosPromise, AxiosRequestConfig } from \"axios\"\nimport {\n CreateCoolifyAppRequestPayload,\n SaveCoolifyAppRequestPayload,\n} from \"@/types/coolify\"\n\nexport const getAiApiUrl = () => axios.env.aiApiUrl\n\nexport const AiApi = {\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 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 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 verifyDay(params: VerifyDayUpdateRequestPayload) {\n return axios.post(\n `${getAiApiUrl()}/projects/gate-report/verified-days`,\n params\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 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 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: SmartSearchBackendQuery\n fromDate: string\n toDate: string\n page?: number\n pageSize?: number\n }) {\n const formattedToDate = encodeURIComponent(\n (toDate ?? \"\").replace(/\\.\\d+Z$/, \"\").replace(\"T\", \" \")\n )\n const formattedFromDate = encodeURIComponent(\n (fromDate ?? \"\").replace(/\\.\\d+Z$/, \"\").replace(\"T\", \" \")\n )\n let url =\n `${getAiApiUrl()}/cameras/${cameraExid}/advanced_search?page=${page}&page_size=${pageSize}` +\n `&from_date=${formattedFromDate}` +\n `&to_date=${formattedToDate}`\n\n return axios.post(url, payload)\n },\n smartSearchAll(\n projectExid: ProjectExid,\n params: SmartSearchRequestPayload\n ): Promise<SmartSearchResponse> {\n const { payload, ...restParams } = params\n const queryParams = {\n page: 1,\n pageSize: 20,\n ...restParams,\n }\n\n let url = `${getAiApiUrl()}/v2/projects/${projectExid}/smart_search/all?${toQueryString(\n queryParams\n )}`\n\n return axios.post(url, payload)\n },\n smartSearchFirstLastSeen(\n projectExid: ProjectExid,\n params: SmartSearchRequestPayload\n ): Promise<SmartSearchResponse> {\n const { payload, ...restParams } = params\n const queryParams = {\n page: 1,\n pageSize: 20,\n ...restParams,\n }\n\n let url = `${getAiApiUrl()}/v2/projects/${projectExid}/smart_search/first_last_seen?${toQueryString(\n queryParams\n )}`\n\n return axios.post(url, payload)\n },\n saveQuery(payload: SmartSearchBackendQueryPayload) {\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<SmartSearchBackendQueryPayload> {\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 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: SmartSearchBackendQuery\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 SiteAnalyticsProcessingStatusPayload,\n SiteAnalyticsProcessingStatus,\n} from \"@evercam/api/types\"\nimport { GrafanaMetricId, KitMetricPeriod } from \"@evercam/api/types\"\nimport { AxiosRequestConfig } from \"axios\"\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`, params)\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 getProcessingStatus(\n params: SiteAnalyticsProcessingStatusPayload = {},\n config: AxiosRequestConfig = {}\n ): Promise<SiteAnalyticsProcessingStatus[]> {\n return axios.get(`${getLabsBaseUrl()}/site-analytics/processing-status`, {\n params,\n ...config,\n preserveCasing: true,\n })\n },\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 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 ProjectMembersResponsePayload,\n ProjectMembersRequestPayload,\n ProjectInviteMembersResponsePayload,\n RemotePasswordUpdateRequestPayload,\n SessionsListRequestPayload,\n ShareCreateResponsePayload,\n ShareDeletionRequestPayload,\n SharedUsersResponsePayload,\n UpdateCameraRestrictionPayload,\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 params: AxiosRequestConfig & { params: SessionsListRequestPayload }\n ): Promise<PaginatedItems<UserSession>> {\n return axios.get(\"/users/active-sessions\", params)\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 getProjectContacts(projectExid: ProjectExid) {\n return axios.get(`/projects/${projectExid}/contacts`)\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 getMembers(projectExid: string): Promise<ProjectMembersResponsePayload> {\n return axios.get(`/projects/${projectExid}/users`)\n },\n inviteMembers(\n projectExid: string,\n payload: ProjectMembersRequestPayload\n ): Promise<ProjectInviteMembersResponsePayload> {\n return axios.post(`/projects/${projectExid}/users`, payload)\n },\n removeMembers(projectExid: string, emails: string[]): Promise<void> {\n return axios.delete(`/projects/${projectExid}/users`, {\n params: { emails },\n })\n },\n updateMembersRole(\n projectExid: string,\n payload: ProjectMembersRequestPayload\n ): Promise<void> {\n return axios.patch(`/projects/${projectExid}/users`, payload)\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(projectId: string): Promise<ProgressPhotosResponsePayload> {\n return axios.get(`/projects/${projectId}/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 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 getShareRequestByKey(\n key: string\n ): Promise<Pick<ShareCreateResponsePayload, \"shareRequests\">> {\n return axios.get(`/shares/requests/${key}`)\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 updateHome({\n cameraExid,\n presetName,\n }: {\n cameraExid: string\n presetName: string\n }) {\n // eslint-disable-next-line\n return axios.post(`/cameras/${cameraExid}/ptz/home/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 return axios.get(\n `${getIngestApiUrl(version)}/360/assets/${projectId}/counts`,\n {\n params,\n }\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.V2\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, version = IngestVersions.V2) {\n return axios.delete(`${getIngestApiUrl(version)}/360/assets/${id}`)\n },\n getArchive(\n id: number,\n params: { dateType: string },\n version = IngestVersions.V2\n ) {\n return axios.get(`${getIngestApiUrl(version)}/360/assets/archive/${id}`, {\n params,\n })\n },\n createUpload(\n projectId: string,\n params: _360AssetsRequestPayload,\n version = IngestVersions.V2\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.V2\n ) {\n return axios.put(\n `${getIngestApiUrl(version)}/360/${id}/upload`,\n payload,\n {\n params,\n headers: {\n \"X-Processing-Source\": \"DASHBOARD\",\n },\n }\n )\n },\n reprocess360(id: number, version = IngestVersions.V2) {\n return axios.put(`${getIngestApiUrl(version)}/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; config: AxiosRequestConfig },\n version = IngestVersions.V2\n ) {\n return axios.get(\n `${getIngestApiUrl(version)}/360/floors/?${toQueryString(\n payload.params ?? payload\n )}`,\n payload.config\n )\n },\n getDrawingById(\n id: number,\n projectExid: string,\n version = IngestVersions.V2\n ) {\n return axios.get(\n `${getIngestApiUrl(version)}/360/floors/${id}?project_id=${projectExid}`\n )\n },\n updateDrawing(\n id: number,\n projectExid: string,\n payload: GenerateFloorPayload,\n version = IngestVersions.V2\n ) {\n return axios.put(\n `${getIngestApiUrl(\n version\n )}/360/floors/${id}?project_id=${projectExid}`,\n payload\n )\n },\n deleteDrawing(id: number, version = IngestVersions.V2) {\n return axios.delete(`${getIngestApiUrl(version)}/360/floors/${id}`)\n },\n transferWalks(\n sourceId: number,\n targetId: number,\n projectExid: string,\n version = IngestVersions.V2\n ) {\n return axios.post(\n `${getIngestApiUrl(\n version\n )}/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 return axios.post(\n `${getIngestApiUrl(\n version\n )}/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 return axios.get(`${getIngestApiUrl(version)}/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.V2\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.V2\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.V2\n ) {\n return axios.get(`${getIngestApiUrl(version)}/mobile/assets/${assetId}`, {\n params,\n })\n },\n deleteAsset(assetId: string | number, version = IngestVersions.V2) {\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 {\n ProjectExid,\n ProjectResourceRole,\n ProjectRoleRequestPayload,\n Role,\n RoleResourceType,\n} from \"@/types\"\nimport { 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(projectExid?: ProjectExid, resourceType?: RoleResourceType) {\n return axios.get(\"/users/roles\", {\n params: {\n resource_id: projectExid || null,\n resource_type: resourceType || null,\n },\n })\n },\n },\n projectRoles: {\n get(projectExid: ProjectExid): Promise<{ roles: Role[] }> {\n return axios.get(`/projects/${projectExid}/roles`)\n },\n create(\n projectExid: ProjectExid,\n params: ProjectRoleRequestPayload\n ): Promise<ProjectResourceRole> {\n return axios.post(`/projects/${projectExid}/roles`, params)\n },\n update(\n projectExid: ProjectExid,\n roleId: number,\n params: ProjectRoleRequestPayload\n ): Promise<ProjectResourceRole> {\n return axios.patch(`/projects/${projectExid}/roles/${roleId}`, params)\n },\n delete(projectExid: ProjectExid, roleId: number) {\n return axios.delete(`/projects/${projectExid}/roles/${roleId}`)\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","IntensityChange","IntensityChangeColorMap","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","RouterScanInputMode","InviteStatus","ShareVisibility","SmsCommands","SmsStatuses","PerformanceStatus","WebGLExtensions","EDistortImageModes","EMapTypes","EMarkers","EPageType","EPaths","EProjectItems","ERoles","ExNvrFootageAvailableStatus","ExNvrDeviceState","ExNvrMetricId","TimelapseStatus","TimelapseDuration","TimelapseScheduleType","TimelapsePeriod","TimelapseType","TimelapseExportStep","UserFeatureFlag","ContactRole","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","SmartSearchComponentType","SmartSearchCondition","SmartSearchTargets","SmartSearchReturnType","SmartSearchOperatorType","SmartSearchOperators","SmartSearchConditionTypes","SiteAnalyticsViewType","DelayUnit","CommonWidgetSettingsKeys","RecordingsWidgetSettingsKeys","LiveViewWidgetSettingsKeys","BimCompareWidgetSettingsKeys","VideoWallWidgetSettingsKeys","ThreeSixtyKeys","WidgetType","WidgetTypesByResource","CountryId","CountryCode","CameraRegion","AutomationProvider","AutomationType","AutomationConfigStep","ActiveUsersMetric","RoleResourceType","createErrorClass","errorName","error","e","BadRequestError","NotFoundError","UnauthorizedError","GatewayTimeoutError","BadGatewayError","ForbiddenError","HlsError","SnapshotError","ConflictError","InternalServerError","numberOfRequestsSentInThePastSecond","maxRequestsPerSecond","requestsRateLimit","r","onRequest","request","axiosEnv","ensureBaseUrl","removeAuthorizationHeader","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","h","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","simId","number","tag","email","VideoWallApi","body","getFirebaseDbApi","getFirebaseStorageUrl","getFirebaseStorageToken","_3dFirebaseApi","res","dateId","floorIndex","projectID","dateID","floorID","featureFlagName","stepsValue","gpxContent","blob","toQueryString","paramsObject","forceSnakeCase","forceArrayBrackets","param","index","encodedParam","_acc","i","paramName","queryStringToObject","queryString","capitalizeFirstLetter","inputString","getAiApiUrl","AiApi","extraParams","anprEventId","eventBody","anprEventsIds","action","cameraExid","captureTime","eventType","eventTime","updatedBy","roi","iouThreshold","page","pageSize","formattedToDate","formattedFromDate","restParams","queryParams","queryId","query","fileType","directDownload","appUuid","appId","serviceId","WebRtcApi","WeatherApi","getLabsBaseUrl","labsPrNumber","EvercamLabsApi","conversationId","message","messageId","precision","fileName","metrics","period","EvercamApi","provider","apiId","apiKey","widgetId","widgetKey","user","sessionId","dateTime","projectId","headers","name","emails","documentTypeId","hubId","parentFolderId","getDerivatives","folderId","timestamp","year","month","day","cancelToken","progressPhotoId","companyId","archive","PtzApi","presetId","isRecordingFromNvr","presetName","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","startDate","AuthzApi","resource_id","resourceType","roleId"],"mappings":"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","x_google_ignoreList":[48]}