import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { CreateGroupDto, UpdateGroupDto, QueryGroupDto, UpdateGroupMembersDto } from '../dto';
export declare class GroupService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    create(createGroupDto: CreateGroupDto): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    }>;
    findAll(query: QueryGroupDto): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    }[]>;
    findOne(id: string): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    }>;
    findByCode(code: string): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    } | null>;
    update(id: string, updateGroupDto: UpdateGroupDto): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    }>;
    remove(id: string): Promise<{
        success: boolean;
    }>;
    addMembers(id: string, dto: UpdateGroupMembersDto): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    }>;
    removeMembers(id: string, dto: UpdateGroupMembersDto): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    }>;
    getMembers(id: string): Promise<{
        groupId: string;
        memberIds: string[];
        members: never[];
    }>;
    getGroupsByUserId(userId: string): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        managerId: string | null;
        isActive: boolean;
        memberIds: string[];
        skills: string[];
        assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
    }[]>;
    getAvailableMembers(groupId: string): Promise<string[]>;
}
