use df_hyperliquid_core::utils::Address;
use super::Refusal;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RegisterSessionKey {
pub user: Address,
pub key: Address,
pub expiry: u64,
pub fee_address: Address,
pub nonce: u128,
pub deadline: u64,
}
impl RegisterSessionKey {
pub fn new(user: Address, key: Address, expiry: u64, nonce: u128, deadline: u64) -> Result<Self, Refusal> {
if key == user || key.is_zero() {
return Err(Refusal::BadSessionKey);
}
if expiry <= deadline {
return Err(Refusal::ExpiresFirst);
}
Ok(RegisterSessionKey { user, key, expiry, fee_address: Address::ZERO, nonce, deadline })
}
}