package com.unicorn.hgzero.stt.service;

import com.unicorn.hgzero.stt.dto.TranscriptionDto;
import com.unicorn.hgzero.stt.dto.TranscriptSegmentDto;
import org.springframework.web.multipart.MultipartFile;

/**
 * 음성 변환 서비스 인터페이스
 * 음성-텍스트 변환 기능을 정의
 */
public interface TranscriptionService {
    
    /**
     * 실시간 음성-텍스트 변환
     * 
     * @param request 실시간 변환 요청
     * @return 변환 세그먼트 응답
     */
    TranscriptSegmentDto.Response processAudioStream(TranscriptionDto.StreamRequest request);
    
    /**
     * 배치 음성-텍스트 변환
     * 
     * @param request 배치 변환 요청
     * @param audioFile 오디오 파일
     * @return 배치 변환 응답
     */
    TranscriptionDto.BatchResponse transcribeAudioBatch(TranscriptionDto.BatchRequest request, MultipartFile audioFile);
    
    /**
     * 배치 변환 완료 콜백 처리
     * 
     * @param request 배치 콜백 요청
     * @return 변환 완료 응답
     */
    TranscriptionDto.CompleteResponse processBatchCallback(TranscriptionDto.BatchCallbackRequest request);
    
    /**
     * 변환 텍스트 전체 조회
     * 
     * @param recordingId 녹음 ID
     * @param includeSegments 세그먼트 포함 여부
     * @param speakerId 화자 ID 필터
     * @return 변환 결과 응답
     */
    TranscriptionDto.Response getTranscription(String recordingId, Boolean includeSegments, String speakerId);
}