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;
25// Re-export pricing types except TimePeriod to avoid conflict
26pub use pricing::{
27    calculate_final_price, DiscountCondition, DiscountRule, DiscountType, Money, PriceType,
28    PricingConditionOperator, PricingContext, PricingRule,
29};
30pub use rules::{
31    evaluate_rule, ActionType, CatalogRule, LogicalOperator, RuleAction, RuleCondition,
32    RuleContext, RuleOperator, RuleResult, RuleType, TimePeriod as RuleTimePeriod,
33};
34
35// Re-export complex pricing types with specific names to avoid conflicts
36pub use complex_pricing::{
37    calculate_complex_price, AdjustmentType, BillingCycle, BundlePricing, CancellationPolicy,
38    ComplexPricingModel, ComponentPrice, DynamicPricing, FactorType, PriceAdjustmentRule,
39    PricingContext as ComplexPricingContext, PricingFactor, PricingTier, SubscriptionPricing,
40    TieredPricing, VolumeDiscount, VolumePricing,
41};
42
43// Re-export versioning types
44pub use versioning::{CatalogVersion, VersionDiff, VersionManager};