/**
 * Data required for processing a single segment
 */
export interface SegmentProcessingData {
    fileId: string;
    sourceFilePath: string;
    streamType: string;
    quality: string;
    streamIndex: number;
    segmentIndex: number;
    segmentStart: number;
    segmentDuration: number;
    totalSegments: number;
    ffmpegOptions: {
        inputOptions: string[];
        outputOptions: string[];
        videoFilters?: string;
    };
    outputPath: string;
}
/**
 * Result of segment processing
 */
export interface SegmentProcessingResult {
    success: boolean;
    segmentIndex: number;
    outputPath: string;
    processingTime?: number;
    cached?: boolean;
    error?: Error;
}
/**
 * Interface for segment processors
 */
export interface ISegmentProcessor {
    /**
     * Process a single segment
     */
    processSegment(data: SegmentProcessingData): Promise<SegmentProcessingResult>;
    /**
     * Check if processor is healthy and ready
     */
    isHealthy(): Promise<boolean>;
    /**
     * Get current processing mode
     */
    getMode(): string;
    /**
     * Cleanup resources
     */
    dispose(): Promise<void>;
}
/**
 * Segment claim for distributed processing
 */
export interface SegmentClaim {
    acquired: boolean;
    segmentKey: string;
    workerId: string;
    expiresAt: number;
    extend: () => Promise<boolean>;
    release: () => Promise<void>;
}
/**
 * Configuration for distributed processing
 */
export interface DistributedConfig {
    redisUrl?: string;
    workerId?: string;
    claimTTL?: number;
    claimRenewalInterval?: number;
    segmentTimeout?: number;
    fallbackToLocal?: boolean;
    completedSegmentTTL?: number;
    fileWaitTimeout?: number;
    enableWorkStealing?: boolean;
    stealThreshold?: number;
    stealCheckInterval?: number;
    maxStealsPerCheck?: number;
}
//# sourceMappingURL=interfaces.d.ts.map