use std::future::Future;
use std::pin::Pin;
use futures_core::Stream;
use crate::error::ClientError;
pub type ValueStream = Pin<Box<dyn Stream<Item = Result<serde_json::Value, ClientError>> + Send>>;
pub trait Link: Send + Sync {
fn call(
&self,
path: &str,
input: serde_json::Value,
) -> impl Future<Output = Result<serde_json::Value, ClientError>> + Send;
fn subscribe(
&self,
path: &str,
input: serde_json::Value,
last_event_id: Option<u64>,
) -> impl Future<Output = Result<ValueStream, ClientError>> + Send;
}