The host of a contract sends the reward tokens for all the created setups to the extension.
The extension must receive, at a minimum, enough tokens to reward every setup created for the contract. If it doesn't, the setups will still be correctly created within the contract, but won't be able to be activated.
If any reward tokens are from a reserve, it is best practice to deploy the contract and the extension and then immediately send to the extension the minimum amount of reward tokens required by all setups.
If the contract host is a wallet, simply send the required amount of reward tokens to the extension address manually via a transfer function (or using a provider such as Metamask).
If the contract host is a DFO, DAO, or other type of organization, you must use the appropriate procedure to transfer the tokens to the extension. For example, if the host is a DFO, make a proposal to install in it the manageFarming microservice (only required the first time a contract is hosted by the DFO) and then enable the extension in the DFO StateHolder (required every time). This will authorize the DFO to send the required amount of reward tokens from the DFO's treasury to be sent to the contract's extension:
After the extension has received the tokens, the host does not need to also then manually transfer them to the farming contract. This will happen automatically when the setup(s) are activated.