Covenants farming contract architecture is designed to be as general purpose as possible, so as to make integration easy for any individual wallet, organization (such a DAO) or other projects (like those represented by custom smart contracts).
To this end, the extension that facilitates integration can adapt to the particular needs of any project. This architecture allows the farming contract to not even have to know who a host is because integration with it is carried out entirely by the extension.
For these reasons, it is important to plan an extension that is in line with specific integration needs. It can be freely programmed; however there are two mandatory functions that it must have in order to interact correctly with the farming contract. These two functions are:
function transferTo(uint256 amount) public
function backToYou(uint256 amount) payable public
However, the content of these functions is also customizable by the extension developer.
To integrate Covenants farming, all you need to do is write the extension and then link it to the farming contract in the manner explained here. The general function of the Farming contract remains the same regardless of whether the host is a wallet, a DAO or a contract; the only thing that changes is the way the extension is integrated.