11``` diff
22diff --git a/src/v0.8/ccip/pools/BurnMintTokenPool.sol b/src/v0.8/ccip/pools/GHO/UpgradeableBurnMintTokenPool.sol
3- index 9af0f22f4c..a5cecc0430 100644
3+ index 9af0f22f4c..f19106fd4d 100644
44--- a/src/v0.8/ccip/pools/BurnMintTokenPool.sol
55+++ b/src/v0.8/ccip/pools/GHO/UpgradeableBurnMintTokenPool.sol
6- @@ -1,28 +1,90 @@
6+ @@ -1,28 +1,101 @@
77 // SPDX-License-Identifier: BUSL-1.1
88- pragma solidity 0.8.19;
99+ pragma solidity ^0.8.0;
@@ -28,6 +28,7 @@ index 9af0f22f4c..a5cecc0430 100644
2828+ /// - Implementation of Initializable to allow upgrades
2929+ /// - Move of allowlist and router definition to initialization stage
3030+ /// - Inclusion of rate limit admin who may configure rate limits in addition to owner
31+ + /// - Addition of authorized function to to directly burn liquidity, thereby reducing the facilitator's bucket level.
3132+ /// - Modifications from inherited contract (see contract for more details):
3233+ /// - UpgradeableTokenPool: Modify `onlyOnRamp` & `onlyOffRamp` modifier to accept transactions from ProxyPool
3334+ contract UpgradeableBurnMintTokenPool is Initializable, UpgradeableBurnMintTokenPoolAbstract, ITypeAndVersion {
@@ -106,6 +107,16 @@ index 9af0f22f4c..a5cecc0430 100644
106107+ _setRateLimitConfig(remoteChainSelector, outboundConfig, inboundConfig);
107108+ }
108109+
110+ + /// @notice Burn an amount of tokens with no additional logic.
111+ + /// @dev This GHO-specific functionality is designed for migrating bucket levels between
112+ + /// facilitators. The new pool is expected to mint amount of tokens, while the old pool
113+ + /// burns an equivalent amount. This ensures the facilitator can be offboarded, as all
114+ + /// liquidity minted by it must be fully burned
115+ + /// @param amount The amount of tokens to burn.
116+ + function directBurn(uint256 amount) external onlyOwner {
117+ + _burn(amount);
118+ + }
119+ +
109120+ /// @inheritdoc UpgradeableBurnMintTokenPoolAbstract
110121 function _burn(uint256 amount) internal virtual override {
111122 IBurnMintERC20(address(i_token)).burn(amount);
0 commit comments