import * as ts from "typescript"; export interface ExtractedComment { hash: string; original: string; symbol: string; } /** * 1 ファイル分の JSDoc から翻訳対象テキストを抽出する。 * * 抽出単位は「説明文」と「各タグの説明文」。tsserver がホバーで返す * documentation / tags の text 部分と対応しており、プラグイン側は * 同じ hashText で照合する。 */ export declare function extractFromSourceFile(sourceFile: ts.SourceFile, relativePath: string): ExtractedComment[]; export interface ExtractOptions { /** プロジェクトルート。tsconfig 探索と出力パスの基準 */ projectDir: string; /** tsconfig.json のパス(既定: projectDir から探索) */ tsconfigPath?: string; /** 出力先(既定: .yakudoc/translations.json) */ outPath?: string; /** ソースから消えた原文のエントリを削除する(既定: 残す) */ prune?: boolean; } export interface ExtractSummary { outPath: string; fileCount: number; extracted: number; translated: number; untranslated: number; stale: number; pruned: boolean; } /** * tsconfig.json のファイル一覧を走査して JSDoc を抽出し、 * 既存の translations.json とマージして書き出す。 * * 差分翻訳の要: 既存エントリの訳文はハッシュが一致する限り保持され、 * 原文が変わったコメントは新しいハッシュの「翻訳待ち」エントリになる。 */ export declare function extractProject(options: ExtractOptions): ExtractSummary;