import { DepartmentsService } from './departments.service';
import { CreateDepartmentDto, UpdateDepartmentDto, SetHeadDto, DepartmentQueryDto, BatchCreateDepartmentDto } from './dto/department.dto';
import { AddDepartmentMemberDto, AddDepartmentMembersDto } from './dto/add-member.dto';
export declare class DepartmentsController {
    private readonly departmentsService;
    constructor(departmentsService: DepartmentsService);
    findAll(query: DepartmentQueryDto): Promise<any[]>;
    findTree(organizationId?: string): Promise<any[]>;
    findOrganizations(regionId?: string): Promise<{
        head: {
            displayName: string;
            id: string;
            username: string;
            email: string;
            avatar: string | null;
        } | null;
        employeeCount: any;
        childCount: any;
        regions: any;
        isRegionDefault: any;
        organization: {
            organizationRegions: ({
                region: {
                    code: string;
                    id: string;
                    name: string;
                };
            } & {
                id: string;
                createdAt: Date;
                organizationId: string;
                regionId: string;
                isDefault: boolean;
            })[];
        } & {
            displayName: string | null;
            code: string;
            id: string;
            createdAt: Date;
            status: string;
            name: string;
            email: string | null;
            phone: string | null;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            order: number;
            nameEn: string | null;
            nameZh: string | null;
            legalName: string | null;
            legalRepresentative: string | null;
            registrationNumber: string | null;
            taxId: string | null;
            address: string | null;
            website: string | null;
            primaryRegionId: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            financialConfig: import("@prisma/client/runtime/library").JsonValue;
            complianceConfig: import("@prisma/client/runtime/library").JsonValue;
            isActive: boolean;
            establishedAt: Date | null;
        };
        _count: {
            organization: number;
            parent: number;
            children: number;
            userMemberships: number;
        } | {
            code: number;
            id: number;
            createdAt: number;
            tenantId: number;
            name: number;
            metadata: number;
            updatedAt: number;
            deletedAt: number;
            description: number;
            organizationId: number;
            parentId: number;
            headId: number;
            order: number;
        } | {
            code: number;
            id: number;
            createdAt: number;
            tenantId: number;
            name: number;
            metadata: number;
            updatedAt: number;
            deletedAt: number;
            description: number;
            organizationId: number;
            parentId: number;
            headId: number;
            order: number;
        };
        code: string;
        id: string;
        createdAt: Date;
        tenantId: string | null;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        parentId: string | null;
        headId: string | null;
        order: number;
    }[]>;
    findOne(id: string): Promise<any>;
    getMembers(id: string, includeSubDepartments?: string): Promise<any[]>;
    getStats(id: string): Promise<{
        activeUsers: any;
        inactiveUsers: any;
        totalUsers: any;
        childDepartments: number;
    }>;
    create(createDepartmentDto: CreateDepartmentDto): Promise<{
        organization: {
            code: string;
            id: string;
            name: string;
        };
        parent: {
            code: string;
            id: string;
            name: string;
        } | null;
    } & {
        code: string;
        id: string;
        createdAt: Date;
        tenantId: string | null;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        parentId: string | null;
        headId: string | null;
        order: number;
    }>;
    batchCreate(batchCreateDto: BatchCreateDepartmentDto): Promise<{
        total: number;
        successCount: number;
        failedCount: number;
        results: {
            success: any[];
            failed: any[];
        };
    }>;
    update(id: string, updateDepartmentDto: UpdateDepartmentDto): Promise<{
        regions: any;
        organization: {
            organizationRegions: ({
                region: {
                    code: string;
                    id: string;
                    name: string;
                };
            } & {
                id: string;
                createdAt: Date;
                organizationId: string;
                regionId: string;
                isDefault: boolean;
            })[];
        } & {
            displayName: string | null;
            code: string;
            id: string;
            createdAt: Date;
            status: string;
            name: string;
            email: string | null;
            phone: string | null;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            order: number;
            nameEn: string | null;
            nameZh: string | null;
            legalName: string | null;
            legalRepresentative: string | null;
            registrationNumber: string | null;
            taxId: string | null;
            address: string | null;
            website: string | null;
            primaryRegionId: string | null;
            settings: import("@prisma/client/runtime/library").JsonValue;
            financialConfig: import("@prisma/client/runtime/library").JsonValue;
            complianceConfig: import("@prisma/client/runtime/library").JsonValue;
            isActive: boolean;
            establishedAt: Date | null;
        };
        parent: {
            code: string;
            id: string;
            name: string;
        } | null;
        code: string;
        id: string;
        createdAt: Date;
        tenantId: string | null;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        parentId: string | null;
        headId: string | null;
        order: number;
    }>;
    setHead(id: string, setHeadDto: SetHeadDto): Promise<{
        parent: {
            code: string;
            id: string;
            name: string;
        } | null;
    } & {
        code: string;
        id: string;
        createdAt: Date;
        tenantId: string | null;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        parentId: string | null;
        headId: string | null;
        order: number;
    }>;
    addMember(id: string, dto: AddDepartmentMemberDto): Promise<any>;
    addMembers(id: string, dto: AddDepartmentMembersDto): Promise<{
        message: string;
        count: number;
        members: any[];
    }>;
    removeMember(id: string, userId: string): Promise<{
        message: string;
        warning: string | undefined;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
}
