use serde::{Deserialize, Serialize};
use crate::error::{Result, SyncwebError};
pub trait SignedGossipMessage: Serialize + for<'de> Deserialize<'de> {
fn verify_signature(&self) -> Result<()>;
fn to_wire_bytes(&self) -> Result<Vec<u8>> {
serde_json::to_vec(self).map_err(|error| SyncwebError::operation("serialize gossip message", error))
}
fn from_wire_bytes(bytes: &[u8]) -> Result<Self> {
serde_json::from_slice(bytes).map_err(|error| SyncwebError::operation("deserialize gossip message", error))
}
}