skailan-core
Version:
Servicio de autenticación y multitenancy para Skailan.
118 lines • 3.13 kB
TypeScript
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