Question about balances management in contracts

Hi, this is more of a general question about OpenZeppelin contracts/interfaces but I thought it might fit better here.
Are there any interface/contracts implementing token balances management ? (getters, handlers for in/out transfers to addresses, ...)
This is not a hard task at all, I know how to handle this, I'm more looking to save space in contracts.
I hope this is not too much off topic.

Thanks !

Pretty much every token contract does that, for example, the ERC20 token contract.

Thanks for the answer.
Yes, I saw that but I wasn't sure this was a good idea to use an ERC20 implementation for a contract that won't be a token at all...
I guess I can, right ? No problem with that ?

Finally had some time to look at it, if I look at the ERC20 interface it can manage address balances but for itself only. I wish to manage multiple token balances for multiple addresses. I can't see how to do that with a token contract. Is there something else that could do that ?