From 9fb7ec77c8aa444544c4dd20497d92c9f378ea4f Mon Sep 17 00:00:00 2001 From: AJ Taylor Date: Tue, 16 Aug 2022 14:32:38 -0600 Subject: [PATCH] add getTokenLargestAccounts rpc method to rust client (#26840) * add get token largest accounts rpc call to client * split to include with commitment --- client/src/nonblocking/rpc_client.rs | 25 +++++++++++++++++++++++++ client/src/rpc_client.rs | 18 ++++++++++++++++++ client/src/rpc_request.rs | 6 ++++++ 3 files changed, 49 insertions(+) diff --git a/client/src/nonblocking/rpc_client.rs b/client/src/nonblocking/rpc_client.rs index c6f0098d71eb64..ead129fa26ac60 100644 --- a/client/src/nonblocking/rpc_client.rs +++ b/client/src/nonblocking/rpc_client.rs @@ -5016,6 +5016,31 @@ impl RpcClient { .await } + pub async fn get_token_largest_accounts( + &self, + mint: &Pubkey, + ) -> ClientResult> { + Ok(self + .get_token_largest_accounts_with_commitment(mint, self.commitment()) + .await? + .value) + } + + pub async fn get_token_largest_accounts_with_commitment( + &self, + mint: &Pubkey, + commitment_config: CommitmentConfig, + ) -> RpcResult> { + self.send( + RpcRequest::GetTokenLargestAccounts, + json!([ + mint.to_string(), + self.maybe_map_commitment(commitment_config).await? + ]), + ) + .await + } + pub async fn get_token_supply(&self, mint: &Pubkey) -> ClientResult { Ok(self .get_token_supply_with_commitment(mint, self.commitment()) diff --git a/client/src/rpc_client.rs b/client/src/rpc_client.rs index 9946dfa5cfdf66..b89b906e57ade4 100644 --- a/client/src/rpc_client.rs +++ b/client/src/rpc_client.rs @@ -3901,6 +3901,24 @@ impl RpcClient { ) } + pub fn get_token_largest_accounts( + &self, + mint: &Pubkey, + ) -> ClientResult> { + self.invoke((self.rpc_client.as_ref()).get_token_largest_accounts(mint)) + } + + pub fn get_token_largest_accounts_with_commitment( + &self, + mint: &Pubkey, + commitment_config: CommitmentConfig, + ) -> RpcResult> { + self.invoke( + (self.rpc_client.as_ref()) + .get_token_largest_accounts_with_commitment(mint, commitment_config), + ) + } + pub fn get_token_supply(&self, mint: &Pubkey) -> ClientResult { self.invoke((self.rpc_client.as_ref()).get_token_supply(mint)) } diff --git a/client/src/rpc_request.rs b/client/src/rpc_request.rs index d3f0ceb1c0ad54..32f8c45183762d 100644 --- a/client/src/rpc_request.rs +++ b/client/src/rpc_request.rs @@ -100,6 +100,7 @@ pub enum RpcRequest { GetTokenAccountBalance, GetTokenAccountsByDelegate, GetTokenAccountsByOwner, + GetTokenLargestAccounts, GetTokenSupply, GetTransaction, GetTransactionCount, @@ -175,6 +176,7 @@ impl fmt::Display for RpcRequest { RpcRequest::GetTokenAccountsByDelegate => "getTokenAccountsByDelegate", RpcRequest::GetTokenAccountsByOwner => "getTokenAccountsByOwner", RpcRequest::GetTokenSupply => "getTokenSupply", + RpcRequest::GetTokenLargestAccounts => "getTokenLargestAccounts", RpcRequest::GetTransaction => "getTransaction", RpcRequest::GetTransactionCount => "getTransactionCount", RpcRequest::GetVersion => "getVersion", @@ -322,6 +324,10 @@ mod tests { let test_request = RpcRequest::SendTransaction; let request = test_request.build_request_json(1, Value::Null); assert_eq!(request["method"], "sendTransaction"); + + let test_request = RpcRequest::GetTokenLargestAccounts; + let request = test_request.build_request_json(1, Value::Null); + assert_eq!(request["method"], "getTokenLargestAccounts"); } #[test]