// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.
// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see .
//! Parity-specific rpc interface.
use std::collections::BTreeMap;
use jsonrpc_core::Error;
use jsonrpc_macros::Trailing;
use futures::BoxFuture;
use node_health::Health;
use v1::types::{
H160, H256, H512, U256, U64, Bytes, CallRequest,
Peers, Transaction, RpcSettings, Histogram,
TransactionStats, LocalTransactionStatus,
BlockNumber, ConsensusCapability, VersionInfo,
OperationsInfo, DappId, ChainStatus,
AccountInfo, HwAccountInfo, RichHeader,
};
build_rpc_trait! {
/// Parity-specific rpc interface.
pub trait Parity {
type Metadata;
/// Returns accounts information.
#[rpc(name = "parity_accountsInfo")]
fn accounts_info(&self, Trailing) -> Result, Error>;
/// Returns hardware accounts information.
#[rpc(name = "parity_hardwareAccountsInfo")]
fn hardware_accounts_info(&self) -> Result, Error>;
/// Get a list of paths to locked hardware wallets
#[rpc(name = "parity_lockedHardwareAccountsInfo")]
fn locked_hardware_accounts_info(&self) -> Result, Error>;
/// Returns default account for dapp.
#[rpc(meta, name = "parity_defaultAccount")]
fn default_account(&self, Self::Metadata) -> BoxFuture;
/// Returns current transactions limit.
#[rpc(name = "parity_transactionsLimit")]
fn transactions_limit(&self) -> Result;
/// Returns mining extra data.
#[rpc(name = "parity_extraData")]
fn extra_data(&self) -> Result;
/// Returns mining gas floor target.
#[rpc(name = "parity_gasFloorTarget")]
fn gas_floor_target(&self) -> Result;
/// Returns mining gas floor cap.
#[rpc(name = "parity_gasCeilTarget")]
fn gas_ceil_target(&self) -> Result;
/// Returns minimal gas price for transaction to be included in queue.
#[rpc(name = "parity_minGasPrice")]
fn min_gas_price(&self) -> Result;
/// Returns latest logs
#[rpc(name = "parity_devLogs")]
fn dev_logs(&self) -> Result, Error>;
/// Returns logs levels
#[rpc(name = "parity_devLogsLevels")]
fn dev_logs_levels(&self) -> Result;
/// Returns chain name - DEPRECATED. Use `parity_chainName` instead.
#[rpc(name = "parity_netChain")]
fn net_chain(&self) -> Result;
/// Returns peers details
#[rpc(name = "parity_netPeers")]
fn net_peers(&self) -> Result;
/// Returns network port
#[rpc(name = "parity_netPort")]
fn net_port(&self) -> Result;
/// Returns rpc settings
#[rpc(name = "parity_rpcSettings")]
fn rpc_settings(&self) -> Result;
/// Returns node name
#[rpc(name = "parity_nodeName")]
fn node_name(&self) -> Result;
/// Returns default extra data
#[rpc(name = "parity_defaultExtraData")]
fn default_extra_data(&self) -> Result;
/// Returns distribution of gas price in latest blocks.
#[rpc(async, name = "parity_gasPriceHistogram")]
fn gas_price_histogram(&self) -> BoxFuture;
/// Returns number of unsigned transactions waiting in the signer queue (if signer enabled)
/// Returns error when signer is disabled
#[rpc(name = "parity_unsignedTransactionsCount")]
fn unsigned_transactions_count(&self) -> Result;
/// Returns a cryptographically random phrase sufficient for securely seeding a secret key.
#[rpc(name = "parity_generateSecretPhrase")]
fn generate_secret_phrase(&self) -> Result;
/// Returns whatever address would be derived from the given phrase if it were to seed a brainwallet.
#[rpc(name = "parity_phraseToAddress")]
fn phrase_to_address(&self, String) -> Result;
/// Returns the value of the registrar for this network.
#[rpc(name = "parity_registryAddress")]
fn registry_address(&self) -> Result