Skip to main content

pcm_engine/
lib.rs

1//! Product Catalog Engine (PCM) Framework
2//!
3//! The Product Catalog Engine is the heart of the BSS, providing business agility
4//! through efficient management of pricing, eligibility, and bundling rules.
5//!
6//! This framework abstracts the complexity of:
7//! - Pricing rules and calculations
8//! - Product eligibility validation
9//! - Bundling and product relationships
10//! - Catalog versioning and lifecycle management
11//!
12//! Built with Rust's safety guarantees to prevent costly billing errors.
13
14pub mod bundling;
15pub mod complex_pricing;
16pub mod eligibility;
17pub mod engine;
18pub mod pricing;
19pub mod rules;
20pub mod versioning;
21
22pub use bundling::*;
23pub use eligibility::*;
24pub use engine::{CatalogEngine, QualifyAndPriceResult};
25// Re-export pricing types except TimePeriod to avoid conflict
26pub use pricing::{
27    calculate_best_price, calculate_final_price, DiscountCondition, DiscountRule, DiscountType,
28    Money, PriceType, PricingConditionOperator, PricingContext, PricingRule,
29    TimePeriod as PricingTimePeriod,
30};
31pub use rules::{
32    evaluate_rule, ActionType, CatalogRule, LogicalOperator, RuleAction, RuleCondition,
33    RuleContext, RuleOperator, RuleResult, RuleType, TimePeriod as RuleTimePeriod,
34};
35
36// Re-export complex pricing types with specific names to avoid conflicts
37pub use complex_pricing::{
38    calculate_complex_price, AdjustmentType, BillingCycle, BundlePricing, CancellationPolicy,
39    ComplexPricingModel, ComponentPrice, DynamicPricing, FactorType, PriceAdjustmentRule,
40    PricingContext as ComplexPricingContext, PricingFactor, PricingTier, SubscriptionPricing,
41    TieredPricing, VolumeDiscount, VolumePricing,
42};
43
44// Re-export versioning types
45pub use versioning::{CatalogSnapshot, CatalogVersion, VersionDiff, VersionManager};