@@ -41,7 +41,9 @@ use witnet_data_structures::{
41
41
} ;
42
42
use witnet_node:: actors:: {
43
43
chain_manager:: run_dr_locally,
44
- json_rpc:: api:: { AddrType , GetBlockChainParams , GetTransactionOutput , PeersResult } ,
44
+ json_rpc:: api:: {
45
+ AddrType , GetBlockChainParams , GetTransactionOutput , PeersResult , QueryStakesArgument ,
46
+ } ,
45
47
messages:: {
46
48
AuthorizeStake , BuildDrt , BuildStakeParams , BuildStakeResponse , BuildVtt , GetBalanceTarget ,
47
49
GetReputationResult , MagicEither , SignalingInfo , StakeAuthorization ,
@@ -1826,6 +1828,37 @@ pub fn priority(addr: SocketAddr, json: bool) -> Result<(), failure::Error> {
1826
1828
Ok ( ( ) )
1827
1829
}
1828
1830
1831
+ pub fn query_stakes (
1832
+ addr : SocketAddr ,
1833
+ validator : Option < String > ,
1834
+ withdrawer : Option < String > ,
1835
+ ) -> Result < ( ) , failure:: Error > {
1836
+ let mut stream = start_client ( addr) ?;
1837
+ let params = if validator. is_some ( ) && withdrawer. is_some ( ) {
1838
+ Some ( QueryStakesArgument :: Key ( (
1839
+ validator. unwrap ( ) ,
1840
+ withdrawer. unwrap ( ) ,
1841
+ ) ) )
1842
+ } else if validator. is_some ( ) {
1843
+ Some ( QueryStakesArgument :: Validator ( validator. unwrap ( ) ) )
1844
+ } else if withdrawer. is_some ( ) {
1845
+ Some ( QueryStakesArgument :: Withdrawer ( withdrawer. unwrap ( ) ) )
1846
+ } else {
1847
+ None
1848
+ } ;
1849
+
1850
+ let response = send_request (
1851
+ & mut stream,
1852
+ & format ! (
1853
+ r#"{{"jsonrpc": "2.0","method": "queryStakes", "params": {}, "id": 1}}"# ,
1854
+ serde_json:: to_string( & params) . unwrap( )
1855
+ ) ,
1856
+ ) ?;
1857
+ log:: info!( "{}" , response) ;
1858
+
1859
+ Ok ( ( ) )
1860
+ }
1861
+
1829
1862
#[ derive( Serialize , Deserialize ) ]
1830
1863
struct SignatureWithData {
1831
1864
address : String ,
0 commit comments