import { PrismaService } from "../../infra/prisma/prisma.service";
import { BroadcastNotificationDto } from "./dto/broadcast-notification.dto";
import { CreateTenantDto } from "./dto/create-tenant.dto";
import { TenantStatus } from "@prisma/client";
export declare class SaaSAdminService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    findAllTenants(): Promise<{
        id: string;
        legalName: string;
        tradeName: string;
        document: string;
        email: string;
        phone: string | null;
        status: import(".prisma/client").$Enums.TenantStatus;
        plan: string;
        monthlyFee: number;
        dueDay: number;
        lastPaymentStatus: string;
        userCount: number;
        users: {
            id: string;
            email: string;
            name: string;
            role: import(".prisma/client").$Enums.UserRole;
            active: boolean;
        }[];
        createdAt: string;
        updatedAt: string;
    }[]>;
    getSaaSFinancialSummary(): Promise<{
        totalTenants: number;
        activeTenants: number;
        suspendedTenants: number;
        trialTenants: number;
        mrr: number;
        arr: number;
        overdueRevenue: number;
    }>;
    createTenant(dto: CreateTenantDto): Promise<{
        company: {
            id: string;
            legalName: string;
            tradeName: string;
            document: string;
            email: string;
            phone: string | null;
            status: import(".prisma/client").$Enums.TenantStatus;
            plan: string;
            monthlyFee: import("@prisma/client/runtime/library").Decimal;
            dueDay: number;
            lastPaymentStatus: string;
            createdAt: Date;
            updatedAt: Date;
        };
        user: {
            id: string;
            email: string;
            createdAt: Date;
            updatedAt: Date;
            companyId: string;
            name: string;
            passwordHash: string;
            role: import(".prisma/client").$Enums.UserRole;
            active: boolean;
            avatarUrl: string | null;
        };
    }>;
    toggleTenantStatus(id: string, status: TenantStatus): Promise<{
        id: string;
        legalName: string;
        tradeName: string;
        document: string;
        email: string;
        phone: string | null;
        status: import(".prisma/client").$Enums.TenantStatus;
        plan: string;
        monthlyFee: import("@prisma/client/runtime/library").Decimal;
        dueDay: number;
        lastPaymentStatus: string;
        createdAt: Date;
        updatedAt: Date;
    }>;
    updateTenantBilling(id: string, data: {
        monthlyFee?: number;
        dueDay?: number;
        lastPaymentStatus?: string;
    }): Promise<{
        id: string;
        legalName: string;
        tradeName: string;
        document: string;
        email: string;
        phone: string | null;
        status: import(".prisma/client").$Enums.TenantStatus;
        plan: string;
        monthlyFee: import("@prisma/client/runtime/library").Decimal;
        dueDay: number;
        lastPaymentStatus: string;
        createdAt: Date;
        updatedAt: Date;
    }>;
    createBroadcastNotification(dto: BroadcastNotificationDto): Promise<{
        id: string;
        createdAt: Date;
        companyId: string | null;
        active: boolean;
        title: string;
        message: string;
        type: string;
        expiresAt: Date | null;
    }>;
    getActiveNotifications(companyId?: string): Promise<{
        id: string;
        createdAt: Date;
        companyId: string | null;
        active: boolean;
        title: string;
        message: string;
        type: string;
        expiresAt: Date | null;
    }[]>;
    findSaaSAdmins(): Promise<{
        id: string;
        email: string;
        createdAt: Date;
        name: string;
        role: import(".prisma/client").$Enums.UserRole;
        active: boolean;
    }[]>;
    createSaaSAdmin(data: {
        name: string;
        email: string;
    }): Promise<{
        id: string;
        email: string;
        createdAt: Date;
        name: string;
        role: import(".prisma/client").$Enums.UserRole;
        active: boolean;
    }>;
    deleteSaaSAdmin(id: string): Promise<{
        id: string;
        email: string;
        createdAt: Date;
        updatedAt: Date;
        companyId: string;
        name: string;
        passwordHash: string;
        role: import(".prisma/client").$Enums.UserRole;
        active: boolean;
        avatarUrl: string | null;
    }>;
    updateSaaSAdmin(id: string, data: {
        name?: string;
        email?: string;
        password?: string;
    }): Promise<{
        id: string;
        email: string;
        createdAt: Date;
        name: string;
        role: import(".prisma/client").$Enums.UserRole;
        active: boolean;
    }>;
    resetProductionDatabase(): Promise<{
        message: string;
    }>;
}
