// SPDX-License-Identifier: MIT pragma solidity 0.8.28; import "./Timestamps.sol"; import "./TokensPerSecond.sol"; struct Flow { Timestamp start; TokensPerSecond rate; } library Flows { function _totalAt( Flow memory flow, Timestamp timestamp ) internal pure returns (int128) { int128 rate = TokensPerSecond.unwrap(flow.rate); Timestamp start = flow.start; Timestamp end = timestamp; uint64 duration = Timestamp.unwrap(end) - Timestamp.unwrap(start); return rate * int128(uint128(duration)); } }