import { Evaluation360Service } from '../services/evaluation360.service';
import { CreateEvaluation360Dto, UpdateEvaluation360Dto, QueryEvaluation360Dto, AddEvaluatorDto, AddEvaluatorsDto, QueryTaskDto, SubmitFeedbackDto } from '../dto/evaluation360.dto';
export declare class Evaluation360Controller {
    private readonly evaluation360Service;
    constructor(evaluation360Service: Evaluation360Service);
    getEmployee360Summary(cycleId: string, employeeId: string, userId: string, roles: string[], permissions: string[]): Promise<{
        evaluationId: string;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        completedCount: number;
        totalCount: number;
        aggregateScore?: undefined;
        dimensionScores?: undefined;
        scoresByRelationship?: undefined;
    } | {
        evaluationId: string;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        completedCount: number;
        totalCount: number;
        aggregateScore: number;
        dimensionScores: {
            dimension: string;
            avgScore: number;
            count: number;
        }[];
        scoresByRelationship: {
            relationship: string;
            avgScore: number;
            count: number;
        }[];
    } | null>;
    getEmployee360Evaluation(cycleId: string, employeeId: string, userId: string, roles: string[], permissions: string[]): Promise<{
        tasks: {
            evaluator: {
                displayName: string;
                id: string;
                username: string;
                email: string;
                avatar: string | null;
            } | null;
            responses: {
                id: string;
                deletedAt: Date | null;
                taskId: string;
                comment: string | null;
                dimension: string;
                score: import("@prisma/client/runtime/library").Decimal;
            }[];
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            deletedAt: Date | null;
            submittedAt: Date | null;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            isAnonymous: boolean;
        }[];
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        updatedAt: Date;
        deletedAt: Date | null;
        targetId: string;
        templateId: string | null;
        createdBy: string;
        cycleId: string;
        deadline: Date;
        minEvaluators: number | null;
    } | null>;
    private canView360;
    findAll(query: QueryEvaluation360Dto): Promise<{
        items: {
            evaluateeId: string;
            taskStats: {
                total: number;
                pending: number;
                submitted: number;
            };
            template: {
                id: string;
                name: string;
            } | null;
            tasks: {
                id: string;
                status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            }[];
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.Evaluation360Status;
            updatedAt: Date;
            deletedAt: Date | null;
            targetId: string;
            templateId: string | null;
            createdBy: string;
            cycleId: string;
            deadline: Date;
            minEvaluators: number | null;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    findById(id: string): Promise<{
        evaluateeId: string;
        template: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            isActive: boolean;
            scope: import("@prisma/client/runtime/library").JsonValue | null;
            createdBy: string;
            isDefault: boolean;
            cycleId: string | null;
            dimensions: import("@prisma/client/runtime/library").JsonValue;
            relationshipTypes: import("@prisma/client/runtime/library").JsonValue;
        } | null;
        tasks: ({
            responses: {
                id: string;
                deletedAt: Date | null;
                taskId: string;
                comment: string | null;
                dimension: string;
                score: import("@prisma/client/runtime/library").Decimal;
            }[];
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            deletedAt: Date | null;
            submittedAt: Date | null;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            isAnonymous: boolean;
        })[];
        cycle: {
            id: string;
            status: import("@prisma/client").$Enums.CycleStatus;
            name: string;
        };
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        updatedAt: Date;
        deletedAt: Date | null;
        targetId: string;
        templateId: string | null;
        createdBy: string;
        cycleId: string;
        deadline: Date;
        minEvaluators: number | null;
    }>;
    create(dto: CreateEvaluation360Dto, userId: string): Promise<{
        template: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            isActive: boolean;
            scope: import("@prisma/client/runtime/library").JsonValue | null;
            createdBy: string;
            isDefault: boolean;
            cycleId: string | null;
            dimensions: import("@prisma/client/runtime/library").JsonValue;
            relationshipTypes: import("@prisma/client/runtime/library").JsonValue;
        } | null;
        tasks: {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            deletedAt: Date | null;
            submittedAt: Date | null;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            isAnonymous: boolean;
        }[];
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        updatedAt: Date;
        deletedAt: Date | null;
        targetId: string;
        templateId: string | null;
        createdBy: string;
        cycleId: string;
        deadline: Date;
        minEvaluators: number | null;
    }>;
    update(id: string, dto: UpdateEvaluation360Dto): Promise<{
        evaluateeId: string;
        template: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            isActive: boolean;
            scope: import("@prisma/client/runtime/library").JsonValue | null;
            createdBy: string;
            isDefault: boolean;
            cycleId: string | null;
            dimensions: import("@prisma/client/runtime/library").JsonValue;
            relationshipTypes: import("@prisma/client/runtime/library").JsonValue;
        } | null;
        tasks: ({
            responses: {
                id: string;
                deletedAt: Date | null;
                taskId: string;
                comment: string | null;
                dimension: string;
                score: import("@prisma/client/runtime/library").Decimal;
            }[];
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            deletedAt: Date | null;
            submittedAt: Date | null;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            isAnonymous: boolean;
        })[];
        cycle: {
            id: string;
            status: import("@prisma/client").$Enums.CycleStatus;
            name: string;
        };
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        updatedAt: Date;
        deletedAt: Date | null;
        targetId: string;
        templateId: string | null;
        createdBy: string;
        cycleId: string;
        deadline: Date;
        minEvaluators: number | null;
    }>;
    delete(id: string): Promise<{
        id: string;
    }>;
    start(id: string): Promise<{
        evaluateeId: string;
        template: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            isActive: boolean;
            scope: import("@prisma/client/runtime/library").JsonValue | null;
            createdBy: string;
            isDefault: boolean;
            cycleId: string | null;
            dimensions: import("@prisma/client/runtime/library").JsonValue;
            relationshipTypes: import("@prisma/client/runtime/library").JsonValue;
        } | null;
        tasks: ({
            responses: {
                id: string;
                deletedAt: Date | null;
                taskId: string;
                comment: string | null;
                dimension: string;
                score: import("@prisma/client/runtime/library").Decimal;
            }[];
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            deletedAt: Date | null;
            submittedAt: Date | null;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            isAnonymous: boolean;
        })[];
        cycle: {
            id: string;
            status: import("@prisma/client").$Enums.CycleStatus;
            name: string;
        };
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        updatedAt: Date;
        deletedAt: Date | null;
        targetId: string;
        templateId: string | null;
        createdBy: string;
        cycleId: string;
        deadline: Date;
        minEvaluators: number | null;
    }>;
    complete(id: string): Promise<{
        evaluateeId: string;
        template: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            isActive: boolean;
            scope: import("@prisma/client/runtime/library").JsonValue | null;
            createdBy: string;
            isDefault: boolean;
            cycleId: string | null;
            dimensions: import("@prisma/client/runtime/library").JsonValue;
            relationshipTypes: import("@prisma/client/runtime/library").JsonValue;
        } | null;
        tasks: ({
            responses: {
                id: string;
                deletedAt: Date | null;
                taskId: string;
                comment: string | null;
                dimension: string;
                score: import("@prisma/client/runtime/library").Decimal;
            }[];
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            deletedAt: Date | null;
            submittedAt: Date | null;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            isAnonymous: boolean;
        })[];
        cycle: {
            id: string;
            status: import("@prisma/client").$Enums.CycleStatus;
            name: string;
        };
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        updatedAt: Date;
        deletedAt: Date | null;
        targetId: string;
        templateId: string | null;
        createdBy: string;
        cycleId: string;
        deadline: Date;
        minEvaluators: number | null;
    }>;
    addEvaluators(id: string, dto: AddEvaluatorsDto | AddEvaluatorDto): Promise<{
        evaluationId: string;
        added: number;
    }>;
    removeEvaluator(evaluationId: string, evaluatorId: string): Promise<{
        evaluationId: string;
        evaluatorId: string;
    }>;
    findTasks(query: QueryTaskDto): Promise<{
        items: {
            id: string;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            isAnonymous: boolean;
            submittedAt: Date | null;
            createdAt: Date;
            deletedAt: Date | null;
        }[];
    }>;
    findMyTasks(userId: string): Promise<{
        items: {
            id: string;
            evaluationId: string;
            evaluation360Id: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            relationship: import("@prisma/client").$Enums.RelationType;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            isAnonymous: boolean;
            submittedAt: Date | null;
            createdAt: Date;
            updatedAt: {};
            evaluation: unknown;
        }[];
    }>;
    submitFeedback(id: string, dto: SubmitFeedbackDto, currentUserId: string): Promise<{
        id: string;
        status: string;
    }>;
    getResults(id: string): Promise<{
        evaluationId: string;
        targetId: string;
        overallScore: number;
        dimensionScores: {
            dimension: string;
            avgScore: number;
            responseCount: number;
        }[];
        relationBreakdown: {
            relationType: import("@prisma/client").$Enums.RelationType;
            avgScore: number;
            count: number;
        }[];
        completedTasks: number;
        totalTasks: number;
    }>;
    getMyEvaluation(userId: string, cycleId?: string): Promise<{
        tasks: {
            evaluator: {
                displayName: string;
                id: string;
                username: string;
                email: string;
                avatar: string | null;
            } | null;
            responses: {
                id: string;
                deletedAt: Date | null;
                taskId: string;
                comment: string | null;
                dimension: string;
                score: import("@prisma/client/runtime/library").Decimal;
            }[];
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.EvaluationTaskStatus;
            deletedAt: Date | null;
            submittedAt: Date | null;
            evaluationId: string;
            evaluatorId: string;
            relationType: import("@prisma/client").$Enums.RelationType;
            isAnonymous: boolean;
        }[];
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.Evaluation360Status;
        updatedAt: Date;
        deletedAt: Date | null;
        targetId: string;
        templateId: string | null;
        createdBy: string;
        cycleId: string;
        deadline: Date;
        minEvaluators: number | null;
    } | null>;
    getMyFeedbackTasks(userId: string): Promise<{
        relationship: import("@prisma/client").$Enums.RelationType;
        evaluation: {
            targetUser: {
                id: string;
                username: string;
                displayName: string;
            } | null;
            id: string;
            status: import("@prisma/client").$Enums.Evaluation360Status;
            targetId: string;
            template: {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                organizationId: string | null;
                isActive: boolean;
                scope: import("@prisma/client/runtime/library").JsonValue | null;
                createdBy: string;
                isDefault: boolean;
                cycleId: string | null;
                dimensions: import("@prisma/client/runtime/library").JsonValue;
                relationshipTypes: import("@prisma/client/runtime/library").JsonValue;
            } | null;
            deadline: Date;
        };
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.EvaluationTaskStatus;
        deletedAt: Date | null;
        submittedAt: Date | null;
        evaluationId: string;
        evaluatorId: string;
        relationType: import("@prisma/client").$Enums.RelationType;
        isAnonymous: boolean;
    }[]>;
}
