@evercam/api 1.0.0-ae97ae0a0 → 1.0.0-api-fixes-7de7fc3dd
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.
- package/dist/api/api/adminApi.d.ts +61 -57
- package/dist/api/api/aiApi.d.ts +1 -0
- package/dist/api/api/evercamApi.d.ts +26 -29
- package/dist/api/api/ingestApi.d.ts +3 -0
- package/dist/api/types/aconex.d.ts +2 -1
- package/dist/api/types/admin.d.ts +20 -4
- package/dist/api/types/analytics.d.ts +2 -1
- package/dist/api/types/anpr.d.ts +0 -1
- package/dist/api/types/auditLogs.d.ts +44 -37
- package/dist/api/types/bim.d.ts +48 -37
- package/dist/api/types/camera.d.ts +56 -43
- package/dist/api/types/comments.d.ts +24 -16
- package/dist/api/types/company.d.ts +23 -12
- package/dist/api/types/compare.d.ts +27 -23
- package/dist/api/types/hdd.d.ts +58 -24
- package/dist/api/types/kit.d.ts +19 -15
- package/dist/api/types/media.d.ts +13 -0
- package/dist/api/types/notification.d.ts +34 -28
- package/dist/api/types/nvr.d.ts +28 -0
- package/dist/api/types/oauth.d.ts +1 -0
- package/dist/api/types/progressPhoto.d.ts +24 -21
- package/dist/api/types/project.d.ts +57 -14
- package/dist/api/types/recording.d.ts +4 -3
- package/dist/api/types/roi.d.ts +2 -1
- package/dist/api/types/router.d.ts +23 -2
- package/dist/api/types/shared.d.ts +50 -43
- package/dist/api/types/sim.d.ts +1 -4
- package/dist/api/types/snapshots.d.ts +55 -8
- package/dist/api/types/storageProvider.d.ts +15 -3
- package/dist/api/types/timelapse.d.ts +38 -12
- package/dist/api/types/user.d.ts +76 -64
- package/dist/api/types/videoWall.d.ts +8 -8
- package/dist/api/types/weather.d.ts +90 -16
- package/dist/api/types/widget.d.ts +56 -47
- package/dist/index.js +259 -238
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/dist/shared/types/components.d.ts +6 -1
- package/package.json +1 -1
package/dist/index.umd.cjs.map
CHANGED
|
@@ -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/storageProvider.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","../types/siteView.ts","../types/aiConfigs.ts","../types/gateReportManagement.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 \"@evercam/api/types/time\"\nimport { GeoPoint, Point3D } from \"@evercam/api/types/shared\"\n\nexport type _360OverlayPosition = {\n northEast: GeoPoint\n northWest: GeoPoint\n southEast: GeoPoint\n southWest: GeoPoint\n}\n\nexport type ForgeViewport = {\n name: string\n eye: number[]\n target: number[]\n worldUpVector?: number[]\n}\n\nexport type ForgeView = {\n name: string\n viewport: ForgeViewport\n timestamp: string\n}\n\nexport type _360CameraRotation = {\n azimuthAngle: number\n polarAngle: number\n}\n\nexport type _360Geolocation = {\n latitude: number\n longitude: number\n}\n\nexport type _360Marker3D = {\n cameraPosition: Point3D\n geolocation: _360Geolocation\n nextRoomId: _360MakerId\n position: Point3D\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: Point3D\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 fbxModelHQ?: string\n pointCloudModelHQ?: string\n initialMarker: _360MakerId\n modelViewerFeatureFlag: boolean\n imagesOnlyFeatureFlag?: boolean\n forgeBIMFeatureFlag?: boolean\n isForgeGravityEnabled?: boolean\n initialForgeView?: ForgeView | null\n enhancedLightFeatureFlag?: boolean\n calibrationDetails?: Record<string, unknown>\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 processingLog: 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: _360OverlayPosition\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 enum _360PinType {\n Default = \"Default\",\n}\n\nexport type _360Pin = {\n position: Point3D\n pinType: _360PinType\n pinId?: string\n cameraExid?: string\n name: string\n currentRoom?: _360MakerId\n cameraRotation?: _360CameraRotation\n}\n\nexport type _360SceneRoute = {\n cameraHeadingOffset?: number\n overlayID?: number\n track?: string\n}\n\nexport type _360ProjectListItem = {\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 _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 | number\n projectId?: 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 withAsset?: 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: _360OverlayPosition\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 drawingId?: number\n markers?: Array<{ position: { x: number; y: number; z: number } }>\n}\n","export type AconexUserProject = {\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 AconexDocumentSchema = {\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 AconexDocumentTypeSchema = {\n dataType: AconexDocumentDataType\n identifier: AconexIdentifiers\n fieldName: string\n modifiedFieldName?: string\n mandatoryStatus: AconexMandatoryStatus\n specifications?: Array<AconexFieldSpecification>\n}\n\nexport type AconexDocumentSchemaField = {\n dataType: AconexDocumentDataType\n identifier: AconexIdentifiers\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 TimelineInfo = \"TimelineInfo\",\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 XraySendToConnectorSent = \"Xray-SendToConnector-Sent\",\n XraySendToConnectorProcore = \"Xray-SendToConnector-Procore\",\n XraySendToConnectorProcorePhotos = \"Xray-SendToConnector-Procore-Photos\",\n XraySendToConnectorProcoreObservations = \"Xray-SendToConnector-Procore-Observations\",\n XraySendToConnectorAconex = \"Xray-SendToConnector-Aconex\",\n XraySendToConnectorAutodesk = \"Xray-SendToConnector-Autodesk\",\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 MarkUpToolSendToConnectorSent = \"MarkUpTool-SendToConnector-Sent\",\n MarkUpToolSendToConnectorProcore = \"MarkUpTool-SendToConnector-Procore\",\n MarkUpToolSendToConnectorProcorePhotos = \"MarkUpTool-SendToConnector-Procore-Photos\",\n MarkUpToolSendToConnectorProcoreObservations = \"MarkUpTool-SendToConnector-Procore-Observations\",\n MarkUpToolSendToConnectorAconex = \"MarkUpTool-SendToConnector-Aconex\",\n MarkUpToolSendToConnectorAutodesk = \"MarkUpTool-SendToConnector-Autodesk\",\n MarkUpToolSendViaEmail = \"MarkUpTool-SendViaEmail\",\n MarkUpToolSendViaEmailSent = \"MarkUpTool-SendViaEmail-Sent\",\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 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 ThreeSixtyGalleryEditWalkName = \"Gallery-EditWalkName\",\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 DroneChooseCommentType = \"ChooseCommentType\",\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 DroneSettingsToggle360PathsVisibility = \"Settings-Toggle360PathsVisibility\",\n DroneSettingsToggleCameraMarkersVisibility = \"Settings-ToggleCameraMarkersVisibility\",\n DroneSettingsToggleSurroundingBuildingsTool = \"Settings-ToggleSurroundingBuildingsTool\",\n DroneSettingsToggleCommentsVisibility = \"Settings-ToggleCommentsVisibility\",\n DroneSettingsToggleAerialShotsVisibility = \"Settings-ToggleAerialShotsVisibility\",\n DroneSettingsOpenCommentsList = \"Settings-OpenCommentsList\",\n DroneShareLink = \"ShareLink\",\n DroneCommentsToolClick = \"CommentsTool-Click\",\n DroneToggleBimCompareTool = \"ToggleBimCompareTool\",\n DroneToggleFullScreen = \"ToggleFullScreen\",\n DroneToggleMapStyle = \"ToggleMapStyle\",\n DroneTogglePointCloud = \"TogglePointCloud\",\n DroneToggleGaussianSplat = \"ToggleGaussianSplat\",\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 DroneSaveComment = \"SaveComment\",\n DroneUnarchiveComment = \"UnarchiveComment\",\n DroneArchiveComment = \"ArchiveComment\",\n DroneDeleteComment = \"DeleteComment\",\n DroneSaveAerialShot = \"SaveAerialShot\",\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 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 // 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 ProjectSettingsMembersViewRoleInfo = \"ViewRoleInfo\",\n ProjectSettingsMembersViewMemberInfo = \"ViewMemberInfo\",\n ProjectSettingsMembersBulkRemove = \"BulkRemove\",\n ProjectSettingsMembersInviteSent = \"InviteSent\",\n ProjectSettingsMembersRejectInvite = \"RejectInvite\",\n ProjectSettingsMembersAddMember = \"AddMember\",\n ProjectSettingsMembersBulkRoleUpdate = \"BulkRoleUpdate\",\n ProjectSettingsMembersDeleteCameraAccess = \"DeleteCameraAccess\",\n ProjectSettingsMembersEditCameraAccess = \"EditCameraAccess\",\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\n // Automations - Progress Photos\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 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 ProgressPhotoUnsubscribeUser = \"ProgressPhoto-UnsubscribeUser\",\n\n // Automations - Comapre\n CompareSelectProvider = \"Compare-SelectProvider\",\n CompareSelectCameras = \"Compare-SelectCameras\",\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 CompareSelectType = \"Compare-SelectType\",\n CompareCreate = \"Compare-Create\",\n\n // Automations - Main Report\n AutomationsEditSearchFilter = \"EditSearchFilter\",\n AutomationsEditStatusFilter = \"EditStatusFilter\",\n AutomationsEditUsersFilter = \"EditUsersFilter\",\n AutomationsEditDaysFilter = \"EditDaysFilter\",\n AutomationsEditCamerasFilter = \"EditCamerasFilter\",\n AutomationToggleEditDialog = \"ToggleEditDialog\",\n AutomationToggleCreateDialog = \"ToggleCreateDialog\",\n AutomationTypeName = \"TypeName\",\n\n // Automations - Gate Report\n GateReportSelectType = \"GateReport-SelectType\",\n GateReportToggleSelectAllCameras = \"GateReport-ToggleSelectAllCameras\",\n GateReportToggleSelectAllOnlineCameras = \"GateReport-ToggleSelectAllOnlineCameras\",\n GateReportToggleClearAllCameras = \"GateReport-ClearAllCameras\",\n GateReportEditCamerasSearchFilter = \"GateReport-EditCamerasSearchFilter\",\n GateReportSelectDays = \"GateReport-SelectDays\",\n GateReportSelectTime = \"GateReport-SelectTime\",\n GateReportSelectTimezone = \"GateReport-SelectTimezone\",\n GateReportSelectVehicleTypes = \"GateReport-SelectVehicleTypes\",\n GateReportSelectColumn = \"GateReport-SelectColumn\",\n GateReportSelectPeriod = \"GateReport-SelectPeriod\",\n GateReportSelectExportType = \"GateReport-SelectExportType\",\n GateReportSelectMember = \"GateReport-SelectMember\",\n GateReportSelectCameras = \"GateReport-SelectCameras\",\n GateReportCreate = \"GateReport-Create\",\n GateReportEdit = \"GateReport-Edit\",\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 AskAIClickAskAI = \"AskAI-ClickAskAI\",\n AskAIClickExpand = \"AskAI-ClickExpand\",\n AskAIClickCollapse = \"AskAI-ClickCollapse\",\n AskAIClickVoice = \"AskAI-ClickVoice\",\n AskAIClickFullscreen = \"AskAI-ClickFullscreen\",\n AskAIExitFullscreen = \"AskAI-ExitFullscreen\",\n AskAICloseChat = \"AskAI-CloseChat\",\n\n // Forge Bim View model management events\n ForgeBimAddModelButtonClicked = \"ForgeBim-AddModelButtonClicked\",\n ForgeBimUploadChoiceDialogOpened = \"ForgeBim-UploadChoiceDialogOpened\",\n ForgeBimModelAddMethodSelected = \"ForgeBim-ModelAddMethodSelected\",\n ForgeBimUploadChoiceDialogDismissed = \"ForgeBim-UploadChoiceDialogDismissed\",\n ForgeBimLocalModelFileSelected = \"ForgeBim-LocalModelFileSelected\",\n ForgeBimLocalModelFileRejected = \"ForgeBim-LocalModelFileRejected\",\n ForgeBimUploadModelFileToIngestStarted = \"ForgeBim-UploadModelFileToIngestStarted\",\n ForgeBimUploadModelFileToIngestCompleted = \"ForgeBim-UploadModelFileToIngestCompleted\",\n ForgeBimUploadModelFileToIngestFailed = \"ForgeBim-UploadModelFileToIngestFailed\",\n ForgeBimAccModelSelectorOpened = \"ForgeBim-AccModelSelectorOpened\",\n ForgeBimAccModelSelectorDismissed = \"ForgeBim-AccModelSelectorDismissed\",\n ForgeBimAccModelConfirmed = \"ForgeBim-AccModelConfirmed\",\n ForgeBimModelDuplicateDetected = \"ForgeBim-ModelDuplicateDetected\",\n ForgeBimUpdateModelButtonClicked = \"ForgeBim-UpdateModelButtonClicked\",\n ForgeBimReplaceModelWarningOpened = \"ForgeBim-ReplaceModelWarningOpened\",\n ForgeBimReplaceModelConfirmed = \"ForgeBim-ReplaceModelConfirmed\",\n ForgeBimReplaceModelCancelled = \"ForgeBim-ReplaceModelCancelled\",\n ForgeBimModelAdded = \"ForgeBim-ModelAdded\",\n ForgeBimModelUpdated = \"ForgeBim-ModelUpdated\",\n ForgeBimModelSaveFailed = \"ForgeBim-ModelSaveFailed\",\n}\n","import {\n BoundingBox,\n CameraExid,\n DateType,\n GateReportVehicleType,\n TimelinePrecision,\n} from \"@evercam/api/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 contextThumbnailUrl: string\n isPublic: boolean\n label: string\n mp4Url: string\n plateThumbnailUrl: string\n thumbnailUrl: string\n metadata: {\n evercamMetadata?: {\n anpr?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n context?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n }\n plateRecognizerMetadata?: {\n plateNumber?: string\n vehicleMake?: string\n vehicleType?: string\n vehicleColor?: string\n vehicleModel?: string\n vehicleOrientation?: string\n }\n }\n}\n\nexport type AnprCount = {\n date: string\n counts: Record<AnprDirection, number>\n}\n\nexport enum AnprEventStatus {\n IsPlate = \"is_plate\",\n NotPlate = \"not_plate\",\n IsDuplicate = \"is_duplicate\",\n NotDuplicate = \"not_duplicate\",\n}\n\nexport type AnprBulkUpdateRequestPayload = {\n anprEventsIds: number[]\n action: AnprEventStatus\n}\n\nexport type AnprUpdateRequestPayload = {\n plateNumber: string\n vehicleType: GateReportVehicleType\n direction: AnprDirection\n}\n\nexport enum AnprExtractionStatus {\n Pending = \"pending\",\n Running = \"running\",\n Completed = \"completed\",\n Failed = \"failed\",\n}\n\nexport enum AnprExtractionSaveMode {\n All = \"all\",\n AiDbOnly = \"ai_db_only\",\n ImagesOnly = \"images_only\",\n}\n\nexport type AnprExtraction = {\n id: number\n cameraId: number\n userId: number | null\n startDate: string\n endDate: string\n status: AnprExtractionStatus\n totalRecords: number\n error: string | null\n saveMode: AnprExtractionSaveMode\n startedAt: string | null\n completedAt: string | null\n insertedAt: string\n updatedAt: string\n}\n\nexport type AnprExtractionCreatePayload = {\n startDate: string\n endDate: string\n saveMode?: AnprExtractionSaveMode\n}\n","import type { CameraExid, Exid, DateType } from \"@evercam/api/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 camera?: 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?: MediaCategory | 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 enum MediaCategory {\n Weather = \"weather\",\n SmartSearch = \"smart_search\",\n Copilot = \"copilot\",\n}\n\nexport type MediaDeleteRequestPayload = {\n timelapseIds: (string | number)[]\n compareIds: (string | number)[]\n archiveIds: (string | number)[]\n}\n","import { CompareLogoPosition, DateType } from \"@evercam/api/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 logo?: CompareLogoPosition\n}\n\nexport type BimLayerResponsePayload = {\n id: number\n name: string\n insertedAt: string\n updatedAt: string\n shapes: string\n startAt: string\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 BimMask = \"bim_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 ForgeBimArchitectural = \"forge_bim_architectural\",\n ForgeBimStructural = \"forge_bim_structural\",\n ForgeBim4D = \"forge_bim_4d\",\n ForgeBimMep = \"forge_bim_mep\",\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\nexport enum ForgeBimUploadMethod {\n FileUpload = \"file_upload\",\n AutodeskAcc = \"autodesk_acc\",\n}\n\nexport enum ForgeBimFileRejectionReason {\n InvalidType = \"invalid_type\",\n ExceedsSizeLimit = \"exceeds_size_limit\",\n}\n\nexport enum ForgeBimUploadStage {\n TusUpload = \"tus_upload\",\n IngestUpload = \"ingest_upload\",\n}\n\nexport enum ForgeBimDialogTrigger {\n UpdateModel = \"update_model\",\n AddModel = \"add_model\",\n InitialSetup = \"initial_setup\",\n}\n","import {\n AuditLogActionType,\n DateType,\n EntityByExid,\n KitAlarm,\n NvrDeviceType,\n PaginationParams,\n PowerSchedule,\n PowerType,\n ProjectExid,\n ProjectFeatureFlag,\n Schedule,\n ScheduleLowercase,\n TimestampPositionCoordinates,\n} from \"@evercam/api/types\"\nimport { DateRangeFilter } from \"@evercam/api/types/time\"\nimport { GeoPoint, TuplePoint2D } from \"@evercam/api/types/shared\"\n\nexport type CameraExid = string\n\nexport type CamerasByExid = EntityByExid<Camera>\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 liveViewFrequency: number | null\n createdAt: string\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: number\n id: CameraExid\n exid: CameraExid\n isOnline: boolean\n isPowerScheduleActive: boolean\n isPublic: boolean\n lastOnlineAt: string\n lastPolledAt: string\n location: GeoPoint\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 recordingFromNvr: boolean\n model?: CameraModel\n roll: string | null\n routerId: number\n status: CameraStatus\n streamingServer: string\n thumbnailUrl: string\n largeThumbnailUrl?: string\n timezone: string\n updatedAt: string\n vendorName: string\n isAccessRestricted?: boolean\n kitAlarms?: KitAlarm[]\n timestampPosition?: TimestampPositionCoordinates\n}\n\nexport type AdminCamera = {\n id: number\n exid: CameraExid\n name: string\n status: string\n description: string | null\n createdAt: string\n updatedAt: string\n lastOnlineAt: string | null\n lastPolledAt: string | null\n decommissionedAt: string | null\n deletedAt?: string | null\n projectId: number | null\n projectExid: string | null\n projectName: string | null\n projectFeatureFlags: Array<ProjectFeatureFlag | string>\n userId: number | null\n userEmail: string\n userFullname: string\n userApiId?: string\n userApiKey?: string\n isPublic: boolean\n sharedWithConstruction?: boolean\n timezone: string | null\n location?: GeoPoint | null\n fovAngle?: number | null\n fovRadius?: number | null\n heading?: number | null\n pitch?: number | null\n roll?: number | null\n cameraModel?: string | null\n cameraHost?: string | null\n cameraHttpPort?: number | null\n cameraRtspPort?: number | null\n cameraScheme?: string | null\n cameraUsername?: string | null\n cameraPassword?: string | null\n cameraPictureEndpoint?: string | null\n rtspUrl?: string | null\n httpUrl?: string | null\n deviceId?: string | null\n nvrId?: number | null\n nvrDeviceId?: string | null\n nvrModel?: NvrModel | string | null\n nvrHost?: string | null\n nvrHttpPort?: number | null\n nvrRtspPort?: number | null\n nvrScheme?: string | null\n nvrUsername?: string | null\n nvrPassword?: string | null\n nvrPictureEndpoint?: string | null\n streamEndpoint?: string | null\n routerId?: number | null\n kitId?: number | null\n powerType?: string | null\n powerSchedule?: ScheduleLowercase | Record<string, string[]>\n isPowerScheduleActive?: boolean\n discoverable?: boolean\n recordingFromNvr?: boolean\n cloudRecordingFrequency?: number | null\n cloudRecordingId?: number | null\n cloudRecordingStatus?: string | null\n cloudRecordingSchedule?: ScheduleLowercase | null\n cloudRecordingStorageDuration?: number | null\n liveViewFrequency?: number | null\n anprSources?: string[]\n storageProviders?: string[]\n featureFlags?: CameraFeatureFlag[]\n zohoId?: string | null\n offlineReason?: string | null\n macAddress?: string | null\n type?: string[]\n thumbnailUrl?: string\n}\n\nexport type CameraMapMarker = {\n isOnline: boolean\n location: GeoPoint\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 PpeOwlv2 = \"ppe_owlv2\",\n PpeGemini = \"ppe_gemini\",\n PpeYolo = \"ppe_yolo\",\n PpeV2 = \"ppe_v2\",\n NoLiveView = \"no_live_view\",\n Ring = \"ring\",\n CloudOnly = \"cloud_only\",\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 liveViewFrequency?: number | null\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 Ring = \"ring\",\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?: TuplePoint2D\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 \"@evercam/api/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 compareExid: string\n name: string\n beforeDate: string\n afterDate: string\n cameraExid: string\n embed: string\n bim?: boolean\n custom?: boolean\n options?: {\n type: string\n beforeSnap: string\n afterSnap: string\n }\n createAnimation: boolean\n evercamWatermark: boolean\n logo?: CompareLogoPosition\n}\n\nexport type CompareLogoPosition = {\n id?: number\n width: number\n height: number\n x: number\n y: number\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 \"@evercam/api/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 RequestAgentCall = \"request_agent_call\",\n ExecAgentCall = \"exec_agent_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 = unknown> = {\n name: string\n label: string\n value: unknown\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 SmartSearch = \"smart_search\",\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 SmartSearch = \"smartSearch\",\n}\n\nexport type CopilotSystemToolCallResponse<I = unknown, O = unknown> = {\n toolId?: CopilotToolId\n input?: I\n output?: O\n isAgent?: boolean\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","import { Point3D } from \"@evercam/api/types/shared\"\n\nexport type DroneCameraTransform = {\n position: Point3D\n direction: Point3D\n up: Point3D\n right: Point3D\n}\n\nexport type DroneModel = {\n cesiumId: number\n cesiumId2D: number\n date: string\n cesiumPointCloudId: string\n cesiumGausianSplatId: string\n pointSize: string\n maximumScreenSpaceError: number\n link: string\n trueIndex: number\n}\n\nexport type DroneProjectTransform = {\n initialCameraTransform?: DroneCameraTransform\n initial2DCameraTransform?: DroneCameraTransform\n blackListIds?: string\n markers?: Record<string, DroneMarker>\n imageryPlans?: Record<string, DroneImageryPlan>\n bimData?: DroneBimData\n terrainPoints?: Record<string, Point3D[]>\n projectWGS84Coordinates?: DroneProjectCoordinates | null\n tags?: Record<string, DroneTag>\n}\n\nexport type DroneProjectData = {\n models?: DroneModel[]\n transform?: DroneProjectTransform\n integrationType?: DroneProvider\n origin?: string\n params?: string\n pointSize?: number\n}\n\nexport type DroneProjectDataPatch = {\n models?: Record<number, Partial<DroneModel>>\n integrationType?: DroneProvider\n origin?: string\n params?: string\n}\n\nexport type DroneProjectCoordinates = {\n lat: number | null\n lon: number | null\n alt: number | null\n}\n\nexport type DroneTransformPatch = {\n projectWGS84Coordinates?: DroneProjectCoordinates | null\n}\n\nexport enum DroneTagType {\n AerialShot = \"AerialShot\",\n}\n\nexport type DroneTag<T extends DroneTagType = DroneTagType> = {\n id?: number\n type: T\n comment: string\n position?: Point3D\n cameraTransform?: DroneCameraTransform\n creationDate: string\n hyperlink?: string\n height?: number\n}\n\nexport type AerialShotPoint = DroneTag<DroneTagType.AerialShot>\n\nexport type DroneMarkerTransform = {\n fovAngle: number\n fovRadius: number\n heading: number\n height: number\n latitude: string\n longitude: string\n pitch: number\n roll: number\n scale: number\n}\n\nexport enum DroneMarkerType {\n Default = \"Default\",\n Gate = \"Gate\",\n Indoor = \"Indoor\",\n}\n\nexport type DroneMarker = {\n type: DroneMarkerType\n name: string\n cameraExid: string\n transform: DroneMarkerTransform\n}\n\nexport type DroneImageryPlan = {\n cesiumId: number\n uuid: string\n name: string\n alpha: number\n order: number\n}\n\nexport type DroneBimData = {\n cesiumId: string | null\n iModelId: string | null\n changeSetId: string | null\n isItwin: boolean\n}\n\nexport enum DroneUrlParams {\n Date = \"date\",\n}\n\nexport enum DroneProvider {\n Evercam = \"Evercam\",\n DroneDeploy = \"DroneDeploy\",\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\nexport type AppError = {\n statusCode?: number\n message?: string\n redirect?: {\n url?: string\n label?: string\n delay?: number\n }\n withSupportMessage?: boolean\n isWidget?: boolean\n}\n","import {\n AnprDirection,\n AnprEvent,\n CameraExid,\n DateType,\n PaginatedItems,\n PaginationParams,\n ProjectExid,\n RoiDirection,\n RoiShapeType,\n RoiType,\n Timestamp,\n TuplePoint2D,\n} from \"@evercam/api/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 label: string\n value: 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: string\n isMatched: boolean\n insertedAt: string\n updatedAt: string\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: string\n}\n\nexport type MonthlyEventCount = EventsCount & {\n month: string\n}\n\nexport type DailyEventCount = EventsCount & {\n day: string\n}\n\nexport type HourlyEventCount = {\n hour: string\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<AnprEvent>\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?: string\n isPublic?: boolean\n toDate?: string\n vehicleTypes?: GateReportVehicleType[]\n} & PaginationParams\n\nexport enum GateReportExportType {\n Pdf = \"pdf\",\n Csv = \"csv\",\n}\n\nexport type AnprExportBaseParams = {\n vehicleTypes?: GateReportVehicleType[]\n fileType?: GateReportExportType\n fromDate?: string\n toDate?: string\n camerasExid?: CameraExid[]\n isPublic?: boolean\n columns?: string[]\n}\n\nexport type EventsExportRequestParameters = AnprExportBaseParams & {\n eventType: GateReportEventType\n}\n\nexport type AnprBasedGateReportExportRequestParams = AnprExportBaseParams & {\n direction?: AnprDirection\n}\n\nexport type LegacyAnprExportParams = AnprExportBaseParams & {\n direction?: AnprDirection\n}\n\nexport type GateReportROIShape = {\n coordinates: TuplePoint2D[]\n type: RoiShapeType\n}\n\nexport type GateReportROI = {\n cameraex?: string\n fromDate?: string\n directionFilter?: RoiDirection\n id?: number\n insertedAt?: Timestamp\n isActive?: boolean\n name?: string\n roiType?: RoiType\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: string[]\n updatedAt: string[]\n day: string\n}\n\nexport type VerifyDayUpdateRequestPayload = {\n camerasExid: string[]\n projectExid: string\n day: string\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 camerasExid: CameraExid[]\n id: number\n name: string\n fromDate: string\n roiType: RoiType\n isActive: boolean\n directionFilter: string\n sort: string\n}\n\nexport type GateReportRoiRequestPayload = {\n id: number\n cameraExid: string\n name: string\n roiType: RoiType\n isActive: true\n fromDate: string\n shapes: GateReportROIShape[]\n directionFilter: string\n note: string\n}\n","import { PaginationParams } from \"@evercam/api/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\nexport type AdminHddFootage = {\n id: number\n cameraExid: string\n cameraName: string\n startDate: string | null\n endDate: string | null\n}\n\nexport type AdminHdd = {\n id: number\n size: string\n type: string\n format: string\n location: string\n errorStatus: string | null\n createdAt: string\n serialNumber: string\n hddStatus: string\n reportedCapacity: string | null\n reportedFreeSpace: string | null\n reportedHddType: string | null\n reportedPath: string | null\n reportedProperty: string | null\n shelfBlock: string\n footages: AdminHddFootage[]\n}\n","import {\n PaginationParams,\n DateType,\n JsonValue,\n TuplePoint2D,\n} from \"@evercam/api/types\"\nimport type { _360FloorV2, _360WalkV2 } from \"@evercam/api/types/360\"\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 V3 = \"v3\",\n V4 = \"v4\",\n V5 = \"v5\",\n}\n\nexport enum IngestTypes {\n Drone = \"drone\",\n ThreeSixty = \"360\",\n}\n\nexport type DronesQueryParams = Omit<PaginationParams, \"sort\"> & {\n projectId: string\n consumed: string\n token: string\n processingStatus: IngestProcessingStatus\n}\n\nexport type IngestPaginatedResponse<T> = {\n items: T[]\n page: number\n limit: number\n total: number\n pageCount?: number\n}\n\nexport type DroneUploadItem = {\n id: number\n projectId: string\n consumed: boolean\n token: string\n flightDate: string\n flightGeolocation: string\n modelZip: string\n orthomosaicZip: string\n reportPdf: string\n processingLog: string\n uploadedBy: string\n processingStatus: IngestProcessingStatus | string\n modelCesiumAssetId: string\n updatedAt: string\n hasTusLinks: boolean\n}\n\nexport type DroneUploadsResponse = IngestPaginatedResponse<DroneUploadItem>\n\nexport type DroneQueueResponse = {\n size: number\n assetsDrone: DroneUploadItem[]\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 aerialShots: {\n url: string\n title: string\n fileExtension: string\n gpsLatitude: string\n gpsLongitude: string\n gpsAltitude: string\n }[]\n projectName: string\n}\n\nexport type CalculateMeasuringOperationRequestPayload = {\n date: DateType\n points: TuplePoint2D[]\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\nexport type _360AssetsResponse = IngestPaginatedResponse<_360WalkV2>\n\nexport type _360AssetsCountsDay = {\n day: number\n walks?: number\n mobilePhotos?: number\n [key: string]: JsonValue | undefined\n}\n\nexport type _360AssetsCountsResponse = {\n days: _360AssetsCountsDay[]\n}\n\nexport type _360QueueResponse = {\n size: number\n assets360: _360WalkV2[]\n}\n\nexport type _360FloorsResponse = IngestPaginatedResponse<_360FloorV2>\n\nexport type BimUploadItem = {\n id: number\n projectId: string\n uploadedBy: string\n files: string[]\n updatedAt: string\n archive?: string | null\n}\n\nexport type BimUploadsResponse = IngestPaginatedResponse<BimUploadItem>\n\nexport type IngestUploadInitResponse = {\n id: number\n projectId: string\n token?: string\n projectName?: string\n}\n\nexport type MobileAssetsQueryParams = Partial<\n Omit<PaginationParams, \"sort\">\n> & {\n projectId?: string\n project_id?: string\n assetType?: MobileAssetsType | string\n date?: DateType\n isPaginated?: boolean\n}\n\nexport type MobileCaptureAssetsResponse =\n | IngestPaginatedResponse<{\n id: string\n projectId?: string\n uploadedBy: string\n updatedAt: string\n assetType: string\n thumbnailUrl: string\n }>\n | Array<{\n id: string\n projectId?: string\n uploadedBy: string\n updatedAt: string\n assetType: string\n thumbnailUrl: string\n }>\n","export enum MapType {\n Hybrid = \"hybrid\",\n Terrain = \"terrain\",\n}\n\nexport type MapView = {\n east?: number\n floorID?: string\n image?: string\n mapStyle?: MapType\n name: string\n north?: number\n projectId: string\n projectName: string\n south?: number\n west?: number\n}\n","export type ConnectorDetail = {\n login: string\n hostname: string\n provider: string\n}\n\nexport enum Connector {\n Aconex = \"aconex\",\n Procore = \"procore\",\n Autodesk = \"autodesk\",\n AutodeskViewer = \"autodesk_viewer\",\n VoyageControl = \"voyage_control\",\n Ring = \"ring\",\n Email = \"email\",\n\n // Project connectors\n XWeather = \"xweather\",\n}\n\nexport enum ProcoreType {\n Observations = \"observations\",\n Photos = \"photos\",\n}\n\nexport type ConnectorResponsePayload = Array<ConnectorDetail>\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 NotificationContextBase {\n cameraExid?: string\n projectExid?: string\n}\n\nexport interface CameraShareContext extends NotificationContextBase {\n cameraExid: string\n projectExid: string\n shareId: number\n}\n\nexport interface CameraStatusChangeContext extends NotificationContextBase {\n cameraExid: string\n projectExid: string\n newStatus: string\n}\n\nexport interface MentionContext extends NotificationContextBase {}\n\nexport interface TimelapseCreatedContext extends NotificationContextBase {\n cameraExid: string\n projectExid: string\n archiveExid: string\n}\n\nexport interface TimelapseFailedContext extends NotificationContextBase {\n cameraExid: string\n projectExid: string\n}\n\nexport interface DroneProcessingContext extends NotificationContextBase {\n projectExid: string\n droneDate: string\n}\n\nexport interface Processing360Context extends NotificationContextBase {\n projectExid: string\n date: string\n floor: string\n}\n\nexport type NotificationContext =\n | CameraShareContext\n | CameraStatusChangeContext\n | MentionContext\n | TimelapseCreatedContext\n | TimelapseFailedContext\n | DroneProcessingContext\n | Processing360Context\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: NotificationContext\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 ProcoreUserProject = {\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 ProcoreUserProjectsResponsePayload = Array<ProcoreUserProject>\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 ProcoreProjectAlbum = {\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 ProcoreProjectsAlbumsPayload = Array<ProcoreProjectAlbum>\n\nexport type ProcoreObservationType = {\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 ProcoreObservationTypesResponsePayload =\n Array<ProcoreObservationType>\n\nexport type ProcoreObservationFormRequestPayload = {\n projectId: number\n companyId: number\n observationType: string\n}\n\nexport type ProcoreCustomFieldOptionsRequestPayload = {\n optionsUrl: string\n companyId: number\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 DateType,\n PaginationParams,\n} from \"@evercam/api/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 period?: number\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 type ProgressPhotoItemResponsePayload = {\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: string\n}\n","import {\n AdminCamera,\n Camera,\n CameraExid,\n DateType,\n EntityByExid,\n Exid,\n Operator,\n PaginationParams,\n} from \"@evercam/api/types\"\n\nexport type ProjectExid = Exid\n\nexport type ProjectsByExid = EntityByExid<Project>\n\nexport type Project = {\n archiveTier?: ProjectArchiveTier\n cameras?: Array<Camera | AdminCamera>\n camerasCount?: number\n camerasRestrictionType?: string\n companyId: number\n endDate: string\n exid: ProjectExid\n featureFlags: Array<ProjectFeatureFlag>\n geographicBounds?: unknown\n id: string | number\n insertedAt?: string\n name: string\n owner?: { email?: string }\n ownerEmail?: string\n ownerName?: string\n startedAt?: string\n status?: ProjectStatus\n timezone?: string\n unrestrictedCameras?: Camera[]\n userId?: number\n zohoId?: string\n}\n\nexport type AdminProjectCameraRef = {\n exid: string\n name: string\n}\n\nexport type AdminProjectListItem = {\n id: number\n name: string\n status: ProjectStatus | string\n insertedAt: string\n timezone: string | null\n exid: ProjectExid\n endDate: string | null\n startDate: string | null\n archiveTier: ProjectArchiveTier | null\n featureFlags: Array<ProjectFeatureFlag | string>\n zohoId: string | null\n ownerEmail: string | null\n companyId: number | null\n companyName: string | null\n ownerName: string | null\n archived: boolean\n cameras?: AdminProjectCameraRef[]\n}\n\nexport type AdminProjectDetail = AdminProjectListItem & {\n userId: number\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 No = \"No\",\n}\n\nexport type UpdateCameraRestrictionPayload = {\n isAccessRestricted?: boolean\n}\n\nexport type Logo = {\n id: number\n projectId: number\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 featureFlagsOperator?: Operator\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: string\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 ProjectRole = {\n id: number\n name: string\n}\n\nexport type ProjectMember = {\n id: string\n key?: string\n email: string\n fullname: string\n lastSeenAt?: string\n role: ProjectRole\n permissions?: string[]\n subRoles?: Array<{\n resourceId: string\n roleId: number\n }>\n company?: { name: string } | null\n}\n\nexport type ProjectInvite = {\n id?: string\n email: string\n role?: ProjectRole\n permissions?: string[]\n subRoles?: Array<{\n resourceId: string\n roleId: number\n }>\n invitedAt?: string\n}\n\nexport type ProjectMembersResponsePayload = {\n users: ProjectMember[]\n invites: ProjectInvite[]\n errors: ProjectUserError[]\n}\n\nexport type ProjectMembersRequestPayload = {\n roleId: number\n emails: string[]\n message?: 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\nexport type PlaceholderThumbnailData = {\n placeholder: string\n}\n\nexport type ProjectUserError = {\n email: string\n error: Record<string, string[]>\n}\n\nexport type ProjectUsersResponsePayload = {\n users: ProjectMember[]\n invites: ProjectInvite[]\n errors: ProjectUserError[]\n}\n\nexport type ProjectStorageQueryParams = PaginationParams & {\n cameraName: string\n cameraExid: CameraExid\n status: ProjectStorageStatus\n}\n\nexport type ProjectStorage = {\n id: number\n cameraExid: CameraExid\n cameraName: string\n projectExid: string\n projectName: string\n status: ProjectStorageStatus\n requestor: string\n created_at: DateType\n}\n\nexport enum ProjectStorageStatus {\n New = \"new\",\n Pending = \"pending\",\n Processing = \"processing\",\n Completed = \"completed\",\n Failed = \"failed\",\n}\n","import { ApiCredentials } from \"@evercam/api/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 cancelToken?: CancelToken\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}\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 const CloudRecordingDurationLabel: Record<\n CloudRecordingDuration,\n string\n> = {\n [CloudRecordingDuration.Infinity]:\n \"content.cloud_recording_duration.unlimited\",\n [CloudRecordingDuration.Day]: \"content.cloud_recording_duration.day\",\n [CloudRecordingDuration.Week]: \"content.cloud_recording_duration.week\",\n [CloudRecordingDuration.Month]: \"content.cloud_recording_duration.month\",\n [CloudRecordingDuration.ThreeMonths]:\n \"content.cloud_recording_duration.three_months\",\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 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 WgHub = \"WgHub\",\n}\n","export enum RoiType {\n Gate = \"gate\",\n AnprContext = \"anpr_context\",\n ExclusionZone = \"exclusion_zone\",\n WorkflowArea = \"workflow_area\",\n SiteAnalytics = \"site_analytics\",\n}\n\nexport enum RoiShapeType {\n Polygon = \"polygon\",\n Line = \"line\",\n Direction = \"direction\",\n Rectangle = \"rectangle\",\n}\n\nexport type RoiShape = {\n id: number | null\n name: string\n x1: number\n x2: number\n y1: number\n y2: number\n points?: [number, 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 \"@evercam/api/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 \"@evercam/api/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 { PaginationParams } from \"@evercam/api/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: string\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: string\n type: string\n status: string\n text: string\n deliveryDatetime: string\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: string\n deliveryDatetime: string\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","import { GeoPoint, TuplePoint2D } from \"./shared\"\nimport { MapType } from \"./map\"\n\nexport type PlannerListItem = {\n id: string\n projectId: string\n projectName: string\n projectLocation: string\n createdDate: string\n updatedDate: string\n owner?: string\n lastUpdatedBy?: string\n camerasCount?: number\n hasPlan?: boolean\n thumbnailUrl?: string\n projectMapType?: MapType\n sessionId?: string\n}\n\nexport type PolygonPath = TuplePoint2D[]\n\nexport type PolygonCoordinates = PolygonPath[]\n\nexport interface GeoJSONPolygon {\n type: \"Polygon\"\n coordinates: PolygonCoordinates\n}\n\nexport enum PlannerUrlParams {\n SitePlanId = \"site_plan_id\",\n IsNewSitePlan = \"is_new_site_plan\",\n IsBoundsMode = \"is_bounds_mode\",\n ProjectPosition = \"project_position\",\n DealId = \"deal_id\",\n}\n\nexport 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\nexport type PlannerOverlay = {\n imageUrl?: string\n corners?: {\n topLeft: GeoPoint\n topRight: GeoPoint\n bottomLeft: GeoPoint\n bottomRight: GeoPoint\n } | null\n}\n\nexport type PlannerCameraMarker = {\n name?: string\n location?: GeoPoint\n heading?: number\n fovAngle?: number\n fovRadius?: number\n isVisible?: boolean\n color?: string\n}\n\nexport type SitePlanBounds = {\n northEast: GeoPoint\n southWest: GeoPoint\n}\n\nexport type SitePlan = {\n id?: string\n projectId?: string\n owner?: string\n lastUpdatedBy?: string\n projectName?: string\n projectLocation?: string\n projectMapType?: EMapTypes\n projectBounds?: SitePlanBounds\n overlay?: PlannerOverlay\n markers?: PlannerCameraMarker[]\n thumbnailUrl?: string\n createdDate?: string\n updatedDate?: string\n}\n\nexport interface IDrawControl {\n _toolbars: {\n draw: {\n _activeMode: { handler: { disable(): void; completeShape(): void } }\n _modes: { polygon: { handler: { enable(): void } } }\n }\n edit: {\n _modes: {\n edit: { handler: { enable(): void; disable(): void; save(): void } }\n }\n }\n }\n}\n","import type { DateType } from \"@evercam/api/types\"\n\nexport type StorageProvider = {\n id?: number\n cameraId: number\n type: string\n provider: string\n url: string\n startDate: DateType\n endDate: DateType\n config: Record<string, any>\n insertedAt?: DateType\n}\n\nexport type StorageProvidersResponsePayload = {\n providers: StorageProvider[]\n}\n\nexport enum ProjectStorageProvider {\n Seaweedfs = \"seaweedfs\",\n S3 = \"s3\",\n}\n","import { KitMetricData } from \"@evercam/api/types\"\nexport type ExNvrLoginResponse = { accessToken: string }\n\nexport type ExNvrRecordingInterval = {\n active: boolean\n startDate: string\n endDate: string\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, Point2D, Schedule } from \"@evercam/api/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 TwoMinutes = 120,\n}\n\nexport type TimelapseVideoOptions = {\n width?: number\n height?: number\n removeTimestamp: boolean\n smoothTransition: boolean\n evercamWatermark: boolean\n sectionBlur?: boolean\n timestampPosition?: TimestampPositionCoordinates\n blurRegions?: BlurRegionCoordinates[]\n}\n\nexport type TimestampPositionCoordinates = {\n x: number\n y: number\n w: number\n h: number\n}\n\nexport type BlurRegionCoordinates = Point2D[]\n\nexport type TimelapseLogoOptions = {\n id?: number\n x: number\n y: number\n width: number\n height: number\n}\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?: Schedule\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 { CameraExid, PaginationParams } from \"@evercam/api/types\"\nimport { Role, RoleSubRole } from \"@evercam/api/types/authz\"\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 | number\n companyName?: string\n companyExid?: string\n features?: Array<UserFeatureFlag>\n confirmedAt?: string\n createdAt?: string\n lastLoginAt?: string\n token?: string\n updatedAt?: string\n evercamAccount?: boolean\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: string\n integrations: string[]\n lastSeenAt: string\n lastLoginAt: string\n lastname: string\n persona: string\n projects: string[]\n projectsCount: number\n referralUrl?: string\n snapmailCount: number\n zohoId: string\n}\n\nexport enum UserFeatureFlag {\n CompanyAdmin = \"company-admin\",\n VideoWalls = \"video-walls\",\n MassCameraSharing = \"mass-camera-sharing\",\n 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 AuthPasswordOption = {\n type: \"password\"\n}\n\nexport type AuthSsoOption = {\n type: \"sso\"\n name: string\n scope: string\n prompt: string | null\n exid: string\n clientId: string\n iconUrl: string\n loginUrl: string\n responseType: string\n}\n\nexport type AuthOption = AuthPasswordOption | AuthSsoOption\n\nexport type AuthOptionsResponsePayload = {\n options: AuthOption[]\n}\n\nexport type AuthProviderConfigPayload = {\n name: string\n scope: string\n prompt: string | null\n exid: string\n clientId: string\n iconUrl: string\n loginUrl: string\n responseType: string\n}\n\nexport type LogoutParams = {\n token: string\n fromAdmin?: boolean\n}\n\nexport type ConfirmUserRequestPayload = {\n c: string\n}\n\nexport type DeleteActiveSessionRequestPayload = {\n authorization: string\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 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 ProjectContact = {\n name: string\n role: ContactRole | string\n email?: string\n phone?: string\n photo?: string\n}\n\nexport type ProjectContactsResponsePayload = {\n data: ProjectContact[]\n}\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: string\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: string\n updatedAt: string\n lastSignInAt: string\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 isAdmin: boolean\n persona: Persona\n country: string\n companyId: number\n companyExid: string\n companyName: string\n evercamAccount: boolean\n createdAt: string\n updatedAt: string\n confirmedAt: string\n lastLoginAt: string\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: string\n updatedAt: string\n}\n\ntype Email = string\n\nexport type WsAccessRestrictionUpdate = {\n camera_id: CameraExid\n is_access_restricted: boolean\n}\n\nexport type WsUserRestrictionItem = {\n user_id: number\n camera_id: CameraExid\n is_user_access_restricted: boolean\n}\n\nexport type WsUserRestrictionUpdate = WsUserRestrictionItem[]\n\n/**\n * Backend WebSocket event payload:\n * {\n * user: {\n * \"someone@domain.com\": {camera_id, is_access_restricted} OR [{...}, {...}]\n * }\n * }\n */\nexport type WsRestrictionChangedPayload = {\n user: Record<Email, WsAccessRestrictionUpdate | WsUserRestrictionUpdate>\n}\n\nexport type ProjectUserWithRole = {\n id: number\n email: string\n fullname: string\n company: { id: number; name: string; exid: string }\n persona: Persona\n permissions: string[]\n role: Role\n subRoles: RoleSubRole[]\n}\n","import { Camera, Media, PaginationParams } from \"@evercam/api/types\"\n\nexport enum VideoWallItemType {\n LiveView = \"live\",\n Video = \"video\",\n Image = \"image\",\n}\n\nexport type VideoWallItem<T extends Camera | Media = Camera> = {\n value: T\n type: VideoWallItemType\n}\n\nexport type VideoWallPresetGridConfig = {\n items: VideoWallPresetItem[]\n meta?: VideoWallPresetMeta\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 moved?: boolean\n}\n\nexport type VideoWallPresetMeta = {\n colNum: number\n rowCount: number\n tile: number\n template: string\n gridSize: number\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 insertedAt: string\n updatedAt: string\n user: { id: number; firstname: string; lastname: string; email: string }\n}\n\nexport interface VideoWallListParams extends PaginationParams {\n projectExid?: string\n id?: number\n exid?: string\n projectId?: number\n userId?: number\n name?: string\n project?: string\n user?: string\n source?: VideoWallSource\n}\n\nexport type VideoWallCreateUpdatePayload = {\n projectExid?: string\n name: string\n source?: VideoWallSource\n config: Record<string, unknown>\n scope?: string\n}\n","import { DateType } from \"@evercam/api/types/time\"\n\nexport type HistoryWeatherRequestPayload = {\n day: string\n provider: WeatherProvider\n}\n\nexport type WeatherReportParams = {\n startDate: string\n endDate: string\n weatherConditionIds?: number[]\n minMinTemp?: number\n maxMinTemp?: number\n minMaxTemp?: number\n maxMaxTemp?: number\n minMinPrecip?: number\n maxMinPrecip?: number\n minMaxPrecip?: number\n maxMaxPrecip?: number\n minMinWindSpeed?: number\n maxMinWindSpeed?: number\n minMaxWindSpeed?: number\n maxMaxWindSpeed?: number\n minMinHumidity?: number\n maxMinHumidity?: number\n minMaxHumidity?: number\n maxMaxHumidity?: number\n minMinPressure?: number\n maxMinPressure?: number\n minMaxPressure?: number\n maxMaxPressure?: number\n minMinClouds?: number\n maxMinClouds?: number\n minMaxClouds?: number\n maxMaxClouds?: number\n minMaxUvIndex?: number\n maxMaxUvIndex?: number\n}\n\nexport enum WeatherReportScope {\n Daily = \"daily\",\n}\n\nexport type WeatherReportRequestPayload = WeatherReportParams & {\n scope: WeatherReportScope\n includeRecent: boolean\n}\n\nexport type CurrentWeatherRequestPayload = {\n provider: WeatherProvider\n includeForecast?: boolean\n forecastDays?: number\n}\n\nexport type WeatherHourlyItem = {\n chanceoffog: number\n chanceoffrost: number\n chanceofhightemp: number\n chanceofovercast: number\n chanceofrain: number\n chanceofremdry: number\n chanceofsnow: number\n chanceofsunshine: number\n chanceofthunder: number\n chanceofwindy: number\n clouds?: number\n dewpoint: number\n feelsLike?: number\n heatindex: number\n hour?: number\n humidity?: number\n isRequestedWeather?: boolean\n precip: number\n pressure?: number\n rain?: HourlyReading\n snow?: HourlyReading\n source: string\n temp?: number\n uvIndex: number\n weather?: WeatherSummary\n windchill: number\n windDegree?: number\n windDir: string\n windgust: number\n windSpeed?: number\n wind?: {\n speed: number\n }\n}\n\nexport type WeatherResponsePayload = Array<WeatherHourlyItem>\n\nexport type WeatherSummary = {\n id?: number\n main?: string\n description?: string\n temperature?: number\n icon?: string | string[]\n weatherIndex?: number\n rain?: HourlyReading\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: string\n totalsnow: number\n maxPressure: number\n maxWindchill: number\n maxHumidity: number\n avgtemp: number\n projectId: number\n minUvIndex: number\n}\n","import {\n CameraExid,\n DateType,\n ProjectExid,\n PaginationParams,\n TuplePoint3D,\n TuplePoint2D,\n} from \"@evercam/api/types\"\n\nexport enum CommentsScope {\n Recordings = \"recordings\",\n ThreeSixty = \"360\",\n Drone = \"drone\",\n Timeline = \"timeline\",\n}\n\nexport enum CommentsLabel {\n Info = \"Info\",\n Danger = \"Danger\",\n Restricted = \"Restricted\",\n}\n\nexport type CommentsRequestPayload = {\n scope: CommentsScope\n cameraExid?: CameraExid\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?: TuplePoint2D\n position3d?: TuplePoint3D\n context?: Record<string, unknown>\n canDelete?: boolean\n archivedAt?: string\n label?: CommentsLabel\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?: TuplePoint2D\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 CameraDateRangeFilter,\n} from \"@evercam/api/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 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 cameraExid: CameraExid\n trackings: 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 | number\n iouThreshold?: number\n fromDate: string\n toDate: string\n}\n\nexport type BaseCountsParams = {\n fromDate?: string\n toDate?: string\n precision?: TimelinePrecision\n trackId?: number\n labels?: DetectionLabel | DetectionLabel[]\n}\n\nexport type DetectionsCountsParams = BaseCountsParams & {\n cameraExids?: CameraExid[]\n projectExid?: ProjectExid\n modelId?: DetectionModel\n labels?: Label[]\n excludeLabels?: Label[]\n confidenceThreshold?: number\n mergedClasses?: string[]\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 SegmentsPresenceResponse = { intervals: SegmentsPresenceByLabel }\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 PpeV2 = 6,\n}\n","import { DateType } from \"@evercam/api/types\"\n\nexport enum Operator {\n AND = \"and\",\n OR = \"or\",\n}\n\ntype sortby = string\ntype sortDirection = \"asc\" | \"desc\"\n\nexport type SortingUrlParam = `${sortby}|${sortDirection}`\n\nexport type JsonPrimitive = string | number | boolean | null\n\nexport type JsonValue = JsonPrimitive | JsonObject | JsonArray\n\nexport type JsonObject = {\n [key: string]: JsonValue\n}\n\nexport type JsonArray = JsonValue[]\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 ScheduleUppercase = {\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 Schedule = ScheduleUppercase | ScheduleLowercase\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 = {\n id?: number\n user: string\n text: string\n type: string\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 TuplePoint2D = [number, number]\n\nexport type TuplePoint3D = [number, number, number]\n\nexport type Point2D = {\n x: number\n y: number\n}\n\nexport type Point3D = {\n x: number\n y: number\n z: number\n}\n\nexport type GeoPoint = {\n lat: number\n lng: number\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 DateType,\n Nvr,\n PaginationParams,\n PowerType,\n Project,\n Router,\n Schedule,\n Tag,\n} from \"@evercam/api/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 KitMetricStatsEntry = {\n timestamp: string\n voltage: number\n current: number\n panelVoltage: number\n panelPower: number\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: string\n updatedAt: string\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: string\n endDate: string | null\n}\n\nexport type KitBox = {\n id: string\n gatewaySerial: string\n gatewayMac: string\n gatewayConfig: Record<string, unknown> | null\n insertedAt: string\n updatedAt: string\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 \"@evercam/api/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 enum AuditLogEntity {\n Cameras = \"cameras\",\n Projects = \"projects\",\n Layers = \"layers\",\n Routers = \"routers\",\n Sims = \"sims\",\n Hdds = \"hdds\",\n Nvr = \"nvr\",\n Archives = \"archives\",\n Users = \"users\",\n Rois = \"rois\",\n Kits = \"kits\",\n Roles = \"roles\",\n Tags = \"tags\",\n KitsTags = \"kits_tags\",\n Oauth = \"oauth\",\n StorageProviders = \"storage_providers\",\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 {\n CameraExid,\n DateType,\n PaginationParams,\n Schedule,\n} from \"@evercam/api/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 Cancelling = \"canceling\",\n Cancelled = \"cancelled\",\n Completed = \"completed\",\n Failed = \"failed\",\n Pending = \"pending\",\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 jpegCount?: number\n obanJobId?: number\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 SnapshotEmailDeliveryRequestPayload = {\n snapshot: string\n recipients?: string[]\n message?: string\n}\n\nexport type SnapshotEmailDeliveryResponsePayload = {\n warning?: string\n}\n\nexport type DeleteSnapshotQueryParams = {\n fromDate: DateType\n toDate: DateType\n adminEmail: string\n adminFullname: string\n}\n\nexport type SnapshotTransfer = {\n id: number\n sourceCamera: SnapshotTransferCamera\n targetCamera: SnapshotTransferCamera\n fromDate: DateType\n toDate: DateType\n overwriteExisting?: boolean | null\n deleteSource?: boolean | null\n requestor: SnapshotTransferRequestor\n status: SnapshotTransferStatus\n insertedAt: DateType\n attempts?: number | null\n errorMessage?: string | null\n snapshotsTransferred?: number | null\n}\n\nexport type SnapshotTransferCamera = {\n id: number\n exid: CameraExid\n name: string\n}\n\nexport type SnapshotTransferRequestor = {\n email: string\n firstname: string\n lastname: string\n}\n\nexport enum SnapshotTransferStatus {\n Completed = \"completed\",\n Failed = \"failed\",\n Processing = \"processing\",\n Pending = \"pending\",\n Cancelled = \"cancelled\",\n}\n\nexport type TransferCloudRecordingsQueryParams = PaginationParams & {\n targetCameraExid: CameraExid\n fromDate: DateType\n toDate: DateType\n overwriteExisting?: boolean\n deleteSource?: boolean\n adminEmail?: string\n adminFullname?: string\n}\n","import {\n BBox,\n BoundingBox,\n DateType,\n Schedule,\n ScheduleLowercase,\n CameraExid,\n DetectionModel,\n PaginationParams,\n PpeLabel,\n ProjectExid,\n CameraDateRangeFilter,\n CameraFeatureFlag,\n TimelineDateInterval,\n Camera,\n AdminCamera,\n _360FloorV2,\n _360FloorId,\n PaginatedItems,\n DateRangeFilter,\n TuplePoint2D,\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 SmartSearchObjectPart = {\n id?: string\n type: SmartSearchComponentType.Object\n value: DetectionLabel\n}\n\nexport type SmartSearchOperatorPart = {\n id?: string\n type: SmartSearchComponentType.Operator\n value: SmartSearchOperatorType\n}\n\nexport type SmartSearchConditionPart = {\n id?: string\n type: SmartSearchComponentType.Condition\n value: SmartSearchCondition | SmartSearchConditionData\n}\n\nexport type SmartSearchViewPart = {\n id?: string\n type: SmartSearchComponentType.View\n value: SiteAnalyticsView\n}\n\nexport type SmartSearchAreaPart = {\n id?: string\n type: SmartSearchComponentType.Area\n value: BBox\n}\n\nexport type SmartSearchTimePart = {\n id?: string\n type: SmartSearchComponentType.Time\n value: Schedule | ScheduleLowercase\n}\n\nexport type SmartSearchDateRangePart = {\n id?: string\n type: SmartSearchComponentType.DateRange\n value: DateRangeFilter\n}\n\nexport type SmartSearchPart =\n | SmartSearchObjectPart\n | SmartSearchOperatorPart\n | SmartSearchConditionPart\n | SmartSearchViewPart\n | SmartSearchAreaPart\n | SmartSearchTimePart\n | SmartSearchDateRangePart\n\nexport type SmartSearchPartOrGroup = SmartSearchPart | SmartSearchPart[]\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 SmartSearchComponentData = {\n id: string\n type: SmartSearchComponentType\n parts: SmartSearchPartOrGroup[]\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\ntype SmartSearchBackendConditionBase = {\n target: SmartSearchTargets\n}\n\nexport type SmartSearchSelectionCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.Selection\n operator: SmartSearchOperators\n attribute: string\n value: string | number | string[]\n}\n\nexport type SmartSearchSpatialCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.Spatial\n operator: SmartSearchOperators\n reference: {\n target: SmartSearchTargets\n attribute: string\n value: string | number | string[]\n }\n}\n\nexport type SmartSearchAreaCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.Area\n operator: SmartSearchOperators\n polygon: BBox\n}\n\nexport type SmartSearchGeoAreaCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.GeoArea\n operator: SmartSearchOperators\n polygon: BBox\n}\n\nexport type SmartSearchBackendQueryCondition =\n | SmartSearchSelectionCondition\n | SmartSearchSpatialCondition\n | SmartSearchAreaCondition\n | SmartSearchGeoAreaCondition\n\nexport type SmartSearchBackendQuery = {\n returnTargets: SmartSearchTargets[]\n rulesLogic: SmartSearchOperatorType\n rules: {\n logic: SmartSearchOperatorType\n conditions: SmartSearchBackendQueryCondition[]\n }[]\n returnType: SmartSearchReturnType\n timeSchedule?: Schedule\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 | DateRangeFilter\n | SiteAnalyticsView\n\nexport type SmartSearchBackendQueryPayload = {\n name: string\n description: string\n query: SmartSearchBackendQuery\n fromDate?: DateType\n toDate?: DateType\n author: string\n createdAt: DateType\n params?: { start: string; end: string }\n}\n\nexport type SavedQuery = {\n description: string\n id: number\n query: SmartSearchBackendQuery\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?: string\n toDate?: string\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: TuplePoint2D\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\nexport type SiteAnalyticsCameraView = {\n type: SiteAnalyticsViewType.Camera\n id: CameraExid\n value: Camera | AdminCamera\n}\n\nexport type SiteAnalytics360View = {\n type: SiteAnalyticsViewType.ThreeSixty\n id: _360FloorId\n value: _360FloorV2\n}\n\nexport type SiteAnalyticsView = SiteAnalyticsCameraView | SiteAnalytics360View\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 limit?: 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> = PaginatedItems<SmartSearchResultItemByType[R]>\n\nexport type SmartSearchMinifiedPart = {\n t: SmartSearchComponentType\n v: unknown\n}\n\nexport type SmartSearchMinifiedComponent = {\n t: SmartSearchComponentType\n p: SmartSearchMinifiedPart[]\n}\n","import { CameraExid, PaginationParams } from \"@evercam/api/types\"\nimport type { JsonObject } from \"@evercam/api/types\"\nimport { VideoWallPresetGridConfig } 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: [string, string] | 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 VideoWallWidgetSettingsObject = CommonWidgetSettings & {\n preset: VideoWallPresetGridConfig\n refreshRate: number\n allowCellFullscreen: boolean\n allowFitContent: boolean\n allowForceAspectRatio: boolean\n allowFullscreen: boolean\n cameras: CameraExid[]\n description: string\n global: boolean\n visibility: string\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 | VideoWallWidgetSettingsObject\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: string\n updatedAt: string\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: JsonObject | null\n allowedOrigin: string\n domainRestricted: boolean\n insertedAt: string\n updatedAt: string\n}\n\nexport type WidgetSessionSettingsPayload = {\n sessionSettings: JsonObject\n}\n\nexport type AdminWidgetResourceCamera = {\n id: number\n exid: string\n name: string\n}\n\nexport type AdminWidgetResourceProject = {\n id: number\n exid: string\n name: string\n featureFlags: string[]\n}\n\nexport type AdminWidgetResourcePreset = {\n id: number\n name: string\n exid: string\n config: JsonObject\n}\n\nexport type AdminWidgetResources = {\n camera?: AdminWidgetResourceCamera | null\n project?: AdminWidgetResourceProject | null\n preset?: AdminWidgetResourcePreset | null\n}\n\nexport type AdminWidgetUser = {\n id: number\n email: string\n firstname: string\n lastname: string\n}\n\nexport type AdminWidget = {\n id: number\n active: boolean\n public: boolean\n user: AdminWidgetUser\n description: string | null\n insertedAt: string\n updatedAt: string\n settings: WidgetSettings\n ressources: AdminWidgetResources\n seenAt?: string\n showDashboardLink?: boolean\n domainRestricted: boolean\n widgetType: WidgetType\n allowedOrigin: string | null\n}\n\nexport type AdminWidgetFull = AdminWidget & {\n widgetKey: string\n widgetId: string\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 GateReport = \"gate_report\",\n}\n\nexport type AutomationCompareConfig = {\n compareDelay: number\n}\n\nexport type AutomationEmailRecipient = string | { email: string }\nexport type AutomationGateReportConfig = {\n projectExid: string\n vehicleTypes: string[]\n fileType: string\n period: number\n columns: string[]\n recipients: string | string[]\n}\n\nexport type AutomationEmailProviderConfig = {\n cameraExids?: CameraExid[]\n recipients: string | AutomationEmailRecipient[]\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 =\n | AutomationCompareConfig\n | AutomationGateReportConfig\n | {}\n\nexport type AutomationConfig = AutomationProviderConfig &\n AutomationOptionsConfig\n\nexport type Automation = {\n id?: number\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\nexport type AutomationProviderOption = {\n labelTranslationKey: string\n descriptionTranslationKey: string\n value: AutomationProvider\n icon: string\n iconSize?: string\n requiresConnection: boolean\n}\n\nexport type FormattedAutomation = {\n cameraExids: string\n name: string\n subject: string\n provider: AutomationProvider\n type: AutomationType\n config: Partial<AutomationProviderConfig> & Partial<AutomationOptionsConfig>\n notifyDays: string\n notifyTime: string\n timezone: string\n isPaused: boolean\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\nexport type PosthogUserParams = {\n firstname?: string\n lastname?: string\n email: string\n telephone?: string\n country?: string\n isAdmin?: boolean\n persona?: string\n companyExid: string\n companyName: string\n isImpersonationLogin: boolean\n ImpersonatedUserEmail?: string\n ImpersonatedUserFirstname?: string\n impersonatedUserLastname?: string\n}\n","export enum RoleResourceType {\n App = \"app\",\n Camera = \"camera\",\n Project = \"project\",\n}\n\nexport type RoleSubRole = {\n resourceId: string\n roleId: number\n roleName?: string\n permissions?: string[]\n}\n\nexport type Role = {\n id: number\n name: string\n description?: string | null\n resource?: string\n resourceType: RoleResourceType\n resourceId?: string | null\n permissions: string[]\n subRoles?: RoleSubRole[]\n isDefault?: boolean\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 = {\n name: string\n permissions: string[]\n subRoles?: RoleSubRole[]\n}\n\nexport type AuthzRoleUser = {\n email: string\n resourceId: string\n}\n\nexport type AuthzUserRolesResponse = {\n roles: Role[]\n}\n\nexport type AuthzScopePermission = {\n id: number\n action: string\n exid: string\n}\n\nexport type AuthzScope = {\n id: number\n name: string\n description: string | null\n permissions: AuthzScopePermission[]\n app: string\n exid: string\n}\n\nexport type AuthzScopeCreatePayload = {\n name: string\n description?: string\n permissions: string[]\n}\n\nexport type AuthzScopeUpdatePayload = Partial<AuthzScopeCreatePayload>\n\nexport function isProjectRole(role: Role): role is ProjectResourceRole {\n return role.resourceType === RoleResourceType.Project\n}\n\nexport function isCameraRole(role: Role): role is CameraResourceRole {\n return role.resourceType === RoleResourceType.Camera\n}\n","import { ForgeView } from \"@evercam/api/types/360\"\nimport { Point2D, Point3D } from \"@evercam/api/types/shared\"\n\nexport enum SiteViewSoftwareType {\n Revit = \"Revit\",\n Navisworks = \"Navisworks\",\n Drone = \"Drone\",\n Synchro = \"Synchro\",\n}\n\nexport enum SiteViewerType {\n ITwin = \"iTwin\",\n Cesium = \"Cesium\",\n Forge = \"Forge\",\n}\n\nexport type SiteViewCameraListItem = {\n projectId: string\n projectName: string\n software: SiteViewSoftwareType\n type: SiteViewerType\n uniqueId: string\n integrationType?: string\n}\n\nexport type ForgeUrn = {\n displayName: string\n urn: string\n isModelHostedByEvercamACC?: boolean\n}\n\nexport type ForgeAccAlignmentData = {\n bbox: {\n min: Point2D\n max: Point2D\n }\n transform: number[]\n}\n\nexport type TimelineItem = {\n taskNumber: number\n taskID: string\n actualStartDate: string\n actualEndDate: string\n plannedStartDate: string\n plannedEndDate: string\n objectIDs: number[]\n}\n\nexport type ForgeMarkerTransform = {\n default: {\n position: Point3D\n type: string\n }\n}\n\nexport type ForgeMarker = {\n name: string\n cameraExid: string\n transforms: ForgeMarkerTransform\n}\n\nexport type ForgeProjectData = {\n urns?: ForgeUrn[]\n accDrawingsAlignments?: Record<string, ForgeAccAlignmentData>\n timeline?: TimelineItem[]\n savedView?: ForgeView\n markers?: ForgeMarker[]\n}\n\nexport type ItwinModel = {\n name: string\n iTwinId: string\n iModelId: string\n changeSetId?: string\n isIModel: boolean\n height?: number\n cesiumId?: number\n markerDistanceThreshold: number\n}\n\nexport type ItwinProjectData = {\n models: ItwinModel[]\n}\n","export enum AiApp {\n GateReport = \"gate_report\",\n Ppe = \"ppe\",\n SiteAnalytics = \"site_analytics\",\n}\n\nexport enum AiProvider {\n Gemini = \"gemini\",\n OpenAi = \"openai\",\n Anthropic = \"anthropic\",\n}\n\nexport enum AiConfigsPromptDialogMode {\n Create = \"create\",\n Edit = \"edit\",\n View = \"view\",\n}\n\nexport enum AiConfigsKeyDialogMode {\n Create = \"create\",\n Rotate = \"rotate\",\n Rename = \"rename\",\n}\n\nexport interface AiAppConfig {\n bg: string\n fg: string\n border: string\n icon: string\n}\n\nexport const AI_APP_CONFIGS: Record<AiApp | \"generic\", AiAppConfig> = {\n [AiApp.GateReport]: {\n bg: \"#ecfdf5\",\n fg: \"#047857\",\n border: \"#a7f3d0\",\n icon: \"fa-truck\",\n },\n [AiApp.Ppe]: {\n bg: \"#fff7ed\",\n fg: \"#c2410c\",\n border: \"#fed7aa\",\n icon: \"fa-helmet-safety\",\n },\n [AiApp.SiteAnalytics]: {\n bg: \"#eff6ff\",\n fg: \"#1d4ed8\",\n border: \"#bfdbfe\",\n icon: \"fa-chart-simple\",\n },\n generic: {\n bg: \"#f1f5f9\",\n fg: \"#334155\",\n border: \"#cbd5e1\",\n icon: \"fa-cube\",\n },\n}\n\nexport interface AiProviderConfig {\n bg: string\n fg: string\n icon: string\n}\n\nexport const AI_PROVIDER_CONFIGS: Record<AiProvider, AiProviderConfig> = {\n [AiProvider.Gemini]: { bg: \"#dbeafe\", fg: \"#1d4ed8\", icon: \"fa-gem\" },\n [AiProvider.OpenAi]: { bg: \"#dcfce7\", fg: \"#15803d\", icon: \"fa-robot\" },\n [AiProvider.Anthropic]: { bg: \"#fef3c7\", fg: \"#a16207\", icon: \"fa-brain\" },\n}\n\nexport enum AiPromptModel {\n Gemini3Pro = \"gemini-3-pro\",\n Gemini3FlashPreview = \"gemini-3-flash-preview\",\n Gemini25Pro = \"gemini-2.5-pro\",\n Gemini25Flash = \"gemini-2.5-flash\",\n Gemini20Flash = \"gemini-2.0-flash\",\n Gpt5 = \"gpt-5\",\n Gpt5Mini = \"gpt-5-mini\",\n Gpt4o = \"gpt-4o\",\n Gpt4oMini = \"gpt-4o-mini\",\n ClaudeOpus45 = \"claude-opus-4-5\",\n ClaudeSonnet46 = \"claude-sonnet-4-6\",\n ClaudeHaiku45 = \"claude-haiku-4-5\",\n}\n\nexport interface AiPrompt {\n id: number\n title: string | null\n purpose: string | null\n app: string | null\n model: string | null\n prompt: string\n outputSchema: Record<string, unknown> | null\n createdBy: string\n createdAt: string\n updatedAt: string\n}\n\nexport interface AiPromptCreatePayload {\n title?: string | null\n purpose: string\n app: string\n model?: string | null\n prompt: string\n outputSchema?: Record<string, unknown> | null\n}\n\nexport interface AiPromptUpdatePayload {\n title?: string | null\n purpose?: string\n app?: string\n model?: string | null\n prompt?: string\n outputSchema?: Record<string, unknown> | null\n}\n\nexport type AiPromptQueryParams = {\n app?: string\n purpose?: string\n model?: string\n search?: string\n createdBy?: string\n page?: number\n limit?: number\n}\n\nexport interface AiPromptListResponse {\n items: AiPrompt[]\n total: number\n page: number\n limit: number\n from: number\n to: number\n}\n\nexport interface AiPromptCreateResponse {\n created: boolean\n data: AiPrompt\n message: string\n}\n\nexport interface AiPromptUpdateResponse {\n updated: boolean\n id: number | string\n message: string\n}\n\nexport interface AiPromptDeleteResponse {\n deleted: boolean\n count: number\n message: string\n}\n\nexport interface AiApiKey {\n id: number\n projectExid: string\n provider: string\n name: string\n purpose: string\n enabled: boolean\n autoGenerated: boolean\n firstUsedAt: string | null\n lastUsedAt: string | null\n insertedAt: string\n updatedAt: string\n}\n\nexport interface AiApiKeyCreatePayload {\n projectExid: string\n provider: string\n name?: string\n purpose?: string\n apiKey?: string\n enabled?: boolean\n}\n\nexport interface AiApiKeyUpdatePayload {\n name?: string\n enabled?: boolean\n apiKey?: string\n}\n\nexport type AiApiKeyQueryParams = {\n projectExid?: string\n provider?: string\n purpose?: string\n enabled?: boolean\n}\n\nexport interface AiApiKeyCreateResponse {\n created: boolean\n data: AiApiKey\n message: string\n}\n\nexport interface AiApiKeyUpdateResponse {\n updated: boolean\n id: number | string\n message: string\n}\n\nexport interface AiApiKeyDeleteResponse {\n deleted: boolean\n count: number\n message: string\n}\n","import { CameraExid, DateType, ProjectExid } from \"@evercam/api/types\"\n\nexport enum VehicleClassifierSource {\n Local = \"local\",\n Api = \"api\",\n}\n\nexport type GateReportCoolifyStatus = {\n appUuid: string | null\n name: string | null\n serverUuid: string | null\n serverName: string | null\n appUrl: string | null\n status: string | null\n isRunning: boolean\n imageTag?: string | null\n fqdn: string | null\n updatedAt: string | null\n}\n\nexport type GateReportProjectMeta = {\n exid: ProjectExid\n name: string | null\n timezone: string | null\n featureFlags: string[] | null\n}\n\nexport type GateReportCameraMeta = {\n exid: CameraExid\n name: string | null\n status: string | null\n kitSerial: string | null\n kitAlarms: string[] | Record<string, unknown> | null\n}\n\nexport type GateReportManagedApp = {\n id: number\n projectExid: ProjectExid\n anprCameraExid: CameraExid\n contextCameraExid: CameraExid | null\n coolifyAppId: string | null\n\n startDate: DateType | null\n endDate: DateType | null\n startHour: number\n endHour: number\n\n enabled: boolean\n enableEnrichments: boolean\n enableGemini: boolean\n geminiStartHour: number\n geminiEndHour: number\n\n reviewModel: string\n enrichmentModel: string\n reviewerPromptSlug: string | null\n\n geminiTimeoutSeconds: number\n geminiMaxAttempts: number\n\n vehicleClassifierSource: VehicleClassifierSource\n\n snapshotDelaySeconds: number\n snapshotRequestTimeout: number\n\n plateClassifierThreshold: number\n plateClassifierHighConfidence: number\n\n maxPriorEvents: number\n recordsFetchInterval: number\n priorRecentLimit: number\n priorSimilarLimit: number\n\n insertedAt: DateType\n updatedAt: DateType\n\n coolify: GateReportCoolifyStatus | null\n project: GateReportProjectMeta | null\n anprCamera: GateReportCameraMeta | null\n contextCamera: GateReportCameraMeta | null\n\n anprHasRoi: boolean\n contextHasRoi: boolean\n\n lastProcessedEventAt: DateType | null\n lastUnprocessedEventAt: DateType | null\n}\n\nexport type GateReportAppEvents = {\n anprCameraExid: CameraExid\n lastProcessedEventAt: DateType | null\n lastUnprocessedEventAt: DateType | null\n}\n\nexport type AppConfigFormValue = {\n contextCameraExid: string | null\n startDate: DateType | null\n endDate: DateType | null\n startHour: number\n endHour: number\n enabled: boolean\n enableEnrichments: boolean\n enableGemini: boolean\n geminiStartHour: number\n geminiEndHour: number\n reviewModel: string\n enrichmentModel: string\n reviewerPromptSlug: string | null\n geminiTimeoutSeconds: number\n geminiMaxAttempts: number\n vehicleClassifierSource: VehicleClassifierSource\n snapshotDelaySeconds: number\n snapshotRequestTimeout: number\n plateClassifierThreshold: number\n plateClassifierHighConfidence: number\n recordsFetchInterval: number\n priorRecentLimit: number\n priorSimilarLimit: number\n}\n\nexport type CreateGateReportAppPayload = {\n projectExid: ProjectExid\n anprCameraExid: CameraExid\n contextCameraExid?: CameraExid | null\n\n coolifyServerUuid: string\n imageTag?: string\n geminiApiKey?: string | null\n\n startDate?: DateType | null\n endDate?: DateType | null\n startHour?: number\n endHour?: number\n\n enabled?: boolean\n enableEnrichments?: boolean\n enableGemini?: boolean\n geminiStartHour?: number\n geminiEndHour?: number\n\n reviewModel?: string\n enrichmentModel?: string\n reviewerPromptSlug?: string | null\n\n geminiTimeoutSeconds?: number\n geminiMaxAttempts?: number\n\n vehicleClassifierSource?: VehicleClassifierSource\n\n snapshotDelaySeconds?: number\n snapshotRequestTimeout?: number\n\n plateClassifierThreshold?: number\n plateClassifierHighConfidence?: number\n\n maxPriorEvents?: number\n recordsFetchInterval?: number\n priorRecentLimit?: number\n priorSimilarLimit?: number\n}\n\nexport type UpdateGateReportAppPayload = Partial<\n Omit<\n CreateGateReportAppPayload,\n \"projectExid\" | \"anprCameraExid\" | \"coolifyServerUuid\" | \"geminiApiKey\"\n >\n>\n\nexport type GateReportManagementListParams = {\n projectExid?: ProjectExid\n includeStatus?: boolean\n page?: number\n limit?: number\n}\n\nexport type CoolifyProjectOption = {\n uuid: string\n name: string\n description: string | null\n}\n\nexport type CoolifyServerOption = {\n uuid: string\n name: string\n isReachable: boolean\n isUsable: boolean\n}\n\nexport enum AppRuntimeState {\n Running = \"running\",\n Stopped = \"stopped\",\n Restarting = \"restarting\",\n}\n\nexport type AppRuntimeStateRequest = {\n state: AppRuntimeState\n}\n\nexport type AppActionResponse = {\n success: boolean\n message: string | null\n appUuid: string | null\n state: AppRuntimeState | null\n}\n\nexport type APIEnvelope<T> = {\n success: boolean\n data: T | null\n message: string\n}\n\nexport type CreateGateReportAppResponse = {\n created: boolean\n id: number | null\n data: GateReportManagedApp | null\n count: number | null\n message: string\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 request?.headers?.common &&\n !(\n axiosEnv.forgeTokenServerUrl &&\n (request.url || \"\").startsWith(axiosEnv.forgeTokenServerUrl as string)\n )\n ) {\n const commonHeaders = request.headers.common as unknown as {\n \"iframe-origin\"?: string\n }\n commonHeaders[\"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 const req = store.get(key);\n req.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 req.onerror = () => reject(req.error);\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 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 \"@evercam/api/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 \"@evercam/api/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\nconst CANCEL_REASON = \"Operation canceled due to new request\"\n\nfunction createRequestManager() {\n const requests = new Map<string, CancelTokenSource>()\n\n return {\n createToken(key: string): CancelTokenSource[\"token\"] {\n requests.get(key)?.cancel(CANCEL_REASON)\n\n const source = axios.CancelToken.source()\n requests.set(key, source)\n\n return source.token\n },\n cancelAll(): void {\n requests.forEach((source) => source.cancel(CANCEL_REASON))\n requests.clear()\n },\n }\n}\n\naxios.createRequestManager = createRequestManager\naxios.requestManager = createRequestManager()\n\nexport { axios }\n","import {\n FootageCreateUpdatePayload,\n HDDCreateUpdatePayload,\n HDDsQueryParams,\n} from \"@evercam/api/types/hdd\"\nimport { axios } from \"./client\"\nimport type {\n OAuthClient,\n OAuthClientWithSecret,\n AdminCreateOAuthClientPayload,\n UpdateOAuthClientPayload,\n} from \"@evercam/api/types/oauth\"\nimport type {\n CamerasResponsePayload,\n CameraUpdateRequestPayload,\n PaginatedItems,\n AdminCamera,\n AdminProjectDetail,\n AdminProjectListItem,\n AdminHdd,\n AdminUser,\n ProgressPhotosCreateUpdateRequestPayload,\n Kit,\n PatchPayload,\n StorageProvidersResponsePayload,\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 CompanySummary,\n CompanyUpdatePayload,\n SsoProvider,\n SsoUpdatePayload,\n SsoCreatePayload,\n SuppressionsQueryParams,\n Suppression,\n SnapshotExtractionType,\n KitQueryParams,\n KitCreatePayload,\n AdminKit,\n KitMetricStatsEntry,\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 AdminWidget,\n AdminWidgetFull,\n WidgetPayload,\n PaginationParams,\n KitStorageRequestPayload,\n AdminCompanyUser,\n AdminCompanyProject,\n CompanyKit,\n CompanyCameraSummary,\n Automation,\n KitStorage,\n KitFootageRequestPayload,\n CommentsListRequestPayload,\n Comment,\n KitFootage,\n KitAlarmItem,\n RecycleBin,\n RecycleBinQueryParams,\n TransferCloudRecordingsQueryParams,\n SnapshotTransfer,\n CheckCameraPortPayload,\n CameraStatusLog,\n KitBox,\n KitBoxCreatePayload,\n KitBoxQueryParams,\n AdminInvite,\n AdminSearchItem,\n WithZohoParams,\n ZohoDeskTicketSearchResponse,\n JsonObject,\n ProjectStorageQueryParams,\n ProjectStorage,\n StorageProvider,\n AnprExtraction,\n AnprExtractionCreatePayload,\n} from \"@evercam/api/types\"\n\nimport { KitMetricId } from \"@evercam/api/types\"\nimport { Tag } from \"@evercam/api/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 getStorageProviders(\n cameraId: string,\n params?: AxiosRequestConfig & { unmaskSecretKeys: boolean }\n ): Promise<StorageProvidersResponsePayload> {\n return axios.get(`/admin/cameras/${cameraId}/storage-providers`, params)\n },\n createStorageProvider(\n cameraId: string,\n payload: StorageProvider\n ): Promise<StorageProvidersResponsePayload> {\n return axios.post(`/admin/cameras/${cameraId}/storage-providers`, payload)\n },\n updateStorageProvider(\n cameraId: string,\n providerId: number,\n payload: StorageProvider\n ): Promise<StorageProvidersResponsePayload> {\n return axios.put(\n `/admin/cameras/${cameraId}/storage-providers/${providerId}`,\n payload\n )\n },\n getStorageDetails(): Promise<JsonObject> {\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(\n id: string,\n config: AxiosRequestConfig & { params?: WithZohoParams } = {}\n ): Promise<CompanySummary> {\n return axios.get(`/admin/companies/${id}`, config)\n },\n getCompanyUsers(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<AdminCompanyUser>> {\n return axios.get(`/admin/companies/${id}/users`, params)\n },\n getCompanyProjects(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<AdminCompanyProject>> {\n return axios.get(`/admin/companies/${id}/projects`, params)\n },\n getCompanyKits(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<CompanyKit>> {\n return axios.get(`/admin/companies/${id}/kits`, params)\n },\n getCompanyCameras(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<CompanyCameraSummary>> {\n return axios.get(`/admin/companies/${id}/cameras`, params)\n },\n getCompanies(params: {\n params: Partial<CompanyQueryParams>\n }): Promise<PaginatedItems<CompanySummary>> {\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 },\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 oauthClients: {\n index(): Promise<{ items: OAuthClient[] }> {\n return axios.get(\"/admin/oauth/clients\")\n },\n show(id: number): Promise<OAuthClient> {\n return axios.get(`/admin/oauth/clients/${id}`)\n },\n create(\n payload: AdminCreateOAuthClientPayload\n ): Promise<OAuthClientWithSecret> {\n return axios.post(\"/admin/oauth/clients\", payload)\n },\n update(\n id: number,\n payload: UpdateOAuthClientPayload\n ): Promise<OAuthClient> {\n return axios.patch(`/admin/oauth/clients/${id}`, payload)\n },\n delete(id: number): Promise<void> {\n return axios.delete(`/admin/oauth/clients/${id}`)\n },\n regenerateSecret(id: number): Promise<OAuthClientWithSecret> {\n return axios.post(`/admin/oauth/clients/${id}/regenerate-secret`)\n },\n },\n emailing: {\n performEmailing(template: string, params: JsonObject): Promise<void> {\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: JsonObject): Promise<void> {\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 deleteSnapshotExtraction(\n cameraId: string,\n extractionId: number,\n params: {\n type: SnapshotExtractionType\n hardDelete?: boolean\n }\n ): Promise<void> {\n return axios.delete(\n `admin/cameras/${cameraId}/extractions/${extractionId}`,\n {\n params,\n }\n )\n },\n getExtraction(\n cameraExid: string,\n extractionId: number\n ): Promise<SnapshotExtraction> {\n return axios.get(\n `admin/cameras/${cameraExid}/extractions/${extractionId}`\n )\n },\n reprocessExtraction(cameraId: string, extractionId: number): Promise<void> {\n return axios.post(\n `admin/cameras/${cameraId}/extractions/${extractionId}/reprocess`\n )\n },\n },\n anprExtractions: {\n list(cameraExid: string): Promise<{ data: AnprExtraction[] }> {\n return axios.get(`/admin/cameras/${cameraExid}/anpr/extractions`)\n },\n create(\n cameraExid: string,\n payload: AnprExtractionCreatePayload\n ): Promise<{ data: AnprExtraction }> {\n return axios.post(\n `/admin/cameras/${cameraExid}/anpr/extractions`,\n payload\n )\n },\n delete(cameraExid: string, id: number): Promise<{ message: string }> {\n return axios.delete(`/admin/cameras/${cameraExid}/anpr/extractions/${id}`)\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: JsonObject): Promise<void> {\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 }): Promise<KitMetricStatsEntry[]> {\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 updateBox(id: string, params: KitBoxCreatePayload): Promise<KitBox> {\n return axios.patch(`/admin/kit-boxes/${id}`, params)\n },\n },\n logs: {\n getAllCamerasStatusLogs(params: {\n params: CameraLogsQueryParams\n }): Promise<{ data: CameraLog[] }> {\n return axios.get(\"/admin/cameras-logs\", params)\n },\n getCameraLogs(\n cameraId: string,\n 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): Promise<Nvr> {\n return axios.post(\"/admin/nvrs\", params)\n },\n updateNvr(id: string, params: PatchPayload<Nvr>): Promise<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<AdminProjectListItem>> {\n return axios.get(\"/admin/projects\", params)\n },\n show(\n exid: string,\n params: WithZohoParams = {}\n ): Promise<{ data: AdminProjectDetail }> {\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 getProjectStorages(params: {\n params: Partial<ProjectStorageQueryParams>\n }): Promise<PaginatedItems<ProjectStorage[]>> {\n return axios.get(\"/admin/projects/storages\", params)\n },\n retryProjectStorage(id: number): Promise<{ message: string }> {\n return axios.post(`/admin/projects/storages/${id}/retry`)\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<AdminSearchItem>> {\n return axios.get(\"/admin/search\", params)\n },\n },\n hdds: {\n getHdds(payload: {\n projectId: string\n companyId: string\n }): Promise<AdminHdd[]> {\n return axios.get(\"/admin/hdds\", { params: payload })\n },\n getAllHdds(params: {\n params: Partial<HDDsQueryParams>\n }): Promise<PaginatedItems<AdminHdd>> {\n return axios.get(\"/admin/hdds\", params)\n },\n deleteHdd(hddId: number): Promise<void> {\n return axios.delete(`/admin/hdds/${hddId}`)\n },\n saveHdd(params: HDDCreateUpdatePayload): Promise<void> {\n return axios.post(\"/admin/hdds\", params)\n },\n updateHdd(hddId: number, params: HDDCreateUpdatePayload): Promise<void> {\n return axios.patch(`/admin/hdds/${hddId}`, params)\n },\n saveFootage(\n hddId: number,\n params: FootageCreateUpdatePayload\n ): Promise<void> {\n return axios.post(`/admin/hdds/${hddId}/footages`, params)\n },\n deleteFootage(hddId: number, footageId: number): Promise<void> {\n return axios.delete(`/admin/hdds/${hddId}/footages/${footageId}`)\n },\n updateFootage(\n hddId: number,\n footageId: number,\n params: FootageCreateUpdatePayload\n ): Promise<void> {\n return axios.patch(`/admin/hdds/${hddId}/footages/${footageId}`, params)\n },\n },\n shares: {\n getInvites(\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<AdminInvite>> {\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(): Promise<string[]> {\n return axios.get(\"/admin/sim-providers\")\n },\n getBillPayers(): Promise<string[]> {\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(id: number, params: WithZohoParams = {}): 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<AdminWidget>> {\n return axios.get(\"/admin/widgets\", params)\n },\n show(id: number): Promise<AdminWidgetFull> {\n return axios.get(`/admin/widgets/${id}`)\n },\n update(id: number, payload: WidgetPayload): Promise<AdminWidgetFull> {\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: JsonObject): Promise<ZohoDeskTicketSearchResponse> {\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 snapshotTransfers: {\n index(\n params: AxiosRequestConfig & {\n params: Partial<TransferCloudRecordingsQueryParams>\n }\n ): Promise<PaginatedItems<SnapshotTransfer>> {\n return axios.get(\"/admin/snapshot-transfers\", params)\n },\n cancel(id: number): Promise<SnapshotTransfer> {\n return axios.patch(`/admin/snapshot-transfers/${id}/cancel`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { type PaginatedItems } from \"@evercam/shared/types\"\nimport {\n VideoWall,\n VideoWallListParams,\n VideoWallCreateUpdatePayload,\n} from \"@evercam/api/types/videoWall\"\n\nexport const VideoWallApi = {\n list(params: VideoWallListParams = {}) {\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 _360Floor,\n _360FloorId,\n _360Marker3D,\n _360Pin,\n _360ProjectJsonResponse,\n _360ProjectListItem,\n _360Scene,\n _360SceneRoute,\n _360Walk,\n Point3D,\n DroneBimData,\n DroneImageryPlan,\n DroneMarker,\n DroneModel,\n DroneProjectData,\n DroneProjectDataPatch,\n DroneTag,\n DroneTransformPatch,\n ForgeMarker,\n ForgeProjectData,\n ForgeView,\n ItwinProjectData,\n MapView,\n PlannerListItem,\n SitePlan,\n ProjectExid,\n SiteViewCameraListItem,\n SiteViewerType,\n DroneCameraTransform,\n} from \"@evercam/api/types\"\nimport { AxiosRequestConfig } from \"axios\"\n\nexport const getFirebaseDbApi = (): string => axios.env.firebaseDbLink as string\nexport const getFirebaseStorageUrl = (): string =>\n axios.env.firebaseStorageUrl as string\nexport const getFirebaseStorageToken = (): string =>\n axios.env.firebaseStorageToken as string\nexport const getForgeTokenServerUrl = (): string =>\n axios.env.forgeTokenServerUrl as string\n\nconst firebaseRequestConfig = { skipAuth: true, preserveCasing: true }\n\nexport const _3dFirebaseApi = {\n drone: {\n getProjectInfo(projectExid: ProjectExid): Promise<DroneProjectData> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n getProjectTags(\n projectExid: ProjectExid\n ): Promise<Record<string, DroneTag>> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectExid}/transform/tags.json`,\n firebaseRequestConfig\n )\n },\n patchTags({\n projectId,\n tags,\n }: {\n projectId: ProjectExid\n tags: Record<string, DroneTag | null>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/tags.json`,\n tags,\n firebaseRequestConfig\n )\n },\n saveMarkers({\n projectId,\n markers,\n }: {\n projectId: ProjectExid\n markers: Record<string, DroneMarker>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/markers.json`,\n markers,\n firebaseRequestConfig\n )\n },\n patchTransform({\n projectId,\n data,\n }: {\n projectId: ProjectExid\n data: DroneTransformPatch\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform.json`,\n data,\n firebaseRequestConfig\n )\n },\n saveTerrainPoints({\n projectId,\n dateId,\n points,\n }: {\n projectId: ProjectExid\n dateId: string\n points: Point3D[]\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/terrainPoints/${dateId}.json`,\n points,\n firebaseRequestConfig\n )\n },\n patchImageryPlan({\n projectId,\n plan,\n }: {\n projectId: ProjectExid\n plan: Record<string, DroneImageryPlan>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/imageryPlans.json`,\n plan,\n firebaseRequestConfig\n )\n },\n deleteImageryPlan({\n projectId,\n uuid,\n }: {\n projectId: ProjectExid\n uuid: string\n }): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/imageryPlans/${uuid}.json`,\n firebaseRequestConfig\n )\n },\n saveImageryPlans({\n projectId,\n plans,\n }: {\n projectId: ProjectExid\n plans: Record<string, DroneImageryPlan>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/imageryPlans.json`,\n plans,\n firebaseRequestConfig\n )\n },\n getBlackListIds(projectId: ProjectExid): Promise<string | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/blackListIds.json`,\n firebaseRequestConfig\n )\n },\n saveBlackListIds({\n projectId,\n ids,\n }: {\n projectId: ProjectExid\n ids: string\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/blackListIds.json`,\n ids,\n firebaseRequestConfig\n )\n },\n saveModel({\n projectId,\n model,\n }: {\n projectId: ProjectExid\n model: DroneModel\n }): Promise<void> {\n const { trueIndex, ...modelData } = model\n\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/models/${trueIndex}.json`,\n modelData,\n firebaseRequestConfig\n )\n },\n saveModels({\n projectId,\n models,\n }: {\n projectId: ProjectExid\n models: DroneModel[]\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/models.json`,\n models,\n firebaseRequestConfig\n )\n },\n saveBimData({\n projectId,\n data,\n }: {\n projectId: ProjectExid\n data: DroneBimData\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/bimData.json`,\n data,\n firebaseRequestConfig\n )\n },\n getBimTransparencyFlag(projectId: ProjectExid): Promise<boolean | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/bimTransparencyFeatureFlag.json`,\n firebaseRequestConfig\n )\n },\n saveCameraTransform({\n projectId,\n isScene3D,\n transform,\n }: {\n projectId: ProjectExid\n isScene3D: boolean\n transform: Record<string, DroneCameraTransform>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/initial${\n isScene3D ? \"\" : \"2D\"\n }CameraTransform.json`,\n transform,\n firebaseRequestConfig\n )\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 ...firebaseRequestConfig,\n }\n )\n },\n getProjectsList(): Promise<_360ProjectListItem[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/360-list.json`,\n firebaseRequestConfig\n )\n },\n updateProjectsList(\n items: Record<string, _360ProjectListItem>\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/360-list.json`,\n items,\n firebaseRequestConfig\n )\n },\n updateProjectsListItem(\n index: number,\n data: _360ProjectListItem\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/360-list/${index}.json`,\n data,\n firebaseRequestConfig\n )\n },\n deleteProject(projectId: string): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/360/${projectId}.json`,\n firebaseRequestConfig\n )\n },\n updateProjectInfo(\n projectId: string,\n data: Partial<_360ProjectJsonResponse>\n ): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectId}.json`,\n data,\n firebaseRequestConfig\n )\n },\n updateFloor(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n body: Partial<_360Scene[\"floors\"][number]>\n ): Promise<_360ProjectJsonResponse> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/dates/${dateId}/floors/${floorIndex}.json`,\n body,\n firebaseRequestConfig\n )\n },\n getRoute(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string\n ): Promise<_360SceneRoute | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/${dateId}/${floorIndex}/route.json`,\n firebaseRequestConfig\n )\n },\n getAerialShotDate(\n projectId: ProjectExid,\n dateId: number\n ): Promise<string | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${encodeURIComponent(\n `${projectId}/aerial-shots/dates/`\n )}${dateId}/date.json`,\n firebaseRequestConfig\n )\n },\n getFloor({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<_360Floor> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}.json`,\n firebaseRequestConfig\n )\n },\n getAerialShotsFloor({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<_360Floor> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/aerial-shots/${dateId}/${floorId}.json`,\n firebaseRequestConfig\n )\n },\n update3DMarkers({\n projectId,\n dateId,\n floorId,\n markers,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n markers: Record<string, _360Marker3D>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}/_3DMarkers.json`,\n markers,\n firebaseRequestConfig\n )\n },\n patchFloor({\n projectId,\n dateId,\n floorId,\n data,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n data: Partial<_360Floor>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}.json`,\n data,\n firebaseRequestConfig\n )\n },\n updateFloors({\n projectId,\n dateId,\n floors,\n }: {\n projectId: ProjectExid\n dateId: number\n floors: _360Scene[\"floors\"]\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/dates/${dateId}/floors.json`,\n floors,\n firebaseRequestConfig\n )\n },\n deleteFloor({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}.json`,\n firebaseRequestConfig\n )\n },\n updateDates(projectId: ProjectExid, dates: _360Scene[]): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/dates.json`,\n dates,\n firebaseRequestConfig\n )\n },\n deleteDate(projectId: ProjectExid, dateId: number): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}.json`,\n firebaseRequestConfig\n )\n },\n getPins({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<Record<string, _360Pin>> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}/pins.json`,\n firebaseRequestConfig\n )\n },\n updatePins({\n projectId,\n dateId,\n floorId,\n pins,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n pins: Record<string, _360Pin>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}/pins.json`,\n pins,\n firebaseRequestConfig\n )\n },\n getGPXText(url: string): Promise<string> {\n if (!url) {\n return Promise.resolve(\"\")\n }\n\n return axios.get(url.replace(/token=\\s*/, \"token=\"), {\n ...firebaseRequestConfig,\n responseType: \"text\",\n })\n },\n updateRoute(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n body: Partial<_360SceneRoute>\n ): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/${dateId}/${floorIndex}/route.json`,\n body,\n firebaseRequestConfig\n )\n },\n async updateFeatureFlag(\n projectID: string,\n dateID: string,\n floorID: string,\n featureFlagName: string,\n value: boolean\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectID}/${dateID}/${floorID}/${featureFlagName}.json`,\n value,\n {\n ...firebaseRequestConfig,\n transformRequest: [(data: boolean) => JSON.stringify(data)],\n }\n )\n },\n async saveSteps(\n projectID: string,\n dateID: string,\n floorID: string,\n stepsValue: number\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectID}/${dateID}/${floorID}/steps.json`,\n stepsValue,\n firebaseRequestConfig\n )\n },\n updateGPXFile(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n gpxContent: string\n ): Promise<void> {\n const blob = new Blob([gpxContent], { type: \"application/gpx+xml\" })\n const formData = new FormData()\n formData.append(\"gpxFile\", blob, \"updated-track.gpx\")\n\n return axios.post(\n `${\n getFirebaseStorageUrl() +\n encodeURIComponent(\"/\" + projectExid + \"/\") +\n dateId +\n encodeURIComponent(\"/\" + floorIndex + \"/route/track.gpx\")\n }?alt=media&token=${getFirebaseStorageToken()}`,\n formData,\n {\n ...firebaseRequestConfig,\n headers: { \"Content-Type\": \"multipart/form-data\" },\n }\n )\n },\n getProjectDates(projectId: ProjectExid): Promise<_360Scene[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/dates.json`,\n firebaseRequestConfig\n )\n },\n getProjectAerialShotsDates(projectId: ProjectExid): Promise<_360Scene[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/aerial-shots/dates.json`,\n firebaseRequestConfig\n )\n },\n getProjectDateFloors({\n projectId,\n dateId,\n }: {\n projectId: ProjectExid\n dateId: string | number\n }): Promise<_360Walk> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}.json`,\n firebaseRequestConfig\n )\n },\n },\n forge: {\n getAccessToken(): Promise<{ access_token: string }> {\n return axios.get(getForgeTokenServerUrl(), firebaseRequestConfig)\n },\n getProjectInfo(projectExid: ProjectExid): Promise<ForgeProjectData | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/forge/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n saveSavedView(projectId: string, payload: ForgeView): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/forge/${projectId}/savedView.json`,\n payload,\n firebaseRequestConfig\n )\n },\n saveMarkers(projectId: string, markers: ForgeMarker[]): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/forge/${projectId}/markers.json`,\n markers,\n firebaseRequestConfig\n )\n },\n },\n itwin: {\n getProjectInfo(projectId: string): Promise<ItwinProjectData | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/itwin/${projectId}.json`,\n firebaseRequestConfig\n )\n },\n clearBimCompare(projectId: string): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/itwin/${projectId}/bim-compare.json`,\n firebaseRequestConfig\n )\n },\n clearSiteView(projectId: string, modelIndex: number): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/itwin/${projectId}/models/${modelIndex}/site-view.json`,\n firebaseRequestConfig\n )\n },\n },\n siteView: {\n getCamerasList(): Promise<SiteViewCameraListItem[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/cameras-list.json`,\n firebaseRequestConfig\n )\n },\n updateCamerasList(\n items: Record<number, SiteViewCameraListItem>\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/cameras-list.json`,\n items,\n firebaseRequestConfig\n )\n },\n updateCamerasListItem(\n trueIndex: number,\n item: SiteViewCameraListItem\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/cameras-list/${trueIndex}.json`,\n item,\n firebaseRequestConfig\n )\n },\n updateProjectData({\n viewerType,\n projectId,\n data,\n }: {\n viewerType: SiteViewerType\n projectId: ProjectExid\n data: ForgeProjectData | ItwinProjectData | DroneProjectDataPatch\n }): Promise<void> {\n const viewerPath = viewerType.toLowerCase()\n\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/${viewerPath}/${projectId}.json`,\n data,\n firebaseRequestConfig\n )\n },\n deleteProjectData(\n viewerType: SiteViewerType,\n projectId: ProjectExid\n ): Promise<void> {\n const viewerPath = viewerType.toLowerCase()\n\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/${viewerPath}/${projectId}.json`,\n firebaseRequestConfig\n )\n },\n readAllData(dbLink: string): Promise<Record<string, unknown>> {\n return axios.get(`${dbLink}data.json`, firebaseRequestConfig)\n },\n writeAllData(dbLink: string, data: Record<string, unknown>): Promise<void> {\n return axios.put(`${dbLink}data.json`, data, firebaseRequestConfig)\n },\n },\n map: {\n getMapViews(projectExid: ProjectExid): Promise<MapView[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/maps/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n updateMapViews(\n projectExid: ProjectExid,\n mapViews: Record<string, MapView>\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/maps/${projectExid}.json`,\n mapViews,\n firebaseRequestConfig\n )\n },\n },\n safety: {\n getTPulseLink(projectExid: ProjectExid): Promise<{ link?: string } | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/safety/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n updateTPulseLink(projectExid: ProjectExid, link: string): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/safety/${projectExid}.json`,\n { link },\n firebaseRequestConfig\n )\n },\n },\n planner: {\n getPlannerList(): Promise<Record<string, PlannerListItem>> {\n return axios.get(`${getFirebaseDbApi()}data/planner-list.json`, {\n ...firebaseRequestConfig,\n })\n },\n getPlannerItem(sitePlanId: string): Promise<PlannerListItem | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/planner-list/${sitePlanId}.json`,\n firebaseRequestConfig\n )\n },\n saveSitePlanMetaData(\n sitePlanId: string,\n payload: PlannerListItem\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/planner-list/${sitePlanId}.json`,\n payload,\n firebaseRequestConfig\n )\n },\n getSitePlan(sitePlanId: string): Promise<SitePlan | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/planner/${sitePlanId}.json`,\n firebaseRequestConfig\n )\n },\n saveSitePlan(sitePlanId: string, payload: SitePlan): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/planner/${sitePlanId}.json`,\n payload,\n firebaseRequestConfig\n )\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 \"@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 RoisQueryParams,\n GateReportRoiRequestPayload,\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 SmartSearchHeatmapData,\n SmartSearchOperatorType,\n DetectionLabel,\n SmartSearchResponse,\n SmartSearchRequestPayload,\n LegacyAnprExportParams,\n AnprBulkUpdateRequestPayload,\n AnprUpdateRequestPayload,\n SmartSearchQueriesRequestPayload,\n _360FloorId,\n CreateCoolifyAppRequestPayload,\n RegisterCoolifyAppResponsePayload,\n SaveCoolifyAppRequestPayload,\n SegmentsCountsParams,\n SegmentsPresenceResponse,\n AiPrompt,\n AiPromptCreatePayload,\n AiPromptCreateResponse,\n AiPromptDeleteResponse,\n AiPromptListResponse,\n AiPromptQueryParams,\n AiPromptUpdatePayload,\n AiPromptUpdateResponse,\n AiApiKey,\n AiApiKeyCreatePayload,\n AiApiKeyCreateResponse,\n AiApiKeyDeleteResponse,\n AiApiKeyQueryParams,\n AiApiKeyUpdatePayload,\n AiApiKeyUpdateResponse,\n APIEnvelope,\n AppActionResponse,\n AppRuntimeState,\n CoolifyProjectOption,\n CoolifyServerOption,\n CreateGateReportAppPayload,\n CreateGateReportAppResponse,\n GateReportAppEvents,\n GateReportManagedApp,\n GateReportManagementListParams,\n UpdateGateReportAppPayload,\n} from \"@evercam/api/types\"\nimport type { AxiosPromise, AxiosRequestConfig } from \"axios\"\n\nexport const getAiApiUrl = (): string => axios.env.aiApiUrl!\nexport const getAiApiUrlV2 = (): string => `${axios.env.aiApiUrl}/v2`\n\nexport const AiApi = {\n anpr: {\n exportAnprLegacyEvents(\n projectExid: ProjectExid,\n params: LegacyAnprExportParams\n ) {\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 `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/anpr/counts?${toQueryString(\n payload\n )}`,\n extraParams\n )\n },\n updateAnprEvent(anprEventId: string, payload: AnprUpdateRequestPayload) {\n return axios.patch(`${getAiApiUrlV2()}/anpr/${anprEventId}`, payload)\n },\n bulkUpdateAnprRecords(\n payload: AnprBulkUpdateRequestPayload\n ): Promise<void> {\n return axios.patch(`${getAiApiUrlV2()}/anpr/status`, payload)\n },\n exportAnprEvents(\n projectExid: string,\n params: AnprBasedGateReportExportRequestParams\n ): AxiosPromise<string> {\n return axios({\n url: `${getAiApiUrlV2()}/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: `${getAiApiUrlV2()}/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: string) {\n return axios.post(\n `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/gate-report/verified-days?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n verifyDay(params: VerifyDayUpdateRequestPayload) {\n return axios.post(\n `${getAiApiUrlV2()}/projects/gate-report/verified-days`,\n params\n )\n },\n getDailyStatus(\n projectExid: string,\n params: Partial<ProcessedDaysQueryParams> = {}\n ): Promise<string[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/gate-report/processed-days`,\n { params }\n )\n },\n getEvents(\n projectExid: ProjectExid,\n params: GatReportRequestPayload,\n extraParams: AxiosRequestConfig = {}\n ): Promise<GateReportResponsePayload> {\n return axios.get(\n `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/gate-report/counts?${toQueryString(\n payload\n )}`,\n extraParams\n )\n },\n getGateReportProjectsInfos(params: Record<string, unknown>) {\n return axios.get(`${getAiApiUrlV2()}/projects/gate-report/info`, params)\n },\n },\n brainTool: {\n getObjectDetectionsResults(payload = {}) {\n return axios.post(\n `${getAiApiUrlV2()}/ai-models/object-detection`,\n payload\n )\n },\n },\n roi: {\n getROIs(\n projectExid: string,\n params: Partial<RoisQueryParams> = {}\n ): Promise<GateReportROI[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/rois?${toQueryString(\n params\n )}`\n )\n },\n createROI(\n params: Omit<GateReportRoiRequestPayload, \"id\"> & { createdBy?: string }\n ) {\n return axios.post(`${getAiApiUrlV2()}/rois`, params)\n },\n updateROI({\n updatedBy,\n id,\n ...params\n }: Partial<GateReportRoiRequestPayload> & { updatedBy?: string }) {\n return axios.patch(\n `${getAiApiUrlV2()}/rois/${id}?${toQueryString({\n updatedBy,\n })}`,\n params\n )\n },\n deleteROI({ id, updatedBy }: { id: number; updatedBy: string }) {\n return axios.patch(\n `${getAiApiUrlV2()}/rois/${id}?${toQueryString({\n updatedBy,\n })}`,\n { isActive: false, note: \"delete roi\" }\n )\n },\n },\n detections: {\n async getDetectionsCounts(\n { projectExid, ...params }: Partial<DetectionsRequestParams>,\n extraParams: AxiosRequestConfig = {}\n ): Promise<DetectionsCountsByPeriod> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/trackings/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 `${getAiApiUrlV2()}/projects/${projectExid}/trackings/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 `${getAiApiUrlV2()}/cameras/${cameraExid}/segments/appearance-from-points`,\n {\n params: {\n cameraExid,\n iouThreshold,\n ...params,\n },\n }\n )\n },\n async getGroupedTrackings(\n projectExid: ProjectExid,\n params: DetectionsFilters\n ): Promise<TrackingsByLabel> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/trackings/grouped?${toQueryString(\n params\n )}`\n )\n },\n async getSegmentsMasks(\n cameraExid: CameraExid,\n params: SegmentsFilters\n ): Promise<{ segments: SegmentsByLabel }> {\n return axios.get(\n `${getAiApiUrlV2()}/cameras/${cameraExid}/segments/masks`,\n {\n params,\n }\n )\n },\n async getSegmentsPresenceDateIntervals({\n cameraExid,\n ...params\n }: SegmentsCountsParams): Promise<SegmentsPresenceResponse> {\n return axios.get(\n `${getAiApiUrlV2()}/cameras/${cameraExid}/segments/presence-intervals?${toQueryString(\n params\n )}`\n )\n },\n async getDetectionsPresenceDateIntervals({\n projectExid,\n ...params\n }: DetectionsCountsParams): Promise<DetectionsPresenceByLabel> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/trackings/presence-intervals?${toQueryString(\n params\n )}`\n )\n },\n async requestExport({\n projectExid,\n ...params\n }: DetectionsExportRequestParams) {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/detections/timestamps/export?${toQueryString(\n params\n )}`,\n { responseType: \"blob\" }\n )\n },\n },\n siteAnalytics: {\n smartSearchAll(\n projectExid: ProjectExid,\n params: SmartSearchRequestPayload\n ): Promise<SmartSearchResponse> {\n const { payload, ...restParams } = params\n const queryParams = {\n page: 1,\n limit: 20,\n ...restParams,\n }\n\n let url = `${getAiApiUrlV2()}/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 limit: 20,\n ...restParams,\n }\n\n let url = `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/first-last-seen?${toQueryString(\n queryParams\n )}`\n\n return axios.post(url, payload)\n },\n saveQuery({\n projectExid,\n cameraExid,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid | _360FloorId\n payload: SmartSearchBackendQueryPayload\n }) {\n return axios.post(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/smart-search/queries`,\n payload\n )\n },\n getQueries(\n projectExid: ProjectExid,\n params: SmartSearchQueriesRequestPayload\n ): Promise<SavedQuery[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/queries?${toQueryString(\n params\n )}`\n )\n },\n getQueryById(\n projectExid: ProjectExid,\n cameraExid: CameraExid,\n queryId: number\n ): Promise<SmartSearchBackendQueryPayload> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/queries/${queryId}?${toQueryString(\n { cameraExid }\n )}`\n )\n },\n updateQuery({\n projectExid,\n cameraExid,\n queryId,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n queryId: number\n payload: Partial<SavedQuery>\n }) {\n return axios.patch(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/smart-search/queries/${queryId}`,\n payload\n )\n },\n deleteQuery({\n projectExid,\n cameraExid,\n queryId,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n queryId: number\n }) {\n return axios.delete(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/smart-search/queries/${queryId}`,\n {}\n )\n },\n exportResultsData({\n projectExid,\n cameraExids,\n fromDate,\n toDate,\n query,\n fileType = DownloadFileType.Csv,\n directDownload = true,\n payload,\n limit,\n page,\n }: {\n projectExid: ProjectExid\n cameraExids: CameraExid[]\n fromDate?: DateType\n toDate?: DateType\n query: string\n fileType: DownloadFileType\n directDownload?: boolean\n payload: SmartSearchBackendQuery\n limit: number\n page: number\n }): Promise<any> {\n return axios.post(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/export?${toQueryString(\n {\n cameraExids,\n fromDate,\n toDate,\n query,\n fileType,\n directDownload,\n limit,\n page,\n }\n )}`,\n payload,\n {\n responseType: \"blob\",\n }\n )\n },\n getDetectionsHeatmapData(\n projectExid: ProjectExid,\n params: {\n cameraExid: CameraExid\n fromDate: DateType | string | null\n toDate: DateType | string | null\n labels: DetectionLabel[]\n operator?: SmartSearchOperatorType\n }\n ): Promise<SmartSearchHeatmapData[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/heatmap?${toQueryString(\n params\n )}`,\n {}\n )\n },\n },\n coolify: {\n getCoolifyServers() {\n return axios.get(`${getAiApiUrlV2()}/coolify/servers`)\n },\n createAppOnCoolify({\n projectExid,\n cameraExid,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n payload: CreateCoolifyAppRequestPayload\n }) {\n return axios.post(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/anpr/apps`,\n payload\n )\n },\n registerCoolifyApp({\n projectExid,\n cameraExid,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n payload: SaveCoolifyAppRequestPayload\n }): Promise<RegisterCoolifyAppResponsePayload> {\n return axios.post(\n `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/gate-report/apps/${appId}?app_uuid=${appUuid}`\n )\n },\n startService(serviceId: string) {\n return axios.post(\n `${getAiApiUrlV2()}/coolify/services/${serviceId}/start`\n )\n },\n pauseService(serviceId: string) {\n return axios.post(`${getAiApiUrlV2()}/coolify/services/${serviceId}/stop`)\n },\n restartService(serviceId: string) {\n return axios.post(\n `${getAiApiUrlV2()}/coolify/services/${serviceId}/restart`\n )\n },\n },\n fovChanges: {\n getCameraFovChanges(\n cameraExid: string,\n extraConfig: AxiosRequestConfig = {}\n ) {\n return axios.post(\n `${getAiApiUrlV2()}/cameras/${cameraExid}/fov_changes`,\n {},\n extraConfig\n )\n },\n },\n prompts: {\n list(params: AiPromptQueryParams = {}): Promise<AiPromptListResponse> {\n return axios.get(`${getAiApiUrlV2()}/prompts?${toQueryString(params)}`)\n },\n get(promptId: number): Promise<AiPrompt> {\n return axios.get(`${getAiApiUrlV2()}/prompts/${promptId}`)\n },\n create(payload: AiPromptCreatePayload): Promise<AiPromptCreateResponse> {\n return axios.post(`${getAiApiUrlV2()}/prompts`, payload)\n },\n update(\n promptId: number,\n payload: AiPromptUpdatePayload\n ): Promise<AiPromptUpdateResponse> {\n return axios.patch(`${getAiApiUrlV2()}/prompts/${promptId}`, payload)\n },\n delete(promptId: number): Promise<AiPromptDeleteResponse> {\n return axios.delete(`${getAiApiUrlV2()}/prompts/${promptId}`)\n },\n },\n apiKeys: {\n list(params: AiApiKeyQueryParams = {}): Promise<AiApiKey[]> {\n const query = toQueryString(params)\n\n return axios.get(`${getAiApiUrlV2()}/api-keys${query ? `?${query}` : \"\"}`)\n },\n purposes(): Promise<string[]> {\n return axios.get(`${getAiApiUrlV2()}/api-keys/purposes`)\n },\n get(keyId: number): Promise<AiApiKey> {\n return axios.get(`${getAiApiUrlV2()}/api-keys/${keyId}`)\n },\n create(payload: AiApiKeyCreatePayload): Promise<AiApiKeyCreateResponse> {\n return axios.post(`${getAiApiUrlV2()}/api-keys`, payload)\n },\n update(\n keyId: number,\n payload: AiApiKeyUpdatePayload\n ): Promise<AiApiKeyUpdateResponse> {\n return axios.patch(`${getAiApiUrlV2()}/api-keys/${keyId}`, payload)\n },\n delete(\n keyId: number,\n revoke: boolean = false\n ): Promise<AiApiKeyDeleteResponse> {\n const query = revoke ? \"?revoke=true\" : \"\"\n\n return axios.delete(`${getAiApiUrlV2()}/api-keys/${keyId}${query}`)\n },\n },\n gateReportManagement: {\n listApps(\n params: GateReportManagementListParams = {}\n ): Promise<PaginatedItems<GateReportManagedApp>> {\n return axios.get(\n `${getAiApiUrlV2()}/gate-report/apps?${toQueryString(\n params as Record<string, unknown>\n )}`\n )\n },\n getApp(\n projectExid: ProjectExid,\n cameraExid: CameraExid\n ): Promise<APIEnvelope<GateReportManagedApp>> {\n return axios.get(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}`\n )\n },\n listAppEvents(\n projectExid?: ProjectExid\n ): Promise<APIEnvelope<GateReportAppEvents[]>> {\n return axios.get(\n `${getAiApiUrlV2()}/gate-report/apps/last-event-status?${toQueryString({\n projectExid,\n } as Record<string, unknown>)}`\n )\n },\n createApp(\n payload: CreateGateReportAppPayload\n ): Promise<CreateGateReportAppResponse> {\n return axios.post(`${getAiApiUrlV2()}/gate-report/apps`, payload)\n },\n updateApp(\n projectExid: ProjectExid,\n cameraExid: CameraExid,\n payload: UpdateGateReportAppPayload\n ): Promise<APIEnvelope<GateReportManagedApp>> {\n return axios.patch(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}`,\n payload\n )\n },\n deleteApp(\n projectExid: ProjectExid,\n cameraExid: CameraExid\n ): Promise<{ deleted: boolean; count: number; message: string }> {\n return axios.delete(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}`\n )\n },\n setAppState(\n projectExid: ProjectExid,\n cameraExid: CameraExid,\n state: AppRuntimeState\n ): Promise<APIEnvelope<AppActionResponse>> {\n return axios.patch(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}/state`,\n { state }\n )\n },\n listCoolifyProjects(): Promise<APIEnvelope<CoolifyProjectOption[]>> {\n return axios.get(`${getAiApiUrlV2()}/gate-report/coolify-projects`)\n },\n listCoolifyServers(): Promise<APIEnvelope<CoolifyServerOption[]>> {\n return axios.get(`${getAiApiUrlV2()}/gate-report/coolify-servers`)\n },\n listImageTags(): Promise<APIEnvelope<string[]>> {\n return axios.get(`${getAiApiUrlV2()}/gate-report/image-tags`)\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 WeatherReportRequestPayload,\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: WeatherReportRequestPayload,\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 FeedbackPayload,\n GrafanaKitMetrics,\n LabsPaginationParams,\n LuminanceReading,\n PaginatedItems,\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 type { SwrRequestConfig } 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`, 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({\n conversationId,\n messageId,\n ...params\n }: FeedbackPayload) {\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: SwrRequestConfig<SiteAnalyticsProcessingStatus[]> = {}\n ): Promise<SiteAnalyticsProcessingStatus[]> {\n return axios.get(`${getLabsBaseUrl()}/site-analytics/processing-status`, {\n params,\n ...config,\n preserveCasing: true,\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 {\n Automation,\n GeoJSONPolygon,\n ProgressPhotoItemResponsePayload,\n Project,\n SwrRequestConfig,\n UserFeatureFlag,\n} from \"@evercam/api/types\"\nimport type {\n AconexAuthCallbackParams,\n AconexEditedImageUploadRequestPayload,\n AconexUserProject,\n AconexDocumentSchema,\n AconexDocumentTypeSchema,\n ApiCredentials,\n AutodeskFolder,\n AutodeskProject,\n AutodeskTokenResponsePayload,\n AutodeskSnapshot,\n AutodeskUserHub,\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 CompanyCameraSummary,\n CompanyProject,\n CompanyKit,\n CompanySummary,\n CompanyUser,\n Compare,\n CompareRequestPayload,\n ConnectorResponsePayload,\n Credentials,\n FetchCameraQueryParams,\n GoogleAuthRequestPayload,\n LoginRequestPayload,\n User,\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 ProcoreObservationDefaultList,\n ProcoreObservationListItem,\n ProcoreCustomFieldOptionsRequestPayload,\n ProgressPhotosCreateUpdateRequestPayload,\n ProgressPhotosResponsePayload,\n ProgressPhotosUnSubscribeParams,\n ProjectBatteryReading,\n ProjectCreateResponse,\n ProjectExid,\n ProjectLogoResponsePayload,\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 RingDevicesResponsePayload,\n RingImportDevicesPayload,\n RingImportResponsePayload,\n RingMoveDevicePayload,\n RingMoveDeviceResponsePayload,\n RingLiveViewPayload,\n RingLiveViewResponse,\n RingStopLiveViewResponse,\n AuthOptionsResponsePayload,\n AuthProviderConfigPayload,\n ConfirmUserRequestPayload,\n DeleteActiveSessionRequestPayload,\n ProjectContactsResponsePayload,\n XWeatherCreatePayload,\n XWeatherResponse,\n Widget,\n WidgetFull,\n WidgetPayload,\n WidgetSessionSettingsPayload,\n WidgetsListRequestPayload,\n Camera,\n ProcoreNextObservationAvailableNumber,\n OAuthClient,\n OAuthClientWithSecret,\n OAuthConsentInfo,\n OAuthConsentPayload,\n OAuthConsentResponse,\n CreateOAuthClientPayload,\n UpdateOAuthClientPayload,\n PaginationParams,\n StoryblokResponse,\n Notification,\n PlaceholderThumbnailData,\n ProjectUsersResponsePayload,\n ProjectMember,\n SnapshotEmailDeliveryRequestPayload,\n SnapshotEmailDeliveryResponsePayload,\n} from \"@evercam/api/types\"\n\nexport const EvercamApi = {\n apiStatus: {\n getApiStatus(): Promise<void> {\n return axios.get(\"/status\")\n },\n },\n users: {\n signup(payload: SignupUserRequestPayload): Promise<User> {\n return axios.post(\"/users\", payload)\n },\n zohoAuthUrl(payload: {\n firstname: string\n lastname: string\n }): Promise<{ url: string }> {\n return axios.post(\"/support/zoho-auth-url\", payload)\n },\n fetchAccessFeatures(\n email: string\n ): Promise<{ features: UserFeatureFlag[] }> {\n return axios.get(`/users/${email}/features`)\n },\n impersonationLogin(token: string): Promise<User> {\n return axios.post(`/auth/impersonate/${token}`)\n },\n fetchLoginOptions(email: string): Promise<AuthOptionsResponsePayload> {\n return axios.get(`/auth/options?email=${email}`)\n },\n fetchSignupOptions(email: string): Promise<AuthOptionsResponsePayload> {\n const url = \"/auth/signup_options\" + (email ? `?email=${email}` : \"\")\n\n return axios.get(url)\n },\n fetchProviderConfig(provider: string): Promise<AuthProviderConfigPayload> {\n return axios.get(`/auth/provider/${provider}`)\n },\n login(params: LoginRequestPayload): Promise<User> {\n return axios.post(\"/auth/login\", toQueryString(params))\n },\n loginWithApiCredentials(apiId: string, apiKey: string): Promise<User> {\n return axios.post(`/auth/login?api_id=${apiId}&api_key=${apiKey}`)\n },\n loginWithWidgetCredentials(\n widgetId: string,\n widgetKey: string\n ): Promise<User> {\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<User> {\n return axios.post(`/auth/${provider}`, payload)\n },\n show(email: string): Promise<{ users: User[] }> {\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: ConfirmUserRequestPayload): Promise<User> {\n return axios.post(`/users/${email}/confirm`, payload)\n },\n deleteActiveSession(\n sessionId: string,\n payload: DeleteActiveSessionRequestPayload\n ): 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: User[] }> {\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(\n projectExid: ProjectExid\n ): Promise<ProjectContactsResponsePayload> {\n return axios.get(`/projects/${projectExid}/contacts`)\n },\n },\n notifications: {\n get(): Promise<PaginatedItems<Notification>> {\n return axios.get(\"/notifications\")\n },\n markAllAsRead(): Promise<{ message: string }> {\n return axios.post(\"/notifications/mark-as-read\")\n },\n markAsRead(id: number): Promise<Notification> {\n return axios.patch(`/notifications/${id}`)\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?: SwrRequestConfig<CamerasResponsePayload>\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: Partial<CameraUpdateRequestPayload>\n ): Promise<CamerasResponsePayload> {\n return axios.patch(`/cameras/${exid}`, params)\n },\n },\n projects: {\n index(\n {\n params,\n config,\n }: {\n params?: ApiCredentials\n config?: SwrRequestConfig<Project[]>\n } = { params: {}, config: {} }\n ): Promise<Project[]> {\n return axios.get(`/projects?${toQueryString(params)}`, config)\n },\n create(params: {\n name: string\n }): Promise<{ project: ProjectCreateResponse }> {\n return axios.post(\"/projects\", params)\n },\n getLogos(projectId: string): Promise<ProjectLogoResponsePayload> {\n return axios.get(`/projects/${projectId}/logos`)\n },\n createLogo(projectId: string, formData: FormData): Promise<Logo> {\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): Promise<Logo> {\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 ): Promise<void> {\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(\n projectExid: string\n ): Promise<PlaceholderThumbnailData> {\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): Promise<ProjectUsersResponsePayload> {\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(): Promise<ProjectMember[]> {\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<AconexUserProject[]> {\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<AconexDocumentSchema[]> {\n return axios.get(`/aconex/projects/${projectId}/register/schema`)\n },\n getDocumentTypeSchema(\n projectId: number,\n documentTypeId: string\n ): Promise<AconexDocumentTypeSchema[]> {\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<ProcoreObservationDefaultList> {\n return axios.get(\"/procore/companies/contributing-behaviors\", {\n params: payload,\n })\n },\n getContributingConditions(\n payload: ProcoreCompanyRequestPayload\n ): Promise<ProcoreObservationDefaultList> {\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<ProcoreObservationDefaultList> {\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: ProcoreCustomFieldOptionsRequestPayload\n ): Promise<Array<ProcoreObservationListItem>> {\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<AutodeskUserHub[]> {\n return axios.get(\"/autodesk/hubs\")\n },\n getProjects(hubId: string): Promise<AutodeskProject[]> {\n return axios.get(`/autodesk/hubs/${hubId}/projects`)\n },\n getFolders(\n hubId: string,\n projectId: string\n ): Promise<Array<AutodeskFolder>> {\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<AutodeskFolder>> {\n return axios.get(\n `/autodesk/projects/${projectId}/folders/${parentFolderId}/subfolders`,\n {\n params: {\n getDerivatives,\n },\n }\n )\n },\n getFolder(projectId: string, folderId: string): Promise<AutodeskFolder> {\n return axios.get(`/autodesk/projects/${projectId}/folders/${folderId}`)\n },\n uploadEditedSnapshot(payload: AutodeskSnapshot): 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<void> {\n return axios.post(\"/voyage-control/auth/connect\", payload)\n },\n sendRevoke(): Promise<void> {\n return axios.post(\"/voyage-control/auth/revoke\")\n },\n },\n ring: {\n authenticate(payload: { code: string }): Promise<void> {\n return axios.post(\"/ring/callback\", payload)\n },\n getDevices(): Promise<RingDevicesResponsePayload> {\n return axios.get(\"/ring/devices\")\n },\n importDevices(\n payload: RingImportDevicesPayload\n ): Promise<RingImportResponsePayload> {\n return axios.post(\"/ring/devices/import\", payload)\n },\n moveDevice(\n cameraExid: string,\n payload: RingMoveDevicePayload\n ): Promise<RingMoveDeviceResponsePayload> {\n return axios.patch(`/ring/devices/${cameraExid}/move`, payload)\n },\n deleteDevice(\n cameraExid: string\n ): Promise<{ status: string; cameraExid: string }> {\n return axios.delete(`/ring/devices/${cameraExid}`)\n },\n disconnect(): Promise<void> {\n return axios.post(\"/ring/disconnect\")\n },\n startLiveView(\n cameraExid: string,\n payload: RingLiveViewPayload\n ): Promise<RingLiveViewResponse> {\n return axios.post(`/ring/devices/${cameraExid}/live`, payload)\n },\n stopLiveView(\n cameraExid: string,\n sessionId: string\n ): Promise<RingStopLiveViewResponse> {\n return axios.delete(`/ring/devices/${cameraExid}/live/${sessionId}`)\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<void> {\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 cancelToken,\n }: AvailableDaysRequestPayload): Promise<AvailableDaysResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${year}/${month}/days`,\n {\n params: payload,\n cancelToken,\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 extraParams?: AxiosRequestConfig\n ): Promise<SnapshotRangeResponsePayload> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots`, {\n params: payload,\n ...(extraParams || {}),\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<ProgressPhotoItemResponsePayload> {\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 | number,\n payload: ProgressPhotosCreateUpdateRequestPayload\n ): Promise<Automation> {\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: FormData | MediaCreateRequestPayload,\n onUploadProgress: (progressEvent: any) => void = (_event) => {}\n ): Promise<Media> {\n return axios.post(`/projects/${projectExid}/media-hub`, payload, {\n onUploadProgress,\n timeout: 7200000,\n })\n },\n cUpdate(\n projectExid: string,\n id: string,\n payload: MediaUpdateRequestPayload\n ): Promise<Media> {\n return axios.patch(`/projects/${projectExid}/media-hub/${id}`, payload)\n },\n cDelete(projectExid: string, id: string): 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: { with_zoho?: boolean } = {}\n ): Promise<CompanySummary> {\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(\n params: PaginationParams | { params: PaginationParams }\n ): Promise<PaginatedItems<CompanyCameraSummary>> {\n const config = \"params\" in params ? params : { params }\n\n return axios.get(\"/company/cameras\", config)\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: AxiosRequestConfig = {}\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: ApiCredentials\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?: ApiCredentials\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: {\n route: string\n params: string\n }): Promise<StoryblokResponse> {\n return axios.get(\"/proxy/storyblok\", { params })\n },\n },\n snapshots: {\n deliverViaEmail(\n projectExid: string,\n payload: SnapshotEmailDeliveryRequestPayload\n ): Promise<SnapshotEmailDeliveryResponsePayload> {\n return axios.post(\n `/projects/${projectExid}/snapshots/deliver/email`,\n payload\n )\n },\n },\n mailing: {\n unsubscribe(params: { key: string }): Promise<void> {\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(\n params: WidgetSessionSettingsPayload\n ): 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): Promise<void> {\n return axios.delete(`/widgets/${id}`)\n },\n },\n developerApps: {\n index(): Promise<{ items: OAuthClient[] }> {\n return axios.get(\"/developer/apps\")\n },\n show(clientId: string): Promise<OAuthClient> {\n return axios.get(`/developer/apps/${clientId}`)\n },\n create(payload: CreateOAuthClientPayload): Promise<OAuthClientWithSecret> {\n return axios.post(\"/developer/apps\", payload)\n },\n update(\n clientId: string,\n payload: UpdateOAuthClientPayload\n ): Promise<OAuthClient> {\n return axios.patch(`/developer/apps/${clientId}`, payload)\n },\n delete(clientId: string): Promise<void> {\n return axios.delete(`/developer/apps/${clientId}`)\n },\n regenerateSecret(clientId: string): Promise<OAuthClientWithSecret> {\n return axios.post(`/developer/apps/${clientId}/regenerate-secret`)\n },\n },\n oauth: {\n getClientInfo(clientId: string, scope: string): Promise<OAuthConsentInfo> {\n return axios.get(\"/oauth/client-info\", {\n params: { client_id: clientId, scope },\n })\n },\n submitConsent(payload: OAuthConsentPayload): Promise<OAuthConsentResponse> {\n return axios.post(\"/oauth/consent\", payload)\n },\n },\n zoho: {\n getDealLocation(\n dealId: string\n ): Promise<{ geographicBounds: GeoJSONPolygon | null }> {\n return axios.get(`/zoho/deals/${dealId}/location`)\n },\n updateDealLocation(\n dealId: string,\n payload: { geographicBounds: GeoJSONPolygon }\n ): Promise<void> {\n return axios.post(`/zoho/deals/${dealId}/location`, payload)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { MoveParams, ZoomParams } from \"@evercam/api/types\"\n\nexport const PtzApi = {\n presets: {\n index({\n cameraExid,\n }: {\n cameraExid: string\n }): Promise<{ presets: Array<{ name: string; token: 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 { SwrRequestConfig } from \"@evercam/api/types\"\nimport type {\n _360AssetsQueryParams,\n _360AssetsRequestPayload,\n _360QueueQueryParams,\n _360AssetsUploadPayload,\n _360AssetsResponse,\n _360AssetsCountsResponse,\n _360QueueResponse,\n _360FloorsResponse,\n DroneQueueResponse,\n DroneUploadsResponse,\n IngestUploadInitResponse,\n BimUploadsResponse,\n MobileAssetsQueryParams,\n MobileCaptureAssetsResponse,\n BimUploadPayload,\n BimUploadsQueryParams,\n CalculateMeasuringOperationRequestPayload,\n DrawingsRequestPayload,\n DronesQueryParams,\n DroneUploadUpdateRequestPayload,\n FlightImagesQueryParams,\n Generate360MapRequestPayload,\n GenerateFloorPayload,\n InspectionToolRequestPayload,\n JsonObject,\n _360WalkV2,\n _360FloorV2,\n} from \"@evercam/api/types\"\nimport { IngestVersions, IngestTypes } from \"@evercam/api/types\"\n\nexport const getIngestApiUrls = (type: string): string[] => {\n if (type === IngestTypes.Drone) {\n return (axios.env.ingestDroneApi || \"\").split(\";\")\n }\n if (type === IngestTypes.ThreeSixty) {\n return (axios.env.ingest360Api || \"\").split(\";\")\n }\n\n return []\n}\n\nexport const IngestApi = {\n drone: {\n createUpload(\n projectId: string,\n params: { uploadedBy: string }\n ): Promise<IngestUploadInitResponse> {\n return axios.post(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/${projectId}/upload`,\n null,\n { params }\n )\n },\n async reprocessDrone(id: number, params: JsonObject = {}): Promise<void> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.Drone\n )\n\n return axios.post(`${ingestUrl}/drone/${id}/reprocess`, null, { params })\n },\n getDrones(params: {\n params: Partial<DronesQueryParams>\n }): Promise<DroneUploadsResponse> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/uploads/`,\n params\n )\n },\n getArchive(id: number, params: { dataType: string }): Promise<Blob> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/uploads/archive/${id}`,\n {\n params,\n }\n )\n },\n deleteUpload(id: number): Promise<void> {\n return axios.delete(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/uploads/${id}`\n )\n },\n prepareForUpload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n }\n ): Promise<void> {\n return axios.put(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/${projectId}/prepare-upload`,\n null,\n { params }\n )\n },\n async upload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n },\n payload: DroneUploadUpdateRequestPayload\n ): Promise<void> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.Drone\n )\n\n return axios.put(`${ingestUrl}/drone/${projectId}/upload`, payload, {\n params,\n })\n },\n verifyToken(\n projectId: string,\n params: { token: string }\n ): Promise<JsonObject> {\n return axios.get(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/uploads/${projectId}/verify`,\n {\n params: { token: params.token },\n }\n )\n },\n calculateMeasuringOperation(\n projectId: string,\n params: CalculateMeasuringOperationRequestPayload,\n ingestUrl: string = getIngestApiUrls(IngestTypes.Drone)[0]\n ): Promise<JsonObject> {\n return axios.post(\n `${ingestUrl}/drone/api/${projectId}/calculate-measuring-operation`,\n params\n )\n },\n inspectionTool(\n projectId: string,\n params: InspectionToolRequestPayload\n ): Promise<JsonObject> {\n return axios.post(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/api/${projectId}/inspection-tool`,\n params\n )\n },\n isInspectionEnabled(\n projectId: string,\n params: JsonObject = {}\n ): Promise<JsonObject> {\n return axios.post(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/api/${projectId}/inspection-enabled`,\n null,\n { params }\n )\n },\n getDroneQueueSize(droneUrl: string): Promise<DroneQueueResponse> {\n return axios.get(`${droneUrl}/drone/queue`)\n },\n getFlightImages(\n projectId: string,\n params: FlightImagesQueryParams\n ): Promise<JsonObject> {\n return axios.get(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/api/${projectId}/flight-images`,\n {\n params,\n }\n )\n },\n async checkFlightAvailableFeatures(\n projectId: string,\n params: JsonObject\n ): Promise<JsonObject> {\n const urls = getIngestApiUrls(IngestTypes.Drone)\n\n const responses = await Promise.all(\n urls.map(async (url) => {\n try {\n const result = (await axios.get(\n `${url}/drone/api/${projectId}/flight-available-features`,\n { params }\n )) as unknown as JsonObject\n\n return { ...result, ingestUrl: url }\n } catch {\n return null\n }\n })\n )\n\n const validResponses = responses.filter(Boolean)\n const withDem = validResponses.find((r) => (r as any).isVolumeToolEnabled)\n\n return (withDem ?? validResponses[0] ?? {}) as JsonObject\n },\n },\n assets360: {\n get360Assets(params: {\n params: Partial<_360AssetsQueryParams>\n }): Promise<_360AssetsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/assets/`, params)\n },\n get360AssetsCounts(\n projectId: string,\n params: { uploadedBy: string }\n ): Promise<_360AssetsCountsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/assets/${projectId}/counts`, {\n params,\n })\n },\n get360AssetLink(\n projectId: string,\n date: string,\n floor: string,\n assetType: string,\n drawingId: string,\n marker: string | null\n ): Promise<string> {\n return axios.get(\n `${\n getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n }/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 ): Promise<_360WalkV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.put(`${ingestUrl}/360/assets/${id}`, payload)\n },\n update360ByProjectDateName(\n projectId: string,\n date: string,\n floor: string,\n payload: _360AssetsRequestPayload\n ): Promise<_360WalkV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.put(\n `${ingestUrl}/360/assets/${projectId}/${date}/${floor}`,\n payload\n )\n },\n deleteUpload(id: number): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.delete(`${ingestUrl}/360/assets/${id}`)\n },\n getArchive(id: number, params: { dateType: string }): Promise<Blob> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/assets/archive/${id}`, {\n params,\n })\n },\n createUpload(\n projectId: string,\n params: _360AssetsRequestPayload\n ): Promise<IngestUploadInitResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(`${ingestUrl}/360/${projectId}/upload`, null, {\n params,\n })\n },\n async upload(\n id: number,\n params: JsonObject,\n payload: _360AssetsUploadPayload\n ): Promise<_360WalkV2> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.ThreeSixty\n )\n\n return axios.put(`${ingestUrl}/360/${id}/upload`, payload, {\n params,\n headers: {\n \"X-Processing-Source\": \"DASHBOARD\",\n },\n })\n },\n async reprocess360(id: number): Promise<void> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.ThreeSixty\n )\n\n return axios.put(`${ingestUrl}/360/${id}/reprocess`)\n },\n drawingExists(payload: {\n params: {\n name: string\n project_id: string\n }\n }): Promise<JsonObject> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(\n `${ingestUrl}/360/floors/exists?${toQueryString(\n payload.params ?? payload\n )}`\n )\n },\n getDrawings(payload: {\n params: DrawingsRequestPayload\n config?: SwrRequestConfig<_360FloorsResponse>\n }): Promise<_360FloorsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(\n `${ingestUrl}/360/floors/?${toQueryString(payload.params ?? payload)}`,\n payload.config\n )\n },\n getDrawingById(id: number, projectExid: string): Promise<_360FloorV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(\n `${ingestUrl}/360/floors/${id}?project_id=${projectExid}`\n )\n },\n updateDrawing(\n id: number,\n projectExid: string,\n payload: GenerateFloorPayload\n ): Promise<_360FloorV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.put(\n `${ingestUrl}/360/floors/${id}?project_id=${projectExid}`,\n payload\n )\n },\n deleteDrawing(id: number): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.delete(`${ingestUrl}/360/floors/${id}`)\n },\n transferWalks(\n sourceId: number,\n targetId: number,\n projectExid: string\n ): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(\n `${ingestUrl}/360/floors/${sourceId}/transfer-walks/${targetId}?project_id=${projectExid}`\n )\n },\n createDrawing(\n projectExid: string,\n payload: GenerateFloorPayload,\n createdBy: string\n ): Promise<_360FloorV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(\n `${ingestUrl}/360/floors/${projectExid}?created_by=${createdBy}`,\n payload\n )\n },\n fetchDrawingOverlay(\n id: number,\n params: { view: boolean; thumbnail?: boolean },\n onDownloadProgress?: (progress: ProgressEvent) => void\n ): Promise<string> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/floors/${id}/overlay`, {\n params,\n onDownloadProgress,\n })\n },\n getFloorArchive(id: number): Promise<string> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/floors/${id}/archive`)\n },\n generate360map(\n projectId: string,\n params: Generate360MapRequestPayload\n ): Promise<JsonObject> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(\n `${ingestUrl}/360/api/${projectId}/generate-360-map`,\n params\n )\n },\n get360QueueSize(\n ingestUrl: string,\n params: _360QueueQueryParams = {}\n ): Promise<_360QueueResponse> {\n return axios.get(`${ingestUrl}/360/queue`, { params })\n },\n },\n bim: {\n createUpload(\n projectId: string,\n params: { uploadedBy: string }\n ): Promise<IngestUploadInitResponse> {\n return axios.post(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/${projectId}/upload`,\n null,\n { params }\n )\n },\n getBIMs(params: {\n params: Partial<BimUploadsQueryParams>\n }): Promise<BimUploadsResponse> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/uploads/`,\n params\n )\n },\n getArchive(id: number): Promise<Blob> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/uploads/archive/${id}`\n )\n },\n deleteUpload(id: number): Promise<void> {\n return axios.delete(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/uploads/${id}`\n )\n },\n upload(\n projectId: string,\n params: {\n id: string\n name: string\n },\n payload: BimUploadPayload\n ): Promise<void> {\n return axios.put(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/${projectId}/upload`,\n payload,\n { params }\n )\n },\n },\n mobileCapture: {\n getProjectMobileAssets(\n params: MobileAssetsQueryParams,\n extraConfig: AxiosRequestConfig = {}\n ): Promise<MobileCaptureAssetsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/mobile/assets/`, {\n params,\n ...extraConfig,\n })\n },\n getMobileAssetPhoto(\n assetId: string | number,\n params: {\n projectId?: string\n project_id?: string\n isThumbnail?: boolean\n is_thumbnail?: boolean\n }\n ): Promise<string> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/mobile/assets/${assetId}`, {\n params,\n })\n },\n deleteAsset(assetId: string | number): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.delete(`${ingestUrl}/mobile/assets/${assetId}`)\n },\n },\n utils: {\n async loadAllAssetsInQueue() {\n try {\n const droneUrls = getIngestApiUrls(IngestTypes.Drone)\n const urls360 = getIngestApiUrls(IngestTypes.ThreeSixty)\n const allAssets = []\n\n const droneResults = await Promise.all(\n droneUrls.map(async (ingestUrl) => {\n const result = await IngestApi.drone.getDroneQueueSize(ingestUrl)\n const version = IngestApi.utils.getIngestVersion(ingestUrl)\n\n return (result?.assetsDrone || []).map((asset) => ({\n ...asset,\n ingestVersion: version.toUpperCase(),\n }))\n })\n )\n\n const results360 = await Promise.all(\n urls360.map(async (ingestUrl) => {\n const result = await IngestApi.assets360.get360QueueSize(ingestUrl)\n const version = IngestApi.utils.getIngestVersion(ingestUrl)\n\n return (result?.assets360 || []).map((asset) => ({\n ...asset,\n ingestVersion: version.toUpperCase(),\n }))\n })\n )\n\n allAssets.push(...droneResults.flat(), ...results360.flat())\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 getIngestVersion(ingestUrl: string): IngestVersions {\n const number = ingestUrl.match(/ingest(\\d*)/)?.[1] || \"1\"\n\n return `V${number}` as IngestVersions\n },\n async chooseIngestApiUrl(type: IngestTypes): Promise<string> {\n const urls = getIngestApiUrls(type)\n\n const queues = await Promise.all(\n urls.map(async (ingestUrl) => {\n try {\n let queueSize = 0\n if (type === IngestTypes.Drone) {\n const result = await IngestApi.drone.getDroneQueueSize(ingestUrl)\n queueSize = result?.assetsDrone?.length || 0\n } else {\n const result = await IngestApi.assets360.get360QueueSize(\n ingestUrl\n )\n queueSize = result?.assets360?.length || 0\n }\n\n return { ingestUrl, queue: queueSize }\n } catch {\n return { ingestUrl, queue: Infinity }\n }\n })\n )\n\n return queues.reduce((min, current) =>\n current.queue < min.queue ? current : min\n ).ingestUrl\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 AuthzRoleUser,\n AuthzScope,\n AuthzScopeCreatePayload,\n AuthzScopeUpdatePayload,\n AuthzUserRolesResponse,\n ProjectExid,\n ProjectResourceRole,\n ProjectRoleRequestPayload,\n Role,\n RoleResourceType,\n} from \"@evercam/api/types\"\nimport { axios } from \"./client\"\nimport type { AxiosRequestConfig } from \"axios\"\n\nexport const AuthzApi = {\n roles: {\n async get(\n params?: AxiosRequestConfig & { params?: { scope?: string } }\n ): Promise<{ total: number; items: Role[] }> {\n return await axios.get(\"/admin/authz/roles\", params)\n },\n async getRoleDetails(id: number): Promise<Role> {\n return await axios.get(`/admin/authz/roles/${id}`)\n },\n createRole(params: Partial<Role> & Pick<Role, \"name\">): Promise<Role> {\n return axios.post(\"/admin/authz/roles\", params)\n },\n updateRole(id: number, params: Partial<Role>): Promise<Role> {\n return axios.patch(`/admin/authz/roles/${id}`, params)\n },\n deleteRole(id: number): Promise<void> {\n return axios.delete(`/admin/authz/roles/${id}`)\n },\n addPermission(id: number, action: string): Promise<void> {\n return axios.post(`/admin/authz/roles/${id}/permissions/`, { action })\n },\n deletePermission(id: number, action: string): Promise<void> {\n return axios.delete(`/admin/authz/roles/${id}/permissions/${action}`)\n },\n async getRoleUsers(id: number): Promise<AuthzRoleUser[]> {\n return axios.get(`/admin/authz/roles/${id}/users`)\n },\n async assignUsers(\n roleId: number,\n emails: Array<string>,\n resourceId: string = \"evercam-admin\"\n ): Promise<void> {\n return axios.post(`/admin/authz/roles/${roleId}/users`, {\n emails,\n resourceId,\n })\n },\n getUserRoles(\n projectExid?: ProjectExid,\n resourceType?: RoleResourceType\n ): Promise<AuthzUserRolesResponse> {\n return axios.get(\"/users/roles\", {\n params: {\n resourceId: projectExid || null,\n resourceType: 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(): Promise<AuthzScope[]> {\n return await axios.get(\"/admin/authz/scopes\")\n },\n create(params: AuthzScopeCreatePayload): Promise<AuthzScope> {\n return axios.post(\"/admin/authz/scopes\", params)\n },\n delete(id: number): Promise<void> {\n return axios.delete(`/admin/authz/scopes/${id}`)\n },\n update(id: number, params: AuthzScopeUpdatePayload): Promise<AuthzScope> {\n return axios.patch(`/admin/authz/scopes/${id}`, params)\n },\n },\n}\n"],"names":["_360PinType","_360UrlParams","_360AssetType","_360AssetLabel","_360Feature","_360IntergrationType","PathMarkerColor","AconexDocumentDataType","AconexFormComponentType","AconexMandatoryStatus","AconexIdentifiers","AnalyticsEventPageId","AnalyticsEvent","AnprDirection","AnprEventStatus","AnprExtractionStatus","AnprExtractionSaveMode","MediaType","MediaFileType","MediaStatus","MediaStatusId","ClipsCategory","MediaCategory","BimModelType","BimUploadStatus","BIMLayerTypes","ForgeBimUploadMethod","ForgeBimFileRejectionReason","ForgeBimUploadStage","ForgeBimDialogTrigger","CameraStatus","IntensityChange","IntensityChangeColorMap","CameraFeatureFlag","NvrModel","CameraModel","HddStatus","DuplicatedCameraFields","BimType","CompareStatus","CopilotMessageAuthor","CopilotMessageType","CopilotStepId","CopilotMissingFieldsLabels","CopilotSocketEvent","CopilotProvider","CopilotSuggestion","CopilotChatProvider","CopilotLayout","CopilotToolId","CopilotMissingFieldComponent","CopilotMissingFieldName","CopilotMissingFieldType","DroneTagType","DroneMarkerType","DroneUrlParams","DroneProvider","ErrorType","ErrorCode","EvercamApiErrorCode","GateReportDetectionType","GateReportEventType","DetectionLabel","SegmentLabel","GateReportVehicleType","GateReportDataSource","GateReportEventDirection","GateReportExportType","GateReportProcessingStatus","VEHICLE_TYPE_IDS","HddFormat","HddType","HddState","WarehouseLocationIndex","WarehouseLocation","HddSize","IngestProcessingStatus","MobileAssetsType","IngestVersions","IngestTypes","MapType","Connector","ProcoreType","NotificationType","NvrDeviceType","NvrHddStatus","ProcoreObservationCustomFieldDataType","ProcoreObservationDefaultFieldNames","ProcoreTools","ProcoreToolUserAccessLevelIds","AutomationDialogType","ProjectStatus","ProjectArchiveTier","ProjectFeatureFlag","ProjectStorageStatus","BrainTool","CloudRecordingFrequency","CloudRecordingDuration","CloudRecordingDurationLabel","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","PlannerUrlParams","EDistortImageModes","EMapTypes","EMarkers","EPageType","EPaths","EProjectItems","ERoles","ProjectStorageProvider","ExNvrFootageAvailableStatus","ExNvrDeviceState","ExNvrMetricId","TimelapseStatus","TimelapseDuration","TimelapseScheduleType","TimelapsePeriod","TimelapseType","TimelapseExportStep","UserFeatureFlag","ContactRole","Persona","VideoWallItemType","WeatherReportScope","WeatherProvider","CommentsScope","CommentsLabel","PpeLabel","DetectionModel","Operator","UnitSystem","MobileDevice","_3dViewer","InfoPage","DownloadFileType","FeedbackContext","TimelinePrecision","TaskStatus","PtzDirection","ZoomDirection","KitStatus","KitRegion","KitAlarm","KitMetricId","KitMetricPeriod","GrafanaMetricId","KitChartType","KitStorageTransport","AuditLogActionType","AuditLogEntity","SnapshotExtractionStatus","SnapshotExtractionType","SnapshotTransferStatus","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","isProjectRole","role","isCameraRole","SiteViewSoftwareType","SiteViewerType","AiApp","AiProvider","AiConfigsPromptDialogMode","AiConfigsKeyDialogMode","AI_APP_CONFIGS","AI_PROVIDER_CONFIGS","AiPromptModel","VehicleClassifierSource","AppRuntimeState","createErrorClass","errorName","error","e","BadRequestError","NotFoundError","UnauthorizedError","GatewayTimeoutError","BadGatewayError","ForbiddenError","HlsError","SnapshotError","ConflictError","InternalServerError","numberOfRequestsSentInThePastSecond","maxRequestsPerSecond","requestsRateLimit","r","onRequest","request","axiosEnv","ensureBaseUrl","removeAuthorizationHeader","addAuthTokenHeader","_a","commonHeaders","transformCamelCaseToSnakeCase","onResponse","response","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","CANCEL_REASON","createRequestManager","requests","source","AdminApi","cameraId","device","payload","providerId","exid","extraConfig","newOwnerId","id","ids","template","extractionId","cameraExid","kitId","metric","fromDate","toDate","tagId","projectExid","hddId","footageId","simId","number","tag","email","VideoWallApi","body","getFirebaseDbApi","getFirebaseStorageUrl","getFirebaseStorageToken","getForgeTokenServerUrl","firebaseRequestConfig","_3dFirebaseApi","projectId","tags","markers","dateId","points","plan","uuid","plans","model","trueIndex","modelData","models","isScene3D","transform","items","index","floorIndex","floorId","floors","dates","pins","projectID","dateID","floorID","featureFlagName","stepsValue","gpxContent","blob","modelIndex","viewerType","viewerPath","dbLink","mapViews","link","sitePlanId","toQueryString","paramsObject","forceSnakeCase","forceArrayBrackets","param","encodedParam","_acc","i","paramName","queryStringToObject","queryString","getAiApiUrl","getAiApiUrlV2","AiApi","extraParams","anprEventId","captureTime","updatedBy","iouThreshold","restParams","queryParams","queryId","cameraExids","query","fileType","directDownload","limit","page","appUuid","appId","serviceId","promptId","keyId","revoke","state","WebRtcApi","WeatherApi","getLabsBaseUrl","labsPrNumber","EvercamLabsApi","conversationId","message","messageId","fileName","metrics","period","EvercamApi","provider","apiId","apiKey","widgetId","widgetKey","user","sessionId","dateTime","headers","name","emails","documentTypeId","hubId","parentFolderId","getDerivatives","folderId","timestamp","year","month","cancelToken","day","progressPhotoId","onUploadProgress","_event","companyId","archive","clientId","scope","dealId","PtzApi","presetId","isRecordingFromNvr","presetName","direction","useContinuous","zoomValue","getIngestApiUrls","type","IngestApi","ingestUrl","droneUrl","urls","validResponses","withDem","date","floor","assetType","drawingId","marker","sourceId","targetId","createdBy","onDownloadProgress","assetId","droneUrls","urls360","allAssets","droneResults","result","version","asset","results360","a","b","queueSize","min","current","ExNvrApi","apiUrl","username","password","deviceId","startDate","AuthzApi","action","roleId","resourceId","resourceType"],"mappings":"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","x_google_ignoreList":[52]}
|
|
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/storageProvider.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","../types/siteView.ts","../types/aiConfigs.ts","../types/gateReportManagement.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 \"@evercam/api/types/time\"\nimport { GeoPoint, Point3D } from \"@evercam/api/types/shared\"\n\nexport type _360OverlayPosition = {\n northEast: GeoPoint\n northWest: GeoPoint\n southEast: GeoPoint\n southWest: GeoPoint\n}\n\nexport type ForgeViewport = {\n name: string\n eye: number[]\n target: number[]\n worldUpVector?: number[]\n}\n\nexport type ForgeView = {\n name: string\n viewport: ForgeViewport\n timestamp: string\n}\n\nexport type _360CameraRotation = {\n azimuthAngle: number\n polarAngle: number\n}\n\nexport type _360Geolocation = {\n latitude: number\n longitude: number\n}\n\nexport type _360Marker3D = {\n cameraPosition: Point3D\n geolocation: _360Geolocation\n nextRoomId: _360MakerId\n position: Point3D\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: Point3D\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 fbxModelHQ?: string\n pointCloudModelHQ?: string\n initialMarker: _360MakerId\n modelViewerFeatureFlag: boolean\n imagesOnlyFeatureFlag?: boolean\n forgeBIMFeatureFlag?: boolean\n isForgeGravityEnabled?: boolean\n initialForgeView?: ForgeView | null\n enhancedLightFeatureFlag?: boolean\n calibrationDetails?: Record<string, unknown>\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 processingLog: 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: _360OverlayPosition\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 enum _360PinType {\n Default = \"Default\",\n}\n\nexport type _360Pin = {\n position: Point3D\n pinType: _360PinType\n pinId?: string\n cameraExid?: string\n name: string\n currentRoom?: _360MakerId\n cameraRotation?: _360CameraRotation\n}\n\nexport type _360SceneRoute = {\n cameraHeadingOffset?: number\n overlayID?: number\n track?: string\n}\n\nexport type _360ProjectListItem = {\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 _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 | number\n projectId?: 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 withAsset?: 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: _360OverlayPosition\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 drawingId?: number\n markers?: Array<{ position: { x: number; y: number; z: number } }>\n}\n","export type AconexUserProject = {\n id: string\n name: string\n shortName: string\n startDate: string\n endDate: string\n active: boolean\n hidden: boolean\n}\n\nexport type AconexDocumentSchema = {\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 AconexDocumentTypeSchema = {\n dataType: AconexDocumentDataType\n identifier: AconexIdentifiers\n fieldName: string\n modifiedFieldName?: string\n mandatoryStatus: AconexMandatoryStatus\n hintText?: string\n specifications?: Array<AconexFieldSpecification>\n}\n\nexport type AconexDocumentSchemaField = {\n dataType: AconexDocumentDataType\n identifier: AconexIdentifiers\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 TimelineInfo = \"TimelineInfo\",\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 XraySendToConnectorSent = \"Xray-SendToConnector-Sent\",\n XraySendToConnectorProcore = \"Xray-SendToConnector-Procore\",\n XraySendToConnectorProcorePhotos = \"Xray-SendToConnector-Procore-Photos\",\n XraySendToConnectorProcoreObservations = \"Xray-SendToConnector-Procore-Observations\",\n XraySendToConnectorAconex = \"Xray-SendToConnector-Aconex\",\n XraySendToConnectorAutodesk = \"Xray-SendToConnector-Autodesk\",\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 MarkUpToolSendToConnectorSent = \"MarkUpTool-SendToConnector-Sent\",\n MarkUpToolSendToConnectorProcore = \"MarkUpTool-SendToConnector-Procore\",\n MarkUpToolSendToConnectorProcorePhotos = \"MarkUpTool-SendToConnector-Procore-Photos\",\n MarkUpToolSendToConnectorProcoreObservations = \"MarkUpTool-SendToConnector-Procore-Observations\",\n MarkUpToolSendToConnectorAconex = \"MarkUpTool-SendToConnector-Aconex\",\n MarkUpToolSendToConnectorAutodesk = \"MarkUpTool-SendToConnector-Autodesk\",\n MarkUpToolSendViaEmail = \"MarkUpTool-SendViaEmail\",\n MarkUpToolSendViaEmailSent = \"MarkUpTool-SendViaEmail-Sent\",\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 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 ThreeSixtyGalleryEditWalkName = \"Gallery-EditWalkName\",\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 DroneChooseCommentType = \"ChooseCommentType\",\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 DroneSettingsToggle360PathsVisibility = \"Settings-Toggle360PathsVisibility\",\n DroneSettingsToggleCameraMarkersVisibility = \"Settings-ToggleCameraMarkersVisibility\",\n DroneSettingsToggleSurroundingBuildingsTool = \"Settings-ToggleSurroundingBuildingsTool\",\n DroneSettingsToggleCommentsVisibility = \"Settings-ToggleCommentsVisibility\",\n DroneSettingsToggleAerialShotsVisibility = \"Settings-ToggleAerialShotsVisibility\",\n DroneSettingsOpenCommentsList = \"Settings-OpenCommentsList\",\n DroneShareLink = \"ShareLink\",\n DroneCommentsToolClick = \"CommentsTool-Click\",\n DroneToggleBimCompareTool = \"ToggleBimCompareTool\",\n DroneToggleFullScreen = \"ToggleFullScreen\",\n DroneToggleMapStyle = \"ToggleMapStyle\",\n DroneTogglePointCloud = \"TogglePointCloud\",\n DroneToggleGaussianSplat = \"ToggleGaussianSplat\",\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 DroneSaveComment = \"SaveComment\",\n DroneUnarchiveComment = \"UnarchiveComment\",\n DroneArchiveComment = \"ArchiveComment\",\n DroneDeleteComment = \"DeleteComment\",\n DroneSaveAerialShot = \"SaveAerialShot\",\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 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 // 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 ProjectSettingsMembersViewRoleInfo = \"ViewRoleInfo\",\n ProjectSettingsMembersViewMemberInfo = \"ViewMemberInfo\",\n ProjectSettingsMembersBulkRemove = \"BulkRemove\",\n ProjectSettingsMembersInviteSent = \"InviteSent\",\n ProjectSettingsMembersRejectInvite = \"RejectInvite\",\n ProjectSettingsMembersAddMember = \"AddMember\",\n ProjectSettingsMembersBulkRoleUpdate = \"BulkRoleUpdate\",\n ProjectSettingsMembersDeleteCameraAccess = \"DeleteCameraAccess\",\n ProjectSettingsMembersEditCameraAccess = \"EditCameraAccess\",\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\n // Automations - Progress Photos\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 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 ProgressPhotoUnsubscribeUser = \"ProgressPhoto-UnsubscribeUser\",\n\n // Automations - Comapre\n CompareSelectProvider = \"Compare-SelectProvider\",\n CompareSelectCameras = \"Compare-SelectCameras\",\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 CompareSelectType = \"Compare-SelectType\",\n CompareCreate = \"Compare-Create\",\n\n // Automations - Main Report\n AutomationsEditSearchFilter = \"EditSearchFilter\",\n AutomationsEditStatusFilter = \"EditStatusFilter\",\n AutomationsEditUsersFilter = \"EditUsersFilter\",\n AutomationsEditDaysFilter = \"EditDaysFilter\",\n AutomationsEditCamerasFilter = \"EditCamerasFilter\",\n AutomationToggleEditDialog = \"ToggleEditDialog\",\n AutomationToggleCreateDialog = \"ToggleCreateDialog\",\n AutomationTypeName = \"TypeName\",\n\n // Automations - Gate Report\n GateReportSelectType = \"GateReport-SelectType\",\n GateReportToggleSelectAllCameras = \"GateReport-ToggleSelectAllCameras\",\n GateReportToggleSelectAllOnlineCameras = \"GateReport-ToggleSelectAllOnlineCameras\",\n GateReportToggleClearAllCameras = \"GateReport-ClearAllCameras\",\n GateReportEditCamerasSearchFilter = \"GateReport-EditCamerasSearchFilter\",\n GateReportSelectDays = \"GateReport-SelectDays\",\n GateReportSelectTime = \"GateReport-SelectTime\",\n GateReportSelectTimezone = \"GateReport-SelectTimezone\",\n GateReportSelectVehicleTypes = \"GateReport-SelectVehicleTypes\",\n GateReportSelectColumn = \"GateReport-SelectColumn\",\n GateReportSelectPeriod = \"GateReport-SelectPeriod\",\n GateReportSelectExportType = \"GateReport-SelectExportType\",\n GateReportSelectMember = \"GateReport-SelectMember\",\n GateReportSelectCameras = \"GateReport-SelectCameras\",\n GateReportCreate = \"GateReport-Create\",\n GateReportEdit = \"GateReport-Edit\",\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 AskAIClickAskAI = \"AskAI-ClickAskAI\",\n AskAIClickExpand = \"AskAI-ClickExpand\",\n AskAIClickCollapse = \"AskAI-ClickCollapse\",\n AskAIClickVoice = \"AskAI-ClickVoice\",\n AskAIClickFullscreen = \"AskAI-ClickFullscreen\",\n AskAIExitFullscreen = \"AskAI-ExitFullscreen\",\n AskAICloseChat = \"AskAI-CloseChat\",\n\n // Forge Bim View model management events\n ForgeBimAddModelButtonClicked = \"ForgeBim-AddModelButtonClicked\",\n ForgeBimUploadChoiceDialogOpened = \"ForgeBim-UploadChoiceDialogOpened\",\n ForgeBimModelAddMethodSelected = \"ForgeBim-ModelAddMethodSelected\",\n ForgeBimUploadChoiceDialogDismissed = \"ForgeBim-UploadChoiceDialogDismissed\",\n ForgeBimLocalModelFileSelected = \"ForgeBim-LocalModelFileSelected\",\n ForgeBimLocalModelFileRejected = \"ForgeBim-LocalModelFileRejected\",\n ForgeBimUploadModelFileToIngestStarted = \"ForgeBim-UploadModelFileToIngestStarted\",\n ForgeBimUploadModelFileToIngestCompleted = \"ForgeBim-UploadModelFileToIngestCompleted\",\n ForgeBimUploadModelFileToIngestFailed = \"ForgeBim-UploadModelFileToIngestFailed\",\n ForgeBimAccModelSelectorOpened = \"ForgeBim-AccModelSelectorOpened\",\n ForgeBimAccModelSelectorDismissed = \"ForgeBim-AccModelSelectorDismissed\",\n ForgeBimAccModelConfirmed = \"ForgeBim-AccModelConfirmed\",\n ForgeBimModelDuplicateDetected = \"ForgeBim-ModelDuplicateDetected\",\n ForgeBimUpdateModelButtonClicked = \"ForgeBim-UpdateModelButtonClicked\",\n ForgeBimReplaceModelWarningOpened = \"ForgeBim-ReplaceModelWarningOpened\",\n ForgeBimReplaceModelConfirmed = \"ForgeBim-ReplaceModelConfirmed\",\n ForgeBimReplaceModelCancelled = \"ForgeBim-ReplaceModelCancelled\",\n ForgeBimModelAdded = \"ForgeBim-ModelAdded\",\n ForgeBimModelUpdated = \"ForgeBim-ModelUpdated\",\n ForgeBimModelSaveFailed = \"ForgeBim-ModelSaveFailed\",\n ForgeBimIngestNotificationFailed = \"ForgeBim-IngestNotificationFailed\",\n}\n","import {\n BoundingBox,\n CameraExid,\n DateType,\n GateReportVehicleType,\n TimelinePrecision,\n} from \"@evercam/api/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 contextThumbnailUrl: string\n isPublic: boolean\n label: string\n mp4Url: string\n plateThumbnailUrl: string\n thumbnailUrl: string\n metadata: {\n evercamMetadata?: {\n anpr?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n context?: {\n bbox: BoundingBox\n label: string\n score: number\n }\n }\n plateRecognizerMetadata?: {\n plateNumber?: string\n vehicleMake?: string\n vehicleType?: string\n vehicleColor?: string\n vehicleModel?: string\n vehicleOrientation?: string\n }\n }\n}\n\nexport type AnprCount = {\n date: string\n counts: Record<AnprDirection, number>\n}\n\nexport enum AnprEventStatus {\n IsPlate = \"is_plate\",\n NotPlate = \"not_plate\",\n IsDuplicate = \"is_duplicate\",\n NotDuplicate = \"not_duplicate\",\n}\n\nexport type AnprBulkUpdateRequestPayload = {\n anprEventsIds: number[]\n action: AnprEventStatus\n}\n\nexport type AnprUpdateRequestPayload = {\n plateNumber: string\n vehicleType: GateReportVehicleType\n direction: AnprDirection\n}\n\nexport enum AnprExtractionStatus {\n Pending = \"pending\",\n Running = \"running\",\n Completed = \"completed\",\n Failed = \"failed\",\n}\n\nexport enum AnprExtractionSaveMode {\n All = \"all\",\n AiDbOnly = \"ai_db_only\",\n ImagesOnly = \"images_only\",\n}\n\nexport type AnprExtraction = {\n id: number\n cameraId: number\n userId: number | null\n startDate: string\n endDate: string\n status: AnprExtractionStatus\n totalRecords: number\n error: string | null\n saveMode: AnprExtractionSaveMode\n startedAt: string | null\n completedAt: string | null\n insertedAt: string\n}\n\nexport type AnprExtractionCreatePayload = {\n startDate: string\n endDate: string\n saveMode?: AnprExtractionSaveMode\n}\n","import type { CameraExid, Exid, DateType } from \"@evercam/api/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 embedTime?: boolean\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 camera?: string\n notes?: string | null\n category?: string | null\n isUrgent?: boolean\n bucket?: string | null\n sourceProduct?: string | null\n featureType?: string | null\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 requestorName?: string\n type?: MediaType\n status?: string\n cameraExid?: string\n projectExid?: string\n projectName?: string\n page?: number\n limit?: number\n camera?: string\n}\n\nexport type MediaUpdateRequestPayload = {\n name?: string\n title?: string\n status?: number\n public?: boolean\n url?: string\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?: MediaCategory | 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 enum MediaCategory {\n Weather = \"weather\",\n SmartSearch = \"smart_search\",\n Copilot = \"copilot\",\n}\n\nexport type MediaDeleteRequestPayload = {\n timelapseIds: (string | number)[]\n compareIds: (string | number)[]\n archiveIds: (string | number)[]\n}\n","import { CompareLogoPosition, DateType } from \"@evercam/api/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 id?: number\n dates?: string[] | null\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 logo?: CompareLogoPosition\n}\n\nexport type BimLayerResponsePayload = {\n id: number\n name: string\n insertedAt: string\n updatedAt: string\n shapes: string\n startAt: string\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 fileUrl: string\n software?: \"navisworks\" | \"synchro\"\n model?: string\n apiKey?: string\n apiId?: string\n displayName?: string\n requestor?: string\n finalView?: boolean\n enableDistortion?: boolean\n startAt?: string\n}\n\nexport enum BIMLayerTypes {\n Mask = \"mask\",\n BimMask = \"bim_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 ForgeBimArchitectural = \"forge_bim_architectural\",\n ForgeBimStructural = \"forge_bim_structural\",\n ForgeBim4D = \"forge_bim_4d\",\n ForgeBimMep = \"forge_bim_mep\",\n}\n\nexport type BimLayersQueryParams = {\n layerType?: BIMLayerTypes\n timestamp?: DateType\n}\n\nexport type BIMLayerPostPayload = {\n shapes: string\n startAt: DateType\n name?: string\n displayName?: string\n layerType?: BIMLayerTypes\n zIndex?: number\n}\n\nexport type BIMLayer = {\n id: number\n name: string\n layerType: BIMLayerTypes\n displayName?: string | null\n startAt: DateType\n insertedAt: DateType\n updatedAt: DateType\n shapes: string\n}\n\nexport type BimPendingImage = {\n url?: string\n key?: string\n}\n\nexport type BimUploadCameraParameters = {\n distortionCoeffs?: 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\nexport enum ForgeBimUploadMethod {\n FileUpload = \"file_upload\",\n AutodeskAcc = \"autodesk_acc\",\n}\n\nexport enum ForgeBimFileRejectionReason {\n InvalidType = \"invalid_type\",\n ExceedsSizeLimit = \"exceeds_size_limit\",\n}\n\nexport enum ForgeBimUploadStage {\n TusUpload = \"tus_upload\",\n IngestUpload = \"ingest_upload\",\n}\n\nexport enum ForgeBimDialogTrigger {\n UpdateModel = \"update_model\",\n AddModel = \"add_model\",\n InitialSetup = \"initial_setup\",\n}\n\nexport type BimUpdatedWebhookPayload = {\n eventName: \"bim.updated\"\n projectId: string\n data: {\n updatedAt: string\n bimIdentifier: string\n }\n}\n","import {\n AuditLogActionType,\n DateType,\n EntityByExid,\n KitAlarm,\n NvrDeviceType,\n NvrHddStatus,\n PaginationParams,\n PowerSchedule,\n PowerType,\n ProjectExid,\n ProjectFeatureFlag,\n Schedule,\n ScheduleLowercase,\n StorageProvider,\n TimestampPositionCoordinates,\n} from \"@evercam/api/types\"\nimport { DateRangeFilter } from \"@evercam/api/types/time\"\nimport { GeoPoint, TuplePoint2D } from \"@evercam/api/types/shared\"\n\nexport type CameraExid = string\n\nexport type CamerasByExid = EntityByExid<Camera>\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 liveViewFrequency: number | null\n createdAt: string\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: number\n id: CameraExid\n exid: CameraExid\n isOnline: boolean\n isPowerScheduleActive: boolean\n isPublic: boolean\n lastOnlineAt: string\n lastPolledAt: string\n location: GeoPoint\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 recordingFromNvr: boolean\n model?: CameraModel\n roll: string | null\n routerId: number\n status: CameraStatus\n streamingServer: string\n thumbnailUrl: string\n largeThumbnailUrl?: string\n timezone: string\n updatedAt: string\n vendorName: string\n isAccessRestricted?: boolean\n kitAlarms?: KitAlarm[]\n timestampPosition?: TimestampPositionCoordinates\n}\n\nexport type AdminCamera = {\n id: number\n exid: CameraExid\n name: string\n status: string\n description: string | null\n createdAt: string\n updatedAt: string\n lastOnlineAt: string | null\n lastPolledAt: string | null\n decommissionedAt: string | null\n deletedAt?: string | null\n projectId: number | null\n projectExid: string | null\n projectName: string | null\n projectFeatureFlags: Array<ProjectFeatureFlag | string>\n userId: number | null\n userEmail: string\n userFullname: string\n userApiId?: string\n userApiKey?: string\n isPublic: boolean\n sharedWithConstruction?: boolean\n timezone: string | null\n location?: GeoPoint | null\n fovAngle?: number | null\n fovRadius?: number | null\n heading?: number | null\n pitch?: number | null\n roll?: number | null\n cameraModel?: string | null\n cameraHost?: string | null\n cameraHttpPort?: number | null\n cameraRtspPort?: number | null\n cameraScheme?: string | null\n cameraUsername?: string | null\n cameraPassword?: string | null\n cameraPictureEndpoint?: string | null\n rtspUrl?: string | null\n httpUrl?: string | null\n deviceId?: string | null\n nvrId?: number | null\n nvrDeviceId?: string | null\n nvrModel?: NvrModel | string | null\n nvrHost?: string | null\n nvrHttpPort?: number | null\n nvrRtspPort?: number | null\n nvrScheme?: string | null\n nvrUsername?: string | null\n nvrPassword?: string | null\n nvrPictureEndpoint?: string | null\n streamEndpoint?: string | null\n routerId?: number | null\n kitId?: number | null\n powerType?: string | null\n powerSchedule?: ScheduleLowercase | Record<string, string[]>\n isPowerScheduleActive?: boolean\n discoverable?: boolean\n recordingFromNvr?: boolean\n cloudRecordingFrequency?: number | null\n cloudRecordingId?: number | null\n cloudRecordingStatus?: string | null\n cloudRecordingSchedule?: ScheduleLowercase | null\n cloudRecordingStorageDuration?: number | null\n liveViewFrequency?: number | null\n anprSources?: string[]\n storageProviders?: StorageProvider[]\n featureFlags?: CameraFeatureFlag[]\n zohoId?: string | null\n offlineReason?: string | null\n macAddress?: string | null\n type?: string[]\n thumbnailUrl?: string\n channel?: string | null\n nvrSnapshotUrl?: string | null\n ptz?: boolean\n hddInfo?: Record<string, unknown>[]\n cameraFirmwareVersion?: string | null\n cameraTimezone?: string | null\n resolution?: string | null\n}\n\nexport type CameraMapMarker = {\n isOnline: boolean\n location: GeoPoint\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 PpeOwlv2 = \"ppe_owlv2\",\n PpeGemini = \"ppe_gemini\",\n PpeYolo = \"ppe_yolo\",\n PpeV2 = \"ppe_v2\",\n NoLiveView = \"no_live_view\",\n Ring = \"ring\",\n CloudOnly = \"cloud_only\",\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 isPublic?: 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 liveViewFrequency?: number | null\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 status?: string\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 Ring = \"ring\",\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 CheckCameraPortResponse = {\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?: TuplePoint2D\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 noteType: string\n content: 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?: NvrHddStatus[]\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 statuses?: string[]\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 externalRtspPort?: string\n nvrHttpPort?: string\n createdAtFrom?: string\n createdAtTo?: 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 \"@evercam/api/types\"\n\nexport type Compare = {\n id: number\n exid: string\n cameraExid: string\n title: string\n fromDate: string\n toDate: string\n createdAt: string\n status: string\n requesterEmail: string\n requesterName: string\n embedCode: string\n public: boolean\n notes?: string | null\n category?: string | null\n isUrgent?: boolean\n embedTime?: boolean\n fileName?: string\n frames?: number\n mediaUrls?: {\n gif: string\n mp4: string\n }\n thumbnailUrl?: string\n type?: string\n}\n\nexport enum CompareStatus {\n Processing = 0,\n Completed = 1,\n Failed = 2,\n}\n\nexport type CompareRequestPayload = {\n compareExid: string\n name: string\n beforeDate: string\n afterDate: string\n embed: string\n cameraExid?: string\n bim?: boolean\n custom?: boolean\n options?: {\n type?: string\n beforeSnap?: string\n afterSnap?: string\n }\n createAnimation?: boolean\n evercamWatermark?: boolean\n logo?: CompareLogoPosition\n}\n\nexport type CompareLogoPosition = {\n id?: number\n width: number\n height: number\n x: number\n y: number\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 sort?: string\n}\n","import type {\n AnalyticsEventPageId,\n CameraExid,\n CameraFeatureFlag,\n CameraStatus,\n ProjectExid,\n ProjectFeatureFlag,\n ProjectStatus,\n} from \"@evercam/api/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 RequestAgentCall = \"request_agent_call\",\n ExecAgentCall = \"exec_agent_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 = unknown> = {\n name: string\n label: string\n value: unknown\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 SmartSearch = \"smart_search\",\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 SmartSearch = \"smartSearch\",\n}\n\nexport type CopilotSystemToolCallResponse<I = unknown, O = unknown> = {\n toolId?: CopilotToolId\n input?: I\n output?: O\n isAgent?: boolean\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","import { Point3D } from \"@evercam/api/types/shared\"\n\nexport type DroneCameraTransform = {\n position: Point3D\n direction: Point3D\n up: Point3D\n right: Point3D\n}\n\nexport type DroneModel = {\n cesiumId: number\n cesiumId2D: number\n date: string\n cesiumPointCloudId: string\n cesiumGausianSplatId: string\n pointSize: string\n maximumScreenSpaceError: number\n link: string\n trueIndex: number\n}\n\nexport type DroneProjectTransform = {\n initialCameraTransform?: DroneCameraTransform\n initial2DCameraTransform?: DroneCameraTransform\n blackListIds?: string\n markers?: Record<string, DroneMarker>\n imageryPlans?: Record<string, DroneImageryPlan>\n bimData?: DroneBimData\n terrainPoints?: Record<string, Point3D[]>\n projectWGS84Coordinates?: DroneProjectCoordinates | null\n tags?: Record<string, DroneTag>\n}\n\nexport type DroneProjectData = {\n models?: DroneModel[]\n transform?: DroneProjectTransform\n integrationType?: DroneProvider\n origin?: string\n params?: string\n pointSize?: number\n}\n\nexport type DroneProjectDataPatch = {\n models?: Record<number, Partial<DroneModel>>\n integrationType?: DroneProvider\n origin?: string\n params?: string\n}\n\nexport type DroneProjectCoordinates = {\n lat: number | null\n lon: number | null\n alt: number | null\n}\n\nexport type DroneTransformPatch = {\n projectWGS84Coordinates?: DroneProjectCoordinates | null\n}\n\nexport enum DroneTagType {\n AerialShot = \"AerialShot\",\n}\n\nexport type DroneTag<T extends DroneTagType = DroneTagType> = {\n id?: number\n type: T\n comment: string\n position?: Point3D\n cameraTransform?: DroneCameraTransform\n creationDate: string\n hyperlink?: string\n height?: number\n}\n\nexport type AerialShotPoint = DroneTag<DroneTagType.AerialShot>\n\nexport type DroneMarkerTransform = {\n fovAngle: number\n fovRadius: number\n heading: number\n height: number\n latitude: string\n longitude: string\n pitch: number\n roll: number\n scale: number\n}\n\nexport enum DroneMarkerType {\n Default = \"Default\",\n Gate = \"Gate\",\n Indoor = \"Indoor\",\n}\n\nexport type DroneMarker = {\n type: DroneMarkerType\n name: string\n cameraExid: string\n transform: DroneMarkerTransform\n}\n\nexport type DroneImageryPlan = {\n cesiumId: number\n uuid: string\n name: string\n alpha: number\n order: number\n}\n\nexport type DroneBimData = {\n cesiumId: string | null\n iModelId: string | null\n changeSetId: string | null\n isItwin: boolean\n}\n\nexport enum DroneUrlParams {\n Date = \"date\",\n}\n\nexport enum DroneProvider {\n Evercam = \"Evercam\",\n DroneDeploy = \"DroneDeploy\",\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\nexport type AppError = {\n statusCode?: number\n message?: string\n redirect?: {\n url?: string\n label?: string\n delay?: number\n }\n withSupportMessage?: boolean\n isWidget?: boolean\n}\n","import {\n AnprDirection,\n AnprEvent,\n CameraExid,\n DateType,\n PaginatedItems,\n PaginationParams,\n ProjectExid,\n RoiDirection,\n RoiShapeType,\n RoiType,\n Timestamp,\n TuplePoint2D,\n} from \"@evercam/api/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 label: string\n value: 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: string\n isMatched: boolean\n insertedAt: string\n updatedAt: string\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: string\n}\n\nexport type MonthlyEventCount = EventsCount & {\n month: string\n}\n\nexport type DailyEventCount = EventsCount & {\n day: string\n}\n\nexport type HourlyEventCount = {\n hour: string\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<AnprEvent>\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?: string\n isPublic?: boolean\n toDate?: string\n vehicleTypes?: GateReportVehicleType[]\n} & PaginationParams\n\nexport enum GateReportExportType {\n Pdf = \"pdf\",\n Csv = \"csv\",\n}\n\nexport type AnprExportBaseParams = {\n vehicleTypes?: GateReportVehicleType[]\n fileType?: GateReportExportType\n fromDate?: string\n toDate?: string\n camerasExid?: CameraExid[]\n isPublic?: boolean\n columns?: string[]\n}\n\nexport type EventsExportRequestParameters = AnprExportBaseParams & {\n eventType: GateReportEventType\n}\n\nexport type AnprBasedGateReportExportRequestParams = AnprExportBaseParams & {\n direction?: AnprDirection\n}\n\nexport type LegacyAnprExportParams = AnprExportBaseParams & {\n direction?: AnprDirection\n}\n\nexport type GateReportROIShape = {\n coordinates: TuplePoint2D[]\n type: RoiShapeType\n}\n\nexport type GateReportROI = {\n cameraex?: string\n fromDate?: string\n directionFilter?: RoiDirection\n id?: number\n insertedAt?: Timestamp\n isActive?: boolean\n name?: string\n roiType?: RoiType\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: string[]\n updatedAt: string[]\n day: string\n}\n\nexport type VerifyDayUpdateRequestPayload = {\n camerasExid: string[]\n projectExid: string\n day: string\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 camerasExid: CameraExid[]\n id: number\n name: string\n fromDate: string\n roiType: RoiType\n isActive: boolean\n directionFilter: string\n sort: string\n}\n\nexport type GateReportRoiRequestPayload = {\n id: number\n cameraExid: string\n name: string\n roiType: RoiType\n isActive: true\n fromDate: string\n shapes: GateReportROIShape[]\n directionFilter: string\n note: string\n}\n","import { PaginationParams } from \"@evercam/api/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?: number\n hddId?: number\n startDate: string\n endDate?: string\n}\n\nexport type HDDCreateUpdatePayload = {\n locationId: number\n kitId?: number | null\n serialNumber?: string\n size?: string\n hddStatus?: string\n type?: string\n shelfBlock?: string\n format?: string\n errorStatus?: string\n reportedCapacity?: string\n reportedFreeSpace?: string\n reportedProperty?: string\n reportedPath?: string\n reportedHddType?: 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 sort?: string\n}\n\nexport type AdminHddFootage = {\n id: number\n cameraExid: string\n cameraName: string\n startDate: string | null\n endDate: string | null\n}\n\nexport type AdminHdd = {\n id: number\n size: string | null\n type: string | null\n format: string | null\n location: string | null\n errorStatus: string | null\n createdAt: string\n serialNumber: string | null\n hddStatus: string | null\n reportedCapacity: string | null\n reportedFreeSpace: string | null\n reportedHddType: string | null\n reportedPath: string | null\n reportedProperty: string | null\n shelfBlock: string | null\n footages: AdminHddFootage[]\n}\n\nexport type HddDetail = {\n id: number\n locationId: number | null\n kitId: number | null\n serialNumber: string | null\n size: string | null\n hddStatus: string | null\n type: string | null\n shelfBlock: string | null\n format: string | null\n errorStatus: string | null\n reportedCapacity: string | null\n reportedFreeSpace: string | null\n reportedProperty: string | null\n reportedPath: string | null\n reportedHddType: string | null\n createdAt: string\n}\n\nexport type HddFootageItem = {\n id: number\n cameraId: number | null\n hddId: number | null\n startDate: string\n endDate: string | null\n}\n","import {\n PaginationParams,\n DateType,\n JsonValue,\n TuplePoint2D,\n} from \"@evercam/api/types\"\nimport type { _360FloorV2, _360WalkV2 } from \"@evercam/api/types/360\"\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 V3 = \"v3\",\n V4 = \"v4\",\n V5 = \"v5\",\n}\n\nexport enum IngestTypes {\n Drone = \"drone\",\n ThreeSixty = \"360\",\n}\n\nexport type DronesQueryParams = Omit<PaginationParams, \"sort\"> & {\n projectId: string\n consumed: string\n token: string\n processingStatus: IngestProcessingStatus\n}\n\nexport type IngestPaginatedResponse<T> = {\n items: T[]\n page: number\n limit: number\n total: number\n pageCount?: number\n}\n\nexport type DroneUploadItem = {\n id: number\n projectId: string\n consumed: boolean\n token: string\n flightDate: string\n flightGeolocation: string\n modelZip: string\n orthomosaicZip: string\n reportPdf: string\n processingLog: string\n uploadedBy: string\n processingStatus: IngestProcessingStatus | string\n modelCesiumAssetId: string\n updatedAt: string\n hasTusLinks: boolean\n}\n\nexport type DroneUploadsResponse = IngestPaginatedResponse<DroneUploadItem>\n\nexport type DroneQueueResponse = {\n size: number\n assetsDrone: DroneUploadItem[]\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 aerialShots: {\n url: string\n title: string\n fileExtension: string\n gpsLatitude: string\n gpsLongitude: string\n gpsAltitude: string\n }[]\n projectName: string\n}\n\nexport type CalculateMeasuringOperationRequestPayload = {\n date: DateType\n points: TuplePoint2D[]\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\nexport type _360AssetsResponse = IngestPaginatedResponse<_360WalkV2>\n\nexport type _360AssetsCountsDay = {\n day: number\n walks?: number\n mobilePhotos?: number\n [key: string]: JsonValue | undefined\n}\n\nexport type _360AssetsCountsResponse = {\n days: _360AssetsCountsDay[]\n}\n\nexport type _360QueueResponse = {\n size: number\n assets360: _360WalkV2[]\n}\n\nexport type _360FloorsResponse = IngestPaginatedResponse<_360FloorV2>\n\nexport type BimUploadItem = {\n id: number\n projectId: string\n uploadedBy: string\n files: string[]\n updatedAt: string\n archive?: string | null\n}\n\nexport type BimUploadsResponse = IngestPaginatedResponse<BimUploadItem>\n\nexport type IngestUploadInitResponse = {\n id: number\n projectId: string\n token?: string\n projectName?: string\n}\n\nexport type MobileAssetsQueryParams = Partial<\n Omit<PaginationParams, \"sort\">\n> & {\n projectId?: string\n project_id?: string\n assetType?: MobileAssetsType | string\n date?: DateType\n isPaginated?: boolean\n}\n\nexport type MobileCaptureAssetsResponse =\n | IngestPaginatedResponse<{\n id: string\n projectId?: string\n uploadedBy: string\n updatedAt: string\n assetType: string\n thumbnailUrl: string\n }>\n | Array<{\n id: string\n projectId?: string\n uploadedBy: string\n updatedAt: string\n assetType: string\n thumbnailUrl: string\n }>\n","export enum MapType {\n Hybrid = \"hybrid\",\n Terrain = \"terrain\",\n}\n\nexport type MapView = {\n east?: number\n floorID?: string\n image?: string\n mapStyle?: MapType\n name: string\n north?: number\n projectId: string\n projectName: string\n south?: number\n west?: number\n}\n","export type ConnectorDetail = {\n login: string\n hostname: string\n provider: string\n}\n\nexport enum Connector {\n Aconex = \"aconex\",\n Procore = \"procore\",\n Autodesk = \"autodesk\",\n AutodeskViewer = \"autodesk_viewer\",\n VoyageControl = \"voyage_control\",\n Ring = \"ring\",\n Email = \"email\",\n\n // Project connectors\n XWeather = \"xweather\",\n}\n\nexport enum ProcoreType {\n Observations = \"observations\",\n Photos = \"photos\",\n}\n\nexport type ConnectorResponsePayload = Array<ConnectorDetail>\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 Other = \"other\",\n}\n\nexport type NotificationContextBase = {\n cameraExid?: string\n projectExid?: string\n cameraName?: string\n}\n\nexport type CameraShareContext = NotificationContextBase & {\n cameraExid: string\n projectExid: string\n shareId: number\n}\n\nexport type CameraStatusChangeContext = NotificationContextBase & {\n cameraExid: string\n projectExid: string\n newStatus: string\n}\n\nexport type MentionContext = NotificationContextBase\n\nexport type TimelapseCreatedContext = NotificationContextBase & {\n cameraExid: string\n projectExid: string\n archiveExid: string\n}\n\nexport type TimelapseFailedContext = NotificationContextBase & {\n cameraExid: string\n projectExid: string\n}\n\nexport type DroneProcessingContext = NotificationContextBase & {\n projectExid: string\n droneDate: string\n}\n\nexport type Processing360Context = NotificationContextBase & {\n projectExid: string\n date: string\n floor: string\n}\n\nexport type NotificationContext =\n | CameraShareContext\n | CameraStatusChangeContext\n | MentionContext\n | TimelapseCreatedContext\n | TimelapseFailedContext\n | DroneProcessingContext\n | Processing360Context\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?: NotificationContext\n}\n\nexport type NotificationsListParams = {\n page?: number\n limit?: number\n sort?: string\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 NvrSetting = {\n exid: string\n name: string\n externalHost: string\n model: string\n deviceName: string\n macAddress: string\n firmwareVersion: string\n resolution: string\n bitrateType: string\n videoQuality: string\n frameRate: number\n bitrate: number\n videoEncoding: string\n hddName: string\n hddCapacity: string\n freeSpace: string\n hddStatus: string\n hddProperty: string\n nvrStatus: string\n timeMode: string\n localTime: string\n timezone: string\n addressingFormatType: string\n hostName: string\n portNo: string\n synchronizeInterval: string\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 ProcoreUserProject = {\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 ProcoreUserProjectsResponsePayload = Array<ProcoreUserProject>\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 ProcoreProjectAlbum = {\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 ProcoreProjectsAlbumsPayload = Array<ProcoreProjectAlbum>\n\nexport type ProcoreObservationType = {\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 ProcoreObservationTypesResponsePayload =\n Array<ProcoreObservationType>\n\nexport type ProcoreObservationFormRequestPayload = {\n projectId: number\n companyId: number\n observationType: string\n}\n\nexport type ProcoreCustomFieldOptionsRequestPayload = {\n optionsUrl: string\n companyId: number\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 { Automation, DateType, PaginationParams } from \"@evercam/api/types\"\n\nexport type ProgressPhotosCreateUpdateRequestPayload = {\n cameraExids?: string\n notifyDays?: string\n notifyTime?: string\n timezone?: string\n name?: string\n provider?: string\n type?: string\n config?: {\n recipients?: string\n companyId?: number\n projectId?: number\n categoryId?: number\n }\n isPaused?: boolean\n}\n\nexport type ProgressPhotosUnSubscribeParams = {\n email: string\n token?: string\n}\n\nexport type ProgressPhotosResponsePayload = {\n progressPhotos: Automation[]\n}\n\nexport type ProgressPhotoItemResponsePayload = {\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 type ProgressPhotoItemConfig = {\n recipients?: string\n companyId?: number\n projectId?: number\n}\n\nexport type ProgressPhotoItem = {\n id: number\n cameras: CameraOption[] | string[] | string\n insertedAt: string\n name: string\n provider: string\n config: ProgressPhotoItemConfig\n isPaused: boolean\n notifyDays: string | string[]\n notifyTime: string\n apiId: string\n apiKey: string\n timezone: string\n exid: string\n fullname: string\n}\n\nexport type ProgressPhotosQueryParams = PaginationParams & {\n fullname?: string\n name?: string\n recipients?: string\n notifyTime?: string\n timezone?: string\n cameras?: string\n sort?: 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: string\n insertedAt: string\n}\n","import {\n AdminCamera,\n Camera,\n CameraExid,\n DateType,\n EntityByExid,\n Exid,\n Operator,\n PaginationParams,\n} from \"@evercam/api/types\"\n\nexport type ProjectExid = Exid\n\nexport type ProjectsByExid = EntityByExid<Project>\n\nexport type Project = {\n archiveTier?: ProjectArchiveTier\n cameras?: Array<Camera | AdminCamera>\n camerasCount?: number\n camerasRestrictionType?: string\n companyId: number\n endDate: string\n exid: ProjectExid\n featureFlags: Array<ProjectFeatureFlag>\n geographicBounds?: unknown\n id: string | number\n insertedAt?: string\n name: string\n owner?: { email?: string }\n ownerEmail?: string\n ownerName?: string\n startedAt?: string\n status?: ProjectStatus\n timezone?: string\n unrestrictedCameras?: Camera[]\n userId?: number\n zohoId?: string\n}\n\nexport type AdminProjectCameraRef = {\n exid: string\n name: string\n}\n\nexport type AdminProjectListItem = {\n id: number\n name: string\n status: ProjectStatus | string\n insertedAt: string\n timezone: string | null\n exid: ProjectExid\n endDate: string | null\n startDate: string | null\n archiveTier: ProjectArchiveTier | null\n featureFlags: Array<ProjectFeatureFlag | string>\n zohoId: string | null\n ownerEmail: string | null\n companyId: number | null\n companyName: string | null\n ownerName: string | null\n archived: boolean\n cameras?: AdminProjectCameraRef[]\n}\n\nexport type AdminProjectDetail = AdminProjectListItem & {\n userId: number\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 No = \"No\",\n}\n\nexport type UpdateCameraRestrictionPayload = {\n isAccessRestricted: boolean\n}\n\nexport type Logo = {\n id: number\n projectId: number\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: string\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 featureFlagsOperator?: Operator\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: string\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 ProjectRole = {\n id: number\n name: string\n}\n\nexport type ProjectMember = {\n id: number\n key?: string\n email: string\n fullname: string\n lastSeenAt?: string | null\n role: ProjectRole\n permissions?: string[]\n subRoles?: Array<{\n resourceId: string\n roleId: number\n }>\n company?: { name: string } | null\n telephone?: string | null\n persona?: string | null\n}\n\nexport type ProjectInvite = {\n id?: number\n email: string\n role?: ProjectRole\n permissions?: string[]\n subRoles?: Array<{\n resourceId: string\n roleId: number\n }>\n invitedAt?: string\n}\n\nexport type ProjectMembersResponsePayload = {\n users: ProjectMember[]\n invites: ProjectInvite[]\n errors: ProjectUserError[]\n emailFailures?: string[]\n}\n\nexport type ProjectMembersRequestPayload = {\n roleId: number\n emails: string[]\n message?: 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\nexport type PlaceholderThumbnailData = {\n placeholder: string\n}\n\nexport type ProjectUserError = {\n email: string\n error: Record<string, string[]>\n}\n\nexport type ProjectUsersResponsePayload = {\n users: ProjectMember[]\n invites: ProjectInvite[]\n errors: ProjectUserError[]\n}\n\nexport type ProjectStorageQueryParams = PaginationParams & {\n cameraName?: string\n cameraExid?: CameraExid\n projectName?: string\n projectExid?: string\n archiveTier?: string\n status?: ProjectStorageStatus\n requester?: string\n createdAtFrom?: string\n createdAtTo?: string\n scheduleAtFrom?: string\n scheduleAtTo?: string\n sort?: string\n}\n\nexport type ProjectStorageCamera = {\n archiveId: number\n name: string\n exid: string\n errorMessage?: string\n status: ProjectStorageStatus\n}\n\nexport type ProjectStorage = {\n id: number\n exid: string\n name: string\n requester: string\n archiveTier: string\n scheduleAt: string\n endDate: string\n insertedAt: string\n cameras: ProjectStorageCamera[]\n}\n\nexport enum ProjectStorageStatus {\n New = \"new\",\n Pending = \"pending\",\n Processing = \"processing\",\n Completed = \"completed\",\n Failed = \"failed\",\n}\n\nexport type ProjectTransferOwnershipResponse = {\n project: {\n id: number\n exid: string\n name: string\n status: string\n userId: number\n zohoId: string | null\n }\n}\n\nexport type ProjectTeamMembersResponse = {\n exid?: string\n name?: string\n cameras?: Array<{\n exid?: string\n name?: string\n shares?: Array<{\n email?: string\n fullname?: string\n rights?: string\n }>\n }>\n}\n","import { ApiCredentials } from \"@evercam/api/types\"\nimport { CancelToken } from \"axios\"\n\nexport type Snapshot = {\n createdAt: string\n data: string | null\n status?: string\n}\n\nexport type SnapshotRequestPayload = {\n apiKey?: string\n apiId?: string\n token?: string\n cancelToken?: object\n includeImage?: boolean\n view?: boolean\n}\n\nexport type AvailableDaysRequestPayload = {\n cameraId: string\n year: string\n month: string\n payload?: ApiCredentials\n cancelToken?: CancelToken\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 | null\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}\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 const CloudRecordingDurationLabel: Record<\n CloudRecordingDuration,\n string\n> = {\n [CloudRecordingDuration.Infinity]:\n \"content.cloud_recording_duration.unlimited\",\n [CloudRecordingDuration.Day]: \"content.cloud_recording_duration.day\",\n [CloudRecordingDuration.Week]: \"content.cloud_recording_duration.week\",\n [CloudRecordingDuration.Month]: \"content.cloud_recording_duration.month\",\n [CloudRecordingDuration.ThreeMonths]:\n \"content.cloud_recording_duration.three_months\",\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 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 WgHub = \"WgHub\",\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 Ppe = \"ppe_roi\",\n}\n\nexport enum RoiShapeType {\n Polygon = \"polygon\",\n Line = \"line\",\n Direction = \"direction\",\n Rectangle = \"rectangle\",\n}\n\nexport type RoiShape = {\n id: number | null\n name: string\n x1: number\n x2: number\n y1: number\n y2: number\n points?: [number, 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 \"@evercam/api/types\"\nexport type RouterBillPayer = { name: string }\n\nexport type SimProvider = { name: string }\n\nexport type Router = {\n id?: number\n kitId: number | null\n kitSerial?: string\n kitName?: string\n routerType: string\n routerUserId: string\n routerPassword: string\n serialNumber: number | null\n rmsUrl?: string\n rmsId?: number\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\" | \"name\">[]\n cameras?: Pick<Camera, \"id\" | \"name\"> & { exid: string }[]\n lastSms?: string\n lastSmsAt?: string\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 kitSerial: string\n kitName: string\n cameras: string\n projects: string\n sims: string\n billPayers: string\n lastSms: string\n lastSmsAt: string\n hasBattery: string\n powerType: PowerType\n powerSchedule: PowerSchedule\n status: RouterStatus\n routerHttpPort: string\n sort: 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 \"@evercam/api/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 { PaginationParams } from \"@evercam/api/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: string\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: string\n type: string\n status: string\n text: string\n deliveredAt: string\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: string\n deliveryDatetime: string\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","import { GeoPoint, TuplePoint2D } from \"./shared\"\nimport { MapType } from \"./map\"\n\nexport type PlannerListItem = {\n id: string\n projectId: string\n projectName: string\n projectLocation: string\n createdDate: string\n updatedDate: string\n owner?: string\n lastUpdatedBy?: string\n camerasCount?: number\n hasPlan?: boolean\n thumbnailUrl?: string\n projectMapType?: MapType\n sessionId?: string\n}\n\nexport type PolygonPath = TuplePoint2D[]\n\nexport type PolygonCoordinates = PolygonPath[]\n\nexport interface GeoJSONPolygon {\n type: \"Polygon\"\n coordinates: PolygonCoordinates\n}\n\nexport enum PlannerUrlParams {\n SitePlanId = \"site_plan_id\",\n IsNewSitePlan = \"is_new_site_plan\",\n IsBoundsMode = \"is_bounds_mode\",\n ProjectPosition = \"project_position\",\n DealId = \"deal_id\",\n}\n\nexport 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\nexport type PlannerOverlay = {\n imageUrl?: string\n corners?: {\n topLeft: GeoPoint\n topRight: GeoPoint\n bottomLeft: GeoPoint\n bottomRight: GeoPoint\n } | null\n}\n\nexport type PlannerCameraMarker = {\n name?: string\n location?: GeoPoint\n heading?: number\n fovAngle?: number\n fovRadius?: number\n isVisible?: boolean\n color?: string\n}\n\nexport type SitePlanBounds = {\n northEast: GeoPoint\n southWest: GeoPoint\n}\n\nexport type SitePlan = {\n id?: string\n projectId?: string\n owner?: string\n lastUpdatedBy?: string\n projectName?: string\n projectLocation?: string\n projectMapType?: EMapTypes\n projectBounds?: SitePlanBounds\n overlay?: PlannerOverlay\n markers?: PlannerCameraMarker[]\n thumbnailUrl?: string\n createdDate?: string\n updatedDate?: string\n}\n\nexport interface IDrawControl {\n _toolbars: {\n draw: {\n _activeMode: { handler: { disable(): void; completeShape(): void } }\n _modes: { polygon: { handler: { enable(): void } } }\n }\n edit: {\n _modes: {\n edit: { handler: { enable(): void; disable(): void; save(): void } }\n }\n }\n }\n}\n","import type { DateType } from \"@evercam/api/types\"\n\nexport type StorageProviderS3Config = {\n accessKeyId: string\n secretAccessKey: string\n bucket: string\n region?: string\n}\n\nexport type StorageProviderSeaweedfsConfig = {\n jwtSigningKey?: string\n jwtReadSigningKey?: string\n}\n\nexport type StorageProviderConfig =\n | StorageProviderS3Config\n | StorageProviderSeaweedfsConfig\n\nexport type StorageProvider = {\n id?: number\n type: string\n provider: string\n startDate: DateType\n endDate: DateType\n url?: string\n config: StorageProviderConfig\n cameraId?: number\n insertedAt?: DateType\n updatedAt?: DateType\n}\n\nexport type StorageProvidersResponsePayload = {\n providers: StorageProvider[]\n}\n\nexport enum ProjectStorageProvider {\n Seaweedfs = \"seaweedfs\",\n S3 = \"s3\",\n}\n","import { KitMetricData } from \"@evercam/api/types\"\nexport type ExNvrLoginResponse = { accessToken: string }\n\nexport type ExNvrRecordingInterval = {\n active: boolean\n startDate: string\n endDate: string\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, Point2D, Schedule } from \"@evercam/api/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 TwoMinutes = 120,\n}\n\nexport type TimelapseVideoOptions = {\n width?: number\n height?: number\n removeTimestamp: boolean\n smoothTransition: boolean\n evercamWatermark: boolean\n sectionBlur?: boolean\n timestampPosition?: TimestampPositionCoordinates\n blurRegions?: BlurRegionCoordinates[]\n}\n\nexport type TimestampPositionCoordinates = {\n x: number\n y: number\n w: number\n h: number\n}\n\nexport type BlurRegionCoordinates = Point2D[]\n\nexport type TimelapseLogoOptions = {\n id?: number\n x: number\n y: number\n width: number\n height: number\n}\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?: Schedule\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 public?: boolean\n}\n\nexport type TimelapseCreationResponsePayload = {\n id: number\n exid: string\n camera: string\n fromDate: string\n toDate: string\n duration: number\n schedule: Schedule\n status: number\n requestor: string\n createdAt: string\n updatedAt: string\n notes?: string | null\n category?: string | null\n isUrgent?: boolean | null\n}\n\nexport type TimelapseArchiveResponse = {\n id: number\n exid: string\n cameraExid: string\n title: string\n fromDate: string\n toDate: string\n createdAt: string\n status: string\n requesterName: string\n requesterEmail: string\n public: boolean\n type: string\n format: string\n thumbnailUrl: string\n completedAt: string | null\n notes: string | null\n category: string | null\n isUrgent: boolean | null\n bucket: string\n sourceProduct: string | null\n featureType: string | null\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 { CameraExid, PaginationParams } from \"@evercam/api/types\"\nimport { Role, RoleSubRole } from \"@evercam/api/types/authz\"\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 | number\n companyName?: string\n companyExid?: string\n features?: Array<UserFeatureFlag>\n confirmedAt?: string\n createdAt?: string\n lastLoginAt?: string\n token?: string\n updatedAt?: string\n evercamAccount?: boolean\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: number\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: string\n integrations: string[]\n lastSeenAt: string\n lastLoginAt: string\n lastname: string\n persona: string\n projects: string[]\n projectsCount: number\n referralUrl?: string\n snapmailCount: number\n zohoId: string\n}\n\nexport enum UserFeatureFlag {\n CompanyAdmin = \"company-admin\",\n VideoWalls = \"video-walls\",\n MassCameraSharing = \"mass-camera-sharing\",\n 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 AuthPasswordOption = {\n type: \"password\"\n}\n\nexport type AuthSsoOption = {\n type: \"sso\"\n name: string\n scope: string\n prompt: string | null\n exid: string\n clientId: string\n iconUrl: string\n loginUrl: string\n responseType: string\n}\n\nexport type AuthOption = AuthPasswordOption | AuthSsoOption\n\nexport type AuthOptionsResponsePayload = {\n options: AuthOption[]\n}\n\nexport type AuthProviderConfigPayload = {\n name: string\n scope: string\n prompt: string | null\n exid: string\n clientId: string\n iconUrl: string\n loginUrl: string\n responseType: string\n}\n\nexport type LogoutParams = {\n token: string\n fromAdmin?: boolean\n}\n\nexport type ConfirmUserRequestPayload = {\n c: string\n}\n\nexport type DeleteActiveSessionRequestPayload = {\n authorization: string\n}\n\nexport enum UserSessionType {\n Password = \"password\",\n Impersonation = \"impersonation\",\n Sso = \"sso\",\n Widget = \"widget\",\n ApiKey = \"api_key\",\n OauthAccess = \"oauth_access\",\n OauthRefresh = \"oauth_refresh\",\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 type: UserSessionType\n impersonatedBy: string | null\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 SessionActivity = {\n id: number\n who: string\n action: string\n entity: string | null\n insertedAt: string\n userDetails: Record<string, unknown> | null\n details: Record<string, unknown> | null\n}\n\nexport type SessionActivitiesListRequestPayload = {\n action?: string\n entity?: string[]\n from?: string\n to?: string\n cameraId?: number\n routerId?: string\n sort?: string\n page?: number\n limit?: number\n}\n\nexport type SignupUserRequestPayload = {\n telephone: 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 newOwnerEmail?: string\n}\n\nexport type GoogleAuthRequestPayload = {\n code?: string\n redirectUri?: string\n idToken?: string\n}\n\nexport type ProjectContact = {\n name: string\n role: ContactRole | string\n email?: string\n phone?: string | null\n photo?: string\n}\n\nexport type ProjectContactsResponsePayload = {\n data: ProjectContact[]\n}\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 status?: string\n startedAt?: string\n insertedAt?: string\n endDate?: string | null\n timezone?: string\n archiveTier?: string | null\n featureFlags?: string[]\n companyId?: number | null\n camerasCount?: number\n camerasRestrictionType?: string | null\n geographicBounds?: unknown | null\n owner?: {\n id: number\n name: string\n email: string\n }\n}\n\nexport type UserProjectResponse = { data: UserProject[] }\n\nexport type AdminUserUpdateRequestPayload = {\n companyId?: number\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 roles?: number[]\n sort?: string\n}\n\nexport type Admin = {\n id: number\n fullname: string\n email: string\n createdAt: string\n updatedAt: string\n lastSignInAt: string\n signInCount: number\n lastSignInIp: string\n apiId: string\n apiKey: string\n roles?: string[]\n}\n\nexport type ImpersonateUserResponse = {\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 countryId?: number\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: string\n updatedAt: string\n}\n\ntype Email = string\n\nexport type WsAccessRestrictionUpdate = {\n camera_id: CameraExid\n is_access_restricted: boolean\n}\n\nexport type WsUserRestrictionItem = {\n user_id: number\n camera_id: CameraExid\n is_user_access_restricted: boolean\n}\n\nexport type WsUserRestrictionUpdate = WsUserRestrictionItem[]\n\n/**\n * Backend WebSocket event payload:\n * {\n * user: {\n * \"someone@domain.com\": {camera_id, is_access_restricted} OR [{...}, {...}]\n * }\n * }\n */\nexport type WsRestrictionChangedPayload = {\n user: Record<Email, WsAccessRestrictionUpdate | WsUserRestrictionUpdate>\n}\n\nexport type ProjectUserWithRole = {\n id: number\n email: string\n fullname: string\n company: { id: number; name: string; exid: string }\n persona: Persona\n permissions: string[]\n role: Role\n subRoles: RoleSubRole[]\n}\n","import { Camera, Media, PaginationParams } from \"@evercam/api/types\"\n\nexport enum VideoWallItemType {\n LiveView = \"live\",\n Video = \"video\",\n Image = \"image\",\n}\n\nexport type VideoWallItem<T extends Camera | Media = Camera> = {\n value: T\n type: VideoWallItemType\n}\n\nexport type VideoWallPresetGridConfig = {\n items: VideoWallPresetItem[]\n meta?: VideoWallPresetMeta\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 moved?: boolean\n}\n\nexport type VideoWallPresetMeta = {\n colNum: number\n rowCount: number\n tile: number\n template: string\n gridSize: number\n}\n\nexport type VideoWallSource = \"default\" | \"widget\"\n\nexport type VideoWall = {\n id: number\n exid: string\n name: string\n config: Record<string, unknown>\n insertedAt: string\n updatedAt: string\n source?: VideoWallSource\n user?: { id: number; firstname: string; lastname: string; email: string }\n}\n\nexport type VideoWallListParams = PaginationParams & {\n projectExid?: string\n id?: number\n exid?: string\n projectId?: number\n userId?: number\n name?: string\n project?: string\n user?: string\n source?: VideoWallSource\n}\n\nexport type VideoWallCreateUpdatePayload = {\n projectExid?: string\n name: string\n source?: VideoWallSource\n config?: Record<string, unknown>\n scope?: string\n}\n","import { DateType } from \"@evercam/api/types/time\"\n\nexport type HistoryWeatherRequestPayload = {\n day: string\n provider: WeatherProvider\n}\n\nexport type WeatherReportParams = {\n startDate?: string\n endDate?: string\n startHour?: string\n endHour?: string\n weatherConditionIds?: number[]\n weatherDescription?: string\n minTemp?: number\n maxTemp?: number\n minMinTemp?: number\n maxMinTemp?: number\n minMaxTemp?: number\n maxMaxTemp?: number\n minSunhour?: number\n maxSunhour?: number\n minTotalsnow?: number\n maxTotalsnow?: number\n minFeelsLike?: number\n maxFeelsLike?: number\n minMinFeelsLike?: number\n maxMinFeelsLike?: number\n minMaxFeelsLike?: number\n maxMaxFeelsLike?: number\n minPressure?: number\n maxPressure?: number\n minMinPressure?: number\n maxMinPressure?: number\n minMaxPressure?: number\n maxMaxPressure?: number\n minHumidity?: number\n maxHumidity?: number\n minMinHumidity?: number\n maxMinHumidity?: number\n minMaxHumidity?: number\n maxMaxHumidity?: number\n minClouds?: number\n maxClouds?: number\n minMinClouds?: number\n maxMinClouds?: number\n minMaxClouds?: number\n maxMaxClouds?: number\n minWindSpeed?: number\n maxWindSpeed?: number\n minMinWindSpeed?: number\n maxMinWindSpeed?: number\n minMaxWindSpeed?: number\n maxMaxWindSpeed?: number\n minMinWindDegree?: number\n maxMinWindDegree?: number\n minMaxWindDegree?: number\n maxMaxWindDegree?: number\n minMinWindchill?: number\n maxMinWindchill?: number\n minMaxWindchill?: number\n maxMaxWindchill?: number\n minMinWindgust?: number\n maxMinWindgust?: number\n minMaxWindgust?: number\n maxMaxWindgust?: number\n minPrecip?: number\n maxPrecip?: number\n minMinPrecip?: number\n maxMinPrecip?: number\n minMaxPrecip?: number\n maxMaxPrecip?: number\n minHeatindex?: number\n maxHeatindex?: number\n minMinHeatindex?: number\n maxMinHeatindex?: number\n minMaxHeatindex?: number\n maxMaxHeatindex?: number\n minDewpoint?: number\n maxDewpoint?: number\n minMinDewpoint?: number\n maxMinDewpoint?: number\n minMaxDewpoint?: number\n maxMaxDewpoint?: number\n minUvIndex?: number\n maxUvIndex?: number\n minMinUvIndex?: number\n maxMinUvIndex?: number\n minMaxUvIndex?: number\n maxMaxUvIndex?: number\n minChanceofrain?: number\n maxChanceofrain?: number\n minChanceofsnow?: number\n maxChanceofsnow?: number\n minChanceofremdry?: number\n maxChanceofremdry?: number\n minChanceofwindy?: number\n maxChanceofwindy?: number\n minChanceofovercast?: number\n maxChanceofovercast?: number\n minChanceofsunshine?: number\n maxChanceofsunshine?: number\n minChanceoffrost?: number\n maxChanceoffrost?: number\n minChanceofhightemp?: number\n maxChanceofhightemp?: number\n minChanceoffog?: number\n maxChanceoffog?: number\n minChanceofthunder?: number\n maxChanceofthunder?: number\n}\n\nexport enum WeatherReportScope {\n Hourly = \"hourly\",\n Daily = \"daily\",\n}\n\nexport type WeatherReportRequestPayload = WeatherReportParams & {\n scope?: WeatherReportScope\n includeRecent?: boolean\n}\n\nexport type CurrentWeatherRequestPayload = {\n provider: WeatherProvider\n includeForecast?: boolean\n forecastDays?: number\n}\n\nexport type WeatherHourlyItem = {\n chanceoffog: number\n chanceoffrost: number\n chanceofhightemp: number\n chanceofovercast: number\n chanceofrain: number\n chanceofremdry: number\n chanceofsnow: number\n chanceofsunshine: number\n chanceofthunder: number\n chanceofwindy: number\n clouds?: number\n dewpoint: number\n feelsLike?: number\n heatindex: number\n hour?: number\n humidity?: number\n isRequestedWeather?: boolean\n precip: number\n pressure?: number\n rain?: HourlyReading\n snow?: HourlyReading\n source: string\n temp?: number\n uvIndex: number\n weather?: WeatherSummary\n windchill: number\n windDegree?: number\n windDir: string\n windgust: number\n windSpeed?: number\n wind?: {\n speed: number\n }\n}\n\nexport type WeatherResponsePayload = Array<WeatherHourlyItem>\n\nexport type WeatherSummary = {\n id?: number\n main?: string\n description?: string\n temperature?: number\n icon?: string | string[]\n weatherIndex?: number\n rain?: HourlyReading\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: string\n totalsnow: number\n maxPressure: number\n maxWindchill: number\n maxHumidity: number\n avgtemp: number\n projectId: number\n minUvIndex: number\n}\n","import {\n CameraExid,\n DateType,\n ProjectExid,\n PaginationParams,\n TuplePoint3D,\n TuplePoint2D,\n} from \"@evercam/api/types\"\n\nexport enum CommentsScope {\n Recordings = \"recordings\",\n Project = \"project\",\n ThreeSixty = \"360\",\n Drone = \"drone\",\n Bim = \"bim\",\n Timeline = \"timeline\",\n}\n\nexport enum CommentsLabel {\n Info = \"Info\",\n Danger = \"Danger\",\n Restricted = \"Restricted\",\n Hyperlink = \"Hyperlink\",\n}\n\nexport type CommentsRequestPayload = {\n scope?: CommentsScope\n cameraExid?: CameraExid\n archived?: \"true\" | \"false\"\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 id?: number\n cameraExid?: CameraExid\n content?: string\n scope?: CommentsScope\n visibility?: string[]\n timestamp?: string\n fromTimestamp?: string\n toTimestamp?: string\n label?: CommentsLabel\n position2d?: TuplePoint2D\n position3d?: TuplePoint3D\n createdAt?: string\n archivedAt?: string\n creatorEmail?: string\n creatorName?: string\n context?: Record<string, unknown>\n projectExid?: ProjectExid\n updatedAt?: string\n canDelete?: boolean\n}\n\nexport type CommentCreationRequestPayload = {\n fromTimestamp?: DateType\n toTimestamp?: DateType\n timestamp?: DateType\n scope?: CommentsScope\n visibility?: string[]\n label?: CommentsLabel\n projectExid?: ProjectExid\n cameraExid?: CameraExid\n content: string\n position2d?: TuplePoint2D\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 CameraDateRangeFilter,\n} from \"@evercam/api/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 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 cameraExid: CameraExid\n trackings: 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 | number\n iouThreshold?: number\n fromDate: string\n toDate: string\n}\n\nexport type BaseCountsParams = {\n fromDate?: string\n toDate?: string\n precision?: TimelinePrecision\n trackId?: number\n labels?: DetectionLabel | DetectionLabel[]\n}\n\nexport type DetectionsCountsParams = BaseCountsParams & {\n cameraExids?: CameraExid[]\n projectExid?: ProjectExid\n modelId?: DetectionModel\n labels?: Label[]\n excludeLabels?: Label[]\n confidenceThreshold?: number\n mergedClasses?: string[]\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 SegmentsPresenceResponse = { intervals: SegmentsPresenceByLabel }\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 PpeV2 = 6,\n}\n","import { DateType } from \"@evercam/api/types\"\n\nexport enum Operator {\n AND = \"and\",\n OR = \"or\",\n}\n\ntype sortby = string\ntype sortDirection = \"asc\" | \"desc\"\n\nexport type SortingUrlParam = `${sortby}|${sortDirection}`\n\nexport type JsonPrimitive = string | number | boolean | null\n\nexport type JsonValue = JsonPrimitive | JsonObject | JsonArray\n\nexport type JsonObject = {\n [key: string]: JsonValue\n}\n\nexport type JsonArray = JsonValue[]\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 type BatteryReadingRequestPayload = {\n fromDate: string\n toDate: string\n sort?: string\n page?: number\n limit?: number\n}\n\nexport type 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 ScheduleUppercase = {\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 Schedule = ScheduleUppercase | ScheduleLowercase\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 = {\n id?: number\n user: string\n text: string\n type: string\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 TuplePoint2D = [number, number]\n\nexport type TuplePoint3D = [number, number, number]\n\nexport type Point2D = {\n x: number\n y: number\n}\n\nexport type Point3D = {\n x: number\n y: number\n z: number\n}\n\nexport type GeoPoint = {\n lat: number\n lng: number\n}\n\nexport type Exid = string\n\nexport type EntityByExid<Entity extends unknown> = Record<Exid, Entity>\n\nexport type BatteryVoltage = {\n date: DateType\n maxValue: number\n minValue: 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 DateType,\n Nvr,\n PaginationParams,\n PowerType,\n Project,\n Router,\n Schedule,\n Tag,\n} from \"@evercam/api/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 KitMetricStatsEntry = {\n timestamp: string\n voltage?: number\n current?: number\n panelVoltage?: number\n panelPower?: number\n yieldTotal?: number\n yieldToday?: number\n yieldYesterday?: number\n maxPowerToday?: number\n maxPowerYesterday?: number\n stateOfCharge?: number\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: Record<string, string>\n model: string\n vendor: string\n kitId: number\n capacity: number\n freeSpace: number\n tran: KitStorageTransport\n}\n\nexport type KitFootageRequestPayload = {\n cameraId?: number\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: string\n endDate: string | null\n}\n\nexport type KitBox = {\n id: string\n gatewaySerial: string\n gatewayMac: string\n gatewayConfig: Record<string, unknown> | null\n kitSerials?: string[]\n insertedAt: string\n updatedAt: string\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 hasKits?: boolean\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { CameraStatus, DateType, PaginationParams } from \"@evercam/api/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 enum AuditLogEntity {\n Cameras = \"cameras\",\n Projects = \"projects\",\n Layers = \"layers\",\n Routers = \"routers\",\n Sims = \"sims\",\n Hdds = \"hdds\",\n Nvr = \"nvr\",\n Archives = \"archives\",\n Users = \"users\",\n Rois = \"rois\",\n Kits = \"kits\",\n Roles = \"roles\",\n Tags = \"tags\",\n KitsTags = \"kits_tags\",\n Oauth = \"oauth\",\n StorageProviders = \"storage_providers\",\n}\n\nexport type AuditLogUserDetails = {\n agent?: string\n country?: string\n countryCode?: string\n ip?: string\n impersonatedBy?: string\n who?: string\n}\n\nexport type AuditLog = {\n id: number\n action: AuditLogActionType\n details: Record<string, unknown>\n insertedAt: DateType\n entity: string\n userDetails: AuditLogUserDetails\n who: string\n}\n\nexport type AuditLogsParams = PaginationParams & {\n from?: string\n to?: string\n action?: string[]\n entity?: string[]\n userId?: number\n userEmail?: string\n cameraId?: number\n routerId?: number\n byCamera?: string\n byRouter?: string\n byProject?: string\n byIp?: string\n}\n\nexport type CameraLogsQueryParams = {\n historyDays: number\n accountId?: string\n status: CameraStatus[]\n}\n\nexport type CameraLogItem = {\n start: DateType\n end: DateType\n state: CameraStatus\n status?: string\n}\n\nexport type CameraLog = {\n data: CameraLogItem[]\n measure: string\n}\n\nexport type CameraAuditLog = {\n who: string\n action: string\n userDetails: {\n agent?: string\n country?: string\n countryCode?: string\n ip?: string\n }[]\n details: Record<string, unknown>[]\n entity: string\n insertedAt: DateType\n}\n\nexport type CameraAuditLogsQueryParams = PaginationParams & {\n from?: string\n to?: string\n action?: string[]\n entity?: string[]\n userId?: number\n cameraId?: number\n routerId?: number\n byCamera?: string\n byRouter?: string\n byProject?: string\n}\n","import {\n CameraExid,\n DateType,\n PaginationParams,\n Schedule,\n} from \"@evercam/api/types\"\n\nexport type SnapshotExtractionQyeryParams = PaginationParams & {\n camera?: string\n cameraExid?: CameraExid\n status?: SnapshotExtractionStatus\n requestor?: string\n type?: SnapshotExtractionType\n from?: string\n to?: string\n sort?: string\n}\n\nexport enum SnapshotExtractionStatus {\n Cancelling = \"canceling\",\n Cancelled = \"cancelled\",\n Completed = \"completed\",\n Failed = \"failed\",\n Pending = \"pending\",\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 | null\n status: SnapshotExtractionStatus\n interval: number\n requestor: string\n jpegsToDropbox: boolean\n injectToCr: boolean\n schedule: Schedule\n createdAt: DateType\n jpegCount?: number\n expectedCount?: number\n uploadCounts?: {\n cr: number\n dropbox: number\n }\n obanJobId?: number | null\n}\n\nexport type SnapshotExtractionCreatePayload = {\n fromDate: DateType\n toDate: DateType\n interval: number\n schedule: Schedule\n type: SnapshotExtractionType\n requestor?: string\n jpegsToDropbox?: boolean\n injectToCr?: boolean\n}\n\nexport type SnapshotExtractionCreatedResponse = {\n id: number\n camera: string\n fromDate: DateType\n toDate: DateType\n interval: number\n schedule: Schedule\n status: number\n requestor: string\n jpegCount?: number\n expectedCount?: number\n uploadCounts?: {\n cr: number\n dropbox: number\n }\n createdAt: DateType\n updatedAt: 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 SnapshotEmailDeliveryRequestPayload = {\n snapshot: string\n recipients?: string[]\n message?: string\n}\n\nexport type SnapshotEmailDeliveryResponsePayload = {\n warning?: string\n}\n\nexport type DeleteSnapshotQueryParams = {\n fromDate: DateType\n toDate: DateType\n adminEmail: string\n adminFullname: string\n}\n\nexport type SnapshotTransfer = {\n id: number\n sourceCamera: SnapshotTransferCamera\n targetCamera: SnapshotTransferCamera\n fromDate: DateType\n toDate: DateType\n overwriteExisting?: boolean | null\n deleteSource?: boolean | null\n requestor: SnapshotTransferRequestor\n status: SnapshotTransferStatus\n insertedAt: DateType\n attempts?: number | null\n errorMessage?: string | null\n snapshotsTransferred?: number | null\n}\n\nexport type SnapshotTransferCamera = {\n id: number\n exid: CameraExid\n name: string\n}\n\nexport type SnapshotTransferRequestor = {\n id?: number\n email: string\n firstname: string\n lastname: string\n}\n\nexport enum SnapshotTransferStatus {\n Completed = \"completed\",\n Failed = \"failed\",\n Processing = \"processing\",\n Pending = \"pending\",\n Cancelled = \"cancelled\",\n}\n\nexport type TransferCloudRecordingsQueryParams = {\n targetCameraExid: CameraExid\n fromDate: DateType\n toDate: DateType\n overwriteExisting?: boolean\n deleteSource?: boolean\n adminEmail?: string\n adminFullname?: string\n}\n\nexport type SnapshotTransferIndexParams = PaginationParams & {\n sourceCamera?: string\n targetCamera?: string\n status?: SnapshotTransferStatus\n requestor?: string\n fromDate?: DateType\n toDate?: DateType\n}\n","import {\n BBox,\n BoundingBox,\n DateType,\n Schedule,\n ScheduleLowercase,\n CameraExid,\n DetectionModel,\n PaginationParams,\n PpeLabel,\n ProjectExid,\n CameraDateRangeFilter,\n CameraFeatureFlag,\n TimelineDateInterval,\n Camera,\n AdminCamera,\n _360FloorV2,\n _360FloorId,\n PaginatedItems,\n DateRangeFilter,\n TuplePoint2D,\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 SmartSearchObjectPart = {\n id?: string\n type: SmartSearchComponentType.Object\n value: DetectionLabel\n}\n\nexport type SmartSearchOperatorPart = {\n id?: string\n type: SmartSearchComponentType.Operator\n value: SmartSearchOperatorType\n}\n\nexport type SmartSearchConditionPart = {\n id?: string\n type: SmartSearchComponentType.Condition\n value: SmartSearchCondition | SmartSearchConditionData\n}\n\nexport type SmartSearchViewPart = {\n id?: string\n type: SmartSearchComponentType.View\n value: SiteAnalyticsView\n}\n\nexport type SmartSearchAreaPart = {\n id?: string\n type: SmartSearchComponentType.Area\n value: BBox\n}\n\nexport type SmartSearchTimePart = {\n id?: string\n type: SmartSearchComponentType.Time\n value: Schedule | ScheduleLowercase\n}\n\nexport type SmartSearchDateRangePart = {\n id?: string\n type: SmartSearchComponentType.DateRange\n value: DateRangeFilter\n}\n\nexport type SmartSearchPart =\n | SmartSearchObjectPart\n | SmartSearchOperatorPart\n | SmartSearchConditionPart\n | SmartSearchViewPart\n | SmartSearchAreaPart\n | SmartSearchTimePart\n | SmartSearchDateRangePart\n\nexport type SmartSearchPartOrGroup = SmartSearchPart | SmartSearchPart[]\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 SmartSearchComponentData = {\n id: string\n type: SmartSearchComponentType\n parts: SmartSearchPartOrGroup[]\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\ntype SmartSearchBackendConditionBase = {\n target: SmartSearchTargets\n}\n\nexport type SmartSearchSelectionCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.Selection\n operator: SmartSearchOperators\n attribute: string\n value: string | number | string[]\n}\n\nexport type SmartSearchSpatialCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.Spatial\n operator: SmartSearchOperators\n reference: {\n target: SmartSearchTargets\n attribute: string\n value: string | number | string[]\n }\n}\n\nexport type SmartSearchAreaCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.Area\n operator: SmartSearchOperators\n polygon: BBox\n}\n\nexport type SmartSearchGeoAreaCondition = SmartSearchBackendConditionBase & {\n type: SmartSearchConditionTypes.GeoArea\n operator: SmartSearchOperators\n polygon: BBox\n}\n\nexport type SmartSearchBackendQueryCondition =\n | SmartSearchSelectionCondition\n | SmartSearchSpatialCondition\n | SmartSearchAreaCondition\n | SmartSearchGeoAreaCondition\n\nexport type SmartSearchBackendQuery = {\n returnTargets: SmartSearchTargets[]\n rulesLogic: SmartSearchOperatorType\n rules: {\n logic: SmartSearchOperatorType\n conditions: SmartSearchBackendQueryCondition[]\n }[]\n returnType: SmartSearchReturnType\n timeSchedule?: Schedule\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 | DateRangeFilter\n | SiteAnalyticsView\n\nexport type SmartSearchBackendQueryPayload = {\n name: string\n description: string\n query: SmartSearchBackendQuery\n fromDate?: DateType\n toDate?: DateType\n author: string\n createdAt: DateType\n params?: { start: string; end: string }\n}\n\nexport type SavedQuery = {\n description: string\n id: number\n query: SmartSearchBackendQuery\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?: string\n toDate?: string\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: TuplePoint2D\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\nexport type SiteAnalyticsCameraView = {\n type: SiteAnalyticsViewType.Camera\n id: CameraExid\n value: Camera | AdminCamera\n}\n\nexport type SiteAnalytics360View = {\n type: SiteAnalyticsViewType.ThreeSixty\n id: _360FloorId\n value: _360FloorV2\n}\n\nexport type SiteAnalyticsView = SiteAnalyticsCameraView | SiteAnalytics360View\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 limit?: 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> = PaginatedItems<SmartSearchResultItemByType[R]>\n\nexport type SmartSearchMinifiedPart = {\n t: SmartSearchComponentType\n v: unknown\n}\n\nexport type SmartSearchMinifiedComponent = {\n t: SmartSearchComponentType\n p: SmartSearchMinifiedPart[]\n}\n","import { CameraExid, PaginationParams } from \"@evercam/api/types\"\nimport type { JsonObject } from \"@evercam/api/types\"\nimport { VideoWallPresetGridConfig } 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: [string, string] | 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 VideoWallWidgetSettingsObject = CommonWidgetSettings & {\n preset: VideoWallPresetGridConfig\n refreshRate: number\n allowCellFullscreen: boolean\n allowFitContent: boolean\n allowForceAspectRatio: boolean\n allowFullscreen: boolean\n cameras: CameraExid[]\n description: string\n global: boolean\n visibility: string\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 | VideoWallWidgetSettingsObject\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 id?: number\n projectExid?: string\n projectId?: string\n cameraId?: string\n presetId?: string\n active?: boolean\n widgetType?: WidgetType\n domainRestricted?: boolean\n allowedOrigin?: string\n ressources?: string\n user?: string\n showDashboardLink?: boolean\n public?: boolean\n name?: string\n description?: string\n}\n\nexport type Widget = {\n id: number\n ressources: {\n camera?: {\n id: number\n exid: string\n name: string\n status?: string\n }\n project?: {\n id: number\n exid: string\n name: string\n featureFlags?: string[]\n }\n preset?: {\n id: number\n exid: string\n name: string\n config?: JsonObject\n }\n }\n createdBy?: {\n firstname: string\n lastname: string\n email: string\n }\n name?: string\n description?: string\n widgetType: WidgetType\n domainRestricted: boolean\n showDashboardLink?: boolean\n public?: boolean\n active: boolean\n settings: WidgetSettings\n sessionSettings?: JsonObject | null\n allowedOrigin?: string | null\n restrictedCameraExids?: string[]\n restrictionsType?: string\n insertedAt: string\n updatedAt: string\n seenAt?: string | null\n}\n\nexport type WidgetFull = Widget & {\n widgetKey: string\n widgetId: string\n}\n\nexport type WidgetSessionSettingsPayload = {\n sessionSettings: JsonObject\n}\n\nexport type AdminWidgetResourceCamera = {\n id: number\n exid: string\n name: string\n}\n\nexport type AdminWidgetResourceProject = {\n id: number\n exid: string\n name: string\n featureFlags: string[]\n}\n\nexport type AdminWidgetResourcePreset = {\n id: number\n name: string\n exid: string\n config: JsonObject\n}\n\nexport type AdminWidgetResources = {\n camera?: AdminWidgetResourceCamera | null\n project?: AdminWidgetResourceProject | null\n preset?: AdminWidgetResourcePreset | null\n}\n\nexport type AdminWidgetUser = {\n id: number\n email: string\n firstname: string\n lastname: string\n}\n\nexport type AdminWidget = {\n id: number\n active: boolean\n public: boolean\n user: AdminWidgetUser\n description: string | null\n insertedAt: string\n updatedAt: string\n settings: WidgetSettings\n ressources: AdminWidgetResources\n seenAt?: string\n showDashboardLink?: boolean\n domainRestricted: boolean\n widgetType: WidgetType\n allowedOrigin: string | null\n}\n\nexport type AdminWidgetFull = AdminWidget & {\n widgetKey: string\n widgetId: string\n}\n\nexport type WidgetPayload = {\n ressources: {\n camera?: { exid: string }\n project?: { exid: string }\n preset?: { exid: string }\n }\n widgetType: WidgetType\n name?: string\n description?: string\n showDashboardLink?: boolean\n public?: boolean\n active?: boolean\n settings?: WidgetSettings\n domainRestricted?: boolean\n allowedOrigin?: string | null\n sessionSettings?: JsonObject | null\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 GateReport = \"gate_report\",\n}\n\nexport type AutomationCompareConfig = {\n compareDelay: number\n}\n\nexport type AutomationEmailRecipient = string | { email: string }\nexport type AutomationGateReportConfig = {\n projectExid: string\n vehicleTypes: string[]\n fileType: string\n period: number\n columns: string[]\n recipients: string | string[]\n}\n\nexport type AutomationEmailProviderConfig = {\n cameraExids?: CameraExid[]\n recipients: string | AutomationEmailRecipient[]\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 =\n | AutomationCompareConfig\n | AutomationGateReportConfig\n | {}\n\nexport type AutomationConfig = AutomationProviderConfig &\n AutomationOptionsConfig\n\nexport type Automation = {\n id?: number\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\nexport type AutomationProviderOption = {\n labelTranslationKey: string\n descriptionTranslationKey: string\n value: AutomationProvider\n icon: string\n iconSize?: string\n requiresConnection: boolean\n}\n\nexport type FormattedAutomation = {\n cameraExids: string\n name: string\n subject: string\n provider: AutomationProvider\n type: AutomationType\n config: Partial<AutomationProviderConfig> & Partial<AutomationOptionsConfig>\n notifyDays: string\n notifyTime: string\n timezone: string\n isPaused: boolean\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\nexport type PosthogUserParams = {\n firstname?: string\n lastname?: string\n email: string\n telephone?: string\n country?: string\n isAdmin?: boolean\n persona?: string\n companyExid: string\n companyName: string\n isImpersonationLogin: boolean\n ImpersonatedUserEmail?: string\n ImpersonatedUserFirstname?: string\n impersonatedUserLastname?: string\n}\n","export enum RoleResourceType {\n App = \"app\",\n Camera = \"camera\",\n Project = \"project\",\n}\n\nexport type RoleSubRole = {\n resourceId: string\n roleId: number\n roleName?: string\n permissions?: string[]\n}\n\nexport type Role = {\n id: number\n name: string\n description?: string | null\n resource?: string\n resourceType: RoleResourceType\n resourceId?: string | null\n permissions: string[]\n subRoles?: RoleSubRole[]\n isDefault?: boolean\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 = {\n name: string\n permissions: string[]\n subRoles?: RoleSubRole[]\n}\n\nexport type AuthzRoleUser = {\n email: string\n resourceId: string\n}\n\nexport type AuthzUserRolesResponse = {\n roles: Role[]\n}\n\nexport type AuthzScopePermission = {\n id: number\n action: string\n exid: string\n}\n\nexport type AuthzScope = {\n id: number\n name: string\n description: string | null\n permissions: AuthzScopePermission[]\n app: string\n exid: string\n}\n\nexport type AuthzScopeCreatePayload = {\n name: string\n description?: string\n permissions: string[]\n}\n\nexport type AuthzScopeUpdatePayload = Partial<AuthzScopeCreatePayload>\n\nexport function isProjectRole(role: Role): role is ProjectResourceRole {\n return role.resourceType === RoleResourceType.Project\n}\n\nexport function isCameraRole(role: Role): role is CameraResourceRole {\n return role.resourceType === RoleResourceType.Camera\n}\n","import { ForgeView } from \"@evercam/api/types/360\"\nimport { Point2D, Point3D } from \"@evercam/api/types/shared\"\n\nexport enum SiteViewSoftwareType {\n Revit = \"Revit\",\n Navisworks = \"Navisworks\",\n Drone = \"Drone\",\n Synchro = \"Synchro\",\n}\n\nexport enum SiteViewerType {\n ITwin = \"iTwin\",\n Cesium = \"Cesium\",\n Forge = \"Forge\",\n}\n\nexport type SiteViewCameraListItem = {\n projectId: string\n projectName: string\n software: SiteViewSoftwareType\n type: SiteViewerType\n uniqueId: string\n integrationType?: string\n}\n\nexport type ForgeUrn = {\n displayName: string\n urn: string\n isModelHostedByEvercamACC?: boolean\n}\n\nexport type ForgeAccAlignmentData = {\n bbox: {\n min: Point2D\n max: Point2D\n }\n transform: number[]\n}\n\nexport type TimelineItem = {\n taskNumber: number\n taskID: string\n actualStartDate: string\n actualEndDate: string\n plannedStartDate: string\n plannedEndDate: string\n objectIDs: number[]\n}\n\nexport type ForgeMarkerTransform = {\n default: {\n position: Point3D\n type: string\n }\n}\n\nexport type ForgeMarker = {\n name: string\n cameraExid: string\n transforms: ForgeMarkerTransform\n}\n\nexport type ForgeProjectData = {\n urns?: ForgeUrn[]\n accDrawingsAlignments?: Record<string, ForgeAccAlignmentData>\n timeline?: TimelineItem[]\n savedView?: ForgeView\n markers?: ForgeMarker[]\n}\n\nexport type ItwinModel = {\n name: string\n iTwinId: string\n iModelId: string\n changeSetId?: string\n isIModel: boolean\n height?: number\n cesiumId?: number\n markerDistanceThreshold: number\n}\n\nexport type ItwinProjectData = {\n models: ItwinModel[]\n}\n","export enum AiApp {\n GateReport = \"gate_report\",\n Ppe = \"ppe\",\n SiteAnalytics = \"site_analytics\",\n}\n\nexport enum AiProvider {\n Gemini = \"gemini\",\n OpenAi = \"openai\",\n Anthropic = \"anthropic\",\n}\n\nexport enum AiConfigsPromptDialogMode {\n Create = \"create\",\n Edit = \"edit\",\n View = \"view\",\n}\n\nexport enum AiConfigsKeyDialogMode {\n Create = \"create\",\n Rotate = \"rotate\",\n Rename = \"rename\",\n}\n\nexport interface AiAppConfig {\n bg: string\n fg: string\n border: string\n icon: string\n}\n\nexport const AI_APP_CONFIGS: Record<AiApp | \"generic\", AiAppConfig> = {\n [AiApp.GateReport]: {\n bg: \"#ecfdf5\",\n fg: \"#047857\",\n border: \"#a7f3d0\",\n icon: \"fa-truck\",\n },\n [AiApp.Ppe]: {\n bg: \"#fff7ed\",\n fg: \"#c2410c\",\n border: \"#fed7aa\",\n icon: \"fa-helmet-safety\",\n },\n [AiApp.SiteAnalytics]: {\n bg: \"#eff6ff\",\n fg: \"#1d4ed8\",\n border: \"#bfdbfe\",\n icon: \"fa-chart-simple\",\n },\n generic: {\n bg: \"#f1f5f9\",\n fg: \"#334155\",\n border: \"#cbd5e1\",\n icon: \"fa-cube\",\n },\n}\n\nexport interface AiProviderConfig {\n bg: string\n fg: string\n icon: string\n}\n\nexport const AI_PROVIDER_CONFIGS: Record<AiProvider, AiProviderConfig> = {\n [AiProvider.Gemini]: { bg: \"#dbeafe\", fg: \"#1d4ed8\", icon: \"fa-gem\" },\n [AiProvider.OpenAi]: { bg: \"#dcfce7\", fg: \"#15803d\", icon: \"fa-robot\" },\n [AiProvider.Anthropic]: { bg: \"#fef3c7\", fg: \"#a16207\", icon: \"fa-brain\" },\n}\n\nexport enum AiPromptModel {\n Gemini3Pro = \"gemini-3-pro\",\n Gemini3FlashPreview = \"gemini-3-flash-preview\",\n Gemini25Pro = \"gemini-2.5-pro\",\n Gemini25Flash = \"gemini-2.5-flash\",\n Gemini20Flash = \"gemini-2.0-flash\",\n Gpt5 = \"gpt-5\",\n Gpt5Mini = \"gpt-5-mini\",\n Gpt4o = \"gpt-4o\",\n Gpt4oMini = \"gpt-4o-mini\",\n ClaudeOpus45 = \"claude-opus-4-5\",\n ClaudeSonnet46 = \"claude-sonnet-4-6\",\n ClaudeHaiku45 = \"claude-haiku-4-5\",\n}\n\nexport interface AiPrompt {\n id: number\n title: string | null\n purpose: string | null\n app: string | null\n model: string | null\n prompt: string\n outputSchema: Record<string, unknown> | null\n createdBy: string\n createdAt: string\n updatedAt: string\n}\n\nexport interface AiPromptCreatePayload {\n title?: string | null\n purpose: string\n app: string\n model?: string | null\n prompt: string\n outputSchema?: Record<string, unknown> | null\n}\n\nexport interface AiPromptUpdatePayload {\n title?: string | null\n purpose?: string\n app?: string\n model?: string | null\n prompt?: string\n outputSchema?: Record<string, unknown> | null\n}\n\nexport type AiPromptQueryParams = {\n app?: string\n purpose?: string\n model?: string\n search?: string\n createdBy?: string\n page?: number\n limit?: number\n}\n\nexport interface AiPromptListResponse {\n items: AiPrompt[]\n total: number\n page: number\n limit: number\n from: number\n to: number\n}\n\nexport interface AiPromptCreateResponse {\n created: boolean\n data: AiPrompt\n message: string\n}\n\nexport interface AiPromptUpdateResponse {\n updated: boolean\n id: number | string\n message: string\n}\n\nexport interface AiPromptDeleteResponse {\n deleted: boolean\n count: number\n message: string\n}\n\nexport interface AiApiKey {\n id: number\n projectExid: string\n provider: string\n name: string\n purpose: string\n enabled: boolean\n autoGenerated: boolean\n firstUsedAt: string | null\n lastUsedAt: string | null\n insertedAt: string\n updatedAt: string\n}\n\nexport interface AiApiKeyCreatePayload {\n projectExid: string\n provider: string\n name?: string\n purpose?: string\n apiKey?: string\n enabled?: boolean\n}\n\nexport interface AiApiKeyUpdatePayload {\n name?: string\n enabled?: boolean\n apiKey?: string\n}\n\nexport type AiApiKeyQueryParams = {\n projectExid?: string\n provider?: string\n purpose?: string\n enabled?: boolean\n}\n\nexport interface AiApiKeyCreateResponse {\n created: boolean\n data: AiApiKey\n message: string\n}\n\nexport interface AiApiKeyUpdateResponse {\n updated: boolean\n id: number | string\n message: string\n}\n\nexport interface AiApiKeyDeleteResponse {\n deleted: boolean\n count: number\n message: string\n}\n","import { CameraExid, DateType, ProjectExid } from \"@evercam/api/types\"\n\nexport enum VehicleClassifierSource {\n Local = \"local\",\n Api = \"api\",\n}\n\nexport type GateReportCoolifyStatus = {\n appUuid: string | null\n name: string | null\n serverUuid: string | null\n serverName: string | null\n appUrl: string | null\n status: string | null\n isRunning: boolean\n imageTag?: string | null\n fqdn: string | null\n updatedAt: string | null\n}\n\nexport type GateReportProjectMeta = {\n exid: ProjectExid\n name: string | null\n timezone: string | null\n featureFlags: string[] | null\n}\n\nexport type GateReportCameraMeta = {\n exid: CameraExid\n name: string | null\n status: string | null\n kitSerial: string | null\n kitAlarms: string[] | Record<string, unknown> | null\n}\n\nexport type GateReportManagedApp = {\n id: number\n projectExid: ProjectExid\n anprCameraExid: CameraExid\n contextCameraExid: CameraExid | null\n coolifyAppId: string | null\n\n startDate: DateType | null\n endDate: DateType | null\n startHour: number\n endHour: number\n\n enabled: boolean\n enableEnrichments: boolean\n enableGemini: boolean\n geminiStartHour: number\n geminiEndHour: number\n\n reviewModel: string\n enrichmentModel: string\n reviewerPromptSlug: string | null\n\n geminiTimeoutSeconds: number\n geminiMaxAttempts: number\n\n vehicleClassifierSource: VehicleClassifierSource\n\n snapshotDelaySeconds: number\n snapshotRequestTimeout: number\n\n plateClassifierThreshold: number\n plateClassifierHighConfidence: number\n\n maxPriorEvents: number\n recordsFetchInterval: number\n priorRecentLimit: number\n priorSimilarLimit: number\n\n insertedAt: DateType\n updatedAt: DateType\n\n coolify: GateReportCoolifyStatus | null\n project: GateReportProjectMeta | null\n anprCamera: GateReportCameraMeta | null\n contextCamera: GateReportCameraMeta | null\n\n anprHasRoi: boolean\n contextHasRoi: boolean\n\n lastProcessedEventAt: DateType | null\n lastUnprocessedEventAt: DateType | null\n}\n\nexport type GateReportAppEvents = {\n anprCameraExid: CameraExid\n lastProcessedEventAt: DateType | null\n lastUnprocessedEventAt: DateType | null\n}\n\nexport type AppConfigFormValue = {\n contextCameraExid: string | null\n startDate: DateType | null\n endDate: DateType | null\n startHour: number\n endHour: number\n enabled: boolean\n enableEnrichments: boolean\n enableGemini: boolean\n geminiStartHour: number\n geminiEndHour: number\n reviewModel: string\n enrichmentModel: string\n reviewerPromptSlug: string | null\n geminiTimeoutSeconds: number\n geminiMaxAttempts: number\n vehicleClassifierSource: VehicleClassifierSource\n snapshotDelaySeconds: number\n snapshotRequestTimeout: number\n plateClassifierThreshold: number\n plateClassifierHighConfidence: number\n recordsFetchInterval: number\n priorRecentLimit: number\n priorSimilarLimit: number\n}\n\nexport type CreateGateReportAppPayload = {\n projectExid: ProjectExid\n anprCameraExid: CameraExid\n contextCameraExid?: CameraExid | null\n\n coolifyServerUuid: string\n imageTag?: string\n geminiApiKey?: string | null\n\n startDate?: DateType | null\n endDate?: DateType | null\n startHour?: number\n endHour?: number\n\n enabled?: boolean\n enableEnrichments?: boolean\n enableGemini?: boolean\n geminiStartHour?: number\n geminiEndHour?: number\n\n reviewModel?: string\n enrichmentModel?: string\n reviewerPromptSlug?: string | null\n\n geminiTimeoutSeconds?: number\n geminiMaxAttempts?: number\n\n vehicleClassifierSource?: VehicleClassifierSource\n\n snapshotDelaySeconds?: number\n snapshotRequestTimeout?: number\n\n plateClassifierThreshold?: number\n plateClassifierHighConfidence?: number\n\n maxPriorEvents?: number\n recordsFetchInterval?: number\n priorRecentLimit?: number\n priorSimilarLimit?: number\n}\n\nexport type UpdateGateReportAppPayload = Partial<\n Omit<\n CreateGateReportAppPayload,\n \"projectExid\" | \"anprCameraExid\" | \"coolifyServerUuid\" | \"geminiApiKey\"\n >\n>\n\nexport type GateReportManagementListParams = {\n projectExid?: ProjectExid\n includeStatus?: boolean\n page?: number\n limit?: number\n}\n\nexport type CoolifyProjectOption = {\n uuid: string\n name: string\n description: string | null\n}\n\nexport type CoolifyServerOption = {\n uuid: string\n name: string\n isReachable: boolean\n isUsable: boolean\n}\n\nexport enum AppRuntimeState {\n Running = \"running\",\n Stopped = \"stopped\",\n Restarting = \"restarting\",\n}\n\nexport type AppRuntimeStateRequest = {\n state: AppRuntimeState\n}\n\nexport type AppActionResponse = {\n success: boolean\n message: string | null\n appUuid: string | null\n state: AppRuntimeState | null\n}\n\nexport type APIEnvelope<T> = {\n success: boolean\n data: T | null\n message: string\n}\n\nexport type CreateGateReportAppResponse = {\n created: boolean\n id: number | null\n data: GateReportManagedApp | null\n count: number | null\n message: string\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 request?.headers?.common &&\n !(\n axiosEnv.forgeTokenServerUrl &&\n (request.url || \"\").startsWith(axiosEnv.forgeTokenServerUrl as string)\n )\n ) {\n const commonHeaders = request.headers.common as unknown as {\n \"iframe-origin\"?: string\n }\n commonHeaders[\"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 const req = store.get(key);\n req.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 req.onerror = () => reject(req.error);\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 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 \"@evercam/api/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 \"@evercam/api/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\nconst CANCEL_REASON = \"Operation canceled due to new request\"\n\nfunction createRequestManager() {\n const requests = new Map<string, CancelTokenSource>()\n\n return {\n createToken(key: string): CancelTokenSource[\"token\"] {\n requests.get(key)?.cancel(CANCEL_REASON)\n\n const source = axios.CancelToken.source()\n requests.set(key, source)\n\n return source.token\n },\n cancelAll(): void {\n requests.forEach((source) => source.cancel(CANCEL_REASON))\n requests.clear()\n },\n }\n}\n\naxios.createRequestManager = createRequestManager\naxios.requestManager = createRequestManager()\n\nexport { axios }\n","import {\n FootageCreateUpdatePayload,\n HDDCreateUpdatePayload,\n HDDsQueryParams,\n HddDetail,\n HddFootageItem,\n} from \"@evercam/api/types/hdd\"\nimport { axios } from \"./client\"\nimport type {\n OAuthClient,\n OAuthClientWithSecret,\n AdminCreateOAuthClientPayload,\n UpdateOAuthClientPayload,\n} from \"@evercam/api/types/oauth\"\nimport type {\n CamerasResponsePayload,\n CameraUpdateRequestPayload,\n PaginatedItems,\n AdminCamera,\n AdminProjectDetail,\n AdminProjectListItem,\n AdminHdd,\n AdminUser,\n ProgressPhotosCreateUpdateRequestPayload,\n Kit,\n PatchPayload,\n MediaFilterQueryParams,\n Media,\n MediaDeleteRequestPayload,\n AuditLogsParams,\n AuditLog,\n SnapshotExtractionQyeryParams,\n SnapshotExtraction,\n SnapshotExtractionCreatePayload,\n SnapshotExtractionCreatedResponse,\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 CompanySummary,\n CompanyUpdatePayload,\n CompanyUpdateResponse,\n SsoProvider,\n SsoUpdatePayload,\n SsoCreatePayload,\n SuppressionsQueryParams,\n Suppression,\n SnapshotExtractionType,\n KitQueryParams,\n KitCreatePayload,\n KitMetricStatsEntry,\n CameraLogsQueryParams,\n CameraLog,\n CameraAuditLogsQueryParams,\n CameraAuditLog,\n NvrQueryParams,\n Nvr,\n NvrSetting,\n SiteVisitCamerasQueryParams,\n OfflineCameraQueryParams,\n OfflineCamera,\n OfflineCameraNoteResponse,\n UserStatsResponse,\n UserCameraResponse,\n UserProjectResponse,\n ProjectMembersResponsePayload,\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 SmsHistory,\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 AdminWidget,\n AdminWidgetFull,\n WidgetPayload,\n PaginationParams,\n KitStorageRequestPayload,\n AdminCompanyUser,\n AdminCompanyProject,\n CompanyKit,\n CompanyCameraSummary,\n KitStorage,\n KitFootageRequestPayload,\n CommentsListRequestPayload,\n Comment,\n KitFootage,\n KitAlarmItem,\n RecycleBin,\n RecycleBinQueryParams,\n TransferCloudRecordingsQueryParams,\n SnapshotTransfer,\n SnapshotTransferIndexParams,\n CheckCameraPortPayload,\n CheckCameraPortResponse,\n CameraStatusLog,\n KitBox,\n KitBoxCreatePayload,\n KitBoxQueryParams,\n AdminInviteQueryParams,\n AdminInviteListResponse,\n AdminSearchItem,\n WithZohoParams,\n ZohoDeskTicketSearchResponse,\n JsonObject,\n ProjectStorageQueryParams,\n ProjectStorage,\n StorageProvider,\n AnprExtraction,\n AnprExtractionCreatePayload,\n} from \"@evercam/api/types\"\n\nimport { KitMetricId } from \"@evercam/api/types\"\nimport { Tag } from \"@evercam/api/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(cameraId: string, device: string): Promise<void> {\n return axios.post(`/admin/devices/${device}/${cameraId}/focus`)\n },\n getStorageProviders(\n cameraId: string,\n params?: AxiosRequestConfig & { params?: { unmaskSecretKeys?: boolean } }\n ): Promise<StorageProvider[]> {\n return axios.get(`/admin/cameras/${cameraId}/storage-providers`, params)\n },\n createStorageProvider(\n cameraId: string,\n payload: StorageProvider\n ): Promise<StorageProvider> {\n return axios.post(`/admin/cameras/${cameraId}/storage-providers`, payload)\n },\n updateStorageProvider(\n cameraId: string,\n providerId: number,\n payload: StorageProvider\n ): Promise<StorageProvider> {\n return axios.put(\n `/admin/cameras/${cameraId}/storage-providers/${providerId}`,\n payload\n )\n },\n getStorageDetails(): Promise<JsonObject> {\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<AdminCamera> {\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<SnapshotTransfer> {\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<CameraNote> {\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<CheckCameraPortResponse> {\n return axios.get(\"/admin/cameras/port-check\", payload)\n },\n },\n companies: {\n show(\n id: string,\n config: AxiosRequestConfig & { params?: WithZohoParams } = {}\n ): Promise<CompanySummary> {\n return axios.get(`/admin/companies/${id}`, config)\n },\n getCompanyUsers(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<AdminCompanyUser>> {\n return axios.get(`/admin/companies/${id}/users`, params)\n },\n getCompanyProjects(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<AdminCompanyProject>> {\n return axios.get(`/admin/companies/${id}/projects`, params)\n },\n getCompanyKits(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<CompanyKit>> {\n return axios.get(`/admin/companies/${id}/kits`, params)\n },\n getCompanyCameras(\n id: string,\n params: AxiosPaginationRequestParams\n ): Promise<PaginatedItems<CompanyCameraSummary>> {\n return axios.get(`/admin/companies/${id}/cameras`, params)\n },\n getCompanies(params: {\n params: Partial<CompanyQueryParams>\n }): Promise<PaginatedItems<CompanySummary>> {\n return axios.get(\"/admin/companies\", params)\n },\n updateCompany(\n id: string,\n params: CompanyUpdatePayload\n ): Promise<CompanyUpdateResponse> {\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 },\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 oauthClients: {\n index(): Promise<{ items: OAuthClient[] }> {\n return axios.get(\"/admin/oauth/clients\")\n },\n show(id: number): Promise<OAuthClient> {\n return axios.get(`/admin/oauth/clients/${id}`)\n },\n create(\n payload: AdminCreateOAuthClientPayload\n ): Promise<OAuthClientWithSecret> {\n return axios.post(\"/admin/oauth/clients\", payload)\n },\n update(\n id: number,\n payload: UpdateOAuthClientPayload\n ): Promise<OAuthClient> {\n return axios.patch(`/admin/oauth/clients/${id}`, payload)\n },\n delete(id: number): Promise<void> {\n return axios.delete(`/admin/oauth/clients/${id}`)\n },\n regenerateSecret(id: number): Promise<OAuthClientWithSecret> {\n return axios.post(`/admin/oauth/clients/${id}/regenerate-secret`)\n },\n },\n emailing: {\n performEmailing(template: string, params: JsonObject): Promise<void> {\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: JsonObject): Promise<void> {\n return axios.post(`/admin/cameras/${cameraId}/cloud-recordings`, params)\n },\n addExtraction(\n cameraId: string,\n params: SnapshotExtractionCreatePayload\n ): Promise<SnapshotExtractionCreatedResponse> {\n return axios.post(`admin/cameras/${cameraId}/extractions`, params)\n },\n deleteSnapshotExtraction(\n cameraId: string,\n extractionId: number,\n params: {\n type: SnapshotExtractionType\n hardDelete?: boolean\n }\n ): Promise<{ message: string }> {\n return axios.delete(\n `admin/cameras/${cameraId}/extractions/${extractionId}`,\n {\n params,\n }\n )\n },\n getExtraction(\n cameraExid: string,\n extractionId: number,\n type: SnapshotExtractionType\n ): Promise<SnapshotExtraction> {\n return axios.get(\n `admin/cameras/${cameraExid}/extractions/${extractionId}`,\n { params: { type } }\n )\n },\n reprocessExtraction(\n cameraId: string,\n extractionId: number\n ): Promise<SnapshotExtraction> {\n return axios.post(\n `admin/cameras/${cameraId}/extractions/${extractionId}/reprocess`\n )\n },\n },\n anprExtractions: {\n list(cameraExid: string): Promise<{ data: AnprExtraction[] }> {\n return axios.get(`/admin/cameras/${cameraExid}/anpr/extractions`)\n },\n create(\n cameraExid: string,\n payload: AnprExtractionCreatePayload\n ): Promise<{ data: AnprExtraction }> {\n return axios.post(\n `/admin/cameras/${cameraExid}/anpr/extractions`,\n payload\n )\n },\n delete(cameraExid: string, id: number): Promise<{ message: string }> {\n return axios.delete(`/admin/cameras/${cameraExid}/anpr/extractions/${id}`)\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<Kit> {\n return axios.post(\"/admin/kits\", params)\n },\n updateKit(id: string, params: PatchPayload<Kit>): Promise<Kit> {\n return axios.patch(`/admin/kits/${id}`, params)\n },\n deleteKit(id: string, params: JsonObject): Promise<void> {\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 }): Promise<KitMetricStatsEntry[]> {\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 updateBox(id: string, params: KitBoxCreatePayload): Promise<KitBox> {\n return axios.patch(`/admin/kit-boxes/${id}`, params)\n },\n },\n logs: {\n getAllCamerasStatusLogs(params: {\n params: CameraLogsQueryParams\n }): Promise<{ data: CameraLog[] }> {\n return axios.get(\"/admin/cameras-logs\", params)\n },\n getCameraLogs(\n cameraId: string,\n 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<NvrSetting>> {\n return axios.get(\"/admin/nvrs\", params)\n },\n createNvr(params: NvrCreatePayload): Promise<Nvr> {\n return axios.post(\"/admin/nvrs\", params)\n },\n updateNvr(id: string, params: PatchPayload<Nvr>): Promise<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 camera_ids?: number[]\n project_ids?: number[]\n kit_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<AdminProjectListItem>> {\n return axios.get(\"/admin/projects\", params)\n },\n show(\n exid: string,\n params: WithZohoParams = {}\n ): Promise<{ data: AdminProjectDetail }> {\n return axios.get(\n `/admin/projects/${exid}${\"with_zoho\" in params ? \"?with_zoho\" : \"\"}`\n )\n },\n getUsers(id: string): Promise<ProjectMembersResponsePayload> {\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<{ project: ProjectCreateResponse }> {\n return axios.post(\"/admin/projects\", params)\n },\n updateProject(\n projectExid: string,\n params: Partial<ProjectUpdateRequestPayload>\n ): Promise<{ project: 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 getProjectStorages(params: {\n params: Partial<ProjectStorageQueryParams>\n }): Promise<PaginatedItems<ProjectStorage>> {\n return axios.get(\"/admin/projects/storages\", params)\n },\n retryProjectStorage(id: number): Promise<{ message: string }> {\n return axios.post(`/admin/projects/storages/${id}/retry`)\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<AdminSearchItem>> {\n return axios.get(\"/admin/search\", params)\n },\n },\n hdds: {\n getHdds(payload: {\n projectId: string\n companyId: string\n }): Promise<AdminHdd[]> {\n return axios.get(\"/admin/hdds\", { params: payload })\n },\n getAllHdds(params: {\n params: Partial<HDDsQueryParams>\n }): Promise<PaginatedItems<AdminHdd>> {\n return axios.get(\"/admin/hdds\", params)\n },\n deleteHdd(hddId: number): Promise<void> {\n return axios.delete(`/admin/hdds/${hddId}`)\n },\n saveHdd(params: HDDCreateUpdatePayload): Promise<HddDetail> {\n return axios.post(\"/admin/hdds\", params)\n },\n updateHdd(\n hddId: number,\n params: HDDCreateUpdatePayload\n ): Promise<HddDetail> {\n return axios.patch(`/admin/hdds/${hddId}`, params)\n },\n saveFootage(\n hddId: number,\n params: FootageCreateUpdatePayload\n ): Promise<HddFootageItem> {\n return axios.post(`/admin/hdds/${hddId}/footages`, params)\n },\n deleteFootage(hddId: number, footageId: number): Promise<void> {\n return axios.delete(`/admin/hdds/${hddId}/footages/${footageId}`)\n },\n updateFootage(\n hddId: number,\n footageId: number,\n params: FootageCreateUpdatePayload\n ): Promise<HddFootageItem> {\n return axios.patch(`/admin/hdds/${hddId}/footages/${footageId}`, params)\n },\n },\n shares: {\n getInvites(params: {\n params: AdminInviteQueryParams\n }): Promise<AdminInviteListResponse> {\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(): Promise<string[]> {\n return axios.get(\"/admin/sim-providers\")\n },\n getBillPayers(): Promise<string[]> {\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<SmsHistory>> {\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<{ progressPhotos: ProgressPhotoItem[] }> {\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(id: number, params: WithZohoParams = {}): 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<AdminWidget>> {\n return axios.get(\"/admin/widgets\", params)\n },\n show(id: number): Promise<AdminWidgetFull> {\n return axios.get(`/admin/widgets/${id}`)\n },\n update(id: number, payload: WidgetPayload): Promise<AdminWidgetFull> {\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: JsonObject): Promise<ZohoDeskTicketSearchResponse> {\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 snapshotTransfers: {\n index(\n params: AxiosRequestConfig & {\n params: Partial<SnapshotTransferIndexParams>\n }\n ): Promise<PaginatedItems<SnapshotTransfer>> {\n return axios.get(\"/admin/snapshot-transfers\", params)\n },\n cancel(id: number): Promise<SnapshotTransfer> {\n return axios.patch(`/admin/snapshot-transfers/${id}/cancel`)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { type PaginatedItems } from \"@evercam/shared/types\"\nimport {\n VideoWall,\n VideoWallListParams,\n VideoWallCreateUpdatePayload,\n} from \"@evercam/api/types/videoWall\"\n\nexport const VideoWallApi = {\n list(params: VideoWallListParams = {}) {\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 _360Floor,\n _360FloorId,\n _360Marker3D,\n _360Pin,\n _360ProjectJsonResponse,\n _360ProjectListItem,\n _360Scene,\n _360SceneRoute,\n _360Walk,\n Point3D,\n DroneBimData,\n DroneImageryPlan,\n DroneMarker,\n DroneModel,\n DroneProjectData,\n DroneProjectDataPatch,\n DroneTag,\n DroneTransformPatch,\n ForgeMarker,\n ForgeProjectData,\n ForgeView,\n ItwinProjectData,\n MapView,\n PlannerListItem,\n SitePlan,\n ProjectExid,\n SiteViewCameraListItem,\n SiteViewerType,\n DroneCameraTransform,\n} from \"@evercam/api/types\"\nimport { AxiosRequestConfig } from \"axios\"\n\nexport const getFirebaseDbApi = (): string => axios.env.firebaseDbLink as string\nexport const getFirebaseStorageUrl = (): string =>\n axios.env.firebaseStorageUrl as string\nexport const getFirebaseStorageToken = (): string =>\n axios.env.firebaseStorageToken as string\nexport const getForgeTokenServerUrl = (): string =>\n axios.env.forgeTokenServerUrl as string\n\nconst firebaseRequestConfig = { skipAuth: true, preserveCasing: true }\n\nexport const _3dFirebaseApi = {\n drone: {\n getProjectInfo(projectExid: ProjectExid): Promise<DroneProjectData> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n getProjectTags(\n projectExid: ProjectExid\n ): Promise<Record<string, DroneTag>> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectExid}/transform/tags.json`,\n firebaseRequestConfig\n )\n },\n patchTags({\n projectId,\n tags,\n }: {\n projectId: ProjectExid\n tags: Record<string, DroneTag | null>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/tags.json`,\n tags,\n firebaseRequestConfig\n )\n },\n saveMarkers({\n projectId,\n markers,\n }: {\n projectId: ProjectExid\n markers: Record<string, DroneMarker>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/markers.json`,\n markers,\n firebaseRequestConfig\n )\n },\n patchTransform({\n projectId,\n data,\n }: {\n projectId: ProjectExid\n data: DroneTransformPatch\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform.json`,\n data,\n firebaseRequestConfig\n )\n },\n saveTerrainPoints({\n projectId,\n dateId,\n points,\n }: {\n projectId: ProjectExid\n dateId: string\n points: Point3D[]\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/terrainPoints/${dateId}.json`,\n points,\n firebaseRequestConfig\n )\n },\n patchImageryPlan({\n projectId,\n plan,\n }: {\n projectId: ProjectExid\n plan: Record<string, DroneImageryPlan>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/imageryPlans.json`,\n plan,\n firebaseRequestConfig\n )\n },\n deleteImageryPlan({\n projectId,\n uuid,\n }: {\n projectId: ProjectExid\n uuid: string\n }): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/imageryPlans/${uuid}.json`,\n firebaseRequestConfig\n )\n },\n saveImageryPlans({\n projectId,\n plans,\n }: {\n projectId: ProjectExid\n plans: Record<string, DroneImageryPlan>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/imageryPlans.json`,\n plans,\n firebaseRequestConfig\n )\n },\n getBlackListIds(projectId: ProjectExid): Promise<string | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/blackListIds.json`,\n firebaseRequestConfig\n )\n },\n saveBlackListIds({\n projectId,\n ids,\n }: {\n projectId: ProjectExid\n ids: string\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/blackListIds.json`,\n ids,\n firebaseRequestConfig\n )\n },\n saveModel({\n projectId,\n model,\n }: {\n projectId: ProjectExid\n model: DroneModel\n }): Promise<void> {\n const { trueIndex, ...modelData } = model\n\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/models/${trueIndex}.json`,\n modelData,\n firebaseRequestConfig\n )\n },\n saveModels({\n projectId,\n models,\n }: {\n projectId: ProjectExid\n models: DroneModel[]\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/models.json`,\n models,\n firebaseRequestConfig\n )\n },\n saveBimData({\n projectId,\n data,\n }: {\n projectId: ProjectExid\n data: DroneBimData\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/bimData.json`,\n data,\n firebaseRequestConfig\n )\n },\n getBimTransparencyFlag(projectId: ProjectExid): Promise<boolean | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/bimTransparencyFeatureFlag.json`,\n firebaseRequestConfig\n )\n },\n saveCameraTransform({\n projectId,\n isScene3D,\n transform,\n }: {\n projectId: ProjectExid\n isScene3D: boolean\n transform: Record<string, DroneCameraTransform>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/cesium/${projectId}/transform/initial${\n isScene3D ? \"\" : \"2D\"\n }CameraTransform.json`,\n transform,\n firebaseRequestConfig\n )\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 ...firebaseRequestConfig,\n }\n )\n },\n getProjectsList(): Promise<_360ProjectListItem[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/360-list.json`,\n firebaseRequestConfig\n )\n },\n updateProjectsList(\n items: Record<string, _360ProjectListItem>\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/360-list.json`,\n items,\n firebaseRequestConfig\n )\n },\n updateProjectsListItem(\n index: number,\n data: _360ProjectListItem\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/360-list/${index}.json`,\n data,\n firebaseRequestConfig\n )\n },\n deleteProject(projectId: string): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/360/${projectId}.json`,\n firebaseRequestConfig\n )\n },\n updateProjectInfo(\n projectId: string,\n data: Partial<_360ProjectJsonResponse>\n ): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectId}.json`,\n data,\n firebaseRequestConfig\n )\n },\n updateFloor(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n body: Partial<_360Scene[\"floors\"][number]>\n ): Promise<_360ProjectJsonResponse> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/dates/${dateId}/floors/${floorIndex}.json`,\n body,\n firebaseRequestConfig\n )\n },\n getRoute(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string\n ): Promise<_360SceneRoute | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/${dateId}/${floorIndex}/route.json`,\n firebaseRequestConfig\n )\n },\n getAerialShotDate(\n projectId: ProjectExid,\n dateId: number\n ): Promise<string | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${encodeURIComponent(\n `${projectId}/aerial-shots/dates/`\n )}${dateId}/date.json`,\n firebaseRequestConfig\n )\n },\n getFloor({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<_360Floor> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}.json`,\n firebaseRequestConfig\n )\n },\n getAerialShotsFloor({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<_360Floor> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/aerial-shots/${dateId}/${floorId}.json`,\n firebaseRequestConfig\n )\n },\n update3DMarkers({\n projectId,\n dateId,\n floorId,\n markers,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n markers: Record<string, _360Marker3D>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}/_3DMarkers.json`,\n markers,\n firebaseRequestConfig\n )\n },\n patchFloor({\n projectId,\n dateId,\n floorId,\n data,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n data: Partial<_360Floor>\n }): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}.json`,\n data,\n firebaseRequestConfig\n )\n },\n updateFloors({\n projectId,\n dateId,\n floors,\n }: {\n projectId: ProjectExid\n dateId: number\n floors: _360Scene[\"floors\"]\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/dates/${dateId}/floors.json`,\n floors,\n firebaseRequestConfig\n )\n },\n deleteFloor({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}.json`,\n firebaseRequestConfig\n )\n },\n updateDates(projectId: ProjectExid, dates: _360Scene[]): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/dates.json`,\n dates,\n firebaseRequestConfig\n )\n },\n deleteDate(projectId: ProjectExid, dateId: number): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}.json`,\n firebaseRequestConfig\n )\n },\n getPins({\n projectId,\n dateId,\n floorId,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n }): Promise<Record<string, _360Pin>> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}/pins.json`,\n firebaseRequestConfig\n )\n },\n updatePins({\n projectId,\n dateId,\n floorId,\n pins,\n }: {\n projectId: ProjectExid\n dateId: number\n floorId: _360FloorId\n pins: Record<string, _360Pin>\n }): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}/${floorId}/pins.json`,\n pins,\n firebaseRequestConfig\n )\n },\n getGPXText(url: string): Promise<string> {\n if (!url) {\n return Promise.resolve(\"\")\n }\n\n return axios.get(url.replace(/token=\\s*/, \"token=\"), {\n ...firebaseRequestConfig,\n responseType: \"text\",\n })\n },\n updateRoute(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n body: Partial<_360SceneRoute>\n ): Promise<void> {\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/360/${projectExid}/${dateId}/${floorIndex}/route.json`,\n body,\n firebaseRequestConfig\n )\n },\n async updateFeatureFlag(\n projectID: string,\n dateID: string,\n floorID: string,\n featureFlagName: string,\n value: boolean\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectID}/${dateID}/${floorID}/${featureFlagName}.json`,\n value,\n {\n ...firebaseRequestConfig,\n transformRequest: [(data: boolean) => JSON.stringify(data)],\n }\n )\n },\n async saveSteps(\n projectID: string,\n dateID: string,\n floorID: string,\n stepsValue: number\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/360/${projectID}/${dateID}/${floorID}/steps.json`,\n stepsValue,\n firebaseRequestConfig\n )\n },\n updateGPXFile(\n projectExid: ProjectExid,\n dateId: string,\n floorIndex: string,\n gpxContent: string\n ): Promise<void> {\n const blob = new Blob([gpxContent], { type: \"application/gpx+xml\" })\n const formData = new FormData()\n formData.append(\"gpxFile\", blob, \"updated-track.gpx\")\n\n return axios.post(\n `${\n getFirebaseStorageUrl() +\n encodeURIComponent(\"/\" + projectExid + \"/\") +\n dateId +\n encodeURIComponent(\"/\" + floorIndex + \"/route/track.gpx\")\n }?alt=media&token=${getFirebaseStorageToken()}`,\n formData,\n {\n ...firebaseRequestConfig,\n headers: { \"Content-Type\": \"multipart/form-data\" },\n }\n )\n },\n getProjectDates(projectId: ProjectExid): Promise<_360Scene[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/dates.json`,\n firebaseRequestConfig\n )\n },\n getProjectAerialShotsDates(projectId: ProjectExid): Promise<_360Scene[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/aerial-shots/dates.json`,\n firebaseRequestConfig\n )\n },\n getProjectDateFloors({\n projectId,\n dateId,\n }: {\n projectId: ProjectExid\n dateId: string | number\n }): Promise<_360Walk> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/360/${projectId}/${dateId}.json`,\n firebaseRequestConfig\n )\n },\n },\n forge: {\n getAccessToken(): Promise<{ access_token: string }> {\n return axios.get(getForgeTokenServerUrl(), firebaseRequestConfig)\n },\n getProjectInfo(projectExid: ProjectExid): Promise<ForgeProjectData | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/forge/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n saveSavedView(projectId: string, payload: ForgeView): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/forge/${projectId}/savedView.json`,\n payload,\n firebaseRequestConfig\n )\n },\n saveMarkers(projectId: string, markers: ForgeMarker[]): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/forge/${projectId}/markers.json`,\n markers,\n firebaseRequestConfig\n )\n },\n },\n itwin: {\n getProjectInfo(projectId: string): Promise<ItwinProjectData | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/itwin/${projectId}.json`,\n firebaseRequestConfig\n )\n },\n clearBimCompare(projectId: string): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/itwin/${projectId}/bim-compare.json`,\n firebaseRequestConfig\n )\n },\n clearSiteView(projectId: string, modelIndex: number): Promise<void> {\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/itwin/${projectId}/models/${modelIndex}/site-view.json`,\n firebaseRequestConfig\n )\n },\n },\n siteView: {\n getCamerasList(): Promise<SiteViewCameraListItem[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/cameras-list.json`,\n firebaseRequestConfig\n )\n },\n updateCamerasList(\n items: Record<number, SiteViewCameraListItem>\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/cameras-list.json`,\n items,\n firebaseRequestConfig\n )\n },\n updateCamerasListItem(\n trueIndex: number,\n item: SiteViewCameraListItem\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/cameras-list/${trueIndex}.json`,\n item,\n firebaseRequestConfig\n )\n },\n updateProjectData({\n viewerType,\n projectId,\n data,\n }: {\n viewerType: SiteViewerType\n projectId: ProjectExid\n data: ForgeProjectData | ItwinProjectData | DroneProjectDataPatch\n }): Promise<void> {\n const viewerPath = viewerType.toLowerCase()\n\n return axios.patch(\n `${getFirebaseDbApi()}data/projects/${viewerPath}/${projectId}.json`,\n data,\n firebaseRequestConfig\n )\n },\n deleteProjectData(\n viewerType: SiteViewerType,\n projectId: ProjectExid\n ): Promise<void> {\n const viewerPath = viewerType.toLowerCase()\n\n return axios.delete(\n `${getFirebaseDbApi()}data/projects/${viewerPath}/${projectId}.json`,\n firebaseRequestConfig\n )\n },\n readAllData(dbLink: string): Promise<Record<string, unknown>> {\n return axios.get(`${dbLink}data.json`, firebaseRequestConfig)\n },\n writeAllData(dbLink: string, data: Record<string, unknown>): Promise<void> {\n return axios.put(`${dbLink}data.json`, data, firebaseRequestConfig)\n },\n },\n map: {\n getMapViews(projectExid: ProjectExid): Promise<MapView[]> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/maps/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n updateMapViews(\n projectExid: ProjectExid,\n mapViews: Record<string, MapView>\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/maps/${projectExid}.json`,\n mapViews,\n firebaseRequestConfig\n )\n },\n },\n safety: {\n getTPulseLink(projectExid: ProjectExid): Promise<{ link?: string } | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/safety/${projectExid}.json`,\n firebaseRequestConfig\n )\n },\n updateTPulseLink(projectExid: ProjectExid, link: string): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/safety/${projectExid}.json`,\n { link },\n firebaseRequestConfig\n )\n },\n },\n planner: {\n getPlannerList(): Promise<Record<string, PlannerListItem>> {\n return axios.get(`${getFirebaseDbApi()}data/planner-list.json`, {\n ...firebaseRequestConfig,\n })\n },\n getPlannerItem(sitePlanId: string): Promise<PlannerListItem | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/planner-list/${sitePlanId}.json`,\n firebaseRequestConfig\n )\n },\n saveSitePlanMetaData(\n sitePlanId: string,\n payload: PlannerListItem\n ): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/planner-list/${sitePlanId}.json`,\n payload,\n firebaseRequestConfig\n )\n },\n getSitePlan(sitePlanId: string): Promise<SitePlan | null> {\n return axios.get(\n `${getFirebaseDbApi()}data/projects/planner/${sitePlanId}.json`,\n firebaseRequestConfig\n )\n },\n saveSitePlan(sitePlanId: string, payload: SitePlan): Promise<void> {\n return axios.put(\n `${getFirebaseDbApi()}data/projects/planner/${sitePlanId}.json`,\n payload,\n firebaseRequestConfig\n )\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 \"@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 RoisQueryParams,\n GateReportRoiRequestPayload,\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 SmartSearchHeatmapData,\n SmartSearchOperatorType,\n DetectionLabel,\n SmartSearchResponse,\n SmartSearchRequestPayload,\n LegacyAnprExportParams,\n AnprBulkUpdateRequestPayload,\n AnprUpdateRequestPayload,\n SmartSearchQueriesRequestPayload,\n _360FloorId,\n CreateCoolifyAppRequestPayload,\n RegisterCoolifyAppResponsePayload,\n SaveCoolifyAppRequestPayload,\n SegmentsCountsParams,\n SegmentsPresenceResponse,\n AiPrompt,\n AiPromptCreatePayload,\n AiPromptCreateResponse,\n AiPromptDeleteResponse,\n AiPromptListResponse,\n AiPromptQueryParams,\n AiPromptUpdatePayload,\n AiPromptUpdateResponse,\n AiApiKey,\n AiApiKeyCreatePayload,\n AiApiKeyCreateResponse,\n AiApiKeyDeleteResponse,\n AiApiKeyQueryParams,\n AiApiKeyUpdatePayload,\n AiApiKeyUpdateResponse,\n APIEnvelope,\n AppActionResponse,\n AppRuntimeState,\n CoolifyProjectOption,\n CoolifyServerOption,\n CreateGateReportAppPayload,\n CreateGateReportAppResponse,\n GateReportAppEvents,\n GateReportManagedApp,\n GateReportManagementListParams,\n UpdateGateReportAppPayload,\n} from \"@evercam/api/types\"\nimport type { AxiosPromise, AxiosRequestConfig } from \"axios\"\n\nexport const getAiApiUrl = (): string => axios.env.aiApiUrl!\nexport const getAiApiUrlV2 = (): string => `${axios.env.aiApiUrl}/v2`\n\nexport const AiApi = {\n anpr: {\n exportAnprLegacyEvents(\n projectExid: ProjectExid,\n params: LegacyAnprExportParams\n ) {\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 `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/anpr/counts?${toQueryString(\n payload\n )}`,\n extraParams\n )\n },\n updateAnprEvent(anprEventId: string, payload: AnprUpdateRequestPayload) {\n return axios.patch(`${getAiApiUrlV2()}/anpr/${anprEventId}`, payload)\n },\n bulkUpdateAnprRecords(\n payload: AnprBulkUpdateRequestPayload\n ): Promise<void> {\n return axios.patch(`${getAiApiUrlV2()}/anpr/status`, payload)\n },\n exportAnprEvents(\n projectExid: string,\n params: AnprBasedGateReportExportRequestParams\n ): AxiosPromise<string> {\n return axios({\n url: `${getAiApiUrlV2()}/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: `${getAiApiUrlV2()}/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: string) {\n return axios.post(\n `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/gate-report/verified-days?${toQueryString(\n params\n )}`,\n extraParams\n )\n },\n verifyDay(params: VerifyDayUpdateRequestPayload) {\n return axios.post(\n `${getAiApiUrlV2()}/projects/gate-report/verified-days`,\n params\n )\n },\n getDailyStatus(\n projectExid: string,\n params: Partial<ProcessedDaysQueryParams> = {}\n ): Promise<string[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/gate-report/processed-days`,\n { params }\n )\n },\n getEvents(\n projectExid: ProjectExid,\n params: GatReportRequestPayload,\n extraParams: AxiosRequestConfig = {}\n ): Promise<GateReportResponsePayload> {\n return axios.get(\n `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/gate-report/counts?${toQueryString(\n payload\n )}`,\n extraParams\n )\n },\n getGateReportProjectsInfos(params: Record<string, unknown>) {\n return axios.get(`${getAiApiUrlV2()}/projects/gate-report/info`, params)\n },\n },\n brainTool: {\n getObjectDetectionsResults(payload = {}) {\n return axios.post(\n `${getAiApiUrlV2()}/ai-models/object-detection`,\n payload\n )\n },\n },\n roi: {\n getROIs(\n projectExid: string,\n params: Partial<RoisQueryParams> = {}\n ): Promise<GateReportROI[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/rois?${toQueryString(\n params\n )}`\n )\n },\n listROIs(params: Partial<RoisQueryParams> = {}): Promise<GateReportROI[]> {\n return axios.get(`${getAiApiUrlV2()}/rois?${toQueryString(params)}`)\n },\n createROI(\n params: Omit<GateReportRoiRequestPayload, \"id\"> & { createdBy?: string }\n ) {\n return axios.post(`${getAiApiUrlV2()}/rois`, params)\n },\n updateROI({\n updatedBy,\n id,\n ...params\n }: Partial<GateReportRoiRequestPayload> & { updatedBy?: string }) {\n return axios.patch(\n `${getAiApiUrlV2()}/rois/${id}?${toQueryString({\n updatedBy,\n })}`,\n params\n )\n },\n deleteROI({ id, updatedBy }: { id: number; updatedBy: string }) {\n return axios.patch(\n `${getAiApiUrlV2()}/rois/${id}?${toQueryString({\n updatedBy,\n })}`,\n { isActive: false, note: \"delete roi\" }\n )\n },\n },\n detections: {\n async getDetectionsCounts(\n { projectExid, ...params }: Partial<DetectionsRequestParams>,\n extraParams: AxiosRequestConfig = {}\n ): Promise<DetectionsCountsByPeriod> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/trackings/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 `${getAiApiUrlV2()}/projects/${projectExid}/trackings/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 `${getAiApiUrlV2()}/cameras/${cameraExid}/segments/appearance-from-points`,\n {\n params: {\n cameraExid,\n iouThreshold,\n ...params,\n },\n }\n )\n },\n async getGroupedTrackings(\n projectExid: ProjectExid,\n params: DetectionsFilters\n ): Promise<TrackingsByLabel> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/trackings/grouped?${toQueryString(\n params\n )}`\n )\n },\n async getSegmentsMasks(\n cameraExid: CameraExid,\n params: SegmentsFilters\n ): Promise<{ segments: SegmentsByLabel }> {\n return axios.get(\n `${getAiApiUrlV2()}/cameras/${cameraExid}/segments/masks`,\n {\n params,\n }\n )\n },\n async getSegmentsPresenceDateIntervals({\n cameraExid,\n ...params\n }: SegmentsCountsParams): Promise<SegmentsPresenceResponse> {\n return axios.get(\n `${getAiApiUrlV2()}/cameras/${cameraExid}/segments/presence-intervals?${toQueryString(\n params\n )}`\n )\n },\n async getDetectionsPresenceDateIntervals({\n projectExid,\n ...params\n }: DetectionsCountsParams): Promise<DetectionsPresenceByLabel> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/trackings/presence-intervals?${toQueryString(\n params\n )}`\n )\n },\n async requestExport({\n projectExid,\n ...params\n }: DetectionsExportRequestParams) {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/detections/timestamps/export?${toQueryString(\n params\n )}`,\n { responseType: \"blob\" }\n )\n },\n },\n siteAnalytics: {\n smartSearchAll(\n projectExid: ProjectExid,\n params: SmartSearchRequestPayload\n ): Promise<SmartSearchResponse> {\n const { payload, ...restParams } = params\n const queryParams = {\n page: 1,\n limit: 20,\n ...restParams,\n }\n\n let url = `${getAiApiUrlV2()}/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 limit: 20,\n ...restParams,\n }\n\n let url = `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/first-last-seen?${toQueryString(\n queryParams\n )}`\n\n return axios.post(url, payload)\n },\n saveQuery({\n projectExid,\n cameraExid,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid | _360FloorId\n payload: SmartSearchBackendQueryPayload\n }) {\n return axios.post(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/smart-search/queries`,\n payload\n )\n },\n getQueries(\n projectExid: ProjectExid,\n params: SmartSearchQueriesRequestPayload\n ): Promise<SavedQuery[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/queries?${toQueryString(\n params\n )}`\n )\n },\n getQueryById(\n projectExid: ProjectExid,\n cameraExid: CameraExid,\n queryId: number\n ): Promise<SmartSearchBackendQueryPayload> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/queries/${queryId}?${toQueryString(\n { cameraExid }\n )}`\n )\n },\n updateQuery({\n projectExid,\n cameraExid,\n queryId,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n queryId: number\n payload: Partial<SavedQuery>\n }) {\n return axios.patch(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/smart-search/queries/${queryId}`,\n payload\n )\n },\n deleteQuery({\n projectExid,\n cameraExid,\n queryId,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n queryId: number\n }) {\n return axios.delete(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/smart-search/queries/${queryId}`,\n {}\n )\n },\n exportResultsData({\n projectExid,\n cameraExids,\n fromDate,\n toDate,\n query,\n fileType = DownloadFileType.Csv,\n directDownload = true,\n payload,\n limit,\n page,\n }: {\n projectExid: ProjectExid\n cameraExids: CameraExid[]\n fromDate?: DateType\n toDate?: DateType\n query: string\n fileType: DownloadFileType\n directDownload?: boolean\n payload: SmartSearchBackendQuery\n limit: number\n page: number\n }): Promise<any> {\n return axios.post(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/export?${toQueryString(\n {\n cameraExids,\n fromDate,\n toDate,\n query,\n fileType,\n directDownload,\n limit,\n page,\n }\n )}`,\n payload,\n {\n responseType: \"blob\",\n }\n )\n },\n getDetectionsHeatmapData(\n projectExid: ProjectExid,\n params: {\n cameraExid: CameraExid\n fromDate: DateType | string | null\n toDate: DateType | string | null\n labels: DetectionLabel[]\n operator?: SmartSearchOperatorType\n }\n ): Promise<SmartSearchHeatmapData[]> {\n return axios.get(\n `${getAiApiUrlV2()}/projects/${projectExid}/smart-search/heatmap?${toQueryString(\n params\n )}`,\n {}\n )\n },\n },\n coolify: {\n getCoolifyServers() {\n return axios.get(`${getAiApiUrlV2()}/coolify/servers`)\n },\n createAppOnCoolify({\n projectExid,\n cameraExid,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n payload: CreateCoolifyAppRequestPayload\n }) {\n return axios.post(\n `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/anpr/apps`,\n payload\n )\n },\n registerCoolifyApp({\n projectExid,\n cameraExid,\n payload,\n }: {\n projectExid: ProjectExid\n cameraExid: CameraExid\n payload: SaveCoolifyAppRequestPayload\n }): Promise<RegisterCoolifyAppResponsePayload> {\n return axios.post(\n `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/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 `${getAiApiUrlV2()}/projects/${projectExid}/cameras/${cameraExid}/gate-report/apps/${appId}?app_uuid=${appUuid}`\n )\n },\n startService(serviceId: string) {\n return axios.post(\n `${getAiApiUrlV2()}/coolify/services/${serviceId}/start`\n )\n },\n pauseService(serviceId: string) {\n return axios.post(`${getAiApiUrlV2()}/coolify/services/${serviceId}/stop`)\n },\n restartService(serviceId: string) {\n return axios.post(\n `${getAiApiUrlV2()}/coolify/services/${serviceId}/restart`\n )\n },\n },\n fovChanges: {\n getCameraFovChanges(\n cameraExid: string,\n extraConfig: AxiosRequestConfig = {}\n ) {\n return axios.post(\n `${getAiApiUrlV2()}/cameras/${cameraExid}/fov_changes`,\n {},\n extraConfig\n )\n },\n },\n prompts: {\n list(params: AiPromptQueryParams = {}): Promise<AiPromptListResponse> {\n return axios.get(`${getAiApiUrlV2()}/prompts?${toQueryString(params)}`)\n },\n get(promptId: number): Promise<AiPrompt> {\n return axios.get(`${getAiApiUrlV2()}/prompts/${promptId}`)\n },\n create(payload: AiPromptCreatePayload): Promise<AiPromptCreateResponse> {\n return axios.post(`${getAiApiUrlV2()}/prompts`, payload)\n },\n update(\n promptId: number,\n payload: AiPromptUpdatePayload\n ): Promise<AiPromptUpdateResponse> {\n return axios.patch(`${getAiApiUrlV2()}/prompts/${promptId}`, payload)\n },\n delete(promptId: number): Promise<AiPromptDeleteResponse> {\n return axios.delete(`${getAiApiUrlV2()}/prompts/${promptId}`)\n },\n },\n apiKeys: {\n list(params: AiApiKeyQueryParams = {}): Promise<AiApiKey[]> {\n const query = toQueryString(params)\n\n return axios.get(`${getAiApiUrlV2()}/api-keys${query ? `?${query}` : \"\"}`)\n },\n purposes(): Promise<string[]> {\n return axios.get(`${getAiApiUrlV2()}/api-keys/purposes`)\n },\n get(keyId: number): Promise<AiApiKey> {\n return axios.get(`${getAiApiUrlV2()}/api-keys/${keyId}`)\n },\n create(payload: AiApiKeyCreatePayload): Promise<AiApiKeyCreateResponse> {\n return axios.post(`${getAiApiUrlV2()}/api-keys`, payload)\n },\n update(\n keyId: number,\n payload: AiApiKeyUpdatePayload\n ): Promise<AiApiKeyUpdateResponse> {\n return axios.patch(`${getAiApiUrlV2()}/api-keys/${keyId}`, payload)\n },\n delete(\n keyId: number,\n revoke: boolean = false\n ): Promise<AiApiKeyDeleteResponse> {\n const query = revoke ? \"?revoke=true\" : \"\"\n\n return axios.delete(`${getAiApiUrlV2()}/api-keys/${keyId}${query}`)\n },\n },\n gateReportManagement: {\n listApps(\n params: GateReportManagementListParams = {}\n ): Promise<PaginatedItems<GateReportManagedApp>> {\n return axios.get(\n `${getAiApiUrlV2()}/gate-report/apps?${toQueryString(\n params as Record<string, unknown>\n )}`\n )\n },\n getApp(\n projectExid: ProjectExid,\n cameraExid: CameraExid\n ): Promise<APIEnvelope<GateReportManagedApp>> {\n return axios.get(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}`\n )\n },\n listAppEvents(\n projectExid?: ProjectExid\n ): Promise<APIEnvelope<GateReportAppEvents[]>> {\n return axios.get(\n `${getAiApiUrlV2()}/gate-report/apps/last-event-status?${toQueryString({\n projectExid,\n } as Record<string, unknown>)}`\n )\n },\n createApp(\n payload: CreateGateReportAppPayload\n ): Promise<CreateGateReportAppResponse> {\n return axios.post(`${getAiApiUrlV2()}/gate-report/apps`, payload)\n },\n updateApp(\n projectExid: ProjectExid,\n cameraExid: CameraExid,\n payload: UpdateGateReportAppPayload\n ): Promise<APIEnvelope<GateReportManagedApp>> {\n return axios.patch(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}`,\n payload\n )\n },\n deleteApp(\n projectExid: ProjectExid,\n cameraExid: CameraExid\n ): Promise<{ deleted: boolean; count: number; message: string }> {\n return axios.delete(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}`\n )\n },\n setAppState(\n projectExid: ProjectExid,\n cameraExid: CameraExid,\n state: AppRuntimeState\n ): Promise<APIEnvelope<AppActionResponse>> {\n return axios.patch(\n `${getAiApiUrlV2()}/gate-report/apps/${projectExid}/${cameraExid}/state`,\n { state }\n )\n },\n listCoolifyProjects(): Promise<APIEnvelope<CoolifyProjectOption[]>> {\n return axios.get(`${getAiApiUrlV2()}/gate-report/coolify-projects`)\n },\n listCoolifyServers(): Promise<APIEnvelope<CoolifyServerOption[]>> {\n return axios.get(`${getAiApiUrlV2()}/gate-report/coolify-servers`)\n },\n listImageTags(): Promise<APIEnvelope<string[]>> {\n return axios.get(`${getAiApiUrlV2()}/gate-report/image-tags`)\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 WeatherReportRequestPayload,\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: WeatherReportRequestPayload,\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 FeedbackPayload,\n GrafanaKitMetrics,\n LabsPaginationParams,\n LuminanceReading,\n PaginatedItems,\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 type { SwrRequestConfig } 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`, 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({\n conversationId,\n messageId,\n ...params\n }: FeedbackPayload) {\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: SwrRequestConfig<SiteAnalyticsProcessingStatus[]> = {}\n ): Promise<SiteAnalyticsProcessingStatus[]> {\n return axios.get(`${getLabsBaseUrl()}/site-analytics/processing-status`, {\n params,\n ...config,\n preserveCasing: true,\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 {\n GeoJSONPolygon,\n ProgressPhotoItemResponsePayload,\n Project,\n SwrRequestConfig,\n UserFeatureFlag,\n} from \"@evercam/api/types\"\nimport type {\n AconexAuthCallbackParams,\n AconexEditedImageUploadRequestPayload,\n AconexUserProject,\n AconexDocumentSchema,\n AconexDocumentTypeSchema,\n ApiCredentials,\n AutodeskFolder,\n AutodeskProject,\n AutodeskTokenResponsePayload,\n AutodeskSnapshot,\n AutodeskUserHub,\n AvailableDaysRequestPayload,\n AvailableDaysResponsePayload,\n AvailableHoursRequestPayload,\n AvailableHoursResponsePayload,\n BatteryReading,\n BatteryReadingRequestPayload,\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 CompanyCameraSummary,\n CompanyProject,\n CompanyKit,\n CompanySummary,\n CompanyUser,\n Compare,\n CompareRequestPayload,\n ConnectorResponsePayload,\n Credentials,\n FetchCameraQueryParams,\n GoogleAuthRequestPayload,\n LoginRequestPayload,\n User,\n Logo,\n LogoutParams,\n Media,\n MediaCreateRequestPayload,\n MediaFilterQueryParams,\n MediaUpdateRequestPayload,\n MediaUsersResponsePayload,\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 ProcoreObservationDefaultList,\n ProcoreObservationListItem,\n ProcoreCustomFieldOptionsRequestPayload,\n ProgressPhotosCreateUpdateRequestPayload,\n ProgressPhotosResponsePayload,\n ProgressPhotosUnSubscribeParams,\n ProjectBatteryReading,\n ProjectCreateResponse,\n ProjectExid,\n ProjectLogoResponsePayload,\n ProjectMembersResponsePayload,\n ProjectMembersRequestPayload,\n RemotePasswordUpdateRequestPayload,\n SessionsListRequestPayload,\n ShareCreateResponsePayload,\n ShareDeletionRequestPayload,\n SharedUsersResponsePayload,\n UpdateCameraRestrictionPayload,\n SignupUserRequestPayload,\n Snapshot,\n SnapshotRequestPayload,\n SnapshotRangeRequestPayload,\n SnapshotRangeResponsePayload,\n ThumbnailData,\n TimelapseArchiveResponse,\n TimelapseCreationRequestPayload,\n TimelapseCreationResponsePayload,\n TimelapseSnapshotRequestPayload,\n TimelapseSnapshotResponsePayload,\n UpdatePasswordRequestPayload,\n UserDeleteRequestPayload,\n UserSession,\n UserUpdateRequestPayload,\n VoyageControlConnectorPayload,\n RingDevicesResponsePayload,\n RingImportDevicesPayload,\n RingImportResponsePayload,\n RingMoveDevicePayload,\n RingMoveDeviceResponsePayload,\n RingLiveViewPayload,\n RingLiveViewResponse,\n RingStopLiveViewResponse,\n AuthOptionsResponsePayload,\n AuthProviderConfigPayload,\n ConfirmUserRequestPayload,\n DeleteActiveSessionRequestPayload,\n ProjectContactsResponsePayload,\n XWeatherCreatePayload,\n XWeatherResponse,\n Widget,\n WidgetFull,\n WidgetPayload,\n WidgetSessionSettingsPayload,\n WidgetsListRequestPayload,\n Camera,\n ProcoreNextObservationAvailableNumber,\n OAuthClient,\n OAuthClientWithSecret,\n OAuthConsentInfo,\n OAuthConsentPayload,\n OAuthConsentResponse,\n CreateOAuthClientPayload,\n UpdateOAuthClientPayload,\n PaginationParams,\n StoryblokResponse,\n Notification,\n NotificationsListParams,\n PlaceholderThumbnailData,\n ProjectUsersResponsePayload,\n ProjectTransferOwnershipResponse,\n ProjectTeamMembersResponse,\n SnapshotEmailDeliveryRequestPayload,\n SnapshotEmailDeliveryResponsePayload,\n} from \"@evercam/api/types\"\n\nexport const EvercamApi = {\n apiStatus: {\n getApiStatus(): Promise<void> {\n return axios.get(\"/status\")\n },\n },\n users: {\n signup(payload: SignupUserRequestPayload): Promise<User> {\n return axios.post(\"/users\", payload)\n },\n zohoAuthUrl(payload: {\n firstname: string\n lastname: string\n }): Promise<{ url: string }> {\n return axios.post(\"/support/zoho-auth-url\", payload)\n },\n fetchAccessFeatures(\n email: string\n ): Promise<{ features: UserFeatureFlag[] }> {\n return axios.get(`/users/${email}/features`)\n },\n impersonationLogin(token: string): Promise<User> {\n return axios.post(`/auth/impersonate/${token}`)\n },\n fetchLoginOptions(email: string): Promise<AuthOptionsResponsePayload> {\n return axios.get(`/auth/options?email=${email}`)\n },\n fetchSignupOptions(email: string): Promise<AuthOptionsResponsePayload> {\n const url = \"/auth/signup_options\" + (email ? `?email=${email}` : \"\")\n\n return axios.get(url)\n },\n fetchProviderConfig(provider: string): Promise<AuthProviderConfigPayload> {\n return axios.get(`/auth/provider/${provider}`)\n },\n login(params: LoginRequestPayload): Promise<User> {\n return axios.post(\"/auth/login\", toQueryString(params))\n },\n loginWithApiCredentials(apiId: string, apiKey: string): Promise<User> {\n return axios.post(`/auth/login?api_id=${apiId}&api_key=${apiKey}`)\n },\n loginWithWidgetCredentials(\n widgetId: string,\n widgetKey: string\n ): Promise<User> {\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<User> {\n return axios.post(`/auth/${provider}`, payload)\n },\n show(email: string): Promise<{ users: User[] }> {\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: ConfirmUserRequestPayload): Promise<User> {\n return axios.post(`/users/${email}/confirm`, payload)\n },\n deleteActiveSession(\n sessionId: string,\n payload: DeleteActiveSessionRequestPayload\n ): 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: User[] }> {\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(\n projectExid: ProjectExid\n ): Promise<ProjectContactsResponsePayload> {\n return axios.get(`/projects/${projectExid}/contacts`)\n },\n },\n notifications: {\n get(\n params?: NotificationsListParams\n ): Promise<PaginatedItems<Notification>> {\n return axios.get(`/notifications?${toQueryString(params ?? {})}`)\n },\n markAllAsRead(): Promise<{ message: string }> {\n return axios.post(\"/notifications/mark-as-read\")\n },\n markAsRead(id: number): Promise<Notification> {\n return axios.patch(`/notifications/${id}`)\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?: SwrRequestConfig<CamerasResponsePayload>\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: Partial<CameraUpdateRequestPayload>\n ): Promise<CamerasResponsePayload> {\n return axios.patch(`/cameras/${exid}`, params)\n },\n },\n projects: {\n index(\n {\n params,\n config,\n }: {\n params?: ApiCredentials\n config?: SwrRequestConfig<Project[]>\n } = { params: {}, config: {} }\n ): Promise<Project[]> {\n return axios.get(`/projects?${toQueryString(params)}`, config)\n },\n create(params: {\n name: string\n }): Promise<{ project: ProjectCreateResponse }> {\n return axios.post(\"/projects\", params)\n },\n getLogos(projectId: string): Promise<ProjectLogoResponsePayload> {\n return axios.get(`/projects/${projectId}/logos`)\n },\n createLogo(projectId: string, formData: FormData): Promise<Logo> {\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): Promise<Logo> {\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 ): Promise<void> {\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(\n projectExid: string\n ): Promise<PlaceholderThumbnailData> {\n return axios.get(`/projects/${projectExid}/waiting-camera-placeholder`)\n },\n transferOwnership(\n projectExid: string,\n newOwnerId: number\n ): Promise<ProjectTransferOwnershipResponse> {\n return axios.put(`/projects/${projectExid}/transfer/${newOwnerId}`)\n },\n getUsers(projectExid: string): Promise<ProjectUsersResponsePayload> {\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(): Promise<ProjectTeamMembersResponse> {\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<ProjectMembersResponsePayload> {\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<ProjectMembersResponsePayload> {\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<TimelapseArchiveResponse> {\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<AconexUserProject[]> {\n return axios.get(\"/aconex/projects\")\n },\n revoke(): Promise<void> {\n return axios.post(\"/aconex/auth/revoke\")\n },\n uploadEditedSnapshot(\n projectId: string,\n payload: AconexEditedImageUploadRequestPayload\n ): Promise<void> {\n return axios.post(\n `/aconex/projects/${projectId}/upload-snapshot`,\n payload\n )\n },\n getDocumentSchema(projectId: string): Promise<AconexDocumentSchema[]> {\n return axios.get(`/aconex/projects/${projectId}/register/schema`)\n },\n getDocumentTypeSchema(\n projectId: string,\n documentTypeId: string\n ): Promise<AconexDocumentTypeSchema[]> {\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<ProcoreObservationDefaultList> {\n return axios.get(\"/procore/companies/contributing-behaviors\", {\n params: payload,\n })\n },\n getContributingConditions(\n payload: ProcoreCompanyRequestPayload\n ): Promise<ProcoreObservationDefaultList> {\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<ProcoreObservationDefaultList> {\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: ProcoreCustomFieldOptionsRequestPayload\n ): Promise<Array<ProcoreObservationListItem>> {\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<AutodeskUserHub[]> {\n return axios.get(\"/autodesk/hubs\")\n },\n getProjects(hubId: string): Promise<AutodeskProject[]> {\n return axios.get(`/autodesk/hubs/${hubId}/projects`)\n },\n getFolders(\n hubId: string,\n projectId: string\n ): Promise<Array<AutodeskFolder>> {\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<AutodeskFolder>> {\n return axios.get(\n `/autodesk/projects/${projectId}/folders/${parentFolderId}/subfolders`,\n {\n params: {\n getDerivatives,\n },\n }\n )\n },\n getFolder(projectId: string, folderId: string): Promise<AutodeskFolder> {\n return axios.get(`/autodesk/projects/${projectId}/folders/${folderId}`)\n },\n uploadEditedSnapshot(payload: AutodeskSnapshot): 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<void> {\n return axios.post(\"/voyage-control/auth/connect\", payload)\n },\n sendRevoke(): Promise<void> {\n return axios.post(\"/voyage-control/auth/revoke\")\n },\n },\n ring: {\n authenticate(payload: { code: string }): Promise<void> {\n return axios.post(\"/ring/callback\", payload)\n },\n getDevices(): Promise<RingDevicesResponsePayload> {\n return axios.get(\"/ring/devices\")\n },\n importDevices(\n payload: RingImportDevicesPayload\n ): Promise<RingImportResponsePayload> {\n return axios.post(\"/ring/devices/import\", payload)\n },\n moveDevice(\n cameraExid: string,\n payload: RingMoveDevicePayload\n ): Promise<RingMoveDeviceResponsePayload> {\n return axios.patch(`/ring/devices/${cameraExid}/move`, payload)\n },\n deleteDevice(\n cameraExid: string\n ): Promise<{ status: string; cameraExid: string }> {\n return axios.delete(`/ring/devices/${cameraExid}`)\n },\n disconnect(): Promise<void> {\n return axios.post(\"/ring/disconnect\")\n },\n startLiveView(\n cameraExid: string,\n payload: RingLiveViewPayload\n ): Promise<RingLiveViewResponse> {\n return axios.post(`/ring/devices/${cameraExid}/live`, payload)\n },\n stopLiveView(\n cameraExid: string,\n sessionId: string\n ): Promise<RingStopLiveViewResponse> {\n return axios.delete(`/ring/devices/${cameraExid}/live/${sessionId}`)\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<void> {\n return axios.post(`/projects/${projectExid}/xweather/revoke`)\n },\n },\n recordings: {\n oldest(\n cameraId: string,\n payload?: SnapshotRequestPayload\n ): Promise<Snapshot> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots/oldest`, {\n params: payload,\n })\n },\n latest(\n cameraId: string,\n payload?: SnapshotRequestPayload\n ): 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?: SnapshotRequestPayload,\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 cancelToken,\n }: AvailableDaysRequestPayload): Promise<AvailableDaysResponsePayload> {\n return axios.get(\n `/cameras/${cameraId}/recordings/snapshots/${year}/${month}/days`,\n {\n params: payload,\n cancelToken,\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 extraParams?: AxiosRequestConfig\n ): Promise<SnapshotRangeResponsePayload> {\n return axios.get(`/cameras/${cameraId}/recordings/snapshots`, {\n params: payload,\n ...(extraParams || {}),\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<ProgressPhotoItemResponsePayload> {\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 | number,\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<void> {\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: FormData | MediaCreateRequestPayload,\n onUploadProgress: (progressEvent: any) => void = (_event) => {}\n ): Promise<Media> {\n return axios.post(`/projects/${projectExid}/media-hub`, payload, {\n onUploadProgress,\n timeout: 7200000,\n })\n },\n cUpdate(\n projectExid: string,\n id: string,\n payload: MediaUpdateRequestPayload\n ): Promise<Media> {\n return axios.patch(`/projects/${projectExid}/media-hub/${id}`, payload)\n },\n cDelete(projectExid: string, id: string): 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: { with_zoho?: boolean } = {}\n ): Promise<CompanySummary> {\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; sort?: string }\n }): Promise<PaginatedItems<CompanyUser>> {\n return axios.get(\"/company/users\", params)\n },\n getCompanyProjects(params?: {\n params: { page?: number; limit?: number; sort?: string }\n }): Promise<PaginatedItems<CompanyProject>> {\n return axios.get(\"/company/projects\", params)\n },\n getCompanyCameras(\n params: PaginationParams | { params: PaginationParams }\n ): Promise<PaginatedItems<CompanyCameraSummary>> {\n const config = \"params\" in params ? params : { params }\n\n return axios.get(\"/company/cameras\", config)\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: BatteryReadingRequestPayload\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: AxiosRequestConfig = {}\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: ApiCredentials\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?: ApiCredentials\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: {\n route: string\n params: string\n }): Promise<StoryblokResponse> {\n return axios.get(\"/proxy/storyblok\", { params })\n },\n },\n snapshots: {\n deliverViaEmail(\n projectExid: string,\n payload: SnapshotEmailDeliveryRequestPayload\n ): Promise<SnapshotEmailDeliveryResponsePayload> {\n return axios.post(\n `/projects/${projectExid}/snapshots/deliver/email`,\n payload\n )\n },\n },\n mailing: {\n unsubscribe(params: { key: string }): Promise<void> {\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(\n params: WidgetSessionSettingsPayload\n ): 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): Promise<void> {\n return axios.delete(`/widgets/${id}`)\n },\n },\n developerApps: {\n index(): Promise<{ items: OAuthClient[] }> {\n return axios.get(\"/developer/apps\")\n },\n show(clientId: string): Promise<OAuthClient> {\n return axios.get(`/developer/apps/${clientId}`)\n },\n create(payload: CreateOAuthClientPayload): Promise<OAuthClientWithSecret> {\n return axios.post(\"/developer/apps\", payload)\n },\n update(\n clientId: string,\n payload: UpdateOAuthClientPayload\n ): Promise<OAuthClient> {\n return axios.patch(`/developer/apps/${clientId}`, payload)\n },\n delete(clientId: string): Promise<void> {\n return axios.delete(`/developer/apps/${clientId}`)\n },\n regenerateSecret(clientId: string): Promise<OAuthClientWithSecret> {\n return axios.post(`/developer/apps/${clientId}/regenerate-secret`)\n },\n },\n oauth: {\n getClientInfo(clientId: string, scope: string): Promise<OAuthConsentInfo> {\n return axios.get(\"/oauth/client-info\", {\n params: { client_id: clientId, scope },\n })\n },\n submitConsent(payload: OAuthConsentPayload): Promise<OAuthConsentResponse> {\n return axios.post(\"/oauth/consent\", payload)\n },\n },\n zoho: {\n getDealLocation(\n dealId: string\n ): Promise<{ geographicBounds: GeoJSONPolygon | null }> {\n return axios.get(`/zoho/deals/${dealId}/location`)\n },\n updateDealLocation(\n dealId: string,\n payload: { geographicBounds: GeoJSONPolygon }\n ): Promise<void> {\n return axios.post(`/zoho/deals/${dealId}/location`, payload)\n },\n },\n}\n","import { axios } from \"./client\"\nimport { MoveParams, ZoomParams } from \"@evercam/api/types\"\n\nexport const PtzApi = {\n presets: {\n index({\n cameraExid,\n }: {\n cameraExid: string\n }): Promise<{ presets: Array<{ name: string; token: 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 { SwrRequestConfig } from \"@evercam/api/types\"\nimport type {\n _360AssetsQueryParams,\n _360AssetsRequestPayload,\n _360QueueQueryParams,\n _360AssetsUploadPayload,\n _360AssetsResponse,\n _360AssetsCountsResponse,\n _360QueueResponse,\n _360FloorsResponse,\n DroneQueueResponse,\n DroneUploadsResponse,\n IngestUploadInitResponse,\n BimUploadsResponse,\n MobileAssetsQueryParams,\n MobileCaptureAssetsResponse,\n BimUploadPayload,\n BimUploadsQueryParams,\n BimUpdatedWebhookPayload,\n CalculateMeasuringOperationRequestPayload,\n DrawingsRequestPayload,\n DronesQueryParams,\n DroneUploadUpdateRequestPayload,\n FlightImagesQueryParams,\n Generate360MapRequestPayload,\n GenerateFloorPayload,\n InspectionToolRequestPayload,\n JsonObject,\n _360WalkV2,\n _360FloorV2,\n} from \"@evercam/api/types\"\nimport { IngestVersions, IngestTypes } from \"@evercam/api/types\"\n\nexport const getIngestApiUrls = (type: string): string[] => {\n if (type === IngestTypes.Drone) {\n return (axios.env.ingestDroneApi || \"\").split(\";\")\n }\n if (type === IngestTypes.ThreeSixty) {\n return (axios.env.ingest360Api || \"\").split(\";\")\n }\n\n return []\n}\n\nexport const IngestApi = {\n drone: {\n createUpload(\n projectId: string,\n params: { uploadedBy: string }\n ): Promise<IngestUploadInitResponse> {\n return axios.post(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/${projectId}/upload`,\n null,\n { params }\n )\n },\n async reprocessDrone(id: number, params: JsonObject = {}): Promise<void> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.Drone\n )\n\n return axios.post(`${ingestUrl}/drone/${id}/reprocess`, null, { params })\n },\n getDrones(params: {\n params: Partial<DronesQueryParams>\n }): Promise<DroneUploadsResponse> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/uploads/`,\n params\n )\n },\n getArchive(id: number, params: { dataType: string }): Promise<Blob> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/uploads/archive/${id}`,\n {\n params,\n }\n )\n },\n deleteUpload(id: number): Promise<void> {\n return axios.delete(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/drone/uploads/${id}`\n )\n },\n prepareForUpload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n }\n ): Promise<void> {\n return axios.put(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/${projectId}/prepare-upload`,\n null,\n { params }\n )\n },\n async upload(\n projectId: string,\n params: {\n uploadedBy: string\n token: string\n },\n payload: DroneUploadUpdateRequestPayload\n ): Promise<void> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.Drone\n )\n\n return axios.put(`${ingestUrl}/drone/${projectId}/upload`, payload, {\n params,\n })\n },\n verifyToken(\n projectId: string,\n params: { token: string }\n ): Promise<JsonObject> {\n return axios.get(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/uploads/${projectId}/verify`,\n {\n params: { token: params.token },\n }\n )\n },\n calculateMeasuringOperation(\n projectId: string,\n params: CalculateMeasuringOperationRequestPayload,\n ingestUrl: string = getIngestApiUrls(IngestTypes.Drone)[0]\n ): Promise<JsonObject> {\n return axios.post(\n `${ingestUrl}/drone/api/${projectId}/calculate-measuring-operation`,\n params\n )\n },\n inspectionTool(\n projectId: string,\n params: InspectionToolRequestPayload\n ): Promise<JsonObject> {\n return axios.post(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/api/${projectId}/inspection-tool`,\n params\n )\n },\n isInspectionEnabled(\n projectId: string,\n params: JsonObject = {}\n ): Promise<JsonObject> {\n return axios.post(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/api/${projectId}/inspection-enabled`,\n null,\n { params }\n )\n },\n getDroneQueueSize(droneUrl: string): Promise<DroneQueueResponse> {\n return axios.get(`${droneUrl}/drone/queue`)\n },\n getFlightImages(\n projectId: string,\n params: FlightImagesQueryParams\n ): Promise<JsonObject> {\n return axios.get(\n `${\n getIngestApiUrls(IngestTypes.Drone)[0]\n }/drone/api/${projectId}/flight-images`,\n {\n params,\n }\n )\n },\n async checkFlightAvailableFeatures(\n projectId: string,\n params: JsonObject\n ): Promise<JsonObject> {\n const urls = getIngestApiUrls(IngestTypes.Drone)\n\n const responses = await Promise.all(\n urls.map(async (url) => {\n try {\n const result = (await axios.get(\n `${url}/drone/api/${projectId}/flight-available-features`,\n { params }\n )) as unknown as JsonObject\n\n return { ...result, ingestUrl: url }\n } catch {\n return null\n }\n })\n )\n\n const validResponses = responses.filter(Boolean)\n const withDem = validResponses.find((r) => (r as any).isVolumeToolEnabled)\n\n return (withDem ?? validResponses[0] ?? {}) as JsonObject\n },\n },\n assets360: {\n get360Assets(params: {\n params: Partial<_360AssetsQueryParams>\n }): Promise<_360AssetsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/assets/`, params)\n },\n get360AssetsCounts(\n projectId: string,\n params: { uploadedBy: string }\n ): Promise<_360AssetsCountsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/assets/${projectId}/counts`, {\n params,\n })\n },\n get360AssetLink(\n projectId: string,\n date: string,\n floor: string,\n assetType: string,\n drawingId: string,\n marker: string | null\n ): Promise<string> {\n return axios.get(\n `${\n getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n }/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 ): Promise<_360WalkV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.put(`${ingestUrl}/360/assets/${id}`, payload)\n },\n update360ByProjectDateName(\n projectId: string,\n date: string,\n floor: string,\n payload: _360AssetsRequestPayload\n ): Promise<_360WalkV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.put(\n `${ingestUrl}/360/assets/${projectId}/${date}/${floor}`,\n payload\n )\n },\n deleteUpload(id: number): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.delete(`${ingestUrl}/360/assets/${id}`)\n },\n getArchive(id: number, params: { dateType: string }): Promise<Blob> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/assets/archive/${id}`, {\n params,\n })\n },\n createUpload(\n projectId: string,\n params: _360AssetsRequestPayload\n ): Promise<IngestUploadInitResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(`${ingestUrl}/360/${projectId}/upload`, null, {\n params,\n })\n },\n async upload(\n id: number,\n params: JsonObject,\n payload: _360AssetsUploadPayload\n ): Promise<_360WalkV2> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.ThreeSixty\n )\n\n return axios.put(`${ingestUrl}/360/${id}/upload`, payload, {\n params,\n headers: {\n \"X-Processing-Source\": \"DASHBOARD\",\n },\n })\n },\n async reprocess360(id: number): Promise<void> {\n const ingestUrl = await IngestApi.utils.chooseIngestApiUrl(\n IngestTypes.ThreeSixty\n )\n\n return axios.put(`${ingestUrl}/360/${id}/reprocess`)\n },\n drawingExists(payload: {\n params: {\n name: string\n project_id: string\n }\n }): Promise<JsonObject> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(\n `${ingestUrl}/360/floors/exists?${toQueryString(\n payload.params ?? payload\n )}`\n )\n },\n getDrawings(payload: {\n params: DrawingsRequestPayload\n config?: SwrRequestConfig<_360FloorsResponse>\n }): Promise<_360FloorsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(\n `${ingestUrl}/360/floors/?${toQueryString(payload.params ?? payload)}`,\n payload.config\n )\n },\n getDrawingById(id: number, projectExid: string): Promise<_360FloorV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(\n `${ingestUrl}/360/floors/${id}?project_id=${projectExid}`\n )\n },\n updateDrawing(\n id: number,\n projectExid: string,\n payload: GenerateFloorPayload\n ): Promise<_360FloorV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.put(\n `${ingestUrl}/360/floors/${id}?project_id=${projectExid}`,\n payload\n )\n },\n deleteDrawing(id: number): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.delete(`${ingestUrl}/360/floors/${id}`)\n },\n transferWalks(\n sourceId: number,\n targetId: number,\n projectExid: string\n ): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(\n `${ingestUrl}/360/floors/${sourceId}/transfer-walks/${targetId}?project_id=${projectExid}`\n )\n },\n createDrawing(\n projectExid: string,\n payload: GenerateFloorPayload,\n createdBy: string\n ): Promise<_360FloorV2> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(\n `${ingestUrl}/360/floors/${projectExid}?created_by=${createdBy}`,\n payload\n )\n },\n fetchDrawingOverlay(\n id: number,\n params: { view: boolean; thumbnail?: boolean },\n onDownloadProgress?: (progress: ProgressEvent) => void\n ): Promise<string> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/floors/${id}/overlay`, {\n params,\n onDownloadProgress,\n })\n },\n getFloorArchive(id: number): Promise<string> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/360/floors/${id}/archive`)\n },\n generate360map(\n projectId: string,\n params: Generate360MapRequestPayload\n ): Promise<JsonObject> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.post(\n `${ingestUrl}/360/api/${projectId}/generate-360-map`,\n params\n )\n },\n get360QueueSize(\n ingestUrl: string,\n params: _360QueueQueryParams = {}\n ): Promise<_360QueueResponse> {\n return axios.get(`${ingestUrl}/360/queue`, { params })\n },\n },\n bim: {\n createUpload(\n projectId: string,\n params: { uploadedBy: string }\n ): Promise<IngestUploadInitResponse> {\n return axios.post(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/${projectId}/upload`,\n null,\n { params }\n )\n },\n getBIMs(params: {\n params: Partial<BimUploadsQueryParams>\n }): Promise<BimUploadsResponse> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/uploads/`,\n params\n )\n },\n getArchive(id: number): Promise<Blob> {\n return axios.get(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/uploads/archive/${id}`\n )\n },\n deleteUpload(id: number): Promise<void> {\n return axios.delete(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/uploads/${id}`\n )\n },\n upload(\n projectId: string,\n params: {\n id: string\n name: string\n },\n payload: BimUploadPayload\n ): Promise<void> {\n return axios.put(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/bim/${projectId}/upload`,\n payload,\n { params }\n )\n },\n },\n webhook: {\n notifyBimUpdated(projectId: string, bimIdentifier: string): Promise<void> {\n const payload: BimUpdatedWebhookPayload = {\n eventName: \"bim.updated\",\n projectId,\n data: {\n updatedAt: new Date().toISOString(),\n bimIdentifier,\n },\n }\n\n return axios.post(\n `${getIngestApiUrls(IngestTypes.Drone)[0]}/webhook/`,\n payload\n )\n },\n },\n mobileCapture: {\n getProjectMobileAssets(\n params: MobileAssetsQueryParams,\n extraConfig: AxiosRequestConfig = {}\n ): Promise<MobileCaptureAssetsResponse> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/mobile/assets/`, {\n params,\n ...extraConfig,\n })\n },\n getMobileAssetPhoto(\n assetId: string | number,\n params: {\n projectId?: string\n project_id?: string\n isThumbnail?: boolean\n is_thumbnail?: boolean\n }\n ): Promise<string> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.get(`${ingestUrl}/mobile/assets/${assetId}`, {\n params,\n })\n },\n deleteAsset(assetId: string | number): Promise<void> {\n const ingestUrl = getIngestApiUrls(IngestTypes.ThreeSixty)[0]\n\n return axios.delete(`${ingestUrl}/mobile/assets/${assetId}`)\n },\n },\n utils: {\n async loadAllAssetsInQueue() {\n try {\n const droneUrls = getIngestApiUrls(IngestTypes.Drone)\n const urls360 = getIngestApiUrls(IngestTypes.ThreeSixty)\n const allAssets = []\n\n const droneResults = await Promise.all(\n droneUrls.map(async (ingestUrl) => {\n const result = await IngestApi.drone.getDroneQueueSize(ingestUrl)\n const version = IngestApi.utils.getIngestVersion(ingestUrl)\n\n return (result?.assetsDrone || []).map((asset) => ({\n ...asset,\n ingestVersion: version.toUpperCase(),\n }))\n })\n )\n\n const results360 = await Promise.all(\n urls360.map(async (ingestUrl) => {\n const result = await IngestApi.assets360.get360QueueSize(ingestUrl)\n const version = IngestApi.utils.getIngestVersion(ingestUrl)\n\n return (result?.assets360 || []).map((asset) => ({\n ...asset,\n ingestVersion: version.toUpperCase(),\n }))\n })\n )\n\n allAssets.push(...droneResults.flat(), ...results360.flat())\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 getIngestVersion(ingestUrl: string): IngestVersions {\n const number = ingestUrl.match(/ingest(\\d*)/)?.[1] || \"1\"\n\n return `V${number}` as IngestVersions\n },\n async chooseIngestApiUrl(type: IngestTypes): Promise<string> {\n const urls = getIngestApiUrls(type)\n\n const queues = await Promise.all(\n urls.map(async (ingestUrl) => {\n try {\n let queueSize = 0\n if (type === IngestTypes.Drone) {\n const result = await IngestApi.drone.getDroneQueueSize(ingestUrl)\n queueSize = result?.assetsDrone?.length || 0\n } else {\n const result = await IngestApi.assets360.get360QueueSize(\n ingestUrl\n )\n queueSize = result?.assets360?.length || 0\n }\n\n return { ingestUrl, queue: queueSize }\n } catch {\n return { ingestUrl, queue: Infinity }\n }\n })\n )\n\n return queues.reduce((min, current) =>\n current.queue < min.queue ? current : min\n ).ingestUrl\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 AuthzRoleUser,\n AuthzScope,\n AuthzScopeCreatePayload,\n AuthzScopeUpdatePayload,\n AuthzUserRolesResponse,\n ProjectExid,\n ProjectResourceRole,\n ProjectRoleRequestPayload,\n Role,\n RoleResourceType,\n} from \"@evercam/api/types\"\nimport { axios } from \"./client\"\nimport type { AxiosRequestConfig } from \"axios\"\n\nexport const AuthzApi = {\n roles: {\n async get(\n params?: AxiosRequestConfig & { params?: { scope?: string } }\n ): Promise<{ total: number; items: Role[] }> {\n return await axios.get(\"/admin/authz/roles\", params)\n },\n async getRoleDetails(id: number): Promise<Role> {\n return await axios.get(`/admin/authz/roles/${id}`)\n },\n createRole(params: Partial<Role> & Pick<Role, \"name\">): Promise<Role> {\n return axios.post(\"/admin/authz/roles\", params)\n },\n updateRole(id: number, params: Partial<Role>): Promise<Role> {\n return axios.patch(`/admin/authz/roles/${id}`, params)\n },\n deleteRole(id: number): Promise<void> {\n return axios.delete(`/admin/authz/roles/${id}`)\n },\n addPermission(id: number, action: string): Promise<void> {\n return axios.post(`/admin/authz/roles/${id}/permissions/`, { action })\n },\n deletePermission(id: number, action: string): Promise<void> {\n return axios.delete(`/admin/authz/roles/${id}/permissions/${action}`)\n },\n async getRoleUsers(id: number): Promise<AuthzRoleUser[]> {\n return axios.get(`/admin/authz/roles/${id}/users`)\n },\n async assignUsers(\n roleId: number,\n emails: Array<string>,\n resourceId: string = \"evercam-admin\"\n ): Promise<void> {\n return axios.post(`/admin/authz/roles/${roleId}/users`, {\n emails,\n resourceId,\n })\n },\n getUserRoles(\n projectExid?: ProjectExid,\n resourceType?: RoleResourceType\n ): Promise<AuthzUserRolesResponse> {\n return axios.get(\"/users/roles\", {\n params: {\n resourceId: projectExid || null,\n resourceType: 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(): Promise<AuthzScope[]> {\n return await axios.get(\"/admin/authz/scopes\")\n },\n create(params: AuthzScopeCreatePayload): Promise<AuthzScope> {\n return axios.post(\"/admin/authz/scopes\", params)\n },\n delete(id: number): Promise<void> {\n return axios.delete(`/admin/authz/scopes/${id}`)\n },\n update(id: number, params: AuthzScopeUpdatePayload): Promise<AuthzScope> {\n return axios.patch(`/admin/authz/scopes/${id}`, params)\n },\n },\n}\n"],"names":["_360PinType","_360UrlParams","_360AssetType","_360AssetLabel","_360Feature","_360IntergrationType","PathMarkerColor","AconexDocumentDataType","AconexFormComponentType","AconexMandatoryStatus","AconexIdentifiers","AnalyticsEventPageId","AnalyticsEvent","AnprDirection","AnprEventStatus","AnprExtractionStatus","AnprExtractionSaveMode","MediaType","MediaFileType","MediaStatus","MediaStatusId","ClipsCategory","MediaCategory","BimModelType","BimUploadStatus","BIMLayerTypes","ForgeBimUploadMethod","ForgeBimFileRejectionReason","ForgeBimUploadStage","ForgeBimDialogTrigger","CameraStatus","IntensityChange","IntensityChangeColorMap","CameraFeatureFlag","NvrModel","CameraModel","HddStatus","DuplicatedCameraFields","BimType","CompareStatus","CopilotMessageAuthor","CopilotMessageType","CopilotStepId","CopilotMissingFieldsLabels","CopilotSocketEvent","CopilotProvider","CopilotSuggestion","CopilotChatProvider","CopilotLayout","CopilotToolId","CopilotMissingFieldComponent","CopilotMissingFieldName","CopilotMissingFieldType","DroneTagType","DroneMarkerType","DroneUrlParams","DroneProvider","ErrorType","ErrorCode","EvercamApiErrorCode","GateReportDetectionType","GateReportEventType","DetectionLabel","SegmentLabel","GateReportVehicleType","GateReportDataSource","GateReportEventDirection","GateReportExportType","GateReportProcessingStatus","VEHICLE_TYPE_IDS","HddFormat","HddType","HddState","WarehouseLocationIndex","WarehouseLocation","HddSize","IngestProcessingStatus","MobileAssetsType","IngestVersions","IngestTypes","MapType","Connector","ProcoreType","NotificationType","NvrDeviceType","NvrHddStatus","ProcoreObservationCustomFieldDataType","ProcoreObservationDefaultFieldNames","ProcoreTools","ProcoreToolUserAccessLevelIds","AutomationDialogType","ProjectStatus","ProjectArchiveTier","ProjectFeatureFlag","ProjectStorageStatus","BrainTool","CloudRecordingFrequency","CloudRecordingDuration","CloudRecordingDurationLabel","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","PlannerUrlParams","EDistortImageModes","EMapTypes","EMarkers","EPageType","EPaths","EProjectItems","ERoles","ProjectStorageProvider","ExNvrFootageAvailableStatus","ExNvrDeviceState","ExNvrMetricId","TimelapseStatus","TimelapseDuration","TimelapseScheduleType","TimelapsePeriod","TimelapseType","TimelapseExportStep","UserFeatureFlag","ContactRole","Persona","UserSessionType","VideoWallItemType","WeatherReportScope","WeatherProvider","CommentsScope","CommentsLabel","PpeLabel","DetectionModel","Operator","UnitSystem","MobileDevice","_3dViewer","InfoPage","DownloadFileType","FeedbackContext","TimelinePrecision","TaskStatus","PtzDirection","ZoomDirection","KitStatus","KitRegion","KitAlarm","KitMetricId","KitMetricPeriod","GrafanaMetricId","KitChartType","KitStorageTransport","AuditLogActionType","AuditLogEntity","SnapshotExtractionStatus","SnapshotExtractionType","SnapshotTransferStatus","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","isProjectRole","role","isCameraRole","SiteViewSoftwareType","SiteViewerType","AiApp","AiProvider","AiConfigsPromptDialogMode","AiConfigsKeyDialogMode","AI_APP_CONFIGS","AI_PROVIDER_CONFIGS","AiPromptModel","VehicleClassifierSource","AppRuntimeState","createErrorClass","errorName","error","e","BadRequestError","NotFoundError","UnauthorizedError","GatewayTimeoutError","BadGatewayError","ForbiddenError","HlsError","SnapshotError","ConflictError","InternalServerError","numberOfRequestsSentInThePastSecond","maxRequestsPerSecond","requestsRateLimit","r","onRequest","request","axiosEnv","ensureBaseUrl","removeAuthorizationHeader","addAuthTokenHeader","_a","commonHeaders","transformCamelCaseToSnakeCase","onResponse","response","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","CANCEL_REASON","createRequestManager","requests","source","AdminApi","cameraId","device","payload","providerId","exid","extraConfig","newOwnerId","id","ids","template","extractionId","cameraExid","type","kitId","metric","fromDate","toDate","tagId","projectExid","hddId","footageId","simId","number","tag","email","VideoWallApi","body","getFirebaseDbApi","getFirebaseStorageUrl","getFirebaseStorageToken","getForgeTokenServerUrl","firebaseRequestConfig","_3dFirebaseApi","projectId","tags","markers","dateId","points","plan","uuid","plans","model","trueIndex","modelData","models","isScene3D","transform","items","index","floorIndex","floorId","floors","dates","pins","projectID","dateID","floorID","featureFlagName","stepsValue","gpxContent","blob","modelIndex","viewerType","viewerPath","dbLink","mapViews","link","sitePlanId","toQueryString","paramsObject","forceSnakeCase","forceArrayBrackets","param","encodedParam","_acc","i","paramName","queryStringToObject","queryString","getAiApiUrl","getAiApiUrlV2","AiApi","extraParams","anprEventId","captureTime","updatedBy","iouThreshold","restParams","queryParams","queryId","cameraExids","query","fileType","directDownload","limit","page","appUuid","appId","serviceId","promptId","keyId","revoke","state","WebRtcApi","WeatherApi","getLabsBaseUrl","labsPrNumber","EvercamLabsApi","conversationId","message","messageId","fileName","metrics","period","EvercamApi","provider","apiId","apiKey","widgetId","widgetKey","user","sessionId","dateTime","headers","name","emails","documentTypeId","hubId","parentFolderId","getDerivatives","folderId","timestamp","year","month","cancelToken","day","progressPhotoId","onUploadProgress","_event","companyId","archive","clientId","scope","dealId","PtzApi","presetId","isRecordingFromNvr","presetName","direction","useContinuous","zoomValue","getIngestApiUrls","IngestApi","ingestUrl","droneUrl","urls","validResponses","withDem","date","floor","assetType","drawingId","marker","sourceId","targetId","createdBy","onDownloadProgress","bimIdentifier","assetId","droneUrls","urls360","allAssets","droneResults","result","version","asset","results360","a","b","queueSize","min","current","ExNvrApi","apiUrl","username","password","deviceId","startDate","AuthzApi","action","roleId","resourceId","resourceType"],"mappings":"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","x_google_ignoreList":[52]}
|