use bitcoin::secp256k1::{Keypair, Message, SecretKey};
use sidestr_core::block::secp;
use sidestr_nostr::event::{Event, UnsignedEvent};
use crate::error::{Error, Result};
pub fn pubkey_hex(secret: &SecretKey) -> String {
hex::encode(secret.x_only_public_key(secp()).0.serialize())
}
pub(crate) fn sign_event(secret: &SecretKey, mut event: UnsignedEvent) -> Result<Event> {
event.pubkey = pubkey_hex(secret);
let kp = Keypair::from_secret_key(secp(), secret);
let msg = Message::from_digest(event.id_bytes());
let sig = secp().sign_schnorr_with_aux_rand(&msg, &kp, &[0u8; 32]);
event
.with_signature(&hex::encode(sig.as_ref()))
.map_err(|e| Error::Event(e.to_string()))
}