UNPKG

skailan-core

Version:

Servicio de autenticación y multitenancy para Skailan.

118 lines 3.13 kB
import { PrismaClient, PlanType, BillingInterval } from "@prisma/client"; export interface CreatePlanRequest { name: string; description: string; price: number; type: PlanType; interval: BillingInterval; trialDays: number; maxUsers?: number; maxProjects?: number; features?: any; isActive?: boolean; } export interface UpdatePlanRequest { name?: string; description?: string; price?: number; type?: PlanType; interval?: BillingInterval; trialDays?: number; maxUsers?: number; maxProjects?: number; features?: any; isActive?: boolean; } export interface PlanWithFeatures { id: string; name: string; description: string; price: number; type: PlanType; interval: BillingInterval; trialDays: number; maxUsers?: number; maxProjects?: number; features?: any; isActive: boolean; createdAt: Date; updatedAt: Date; planFeatures: any[]; } export interface FeatureRequest { name: string; description: string; code: string; isActive?: boolean; } export declare class ProductService { private static instance; private prisma; private constructor(); static getInstance(prisma: PrismaClient): ProductService; /** * Crea un nuevo plan */ createPlan(request: CreatePlanRequest): Promise<PlanWithFeatures>; /** * Actualiza un plan existente */ updatePlan(planId: string, request: UpdatePlanRequest): Promise<PlanWithFeatures>; /** * Obtiene un plan por ID */ getPlan(planId: string): Promise<PlanWithFeatures | null>; /** * Lista todos los planes activos */ listActivePlans(): Promise<PlanWithFeatures[]>; /** * Lista todos los planes (activos e inactivos) */ listAllPlans(): Promise<PlanWithFeatures[]>; /** * Elimina un plan (soft delete) */ deletePlan(planId: string): Promise<void>; /** * Crea una nueva característica */ createFeature(request: FeatureRequest): Promise<any>; /** * Asigna características a un plan */ assignFeaturesToPlan(planId: string, featureIds: string[]): Promise<void>; /** * Obtiene las características de un plan */ getPlanFeatures(planId: string): Promise<any[]>; /** * Lista todas las características activas */ listActiveFeatures(): Promise<any[]>; /** * Obtiene estadísticas de planes */ getPlanStats(): Promise<any>; /** * Verifica si un plan tiene una característica específica */ planHasFeature(planId: string, featureCode: string): Promise<boolean>; /** * Obtiene el plan gratuito por defecto */ getFreePlan(): Promise<PlanWithFeatures | null>; /** * Valida la solicitud de creación de plan */ private validateCreatePlanRequest; /** * Valida la solicitud de actualización de plan */ private validateUpdatePlanRequest; /** * Valida la solicitud de característica */ private validateFeatureRequest; } //# sourceMappingURL=ProductService.d.ts.map