import { PrismaClient } from '@prisma/client';
export interface TrialStatus {
    isActive: boolean;
    daysRemaining: number;
    endDate: Date | null;
    isExpired: boolean;
    isWarningSent: boolean;
    canExtend: boolean;
}
export interface TrialExtensionRequest {
    organizationId: string;
    daysToExtend: number;
    reason: string;
    requestedBy: string;
}
export declare class TrialService {
    private static instance;
    private prisma;
    private constructor();
    static getInstance(prisma: PrismaClient): TrialService;
    /**
     * Inicializa los trabajos cron para monitorear trials
     */
    private initializeCronJobs;
    /**
     * Inicia el trial para una organización
     */
    startTrial(organizationId: string, trialDays?: number): Promise<void>;
    /**
     * Obtiene el estado actual del trial
     */
    getTrialStatus(organizationId: string): Promise<TrialStatus>;
    /**
     * Extiende el trial de una organización
     */
    extendTrial(request: TrialExtensionRequest): Promise<void>;
    /**
     * Convierte un trial a suscripción pagada
     */
    convertTrialToPaid(organizationId: string, planId: string): Promise<void>;
    /**
     * Verifica y bloquea organizaciones con trial expirado
     */
    blockExpiredTrials(): Promise<void>;
    /**
     * Envía advertencias a organizaciones próximas a expirar
     */
    sendTrialWarnings(): Promise<void>;
    /**
     * Verifica trials expirados y los marca como expirados
     */
    checkExpiredTrials(): Promise<void>;
    /**
     * Registra una acción del trial
     */
    private logTrialAction;
    /**
     * Obtiene el historial de acciones del trial
     */
    getTrialHistory(organizationId: string): Promise<any[]>;
    /**
     * Verifica si una organización puede acceder al sistema
     */
    canAccess(organizationId: string): Promise<boolean>;
    /**
     * Obtiene estadísticas de trials
     */
    getTrialStats(): Promise<any>;
}
//# sourceMappingURL=TrialService.d.ts.map