Debt Issuance
Note: Debt Issuance is not available for Optimism.
What is the DebtIssuanceModule:
The DebtIssuanceModule is a module that enables users to issue and redeem SetTokens that contain default and all external positions, including debt positions. This can be thought of as a superset of Basic Issuance. The manager can define arbitrary issuance logic in the manager hook (e.g. allowlisting, issuance windows, supply caps), as well as specify issue and redeem fees.
Initializing the DebtIssuanceModule:
All modules need to be added to the SetToken as the first step. Learn how to add a module to your SetToken by referring to the Adding a Module guide.
Once you have added the DebtIssuanceModule to the SetToken, you must initialize the SetToken on the DebtIssuanceModule:
The managerIssueFee and managerRedeemFee are fees that are charged when an user enters or exits your SetToken.
The pre issue hook is an optional parameter for a contract that can contain any custom logic you write prior to issuance. For example, the manager issuance contract can include whitelisting functionality, issuance limits and any other custom logic for operating your Set.
If you do not wish to provide a pre issuance hook, you can input the zero address (0x0000000000000000000000000000000000000000).
Issuing Sets:
In order to issue Sets you must call issue
on the DebtIssuanceModule, the interface for issue is as follows:
Input the address of the Set you wish to issue and the amount of SetTokens you wish to issue. In order for issuance to work ALL of the components must be owned by the calling address in the correct proportions (whether it's a wallet or smart contract address).
All equity components must be approved to the DebtIssuanceModule contract with appropriate allowance for transfer. Debt components are returned to you on issuance. This is to ensure an 100% mirroring of SetToken positions and ensure 0 slippage mint / redeems.
In order to figure out the correct token amounts needed for issuance you can call the following function which returns a list of equity units and debt units:
Each component unit is denominated the component base units. For example, 1 USDC is 10 ** 6 and 1 WBTC is 10 ** 8.
Once you confirm you have all the required components to collateralize each position of the Set you will be able to issue which transfers those components to the SetToken and mint's the passed _quantity
to the calling address.
Redeeming Sets:
Conversely, redeeming is the process of burning your SetToken balance and receiving the underlying collateral. You must approve ALL debt units to the DebtIssuanceModule.
The interface for redeem is as follows:
Specify the amount of Sets to redeem and then those Sets are burned and the components are transferred to the calling address. The following function will return the required amount of debt components to send and equity components to receive back:
Last updated