import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { CreateRegionDto, UpdateRegionDto, RegionQueryDto } from './dto/region.dto';
export declare class RegionsService {
    private prisma;
    constructor(prisma: PrismaService);
    create(createRegionDto: CreateRegionDto): Promise<{
        currency: string | null;
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        order: number;
        nameEn: string | null;
        nameZh: string | null;
        isActive: boolean;
        timezone: string | null;
        locale: string | null;
    }>;
    findAll(query?: RegionQueryDto): Promise<{
        organizationCount: number;
        defaultOrganization: any;
        organizationRegions: ({
            organization: {
                code: string;
                id: string;
                name: string;
            };
        } & {
            id: string;
            createdAt: Date;
            organizationId: string;
            regionId: string;
            isDefault: boolean;
        })[];
        currency: string | null;
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        order: number;
        nameEn: string | null;
        nameZh: string | null;
        isActive: boolean;
        timezone: string | null;
        locale: string | null;
    }[]>;
    findActive(): Promise<{
        currency: string | null;
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        order: number;
        nameEn: string | null;
        nameZh: string | null;
        isActive: boolean;
        timezone: string | null;
        locale: string | null;
    }[]>;
    findOne(id: string): Promise<{
        organizations: any;
        organizationRegions: ({
            organization: {
                code: string;
                id: string;
                name: string;
            };
        } & {
            id: string;
            createdAt: Date;
            organizationId: string;
            regionId: string;
            isDefault: boolean;
        })[];
        primaryOrganizations: {
            code: string;
            id: string;
            name: string;
        }[];
        currency: string | null;
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        order: number;
        nameEn: string | null;
        nameZh: string | null;
        isActive: boolean;
        timezone: string | null;
        locale: string | null;
    }>;
    findByCode(code: string): Promise<{
        currency: string | null;
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        order: number;
        nameEn: string | null;
        nameZh: string | null;
        isActive: boolean;
        timezone: string | null;
        locale: string | null;
    }>;
    update(id: string, updateRegionDto: UpdateRegionDto): Promise<{
        currency: string | null;
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        order: number;
        nameEn: string | null;
        nameZh: string | null;
        isActive: boolean;
        timezone: string | null;
        locale: string | null;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    getStats(id: string): Promise<{
        organizationCount: number;
        departmentCount: number;
        userCount: number;
    }>;
    setDefaultOrganization(regionId: string, organizationId: string | null): Promise<{
        message: string;
        regionId: string;
        organizationId: string;
    } | {
        message: string;
        regionId: string;
        organizationId: null;
    }>;
}
