Fees are distributed to veANGLE holders via the FeeDistributor contract. In the case of Angle, fees are distributed under the form of sanUSDC_EUR tokens.
This contract is a full fork from Curve implementation available here.
Thanks to this contract, fees are distributed weekly. The porportional amount of fees that each user is to receive is calculated based on their veANGLE balance relative to the total veANGLE supply. This amount is calculated at the start of the week.
The actual distribution occurs at the end of the week based on the fees that were collected. As such, a user that creates a new vote-lock should expect to receive their first fee payout at the end of the following epoch week.
It's worth noting that this contract is not in charge of the conversion of the surplus of the protocol to the token it distributes. In practice, a FeeDistributor will receive the token obtained thanks to a SurplusConverter and then just handle the distribution of it.
2. Contract Details
For more technical details about the contract, please refer to Curve official documentation:
Curve DAO: Fee Collection and Distribution — Curve 1.0.0 documentation