Set Documentation
Search…
⌃K

DelegatedManagerFactory

Factory smart contract which provides asset managers the ability to create a SetToken with a DelegatedManager manager, create a DelegatedManager manager for an existing SetToken to migrate to, and initialize extensions and modules.

createSetAndManager()

function createSetAndManager()
ANYONE CAN CALL: Deploys a new SetToken and DelegatedManager. Sets some temporary metadata about the deployment which will be read during a subsequent intialization step which wires everything together.
Parameter Name
Type
Description
_components
address[]
List of addresses of components for initial Position
_units
int256[]
List of units. Each unit is the # of components per 10^18 of a SetToken
_name
string
Name of the SetToken
_symbol
string
Symbol of the SetToken
_owner
address
Address to set as the DelegateManager's owner role
_methodologist
address
Address to set as the DelegateManager's methodologist role
_modules
address[]
List of modules to enable. All modules must be approved by the Controller
_operators
address[]
List of operators authorized for the DelegateManager
_assets
address[]
List of assets DelegateManager can trade. When empty, asset allow list is not enforced
_extensions
address[]
List of extensions authorized for the DelegateManager

createManager()

function createManager()
ONLY SETTOKEN MANAGER: Deploys a DelegatedManager and sets some temporary metadata about the deployment which will be read during a subsequent intialization step which wires everything together. This method is used when migrating an existing SetToken to the DelegatedManager system.
NOTES:
  • This flow should work well for SetTokens managed by an EOA. However, existing contract-managed Sets need to have their ownership temporarily transferred to an EOA when migrating
  • Existing SetTokens should already be initialized for all modules relevant to the extensions enabled for their new DelegatedManager. (There is no provision for adding new modules as part of the manager migration flow)
Parameter Name
Type
Description
_setToken
address
Instance of SetToken to migrate to the DelegatedManager system
_owner
address
Address to set as the DelegateManager's owner role
_methodologist
address
Address to set as the DelegateManager's methodologist role
_operators
address[]
List of operators authorized for the DelegateManager
_assets
address[]
List of assets DelegateManager can trade. When empty, asset allow list is not enforced
_extensions
address[]
List of extensions authorized for the DelegateManager

initialize()

function initialize()
ONLY DEPLOYER (the address which called createSetAndManager or createManager): Wires SetToken, DelegatedManager, global manager extensions, and modules together into a functioning package.
NOTES:
  • When migrating to this manager system from an existing SetToken, the SetToken's current manager address must be reset to point at the newly deployed DelegatedManager contract in a separate, final transaction.
  • See DelegatedManager extensions APIs at set.js for TS helpers to encode appropriate initializeModuleAndExtension or initializeExtension calls you will pass as arguments in the initializeBytecode parameter.
Parameter Name
Type
Description
_setToken
address
Instance of SetToken to migrate to the DelegatedManager system
_ownerFeeSplit
uint256
Percent of fees in precise units (10^16 = 1%) sent to owner, rest to methodologist
_ownerFeeRecipient
address
Address which receives owner's share of fees when they're distributed
_extensions
address[]
List of addresses of extensions which need to be initialized
_initializeBytecode
bytes[]
List of bytecode encoded calls to relevant target's initialize function