import type { Presenter } from '../../../../shared/foundation/presenter.base.js';
import type { DeveloperInsight, CategoryLevels, DeveloperMetrics, InsightDescription } from '../../../../modules/statistics-insights/entities/insight/developerInsight.js';
import type { TeamInsight, AverageLevels } from '../../../../modules/statistics-insights/entities/insight/teamInsight.js';
import type { DeveloperTitle } from '../../../../modules/statistics-insights/entities/insight/developerTitle.js';
import type { InsightCategory } from '../../../../modules/statistics-insights/entities/insight/insightCategory.js';
export interface DeveloperInsightViewModel {
    developerName: string;
    title: DeveloperTitle;
    overallLevel: number;
    categoryLevels: CategoryLevels;
    strengths: InsightCategory[];
    weaknesses: InsightCategory[];
    topPriority: InsightCategory | null;
    reviewCount: number;
    metrics: DeveloperMetrics;
    insightDescriptions: InsightDescription[];
}
export interface TeamInsightViewModel {
    developerCount: number;
    totalReviewCount: number;
    averageLevels: AverageLevels;
    strengths: InsightCategory[];
    weaknesses: InsightCategory[];
    tips: string[];
}
export interface InsightsViewModel {
    isEmpty: boolean;
    developers: DeveloperInsightViewModel[];
    team: TeamInsightViewModel;
}
interface InsightsPresenterInput {
    developerInsights: DeveloperInsight[];
    teamInsight: TeamInsight;
}
export declare class InsightsPresenter implements Presenter<InsightsPresenterInput, InsightsViewModel> {
    present(data: InsightsPresenterInput): InsightsViewModel;
    private presentDeveloper;
    private presentTeam;
}
export {};
//# sourceMappingURL=insights.presenter.d.ts.map