/** Bump when the on-disk shape changes; older caches are ignored. */
export declare const CACHE_VERSION = 1;
/** Default cache file written into the cwd when `--cache` has no path. */
export declare const DEFAULT_CACHE_PATH = ".i18n-ai-translate-cache.json";
/**
 * A persistent translation memory. `entries` maps a content hash (see
 * {@link cacheKey}) to the previously translated string. The key is
 * scoped to the source text plus the input/output languages and the
 * `--context`, but deliberately *not* the engine or model — so a cached
 * translation is reused across runs even after switching providers.
 *
 * The object is mutated in place by `translate()`; the CLI loads it
 * before a run and writes it back after.
 */
export type TranslationCache = {
    version: number;
    entries: {
        [hash: string]: string;
    };
};
/**
 * @returns a fresh, empty cache at the current schema version
 */
export declare function createCache(): TranslationCache;
/**
 * Compute the content-addressed key for one translatable string.
 * @param inputLanguageCode - the source language code
 * @param outputLanguageCode - the target language code
 * @param context - the `--context` string ("" when unset)
 * @param source - the source text being translated
 * @returns a hex sha256 digest uniquely identifying the entry
 */
export declare function cacheKey(inputLanguageCode: string, outputLanguageCode: string, context: string, source: string): string;
/**
 * Look up a previously cached translation.
 * @param cache - the translation memory
 * @param inputLanguageCode - the source language code
 * @param outputLanguageCode - the target language code
 * @param context - the `--context` string ("" when unset)
 * @param source - the source text being translated
 * @returns the cached translation, or undefined on a miss
 */
export declare function getCachedTranslation(cache: TranslationCache, inputLanguageCode: string, outputLanguageCode: string, context: string, source: string): string | undefined;
/**
 * Record a translation for reuse on later runs.
 * @param cache - the translation memory
 * @param inputLanguageCode - the source language code
 * @param outputLanguageCode - the target language code
 * @param context - the `--context` string ("" when unset)
 * @param source - the source text being translated
 * @param translated - the translated text to store
 */
export declare function setCachedTranslation(cache: TranslationCache, inputLanguageCode: string, outputLanguageCode: string, context: string, source: string, translated: string): void;
/**
 * Load a cache from disk, tolerating a missing or incompatible file by
 * returning a fresh cache rather than throwing — a stale cache should
 * never break a translation run.
 * @param filePath - path to the cache JSON file
 * @returns the loaded cache, or a fresh one
 */
export declare function loadCache(filePath: string): TranslationCache;
/**
 * Persist a cache to disk as pretty-printed JSON with a trailing newline.
 * @param filePath - path to the cache JSON file
 * @param cache - the translation memory to write
 */
export declare function saveCache(filePath: string, cache: TranslationCache): void;
