interface IAgToken {
	/// @notice Burns `amount` of agToken on behalf of another account without redeeming collateral back
	/// @param account Account to burn on behalf of
	/// @param amount Amount to burn
	/// @param poolManager Reference to the `PoolManager` contract for which the `stocksUsers` will
	/// need to be updated
	/// @dev When calling this function, people should specify the `poolManager` for which they want to decrease
	/// the `stocksUsers`: this a way for the protocol to maintain healthy accounting variables
	/// @dev This function is for instance to be used by governance to burn the tokens accumulated by the `BondingCurve`
	/// contract
	function burnFromNoRedeem(
		address account,
		uint256 amount,
		address poolManager
	) external;

	/// @notice Destroys `amount` token from the caller without giving collateral back
	/// @param amount Amount to burn
	/// @param poolManager Reference to the `PoolManager` contract for which the `stocksUsers` will need to be updated
	function burnNoRedeem(uint256 amount, address poolManager) external;
}
/// @notice Interface for agToken, that is to say Angle's stablecoins
/// @dev This contract is used to create and handle the stablecoins of Angle protocol
/// @dev Only the `StableMaster` contract can mint or burn agTokens
/// @dev It is still possible for any address to burn its agTokens without redeeming collateral in exchange
/// @dev agTokens are classical ERC-20 tokens, so it is still possible to `approve` an address, `transfer` or
/// `transferFrom` the tokens
function burnNoRedeem(uint256 amount, address poolManager) external;

/// @notice Destroys `amount` token from the caller without giving collateral back
/// @param amount Amount to burn
/// @param poolManager Reference to the `PoolManager` contract for which the `stocksUsers` will need to be updated