export function createTTSMock(options: TTSMockOptions = {}) {
  const { shouldFail = false, delayMs = 0, audioUrl = 'https://mock-cdn.example.com/audio/test.mp3', duration = 120 } = options;

  return {
    name: 'mock-tts' as const,
    vendor: 'mock' as const,
    mode: 'mock' as const,
    maxTextLength: 5000,
    concurrency: 3,
    synthesize: vi.fn().mockImplementation(async (text: string, voice: string, params: any, outputPath: string) => {
      if (delayMs > 0) {
        await new Promise((resolve) => setTimeout(resolve, delayMs));
      }
      if (shouldFail) {
        throw new Error('Mock TTS failure');
      }
      return {
        audioUrl,
        duration,
        size: 2048000,
        textLength: text.length,
      };
    }),
    getVoices: vi.fn().mockReturnValue([
      { id: 'zh_female_qingxin', name: '清心女声', language: 'zh-CN' },
      { id: 'zh_male_qingxin', name: '清心男声', language: 'zh-CN' },
    ]),
  };
}

export interface TTSMockOptions {
  shouldFail?: boolean;
  delayMs?: number;
  audioUrl?: string;
  duration?: number;
}