import { PrismaService } from '../../prisma/prisma.service';
import { CreateGroupDto, UpdateGroupDto } from './dto/group.dto';
export declare class GroupsService {
    private prisma;
    constructor(prisma: PrismaService);
    findAll(userId: string): 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, userId: string): 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, createdById: string): 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(groupId: string, userId: string): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
    leave(groupId: string, userId: string): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
    addMember(groupId: string, userId: string, role?: string): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
    removeMember(groupId: string, userId: string): Promise<{
        id: string;
        role: string;
        groupId: string;
        userId: string;
        joinedAt: Date;
    }>;
}
