import { Prisma, PrismaClient } from "@prisma/client";
export declare class PlanService {
    static listPublicPlans(prisma: PrismaClient): Promise<({
        planFeatures: ({
            feature: {
                id: string;
                description: string;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                isActive: boolean;
                code: string;
            };
        } & {
            planId: string;
            featureId: string;
        })[];
    } & {
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        price: number;
        type: import("@prisma/client").$Enums.PlanType;
        interval: import("@prisma/client").$Enums.BillingInterval;
        trialDays: number;
        maxUsers: number | null;
        maxProjects: number | null;
        features: Prisma.JsonValue | null;
        isActive: boolean;
    })[]>;
    static listPlans(prisma: PrismaClient): Promise<({
        planFeatures: ({
            feature: {
                id: string;
                description: string;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                isActive: boolean;
                code: string;
            };
        } & {
            planId: string;
            featureId: string;
        })[];
    } & {
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        price: number;
        type: import("@prisma/client").$Enums.PlanType;
        interval: import("@prisma/client").$Enums.BillingInterval;
        trialDays: number;
        maxUsers: number | null;
        maxProjects: number | null;
        features: Prisma.JsonValue | null;
        isActive: boolean;
    })[]>;
    static createPlan(prisma: PrismaClient, name: string, description: string, price: number, type: any, featureIds: string[]): Promise<{
        planFeatures: ({
            feature: {
                id: string;
                description: string;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                isActive: boolean;
                code: string;
            };
        } & {
            planId: string;
            featureId: string;
        })[];
    } & {
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        price: number;
        type: import("@prisma/client").$Enums.PlanType;
        interval: import("@prisma/client").$Enums.BillingInterval;
        trialDays: number;
        maxUsers: number | null;
        maxProjects: number | null;
        features: Prisma.JsonValue | null;
        isActive: boolean;
    }>;
    static updatePlan(prisma: PrismaClient, id: string, name: string, description: string, price: number, type: any, featureIds: string[]): Promise<{
        planFeatures: ({
            feature: {
                id: string;
                description: string;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                isActive: boolean;
                code: string;
            };
        } & {
            planId: string;
            featureId: string;
        })[];
    } & {
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        price: number;
        type: import("@prisma/client").$Enums.PlanType;
        interval: import("@prisma/client").$Enums.BillingInterval;
        trialDays: number;
        maxUsers: number | null;
        maxProjects: number | null;
        features: Prisma.JsonValue | null;
        isActive: boolean;
    }>;
    static deletePlan(prisma: PrismaClient, id: string): Promise<{
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        price: number;
        type: import("@prisma/client").$Enums.PlanType;
        interval: import("@prisma/client").$Enums.BillingInterval;
        trialDays: number;
        maxUsers: number | null;
        maxProjects: number | null;
        features: Prisma.JsonValue | null;
        isActive: boolean;
    }>;
}
//# sourceMappingURL=PlanService.d.ts.map