#[cfg(feature = "base_node")]
mod service;
#[cfg(feature = "base_node")]
use crate::{
chain_storage::{async_db::AsyncBlockchainDb, BlockchainBackend},
mempool::service::MempoolHandle,
};
#[cfg(feature = "base_node")]
pub use service::BaseNodeWalletRpcService;
use crate::proto::{
base_node::{TxQueryResponse, TxSubmissionResponse},
types::{Signature, Transaction},
};
use tari_comms::protocol::rpc::{Request, Response, RpcStatus};
use tari_comms_rpc_macros::tari_rpc;
#[tari_rpc(protocol_name = b"t/bnwallet/1", server_struct = BaseNodeWalletRpcServer, client_struct = BaseNodeWalletRpcClient)]
pub trait BaseNodeWalletService: Send + Sync + 'static {
#[rpc(method = 1)]
async fn submit_transaction(
&self,
request: Request<Transaction>,
) -> Result<Response<TxSubmissionResponse>, RpcStatus>;
#[rpc(method = 2)]
async fn transaction_query(&self, request: Request<Signature>) -> Result<Response<TxQueryResponse>, RpcStatus>;
}
#[cfg(feature = "base_node")]
pub fn create_base_node_wallet_rpc_service<B: BlockchainBackend + 'static>(
db: AsyncBlockchainDb<B>,
mempool: MempoolHandle,
) -> BaseNodeWalletRpcServer<BaseNodeWalletRpcService<B>>
{
BaseNodeWalletRpcServer::new(BaseNodeWalletRpcService::new(db, mempool))
}