As described in the DelegationsManager page, the Insurance, i.e. the amount of token that a Delegation must have staked in order to attach itself to the DelegationsManager can be managed in two different ways:
defining the insurance amount inside the DelegationsManager contract -> setting the _attachInsurance parameter when initializing the DelegationsManager.
retrieving the insurance amount from an external smart contract -> setting the _attachInsuranceRetriever parameter when initializing the DelegationsManager.
If you initialize an _attachInsuranceRetriever address, the _attachInsurance parameter is not taken into account even if populated.
The _attachInsuranceRetriever can only be defined when initializing the DelegationsManager and it can't be modified later.
If you initialize the _attachInsurance and not _attachInsuranceRetriever it can be modified later using the setAttachInsurance function:
How and why should you define insurance externally?
The _attachInsuranceRetriever smart contract must implement a get() view function that returns the insurance amount in the form of uint256.
Defining an _attachInsuranceRetriever allows you to save the insurance amount as a parameter in the State Manager of the Organization (at the Root or Governance layer) and have the get () method of the _attachInsuranceRetriever retrieve the value by reading it from the State Manager.
In this case, the value of the insurance parameter can be modified by:
a Root level Proposal that overwrites the value in the State Manager, if the insurance variable is saved in the State Manager at Root level.
a subDAO Proposal that overwrites the value in the State Manager, if the insurance variable is saved in the State Manager at Governance level and if there is a Proposal Model, surveyless or survey, to do so. The Proposal to change the value of a variable saved in the state manager can be found here.
Here, you can find an example of a _attachInsuranceRetriever smart contract that retrieves the insurance amount from the State Manager at the Governance layer.