src/
├── action/ Action entity — metered activity that gets charged
├── bill/ Bill entity — aggregated invoice line item
├── charge/ Charge entity, ChargeModifier interface, modifier classes and addons
├── customer/ Customer entity — billable party with seller hierarchy
├── event/ Domain events (e.g., InstallmentWasStarted)
├── Exception/ Shared exceptions (CannotReassignException, etc.)
├── formula/ FormulaEngine — parses DSL strings into ChargeModifier objects
├── helpers/ Utility classes
├── Money/ Money value object, MultipliedMoney for sub-cent prices
├── order/ Order (action collection), Calculator (main billing pipeline)
├── plan/ Plan entity — tariff containing a collection of Prices
├── price/ Price implementations (SinglePrice, EnumPrice, RatePrice, ProgressivePrice)
├── product/ Product-related interfaces
├── sale/ Sale entity — subscription binding Customer → Target → Plan
├── statement/ Statement-related classes
├── target/ Target entity — object being billed
├── tools/ Aggregator (Charge → Bill grouping), Generalizer (Charge → Bill mapping)
├── type/ Type entity — classification of actions and charges
└── usage/ Usage tracking classes