use crate::await_promise;
use crate::{PromiseId, complete_promise};
use serde::Serialize;
use serde::de::DeserializeOwned;
pub fn blocking_await_promise_json<T: DeserializeOwned>(
promise_id: &PromiseId,
) -> Result<T, serde_json::Error> {
let bytes = crate::blocking_await_promise(promise_id);
serde_json::from_slice(&bytes)
}
pub async fn await_promise_json<T: DeserializeOwned>(
promise_id: &PromiseId,
) -> Result<T, serde_json::Error> {
let bytes = await_promise(promise_id).await;
serde_json::from_slice(&bytes)
}
pub fn complete_promise_json<T: Serialize>(
promise_id: &PromiseId,
value: T,
) -> Result<bool, serde_json::Error> {
let bytes = serde_json::to_vec(&value)?;
Ok(complete_promise(promise_id, &bytes))
}