const { createClient } = require('@deepgram/sdk');
const apiKey = process.env.KEYBOARD_DEEPGRAM_API_KEY;
if (!apiKey) {
    throw new Error('KEYBOARD_DEEPGRAM_API_KEY environment variable not found');
}
const deepgram = createClient(apiKey);
const transcriptionOptions = {
    model: {{model}},
    language: {{language}},
    smart_format: {{smartFormat}},
    punctuation: {{punctuation}},
    diarize: {{diarize}},
    utterances: true,
    paragraphs: true
};
console.log('š¤ Starting Deepgram transcription...');
console.log('š Audio URL: {{audioUrl}}');
console.log('āļø  Model: {{model}}, Language: {{language}}');
try {
    
    const { result, error } = await deepgram.listen.prerecorded.transcribeUrl(
        { url: '{{audioUrl}}' },
        transcriptionOptions
    );
    
    if (error) {
        throw new Error(`Transcription failed: ${error.message}`);
    }
    
    
    const channel = result.results.channels[0];
    const alternative = channel.alternatives[0];
    const transcript = alternative.transcript;
    const words = alternative.words || [];
    const paragraphs = alternative.paragraphs || {};
    
    
    const wordCount = words.length;
    const duration = words.length > 0 ? words[words.length - 1].end - words[0].start : 0;
    const speakingRate = duration > 0 ? Math.round(wordCount / duration * 60) : 0;
    
    
    const outputFormat = '{{outputFormat}}';
    
    if (outputFormat === 'transcript-only') {
        console.log('\nš Transcript:\n');
        console.log(transcript);
    } else if (outputFormat === 'full-json') {
        console.log('\nš Full JSON Response:\n');
        console.log(JSON.stringify(result, null, 2));
    } else {
        
        console.log('\nā
 Transcription Complete!\n');
        console.log('š Statistics:');
        console.log(`- Duration: ${duration.toFixed(2)} seconds`);
        console.log(`- Word count: ${wordCount} words`);
        console.log(`- Speaking rate: ${speakingRate} words/minute`);
        console.log(`- Model used: {{model}}`);
        console.log(`- Language: {{language}}`);
        
        console.log('\nš Transcript:\n');
        console.log(transcript);
        
        
        if (words.length > 0) {
            console.log('\nā±ļø  First 5 words with timestamps:');
            words.slice(0, 5).forEach(word => {
                console.log(`- ${word.word} (${word.start}s - ${word.end}s)`);
            });
        }
        
        
        if ({{diarize}} && paragraphs.paragraphs && paragraphs.paragraphs.length > 0) {
            console.log('\nš„ Speaker segments detected:', paragraphs.paragraphs.length);
        }
    }
    
    
    return {
        success: true,
        transcript: transcript,
        metadata: {
            url: '{{audioUrl}}',
            model: '{{model}}',
            language: '{{language}}',
            duration: duration,
            wordCount: wordCount,
            speakingRate: speakingRate
        },
        words: words,
        paragraphs: paragraphs,
        raw: result
    };
    
} catch (error) {
    console.error('\nā Error:', error.message);
    throw error;
}