pricing4ts
Version:
 Pricing4TS is a TypeScript-based toolkit designed to enhance the server-side functionality of a pricing-driven SaaS by enabling the seamless integration of pricing plans into the application logic. T
73 lines (72 loc) • 2.93 kB
TypeScript
import { Pricing } from '../../types';
import { PricingOperation } from '../models/minizinc/minizinc';
import { CspSolution } from '../types';
export interface PricingAnalytics {
numberOfFeatures: number;
numberOfUsageLimits: number;
numberOfPlans: number;
numberOfAddOns: number;
configurationSpaceSize: number;
minSubscriptionPrice: number;
maxSubscriptionPrice: number;
}
export interface AnalyticsOptions {
printDzn: boolean;
}
export default class PricingService {
private readonly pricing;
constructor(pricing: Pricing);
runPricingOperation(pricingOperation: PricingOperation): Promise<import("minizinc").SolveResult & {
allSolutions: CspSolution[] | undefined;
}>;
getConfigurationSpace(): Promise<{
selectedPlan: string;
selectedAddons: string[];
subscriptionFeatures: string[];
subscriptionUsageLimits: string[];
subscriptionCost: number;
}[]>;
getAnalytics(analyticsOptions?: AnalyticsOptions): Promise<{
numberOfFeatures: number;
numberOfInformationFeatures: number;
numberOfIntegrationFeatures: number;
numberOfIntegrationApiFeatures: number;
numberOfIntegrationExtensionFeatures: number;
numberOfIntegrationIdentityProviderFeatures: number;
numberOfIntegrationWebSaaSFeatures: number;
numberOfIntegrationMarketplaceFeatures: number;
numberOfIntegrationExternalDeviceFeatures: number;
numberOfDomainFeatures: number;
numberOfAutomationFeatures: number;
numberOfBotAutomationFeatures: number;
numberOfFilteringAutomationFeatures: number;
numberOfTrackingAutomationFeatures: number;
numberOfTaskAutomationFeatures: number;
numberOfManagementFeatures: number;
numberOfGuaranteeFeatures: number;
numberOfSupportFeatures: number;
numberOfPaymentFeatures: number;
numberOfUsageLimits: number;
numberOfRenewableUsageLimits: number;
numberOfNonRenewableUsageLimits: number;
numberOfPlans: number;
numberOfFreePlans: number;
numberOfPaidPlans: number;
numberOfAddOns: number;
numberOfReplacementAddons: number;
numberOfExtensionAddons: number;
configurationSpaceSize: number;
minSubscriptionPrice: number;
maxSubscriptionPrice: number;
}>;
_getConfigurationSpace(dznPricing: string): Promise<import("minizinc").SolveResult & {
allSolutions: CspSolution[] | undefined;
}>;
_getMinSubscriptionPrice(dznPricing: string): Promise<import("minizinc").SolveResult & {
allSolutions: CspSolution[] | undefined;
}>;
_getMaxSubscriptionPrice(dznPricing: string): Promise<import("minizinc").SolveResult & {
allSolutions: CspSolution[] | undefined;
}>;
_computeConfigurationPrice(minizincSolution: Record<string, any>): number;
}