Overview
TreasuryUSDCVault holds protocol treasury funds in USDC. It receives USDC from fee swaps and governance-approved deposits. Withdrawals require governance approval via the ElataTimelock.
Key Functions
Read
| Function | Returns | Description |
|---|---|---|
balance() | uint256 | Current USDC balance |
totalDeposited() | uint256 | Lifetime deposits |
totalWithdrawn() | uint256 | Lifetime withdrawals |
governance() | address | Governance timelock address |
Write
| Function | Access | Description |
|---|---|---|
deposit(uint256 amount) | FeeSwapper / Governance | Deposit USDC into vault |
withdraw(address to, uint256 amount) | Governance (via Timelock) | Withdraw USDC |
setGovernance(address newGovernance) | Governance | Update governance address |
Security Model
- Only the
ElataTimelockcan callwithdraw() - Withdrawal proposals must pass governance vote + timelock delay
deposit()is permissioned to FeeSwapper and governance- No emergency withdrawal function — all exits go through governance
Fee Flow to Treasury
Events
| Event | Emitted When |
|---|---|
Deposited(address from, uint256 amount) | USDC deposited |
Withdrawn(address to, uint256 amount) | USDC withdrawn via governance |
GovernanceUpdated(address newGovernance) | Governance address changed |