/**
 * Translation Models and Types
 * Core types and interfaces for the translation system
 */
import { DEFAULT_LANGUAGE_CODES } from '../constants';
/**
 * Language definition interface
 * Represents a language with its code and display name
 */
export interface LanguageDefinition {
    /** Language code (ISO 639-1 format recommended) */
    code: string;
    /** Display name for the language */
    name: string;
}
/**
 * Main translation configuration interface
 */
export interface TranslationConfig {
    /**
     * Runtime metadata used for cache and update detection
     */
    meta: {
        version?: string;
        updatedAt?: string;
        hash: string;
        schemaVersion: string;
    };
    /**
     * Additional languages to make available beyond the default base languages (en, es, pt)
     * When you add languages here, they become available in defaultLang and excludeLanguages
     * @example [{ code: 'de', name: 'Deutsch' }, { code: 'fr', name: 'Français' }]
     */
    additionalLanguages?: readonly LanguageDefinition[];
    /**
     * Languages to exclude from the available set
     * IntelliSense includes: base languages (en, es, pt) + any additionalLanguages you specified above
     * @example ['pt'] to exclude Portuguese
     */
    excludeLanguages?: readonly string[];
    /**
     * Default language code
     * IntelliSense includes: base languages (en, es, pt) + any additionalLanguages you specified above
     * @example 'en'
     */
    defaultLang?: string;
    /** Translation file paths */
    translationPaths?: string[];
}
/**
 * Internal state configuration for translation service
 * Represents the resolved configuration
 */
export interface TranslationStateConfig {
    availableLanguages: LanguageDefinition[];
    defaultLanguage: string;
}
export type DefaultLanguageCode = (typeof DEFAULT_LANGUAGE_CODES)[number];
