use crate::constants::{EPOCH_START, SECONDS_PER_WEEK};
use cosmwasm_std::{StdError, StdResult, Uint128};
pub fn get_period(time: u64) -> StdResult<u64> {
if time < EPOCH_START {
Err(StdError::generic_err("Invalid time"))
} else {
Ok((time - EPOCH_START) / SECONDS_PER_WEEK)
}
}
pub fn get_s_from_period(period: u64) -> u64 {
EPOCH_START + period * SECONDS_PER_WEEK
}
pub fn get_periods_count(interval: u64) -> u64 {
interval / SECONDS_PER_WEEK
}
pub fn calc_voting_power(
slope: Uint128,
old_vp: Uint128,
start_period: u64,
end_period: u64,
) -> Uint128 {
let shift =
slope.checked_mul(Uint128::from(end_period - start_period)).unwrap_or_else(|_| Uint128::zero());
old_vp.saturating_sub(shift)
}