export type RecallAiSdkEvent = RecordingStartEvent | RecordingStopEvent | UploadProgressEvent | MeetingDetectedEvent | MeetingUpdatedEvent | MeetingClosedEvent | SdkStateChangeEvent | ErrorEvent | MediaCaptureStatusEvent | ParticipantCaptureStatusEvent | ComplianceMessageStatusEvent | PermissionsGrantedEvent | RealtimeEvent | ShutdownEvent | LogEvent | NetworkStatusEvent; export type EventTypeToPayloadMap = { 'recording-started': RecordingStartEvent; 'recording-ended': RecordingStopEvent; /** * @deprecated Recordings are uploaded in parallel to recording now, there is no progress. */ 'upload-progress': UploadProgressEvent; 'meeting-detected': MeetingDetectedEvent; 'meeting-updated': MeetingUpdatedEvent; 'meeting-closed': MeetingClosedEvent; /** * @deprecated Use recording-started/recording-ended instead. */ 'sdk-state-change': SdkStateChangeEvent; 'error': ErrorEvent; 'media-capture-status': MediaCaptureStatusEvent; 'participant-capture-status': ParticipantCaptureStatusEvent; 'compliance-message-status': ComplianceMessageStatusEvent; 'permissions-granted': PermissionsGrantedEvent; 'permission-status': PermissionStatusEvent; 'realtime-event': RealtimeEvent; 'shutdown': ShutdownEvent; 'log': LogEvent; 'network-status': NetworkStatusEvent; }; export type Permission = 'accessibility' | 'screen-capture' | 'microphone' | 'system-audio' | 'full-disk-access' | 'teams-automation'; export interface RecallAiSdkWindow { id: string; title?: string; url?: string; platform?: string; } export interface RecallAiSdkConfig { api_url?: string; apiUrl?: string; acquirePermissionsOnStartup?: Exclude[]; [key: string]: any; } export interface StartRecordingConfig { windowId: string; uploadToken: string; } export interface StopRecordingConfig { windowId: string; } export interface PauseRecordingConfig { windowId: string; } export interface ResumeRecordingConfig { windowId: string; } /** * @deprecated Recordings are automatically uploaded based on your rentention configuration. This is now a no-op. */ export interface UploadRecordingConfig { windowId: string; } interface PrepareDesktopAudioRecordingConfig { [key: string]: any; } export interface RecordingStartEvent { window: RecallAiSdkWindow; } export interface RecordingStopEvent { window: RecallAiSdkWindow; } export interface UploadProgressEvent { window: { id: string; }; progress: number; } export interface MeetingDetectedEvent { window: RecallAiSdkWindow; } export interface MeetingUpdatedEvent { window: RecallAiSdkWindow; } export interface MeetingClosedEvent { window: RecallAiSdkWindow; } /** * @deprecated Use recording-started/recording-ended instead. */ export interface SdkStateChangeEvent { sdk: { state: { code: 'recording' | 'idle' | 'paused'; }; }; } export interface MediaCaptureStatusEvent { window: RecallAiSdkWindow; type: 'video' | 'audio'; capturing: boolean; } export interface ParticipantCaptureStatusEvent { window: RecallAiSdkWindow; type: 'video' | 'audio' | 'screenshare'; capturing: boolean; } export interface ComplianceMessageStatusEvent { window: RecallAiSdkWindow; status: 'sent' | 'timeout' | 'cancelled'; } export interface PermissionsGrantedEvent { } export interface PermissionStatusEvent { permission: Permission; status: string; } export interface ErrorEvent { window?: RecallAiSdkWindow; type: string; message: string; } export interface RealtimeEvent { window: RecallAiSdkWindow; event: string; data: any; } export interface ShutdownEvent { code: number; signal: string; } export interface NetworkStatusEvent { status: 'reconnected' | 'disconnected'; } export interface LogEvent { level: 'debug' | 'info' | 'warning' | 'error'; message: string; subsystem: string; category: string; window_id: string; } export declare function init(options: RecallAiSdkConfig): Promise; export declare function shutdown(): Promise; export declare function dumpAXTree(procName: string): Promise; export declare function dumpAllApplications(): Promise; export declare function startRecording(config: StartRecordingConfig): Promise; export declare function stopRecording({ windowId }: StopRecordingConfig): Promise; export declare function pauseRecording({ windowId }: PauseRecordingConfig): Promise; export declare function resumeRecording({ windowId }: ResumeRecordingConfig): Promise; /** * @deprecated Recordings are automatically uploaded based on your rentention configuration. This is now a no-op. */ export declare function uploadRecording({ windowId }: UploadRecordingConfig): Promise; export declare function prepareDesktopAudioRecording(config?: PrepareDesktopAudioRecordingConfig): Promise; export declare function requestPermission(permission: Permission): Promise; export declare function testUnexpectedShutdown(): Promise; export declare function addEventListener(type: T, callback: (event: EventTypeToPayloadMap[T]) => void): void; export declare function removeEventListener(type: T, callback: (event: EventTypeToPayloadMap[T]) => void): void; export declare function removeAllEventListeners(): void; declare const RecallAiSdk: { init: typeof init; shutdown: typeof shutdown; startRecording: typeof startRecording; stopRecording: typeof stopRecording; pauseRecording: typeof pauseRecording; resumeRecording: typeof resumeRecording; uploadRecording: typeof uploadRecording; prepareDesktopAudioRecording: typeof prepareDesktopAudioRecording; requestPermission: typeof requestPermission; addEventListener: typeof addEventListener; removeEventListener: typeof removeEventListener; removeAllEventListeners: typeof removeAllEventListeners; testUnexpectedShutdown: typeof testUnexpectedShutdown; }; export default RecallAiSdk;