mirror of
https://github.com/lens-protocol/core.git
synced 2026-01-09 14:18:04 -05:00
misc: updated naming, made ownable initializable
This commit is contained in:
@@ -4,9 +4,8 @@ pragma solidity ^0.8.10;
|
||||
import {BaseFeeCollectModule} from 'contracts/modules/act/collect/base/BaseFeeCollectModule.sol';
|
||||
import {BaseFeeCollectModuleInitData, BaseProfilePublicationData} from 'contracts/modules/interfaces/IBaseFeeCollectModule.sol';
|
||||
import {ICollectModule} from 'contracts/modules/interfaces/ICollectModule.sol';
|
||||
import {LensModuleMetadata} from 'contracts/modules/LensModuleMetadata.sol';
|
||||
import {LensModuleMetadataInitializable} from 'contracts/modules/LensModuleMetadataInitializable.sol';
|
||||
import {LensModule} from 'contracts/modules/LensModule.sol';
|
||||
import {ImmutableOwnable} from 'contracts/misc/ImmutableOwnable.sol';
|
||||
import {ModuleTypes} from 'contracts/modules/libraries/constants/ModuleTypes.sol';
|
||||
import {ILensHub} from 'contracts/interfaces/ILensHub.sol';
|
||||
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||
@@ -22,7 +21,7 @@ struct ProtocolSharedRevenueMinFeeMintModuleInitData {
|
||||
uint16 referralFee;
|
||||
bool followerOnly;
|
||||
uint72 endTimestamp;
|
||||
address creatorFrontend;
|
||||
address creatorClient;
|
||||
}
|
||||
|
||||
struct ProtocolSharedRevenueMinFeeMintModulePublicationData {
|
||||
@@ -34,15 +33,15 @@ struct ProtocolSharedRevenueMinFeeMintModulePublicationData {
|
||||
uint16 referralFee;
|
||||
bool followerOnly;
|
||||
uint72 endTimestamp;
|
||||
address creatorFrontend;
|
||||
address creatorClient;
|
||||
}
|
||||
|
||||
// Splits (in BPS)
|
||||
struct ProtocolSharedRevenueDistribution {
|
||||
uint16 creatorSplit;
|
||||
uint16 protocolSplit;
|
||||
uint16 creatorFrontendSplit;
|
||||
uint16 executorFrontendSplit;
|
||||
uint16 creatorClientSplit;
|
||||
uint16 executorClientSplit;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -55,22 +54,22 @@ struct ProtocolSharedRevenueDistribution {
|
||||
* You can build your own collect modules by inheriting from BaseFeeCollectModule and adding your
|
||||
* functionality along with getPublicationData function.
|
||||
*/
|
||||
contract ProtocolSharedRevenueMinFeeMintModule is BaseFeeCollectModule, LensModuleMetadata {
|
||||
contract ProtocolSharedRevenueMinFeeMintModule is BaseFeeCollectModule, LensModuleMetadataInitializable {
|
||||
using SafeERC20 for IERC20;
|
||||
|
||||
address mintFeeToken;
|
||||
uint256 mintFeeAmount;
|
||||
ProtocolSharedRevenueDistribution protocolSharedRevenueDistribution;
|
||||
|
||||
mapping(uint256 profileId => mapping(uint256 pubId => address creatorFrontend))
|
||||
internal _creatorFrontendByPublicationByProfile;
|
||||
mapping(uint256 profileId => mapping(uint256 pubId => address creatorClient))
|
||||
internal _creatorClientByPublicationByProfile;
|
||||
|
||||
constructor(
|
||||
address hub,
|
||||
address actionModule,
|
||||
address moduleRegistry,
|
||||
address moduleOwner
|
||||
) BaseFeeCollectModule(hub, actionModule, moduleRegistry) LensModuleMetadata(moduleOwner) {}
|
||||
) BaseFeeCollectModule(hub, actionModule, moduleRegistry) LensModuleMetadataInitializable(moduleOwner) {}
|
||||
|
||||
/**
|
||||
* @inheritdoc ICollectModule
|
||||
@@ -107,8 +106,8 @@ contract ProtocolSharedRevenueMinFeeMintModule is BaseFeeCollectModule, LensModu
|
||||
recipient: initData.recipient
|
||||
});
|
||||
|
||||
if (initData.creatorFrontend != address(0)) {
|
||||
_creatorFrontendByPublicationByProfile[profileId][pubId] = initData.creatorFrontend;
|
||||
if (initData.creatorClient != address(0)) {
|
||||
_creatorClientByPublicationByProfile[profileId][pubId] = initData.creatorClient;
|
||||
}
|
||||
|
||||
_validateBaseInitData(baseInitData);
|
||||
@@ -151,36 +150,34 @@ contract ProtocolSharedRevenueMinFeeMintModule is BaseFeeCollectModule, LensModu
|
||||
address protocol = ILensHub(HUB).getTreasury();
|
||||
uint256 protocolAmount = (mintFeeAmount * protocolSharedRevenueDistribution.protocolSplit) / 10000;
|
||||
|
||||
address creatorFrontend = _creatorFrontendByPublicationByProfile[
|
||||
address creatorClient = _creatorClientByPublicationByProfile[
|
||||
processCollectParams.publicationCollectedProfileId
|
||||
][processCollectParams.publicationCollectedId];
|
||||
uint256 creatorFrontendAmount = (mintFeeAmount * protocolSharedRevenueDistribution.creatorFrontendSplit) /
|
||||
10000;
|
||||
uint256 creatorClientAmount = (mintFeeAmount * protocolSharedRevenueDistribution.creatorClientSplit) / 10000;
|
||||
|
||||
if (creatorFrontend != address(0)) {
|
||||
if (creatorClient != address(0)) {
|
||||
IERC20(mintFeeToken).safeTransferFrom(
|
||||
processCollectParams.transactionExecutor,
|
||||
creatorFrontend,
|
||||
creatorFrontendAmount
|
||||
creatorClient,
|
||||
creatorClientAmount
|
||||
);
|
||||
} else {
|
||||
// If there's no creatorFrontend specified - we give that amount to the publication creator
|
||||
creatorAmount += creatorFrontendAmount;
|
||||
// If there's no creatorClient specified - we give that amount to the publication creator
|
||||
creatorAmount += creatorClientAmount;
|
||||
}
|
||||
|
||||
(, , address executorFrontend) = abi.decode(processCollectParams.data, (address, uint256, address));
|
||||
uint256 executorFrontendAmount = (mintFeeAmount * protocolSharedRevenueDistribution.executorFrontendSplit) /
|
||||
10000;
|
||||
(, , address executorClient) = abi.decode(processCollectParams.data, (address, uint256, address));
|
||||
uint256 executorClientAmount = (mintFeeAmount * protocolSharedRevenueDistribution.executorClientSplit) / 10000;
|
||||
|
||||
if (executorFrontend != address(0)) {
|
||||
if (executorClient != address(0)) {
|
||||
IERC20(mintFeeToken).safeTransferFrom(
|
||||
processCollectParams.transactionExecutor,
|
||||
executorFrontend,
|
||||
executorFrontendAmount
|
||||
executorClient,
|
||||
executorClientAmount
|
||||
);
|
||||
} else {
|
||||
// If there's no creatorFrontend specified - we give that amount to the publication creator
|
||||
creatorAmount += executorFrontendAmount;
|
||||
// If there's no creatorClient specified - we give that amount to the publication creator
|
||||
creatorAmount += executorClientAmount;
|
||||
}
|
||||
|
||||
IERC20(mintFeeToken).safeTransferFrom(processCollectParams.transactionExecutor, creator, creatorAmount);
|
||||
@@ -210,8 +207,8 @@ contract ProtocolSharedRevenueMinFeeMintModule is BaseFeeCollectModule, LensModu
|
||||
if (
|
||||
distribution.creatorSplit +
|
||||
distribution.protocolSplit +
|
||||
distribution.creatorFrontendSplit +
|
||||
distribution.executorFrontendSplit !=
|
||||
distribution.creatorClientSplit +
|
||||
distribution.executorClientSplit !=
|
||||
BPS_MAX
|
||||
) {
|
||||
revert Errors.InvalidParams();
|
||||
@@ -243,7 +240,7 @@ contract ProtocolSharedRevenueMinFeeMintModule is BaseFeeCollectModule, LensModu
|
||||
uint256 pubId
|
||||
) external view returns (ProtocolSharedRevenueMinFeeMintModulePublicationData memory) {
|
||||
BaseProfilePublicationData memory baseData = getBasePublicationData(profileId, pubId);
|
||||
address creatorFrontend = _creatorFrontendByPublicationByProfile[profileId][pubId];
|
||||
address creatorClient = _creatorClientByPublicationByProfile[profileId][pubId];
|
||||
return
|
||||
ProtocolSharedRevenueMinFeeMintModulePublicationData({
|
||||
amount: baseData.amount,
|
||||
@@ -254,7 +251,7 @@ contract ProtocolSharedRevenueMinFeeMintModule is BaseFeeCollectModule, LensModu
|
||||
referralFee: baseData.referralFee,
|
||||
followerOnly: baseData.followerOnly,
|
||||
endTimestamp: baseData.endTimestamp,
|
||||
creatorFrontend: creatorFrontend
|
||||
creatorClient: creatorClient
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ contract ProtocolSharedRevenueMinFeeMintModuleBase is BaseFeeCollectModuleBase {
|
||||
|
||||
uint16 constant BPS_MAX = 10000;
|
||||
|
||||
address creatorFrontendAddress = makeAddr('CREATOR_FRONTEND');
|
||||
address executorFrontendAddress = makeAddr('EXECUTOR_FRONTEND');
|
||||
address creatorClientAddress = makeAddr('CREATOR_CLIENT');
|
||||
address executorClientAddress = makeAddr('EXECUTOR_CLIENT');
|
||||
|
||||
MockCurrency bonsai;
|
||||
uint256 mintFee = 10 ether;
|
||||
@@ -55,8 +55,8 @@ contract ProtocolSharedRevenueMinFeeMintModuleBase is BaseFeeCollectModuleBase {
|
||||
ProtocolSharedRevenueDistribution({
|
||||
creatorSplit: 5000,
|
||||
protocolSplit: 2000,
|
||||
creatorFrontendSplit: 1500,
|
||||
executorFrontendSplit: 1500
|
||||
creatorClientSplit: 1500,
|
||||
executorClientSplit: 1500
|
||||
})
|
||||
);
|
||||
vm.stopPrank();
|
||||
@@ -70,7 +70,7 @@ contract ProtocolSharedRevenueMinFeeMintModuleBase is BaseFeeCollectModuleBase {
|
||||
mintFeeModuleExampleInitData.followerOnly = exampleInitData.followerOnly;
|
||||
mintFeeModuleExampleInitData.endTimestamp = exampleInitData.endTimestamp;
|
||||
mintFeeModuleExampleInitData.recipient = exampleInitData.recipient;
|
||||
mintFeeModuleExampleInitData.creatorFrontend = creatorFrontendAddress;
|
||||
mintFeeModuleExampleInitData.creatorClient = creatorClientAddress;
|
||||
|
||||
return abi.encode(mintFeeModuleExampleInitData);
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ contract ProtocolSharedRevenueMinFeeMintModule_Initialization is
|
||||
uint72 currentTimestamp,
|
||||
uint72 endTimestamp,
|
||||
address recipient,
|
||||
address creatorFrontend
|
||||
address creatorClient
|
||||
) public {
|
||||
vm.assume(profileId != 0);
|
||||
vm.assume(pubId != 0);
|
||||
@@ -102,7 +102,7 @@ contract ProtocolSharedRevenueMinFeeMintModule_Initialization is
|
||||
mintFeeModuleExampleInitData.followerOnly = followerOnly;
|
||||
mintFeeModuleExampleInitData.endTimestamp = endTimestamp;
|
||||
mintFeeModuleExampleInitData.recipient = recipient;
|
||||
mintFeeModuleExampleInitData.creatorFrontend = creatorFrontend;
|
||||
mintFeeModuleExampleInitData.creatorClient = creatorClient;
|
||||
|
||||
vm.prank(collectPublicationAction);
|
||||
IBaseFeeCollectModule(baseFeeCollectModule).initializePublicationCollectModule(
|
||||
@@ -138,9 +138,9 @@ contract ProtocolSharedRevenueMinFeeMintModule_Initialization is
|
||||
'Collect limit initialization mismatch'
|
||||
);
|
||||
assertEq(
|
||||
fetchedData.creatorFrontend,
|
||||
mintFeeModuleExampleInitData.creatorFrontend,
|
||||
'CreatorFrontend initialization mismatch'
|
||||
fetchedData.creatorClient,
|
||||
mintFeeModuleExampleInitData.creatorClient,
|
||||
'CreatorClient initialization mismatch'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -156,7 +156,7 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
// Prevents being counted in Foundry Coverage
|
||||
}
|
||||
|
||||
address exampleExecutorFrontend = executorFrontendAddress;
|
||||
address exampleExecutorClient = executorClientAddress;
|
||||
|
||||
function setUp() public override(ProtocolSharedRevenueMinFeeMintModuleBase, BaseFeeCollectModuleBase) {
|
||||
ProtocolSharedRevenueMinFeeMintModuleBase.setUp();
|
||||
@@ -171,7 +171,7 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
}
|
||||
|
||||
function _getCollectParamsData(address currency, uint160 amount) internal override returns (bytes memory) {
|
||||
return abi.encode(currency, amount, exampleExecutorFrontend);
|
||||
return abi.encode(currency, amount, exampleExecutorClient);
|
||||
}
|
||||
|
||||
// Scenarios
|
||||
@@ -201,8 +201,8 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
address recipient
|
||||
) public {
|
||||
address collectorProfileOwner = makeAddr('COLLECTOR_PROFILE_OWNER');
|
||||
address executorFrontend = makeAddr('EXECUTOR_FRONTEND');
|
||||
exampleExecutorFrontend = executorFrontend;
|
||||
address executorClient = makeAddr('EXECUTOR_CLIENT');
|
||||
exampleExecutorClient = executorClient;
|
||||
|
||||
bonsai.mint(collectorProfileOwner, 10 ether);
|
||||
|
||||
@@ -226,8 +226,8 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
struct Balances {
|
||||
uint256 creator;
|
||||
uint256 protocol;
|
||||
uint256 creatorFrontend;
|
||||
uint256 executorFrontend;
|
||||
uint256 creatorClient;
|
||||
uint256 executorClient;
|
||||
uint256 collector;
|
||||
}
|
||||
|
||||
@@ -246,7 +246,7 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
address recipient
|
||||
) public {
|
||||
address collectorProfileOwner = makeAddr('COLLECTOR_PROFILE_OWNER');
|
||||
address executorFrontend = makeAddr('EXECUTOR_FRONTEND');
|
||||
address executorClient = makeAddr('EXECUTOR_CLIENT');
|
||||
|
||||
bonsai.mint(collectorProfileOwner, 10 ether);
|
||||
|
||||
@@ -256,12 +256,12 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
balancesBefore = Balances({
|
||||
creator: bonsai.balanceOf(defaultAccount.owner),
|
||||
protocol: bonsai.balanceOf(hub.getTreasury()),
|
||||
creatorFrontend: bonsai.balanceOf(creatorFrontendAddress),
|
||||
executorFrontend: bonsai.balanceOf(executorFrontend),
|
||||
creatorClient: bonsai.balanceOf(creatorClientAddress),
|
||||
executorClient: bonsai.balanceOf(executorClient),
|
||||
collector: bonsai.balanceOf(collectorProfileOwner)
|
||||
});
|
||||
|
||||
exampleExecutorFrontend = executorFrontend;
|
||||
exampleExecutorClient = executorClient;
|
||||
super.testCanCollectIfAllConditionsAreMet(
|
||||
pubId,
|
||||
transactionExecutor,
|
||||
@@ -278,16 +278,16 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
balancesAfter = Balances({
|
||||
creator: bonsai.balanceOf(defaultAccount.owner),
|
||||
protocol: bonsai.balanceOf(hub.getTreasury()),
|
||||
creatorFrontend: bonsai.balanceOf(creatorFrontendAddress),
|
||||
executorFrontend: bonsai.balanceOf(executorFrontend),
|
||||
creatorClient: bonsai.balanceOf(creatorClientAddress),
|
||||
executorClient: bonsai.balanceOf(executorClient),
|
||||
collector: bonsai.balanceOf(collectorProfileOwner)
|
||||
});
|
||||
|
||||
balancesChange = Balances({
|
||||
creator: balancesAfter.creator - balancesBefore.creator,
|
||||
protocol: balancesAfter.protocol - balancesBefore.protocol,
|
||||
creatorFrontend: balancesAfter.creatorFrontend - balancesBefore.creatorFrontend,
|
||||
executorFrontend: balancesAfter.executorFrontend - balancesBefore.executorFrontend,
|
||||
creatorClient: balancesAfter.creatorClient - balancesBefore.creatorClient,
|
||||
executorClient: balancesAfter.executorClient - balancesBefore.executorClient,
|
||||
collector: balancesBefore.collector - balancesAfter.collector
|
||||
});
|
||||
|
||||
@@ -295,19 +295,19 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
BPS_MAX;
|
||||
uint256 expectedProtocolFee = (mintFee * mintFeeModule.getProtocolSharedRevenueDistribution().protocolSplit) /
|
||||
BPS_MAX;
|
||||
uint256 expectedCreatorFrontendFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().creatorFrontendSplit) / BPS_MAX;
|
||||
uint256 expectedExecutorFrontendFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().executorFrontendSplit) / BPS_MAX;
|
||||
uint256 expectedCreatorClientFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().creatorClientSplit) / BPS_MAX;
|
||||
uint256 expectedExecutorClientFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().executorClientSplit) / BPS_MAX;
|
||||
|
||||
assertEq(balancesChange.creator, expectedCreatorFee, 'Creator balance change wrong');
|
||||
assertEq(balancesChange.protocol, expectedProtocolFee, 'Protocol balance change wrong');
|
||||
assertEq(balancesChange.creatorFrontend, expectedCreatorFrontendFee, 'CreatorFrontend balance change wrong');
|
||||
assertEq(balancesChange.executorFrontend, expectedExecutorFrontendFee, 'ExecutorFrontend balance change wrong');
|
||||
assertEq(balancesChange.creatorClient, expectedCreatorClientFee, 'CreatorClient balance change wrong');
|
||||
assertEq(balancesChange.executorClient, expectedExecutorClientFee, 'ExecutorClient balance change wrong');
|
||||
assertEq(balancesChange.collector, mintFee, 'Collector balance change wrong');
|
||||
}
|
||||
|
||||
function testMintFeeDistribution_FreePost_WithoutFrontends(
|
||||
function testMintFeeDistribution_FreePost_WithoutClients(
|
||||
uint256 pubId,
|
||||
address transactionExecutor,
|
||||
uint96 collectLimit,
|
||||
@@ -319,8 +319,8 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
) public {
|
||||
address collectorProfileOwner = makeAddr('COLLECTOR_PROFILE_OWNER');
|
||||
|
||||
address executorFrontend = address(0);
|
||||
creatorFrontendAddress = address(0);
|
||||
address executorClient = address(0);
|
||||
creatorClientAddress = address(0);
|
||||
|
||||
bonsai.mint(collectorProfileOwner, 10 ether);
|
||||
|
||||
@@ -330,14 +330,14 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
balancesBefore = Balances({
|
||||
creator: bonsai.balanceOf(defaultAccount.owner),
|
||||
protocol: bonsai.balanceOf(hub.getTreasury()),
|
||||
creatorFrontend: bonsai.balanceOf(creatorFrontendAddress),
|
||||
executorFrontend: bonsai.balanceOf(executorFrontend),
|
||||
creatorClient: bonsai.balanceOf(creatorClientAddress),
|
||||
executorClient: bonsai.balanceOf(executorClient),
|
||||
collector: bonsai.balanceOf(collectorProfileOwner)
|
||||
});
|
||||
|
||||
console.log('creatorFrontend balance before: %s', balancesBefore.creatorFrontend);
|
||||
console.log('creatorClient balance before: %s', balancesBefore.creatorClient);
|
||||
|
||||
exampleExecutorFrontend = executorFrontend;
|
||||
exampleExecutorClient = executorClient;
|
||||
super.testCanCollectIfAllConditionsAreMet(
|
||||
pubId,
|
||||
transactionExecutor,
|
||||
@@ -354,16 +354,16 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
balancesAfter = Balances({
|
||||
creator: bonsai.balanceOf(defaultAccount.owner),
|
||||
protocol: bonsai.balanceOf(hub.getTreasury()),
|
||||
creatorFrontend: bonsai.balanceOf(creatorFrontendAddress),
|
||||
executorFrontend: bonsai.balanceOf(executorFrontend),
|
||||
creatorClient: bonsai.balanceOf(creatorClientAddress),
|
||||
executorClient: bonsai.balanceOf(executorClient),
|
||||
collector: bonsai.balanceOf(collectorProfileOwner)
|
||||
});
|
||||
|
||||
balancesChange = Balances({
|
||||
creator: balancesAfter.creator - balancesBefore.creator,
|
||||
protocol: balancesAfter.protocol - balancesBefore.protocol,
|
||||
creatorFrontend: balancesAfter.creatorFrontend - balancesBefore.creatorFrontend,
|
||||
executorFrontend: balancesAfter.executorFrontend - balancesBefore.executorFrontend,
|
||||
creatorClient: balancesAfter.creatorClient - balancesBefore.creatorClient,
|
||||
executorClient: balancesAfter.executorClient - balancesBefore.executorClient,
|
||||
collector: balancesBefore.collector - balancesAfter.collector
|
||||
});
|
||||
|
||||
@@ -371,19 +371,19 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
BPS_MAX;
|
||||
uint256 expectedProtocolFee = (mintFee * mintFeeModule.getProtocolSharedRevenueDistribution().protocolSplit) /
|
||||
BPS_MAX;
|
||||
uint256 expectedCreatorFrontendFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().creatorFrontendSplit) / BPS_MAX;
|
||||
uint256 expectedExecutorFrontendFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().executorFrontendSplit) / BPS_MAX;
|
||||
uint256 expectedCreatorClientFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().creatorClientSplit) / BPS_MAX;
|
||||
uint256 expectedExecutorClientFee = (mintFee *
|
||||
mintFeeModule.getProtocolSharedRevenueDistribution().executorClientSplit) / BPS_MAX;
|
||||
|
||||
assertEq(
|
||||
balancesChange.creator,
|
||||
expectedCreatorFee + expectedCreatorFrontendFee + expectedExecutorFrontendFee,
|
||||
expectedCreatorFee + expectedCreatorClientFee + expectedExecutorClientFee,
|
||||
'Creator balance change wrong'
|
||||
);
|
||||
assertEq(balancesChange.protocol, expectedProtocolFee, 'Protocol balance change wrong');
|
||||
assertEq(balancesChange.creatorFrontend, 0, 'CreatorFrontend balance change wrong');
|
||||
assertEq(balancesChange.executorFrontend, 0, 'ExecutorFrontend balance change wrong');
|
||||
assertEq(balancesChange.creatorClient, 0, 'CreatorClient balance change wrong');
|
||||
assertEq(balancesChange.executorClient, 0, 'ExecutorClient balance change wrong');
|
||||
assertEq(balancesChange.collector, mintFee, 'Collector balance change wrong');
|
||||
}
|
||||
|
||||
@@ -400,17 +400,17 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
) public {
|
||||
vm.assume(amount > 0);
|
||||
address collectorProfileOwner = makeAddr('COLLECTOR_PROFILE_OWNER');
|
||||
address executorFrontend = makeAddr('EXECUTOR_FRONTEND');
|
||||
address executorClient = makeAddr('EXECUTOR_CLIENT');
|
||||
|
||||
balancesBefore = Balances({
|
||||
creator: bonsai.balanceOf(defaultAccount.owner),
|
||||
protocol: bonsai.balanceOf(hub.getTreasury()),
|
||||
creatorFrontend: bonsai.balanceOf(creatorFrontendAddress),
|
||||
executorFrontend: bonsai.balanceOf(executorFrontend),
|
||||
creatorClient: bonsai.balanceOf(creatorClientAddress),
|
||||
executorClient: bonsai.balanceOf(executorClient),
|
||||
collector: bonsai.balanceOf(collectorProfileOwner)
|
||||
});
|
||||
|
||||
exampleExecutorFrontend = executorFrontend;
|
||||
exampleExecutorClient = executorClient;
|
||||
super.testCanCollectIfAllConditionsAreMet(
|
||||
pubId,
|
||||
transactionExecutor,
|
||||
@@ -427,23 +427,23 @@ contract ProtocolSharedRevenueMinFeeMintModule_ProcessCollect is
|
||||
balancesAfter = Balances({
|
||||
creator: bonsai.balanceOf(defaultAccount.owner),
|
||||
protocol: bonsai.balanceOf(hub.getTreasury()),
|
||||
creatorFrontend: bonsai.balanceOf(creatorFrontendAddress),
|
||||
executorFrontend: bonsai.balanceOf(executorFrontend),
|
||||
creatorClient: bonsai.balanceOf(creatorClientAddress),
|
||||
executorClient: bonsai.balanceOf(executorClient),
|
||||
collector: bonsai.balanceOf(collectorProfileOwner)
|
||||
});
|
||||
|
||||
balancesChange = Balances({
|
||||
creator: balancesAfter.creator - balancesBefore.creator,
|
||||
protocol: balancesAfter.protocol - balancesBefore.protocol,
|
||||
creatorFrontend: balancesAfter.creatorFrontend - balancesBefore.creatorFrontend,
|
||||
executorFrontend: balancesAfter.executorFrontend - balancesBefore.executorFrontend,
|
||||
creatorClient: balancesAfter.creatorClient - balancesBefore.creatorClient,
|
||||
executorClient: balancesAfter.executorClient - balancesBefore.executorClient,
|
||||
collector: balancesBefore.collector - balancesAfter.collector
|
||||
});
|
||||
|
||||
assertEq(balancesChange.creator, 0, 'Creator balance change wrong');
|
||||
assertEq(balancesChange.protocol, 0, 'Protocol balance change wrong');
|
||||
assertEq(balancesChange.creatorFrontend, 0, 'CreatorFrontend balance change wrong');
|
||||
assertEq(balancesChange.executorFrontend, 0, 'ExecutorFrontend balance change wrong');
|
||||
assertEq(balancesChange.creatorClient, 0, 'CreatorClient balance change wrong');
|
||||
assertEq(balancesChange.executorClient, 0, 'ExecutorClient balance change wrong');
|
||||
assertEq(balancesChange.collector, 0, 'Collector balance change wrong');
|
||||
}
|
||||
}
|
||||
@@ -486,14 +486,14 @@ contract ProtocolSharedRevenueMinFeeMintModule_OwnerMethods is ProtocolSharedRev
|
||||
function testCannotSetProtocolSharedRevenueDistribution_ifNotOwner(
|
||||
uint16 creatorSplit,
|
||||
uint16 protocolSplit,
|
||||
uint16 creatorFrontendSplit,
|
||||
uint16 creatorClientSplit,
|
||||
address notOwner
|
||||
) public {
|
||||
vm.assume(notOwner != mintFeeModule.owner());
|
||||
creatorSplit = uint16(bound(uint256(creatorSplit), 0, BPS_MAX));
|
||||
protocolSplit = uint16(bound(uint256(protocolSplit), 0, BPS_MAX - creatorSplit));
|
||||
creatorFrontendSplit = uint16(bound(uint256(creatorFrontendSplit), 0, BPS_MAX - creatorSplit - protocolSplit));
|
||||
uint16 executorFrontendSplit = BPS_MAX - creatorSplit - protocolSplit - creatorFrontendSplit;
|
||||
creatorClientSplit = uint16(bound(uint256(creatorClientSplit), 0, BPS_MAX - creatorSplit - protocolSplit));
|
||||
uint16 executorClientSplit = BPS_MAX - creatorSplit - protocolSplit - creatorClientSplit;
|
||||
|
||||
vm.expectRevert('Ownable: caller is not the owner');
|
||||
|
||||
@@ -502,8 +502,8 @@ contract ProtocolSharedRevenueMinFeeMintModule_OwnerMethods is ProtocolSharedRev
|
||||
ProtocolSharedRevenueDistribution({
|
||||
creatorSplit: creatorSplit,
|
||||
protocolSplit: protocolSplit,
|
||||
creatorFrontendSplit: creatorFrontendSplit,
|
||||
executorFrontendSplit: executorFrontendSplit
|
||||
creatorClientSplit: creatorClientSplit,
|
||||
executorClientSplit: executorClientSplit
|
||||
})
|
||||
);
|
||||
}
|
||||
@@ -519,14 +519,14 @@ contract ProtocolSharedRevenueMinFeeMintModule_OwnerMethods is ProtocolSharedRev
|
||||
function testCannotSetProtocolSharedRevenueDistribution_ifSplitsDontAddUpToBPS_MAX(
|
||||
uint16 creatorSplit,
|
||||
uint16 protocolSplit,
|
||||
uint16 creatorFrontendSplit,
|
||||
uint16 executorFrontendSplit
|
||||
uint16 creatorClientSplit,
|
||||
uint16 executorClientSplit
|
||||
) public {
|
||||
vm.assume(
|
||||
uint256(creatorSplit) +
|
||||
uint256(protocolSplit) +
|
||||
uint256(creatorFrontendSplit) +
|
||||
uint256(executorFrontendSplit) !=
|
||||
uint256(creatorClientSplit) +
|
||||
uint256(executorClientSplit) !=
|
||||
BPS_MAX
|
||||
);
|
||||
|
||||
@@ -534,8 +534,8 @@ contract ProtocolSharedRevenueMinFeeMintModule_OwnerMethods is ProtocolSharedRev
|
||||
if (
|
||||
uint256(creatorSplit) +
|
||||
uint256(protocolSplit) +
|
||||
uint256(creatorFrontendSplit) +
|
||||
uint256(executorFrontendSplit) >
|
||||
uint256(creatorClientSplit) +
|
||||
uint256(executorClientSplit) >
|
||||
type(uint16).max
|
||||
) {
|
||||
vm.expectRevert(stdError.arithmeticError);
|
||||
@@ -547,8 +547,8 @@ contract ProtocolSharedRevenueMinFeeMintModule_OwnerMethods is ProtocolSharedRev
|
||||
ProtocolSharedRevenueDistribution({
|
||||
creatorSplit: creatorSplit,
|
||||
protocolSplit: protocolSplit,
|
||||
creatorFrontendSplit: creatorFrontendSplit,
|
||||
executorFrontendSplit: executorFrontendSplit
|
||||
creatorClientSplit: creatorClientSplit,
|
||||
executorClientSplit: executorClientSplit
|
||||
})
|
||||
);
|
||||
vm.stopPrank();
|
||||
@@ -575,19 +575,18 @@ contract ProtocolSharedRevenueMinFeeMintModule_OwnerMethods is ProtocolSharedRev
|
||||
function testSetProtocolSharedRevenueDistribution(
|
||||
uint16 creatorSplit,
|
||||
uint16 protocolSplit,
|
||||
uint16 creatorFrontendSplit,
|
||||
uint16 executorFrontendSplit
|
||||
uint16 creatorClientSplit
|
||||
) public {
|
||||
creatorSplit = uint16(bound(uint256(creatorSplit), 0, BPS_MAX));
|
||||
protocolSplit = uint16(bound(uint256(protocolSplit), 0, BPS_MAX - creatorSplit));
|
||||
creatorFrontendSplit = uint16(bound(uint256(creatorFrontendSplit), 0, BPS_MAX - creatorSplit - protocolSplit));
|
||||
uint16 executorFrontendSplit = BPS_MAX - creatorSplit - protocolSplit - creatorFrontendSplit;
|
||||
creatorClientSplit = uint16(bound(uint256(creatorClientSplit), 0, BPS_MAX - creatorSplit - protocolSplit));
|
||||
uint16 executorClientSplit = BPS_MAX - creatorSplit - protocolSplit - creatorClientSplit;
|
||||
|
||||
ProtocolSharedRevenueDistribution memory expectedDistribution = ProtocolSharedRevenueDistribution({
|
||||
creatorSplit: creatorSplit,
|
||||
protocolSplit: protocolSplit,
|
||||
creatorFrontendSplit: creatorFrontendSplit,
|
||||
executorFrontendSplit: executorFrontendSplit
|
||||
creatorClientSplit: creatorClientSplit,
|
||||
executorClientSplit: executorClientSplit
|
||||
});
|
||||
|
||||
vm.prank(mintFeeModule.owner());
|
||||
@@ -599,14 +598,14 @@ contract ProtocolSharedRevenueMinFeeMintModule_OwnerMethods is ProtocolSharedRev
|
||||
assertEq(actualDistribution.creatorSplit, expectedDistribution.creatorSplit, 'Creator split mismatch');
|
||||
assertEq(actualDistribution.protocolSplit, expectedDistribution.protocolSplit, 'Protocol split mismatch');
|
||||
assertEq(
|
||||
actualDistribution.creatorFrontendSplit,
|
||||
expectedDistribution.creatorFrontendSplit,
|
||||
'CreatorFrontend split mismatch'
|
||||
actualDistribution.creatorClientSplit,
|
||||
expectedDistribution.creatorClientSplit,
|
||||
'CreatorClient split mismatch'
|
||||
);
|
||||
assertEq(
|
||||
actualDistribution.executorFrontendSplit,
|
||||
expectedDistribution.executorFrontendSplit,
|
||||
'ExecutorFrontend split mismatch'
|
||||
actualDistribution.executorClientSplit,
|
||||
expectedDistribution.executorClientSplit,
|
||||
'ExecutorClient split mismatch'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user