import { ResultService } from '../services/result.service';
import { QueryResultDto, QueryMyResultsDto, CalculateResultsDto, ExportResultsDto, UpdateResultRemarksDto, AppealResultDto, ResolveAppealDto, SaveOverallCommentDto } from '../dto/result.dto';
export declare class ResultController {
    private readonly resultService;
    constructor(resultService: ResultService);
    findByCycle(query: QueryResultDto): Promise<{
        items: {
            id: string;
            employeeId: string;
            employeeName: string;
            departmentName: string;
            totalScore: number;
            proposedGradeCode: string | null;
            proposedGradeName: string | null;
            gradeCode: string | null;
            gradeName: string | null;
            isPublished: boolean;
            viewedByEmployee: boolean;
            confirmStatus: import("@prisma/client").$Enums.ResultConfirmStatus;
            appealReason: string | null;
        }[];
        pagination: {
            page: number;
            pageSize: number;
            total: number;
            totalPages: number;
        };
        summary: {
            totalEmployees: number;
            publishedCount: number;
            viewedCount: number;
            confirmedCount: number;
            appealedCount: number;
        };
    }>;
    findMyResults(userId: string, query: QueryMyResultsDto): Promise<{
        items: {
            id: string;
            cycleId: string;
            cycleName: string;
            cycleType: import("@prisma/client").$Enums.CycleType;
            totalScore: number;
            proposedGradeCode: string | null;
            proposedGradeName: string | null;
            gradeCode: string | null;
            gradeName: string | null;
            gradeColor: string;
            isPublished: boolean;
            publishedAt: Date | null;
            viewedByEmployee: boolean;
            viewedAt: Date | null;
            confirmStatus: import("@prisma/client").$Enums.ResultConfirmStatus;
            appealReason: string | null;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    findMyResultByCycle(userId: string, cycleId: string): Promise<{
        id: string;
        cycleId: string;
        cycleName: string;
        employeeId: string;
        employeeName: string;
        kpiScore: number | null;
        kpiWeight: number | null;
        e360Score: number | null;
        e360Weight: number | null;
        totalScore: number;
        proposedGradeCode: string | null;
        proposedGradeName: string | null;
        gradeCode: string | null;
        gradeName: string | null;
        gradeColor: string;
        scoreBreakdown: {
            kpiDetails: {
                indicatorName: string;
                score: number;
                weight: number;
            }[];
        };
        isPublished: true;
        publishedAt: Date | null;
        viewedByEmployee: boolean;
        viewedAt: Date | null;
        remarks: string | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    getOverallComment(cycleId: string, employeeId: string, userId: string): Promise<{
        selfOverallComment: string | null;
        managerOverallComment: string | null;
    }>;
    saveOverallComment(dto: SaveOverallCommentDto, userId: string): Promise<{
        id: string;
        employeeId: string;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        publishedAt: Date | null;
        viewedAt: Date | null;
        cycleId: string;
        isPublished: boolean;
        kpiScore: import("@prisma/client/runtime/library").Decimal | null;
        kpiWeight: import("@prisma/client/runtime/library").Decimal | null;
        e360Score: import("@prisma/client/runtime/library").Decimal | null;
        e360Weight: import("@prisma/client/runtime/library").Decimal | null;
        totalScore: import("@prisma/client/runtime/library").Decimal | null;
        proposedGradeCode: string | null;
        proposedGradeName: string | null;
        gradeCode: string | null;
        gradeName: string | null;
        viewedByEmployee: boolean;
        confirmStatus: import("@prisma/client").$Enums.ResultConfirmStatus;
        appealReason: string | null;
        appealResponse: string | null;
        appealResolvedAt: Date | null;
        selfOverallComment: string | null;
        managerOverallComment: string | null;
        remarks: string | null;
    }>;
    findById(id: string): Promise<{
        id: string;
        cycleId: string;
        employeeId: string;
        kpiScore: number | null;
        kpiWeight: number | null;
        e360Score: number | null;
        e360Weight: number | null;
        totalScore: number;
        proposedGradeCode: string | null;
        proposedGradeName: string | null;
        gradeCode: string | null;
        gradeName: string | null;
        isPublished: boolean;
        publishedAt: Date | null;
        viewedByEmployee: boolean;
        viewedAt: Date | null;
        remarks: string | null;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
    }>;
    calculateResults(dto: CalculateResultsDto): Promise<{
        calculated: number;
        failed: number;
    }>;
    exportResults(dto: ExportResultsDto): Promise<{
        downloadUrl: string;
        expiresAt: string;
    }>;
    markAsViewed(id: string, currentUserId: string): Promise<{
        id: string;
        viewedByEmployee: boolean;
        viewedAt: Date | null;
    }>;
    confirmResult(id: string, userId: string): Promise<{
        id: string;
        confirmStatus: import("@prisma/client").$Enums.ResultConfirmStatus;
        confirmedAt: Date;
    }>;
    appealResult(id: string, dto: AppealResultDto, userId: string): Promise<{
        id: string;
        confirmStatus: import("@prisma/client").$Enums.ResultConfirmStatus;
        appealedAt: Date;
    }>;
    resolveAppeal(id: string, dto: ResolveAppealDto): Promise<{
        id: string;
        confirmStatus: import("@prisma/client").$Enums.ResultConfirmStatus;
        appealResponse: string | null;
        appealResolvedAt: Date | null;
        gradeCode: string | null;
        totalScore: import("@prisma/client/runtime/library").Decimal | null;
    }>;
    updateRemarks(id: string, dto: UpdateResultRemarksDto): Promise<{
        id: string;
        cycleId: string;
        employeeId: string;
        kpiScore: number | null;
        kpiWeight: number | null;
        e360Score: number | null;
        e360Weight: number | null;
        totalScore: number;
        proposedGradeCode: string | null;
        proposedGradeName: string | null;
        gradeCode: string | null;
        gradeName: string | null;
        isPublished: boolean;
        publishedAt: Date | null;
        viewedByEmployee: boolean;
        viewedAt: Date | null;
        remarks: string | null;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
    }>;
}
