A function can return several values as a tuple by declaring multiple return types, and the caller destructures them positionally.
@external
@view
def stats() -> (uint256, uint256):
return self.total_supply, self.total_staked
@external
def use_stats():
supply: uint256 = 0
staked: uint256 = 0
supply, staked = self.stats()This avoids allocating a throwaway struct just to bundle a couple of related values for a single call site.