import { FeedbackService } from './feedback.service';
import { CreateFeedbackDto, UpdateFeedbackDto, UpdateStatusDto, BatchUpdateStatusDto, FeedbackQueryDto, AdminFeedbackQueryDto, FeedbackStatsQueryDto, BatchUpdateResultDto } from './dto/feedback.dto';
export declare class FeedbackController {
    private readonly feedbackService;
    constructor(feedbackService: FeedbackService);
    create(req: any, dto: CreateFeedbackDto): Promise<{
        data: {
            id: any;
            type: any;
            title: any;
            content: any;
            attachments: any;
            status: any;
            priority: any;
            adminReply: any;
            createdAt: any;
            updatedAt: any;
        };
        message: string;
    }>;
    findMyFeedbacks(req: any, query: FeedbackQueryDto): Promise<{
        items: {
            id: any;
            type: any;
            title: any;
            content: any;
            attachments: any;
            status: any;
            priority: any;
            adminReply: any;
            createdAt: any;
            updatedAt: any;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    findMyFeedbackById(req: any, id: string): Promise<{
        id: any;
        type: any;
        title: any;
        content: any;
        attachments: any;
        status: any;
        priority: any;
        adminReply: any;
        createdAt: any;
        updatedAt: any;
    }>;
    getStats(req: any, query: FeedbackStatsQueryDto): Promise<{
        avgResolutionTime: number;
        todayNew: number;
        thisWeekNew: number;
        thisMonthNew: number;
        byRegion?: Record<string, number> | undefined;
        total: number;
        byStatus: Record<string, number>;
        byType: Record<string, number>;
        byPriority: {
            UNSET: number;
        };
    }>;
    findAll(req: any, query: AdminFeedbackQueryDto): Promise<{
        items: {
            id: any;
            type: any;
            title: any;
            content: any;
            attachments: any;
            pageUrl: any;
            userAgent: any;
            status: any;
            priority: any;
            adminNote: any;
            adminReply: any;
            assignee: {
                id: any;
                displayName: any;
                email: any;
            } | null;
            resolvedAt: any;
            user: {
                id: any;
                displayName: any;
                email: any;
                department: any;
            };
            region: any;
            createdAt: any;
            updatedAt: any;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    batchUpdateStatus(req: any, dto: BatchUpdateStatusDto): Promise<{
        data: BatchUpdateResultDto;
        message: string;
    }>;
    findById(req: any, id: string): Promise<{
        id: any;
        type: any;
        title: any;
        content: any;
        attachments: any;
        pageUrl: any;
        userAgent: any;
        status: any;
        priority: any;
        adminNote: any;
        adminReply: any;
        assignee: {
            id: any;
            displayName: any;
            email: any;
        } | null;
        resolvedAt: any;
        user: {
            id: any;
            displayName: any;
            email: any;
            department: any;
        };
        region: any;
        createdAt: any;
        updatedAt: any;
    }>;
    updateStatus(req: any, id: string, dto: UpdateStatusDto): Promise<{
        data: {
            id: string;
            status: import("@prisma/client").$Enums.FeedbackStatus;
            updatedAt: Date;
        };
        message: string;
    }>;
    update(req: any, id: string, dto: UpdateFeedbackDto): Promise<{
        data: {
            id: string;
            priority: import("@prisma/client").$Enums.FeedbackPriority | null;
            adminNote: string | null;
            adminReply: string | null;
            assignee: {
                id: string;
                displayName: string;
            } | null;
            updatedAt: Date;
        };
        message: string;
    }>;
    delete(req: any, id: string): Promise<{
        data: null;
        message: string;
    }>;
}
