/**
 * JsonTemplateLoaderRepository
 *
 * TypeScript定義からテンプレートを直接ロードするリポジトリの実装。
 * ITemplateRepositoryインターフェースとITemplateLoaderインターフェースの両方を実装し、
 * FileTemplateRepositoryとTemplateRendererの機能を統合した効率的で軽量な実装です。
 */
import { Template as DomainTemplate } from '../../domain/templates/Template.js';
import { ITemplateRepository } from '../../domain/templates/ITemplateRepository.js';
import { Language } from '../../domain/i18n/Language.js';
import { Template as SchemaTemplate, Language as SchemaLanguage } from '@memory-bank/schemas/templates';
import { II18nProvider } from '../i18n/interfaces/II18nProvider.js';
import { ITemplateLoader } from './interfaces/ITemplateLoader.js';
/**
 * JsonTemplateLoaderRepository class
 * TypeScript定義からテンプレートを直接ロードする
 * ITemplateRepositoryとITemplateLoaderの両方を実装したクラス
 */
export declare class JsonTemplateLoaderRepository implements ITemplateRepository, ITemplateLoader {
    private readonly i18nProvider;
    private templateCache;
    private cacheDirty;
    private readonly componentLogger;
    /**
     * コンストラクタ
     * @param i18nProvider 国際化サービス
     */
    constructor(i18nProvider: II18nProvider);
    /**
     * テンプレートIDをTypeScript変数名に変換
     * 例: 'rules' → 'rulesTemplate'
     * 例: 'active-context' → 'activeContextTemplate'
     */
    private getTypeScriptTemplateName;
    /**
     * 初期化メソッド - 必要に応じて呼び出す
     */
    initialize(): Promise<void>;
    /**
     * すべてのテンプレートをロードしてキャッシュに格納
     */
    private loadAllTemplates;
    /**
     * スキーマテンプレートをドメインテンプレートに変換
     */
    private convertSchemaTemplateToDomain;
    /**
     * テンプレートを取得する
     */
    getTemplate(id: string): Promise<DomainTemplate | null>;
    /**
     * テンプレートをJSONオブジェクトとして取得する
     */
    getTemplateAsJsonObject(id: string, language: Language, _variables?: Record<string, string>): Promise<Record<string, any>>;
    /**
     * 指定したタイプのテンプレートをすべて取得
     */
    getTemplatesByType(type: string): Promise<DomainTemplate[]>;
    /**
     * テンプレートを保存する（TypeScript定義でTypeScriptファイルに書き込まれるため、このメソッドはサポートしない）
     */
    saveTemplate(_template: DomainTemplate): Promise<boolean>;
    /**
     * テンプレートが存在するかチェック
     */
    templateExists(id: string): Promise<boolean>;
    /**
     * 利用可能なすべてのテンプレートIDを取得
     */
    getAllTemplateIds(): Promise<string[]>;
    /**
     * 利用可能なすべてのテンプレートタイプを取得
     */
    getAllTemplateTypes(): Promise<string[]>;
    /**
     * TemplateLoaderインターフェースのloadJsonTemplateメソッドを実装
     * スキーマTemplateを直接返す
     */
    loadJsonTemplate(templateId: string): Promise<SchemaTemplate>;
    /**
     * TemplateLoaderインターフェースのgetMarkdownTemplateメソッドを実装
     * テンプレートをMarkdownにレンダリング
     */
    getMarkdownTemplate(templateId: string, language: SchemaLanguage, variables?: Record<string, string>): Promise<string>;
    /**
     * テンプレートをMarkdownにレンダリング
     * 旧TemplateRendererの機能を統合
     */
    private renderTemplateToMarkdown;
    /**
     * テンプレートのセクションをレンダリング
     */
    private renderSection;
    /**
     * テキスト内の変数を置換
     */
    private replaceVariables;
}
//# sourceMappingURL=JsonTemplateLoaderRepository.d.ts.map