use df_hyperliquid_core::utils::Address;
use super::RENEW_BEFORE_MS;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Status {
Unregistered,
Expiring { expires_at: u64 },
Ready { expires_at: u64 },
}
#[must_use]
pub fn status(
key: Address,
held_until_ms: u64,
registered: &[(Address, u64)],
indexed_seconds: u64,
now_ms: u64,
) -> Status {
let Some((_, registered_expiry)) = registered.iter().find(|(address, _)| *address == key) else {
return Status::Unregistered;
};
let expires_at = (*registered_expiry).min(held_until_ms / 1000);
let now = now_ms.max(indexed_seconds.saturating_mul(1000));
if expires_at.saturating_mul(1000) > now.saturating_add(RENEW_BEFORE_MS) {
Status::Ready { expires_at }
} else {
Status::Expiring { expires_at }
}
}
#[cfg(test)]
#[path = "tests/status.rs"]
mod tests;