/**
 * Knowledge Base Export
 *
 * Export sessions and documentation to knowledge base platforms:
 * - Notion
 * - Obsidian (local markdown vault)
 *
 * Features:
 * - Session export with metadata
 * - Code block formatting
 * - Internal linking
 * - Tag preservation
 */
import { EventEmitter } from 'events';
export interface ExportOptions {
    /** Include timestamps */
    includeTimestamps?: boolean;
    /** Include tool outputs */
    includeToolOutputs?: boolean;
    /** Include metadata */
    includeMetadata?: boolean;
    /** Tags to add */
    tags?: string[];
    /** Custom frontmatter */
    frontmatter?: Record<string, string | number | boolean | string[]>;
}
export interface SessionData {
    id: string;
    name: string;
    messages: Array<{
        role: 'user' | 'assistant' | 'system';
        content: string;
        timestamp?: Date;
        toolCalls?: Array<{
            name: string;
            input: string;
            output: string;
        }>;
    }>;
    metadata?: Record<string, unknown>;
    createdAt: Date;
    updatedAt: Date;
}
export interface NotionConfig {
    apiKey: string;
    parentPageId?: string;
    databaseId?: string;
}
export interface ObsidianConfig {
    vaultPath: string;
    folderPath?: string;
    templatePath?: string;
}
/**
 * Abstract base for knowledge base exporters
 */
declare abstract class KnowledgeBaseExporter extends EventEmitter {
    abstract export(session: SessionData, options?: ExportOptions): Promise<string>;
    abstract testConnection(): Promise<boolean>;
}
/**
 * Notion Exporter
 */
export declare class NotionExporter extends KnowledgeBaseExporter {
    private config;
    private readonly apiUrl;
    constructor(config: NotionConfig);
    private request;
    /**
     * Export a session to Notion
     */
    export(session: SessionData, options?: ExportOptions): Promise<string>;
    private buildProperties;
    private sessionToNotionBlocks;
    private parseContent;
    testConnection(): Promise<boolean>;
}
/**
 * Obsidian Exporter (Local Markdown Vault)
 */
export declare class ObsidianExporter extends KnowledgeBaseExporter {
    private config;
    constructor(config: ObsidianConfig);
    /**
     * Export a session to Obsidian vault
     */
    export(session: SessionData, options?: ExportOptions): Promise<string>;
    private sessionToMarkdown;
    private sanitizeFilename;
    testConnection(): Promise<boolean>;
    /**
     * Create an index file linking all exported sessions
     */
    createIndex(title?: string): Promise<string>;
}
/**
 * Knowledge Base Export Manager
 */
export declare class KnowledgeBaseExportManager extends EventEmitter {
    private notionExporter;
    private obsidianExporter;
    /**
     * Configure Notion export
     */
    configureNotion(config: NotionConfig): void;
    /**
     * Configure Obsidian export
     */
    configureObsidian(config: ObsidianConfig): void;
    /**
     * Export to Notion
     */
    exportToNotion(session: SessionData, options?: ExportOptions): Promise<string>;
    /**
     * Export to Obsidian
     */
    exportToObsidian(session: SessionData, options?: ExportOptions): Promise<string>;
    /**
     * Export to all configured platforms
     */
    exportToAll(session: SessionData, options?: ExportOptions): Promise<{
        notion?: string;
        obsidian?: string;
    }>;
    /**
     * Test connections to configured platforms
     */
    testConnections(): Promise<{
        notion?: boolean;
        obsidian?: boolean;
    }>;
    /**
     * Create Obsidian index
     */
    createObsidianIndex(title?: string): Promise<string>;
}
/**
 * Get the knowledge base export manager
 */
export declare function getKnowledgeBaseExportManager(): KnowledgeBaseExportManager;
export default KnowledgeBaseExportManager;
