use std::time::{SystemTime, UNIX_EPOCH};
use alloy::{
hex,
signers::{Signer, local::PrivateKeySigner},
};
use serde_json::Value;
fn utc_now_ms() -> u128 {
SystemTime::now()
.duration_since(UNIX_EPOCH)
.expect("time went backwards")
.as_millis()
}
pub async fn sign_ws_login(smart_contract_wallet: &str, wallet: &PrivateKeySigner) -> Value {
let timestamp = utc_now_ms().to_string();
let signature = wallet
.sign_message(timestamp.as_bytes())
.await
.expect("Failed to sign message");
let signature_hex = hex::encode(signature.as_bytes());
let result = serde_json::json!({
"wallet": smart_contract_wallet.to_string(),
"timestamp": timestamp,
"signature": signature_hex,
});
result
}