cfx_rpc_cfx_api/cfx/
debug.rs

1// Copyright 2019 Conflux Foundation. All rights reserved.
2// Conflux is free software and distributed under GNU General Public License.
3// See http://www.gnu.org/licenses/
4
5use cfx_rpc_cfx_types::{
6    AccountPendingInfo, AccountPendingTransactions, BlockHashOrEpochNumber,
7    Bytes as RpcBytes, Receipt as RpcReceipt, RpcAddress, TransactionRequest,
8};
9use cfx_types::{H256, H520, U128, U256, U64};
10use jsonrpsee::{core::RpcResult as JsonRpcResult, proc_macros::rpc};
11
12#[rpc(server, namespace = "cfx")]
13pub trait CfxDebugRpc {
14    #[method(name = "sendTransaction")]
15    async fn send_transaction(
16        &self, tx: TransactionRequest, password: Option<String>,
17    ) -> JsonRpcResult<H256>;
18
19    /// Returns accounts list.
20    #[method(name = "accounts")]
21    async fn accounts(&self) -> JsonRpcResult<Vec<RpcAddress>>;
22
23    /// Create a new account
24    #[method(name = "newAccount")]
25    async fn new_account(&self, password: String) -> JsonRpcResult<RpcAddress>;
26
27    /// Unlock an account
28    #[method(name = "unlockAccount")]
29    async fn unlock_account(
30        &self, address: RpcAddress, password: String, duration: Option<U128>,
31    ) -> JsonRpcResult<bool>;
32
33    /// Lock an account
34    #[method(name = "lockAccount")]
35    async fn lock_account(&self, address: RpcAddress) -> JsonRpcResult<bool>;
36
37    #[method(name = "sign")]
38    fn sign(
39        &self, data: RpcBytes, address: RpcAddress, password: Option<String>,
40    ) -> JsonRpcResult<H520>;
41
42    #[method(name = "signTransaction")]
43    fn sign_transaction(
44        &self, tx: TransactionRequest, password: Option<String>,
45    ) -> JsonRpcResult<String>;
46
47    #[method(name = "getEpochReceipts")]
48    async fn epoch_receipts(
49        &self, epoch: BlockHashOrEpochNumber,
50        include_eth_receipts: Option<bool>,
51    ) -> JsonRpcResult<Option<Vec<Vec<RpcReceipt>>>>;
52
53    /// Get transaction pending info by account address
54    #[method(name = "getAccountPendingInfo")]
55    async fn account_pending_info(
56        &self, address: RpcAddress,
57    ) -> JsonRpcResult<Option<AccountPendingInfo>>;
58
59    /// Get transaction pending info by account address
60    #[method(name = "getAccountPendingTransactions")]
61    async fn account_pending_transactions(
62        &self, address: RpcAddress, maybe_start_nonce: Option<U256>,
63        maybe_limit: Option<U64>,
64    ) -> JsonRpcResult<AccountPendingTransactions>;
65}