use crate::types::{FileInfo, Segment, SegmentWithProof, Status}; use jsonrpsee::core::RpcResult; use jsonrpsee::proc_macros::rpc; use shared_types::DataRoot; #[rpc(server, client, namespace = "zgs")] pub trait Rpc { #[method(name = "getStatus")] async fn get_status(&self) -> RpcResult; #[method(name = "uploadSegment")] async fn upload_segment(&self, segment: SegmentWithProof) -> RpcResult<()>; #[method(name = "uploadSegments")] async fn upload_segments(&self, segments: Vec) -> RpcResult<()>; #[method(name = "downloadSegment")] async fn download_segment( &self, data_root: DataRoot, start_index: usize, end_index: usize, ) -> RpcResult>; #[method(name = "downloadSegmentWithProof")] async fn download_segment_with_proof( &self, data_root: DataRoot, index: usize, ) -> RpcResult>; #[method(name = "getFileInfo")] async fn get_file_info(&self, data_root: DataRoot) -> RpcResult>; #[method(name = "getFileInfoByTxSeq")] async fn get_file_info_by_tx_seq(&self, tx_seq: u64) -> RpcResult>; }