otx_pool_client/
otx_pool_client.rs1use 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}