24 lines
537 B
Solidity
Raw Normal View History

// 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));
}
}