import type { TranslationsFile } from "./types"; /** .yakudoc/ 直下のパック置き場のディレクトリ名 */ export declare const PACKS_DIR_NAME = "packs"; /** * 依存パッケージ 1 つ分の翻訳パック。 * * `.yakudoc/packs/<パッケージ名>.json` に保存されるファイルの形式そのものが * 共有可能なパックの形式でもある(ローカルのパック = 配布物)。entries の * キーは translations.json と同じ「正規化した原文のハッシュ」なので、 * パッケージのバージョンが変わっても原文が同じエントリはそのまま生きる。 */ export interface PackFile { /** npm パッケージ名(例: "zod"、"@types/node") */ name: string; /** 抽出元にしたインストール済みバージョン */ version: string; /** このパックの翻訳先言語コード(例: "ja") */ lang: string; /** 生成元ツールとバージョン(例: "yakudoc@0.2.0")。無くてもよい */ generator?: string; /** 翻訳エントリ。translations.json と同じ形式 */ entries: TranslationsFile; } /** 読み込んだパックとその場所 */ export interface LoadedPack { filePath: string; pack: PackFile; } /** * パックのファイル名。スコープ区切りの "/" はファイル名に使えないため * "__" に置き換える(例: "@types/node" → "@types__node.json")。 */ export declare function packFileNameFor(packageName: string): string; /** packFileNameFor の逆変換(一覧表示でファイル名からパッケージ名を推定する) */ export declare function packageNameFromFileName(fileName: string): string; /** * パック置き場のディレクトリを解決する。translations.json と同じ * `.yakudoc/` ディレクトリの下に置く(--out で translations.json を * 動かした場合はそれに追従する)。 */ export declare function resolvePacksDir(projectDir: string, translationsPath?: string): string; /** 特定パッケージのパックファイルのパス */ export declare function packPathFor(projectDir: string, packageName: string, translationsPath?: string): string; /** * JSON 文字列(またはパース済みの値)をパックとして解釈する。 * * 正規の形式は { name, version, lang, entries } だが、entries を持たない * 素の translations.json 形式(ハッシュ → エントリ)も受け付ける。 * コミュニティ配布のファイルを手で packs/ に置いた場合や、レジストリの * 形式差異に対して寛容にするため。解釈できなければ undefined。 */ export declare function parsePack(raw: unknown, fallbackName: string): PackFile | undefined; /** パックファイルを読み込む。存在しない・解釈できない場合は undefined */ export declare function readPack(filePath: string): PackFile | undefined; /** symbol → original 順に entries を整列して書き出す(diff を安定させるため) */ export declare function writePack(filePath: string, pack: PackFile): void; /** * packs/ ディレクトリのパックを name 順で一覧する。 * ディレクトリが無ければ空配列。壊れたファイルは読み飛ばす。 */ export declare function listPacks(packsDir: string): LoadedPack[]; /** * パックファイルを削除する。削除したら true、元々存在しなければ false。 */ export declare function removePack(projectDir: string, packageName: string, translationsPath?: string): { removed: boolean; filePath: string; };