import { OnChanges, SimpleChanges } from '@angular/core';
import { Socket } from 'socket.io-client';
import { Participant, ShowAlert } from '../../../@types/types';
import { TranslationRoomConfig } from '../../../producers/socket-receive-methods/translation-receive-methods.service';
import { ModernRenderMode } from '../../../modern/utils/render-mode.utils';
import * as i0 from "@angular/core";
export interface TranslationChannelAvailability {
    languages: string[];
    originalProducerId: string;
}
export interface TranslationSettingsModalOptions {
    isVisible: boolean;
    onClose: () => void;
    translationSupported: boolean;
    translationConfig: TranslationRoomConfig | null;
    member: string;
    islevel: string;
    audioProducerId: string | null;
    participants: Participant[];
    mySpokenLanguage: string;
    mySpokenLanguageEnabled: boolean;
    myDefaultOutputLanguage: string | null;
    myDefaultListenLanguage: string | null;
    listenPreferences: Map<string, string>;
    availableTranslationChannels: Map<string, TranslationChannelAvailability>;
    updateMySpokenLanguage: (lang: string) => void;
    updateMySpokenLanguageEnabled: (enabled: boolean) => void;
    updateMyDefaultOutputLanguage: (lang: string | null) => void;
    updateMyDefaultListenLanguage: (lang: string | null) => void;
    updateListenPreferences: (prefs: Map<string, string>) => void;
    socket: Socket;
    roomName: string;
    showAlert?: ShowAlert;
    showSubtitlesOnCards?: boolean;
    updateShowSubtitlesOnCards?: (value: boolean) => void;
    canUsePersonalTranslation?: boolean;
    personalTranslationUsername?: string;
}
export declare class TranslationSettingsModal implements OnChanges {
    isVisible: boolean;
    onClose: () => void;
    translationSupported: boolean;
    translationConfig: TranslationRoomConfig | null;
    member: string;
    islevel: string;
    audioProducerId: string | null;
    participants: Participant[];
    mySpokenLanguage: string;
    mySpokenLanguageEnabled: boolean;
    myDefaultOutputLanguage: string | null;
    myDefaultListenLanguage: string | null;
    listenPreferences: Map<string, string>;
    availableTranslationChannels: Map<string, TranslationChannelAvailability>;
    updateMySpokenLanguage: (lang: string) => void;
    updateMySpokenLanguageEnabled: (enabled: boolean) => void;
    updateMyDefaultOutputLanguage: (lang: string | null) => void;
    updateMyDefaultListenLanguage: (lang: string | null) => void;
    updateListenPreferences: (prefs: Map<string, string>) => void;
    socket: Socket;
    roomName: string;
    showAlert?: ShowAlert;
    showSubtitlesOnCards: boolean;
    updateShowSubtitlesOnCards?: (value: boolean) => void;
    canUsePersonalTranslation: boolean;
    personalTranslationUsername?: string;
    overlayStyle?: Partial<CSSStyleDeclaration>;
    contentStyle?: Partial<CSSStyleDeclaration>;
    isDarkMode: boolean;
    renderMode: ModernRenderMode;
    showHeader: boolean;
    readonly faTimes: import("@fortawesome/fontawesome-common-types").IconDefinition;
    readonly faClosedCaptioning: import("@fortawesome/fontawesome-common-types").IconDefinition;
    readonly faHeadphones: import("@fortawesome/fontawesome-common-types").IconDefinition;
    readonly faLanguage: import("@fortawesome/fontawesome-common-types").IconDefinition;
    readonly faMicrophone: import("@fortawesome/fontawesome-common-types").IconDefinition;
    readonly originalAudioValue = "__original_audio__";
    activeTab: 'speaking' | 'listening';
    localSpokenLanguage: string;
    localSpokenEnabled: boolean;
    localDefaultOutputLanguage: string;
    localDefaultListenLanguage: string;
    localListenPreferences: Map<string, string>;
    perSpeakerMode: boolean;
    localShowSubtitlesOnCards: boolean;
    isSaving: boolean;
    readonly allLanguageOptions: {
        code: string;
        name: string;
    }[];
    ngOnChanges(changes: SimpleChanges): void;
    isVisibleState(): boolean;
    isEmbedded(): boolean;
    resolvedOverlayStyle(): Record<string, string | number>;
    resolvedContentStyle(): Record<string, string | number>;
    get translationAvailable(): boolean;
    get spokenLanguageOptions(): Array<{
        code: string;
        name: string;
    }>;
    get listenLanguageOptions(): Array<{
        code: string;
        name: string;
    }>;
    get listeningParticipants(): Participant[];
    syncLocalState(): void;
    closeModal(): void;
    getLanguageLabel(code: string | null | undefined): string;
    getSpeakerName(participant: Participant): string;
    getSpeakerSelection(participant: Participant): string;
    getSpeakerOptions(participant: Participant): Array<{
        code: string;
        name: string;
    }>;
    hasSpeakerOptions(participant: Participant): boolean;
    updateSpeakerPreference(participant: Participant, language: string): void;
    saveSettings(): Promise<void>;
    private filterLanguageOptions;
    private normalizeSelectableValue;
    private getChannelAvailability;
    private resolveSpeakerId;
    private getParticipantKeys;
    static ɵfac: i0.ɵɵFactoryDeclaration<TranslationSettingsModal, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TranslationSettingsModal, "app-translation-settings-modal", never, { "isVisible": { "alias": "isVisible"; "required": false; }; "onClose": { "alias": "onClose"; "required": false; }; "translationSupported": { "alias": "translationSupported"; "required": false; }; "translationConfig": { "alias": "translationConfig"; "required": false; }; "member": { "alias": "member"; "required": false; }; "islevel": { "alias": "islevel"; "required": false; }; "audioProducerId": { "alias": "audioProducerId"; "required": false; }; "participants": { "alias": "participants"; "required": false; }; "mySpokenLanguage": { "alias": "mySpokenLanguage"; "required": false; }; "mySpokenLanguageEnabled": { "alias": "mySpokenLanguageEnabled"; "required": false; }; "myDefaultOutputLanguage": { "alias": "myDefaultOutputLanguage"; "required": false; }; "myDefaultListenLanguage": { "alias": "myDefaultListenLanguage"; "required": false; }; "listenPreferences": { "alias": "listenPreferences"; "required": false; }; "availableTranslationChannels": { "alias": "availableTranslationChannels"; "required": false; }; "updateMySpokenLanguage": { "alias": "updateMySpokenLanguage"; "required": false; }; "updateMySpokenLanguageEnabled": { "alias": "updateMySpokenLanguageEnabled"; "required": false; }; "updateMyDefaultOutputLanguage": { "alias": "updateMyDefaultOutputLanguage"; "required": false; }; "updateMyDefaultListenLanguage": { "alias": "updateMyDefaultListenLanguage"; "required": false; }; "updateListenPreferences": { "alias": "updateListenPreferences"; "required": false; }; "socket": { "alias": "socket"; "required": false; }; "roomName": { "alias": "roomName"; "required": false; }; "showAlert": { "alias": "showAlert"; "required": false; }; "showSubtitlesOnCards": { "alias": "showSubtitlesOnCards"; "required": false; }; "updateShowSubtitlesOnCards": { "alias": "updateShowSubtitlesOnCards"; "required": false; }; "canUsePersonalTranslation": { "alias": "canUsePersonalTranslation"; "required": false; }; "personalTranslationUsername": { "alias": "personalTranslationUsername"; "required": false; }; "overlayStyle": { "alias": "overlayStyle"; "required": false; }; "contentStyle": { "alias": "contentStyle"; "required": false; }; "isDarkMode": { "alias": "isDarkMode"; "required": false; }; "renderMode": { "alias": "renderMode"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; }, {}, never, never, true, never>;
}
