import { AdminPrincipal } from '../common/auth/principal';
import { AdminModerationService } from './admin-moderation.service';
import { ReviewReportDto } from './dto/social.dto';
declare class ReportQueryDto {
    status?: 'OPEN' | 'DISMISSED' | 'ACTIONED';
    kind?: string;
    q?: string;
    reason?: string;
    limit?: string;
    offset?: string;
}
declare class JobReportQueryDto {
    q?: string;
    status?: 'OPEN' | 'DISMISSED' | 'ACTIONED';
    limit?: string;
    offset?: string;
}
export declare class AdminSocialController {
    private readonly moderation;
    constructor(moderation: AdminModerationService);
    summary(): Promise<{
        data: {
            openTotal: number;
            byKind: {
                message: number;
                member: number;
                post: number;
                comment: number;
                compliment: number;
                community: number;
            };
            resolvedWeek: number;
            actionedWeek: number;
            dismissedWeek: number;
            jobReports: number;
            openJobReports: number;
            jobReportsWeek: number;
            suspendedUsers: number;
            bannedUsers: number;
            generatedAt: string;
        };
        message: string;
    }>;
    queue(query: ReportQueryDto): Promise<{
        data: {
            total: number;
            limit: number;
            offset: number;
            items: {
                id: string;
                reason: import(".prisma/client").$Enums.ReportReason;
                details: string | null;
                status: import(".prisma/client").$Enums.ReportStatus;
                kind: "message" | "compliment" | "community" | "post" | "comment" | "member";
                createdAt: string;
                reviewedAt: string | null;
                resolutionNote: string | null;
                reviewedBy: {
                    id: string;
                    email: string;
                    displayName: string;
                } | null;
                community: {
                    id: string;
                    name: string;
                    slug: string;
                    city: string | null;
                    chatLocked: boolean;
                    closed: boolean;
                } | null;
                message: {
                    id: string;
                    conversationId: string;
                    body: string | null;
                    deleted: boolean;
                    createdAt: string;
                } | null;
                post: {
                    id: string;
                    communityId: string;
                    communityName: string;
                    communitySlug: string;
                    body: string | null;
                    deleted: boolean;
                } | null;
                comment: {
                    id: string;
                    postId: string;
                    communityId: string;
                    body: string | null;
                    deleted: boolean;
                } | null;
                compliment: {
                    id: string;
                    kind: import(".prisma/client").$Enums.ComplimentKind;
                    body: string | null;
                } | null;
                reporter: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                    status: import(".prisma/client").$Enums.UserStatus;
                };
                target: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                    status: import(".prisma/client").$Enums.UserStatus;
                };
            }[];
        };
        message: string;
    }>;
    jobReports(query: JobReportQueryDto): Promise<{
        data: {
            total: number;
            limit: number;
            offset: number;
            items: {
                id: string;
                reason: string;
                details: string | null;
                status: import(".prisma/client").$Enums.ReportStatus;
                createdAt: string;
                reviewedAt: string | null;
                resolutionNote: string | null;
                reviewedBy: {
                    id: string;
                    email: string;
                    displayName: string;
                } | null;
                reporter: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                };
                job: {
                    id: string;
                    title: string;
                    status: import(".prisma/client").$Enums.JobStatus;
                    city: string | null;
                    companyName: string | null;
                    flagged: boolean;
                    flagReason: string | null;
                };
            }[];
        };
        message: string;
    }>;
    review(principal: AdminPrincipal, id: string, dto: ReviewReportDto): Promise<{
        data: {
            id: string;
            status: import(".prisma/client").$Enums.ReportStatus;
        };
        message: string;
    }>;
    reviewJob(principal: AdminPrincipal, id: string, dto: ReviewReportDto): Promise<{
        data: {
            id: string;
            status: import(".prisma/client").$Enums.ReportStatus;
        };
        message: string;
    }>;
}
export {};
