This document is a draft version and subject to change.
Enable Mint Hook / ExtMintHook contract address
Checking this option enables you to call an external contract each time an item is minted in your collection. If you are a developer, the uses for this are limited only by your imagination. The contract must implement a function like
mintHook(uint256 tokenIds, address minter, uint256 amountPaid)
If you want it to be secure, you'd need to add something like to the top of the function:
require(msg.sender == <yourNFTContractAddress>, "unauthorized");
A reference implementation of an extMintHook contract will be provided in due course.
Enable Bonus ERC721 / BonusERC721 contract address
Using this option, you can create a secondary collection, which items from are minted for free when a user mints an item from your main collection. This option may be scrapped in favour of just using the extMintHook, since it offers more flexibility.
The RewardManager contract is an extension contract which is automatically deployed at the time your main contract is deployed. If enabled, it divides incoming royalties between owners of your collection based on how many tokens they are holding at the time the royalty is paid. These rewards accrue and are claimable either via your custom dapp, or on the collection's listing page on the marketplace.
Enable RM While Staking
If you have opted to use an external staking contract rather than soft staking, this enables the RewardManager to still reward royalties to people who have their tokens staked in the external contract. Since the RM works based on token ownership, and usually a staking contract "owns" the staked tokens, this is a handy workaround for that issue.
Enable auto FTSO delegation
When your main contract is deployed, a contract which handles TSO delegation is also deployed. When this option is enabled, any unclaimed funds held in the contract are automatically delegated to FTSOs, compounding the amount available to everyone in the reward pool. When people who are entitled to rewards / earnings claim, the corresponding amount of WSGB/WFLR is automatically unwrapped from the delegation pool and sent to them. This option will probably be "always enabled" in the future, since there is no benefit to having it switched off.
Enable Random Minting
When enabled, tokens from your collection are minted in a random order rather than 1, 2, 3, 4... Once enabled, cannot be disabled.
Enable Soft Staking
The soft staking contract is an accessory contract deployed alongside your collection's main contract. The advantage of using it over "hard" staking is that whilst soft-staking, token owners retain ownership of their tokens, they are just unable to transfer/sell them whilst staked.
Enable Get External Price / External Price Contract Addr
This will call an external contract which provides the price-per-token at the time of mint. A reference implementation will be provided which converts a USD price to FLR or SGB. Implementation contract needs to implement a function like
getPrice() public view returns(uint256)
Enable Whitelist Discount
In the main configuration options, there is an option to set a percentage for whitelist discount, this option enables or disables that discount
You might want to use this in some circumstances, eg: if you're doing an airdrop-only collection, or you want to make your tokens mintable in batches.
Enable Split Royalty / Split to owner (bips)
Split royalty divides the income from secondary sales royalties between the primary fee recipient of the contract (usually the person who deploys / owns the collection) and the reward manager. It is set up in bips, so a value of 1000 would give 10% to the owner, and the remaining 90% of royalties would be divided equally between holders of the tokens
Enable On Chain Traits
Enabling on chain traits makes your contract emit a data:application/json;base64, style URI for the TokenURI, this tokenURI is generated on-the-fly by the OnChainTraits contract. If the on chain traits are missing for the requested token id, it will fall back to the normal URI. To get this to work properly requires some additional setup, but has the advantage of meaning you are able to have dynamic metadata (useful for games) and even dynamic image data, although, you would need to write your own contract for the dynamic image data.
If you have any questions or problems regarding anything above, please create a forum account and discuss below. By doing so, someone else who had a similar issue might find the answer they're looking for.