Skip to main content

FactoryFeeManager

Git Source Inherits: IFactoryFeeManager Author: JA (@ubinatus)

State Variables

MAX_POOL_FEE

CONSTANTS Pool fee is calculated using 18 decimals where 0.05 ether is 5%.

_feeData

STATE Stores fee related information for collection purposes.

_upcomingCreationFee

Stores the info necessary for an upcoming change of the global creation fee.

_upcomingPoolFee

Stores the info necessary for an upcoming change of the global pool fee.

_creationFeeByUser

Maps a user address to a custom creation fee struct.

_poolFeeByUser

Maps a user address to a custom pool fee struct.

Functions

onlyFeeCollector

Reverts if called by anyone other than the factory fee collector.

minPoolFee

FUNCTIONS Exposes the minimum pool fee.

maxPoolFee

Exposes the maximum pool fee.

feeCollector

Exposes the FeeData.feeCollector to users.

globalCreationFee

Retrieves the current global creation fee to users.

globalPoolFee

Retrieves the current global pool fee percentage to users.

creationFeeData

Exposes the creation fee for new Raffls deployments. Enabled custom fees overrides the global creation fee.
Parameters

poolFeeData

Returns the current pool fee for a specific Raffle, considering any pending updates.
Parameters

scheduleGlobalCreationFee

Sets a new global creation fee value, to take effect after 1 hour. msg.sender has to be the fee collector of the factory.
Parameters

scheduleGlobalPoolFee

Sets a new global pool fee percentage, to take effect after 1 hour. *Percentages and fees are calculated using 18 decimals where 1 ether is 100%. Requirements:
  • newFeePercentage must be within minPoolFee and maxPoolFee.
  • msg.sender has to be the fee collector of the factory.*
Parameters

scheduleCustomCreationFee

Sets a new custom creation fee value for a specific User, to be enabled and take effect after 1 hour from the time of this transaction. *Allows the contract owner to modify the creation fee associated with a specific User. The new fee becomes effective after a delay of 1 hour, aiming to provide a buffer for users to be aware of the upcoming fee change. This function updates the fee and schedules its activation, ensuring transparency and predictability in fee adjustments. The fee is specified in wei, allowing for granular control over the fee structure. Emits a CustomCreationFeeChange event upon successful fee update. Requirements:
  • msg.sender has to be the fee collector of the factory.*
Parameters

scheduleCustomPoolFee

Sets a new custom pool fee percentage for a specific User, to be enabled and take effect after 1 hour from the time of this transaction. *This function allows the contract owner to adjust the pool fee for a User. The fee adjustment is delayed by 1 hour to provide transparency and predictability. Fees are calculated with precision to 18 decimal places, where 1 ether equals 100% fee. The function enforces fee limits; newFeePercentage must be within the predefined 0-MAX_POOL_FEE bounds. If the custom fee was previously disabled or set to a different value, this operation schedules the new fee to take effect after the delay, enabling it if necessary. Emits a CustomPoolFeeChange event upon successful execution. Requirements:
  • msg.sender has to be the fee collector of the factory.
  • newFeePercentage must be within the range limited by MAX_POOL_FEE.*
Parameters

toggleCustomCreationFee

Enables or disables the custom creation fee for a given Raffle, with the change taking effect after 1 hour. msg.sender has to be the fee collector of the factory.
Parameters

toggleCustomPoolFee

Enables or disables the custom pool fee for a given Raffle, to take effect after 1 hour. msg.sender has to be the fee collector of the factory.
Parameters

_getCurrentFee

Calculates the current fee based on global, custom, and upcoming fee data. This function considers the current timestamp and determines the appropriate fee based on whether a custom or upcoming fee should be applied.
Parameters Returns

_processCreationFee

Processes the creation fee for a transaction. This function retrieves the creation fee data from the manager contract and, if the creation fee is greater than zero, sends the msg.value to the fee collector address. Reverts if the transferred value is less than the required creation fee or if the transfer fails.