Conceptually, the treasury serves as both the central storage for all interBTC and the interface though which to manage interBTC amount. It is implemented through the Currency pallet.
Transfer: A user sends an amount of interBTC to another user by calling the transfer function.
Issue: The issue module calls into the treasury when an issue request is completed (via executeIssue) and the user has provided a valid proof that the required amount of BTC was sent to the correct vault. The issue module calls the mint_to function to create interBTC.
Redeem: The redeem protocol requires two calls to the treasury module. First, a user requests a redeem via the requestRedeem function. This invokes a call to the lock_on function that locks the requested amount of tokens for this user. Second, when a redeem request is completed (via executeRedeem) and the vault has provided a valid proof that it transferred the required amount of BTC to the correct user, the redeem module calls the burn_from function to destroy the previously locked interBTC.