DLGTE.v1.sol (Delegation Module)
DLGTE manages governance power of gOHM while it's being used as collateral in Cooler. Each account's gOHM can be split between multiple delegates through individual escrow contracts, allowing governance participation even while the gOHM is locked.
The module tracks balances per policy (like MonoCooler) and per user, ensuring one policy can't withdraw gOHM deposited by another. Users can delegate to up to 10 addresses by default (governance can whitelist a contract for >10), with each delegate getting their own escrow contract.
Functions by Category
Core Tracking Functions
depositUndelegatedGohm(address onBehalfOf, uint256 amount)
Takes gOHM from a policy and tracks it for a user
gOHM stays undelegated in the module until delegation requests
withdrawUndelegatedGohm(address onBehalfOf, uint256 amount)
Returns undelegated gOHM to a policy
Amount must be available (not currently delegated)
Can only withdraw amount deposited by calling policy
Delegation Management
applyDelegations(address onBehalfOf, DelegationRequest[] calldata delegationRequests)
Updates how a user's gOHM is delegated
Can delegate or undelegate to multiple addresses
Creates or retrieves escrow contracts as needed
Returns amounts delegated/undelegated and current undelegated balance
setMaxDelegateAddresses(address account, uint32 maxDelegateAddresses)
Changes maximum number of delegates for an account
Default is 10 if not set
View Functions
policyAccountBalances(address policy, address account)
Shows total gOHM balance a policy deposited for an account
accountDelegationsList(address account, uint256 startIndex, uint256 maxItems)
Returns paginated list of account's delegations
Each entry shows delegate address, escrow contract, and amount
accountDelegationSummary(address account)
Shows total gOHM, amount delegated, delegate count and max allowed delegates
maxDelegateAddresses(address account)
Returns maximum number of delegates allowed for account
Last updated