import { FeedsService } from './feeds.service';
import { CreateFeedDto, CreateCommentDto, ReactDto } from './dto/feed.dto';
export declare class FeedsController {
    private feeds;
    constructor(feeds: FeedsService);
    findAll(user: any, page?: number, limit?: number, contentType?: string, search?: string): Promise<{
        posts: ({
            _count: {
                reactions: number;
                comments: number;
            };
            author: {
                id: string;
                name: string;
                profilePicture: string | null;
                role: import("@prisma/client").$Enums.UserRole;
            };
            reactions: {
                reactionType: string;
            }[];
            poll: ({
                options: ({
                    _count: {
                        votes: number;
                    };
                    votes: {
                        id: string;
                    }[];
                } & {
                    id: string;
                    text: string;
                    pollId: string;
                })[];
            } & {
                id: string;
                createdAt: Date;
                question: string;
                endsAt: Date | null;
                feedId: string;
            }) | null;
        } & {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            authorId: string;
            contentType: import("@prisma/client").$Enums.ContentType;
            body: string | null;
            mediaUrls: import("@prisma/client/runtime/library").JsonValue;
            pinned: boolean;
        })[];
        total: number;
        page: number;
        limit: number;
    }>;
    findOne(id: string): Promise<{
        _count: {
            reactions: number;
            comments: number;
        };
        author: {
            id: string;
            name: string;
            profilePicture: string | null;
            role: import("@prisma/client").$Enums.UserRole;
        };
        reactions: {
            id: string;
            createdAt: Date;
            userId: string;
            feedId: string;
            reactionType: string;
        }[];
        comments: ({
            user: {
                id: string;
                name: string;
                profilePicture: string | null;
            };
        } & {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            userId: string;
            body: string;
            feedId: string;
        })[];
        poll: ({
            options: ({
                _count: {
                    votes: number;
                };
                votes: {
                    id: string;
                    createdAt: Date;
                    userId: string;
                    pollOptionId: string;
                }[];
            } & {
                id: string;
                text: string;
                pollId: string;
            })[];
        } & {
            id: string;
            createdAt: Date;
            question: string;
            endsAt: Date | null;
            feedId: string;
        }) | null;
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        authorId: string;
        contentType: import("@prisma/client").$Enums.ContentType;
        body: string | null;
        mediaUrls: import("@prisma/client/runtime/library").JsonValue;
        pinned: boolean;
    }>;
    create(user: any, dto: CreateFeedDto): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        authorId: string;
        contentType: import("@prisma/client").$Enums.ContentType;
        body: string | null;
        mediaUrls: import("@prisma/client/runtime/library").JsonValue;
        pinned: boolean;
    }>;
    update(id: string, dto: Partial<CreateFeedDto>): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        authorId: string;
        contentType: import("@prisma/client").$Enums.ContentType;
        body: string | null;
        mediaUrls: import("@prisma/client/runtime/library").JsonValue;
        pinned: boolean;
    }>;
    pin(id: string, pinned: boolean): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        authorId: string;
        contentType: import("@prisma/client").$Enums.ContentType;
        body: string | null;
        mediaUrls: import("@prisma/client/runtime/library").JsonValue;
        pinned: boolean;
    }>;
    delete(id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        authorId: string;
        contentType: import("@prisma/client").$Enums.ContentType;
        body: string | null;
        mediaUrls: import("@prisma/client/runtime/library").JsonValue;
        pinned: boolean;
    }>;
    react(feedId: string, user: any, dto: ReactDto): Promise<{
        id: string;
        createdAt: Date;
        userId: string;
        feedId: string;
        reactionType: string;
    }>;
    unreact(feedId: string, user: any): Promise<{
        id: string;
        createdAt: Date;
        userId: string;
        feedId: string;
        reactionType: string;
    }>;
    addComment(feedId: string, user: any, dto: CreateCommentDto): Promise<{
        user: {
            id: string;
            name: string;
            profilePicture: string | null;
        };
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        body: string;
        feedId: string;
    }>;
    deleteComment(id: string, user: any): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        body: string;
        feedId: string;
    }>;
    votePoll(optionId: string, user: any): Promise<{
        id: string;
        createdAt: Date;
        userId: string;
        pollOptionId: string;
    }>;
}
