Overview
BurnableTokenizedShareManager extends TokenizedShareManager with two ERC20 burn functions, in the style of OpenZeppelin’s ERC20Burnable. Holders can destroy their own vault shares, or shares they have an allowance for, without going through a redeem queue.
Everything else, including minting, locking, whitelists, lockups and transfer rules, is inherited unchanged from TokenizedShareManager and ShareManager.
In the standard deployment, the share manager factory registers it as version 2, after TokenizedShareManager (version 0) and BasicShareManager (version 1).
Functions
burn(uint256 value)
Burns value shares from the caller’s balance.
burnFrom(address account, uint256 value)
Spends value of the caller’s ERC20 allowance from account, then burns value shares from account.
Both functions are public and need no vault role. They are separate from the queue-only burn(address account, uint256 value) inherited from ShareManager, which redeem queues use.
Checks on burn
Burns go through the token’s_update hook, so the usual ShareManager.updateChecks(from, address(0)) rules apply:
- Reverts with
GlobalLockupNotExpiredwhile the global lockup is active - Reverts with
Blacklistedif the holder is blacklisted - Reverts with
BurnPausedif the burn pause flag is set
TokenizedShareManager claims any shares the holder has waiting in deposit queues, as it does for every balance change.
Effect on the vault
Burning shares with these functions does not return any assets to the holder. The vault’s assets stay in place while the share supply shrinks, so the value of the burned shares is shared among the remaining holders from the next oracle report. These public burns do not emit theShareManager Burn event. Indexers see a standard ERC20 Transfer(account, address(0), value) event.
When to use it
UseBurnableTokenizedShareManager when shares must be destroyable outside the redemption flow. Examples are buyback-and-burn programs, or integrations that expect an ERC20Burnable-compatible token. If you do not need public burning, use TokenizedShareManager.