import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { SearchType } from '@prisma/client';
export interface MetricsOverview {
    searchStats: {
        today: number;
        thisWeek: number;
        thisMonth: number;
        byType: {
            keyword: number;
            semantic: number;
            hybrid: number;
        };
        avgResponseTime: number;
    };
    qaStats: {
        today: number;
        thisWeek: number;
        thisMonth: number;
        avgConfidence: number;
        feedbackRate: {
            positive: number;
            negative: number;
            none: number;
        };
        avgResponseTime: number;
        totalCost: number;
    };
    documentStats: {
        totalDocuments: number;
        totalArticles: number;
        indexedDocuments: number;
        pendingSync: number;
        failedSync: number;
    };
    userStats: {
        activeUsersToday: number;
        activeUsersWeek: number;
        activeUsersMonth: number;
    };
}
export interface SearchLogData {
    query: string;
    resultCount: number;
    responseTimeMs: number;
    searchType: SearchType;
    filters?: Record<string, any>;
}
export declare class MetricsService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    logSearch(userId: string, data: SearchLogData): Promise<void>;
    getMetricsOverview(): Promise<MetricsOverview>;
    getTopSearchQueries(days?: number, limit?: number): Promise<Array<{
        query: string;
        count: number;
    }>>;
    getDailyTrend(days?: number): Promise<Array<{
        date: string;
        searches: number;
        qaQueries: number;
    }>>;
    private getSearchStats;
    private getQAStats;
    private getDocumentStats;
    private getUserStats;
    private hashUserId;
    private sanitizeQuery;
}
