FeeSplit
Overview
FeeSplit Extensions are used to interact with the StreamingFeeModule
(and any other module which collects fees). These extensions:
distribute fees to stakeholders
make configuration calls to fee modules
act as the fee recipient for fees collected by a module.
These extensions must be added to the BaseManager
in order to be used
State Variables
Name | Type | Description |
setToken | ISetToken | SetToken address |
streamingFeeModule | IStreamingFeeModule | Address of |
operatorFeeSplit | uint256 | Percent of fees in precise units (10^16 = 1%) sent to operator, rest to methodologist |
operatorFeeRecipient | address | Address which receives operator's share of fees when they're distributed |
Functions
accrueFeesAndDistribute
Callable by anyone. Accrues fees from streaming fee module. Gets resulting balance after fee accrual, calculates fees for operator and methodologist, and sends to operatorFeeRecipient
and methodologist respectively.
initializeModule
Must be called by both the operator and methodologist. Initializes the streaming fee module.
Name | Type | Description |
_settings | IStreamingFeeModule.FeeState | Fee settings |
updateStreamingFee
Must be called by both the operator and methodologist. Updates streaming fee percentage on StreamingFeeModule.
NOTE:
Because the method is time-locked, each party must call it twice: once to set the lock and once to execute.settings.
This method will accrue streaming fees though not send to operator fee recipient and methodologist.
Reverts:
Fee is greater than the module's max streaming fee
Name | Type | Description |
_newFee | uint256 | Percent of Set accruing to manager annually (1% = 1e16, 100% = 1e18) |
updateFeeRecipient
Must be called by both the operator and methodologist. Updates fee recipient on streaming fee module.
Reverts:
Fee Recipient is not a non-zero address
Name | Type | Description |
_newFeeRecipient | address | Address which accrued fees are sent to prior to their distribution by the fee extension. (This is typically the address of the fee extension itself) |
updateFeeSplit
Must be called by both the operator and methodologist. Updates the extension's fee split. The split is defined in precise units (1% = 10^16). Fees are accrued and distributed before the new split goes into effect.
Reverts:
Fee is greater than 100%
Name | Type | Description |
_newFeeSplit | uint256 | Percent of fees in precise units (10^16 = 1%) sent to operator, (rest go to the methodologist). |
updateOperatorFeeRecipient
Must be called by the operator. Updates the operator fee recipient. The operator fee recipient is usually just the operator but sometimes it's preferable to send fees to a different address.
Reverts:
Fee recipient address is not non-zero
Name | Type | Description |
_newOperatorFeeRecipient | address | Address to send operator's fees to. |
Additional Functions
The functions above target the StreamingFeeModule. However, some products may collect fees from multiple modules.
It implements the following additional methods:
initializeIssuanceModule
Must be called by both the operator and methodologist. Initializes the streaming fee module.
Name | Type | Description |
_maxManagerFee | uint256 | The maximum size issuance and redeem fees can be set at in precise units (10^16 = 1%). Set once on initialization. |
_managerIssueFee | uint256 | Manager issuance fees in precise units (10^16 = 1%) |
_managerRedeemFee | uint256 | Manager redeem fees in precise units (10^16 = 1%) |
_feeRecipient | address | Address that receives all manager issue and redeem fees |
_managerIsssuanceHook | address | Address of manager defined hook contract, can hold arbitrary logic |
updateIssueFee
Must be called by both the operator and methodologist. Updates issue fee on IssuanceModule.
Note: Because the method is time-locked, each party must call it twice: once to set the lock and once to execute.
Reverts:
Issue fee exceeds fee maximum (set on Issuance Module)
New issue fee is identical to current issue fee
Name | Type | Description |
_newFee | uint256 | New fee amount in preciseUnits (1% = 10^16) |
updateRedeemFee
Must be called by both the operator and methodologist. Updates issue fee on IssuanceModule.
Note: Because the method is time-locked, each party must call it twice: once to set the lock and once to execute.
Reverts:
Redeem fee exceeds fee maximum (set on Issuance Module)
New redeem fee is identical to current redeem fee
Name | Type | Description |
_newFee | uint256 | New fee amount in preciseUnits (1% = 10^16) |
Last updated