type MulterFile = {
    originalname: string;
    path: string;
};
import { CreateKnowledgeArticleDto, UpdateKnowledgeArticleDto } from './dto/knowledge-article.dto';
import { KnowledgeBaseService } from './knowledge-base.service';
import { KnowledgeArticleService } from './knowledge-article.service';
import { RagflowSearchService } from './services/ragflow-search.service';
import { KnowledgeQaService } from './services/knowledge-qa.service';
import { MetricsService } from './services/metrics.service';
import { ActivityService } from './services/activity.service';
import { SearchSuggestionService } from './services/search-suggestion.service';
import { SyncSchedulerTask } from './tasks/sync-scheduler.task';
import { RagflowSyncService } from './services/ragflow-sync.service';
export declare class KnowledgeBaseController {
    private readonly knowledgeBaseService;
    private readonly knowledgeArticleService;
    private readonly searchService;
    private readonly qaService;
    private readonly metricsService;
    private readonly activityService;
    private readonly searchSuggestionService;
    private readonly syncScheduler;
    private readonly ragflowSyncService;
    constructor(knowledgeBaseService: KnowledgeBaseService, knowledgeArticleService: KnowledgeArticleService, searchService: RagflowSearchService, qaService: KnowledgeQaService, metricsService: MetricsService, activityService: ActivityService, searchSuggestionService: SearchSuggestionService, syncScheduler: SyncSchedulerTask, ragflowSyncService: RagflowSyncService);
    searchSuggestions(req: any, query: string, limit?: number): Promise<{
        items: import("./services/search-suggestion.service").SearchSuggestionItem[];
    }>;
    deleteSearchHistory(req: any, query?: string): Promise<{
        deleted: number;
    }>;
    semanticSearch(req: any, query: string, limit?: number): Promise<import("./services/ragflow-search.service").SearchResponse>;
    ask(req: any, body: {
        question: string;
    }): Promise<import("./services/knowledge-qa.service").AskResult>;
    submitFeedback(id: string, body: {
        feedback: 'THUMBS_UP' | 'THUMBS_DOWN';
        comment?: string;
    }): Promise<{
        data: {
            success: boolean;
        };
        message: string;
    }>;
    getAskHistory(req: any, limit?: number): Promise<{
        items: {
            id: string;
            question: string;
            answer: string;
            createdAt: Date;
        }[];
    }>;
    upload(file?: MulterFile): Promise<{
        message: string;
        data: null;
        item?: undefined;
    } | {
        item: import("./knowledge-base.service").SharePointUploadResult;
        message?: undefined;
        data?: undefined;
    }>;
    createArticle(req: any, dto: CreateKnowledgeArticleDto): Promise<{
        data: {
            title: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.KnowledgeArticleStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            createdById: string;
            content: string;
        };
        message: string;
    }>;
    getArticle(id: string): Promise<{
        title: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.KnowledgeArticleStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        createdById: string;
        content: string;
    }>;
    updateArticle(id: string, dto: UpdateKnowledgeArticleDto): Promise<{
        data: {
            title: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.KnowledgeArticleStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            createdById: string;
            content: string;
        };
        message: string;
    }>;
    triggerFullSync(): Promise<{
        taskId: string;
        message: string;
    }>;
    triggerDeltaSync(): Promise<{
        taskId: string;
        message: string;
    }>;
    listSyncTasks(limit?: number, offset?: number): Promise<import("./services/ragflow-sync.service").SyncTaskListResult>;
    listSyncTaskSkippedItems(taskId: string, limit?: number, offset?: number): Promise<import("./services/ragflow-sync.service").SyncTaskSkippedResult>;
    listSyncTaskProcessedItems(taskId: string, limit?: number, offset?: number): Promise<import("./services/ragflow-sync.service").SyncTaskProcessedResult>;
    listSyncTaskProcessingItems(taskId: string, limit?: number, offset?: number): Promise<import("./services/ragflow-sync.service").SyncTaskProcessedResult>;
    listSyncTaskFailedItems(taskId: string, limit?: number, offset?: number): Promise<import("./services/ragflow-sync.service").SyncTaskFailedResult>;
    getSyncTaskStatus(taskId: string): Promise<import("./services/ragflow-sync.service").SyncResult>;
    terminateSyncTask(taskId: string): Promise<import("./services/ragflow-sync.service").SyncResult>;
    getMetricsOverview(): Promise<import("./services/metrics.service").MetricsOverview>;
    getDailyTrend(days?: number): Promise<{
        items: {
            date: string;
            searches: number;
            qaQueries: number;
        }[];
    }>;
    getTopQueries(days?: number, limit?: number): Promise<{
        items: {
            query: string;
            count: number;
        }[];
    }>;
    getRecentlyVisited(req: any, limit?: number): Promise<{
        items: import("./services/activity.service").RecentlyVisitedItem[];
    }>;
    recordView(req: any, type: 'document' | 'article', id: string): Promise<{
        success: boolean;
    }>;
    getActivityFeed(req: any, filter?: 'all' | 'mentions' | 'comments', limit?: number): Promise<{
        items: import("./services/activity.service").ActivityItem[];
    }>;
    getUserAnalytics(req: any): Promise<import("./services/activity.service").AnalyticsData>;
    getUnreadMentionCount(req: any): Promise<{
        count: number;
    }>;
    markMentionAsRead(req: any, id: string): Promise<{
        success: boolean;
    }>;
    private safeRemove;
}
export {};
