import { KpiService } from '../services/kpi.service';
import { CreateAssignmentDto, UpdateAssignmentDto, BatchAssignDto, QueryAssignmentDto, SelfEvaluateDto, ManagerEvaluateDto, SubmitAllKpiDto, RejectAssignmentDto, RejectDependencyDto } from '../dto/kpi.dto';
export declare class KpiController {
    private readonly kpiService;
    constructor(kpiService: KpiService);
    findAssignments(query: QueryAssignmentDto): Promise<{
        items: {
            id: string;
            cycleId: string;
            employeeId: string;
            name: string;
            employeeName: string | undefined;
            weight: import("@prisma/client/runtime/library").Decimal;
            targetValue: import("@prisma/client/runtime/library").Decimal | null;
            status: import("@prisma/client").$Enums.KpiAssignmentStatus;
            createdAt: Date;
            updatedAt: Date;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    getMyAssignments(userId: string, cycleId?: string): Promise<{
        items: {
            id: string;
            cycleId: string;
            employeeId: string;
            name: string;
            weight: import("@prisma/client/runtime/library").Decimal;
            targetValue: import("@prisma/client/runtime/library").Decimal | null;
            baseTarget: string | null;
            stretchTarget: string | null;
            status: import("@prisma/client").$Enums.KpiAssignmentStatus;
            dependencies: any;
            dependentUserId: any;
            dependentUser: {
                displayName: string;
                id: string;
            } | null;
            dependencyStatus: any;
            dependencyDescription: any;
            dependencyRejectionReason: any;
            parentId: string | null;
            seq: number | null;
            assessment: {
                id: any;
                selfScore: number | undefined;
                managerScore: number | undefined;
                finalScore: number | undefined;
                selfComment: any;
                managerComment: any;
                status: any;
            } | null;
            employee: {
                id: string;
                displayName: string;
            } | null;
            createdAt: Date;
            updatedAt: Date;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    getTeamAssignments(managerId: string, cycleId?: string, organizationId?: string): Promise<{
        items: never[];
        teamSize: number;
        departments: never[];
        results?: undefined;
    } | {
        items: {
            employee: {
                id: string;
                displayName: string;
                username: string;
                email: string;
                avatar: string | null;
                department: any;
                position: any;
            } | null;
            assessment: {
                id: string;
                status: import("@prisma/client").$Enums.KpiAssessmentStatus;
                deletedAt: Date | null;
                managerId: string | null;
                assignmentId: string;
                selfScore: import("@prisma/client/runtime/library").Decimal | null;
                completionNote: string | null;
                selfComment: string | null;
                selfEvaluatedAt: Date | null;
                managerScore: import("@prisma/client/runtime/library").Decimal | null;
                managerComment: string | null;
                managerEvaluatedAt: Date | null;
                finalScore: import("@prisma/client/runtime/library").Decimal | null;
            } | null;
            id: string;
            employeeId: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.KpiAssignmentStatus;
            name: string;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            parentId: string | null;
            unit: string | null;
            cycleId: string;
            weight: import("@prisma/client/runtime/library").Decimal;
            baseTarget: string | null;
            stretchTarget: string | null;
            targetValue: import("@prisma/client/runtime/library").Decimal | null;
            seq: number | null;
            maturityScore: import("@prisma/client/runtime/library").Decimal | null;
        }[];
        teamSize: any;
        departments: {
            id: string;
            name: string;
        }[];
        results: {
            [k: string]: {
                employeeId: string;
                isPublished: boolean;
                totalScore: import("@prisma/client/runtime/library").Decimal | null;
                gradeCode: string | null;
                gradeName: string | null;
                confirmStatus: import("@prisma/client").$Enums.ResultConfirmStatus;
            };
        };
    }>;
    submitAllKpi(dto: SubmitAllKpiDto, userId: string): Promise<{
        submitted: number;
    }>;
    getPendingDependencyConfirmations(userId: string): Promise<{
        items: {
            kpiName: string | null;
            dependencyDescription: string | null;
            sourceEmployee: {
                displayName: string;
                id: string;
            } | null;
            sourceAssignment: {
                cycle: {
                    id: string;
                    name: string;
                };
            } & {
                id: string;
                employeeId: string;
                createdAt: Date;
                status: import("@prisma/client").$Enums.KpiAssignmentStatus;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                parentId: string | null;
                unit: string | null;
                cycleId: string;
                weight: import("@prisma/client/runtime/library").Decimal;
                baseTarget: string | null;
                stretchTarget: string | null;
                targetValue: import("@prisma/client/runtime/library").Decimal | null;
                seq: number | null;
                maturityScore: import("@prisma/client/runtime/library").Decimal | null;
            };
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.KpiDependencyStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            targetUserId: string;
            sourceAssignmentId: string;
            rejectionReason: string | null;
            confirmedAt: Date | null;
            targetAssignmentId: string | null;
        }[];
    }>;
    findAssignmentById(id: string): Promise<{
        id: string;
        employeeId: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.KpiAssignmentStatus;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        unit: string | null;
        cycleId: string;
        weight: import("@prisma/client/runtime/library").Decimal;
        baseTarget: string | null;
        stretchTarget: string | null;
        targetValue: import("@prisma/client/runtime/library").Decimal | null;
        seq: number | null;
        maturityScore: import("@prisma/client/runtime/library").Decimal | null;
    }>;
    assignKpi(dto: CreateAssignmentDto, userId: string): Promise<{
        assessment: {
            id: string;
            status: import("@prisma/client").$Enums.KpiAssessmentStatus;
            deletedAt: Date | null;
            managerId: string | null;
            assignmentId: string;
            selfScore: import("@prisma/client/runtime/library").Decimal | null;
            completionNote: string | null;
            selfComment: string | null;
            selfEvaluatedAt: Date | null;
            managerScore: import("@prisma/client/runtime/library").Decimal | null;
            managerComment: string | null;
            managerEvaluatedAt: Date | null;
            finalScore: import("@prisma/client/runtime/library").Decimal | null;
        } | null;
    } & {
        id: string;
        employeeId: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.KpiAssignmentStatus;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        unit: string | null;
        cycleId: string;
        weight: import("@prisma/client/runtime/library").Decimal;
        baseTarget: string | null;
        stretchTarget: string | null;
        targetValue: import("@prisma/client/runtime/library").Decimal | null;
        seq: number | null;
        maturityScore: import("@prisma/client/runtime/library").Decimal | null;
    }>;
    batchAssignKpi(dto: BatchAssignDto): Promise<{
        created: number;
        failed: number;
    }>;
    updateAssignment(id: string, dto: UpdateAssignmentDto, userId: string): Promise<{
        assessment: {
            id: string;
            status: import("@prisma/client").$Enums.KpiAssessmentStatus;
            deletedAt: Date | null;
            managerId: string | null;
            assignmentId: string;
            selfScore: import("@prisma/client/runtime/library").Decimal | null;
            completionNote: string | null;
            selfComment: string | null;
            selfEvaluatedAt: Date | null;
            managerScore: import("@prisma/client/runtime/library").Decimal | null;
            managerComment: string | null;
            managerEvaluatedAt: Date | null;
            finalScore: import("@prisma/client/runtime/library").Decimal | null;
        } | null;
        outgoingDependencies: {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.KpiDependencyStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            targetUserId: string;
            sourceAssignmentId: string;
            rejectionReason: string | null;
            confirmedAt: Date | null;
            targetAssignmentId: string | null;
        }[];
    } & {
        id: string;
        employeeId: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.KpiAssignmentStatus;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        unit: string | null;
        cycleId: string;
        weight: import("@prisma/client/runtime/library").Decimal;
        baseTarget: string | null;
        stretchTarget: string | null;
        targetValue: import("@prisma/client/runtime/library").Decimal | null;
        seq: number | null;
        maturityScore: import("@prisma/client/runtime/library").Decimal | null;
    }>;
    deleteAssignment(id: string, userId: string): Promise<{
        id: string;
    }>;
    approveAssignment(id: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.KpiAssignmentStatus;
    }>;
    rejectAssignment(id: string, dto: RejectAssignmentDto): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.KpiAssignmentStatus;
    }>;
    confirmDependency(id: string, userId: string): Promise<{
        sourceAssignment: {
            cycle: {
                id: string;
                name: string;
            };
        } & {
            id: string;
            employeeId: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.KpiAssignmentStatus;
            name: string;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            parentId: string | null;
            unit: string | null;
            cycleId: string;
            weight: import("@prisma/client/runtime/library").Decimal;
            baseTarget: string | null;
            stretchTarget: string | null;
            targetValue: import("@prisma/client/runtime/library").Decimal | null;
            seq: number | null;
            maturityScore: import("@prisma/client/runtime/library").Decimal | null;
        };
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.KpiDependencyStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        targetUserId: string;
        sourceAssignmentId: string;
        rejectionReason: string | null;
        confirmedAt: Date | null;
        targetAssignmentId: string | null;
    }>;
    rejectDependency(id: string, dto: RejectDependencyDto, userId: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.KpiDependencyStatus;
    }>;
    findAssessmentById(id: string): Promise<{
        [x: string]: unknown;
    }>;
    selfEvaluate(id: string, dto: SelfEvaluateDto, userId: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.KpiAssessmentStatus;
        deletedAt: Date | null;
        managerId: string | null;
        assignmentId: string;
        selfScore: import("@prisma/client/runtime/library").Decimal | null;
        completionNote: string | null;
        selfComment: string | null;
        selfEvaluatedAt: Date | null;
        managerScore: import("@prisma/client/runtime/library").Decimal | null;
        managerComment: string | null;
        managerEvaluatedAt: Date | null;
        finalScore: import("@prisma/client/runtime/library").Decimal | null;
    }>;
    managerEvaluate(id: string, dto: ManagerEvaluateDto, managerId: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.KpiAssessmentStatus;
        deletedAt: Date | null;
        managerId: string | null;
        assignmentId: string;
        selfScore: import("@prisma/client/runtime/library").Decimal | null;
        completionNote: string | null;
        selfComment: string | null;
        selfEvaluatedAt: Date | null;
        managerScore: import("@prisma/client/runtime/library").Decimal | null;
        managerComment: string | null;
        managerEvaluatedAt: Date | null;
        finalScore: import("@prisma/client/runtime/library").Decimal | null;
    }>;
    confirmAssessment(id: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.KpiAssessmentStatus;
        deletedAt: Date | null;
        managerId: string | null;
        assignmentId: string;
        selfScore: import("@prisma/client/runtime/library").Decimal | null;
        completionNote: string | null;
        selfComment: string | null;
        selfEvaluatedAt: Date | null;
        managerScore: import("@prisma/client/runtime/library").Decimal | null;
        managerComment: string | null;
        managerEvaluatedAt: Date | null;
        finalScore: import("@prisma/client/runtime/library").Decimal | null;
    }>;
    validateWeightSum(cycleId: string, employeeId: string): Promise<{
        valid: boolean;
        totalWeight: number;
    }>;
}
