/**
 * MCP Quotes Server - Template Manager
 *
 * Central manager for all quote templates
 */
import type { IQuoteTemplate, ITemplateSearchQuery, ITemplateRenderContext, ITemplateRenderResult, ITemplateValidationResult } from '../../types/templates.js';
import { TemplateCategory } from '../../types/templates.js';
/**
 * Template Manager class - singleton pattern
 */
export declare class TemplateManager {
    private static instance;
    private initialized;
    private constructor();
    /**
     * Get singleton instance
     */
    static getInstance(): TemplateManager;
    /**
     * Initialize template manager
     */
    initialize(): Promise<void>;
    /**
     * Load all category templates into repository
     */
    private loadCategoryTemplates;
    /**
     * Get a template by ID
     */
    getTemplate(id: string, version?: string): Promise<IQuoteTemplate | null>;
    /**
     * List all templates in a category
     */
    listByCategory(category: TemplateCategory): Promise<IQuoteTemplate[]>;
    /**
     * Search templates
     */
    searchTemplates(query: ITemplateSearchQuery): Promise<IQuoteTemplate[]>;
    /**
     * Validate a template
     */
    validateTemplate(template: IQuoteTemplate): ITemplateValidationResult;
    /**
     * Render a template
     */
    renderTemplate(templateId: string, context: ITemplateRenderContext): Promise<ITemplateRenderResult>;
    /**
     * Save a custom template
     */
    saveTemplate(template: IQuoteTemplate): Promise<void>;
    /**
     * Get template suggestions based on context
     */
    getTemplateSuggestions(context: {
        category?: TemplateCategory;
        tags?: string[];
        purpose?: string;
    }): Promise<IQuoteTemplate[]>;
    /**
     * Get all available categories
     */
    getAvailableCategories(): TemplateCategory[];
    /**
     * Get category metadata
     */
    getCategoryMetadata(category: TemplateCategory): {
        name: string;
        description: string;
        icon: string;
    };
    /**
     * Export template as JSON
     */
    exportTemplate(templateId: string): Promise<string>;
    /**
     * Import template from JSON
     */
    importTemplate(jsonString: string): Promise<IQuoteTemplate>;
    /**
     * Clone an existing template
     */
    cloneTemplate(templateId: string, newName: string): Promise<IQuoteTemplate>;
    /**
     * Get template statistics
     */
    getTemplateStatistics(): Promise<{
        totalTemplates: number;
        byCategory: Record<TemplateCategory, number>;
        mostUsed: IQuoteTemplate[];
        recentlyUpdated: IQuoteTemplate[];
    }>;
}
export declare const templateManager: TemplateManager;
//# sourceMappingURL=templateManager.d.ts.map