import { AdminPrincipal } from '../common/auth/principal';
import { SourcesService } from '../jobs/sources.service';
import { InterviewCoachService } from '../interview/interview.service';
import { AnalyticsService } from './analytics.service';
declare class SourceUpdateDto {
    enabled?: boolean;
    frequencyHours?: number;
    clearCredentials?: boolean;
    appId?: string;
    appKey?: string;
    apiKey?: string;
    boardToken?: string;
    site?: string;
    subdomain?: string;
    feedUrl?: string;
}
declare class OpenAiDto {
    apiKey?: string;
    model?: string;
    clearCredentials?: boolean;
}
declare class FreePlanQuotaDto {
    monthlyAiQuota: number;
}
declare class TemplateDto {
    body: string;
}
export declare class OpsController {
    private readonly analytics;
    private readonly sources;
    private readonly interviews;
    constructor(analytics: AnalyticsService, sources: SourcesService, interviews: InterviewCoachService);
    analyticsSummary(): Promise<{
        data: {
            registered: number;
            active: number;
            jobs: number;
            demoJobs: number;
            applications: number;
            resumes: number;
            coverLetters: number;
            interviews: number;
            matches: number;
            messages: number;
            communities: number;
            events: number;
            blocks: number;
            openReports: number;
            growth: {
                start: string;
                count: number;
            }[];
            retentionPercent: number | null;
            retentionCohort: number;
            ai: {
                calls: number;
                inputTokens: number;
                outputTokens: number;
                estimatedCost: string;
                byFeature: {
                    feature: string;
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                }[];
            };
        };
        message: string;
    }>;
    analyticsDashboard(principal: AdminPrincipal, range?: string, from?: string, to?: string): Promise<{
        data: {
            range: {
                key: import("./analytics.rules").DashboardRangeKey;
                label: string;
                from: string;
                to: string;
                granularity: "week" | "day" | "hour" | "month";
            };
            operator: {
                id: string;
                email: string;
                name: string;
            } | null;
            generatedAt: string;
            kpis: {
                registered: {
                    total: number;
                    inRange: number;
                    deltaPercent: number;
                    activeInRange: number;
                    weekNew: number;
                    verifiedPercent: number;
                };
                jobs: {
                    live: number;
                    demo: number;
                    licensed: number;
                    inRange: number;
                    deltaPercent: number;
                };
                applications: {
                    total: number;
                    inRange: number;
                    deltaPercent: number;
                    interviews: number;
                    matches: number;
                    resumes: number;
                    coverLetters: number;
                };
                ai: {
                    calls: number;
                    deltaPercent: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                    avgLatencyMs: number;
                    previousTokens: number;
                    currentTokens: number;
                };
            };
            series: {
                applications: {
                    start: string;
                    count: number;
                }[];
                registrations: {
                    start: string;
                    count: number;
                }[];
                ai: {
                    start: string;
                    count: number;
                }[];
                communities: {
                    start: string;
                    count: number;
                }[];
            };
            funnel: {
                fetched: number;
                accepted: number;
                rejected: number;
                dedupeRate: number;
                classified: number;
                live: number;
                importBatches: number;
                previousAccepted: number;
                latest: {
                    id: string;
                    source: string;
                    status: string;
                    accepted: number;
                    rejected: number;
                    createdAt: string;
                }[];
            };
            health: {
                overall: string;
                apiLatencyMs: number;
                aiConfigured: boolean;
                openReports: number;
                sources: {
                    name: string;
                    enabled: boolean;
                    configured: boolean;
                    lastSyncedAt: string | null;
                    lastError: string | null;
                    lastImport: {
                        accepted: number;
                        rejected: number;
                        createdAt: string;
                    } | null;
                    status: string;
                }[];
                uptimeLabel: string;
            };
            civic: {
                communities: number;
                communitiesInRange: number;
                events: number;
                messages: number;
                blocks: number;
            };
            importOps: {
                today: number;
                week: number;
                successRate: number;
                byOrigin: {
                    ADMIN: number;
                    USER: number;
                    EXTERNAL: number;
                };
                topSources: {
                    name: string;
                    displayName: string;
                    runs: number;
                    accepted: number;
                }[];
            };
            activity: {
                id: string;
                category: "system" | "jobs" | "security" | "moderation";
                action: string;
                actorType: string;
                entityType: string;
                entityId: string | null;
                createdAt: string;
                summary: string;
                icon: string;
                tone: string;
            }[];
            insight: {
                text: string;
                href: string;
            };
        };
        message: string;
    }>;
    interviewAnalytics(): Promise<{
        data: {
            sessions: number;
            completed: number;
            completionRate: number;
            avgOverallScore: number | null;
            avgReadinessScore: number | null;
            aiUsage: {
                feature: string;
                count: number;
                estimatedCost: import("@prisma/client/runtime/library").Decimal | null;
            }[];
        };
        message: string;
    }>;
    ai(): Promise<{
        data: {
            configured: boolean;
            provider: string | null;
            openai: {
                configured: boolean;
                credentialSource: string;
                model: string;
            };
            plans: {
                free: {
                    code: string;
                    name: string;
                    monthlyAiQuota: number;
                };
            };
            usage: {
                calls: number;
                inputTokens: number;
                outputTokens: number;
                estimatedCost: string;
                byFeature: {
                    feature: string;
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                }[];
            };
            templates: {
                id: string;
                feature: string;
                version: number;
                body: string;
            }[];
        };
        message: string;
    }>;
    aiServices(): Promise<{
        data: {
            configured: boolean;
            activeProvider: string | null;
            routing: {
                preferredEnv: string | null;
                resolutionOrder: string[];
                note: string;
            };
            openai: {
                configured: boolean;
                credentialSource: string;
                model: string;
            };
            plans: {
                free: {
                    code: string;
                    name: string;
                    monthlyAiQuota: number;
                };
            };
            usage: {
                calls: number;
                inputTokens: number;
                outputTokens: number;
                estimatedCost: string;
                byFeature: {
                    feature: string;
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                }[];
            };
            providers: {
                id: string;
                label: string;
                description: string;
                envVar: string;
                editable: boolean;
                configured: boolean;
                credentialSource: string;
                active: boolean;
                defaultModel: string;
                configuredModel: string;
                models: {
                    id: string;
                    label: string;
                    inputPerMillion: number;
                    outputPerMillion: number;
                    recommended: boolean;
                    tier: string;
                }[];
                recent: {
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                };
            }[];
            modelsInUse: {
                provider: string;
                model: string;
                calls: number;
                inputTokens: number;
                outputTokens: number;
                estimatedCost: string;
            }[];
            features: {
                feature: string;
                templateId: string | null;
                version: number;
                hasTemplate: boolean;
                calls: number;
                estimatedCost: string;
            }[];
            templates: {
                id: string;
                feature: string;
                version: number;
                body: string;
            }[];
            health: {
                providersConfigured: number;
                providersTotal: number;
                freePlanSubscribers: number;
                callsLast30d: number;
                templates: number;
            };
        };
        message: string;
    }>;
    aiUsage(range?: string, from?: string, to?: string, feature?: string, provider?: string, model?: string, q?: string, limit?: string, offset?: string): Promise<{
        data: {
            range: {
                key: import("./analytics.rules").DashboardRangeKey;
                label: string;
                from: string;
                to: string;
                granularity: "week" | "day" | "hour" | "month";
            };
            generatedAt: string;
            currency: string;
            kpis: {
                calls: number;
                callsDeltaPercent: number;
                inputTokens: number;
                outputTokens: number;
                tokens: number;
                tokensDeltaPercent: number;
                estimatedCost: string;
                costDeltaPercent: number;
                avgCostPerCall: string;
                avgTokensPerCall: number;
                previous: {
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                };
            };
            series: {
                calls: {
                    start: string;
                    count: number;
                }[];
                cost: {
                    start: string;
                    count: number;
                    estimatedCost: string;
                }[];
                tokens: {
                    start: string;
                    count: number;
                }[];
            };
            breakdown: {
                byFeature: {
                    feature: string;
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                }[];
                byProvider: {
                    provider: string;
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                }[];
                byModel: {
                    provider: string;
                    model: string;
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                }[];
                topUsers: {
                    userId: string;
                    email: string | null;
                    displayName: string | null;
                    photoFileId: string | null;
                    calls: number;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                }[];
            };
            facets: {
                features: string[];
                providers: string[];
                models: string[];
            };
            log: {
                total: number;
                limit: number;
                offset: number;
                items: {
                    id: string;
                    userId: string;
                    email: string;
                    displayName: string | null;
                    photoFileId: string | null;
                    feature: string;
                    provider: string;
                    model: string;
                    inputTokens: number;
                    outputTokens: number;
                    estimatedCost: string;
                    createdAt: string;
                    hasGeneration: boolean;
                }[];
            };
        };
        message: string;
    }>;
    saveOpenAi(principal: AdminPrincipal, dto: OpenAiDto): Promise<{
        data: {
            configured: boolean;
            credentialSource: string;
            model: string;
        };
        message: string;
    }>;
    saveFreePlanQuota(principal: AdminPrincipal, dto: FreePlanQuotaDto): Promise<{
        data: {
            code: string;
            name: string;
            monthlyAiQuota: number;
        };
        message: string;
    }>;
    template(principal: AdminPrincipal, id: string, dto: TemplateDto): Promise<{
        data: {
            id: string;
            feature: string;
            version: number;
            body: string;
        };
        message: string;
    }>;
    sourcesList(): Promise<{
        data: {
            items: {
                name: string;
                displayName: string;
                integrationType: string;
                availability: string;
                logoKey: string;
                configurable: boolean;
                syncable: boolean;
                enabled: boolean;
                configured: boolean;
                credentialSource: string;
                frequencyHours: number | null;
                lastError: string | null;
                lastSyncedAt: string | null;
                jobsImported: number;
                jobsActive: number;
                connectionHealth: string;
                lastImport: {
                    accepted: number;
                    rejected: number;
                    status: string;
                    createdAt: string;
                } | null;
            }[];
        };
        message: string;
    }>;
    updateSource(principal: AdminPrincipal, name: string, dto: SourceUpdateDto): Promise<{
        data: {
            name: string;
            displayName: string;
            integrationType: string;
            availability: string;
            logoKey: string;
            configurable: boolean;
            syncable: boolean;
            enabled: boolean;
            configured: boolean;
            credentialSource: string;
            frequencyHours: number | null;
            lastError: string | null;
            lastSyncedAt: string | null;
            jobsImported: number;
            jobsActive: number;
            connectionHealth: string;
            lastImport: {
                accepted: number;
                rejected: number;
                status: string;
                createdAt: string;
            } | null;
        } | undefined;
        message: string;
    }>;
}
export {};
