import { PhoneCorrectness, PhraseCorrectness, WordCorrectness } from './correctness';
import { PhoneDuration } from './exercises';
import { LanguageCode } from './language-code';
import { Prosody } from './prosody';
export declare class ExerciseResult {
    confidence?: Confidence;
    match?: boolean;
    correct?: boolean;
    score?: Score;
    phrase?: string;
    recognized?: WordRecognition[];
    phrases?: PhraseRecognition[];
    attempt?: {
        id?: string;
        audioKey?: string;
    };
    speechDetected?: boolean;
    exerciseId?: string;
    respondedAt: Date;
    correctness?: PhraseCorrectness;
    language?: LanguageCode;
}
export declare class Confidence {
    llr: number;
    prob: number;
}
export declare class Score {
    accuracy?: number;
    fluency?: number;
    velocity?: number;
}
export declare class WordFeature {
    id: string;
    categoryId?: string;
    correct: boolean;
    letters?: {
        letter: string;
        part: boolean;
    }[];
}
export declare class WordRecognition {
    timing?: Timing;
    word: string;
    letterAlignment?: {
        letter: string;
        phones: string[];
        correct: boolean;
        phoneAlignment?: AlignmentEntry[];
    }[];
    wordFeatures?: WordFeature[];
    promptToken?: string;
    correct?: boolean;
    correctness?: WordCorrectness;
    confidence?: Confidence;
    score?: Score;
    phones?: PhoneRecognition[];
    liaisonPhone?: PhoneRecognition;
    closestCorrectPronunciation?: {
        phones: TargetPhone[];
    };
    alignment?: AlignmentEntry[];
    prosody?: Prosody;
}
export declare class PhraseRecognition {
    timing?: Timing;
    phrase: string;
    correct?: boolean;
    correctness?: PhraseCorrectness;
    words: WordRecognition[];
}
export declare class Timing {
    begin: number;
    end: number;
}
export declare class PhoneRecognition {
    timing?: Timing;
    target?: TargetPhone;
    recognized: AsrRecognizedPhone;
    correct?: boolean;
    correctness?: PhoneCorrectness;
}
export declare class DurationProbabilities {
    [PhoneDuration.short]?: number;
    [PhoneDuration.normal]?: number;
    [PhoneDuration.long]?: number;
    [PhoneDuration.superlong]?: number;
}
export declare class AsrRecognizedPhone {
    phone: string;
    confidence?: Confidence;
    duration?: DurationProbabilities;
}
export declare class TargetPhone {
    phone: string;
    confidence?: Confidence;
    duration?: Array<PhoneDuration>;
}
export declare class AlignmentEntry {
    deleted?: string;
    inserted?: string;
}
