@camstack/types 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/__tests__/addon-capability-provider.test.d.ts +2 -0
  2. package/dist/__tests__/addon-capability-provider.test.d.ts.map +1 -0
  3. package/dist/__tests__/addon-declaration.test.d.ts +2 -0
  4. package/dist/__tests__/addon-declaration.test.d.ts.map +1 -0
  5. package/dist/__tests__/capability.test.d.ts +2 -0
  6. package/dist/__tests__/capability.test.d.ts.map +1 -0
  7. package/dist/catalogs/coco-classmap.d.ts +5 -0
  8. package/dist/catalogs/coco-classmap.d.ts.map +1 -0
  9. package/dist/catalogs/index.d.ts +2 -0
  10. package/dist/catalogs/index.d.ts.map +1 -0
  11. package/dist/constants.d.ts +3 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/generated/addon-api.d.ts +4870 -0
  14. package/dist/generated/addon-api.d.ts.map +1 -0
  15. package/dist/index.d.ts +82 -3053
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +377 -8
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +369 -7
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/interfaces/addon-i18n.d.ts +41 -0
  22. package/dist/interfaces/addon-i18n.d.ts.map +1 -0
  23. package/dist/interfaces/addon-routes.d.ts +50 -0
  24. package/dist/interfaces/addon-routes.d.ts.map +1 -0
  25. package/dist/interfaces/addon.d.ts +294 -0
  26. package/dist/interfaces/addon.d.ts.map +1 -0
  27. package/dist/interfaces/advanced-notifier.d.ts +59 -0
  28. package/dist/interfaces/advanced-notifier.d.ts.map +1 -0
  29. package/dist/interfaces/agent-protocol.d.ts +189 -0
  30. package/dist/interfaces/agent-protocol.d.ts.map +1 -0
  31. package/dist/interfaces/agent.d.ts +87 -0
  32. package/dist/interfaces/agent.d.ts.map +1 -0
  33. package/dist/interfaces/analysis-persistence.d.ts +278 -0
  34. package/dist/interfaces/analysis-persistence.d.ts.map +1 -0
  35. package/dist/interfaces/analysis.d.ts +27 -0
  36. package/dist/interfaces/analysis.d.ts.map +1 -0
  37. package/dist/interfaces/api-shared.d.ts +168 -0
  38. package/dist/interfaces/api-shared.d.ts.map +1 -0
  39. package/dist/interfaces/auth-provider.d.ts +39 -0
  40. package/dist/interfaces/auth-provider.d.ts.map +1 -0
  41. package/dist/interfaces/auth.d.ts +47 -0
  42. package/dist/interfaces/auth.d.ts.map +1 -0
  43. package/dist/interfaces/camera-pipeline.d.ts +121 -0
  44. package/dist/interfaces/camera-pipeline.d.ts.map +1 -0
  45. package/dist/interfaces/capability.d.ts +84 -0
  46. package/dist/interfaces/capability.d.ts.map +1 -0
  47. package/dist/interfaces/classifier.d.ts +8 -0
  48. package/dist/interfaces/classifier.d.ts.map +1 -0
  49. package/dist/interfaces/config-ui.d.ts +152 -0
  50. package/dist/interfaces/config-ui.d.ts.map +1 -0
  51. package/dist/interfaces/context.d.ts +44 -0
  52. package/dist/interfaces/context.d.ts.map +1 -0
  53. package/dist/interfaces/cropper.d.ts +8 -0
  54. package/dist/interfaces/cropper.d.ts.map +1 -0
  55. package/dist/interfaces/decoder.d.ts +27 -0
  56. package/dist/interfaces/decoder.d.ts.map +1 -0
  57. package/dist/interfaces/detection-addon.d.ts +15 -0
  58. package/dist/interfaces/detection-addon.d.ts.map +1 -0
  59. package/dist/interfaces/detector.d.ts +8 -0
  60. package/dist/interfaces/detector.d.ts.map +1 -0
  61. package/dist/interfaces/device-capabilities/accessory.d.ts +14 -0
  62. package/dist/interfaces/device-capabilities/accessory.d.ts.map +1 -0
  63. package/dist/interfaces/device-capabilities/audio-detector.d.ts +12 -0
  64. package/dist/interfaces/device-capabilities/audio-detector.d.ts.map +1 -0
  65. package/dist/interfaces/device-capabilities/camera.d.ts +22 -0
  66. package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -0
  67. package/dist/interfaces/device-capabilities/doorbell.d.ts +10 -0
  68. package/dist/interfaces/device-capabilities/doorbell.d.ts.map +1 -0
  69. package/dist/interfaces/device-capabilities/events.d.ts +47 -0
  70. package/dist/interfaces/device-capabilities/events.d.ts.map +1 -0
  71. package/dist/interfaces/device-capabilities/index.d.ts +15 -0
  72. package/dist/interfaces/device-capabilities/index.d.ts.map +1 -0
  73. package/dist/interfaces/device-capabilities/motion-sensor.d.ts +7 -0
  74. package/dist/interfaces/device-capabilities/motion-sensor.d.ts.map +1 -0
  75. package/dist/interfaces/device-capabilities/native-detection.d.ts +14 -0
  76. package/dist/interfaces/device-capabilities/native-detection.d.ts.map +1 -0
  77. package/dist/interfaces/device-capabilities/object-detector.d.ts +59 -0
  78. package/dist/interfaces/device-capabilities/object-detector.d.ts.map +1 -0
  79. package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts +29 -0
  80. package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts.map +1 -0
  81. package/dist/interfaces/device-capabilities/recording.d.ts +18 -0
  82. package/dist/interfaces/device-capabilities/recording.d.ts.map +1 -0
  83. package/dist/interfaces/device-capabilities/siren.d.ts +8 -0
  84. package/dist/interfaces/device-capabilities/siren.d.ts.map +1 -0
  85. package/dist/interfaces/device-capabilities/status-light.d.ts +7 -0
  86. package/dist/interfaces/device-capabilities/status-light.d.ts.map +1 -0
  87. package/dist/interfaces/device-capabilities/switch.d.ts +8 -0
  88. package/dist/interfaces/device-capabilities/switch.d.ts.map +1 -0
  89. package/dist/interfaces/device-capabilities/two-way-audio.d.ts +8 -0
  90. package/dist/interfaces/device-capabilities/two-way-audio.d.ts.map +1 -0
  91. package/dist/interfaces/device-capability.d.ts +14 -0
  92. package/dist/interfaces/device-capability.d.ts.map +1 -0
  93. package/dist/interfaces/device-provider.d.ts +43 -0
  94. package/dist/interfaces/device-provider.d.ts.map +1 -0
  95. package/dist/interfaces/device.d.ts +40 -0
  96. package/dist/interfaces/device.d.ts.map +1 -0
  97. package/dist/interfaces/event-bus.d.ts +22 -0
  98. package/dist/interfaces/event-bus.d.ts.map +1 -0
  99. package/dist/interfaces/feature-flags.d.ts +14 -0
  100. package/dist/interfaces/feature-flags.d.ts.map +1 -0
  101. package/dist/interfaces/ffmpeg.d.ts +10 -0
  102. package/dist/interfaces/ffmpeg.d.ts.map +1 -0
  103. package/dist/interfaces/inference-capabilities.d.ts +101 -0
  104. package/dist/interfaces/inference-capabilities.d.ts.map +1 -0
  105. package/dist/interfaces/inference-engine.d.ts +17 -0
  106. package/dist/interfaces/inference-engine.d.ts.map +1 -0
  107. package/dist/interfaces/lifecycle.d.ts +19 -0
  108. package/dist/interfaces/lifecycle.d.ts.map +1 -0
  109. package/dist/interfaces/logging.d.ts +33 -0
  110. package/dist/interfaces/logging.d.ts.map +1 -0
  111. package/dist/interfaces/model-catalog.d.ts +25 -0
  112. package/dist/interfaces/model-catalog.d.ts.map +1 -0
  113. package/dist/interfaces/network-quality.d.ts +25 -0
  114. package/dist/interfaces/network-quality.d.ts.map +1 -0
  115. package/dist/interfaces/network.d.ts +43 -0
  116. package/dist/interfaces/network.d.ts.map +1 -0
  117. package/dist/interfaces/notification.d.ts +53 -0
  118. package/dist/interfaces/notification.d.ts.map +1 -0
  119. package/dist/interfaces/pipeline-runner.d.ts +23 -0
  120. package/dist/interfaces/pipeline-runner.d.ts.map +1 -0
  121. package/dist/interfaces/pipeline-slot.d.ts +10 -0
  122. package/dist/interfaces/pipeline-slot.d.ts.map +1 -0
  123. package/dist/interfaces/platform.d.ts +55 -0
  124. package/dist/interfaces/platform.d.ts.map +1 -0
  125. package/dist/interfaces/process.d.ts +41 -0
  126. package/dist/interfaces/process.d.ts.map +1 -0
  127. package/dist/interfaces/python-env.d.ts +20 -0
  128. package/dist/interfaces/python-env.d.ts.map +1 -0
  129. package/dist/interfaces/refiner.d.ts +8 -0
  130. package/dist/interfaces/refiner.d.ts.map +1 -0
  131. package/dist/interfaces/repl.d.ts +26 -0
  132. package/dist/interfaces/repl.d.ts.map +1 -0
  133. package/dist/interfaces/repositories.d.ts +20 -0
  134. package/dist/interfaces/repositories.d.ts.map +1 -0
  135. package/dist/interfaces/restreamer.d.ts +24 -0
  136. package/dist/interfaces/restreamer.d.ts.map +1 -0
  137. package/dist/interfaces/router.d.ts +30 -0
  138. package/dist/interfaces/router.d.ts.map +1 -0
  139. package/dist/interfaces/scene-intelligence.d.ts +21 -0
  140. package/dist/interfaces/scene-intelligence.d.ts.map +1 -0
  141. package/dist/interfaces/scoped-token.d.ts +22 -0
  142. package/dist/interfaces/scoped-token.d.ts.map +1 -0
  143. package/dist/interfaces/server-analysis.d.ts +146 -0
  144. package/dist/interfaces/server-analysis.d.ts.map +1 -0
  145. package/dist/interfaces/server-network.d.ts +78 -0
  146. package/dist/interfaces/server-network.d.ts.map +1 -0
  147. package/dist/interfaces/storage-backend.d.ts +27 -0
  148. package/dist/interfaces/storage-backend.d.ts.map +1 -0
  149. package/dist/interfaces/storage.d.ts +174 -0
  150. package/dist/interfaces/storage.d.ts.map +1 -0
  151. package/dist/interfaces/stream-broker.d.ts +92 -0
  152. package/dist/interfaces/stream-broker.d.ts.map +1 -0
  153. package/dist/interfaces/streaming.d.ts +29 -0
  154. package/dist/interfaces/streaming.d.ts.map +1 -0
  155. package/dist/interfaces/task-handler.d.ts +46 -0
  156. package/dist/interfaces/task-handler.d.ts.map +1 -0
  157. package/dist/interfaces/webrtc-provider.d.ts +11 -0
  158. package/dist/interfaces/webrtc-provider.d.ts.map +1 -0
  159. package/dist/interfaces/worker-protocol.d.ts +110 -0
  160. package/dist/interfaces/worker-protocol.d.ts.map +1 -0
  161. package/dist/schemas/system-settings-schemas.d.ts +27 -0
  162. package/dist/schemas/system-settings-schemas.d.ts.map +1 -0
  163. package/dist/types/analytics.d.ts +75 -0
  164. package/dist/types/analytics.d.ts.map +1 -0
  165. package/dist/types/benchmark.d.ts +112 -0
  166. package/dist/types/benchmark.d.ts.map +1 -0
  167. package/dist/types/camera-detection.d.ts +34 -0
  168. package/dist/types/camera-detection.d.ts.map +1 -0
  169. package/dist/types/config.d.ts +37 -0
  170. package/dist/types/config.d.ts.map +1 -0
  171. package/dist/types/detection.d.ts +93 -0
  172. package/dist/types/detection.d.ts.map +1 -0
  173. package/dist/types/device-type.d.ts +10 -0
  174. package/dist/types/device-type.d.ts.map +1 -0
  175. package/dist/types/entities.d.ts +35 -0
  176. package/dist/types/entities.d.ts.map +1 -0
  177. package/dist/types/events.d.ts +35 -0
  178. package/dist/types/events.d.ts.map +1 -0
  179. package/dist/types/io.d.ts +25 -0
  180. package/dist/types/io.d.ts.map +1 -0
  181. package/dist/types/labels.d.ts +12 -0
  182. package/dist/types/labels.d.ts.map +1 -0
  183. package/dist/types/live-state.d.ts +47 -0
  184. package/dist/types/live-state.d.ts.map +1 -0
  185. package/dist/types/models.d.ts +79 -0
  186. package/dist/types/models.d.ts.map +1 -0
  187. package/dist/types/pipeline-schema.d.ts +78 -0
  188. package/dist/types/pipeline-schema.d.ts.map +1 -0
  189. package/dist/types/pipeline.d.ts +42 -0
  190. package/dist/types/pipeline.d.ts.map +1 -0
  191. package/dist/types/tracked.d.ts +21 -0
  192. package/dist/types/tracked.d.ts.map +1 -0
  193. package/dist/types/zones.d.ts +48 -0
  194. package/dist/types/zones.d.ts.map +1 -0
  195. package/dist/utils/cosine-similarity.d.ts +3 -0
  196. package/dist/utils/cosine-similarity.d.ts.map +1 -0
  197. package/dist/utils/hf-url.d.ts +2 -0
  198. package/dist/utils/hf-url.d.ts.map +1 -0
  199. package/package.json +16 -5
  200. package/dist/index.d.mts +0 -3053
@@ -0,0 +1,27 @@
1
+ import type { ICamstackAddon } from './addon.js';
2
+ import type { FrameInput } from '../types/io.js';
3
+ import type { PipelineConfig, PipelineStatus } from '../types/pipeline.js';
4
+ import type { DetectionEvent } from '../types/events.js';
5
+ import type { KnownFace, KnownPlate } from '../types/entities.js';
6
+ import type { CameraZone, MotionSource } from '../types/zones.js';
7
+ import type { CameraLiveState, TrackedObjectSummary, ZoneLiveState } from '../types/live-state.js';
8
+ import type { TrackDetail, TrackFilter, ZoneHistoryPoint, HeatmapData, HeatmapOptions, TimeRangeOptions } from '../types/analytics.js';
9
+ export interface ICameraAnalyticsProvider {
10
+ getLiveState(deviceId: string): CameraLiveState | null;
11
+ getTracks(deviceId: string, filter?: TrackFilter): TrackedObjectSummary[];
12
+ getZoneState(deviceId: string, zoneId: string): ZoneLiveState | null;
13
+ getZoneHistory(deviceId: string, zoneId: string, options: TimeRangeOptions): Promise<ZoneHistoryPoint[]>;
14
+ getHeatmap(deviceId: string, options: HeatmapOptions): Promise<HeatmapData>;
15
+ getTrackDetail(deviceId: string, trackId: string): TrackDetail | null;
16
+ getCameraStatus(deviceId: string): PipelineStatus[];
17
+ }
18
+ export interface IAnalysisAddon extends ICamstackAddon, ICameraAnalyticsProvider {
19
+ processFrame(deviceId: string, frame: FrameInput): Promise<DetectionEvent[]>;
20
+ setCameraPipeline(deviceId: string, config: PipelineConfig): void;
21
+ setCameraZones(deviceId: string, zones: readonly CameraZone[]): void;
22
+ setCameraMotionConfig(deviceId: string, source: MotionSource): void;
23
+ setKnownFaces(faces: KnownFace[]): void;
24
+ setKnownPlates(plates: KnownPlate[]): void;
25
+ onLiveStateChange(deviceId: string, callback: (state: CameraLiveState) => void): () => void;
26
+ }
27
+ //# sourceMappingURL=analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/interfaces/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAEtI,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAA;IACtD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,oBAAoB,EAAE,CAAA;IACzE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAA;IACpE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACxG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAA;IACrE,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAAA;CACpD;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc,EAAE,wBAAwB;IAC9E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IAC5E,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;IACjE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAAA;IACpE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IACnE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;IACvC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAC1C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5F"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * API-shared types — types that originated in @camstack/core, @camstack/kernel,
3
+ * or server internals and are now canonical here so the generated API type file
4
+ * has zero external dependencies beyond @camstack/types.
5
+ */
6
+ import type { ProviderStatus } from './device-provider.js';
7
+ import type { ElementStatus } from './lifecycle.js';
8
+ import type { CameraPriority, CameraPhase } from './stream-broker.js';
9
+ import type { AddonPageDeclaration } from './addon.js';
10
+ export interface BackupManifest {
11
+ readonly id: string;
12
+ readonly timestamp: number;
13
+ readonly label?: string;
14
+ readonly locations: readonly string[];
15
+ readonly sizeMB: number;
16
+ readonly path: string;
17
+ }
18
+ export interface ProviderListItem {
19
+ id: string;
20
+ type: string;
21
+ name: string;
22
+ status: ProviderStatus;
23
+ started: boolean;
24
+ lifecycle: ElementStatus;
25
+ }
26
+ export interface InstalledPackage {
27
+ readonly name: string;
28
+ readonly version: string;
29
+ readonly dir: string;
30
+ }
31
+ /** A page declaration enriched with its source addon ID */
32
+ export interface AddonPageInfo {
33
+ readonly addonId: string;
34
+ readonly page: AddonPageDeclaration;
35
+ readonly bundleUrl: string;
36
+ }
37
+ export type BenchmarkPhase = 'init' | 'warmup' | 'running' | 'done';
38
+ export interface BenchmarkProgress {
39
+ readonly addonId: string;
40
+ readonly phase: BenchmarkPhase;
41
+ readonly elapsedSec: number;
42
+ readonly totalSec: number;
43
+ readonly warmupFrame: number;
44
+ readonly warmupTotal: number;
45
+ readonly framesProcessed: number;
46
+ readonly totalDetections: number;
47
+ readonly objectsFound: number;
48
+ readonly errorCount: number;
49
+ readonly simulatedCameras: number;
50
+ readonly batchSize: number;
51
+ readonly currentDps: number;
52
+ readonly currentFps: number;
53
+ readonly recentAvgMs: number;
54
+ readonly inferenceMs: number;
55
+ }
56
+ export interface BenchmarkResult {
57
+ readonly addonId: string;
58
+ readonly addonName: string;
59
+ readonly referenceImage: string;
60
+ readonly runtime: string;
61
+ readonly iterations: number;
62
+ readonly durationSec: number;
63
+ readonly warmup: number;
64
+ readonly inputResolution: string;
65
+ readonly dps: number;
66
+ readonly totalDetections: number;
67
+ readonly objectsFound: number;
68
+ readonly avgDetectionsPerFrame: number;
69
+ readonly inferenceAvgMs: number;
70
+ readonly inferenceP50Ms: number;
71
+ readonly inferenceP95Ms: number;
72
+ readonly inferenceP99Ms: number;
73
+ readonly fps: number;
74
+ readonly avgMs: number;
75
+ readonly p50Ms: number;
76
+ readonly p95Ms: number;
77
+ readonly p99Ms: number;
78
+ readonly minMs: number;
79
+ readonly maxMs: number;
80
+ readonly peakMemoryMB: number;
81
+ readonly errorCount: number;
82
+ readonly successCount: number;
83
+ readonly modelId: string;
84
+ readonly simulatedCameras: number;
85
+ readonly batchSize: number;
86
+ }
87
+ export interface HistoryEntry {
88
+ readonly id: string;
89
+ readonly date: string;
90
+ readonly agentName: string;
91
+ readonly addonId: string;
92
+ readonly modelName: string;
93
+ readonly runtime: string;
94
+ readonly dps: number;
95
+ readonly inferenceAvgMs: number;
96
+ readonly totalDetections: number;
97
+ readonly fps: number;
98
+ readonly avgMs: number;
99
+ readonly p50Ms: number;
100
+ readonly p95Ms: number;
101
+ readonly p99Ms: number;
102
+ readonly minMs: number;
103
+ readonly maxMs: number;
104
+ readonly peakMemoryMB: number;
105
+ readonly iterations: number;
106
+ readonly warmup: number;
107
+ readonly inputResolution: string;
108
+ readonly simulatedCameras?: number;
109
+ readonly batchSize?: number;
110
+ readonly errorCount?: number;
111
+ }
112
+ export interface PipelineProgressEvent {
113
+ readonly step: 'loading-engine' | 'inferring' | 'complete';
114
+ readonly addonId: string;
115
+ readonly modelId: string;
116
+ readonly ms?: number;
117
+ readonly message?: string;
118
+ }
119
+ export interface OrchestratorMetrics {
120
+ readonly activeCameras: number;
121
+ readonly throttledCameras: number;
122
+ readonly avgInferenceTimeMs: number;
123
+ readonly queueDepth: number;
124
+ }
125
+ export interface CameraMetrics {
126
+ readonly priority: CameraPriority;
127
+ readonly configuredFps: number;
128
+ readonly actualFps: number;
129
+ readonly queueDepth: number;
130
+ readonly avgInferenceTimeMs: number;
131
+ readonly droppedFrames: number;
132
+ readonly phase: CameraPhase;
133
+ }
134
+ export interface PackageUpdate {
135
+ readonly name: string;
136
+ readonly currentVersion: string;
137
+ readonly latestVersion: string;
138
+ readonly category: 'addon' | 'core';
139
+ readonly requiresRestart: boolean;
140
+ }
141
+ export interface UpdateResult {
142
+ readonly success: boolean;
143
+ readonly version: string;
144
+ readonly requiresRestart: boolean;
145
+ readonly error?: string;
146
+ }
147
+ export interface DetectorDetails {
148
+ id: string;
149
+ name: string;
150
+ models: Array<{
151
+ id: string;
152
+ name: string;
153
+ inputSize?: {
154
+ width: number;
155
+ height: number;
156
+ };
157
+ }>;
158
+ runtimes: Array<{
159
+ value: string;
160
+ label: string;
161
+ }>;
162
+ backends: Array<{
163
+ value: string;
164
+ label: string;
165
+ }>;
166
+ defaultConfig: Record<string, unknown> | null;
167
+ }
168
+ //# sourceMappingURL=api-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-shared.d.ts","sourceRoot":"","sources":["../../src/interfaces/api-shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Result returned by an auth provider after successful authentication.
3
+ */
4
+ export interface AuthResult {
5
+ readonly externalId: string;
6
+ readonly username: string;
7
+ readonly email?: string;
8
+ readonly displayName?: string;
9
+ readonly avatarUrl?: string;
10
+ readonly groups?: string[];
11
+ readonly rawProfile?: unknown;
12
+ }
13
+ /**
14
+ * Pluggable authentication provider.
15
+ * Each addon can register one or more auth providers (collection capability).
16
+ */
17
+ export interface IAuthProvider {
18
+ readonly id: string;
19
+ readonly name: string;
20
+ readonly icon: string;
21
+ /** Type of auth flow */
22
+ readonly flowType: 'credentials' | 'redirect' | 'token';
23
+ /**
24
+ * For 'credentials' flow: validate username/password, return user info.
25
+ */
26
+ validateCredentials?(username: string, password: string): Promise<AuthResult | null>;
27
+ /**
28
+ * For 'redirect' flow (OIDC, OAuth2):
29
+ * getLoginUrl() returns the URL to redirect the user to.
30
+ * handleCallback() processes the callback and returns user info.
31
+ */
32
+ getLoginUrl?(state: string): string;
33
+ handleCallback?(params: Record<string, string>): Promise<AuthResult>;
34
+ /**
35
+ * For 'token' flow: validate an external token (e.g., from mobile app).
36
+ */
37
+ validateToken?(token: string): Promise<AuthResult | null>;
38
+ }
39
+ //# sourceMappingURL=auth-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth-provider.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,wBAAwB;IACxB,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,OAAO,CAAA;IAEvD;;OAEG;IACH,mBAAmB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IAEpF;;;;OAIG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACnC,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEpE;;OAEG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;CAC1D"}
@@ -0,0 +1,47 @@
1
+ export type UserRole = 'super_admin' | 'admin' | 'viewer' | 'agent';
2
+ export interface UserPermissions {
3
+ role: UserRole;
4
+ allowedProviders: string[] | '*';
5
+ allowedDevices: Record<string, string[] | '*'>;
6
+ }
7
+ export interface UserRecord {
8
+ id: string;
9
+ username: string;
10
+ passwordHash: string;
11
+ role: UserRole;
12
+ allowedProviders: string[] | '*';
13
+ allowedDevices: Record<string, string[] | '*'>;
14
+ createdAt: number;
15
+ updatedAt: number;
16
+ }
17
+ export interface ApiKeyRecord {
18
+ id: string;
19
+ label: string;
20
+ role: UserRole;
21
+ allowedProviders: string[] | '*';
22
+ allowedDevices: Record<string, string[] | '*'>;
23
+ tokenHash: string;
24
+ tokenPrefix: string;
25
+ createdAt: number;
26
+ lastUsedAt?: number;
27
+ }
28
+ export interface TokenPayload {
29
+ type?: 'api_key' | 'service';
30
+ keyId?: string;
31
+ userId?: string;
32
+ username?: string;
33
+ role: UserRole;
34
+ agentId?: string;
35
+ allowedProviders: string[] | '*';
36
+ allowedDevices: Record<string, string[] | '*'>;
37
+ iat?: number;
38
+ exp?: number;
39
+ }
40
+ export interface AuthenticatedUser {
41
+ id: string;
42
+ username: string;
43
+ role: UserRole;
44
+ permissions: UserPermissions;
45
+ isApiKey: boolean;
46
+ }
47
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEnE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAA;IACd,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;CAC/C;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;IACd,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,QAAQ,CAAA;IACd,WAAW,EAAE,eAAe,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Camera Analysis Pipeline -- unified stream processing.
3
+ */
4
+ export interface IStreamSourceAdapter {
5
+ protocol: string;
6
+ connect(config: Record<string, unknown>): Promise<NormalizedSource>;
7
+ disconnect(): Promise<void>;
8
+ getStatus(): SourceAdapterStatus;
9
+ }
10
+ export interface NormalizedSource {
11
+ type: 'url' | 'pipe';
12
+ url?: string;
13
+ pipe?: NodeJS.ReadableStream;
14
+ capabilities: SourceCapabilities;
15
+ }
16
+ export interface SourceCapabilities {
17
+ hasVideo: boolean;
18
+ hasAudio: boolean;
19
+ videoCodec?: 'h264' | 'h265' | 'mjpeg' | 'vp8' | 'vp9' | 'av1';
20
+ audioCodec?: 'aac' | 'opus' | 'pcm' | 'g711';
21
+ width?: number;
22
+ height?: number;
23
+ fps?: number;
24
+ sampleRate?: number;
25
+ audioChannels?: number;
26
+ }
27
+ export interface SourceAdapterStatus {
28
+ connected: boolean;
29
+ protocol: string;
30
+ error?: string;
31
+ bytesReceived?: number;
32
+ connectedSince?: number;
33
+ }
34
+ export interface VideoFrame {
35
+ data: Buffer;
36
+ format: 'jpeg' | 'raw-yuv420' | 'raw-rgb' | 'h264-nal';
37
+ width: number;
38
+ height: number;
39
+ pts: number;
40
+ timestamp: number;
41
+ keyframe?: boolean;
42
+ }
43
+ export interface AudioChunk {
44
+ data: Buffer;
45
+ format: 'pcm-s16le' | 'pcm-f32le' | 'aac' | 'opus';
46
+ sampleRate: number;
47
+ channels: number;
48
+ pts: number;
49
+ timestamp: number;
50
+ dBFS?: number;
51
+ }
52
+ export interface ICameraPipeline {
53
+ readonly deviceId: string;
54
+ readonly active: boolean;
55
+ start(): Promise<void>;
56
+ stop(): Promise<void>;
57
+ onVideoFrame(callback: VideoFrameCallback, options?: FrameSubscriptionOptions): () => void;
58
+ getLatestFrame(): VideoFrame | null;
59
+ onAudioChunk(callback: AudioChunkCallback): () => void;
60
+ getAudioLevel(): number;
61
+ getOutputStream(format: PipelineOutputFormat): PipelineOutputStream | null;
62
+ getAvailableOutputs(): PipelineOutputFormat[];
63
+ getStatus(): PipelineStatusInfo;
64
+ }
65
+ export type VideoFrameCallback = (frame: VideoFrame) => void;
66
+ export type AudioChunkCallback = (chunk: AudioChunk) => void;
67
+ export interface FrameSubscriptionOptions {
68
+ maxFps?: number;
69
+ format?: 'jpeg' | 'raw-yuv420' | 'raw-rgb';
70
+ maxWidth?: number;
71
+ maxHeight?: number;
72
+ keyframeOnly?: boolean;
73
+ }
74
+ export type PipelineOutputFormat = 'webrtc' | 'hls' | 'mjpeg' | 'rtsp' | 'raw-h264';
75
+ export interface PipelineOutputStream {
76
+ format: PipelineOutputFormat;
77
+ url?: string;
78
+ createOffer?(): Promise<string>;
79
+ handleAnswer?(sdp: string): Promise<void>;
80
+ pipe?: NodeJS.ReadableStream;
81
+ consumerCount: number;
82
+ }
83
+ export interface PipelineStatusInfo {
84
+ active: boolean;
85
+ source: {
86
+ protocol: string;
87
+ connected: boolean;
88
+ capabilities: SourceCapabilities;
89
+ } | null;
90
+ decode: {
91
+ fps: number;
92
+ droppedFrames: number;
93
+ totalFrames: number;
94
+ };
95
+ videoConsumers: number;
96
+ audioConsumers: number;
97
+ outputs: Array<{
98
+ format: PipelineOutputFormat;
99
+ consumers: number;
100
+ active: boolean;
101
+ }>;
102
+ uptime: number;
103
+ }
104
+ export interface IPipelineManager {
105
+ getPipeline(deviceId: string): ICameraPipeline | null;
106
+ createPipeline(deviceId: string, source: NormalizedSource): ICameraPipeline;
107
+ destroyPipeline(deviceId: string): Promise<void>;
108
+ listPipelines(): Array<{
109
+ deviceId: string;
110
+ status: PipelineStatusInfo;
111
+ }>;
112
+ }
113
+ export interface IPipelineConsumer {
114
+ id: string;
115
+ name: string;
116
+ videoRequirements?: FrameSubscriptionOptions;
117
+ needsAudio: boolean;
118
+ attachToPipeline(pipeline: ICameraPipeline, deviceId: string): void;
119
+ detachFromPipeline(deviceId: string): void;
120
+ }
121
+ //# sourceMappingURL=camera-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-pipeline.d.ts","sourceRoot":"","sources":["../../src/interfaces/camera-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { IStorageProvider } from './storage.js';
2
+ import type { ILogDestination } from './logging.js';
3
+ import type { IAnalysisAddon } from './analysis.js';
4
+ import type { IAddonPageProvider, IAdminUI } from './addon.js';
5
+ import type { IAuthProvider } from './auth-provider.js';
6
+ import type { INotificationOutput } from './notification.js';
7
+ import type { IAddonRouteProvider } from './addon-routes.js';
8
+ import type { IAnalysisDataPersistence } from './analysis-persistence.js';
9
+ import type { ISceneIntelligence } from './scene-intelligence.js';
10
+ import type { IAdvancedNotifier } from './advanced-notifier.js';
11
+ /**
12
+ * Whether a capability allows one active provider (singleton) or many (collection).
13
+ */
14
+ export type CapabilityMode = 'singleton' | 'collection';
15
+ /**
16
+ * Declared in addon package.json manifests under camstack.addons[].capabilities.
17
+ */
18
+ export interface CapabilityDeclaration {
19
+ /** Capability name (e.g. 'storage', 'decoder', 'analysis-pipeline') */
20
+ readonly name: string;
21
+ /** singleton: one active at a time. collection: all active in parallel. */
22
+ readonly mode: CapabilityMode;
23
+ /** Optional dependencies — addon won't initialize until these capabilities are available */
24
+ readonly dependsOn?: readonly string[];
25
+ }
26
+ /**
27
+ * Registration object for a service that consumes a capability.
28
+ * The registry calls the appropriate callback when providers are added/removed/replaced.
29
+ */
30
+ export interface CapabilityConsumerRegistration<T = unknown> {
31
+ /** Which capability this consumer needs */
32
+ readonly capability: string;
33
+ /** Called when a singleton provider is set or replaced. Async for teardown of previous. */
34
+ onSet?(provider: T): void | Promise<void>;
35
+ /** Called when a collection provider is added */
36
+ onAdded?(provider: T): void | Promise<void>;
37
+ /** Called when a collection provider is removed (addon disabled) */
38
+ onRemoved?(provider: T): void | Promise<void>;
39
+ }
40
+ /**
41
+ * Introspection data for a registered capability.
42
+ */
43
+ export interface CapabilityInfo {
44
+ readonly name: string;
45
+ readonly mode: CapabilityMode;
46
+ /** All addon IDs that provide this capability */
47
+ readonly providers: readonly string[];
48
+ /** For singleton: the active addon ID (null if none) */
49
+ readonly activeProvider: string | null;
50
+ }
51
+ /**
52
+ * Maps capability names to their provider interfaces.
53
+ * Extensible via TypeScript declaration merging:
54
+ *
55
+ * ```typescript
56
+ * declare module '@camstack/types' {
57
+ * interface CapabilityProviderMap {
58
+ * 'my-custom-capability': IMyProvider
59
+ * }
60
+ * }
61
+ * ```
62
+ */
63
+ export interface CapabilityProviderMap {
64
+ 'storage': IStorageProvider;
65
+ 'log-destination': ILogDestination;
66
+ 'analysis-pipeline': IAnalysisAddon;
67
+ 'restreamer': unknown;
68
+ 'webrtc': unknown;
69
+ 'stream-broker': unknown;
70
+ 'addon-pages': IAddonPageProvider;
71
+ 'admin-ui': IAdminUI;
72
+ 'auth-provider': IAuthProvider;
73
+ 'notification-output': INotificationOutput;
74
+ 'addon-routes': IAddonRouteProvider;
75
+ 'recording-engine': unknown;
76
+ 'analysis-data-persistence': IAnalysisDataPersistence;
77
+ 'device-provider': unknown;
78
+ 'network-access': unknown;
79
+ 'streaming-engine': unknown;
80
+ 'scene-intelligence': ISceneIntelligence;
81
+ 'advanced-notifier': IAdvancedNotifier;
82
+ [key: string]: unknown;
83
+ }
84
+ //# sourceMappingURL=capability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/interfaces/capability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,YAAY,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA8B,CAAC,CAAC,GAAG,OAAO;IACzD,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,2FAA2F;IAC3F,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,iDAAiD;IACjD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,oEAAoE;IACpE,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,gBAAgB,CAAA;IAC3B,iBAAiB,EAAE,eAAe,CAAA;IAClC,mBAAmB,EAAE,cAAc,CAAA;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,kBAAkB,CAAA;IACjC,UAAU,EAAE,QAAQ,CAAA;IACpB,eAAe,EAAE,aAAa,CAAA;IAC9B,qBAAqB,EAAE,mBAAmB,CAAA;IAC1C,cAAc,EAAE,mBAAmB,CAAA;IACnC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,2BAA2B,EAAE,wBAAwB,CAAA;IACrD,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,OAAO,CAAA;IACzB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,kBAAkB,CAAA;IACxC,mBAAmB,EAAE,iBAAiB,CAAA;IAEtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB"}
@@ -0,0 +1,8 @@
1
+ import type { IPipelineSlotProvider } from './pipeline-slot.js';
2
+ import type { CropInput } from '../types/detection.js';
3
+ import type { ClassifierOutput } from '../types/detection.js';
4
+ export interface IClassifierProvider extends IPipelineSlotProvider {
5
+ readonly slot: 'classifier';
6
+ classify(input: CropInput): Promise<ClassifierOutput>;
7
+ }
8
+ //# sourceMappingURL=classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/interfaces/classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACtD"}