/**
 * Translation Domain Model
 *
 * Represents a localized text for a specific language with variable substitution capabilities.
 * Implements value object pattern - immutable and equality based on value.
 */
import { Language } from './Language.js';
/**
 * Translation key type - identifies a specific translatable string
 */
export type TranslationKey = string;
/**
 * Translation class represents a localized text in a specific language
 */
export declare class Translation {
    private readonly _language;
    private readonly _key;
    private readonly _text;
    /**
     * Constructor with validation
     *
     * @param language Language instance
     * @param key Translation key
     * @param text Translated text
     * @throws Error if key or text is empty
     */
    constructor(language: Language, key: TranslationKey, text: string);
    /**
     * Gets the language
     */
    get language(): Language;
    /**
     * Gets the translation key
     */
    get key(): TranslationKey;
    /**
     * Gets the translated text
     */
    get text(): string;
    /**
     * Creates a Translation instance, validating inputs
     *
     * @param language Language instance
     * @param key Translation key
     * @param text Translated text
     * @returns Translation instance
     * @throws Error if key or text is empty
     */
    static create(language: Language, key: TranslationKey, text: string): Translation;
    /**
     * Creates a new Translation with variables replaced in the text
     *
     * @param variables Object with variable names and their values
     * @returns New Translation instance with replaced variables
     */
    withReplacedVariables(variables: Record<string, string>): Translation;
    /**
     * Compare equality with another Translation object
     *
     * @param other Another Translation object to compare
     * @returns true if equal, false otherwise
     */
    equals(other: Translation): boolean;
}
//# sourceMappingURL=Translation.d.ts.map