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 BlogPostGeneratorToolArgs {
    narrativeId?: string;
    title?: string;
    topic?: string;
    keywords?: string[];
    wordCount?: number;
    style?: 'informative' | 'persuasive' | 'storytelling' | 'technical' | 'conversational';
    updateExisting?: boolean;
}
export interface BlogPostResult {
    id: string;
    title: string;
    topic: string;
    keywords: string[];
    wordCount: number;
    style: string;
    narrativeId: string | null;
    createdAt: string;
    excerpt: string;
    filePath: string;
    metadataPath: string;
}
export interface NarrativeData {
    postId: string;
    title: string;
    style: string;
    narrative: {
        introduction: string;
        mainSections: {
            title: string;
            content: string;
        }[];
        conclusion: string;
        keyPoints: string[];
        callToAction: string;
        wordCount: number;
    };
    rawNarrative: string;
    domain: string;
    toneAnalysis: any;
    createdAt: string;
}
export interface PostgenConfig {
    domain: string;
    initialized: boolean;
    createdAt: string;
}
export declare class BlogPostGeneratorTool {
    private readonly logger;
    constructor(_searchService: SearchService, logger?: winston.Logger);
    getToolDefinition(): Tool;
    execute(args: BlogPostGeneratorToolArgs, claudeService: IClaudeService): Promise<string>;
    private validatePostgenDirectory;
    private getPostgenConfig;
    private getNarrative;
    private extractKeywordsFromNarrative;
    private getExistingToneAnalysis;
    private createDomainMatcher;
    private generateBlogPost;
    private buildBlogPostPrompt;
    private saveBlogPost;
    private estimateWordCount;
    private formatResponse;
}
//# sourceMappingURL=BlogPostGeneratorTool.d.ts.map