/**
 * Job Type Definitions
 * Common job input/output types used across services
 */
import { Engine, OutputFormat, VoiceId } from "@aws-sdk/client-polly";
/**
 * Base job input interface
 */
export interface BaseJobInput {
    [key: string]: any;
}
/**
 * Base job output interface
 */
export interface BaseJobOutput {
    [key: string]: any;
}
/**
 * Narrator job input type
 */
export interface NarratorJobInput {
    engine: Engine;
    text: string;
    outputFormat: OutputFormat;
    voiceId: VoiceId;
}
/**
 * Narrator job output type
 */
export interface NarratorJobOutput {
    audioId: string;
    audioFile: string;
    usedVoice?: VoiceId;
    usedEngine?: Engine;
}
/**
 * Scraper job input type (YouTube)
 */
export interface ScraperJobInput {
    videoId: string;
    url: string;
    metadata: Record<string, string>;
}
/**
 * Scraper job output type
 */
export interface ScraperJobOutput {
    videoId: string;
    downloadPath: string;
    metadata: Record<string, string>;
    duration?: number;
    fileSize?: number;
}
/**
 * Reddit scraper job input type
 */
export interface RedditScraperJobInput {
    subreddit: string;
    postId: string;
    postTitle: string;
}
/**
 * Generic audio synthesis input
 */
export interface AudioSynthesisInput {
    text: string;
    voiceId?: string;
    engine?: string;
    outputFormat?: string;
    metadata?: Record<string, string>;
}
/**
 * Generic audio synthesis output
 */
export interface AudioSynthesisOutput {
    audioId: string;
    audioUrl: string;
    duration: number;
    fileSize?: number;
    metadata: Record<string, string>;
}
/**
 * Video rendering input
 */
export interface VideoRenderingInput {
    videoId: string;
    audioUrl: string;
    backgroundVideoPath?: string;
    textOverlay?: {
        text: string;
        timing: Array<{
            word: string;
            startTime: number;
            endTime: number;
        }>;
    };
    config?: Record<string, any>;
    metadata?: Record<string, string>;
}
/**
 * Video rendering output
 */
export interface VideoRenderingOutput {
    videoId: string;
    outputPath: string;
    duration: number;
    fileSize: number;
    metadata: Record<string, string>;
}
