@todesktop/plugin-recall
Version: 
ToDesktop plugin for Recall.ai Desktop Recording SDK - Plugin package
174 lines • 5.09 kB
TypeScript
/**
 * Shared types and constants for Recall Desktop SDK integration
 */
export declare const IPC_CHANNELS: {
    readonly INIT_SDK: "recall-desktop:init-sdk";
    readonly SHUTDOWN_SDK: "recall-desktop:shutdown-sdk";
    readonly GET_STATUS: "recall-desktop:get-status";
    readonly START_RECORDING: "recall-desktop:start-recording";
    readonly STOP_RECORDING: "recall-desktop:stop-recording";
    readonly PAUSE_RECORDING: "recall-desktop:pause-recording";
    readonly RESUME_RECORDING: "recall-desktop:resume-recording";
    readonly UPLOAD_RECORDING: "recall-desktop:upload-recording";
    readonly PREPARE_DESKTOP_AUDIO: "recall-desktop:prepare-desktop-audio";
    readonly REQUEST_PERMISSION: "recall-desktop:request-permission";
    readonly SET_CONFIG: "recall-desktop:set-config";
    readonly GET_CONFIG: "recall-desktop:get-config";
    readonly SUBSCRIBE_EVENTS: "recall-desktop:subscribe-events";
    readonly UNSUBSCRIBE_EVENTS: "recall-desktop:unsubscribe-events";
};
export interface RecallSdkConfig {
    enabled: boolean;
    apiUrl: string;
    requestPermissionsOnStartup: boolean;
}
export interface PluginContext {
    plugin: {
        todesktop: {
            preferences: [
                {
                    id: "enabled";
                    name: string;
                    description: string;
                    type: "checkbox";
                    spec: {
                        value?: boolean;
                    };
                },
                {
                    id: "apiUrl";
                    name: string;
                    description: string;
                    type: "text";
                    spec: {
                        value?: string;
                    };
                },
                {
                    id: "requestPermissionsOnStartup";
                    name: string;
                    description: string;
                    type: "checkbox";
                    spec: {
                        value?: boolean;
                    };
                }
            ];
        };
    };
}
export interface MeetingWindow {
    id: string;
    title?: string;
    url?: string;
    platform: string;
}
export interface StartRecordingRequest {
    windowId: string;
    uploadToken: string;
}
export interface StopRecordingRequest {
    windowId: string;
}
export interface PauseRecordingRequest {
    windowId: string;
}
export interface ResumeRecordingRequest {
    windowId: string;
}
export interface UploadRecordingRequest {
    windowId: string;
}
export type RecallSdkEventType = "recording-started" | "recording-ended" | "upload-progress" | "meeting-detected" | "meeting-updated" | "meeting-closed" | "sdk-state-change" | "error" | "media-capture-status" | "participant-capture-status" | "permissions-granted" | "permission-status" | "realtime-event" | "shutdown";
export interface RecallSdkEvent {
    type: RecallSdkEventType;
    data: any;
}
export interface MeetingDetectedEvent {
    window: MeetingWindow;
}
export interface SdkStateChangeEvent {
    sdk: {
        state: {
            code: "recording" | "idle" | "paused";
        };
    };
}
export interface RecordingStartedEvent {
    window: MeetingWindow;
}
export interface RecordingEndedEvent {
    window: MeetingWindow;
}
export interface MeetingClosedEvent {
    window: MeetingWindow;
}
export interface UploadProgressEvent {
    window: {
        id: string;
    };
    progress: number;
}
export interface MeetingUpdatedEvent {
    window: MeetingWindow;
}
export interface MediaCaptureStatusEvent {
    window: MeetingWindow;
    type: "video" | "audio";
    capturing: boolean;
}
export interface ParticipantCaptureStatusEvent {
    window: MeetingWindow;
    type: "video" | "audio" | "screenshare";
    capturing: boolean;
}
export interface RealtimeEvent {
    window: MeetingWindow;
    event: string;
    data: any;
}
export interface SdkErrorEvent {
    window?: MeetingWindow;
    type: string;
    message: string;
}
export interface PermissionStatusEvent {
    permission: PermissionType;
    status: string;
}
export interface ShutdownEvent {
    code: number;
    signal: string;
}
export type PermissionType = "accessibility" | "screen-capture" | "microphone" | "system-audio";
export interface ApiResponse<T = any> {
    success: boolean;
    message: string;
    data?: T;
}
export interface PluginStatus {
    initialized: boolean;
    sdkInitialized: boolean;
    version: string;
    config: RecallSdkConfig;
    sdkState?: "recording" | "idle" | "paused";
    permissions?: {
        accessibility: boolean;
        screenCapture: boolean;
        microphone: boolean;
        systemAudio: boolean;
    };
}
export declare class RecallSdkError extends Error {
    code?: string | undefined;
    constructor(message: string, code?: string | undefined);
}
export interface SdkInitOptions {
    apiUrl: string;
    acquirePermissionsOnStartup?: PermissionType[];
    restartOnError?: boolean;
}
export interface PrepareDesktopAudioResponse {
    windowId: string;
}
//# sourceMappingURL=shared.d.ts.map