export type ConnectionMode = 'remote' | 'remote-transfer' | 'contents'; export type PriorityKeySetting = 'pc-remote' | 'camera-position'; export type PropertyName = 'iso' | 'aperture' | 'shutter-speed' | 'exposure-program-mode' | 'focus-mode' | 'focus-area' | 'white-balance' | 'drive-mode' | 'file-format' | 'image-quality' | 'raw-compression' | 'still-image-store-destination' | 'focus-position' | 'focus-position-current' | 'focus-driving-status' | 'focus-distance' | 'zoom-distance' | 'battery-remain' | 'recording-state' | 'movie-file-format' | 'movie-recording-setting' | 'movie-recording-frame-rate' | 'overheating-state' | 'media-slot1-status' | 'media-slot1-remaining-photos' | 'media-slot1-remaining-time' | 'media-slot2-status' | 'media-slot2-remaining-photos' | 'media-slot2-remaining-time' | 'exposure-compensation' | 'metering-mode' | 'ae-lock' | 'exposure-step' | 'flash-mode' | 'flash-compensation' | 'wireless-flash' | 'shutter-type' | 'shutter-mode' | 'silent-mode' | 'image-size' | 'aspect-ratio' | 'color-space' | 'dro' | 'high-iso-nr' | 'awb-lock' | 'white-balance-color-temp' | 'creative-look' | 'flicker-less-shooting' | 'audio-recording' | 'audio-input-master-level' | 'timecode-preset' | 'timecode-format' | 'timecode-run' | 'timecode-make' | 'movie-stabilization' | 'movie-shooting-mode' | 'movie-shooting-mode-color-gamut' | 'base-look-import-enable' | 'embed-lut-file' | 'base-look-value' | 'shooting-enable' | 'image-id-string' | 'image-id-string-max-length' | 'image-id-num' | 'image-id-num-setting' | 'picture-profile' | 'pp-lut-base-look' | 'image-stabilization' | 'long-exposure-nr' | 'exposure-index' | 'base-iso' | 'shutter-angle' | 'zoom-setting' | 'aps-c-s35'; export type ZoomDirection = 'in' | 'out'; export type ZoomSpeed = 'normal' | 'fast'; export type ShutterAction = 'down' | 'up'; export type LogLevel = 'debug' | 'info' | 'warn' | 'error'; export interface CameraInfo { id: string; model: string; connectionType: 'USB' | 'Network'; connected: boolean; } export interface CameraSummary { connected: boolean; model: string; id: string; } export interface CameraResponse { success: boolean; message?: string; camera?: CameraSummary; data?: Record; } export interface ErrorResponse { success: false; message: string; camera?: CameraSummary; } export interface ListCamerasResponse { success: boolean; message?: string; cameras: CameraInfo[]; } export interface AvailableValue { value: string; formatted: string; } export interface PropertyData { property: string; value: string; formatted: string; writable: string; available_values: AvailableValue[]; } export interface PropertyResponse { success: boolean; message?: string; camera?: CameraSummary; data: PropertyData; } export interface AllPropertiesResponse { success: boolean; message?: string; camera?: CameraSummary; data: { total_properties: string; properties: Record; }; } export interface PriorityKeyResponse { success: boolean; message?: string; camera?: CameraSummary; data: { setting: PriorityKeySetting; rawValue: string; }; } export interface LiveViewStatusResponse { success: boolean; message?: string; camera?: CameraSummary; data: { enabled: string; streaming: string; }; } export interface OSDStatusResponse { success: boolean; message?: string; camera?: CameraSummary; data: { supported: string; enabled: string; }; } export interface SaveInfoResponse { success: boolean; message?: string; camera?: CameraSummary; data: { path: string; prefix: string; startNo: string; }; } export interface SDCardFile { content_id: number; file_id: number; file_path: string; file_size: number; } export interface SDCardFilesResponse { success: boolean; slot: number; file_count: number; files: SDCardFile[]; } export interface SettingsFilesResponse { success: boolean; files: string[]; } export interface ServerStatus { success: boolean; server: { version: string; sdkVersion: string; uptime: number; platform: string; }; cameras: { connected: number; discovered: number; }; } export interface LogEntry { timestamp: string; level: LogLevel; message: string; cameraId?: string; } export interface ServerLogsResponse { success: boolean; logs: LogEntry[]; total: number; } export interface ConnectionRequest { mode?: ConnectionMode; username?: string; password?: string; reconnecting?: 'on' | 'off'; } export interface PropertySetRequest { value: string; } export interface ShutterRequest { action?: ShutterAction; } export interface ZoomRequest { direction: ZoomDirection; speed: ZoomSpeed; } export interface FocusNearFarRequest { step: number; } export interface SaveInfoRequest { path?: string; prefix?: string; startNo?: number; } export interface SettingsFileRequest { filename?: string; } export interface FileDownloadRequest { save_path?: string; } export interface ConnectedEventData { cameraId: string; } export interface DisconnectedEventData { id?: string; error: string; } export interface PropertyChangedEventData { codes: string[]; count: number; } export interface WarningEventData { code: string; message: string; } export interface AFStatusEventData { state: 'focused' | 'unlocked' | 'tracking'; } export interface DownloadCompleteEventData { filename: string; type: string; } export interface TransferProgressEventData { percent: number; notify?: string; filename: string; } export interface ErrorEventData { code: string; message: string; } export type SSEEventMap = { connected: ConnectedEventData; disconnected: DisconnectedEventData; propertyChanged: PropertyChangedEventData; warning: WarningEventData; afStatus: AFStatusEventData; downloadComplete: DownloadCompleteEventData; transferProgress: TransferProgressEventData; error: ErrorEventData; close: undefined; }; export type SSEEventType = keyof SSEEventMap; export type CameraState = 'detected' | 'connecting' | 'connected' | 'disconnected'; export interface ManagedCamera { info: CameraInfo; state: CameraState; reconnectAttempts: number; } export interface CameraManagerOptions { baseUrl?: string; pollInterval?: number; autoConnect?: boolean; connectionMode?: ConnectionMode; autoReconnect?: boolean; maxReconnectAttempts?: number; /** How long to wait for SDK auto-reconnect before releasing handle and retrying (ms, default 30000) */ reconnectTimeout?: number; } export interface CameraManagerEventMap { 'camera-found': { camera: CameraInfo; }; 'camera-lost': { camera: CameraInfo; }; 'camera-connecting': { cameraId: string; }; 'camera-ready': { cameraId: string; camera: CameraInfo; }; 'camera-disconnected': { cameraId: string; error?: string; }; 'connection-failed': { cameraId: string; error: string; attempt: number; }; 'error': { message: string; }; } export type CameraManagerEventType = keyof CameraManagerEventMap; /** Public interface for per-camera SSE event streams returned by CameraManager.events() */ export interface CameraEventStream { on(event: T, callback: (data: SSEEventMap[T]) => void): this; off(event: T, callback?: (data: SSEEventMap[T]) => void): this; once(event: T, callback: (data: SSEEventMap[T]) => void): this; close(): void; readonly connected: boolean; } /** Camera with pre-bound ID — returned by CameraManager.camera(id) */ export interface BoundCamera { readonly id: string; readonly events: CameraEventStream; connect(req?: ConnectionRequest): Promise; disconnect(): Promise; getConnectionStatus(): Promise; getProperty(name: PropertyName | string): Promise; setProperty(name: PropertyName | string, req: PropertySetRequest): Promise; getAllProperties(): Promise; getPriorityKey(): Promise; setPriorityKey(req: { setting: PriorityKeySetting; }): Promise; triggerShutter(req?: ShutterRequest): Promise; halfPress(): Promise; afShutter(): Promise; controlZoom(req: ZoomRequest): Promise; stopZoom(): Promise; focusNearFar(req: FocusNearFarRequest): Promise; toggleMovieRecording(): Promise; importLUT(req: { filePath: string; slot?: number; }): Promise; enableLiveView(): Promise; disableLiveView(): Promise; getLiveViewStatus(): Promise; startLiveViewStream(): Promise; stopLiveViewStream(): Promise; getLiveViewFrame(): Promise; enableOSD(): Promise; disableOSD(): Promise; getOSDStatus(): Promise; getOSDFrame(): Promise; listSDCardFiles(slot: 1 | 2): Promise; downloadSDCardFile(slot: 1 | 2, contentId: number, fileId: number, req?: FileDownloadRequest): Promise; downloadThumbnail(slot: 1 | 2, contentId: number, fileId: number, req?: FileDownloadRequest): Promise; downloadScreennail(slot: 1 | 2, contentId: number, fileId: number, req?: FileDownloadRequest): Promise; getSaveInfo(): Promise; setSaveInfo(req: SaveInfoRequest): Promise; downloadCameraSettings(req?: SettingsFileRequest): Promise; uploadCameraSettings(req?: SettingsFileRequest): Promise; listSettingsFiles(): Promise; } export interface CameraServerOptions { port?: number; binaryPath?: string; /** If true, automatically find an available port when the requested port is in use. Default: false */ autoPort?: boolean; } export interface CameraManagerServerOptions extends CameraManagerOptions { port?: number; binaryPath?: string; autoPort?: boolean; } //# sourceMappingURL=types.d.ts.map