Divvi Protocol - KPI calculation functions / somm
Functions
calculateKpi()
- Sommelier API: Strategy vault data, performance metrics, and metadata from Sommelier’s API
- RPC Queries: User deposit/withdrawal events via Viem public client calls to strategy vault contracts
- Token Price API: Historical token prices via
fetchTokenPrices
utility for USD conversion - Block Data: Timestamps via
getBlockRange
utility for temporal filtering - Vault Contracts: Time-weighted TVL calculations and share price data from strategy vault contracts
- Reward rate is 10% of user’s time-weighted TVL
- Reward attribution is proportional to user’s time-weighted deposits within strategy vaults
- USD conversion uses token prices at time of each transaction for accuracy
- Only active strategy vaults are included in calculations
- Reward distribution follows time-weighted calculation based on vault share ownership
- Retrieves active strategy vault configurations from Sommelier API
- Filters vaults by Ethereum network and active status
- For each vault, queries user’s deposit/withdrawal events within time window
- Calculates user’s time-weighted share of vault deposits using share price history
- Applies 10% reward rate to user’s proportional vault activity
- Converts to USD using historical token prices at transaction timestamps
- Aggregates rewards across all strategy vaults for total allocation
Parameters
params
Calculation parametersaddress
string
User wallet address to calculate rewards for
endTimestampExclusive
Date
End of time window for reward calculation (exclusive)
startTimestamp
Date
Start of time window for reward calculation (inclusive)
Returns
Promise
<KpiResult
<string
>>
Promise resolving to total reward allocation in USD
Suggest changes to this pageLast updated: Aug 6, 2025, 3:51 PM