Skip to content

Commit 8ee0d04

Browse files
committed
Add HostIt fee basis points configuration
Introduces the ability to set HostIt fee basis points via an admin function in LibMarketplace, updates initialization to set the fee, adds related error and event definitions, and adjusts the IMarketplace interface for fee calculation. This enhances fee management flexibility for the marketplace.
1 parent 156233a commit 8ee0d04

5 files changed

Lines changed: 16 additions & 1 deletion

File tree

src/inits/HostItInit.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ contract HostItInit {
1414
LibDiamond._diamondStorage().supportedInterfaces[type(ITicket).interfaceId] = true;
1515
LibFactory._factoryStorage().ticketProxy = _ticketProxy;
1616
LibMarketplace._setFeeTokenAddresses(_feeTypes, _tokens);
17+
LibMarketplace._setHostItFeeBps(300);
1718
emit HostItInitialized();
1819
}
1920
}

src/interfaces/IMarketplace.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ interface IMarketplace {
3434

3535
function getHostItBalance(FeeType feeType) external view returns (uint256);
3636

37+
function calculateHostItFee(uint256 fee) external view returns (uint256);
38+
3739
//*//////////////////////////////////////////////////////////////////////////
3840
// PURE FUNCTIONS
3941
//////////////////////////////////////////////////////////////////////////*//
4042

41-
function calculateHostItFee(uint256 fee) external pure returns (uint256);
4243
function getRefundPeriod() external pure returns (uint256);
4344
}

src/libs/LibMarketplace.sol

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ library LibMarketplace {
181181
}
182182
}
183183

184+
//*//////////////////////////////////////////////////////////////////////////
185+
// ADMIN FUNCTIONS
186+
//////////////////////////////////////////////////////////////////////////*//
187+
184188
function _setFeeTokenAddresses(FeeType[] calldata _feeTypes, address[] calldata _tokenAddresses) internal {
185189
uint256 feeTypesLength = _feeTypes.length;
186190
if (feeTypesLength != _tokenAddresses.length && feeTypesLength > 0) revert InvalidFeeConfig();
@@ -191,6 +195,12 @@ library LibMarketplace {
191195
}
192196
}
193197

198+
function _setHostItFeeBps(uint16 _hostItFeePercentage) internal {
199+
if (_hostItFeePercentage > HOSTIT_FEE_BPS) revert InvalidHostItFeeBps();
200+
_marketplaceStorage().hostItFeeBps = _hostItFeePercentage;
201+
emit HostItFeeBpsSet(_hostItFeePercentage);
202+
}
203+
194204
//*//////////////////////////////////////////////////////////////////////////
195205
// VIEW FUNCTIONS
196206
//////////////////////////////////////////////////////////////////////////*//

src/libs/errors/MarketplaceErrors.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ error TicketPurchaseFailed(FeeType, uint256);
2020
error TicketAccountingMismatch();
2121
error TicketUnpauseFailed();
2222
error CreateERC6551AccountFailed();
23+
error InvalidHostItFeeBps();

src/libs/logs/MarketplaceLogs.sol

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {FeeType} from "@ticket-storage/MarketplaceStorage.sol";
55

66
event TicketFeeSet(uint64 indexed ticketId, FeeType indexed feeType, uint256 fee);
77

8+
event HostItFeeBpsSet(uint16 indexed hostItFeeBps);
9+
810
event TicketFeeAddressSet(FeeType indexed feeType, address indexed token);
911

1012
event TicketMinted(uint64 indexed ticketId, FeeType indexed feeType, uint256 fee, uint40 tokenId);

0 commit comments

Comments
 (0)