DebtIssuanceModule
The DebtIssuanceModule is a module that enables users to issue and redeem SetTokens that contain default and all external positions, including debt positions. Module hooks are added to allow for syncing of positions, and component level hooks are added to ensure positions are replicated correctly. The manager can define arbitrary issuance logic in the manager hook, as well as specify issue and redeem fees.
Select Methods
issue()
function issue(ISetToken _setToken, uint256 _quantity, address _to)
β
Deposits components to the SetToken, replicates any external module component positions and mints the SetToken. If the token has a debt position all collateral will be transferred in first then debt will be returned to the minting address. If specified, a fee will be charged on issuance.
Parameter Name | Type | Description |
_setToken | ISetToken | Instance of the SetToken |
_quantity | uint256 | Quantity of the SetToken to mint |
_to | address | Address to mint SetToken to |
redeem()
function redeem( ISetToken _setToken, uint256 _quantity,address _to)
β
Returns components from the SetToken, unwinds any external module component positions and burns the SetToken. If the token has a debt position all debt will be paid down first then equity positions will be returned to the minting address. If specified, a fee will be charged on redeem.
Parameter Name | Type | Description |
_setToken | ISetToken | Address of the SetToken |
_quantity | uint256 | Quantity of the SetToken to |
_to | address | Address to redeem components toβ |
initialize()
function initialize(ISetToken _setToken, uint256 _maxManagerFee, uint256 _managerIssueFee, uint256 _managerRedeemFee, address _feeRecipient, IManagerIssuanceHook _managerIssuanceHook)
β
Manager only. Initializes this module to the SetToken with issuance-related hooks. Only callable by the SetToken's manager. Hook addresses are optional. Address(0) means that no hook will be called
Parameter Name | Type | Description |
_setToken | ISetToken | Address of the SetToken |
_maxManagerFee | uint256 | Max manager fee |
_managerIssueFee | uint256 | Issuance fee |
_managerRedeemFee | uint256 | Redemption fee |
_feeRecipient | address | Fee recipient address |
_preIssueHook | IManagerIssuanceHook | Instance of the Manager Contract with the Pre-Issuance Hook function |
Select View Methods
getRequiredComponentIssuanceUnits()
function getRequiredComponentIssuanceUnits(ISetToken _setToken, uint256 _quantity) view returns (address[] memory, uint256[] memory, uint256[] memory)
β
Retrieves the addresses and units required to mint a particular quantity of SetToken.
Parameter Name | Type | Description |
_setToken | ISetToken | Address of the SetToken |
_quantity | uint256 | Quantity of the SetToken to |
Return Name | Type | Description |
componentAddresses | address[] | Array of component addresses making up the Set |
equityNotional | uint256[] | Array of equity notional amounts of each component, respectively, represented as uint256 |
debtNotional | uint256[] | Array of debt notional amounts of each component, respectively, represented as uint256 |
getRequiredComponentRedemptionUnits()
function getRequiredComponentRedemptionUnits(ISetToken _setToken, uint256 _quantity) view returns (address[] memory, uint256[] memory, uint256[] memory)
β
Retrieves the addresses and units required to mint a particular quantity of SetToken.
Parameter Name | Type | Description |
_setToken | ISetToken | Address of the SetToken |
_quantity | uint256 | Quantity of the SetToken to |
Return Name | Type | Description |
componentAddresses | address[] | Array of component addresses making up the Set |
equityNotional | uint256[] | Array of equity notional amounts of each component, respectively, represented as uint256 |
debtNotional | uint256[] | Array of debt notional amounts of each component, respectively, represented as uint256 |
Last updated