otx_pool_client/
otx_pool_client.rs

1use super::{request, RpcClient};
2
3use otx_format::{jsonrpc_types::OpenTransaction, types::OpenTxStatus};
4use otx_pool_plugin_atomic_swap::SwapProposalWithOtxId;
5use otx_pool_plugin_protocol::PluginInfo;
6
7use anyhow::Result;
8use ckb_types::H256;
9
10pub struct OtxPoolRpcClient {
11    client: RpcClient,
12}
13
14impl OtxPoolRpcClient {
15    pub fn new(uri: String) -> Self {
16        let client = RpcClient::new(uri);
17        OtxPoolRpcClient { client }
18    }
19
20    pub fn submit_otx(&self, otx: OpenTransaction) -> Result<H256> {
21        request(&self.client, "submit_otx", vec![otx])
22    }
23
24    pub fn query_otx_status_by_id(&self, otx: H256) -> Result<Option<OpenTxStatus>> {
25        request(&self.client, "query_otx_status_by_id", vec![otx])
26    }
27
28    pub fn get_atomic_swap_info(&self) -> Result<PluginInfo> {
29        request(&self.client, "get_atomic_swap_info", ())
30    }
31
32    pub fn get_all_swap_proposals(&self) -> Result<Vec<SwapProposalWithOtxId>> {
33        request(&self.client, "get_all_swap_proposals", ())
34    }
35}