Files
Recordly/electron/electron-api-export.d.ts

132 lines
3.7 KiB
TypeScript

interface ElectronAPIExport {
storeRecordedVideo: (
videoData: ArrayBuffer,
fileName: string,
) => Promise<{ success: boolean; path?: string; message?: string }>;
storeMicrophoneSidecar: (
audioData: ArrayBuffer,
videoPath: string,
) => Promise<{ success: boolean; path?: string; error?: string }>;
getRecordedVideoPath: () => Promise<{ success: boolean; path?: string; message?: string }>;
listAssetDirectory: (relativeDir: string) => Promise<{
success: boolean;
files?: string[];
error?: string;
}>;
readLocalFile: (filePath: string) => Promise<{ success: boolean; data?: Uint8Array; error?: string }>;
generateWallpaperThumbnail: (
filePath: string,
) => Promise<{ success: boolean; data?: Uint8Array; error?: string }>;
nativeVideoExportStart: (options: {
width: number;
height: number;
frameRate: number;
bitrate: number;
encodingMode: "fast" | "balanced" | "quality";
inputMode?: "rawvideo" | "h264-stream";
}) => Promise<{
success: boolean;
sessionId?: string;
encoderName?: string;
error?: string;
}>;
nativeVideoExportWriteFrame: (
sessionId: string,
frameData: Uint8Array,
) => Promise<{ success: boolean; error?: string }>;
nativeVideoExportFinish: (
sessionId: string,
options?: {
audioMode?: "none" | "copy-source" | "trim-source" | "edited-track";
audioSourcePath?: string | null;
trimSegments?: Array<{ startMs: number; endMs: number }>;
editedAudioData?: ArrayBuffer;
editedAudioMimeType?: string | null;
},
) => Promise<{
success: boolean;
data?: Uint8Array;
encoderName?: string;
error?: string;
}>;
nativeVideoExportCancel: (
sessionId: string,
) => Promise<{ success: boolean; error?: string }>;
muxExportedVideoAudio: (
videoData: ArrayBuffer,
options?: {
audioMode?: "none" | "copy-source" | "trim-source" | "edited-track";
audioSourcePath?: string | null;
trimSegments?: Array<{ startMs: number; endMs: number }>;
editedAudioData?: ArrayBuffer;
editedAudioMimeType?: string | null;
},
) => Promise<{
success: boolean;
data?: Uint8Array;
error?: string;
}>;
getVideoAudioFallbackPaths: (
videoPath: string,
) => Promise<{ success: boolean; paths: string[]; error?: string }>;
saveExportedVideo: (
videoData: ArrayBuffer,
fileName: string,
) => Promise<{ success: boolean; path?: string; message?: string; canceled?: boolean }>;
writeExportedVideoToPath: (
videoData: ArrayBuffer,
outputPath: string,
) => Promise<{
success: boolean;
path?: string;
message?: string;
error?: string;
canceled?: boolean;
}>;
openVideoFilePicker: () => Promise<{ success: boolean; path?: string; canceled?: boolean }>;
openAudioFilePicker: () => Promise<{ success: boolean; path?: string; canceled?: boolean }>;
openWhisperExecutablePicker: () => Promise<{
success: boolean;
path?: string;
canceled?: boolean;
error?: string;
}>;
openWhisperModelPicker: () => Promise<{
success: boolean;
path?: string;
canceled?: boolean;
error?: string;
}>;
getWhisperSmallModelStatus: () => Promise<{
success: boolean;
exists: boolean;
path?: string | null;
error?: string;
}>;
downloadWhisperSmallModel: () => Promise<{
success: boolean;
path?: string;
alreadyDownloaded?: boolean;
error?: string;
}>;
deleteWhisperSmallModel: () => Promise<{ success: boolean; error?: string }>;
onWhisperSmallModelDownloadProgress: (
callback: (state: {
status: "idle" | "downloading" | "downloaded" | "error";
progress: number;
path?: string | null;
error?: string;
}) => void,
) => () => void;
generateAutoCaptions: (options: {
videoPath: string;
whisperExecutablePath?: string;
whisperModelPath: string;
language?: string;
}) => Promise<{
success: boolean;
cues?: AutoCaptionCue[];
message?: string;
error?: string;
}>;
}