import { Tool } from '@modelcontextprotocol/sdk/types.js';
import { SearchService } from '../services/search/index.js';
import { IClaudeService } from '../services/claude/IClaudeService.js';
import winston from 'winston';
export interface NarrativeGeneratorToolArgs {
    postId: string;
    style?: 'concise' | 'detailed' | 'storytelling';
    updateExisting?: boolean;
}
export interface ContentPlanPost {
    id: string;
    title: string;
    description: string;
    keywords: string[];
    category: string;
    estimatedLength: string;
    priority: 'high' | 'medium' | 'low';
    targetAudience: string;
    contentType: 'educational' | 'promotional' | 'thought-leadership' | 'case-study' | 'tutorial' | 'news' | 'opinion';
}
export interface ContentPlan {
    domain: string;
    timeframe: 'week' | 'month' | 'quarter';
    plan: ContentPlanPost[];
    timestamp: string;
}
export interface ToneAnalysis {
    formality: string;
    emotion: string;
    style: string;
    overallTone: string;
    wordChoicePatterns?: string;
    sentenceStructure?: string;
    uniqueCharacteristics?: string;
}
export interface StructuredNarrative {
    introduction: string;
    mainSections: {
        title: string;
        content: string;
    }[];
    conclusion: string;
    keyPoints: string[];
    callToAction: string;
    wordCount: number;
}
export interface NarrativeResult {
    postId: string;
    title: string;
    style: 'concise' | 'detailed' | 'storytelling';
    narrative: StructuredNarrative;
    rawNarrative: string;
    domain: string;
    toneAnalysis: ToneAnalysis | null;
    createdAt: string;
    sourceContentPlan: string;
}
export declare class NarrativeGeneratorTool {
    private readonly logger;
    constructor(_searchService: SearchService, logger?: winston.Logger);
    getToolDefinition(): Tool;
    execute(args: NarrativeGeneratorToolArgs, claudeService: IClaudeService): Promise<string>;
    private validatePostgenDirectory;
    private checkExistingNarrative;
    private getLatestContentPlan;
    private getExistingToneAnalysis;
    private createDomainMatcher;
    private generateNarrative;
    private buildNarrativePrompt;
    private parseNarrative;
    private estimateWordCount;
    private saveNarrative;
    private formatResponse;
}
//# sourceMappingURL=NarrativeGeneratorTool.d.ts.map