import { GroupsService } from './groups.service';
import { CreateGroupDto, UpdateGroupDto } from './dto/group.dto';
export declare class GroupsController {
    private groups;
    constructor(groups: GroupsService);
    findAll(user: any): Promise<{
        isMember: boolean;
        _count: {
            messages: number;
            members: number;
        };
        members: {
            userId: string;
        }[];
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.GroupType;
        description: string | null;
        avatar: string | null;
        createdById: string;
    }[]>;
    findOne(id: string, user: any): Promise<{
        _count: {
            messages: number;
            members: number;
        };
        members: ({
            user: {
                id: string;
                name: string;
                profilePicture: string | null;
            };
        } & {
            id: string;
            role: string;
            groupId: string;
            userId: string;
            joinedAt: Date;
        })[];
    } & {
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.GroupType;
        description: string | null;
        avatar: string | null;
        createdById: string;
    }>;
    create(dto: CreateGroupDto, user: any): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.GroupType;
        description: string | null;
        avatar: string | null;
        createdById: string;
    }>;
    update(id: string, dto: UpdateGroupDto): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.GroupType;
        description: string | null;
        avatar: string | null;
        createdById: string;
    }>;
    delete(id: string): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        type: import("@prisma/client").$Enums.GroupType;
        description: string | null;
        avatar: string | null;
        createdById: string;
    }>;
    join(id: string, user: any): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
    leave(id: string, user: any): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
    addMember(id: string, userId: string): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
    removeMember(id: string, userId: string): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
}
