LiquidityGauge: specific for each pool, measures the liquidity provided by users.
GaugeController: maintains a list of gauges and their respective weight. Allow users to vote for gauges.
Distributor: used to distribute $IDLE rewards across epochs. Epochs have a length of one week and the total amount of rewards to be distributed in a given epoch (or week) can be changed during the previous epoch (or week).
DistributorProxy: used by users to claim $IDLE rewards.
GaugeProxy: allows setting additional rewards on top of liquidity gauges deposits.