use crate::bindings::vtx::api::vtx_events::{EventContext, VtxEvent};
use crate::error::{VtxError, VtxResult};
use serde::de::DeserializeOwned;
pub type PluginEvent = VtxEvent;
pub type PluginEventContext = EventContext;
pub trait VtxEventExt {
fn payload_json<T: DeserializeOwned>(&self) -> VtxResult<T>;
}
impl VtxEventExt for VtxEvent {
fn payload_json<T: DeserializeOwned>(&self) -> VtxResult<T> {
serde_json::from_str(&self.payload).map_err(|e| VtxError::SerializationError(e.to_string()))
}
}