import { AdminPrincipal } from '../common/auth/principal';
import { AdminMessagesService } from './admin-messages.service';
declare class ListQueryDto {
    q?: string;
    status?: string;
    kind?: string;
    hasReport?: string;
    limit?: string;
    offset?: string;
    cursor?: string;
}
export declare class AdminMessagesController {
    private readonly messages;
    constructor(messages: AdminMessagesService);
    summary(): Promise<{
        data: {
            openReports: number;
            messageReports: number;
            memberReports: number;
            contentReports: number;
            messages: number;
            messagesWeek: number;
            conversations: number;
            blocks: number;
            blocksWeek: number;
            deletedMessages: number;
            generatedAt: string;
        };
        message: string;
    }>;
    reports(query: ListQueryDto): 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" | "post" | "comment" | "member";
                createdAt: string;
                resolutionNote: string | null;
                message: {
                    id: string;
                    conversationId: string;
                    body: string | null;
                    deleted: boolean;
                    createdAt: string;
                } | null;
                post: {
                    id: string;
                    communityId: string;
                    body: string | null;
                } | null;
                comment: {
                    id: string;
                    postId: string;
                    body: string | null;
                } | null;
                compliment: {
                    id: string;
                    kind: import(".prisma/client").$Enums.ComplimentKind;
                    body: string | null;
                } | null;
                reporter: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                };
                target: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                };
            }[];
        };
        message: string;
    }>;
    conversations(query: ListQueryDto): Promise<{
        data: {
            total: number;
            limit: number;
            offset: number;
            items: {
                id: string;
                createdAt: string;
                updatedAt: string;
                messageCount: number;
                openReportCount: number;
                members: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                }[];
                lastMessage: {
                    id: string;
                    senderId: string;
                    body: string | null;
                    deleted: boolean;
                    createdAt: string;
                } | null;
            }[];
        };
        message: string;
    }>;
    conversation(id: string): Promise<{
        data: {
            id: string;
            createdAt: string;
            updatedAt: string;
            messageCount: number;
            openReportCount: number;
            members: {
                id: string;
                email: string;
                displayName: string;
                status: import(".prisma/client").$Enums.UserStatus;
                isDemo: boolean;
            }[];
            blocks: {
                id: string;
                actorId: string;
                targetId: string;
                createdAt: string;
            }[];
        };
        message: string;
    }>;
    conversationMessages(id: string, query: ListQueryDto): Promise<{
        data: {
            items: {
                id: string;
                senderId: string;
                sender: {
                    id: string;
                    email: string;
                    displayName: string;
                };
                body: string | null;
                deleted: boolean;
                createdAt: string;
                attachmentCount: number;
                reportCount: number;
                reactionCount: number;
            }[];
            nextCursor: string | null;
        };
        message: string;
    }>;
    blocks(query: ListQueryDto): Promise<{
        data: {
            total: number;
            limit: number;
            offset: number;
            items: {
                id: string;
                createdAt: string;
                actor: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                };
                target: {
                    id: string;
                    email: string;
                    displayName: string;
                    isDemo: boolean;
                };
            }[];
        };
        message: string;
    }>;
    redact(principal: AdminPrincipal, id: string): Promise<{
        data: {
            id: string;
            deleted: boolean;
            conversationId: string;
        };
        message: string;
    }>;
}
export {};
