Browse Source

Use new client crates (#27360)

* Update ancillary cli crates

* Update cli

* Update command-line tools

* Update rpc, etc

* Update client-test

* Update core, validator

* Update local-cluster
Tyera Eulberg 3 years ago
parent
commit
b8b3d723da
99 changed files with 390 additions and 331 deletions
  1. 48 16
      Cargo.lock
  2. 1 0
      accounts-cluster-bench/Cargo.toml
  3. 2 1
      accounts-cluster-bench/src/main.rs
  4. 1 1
      banking-bench/Cargo.toml
  5. 1 1
      banking-bench/src/main.rs
  6. 1 0
      banks-server/Cargo.toml
  7. 1 1
      banks-server/src/banks_server.rs
  8. 1 1
      banks-server/src/rpc_banks_service.rs
  9. 5 0
      bench-tps/Cargo.toml
  10. 1 2
      bench-tps/src/bench.rs
  11. 2 1
      bench-tps/src/bench_tps_client.rs
  12. 1 1
      bench-tps/src/bench_tps_client/rpc_client.rs
  13. 1 1
      bench-tps/src/bench_tps_client/thin_client.rs
  14. 1 1
      bench-tps/src/bench_tps_client/tpu_client.rs
  15. 1 1
      bench-tps/src/cli.rs
  16. 6 6
      bench-tps/src/main.rs
  17. 6 6
      bench-tps/tests/bench_tps.rs
  18. 1 1
      cli-config/src/lib.rs
  19. 1 1
      cli-output/Cargo.toml
  20. 1 1
      cli-output/src/cli_output.rs
  21. 4 1
      cli/Cargo.toml
  22. 2 1
      cli/src/address_lookup_table.rs
  23. 5 7
      cli/src/checks.rs
  24. 17 18
      cli/src/cli.rs
  25. 15 17
      cli/src/cluster_query.rs
  26. 2 3
      cli/src/feature.rs
  27. 1 1
      cli/src/inflation.rs
  28. 1 1
      cli/src/main.rs
  29. 2 1
      cli/src/nonce.rs
  30. 10 8
      cli/src/program.rs
  31. 1 1
      cli/src/spend_utils.rs
  32. 14 13
      cli/src/stake.rs
  33. 1 1
      cli/src/test_utils.rs
  34. 1 1
      cli/src/validator_info.rs
  35. 9 10
      cli/src/vote.rs
  36. 4 5
      cli/src/wallet.rs
  37. 4 7
      cli/tests/nonce.rs
  38. 1 1
      cli/tests/program.rs
  39. 1 1
      cli/tests/request_airdrop.rs
  40. 21 24
      cli/tests/stake.rs
  41. 8 11
      cli/tests/transfer.rs
  42. 2 4
      cli/tests/vote.rs
  43. 3 1
      client-test/Cargo.toml
  44. 9 10
      client-test/tests/client.rs
  45. 2 1
      core/Cargo.toml
  46. 1 1
      core/benches/banking_stage.rs
  47. 1 1
      core/src/banking_stage.rs
  48. 1 1
      core/src/replay_stage.rs
  49. 1 1
      core/src/retransmit_stage.rs
  50. 1 1
      core/src/tpu.rs
  51. 1 1
      core/src/tvu.rs
  52. 4 2
      core/src/validator.rs
  53. 1 1
      core/src/warm_quic_cache_service.rs
  54. 3 1
      dos/Cargo.toml
  55. 6 6
      dos/src/main.rs
  56. 2 1
      gossip/Cargo.toml
  57. 2 1
      gossip/src/gossip_service.rs
  58. 1 1
      install/Cargo.toml
  59. 1 1
      install/src/command.rs
  60. 5 1
      local-cluster/Cargo.toml
  61. 1 1
      local-cluster/src/cluster.rs
  62. 2 1
      local-cluster/src/cluster_tests.rs
  63. 4 6
      local-cluster/src/local_cluster.rs
  64. 1 1
      local-cluster/tests/common.rs
  65. 7 7
      local-cluster/tests/local_cluster.rs
  66. 14 6
      programs/bpf/Cargo.lock
  67. 4 1
      rpc-test/Cargo.toml
  68. 3 3
      rpc-test/tests/nonblocking.rs
  69. 13 10
      rpc-test/tests/rpc.rs
  70. 2 1
      rpc/Cargo.toml
  71. 1 1
      rpc/src/optimistically_confirmed_bank_tracker.rs
  72. 1 1
      rpc/src/parsed_token_accounts.rs
  73. 23 23
      rpc/src/rpc.rs
  74. 1 1
      rpc/src/rpc_cache.rs
  75. 1 1
      rpc/src/rpc_completed_slots_service.rs
  76. 4 4
      rpc/src/rpc_pubsub.rs
  77. 2 2
      rpc/src/rpc_service.rs
  78. 1 1
      rpc/src/rpc_subscription_tracker.rs
  79. 5 5
      rpc/src/rpc_subscriptions.rs
  80. 1 1
      send-transaction-service/Cargo.toml
  81. 1 1
      send-transaction-service/src/send_transaction_service.rs
  82. 2 1
      stake-accounts/Cargo.toml
  83. 2 1
      stake-accounts/src/main.rs
  84. 2 0
      test-validator/Cargo.toml
  85. 2 5
      test-validator/src/lib.rs
  86. 2 1
      tokens/Cargo.toml
  87. 5 5
      tokens/src/commands.rs
  88. 1 1
      tokens/src/main.rs
  89. 1 1
      tokens/src/spl_token.rs
  90. 1 1
      tokens/tests/commands.rs
  91. 1 0
      transaction-dos/Cargo.toml
  92. 2 1
      transaction-dos/src/main.rs
  93. 3 1
      validator/Cargo.toml
  94. 1 1
      validator/src/bin/solana-test-validator.rs
  95. 1 1
      validator/src/bootstrap.rs
  96. 10 13
      validator/src/dashboard.rs
  97. 3 4
      validator/src/main.rs
  98. 2 1
      watchtower/Cargo.toml
  99. 3 2
      watchtower/src/main.rs

+ 48 - 16
Cargo.lock

@@ -4561,6 +4561,7 @@ dependencies = [
  "solana-logger 1.12.0",
  "solana-measure",
  "solana-net-utils",
+ "solana-rpc-client",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
@@ -4609,7 +4610,6 @@ dependencies = [
  "log",
  "rand 0.7.3",
  "rayon",
- "solana-client",
  "solana-core",
  "solana-gossip",
  "solana-ledger",
@@ -4620,6 +4620,7 @@ dependencies = [
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
+ "solana-tpu-client",
  "solana-version",
 ]
 
@@ -4661,6 +4662,7 @@ dependencies = [
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
+ "solana-tpu-client",
  "tarpc",
  "tokio",
  "tokio-serde",
@@ -4703,10 +4705,15 @@ dependencies = [
  "solana-metrics",
  "solana-net-utils",
  "solana-rpc",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
+ "solana-rpc-client-nonce-utils",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
  "solana-test-validator",
+ "solana-thin-client",
+ "solana-tpu-client",
  "solana-version",
  "thiserror",
 ]
@@ -4878,16 +4885,19 @@ dependencies = [
  "solana-clap-utils",
  "solana-cli-config",
  "solana-cli-output",
- "solana-client",
  "solana-config-program",
  "solana-faucet",
  "solana-logger 1.12.0",
  "solana-program-runtime",
+ "solana-pubsub-client",
  "solana-remote-wallet",
  "solana-rpc-client",
+ "solana-rpc-client-api",
+ "solana-rpc-client-nonce-utils",
  "solana-sdk 1.12.0",
  "solana-streamer",
  "solana-test-validator",
+ "solana-tpu-client",
  "solana-transaction-status",
  "solana-version",
  "solana-vote-program",
@@ -4932,7 +4942,7 @@ dependencies = [
  "solana-account-decoder",
  "solana-clap-utils",
  "solana-cli-config",
- "solana-client",
+ "solana-rpc-client-api",
  "solana-sdk 1.12.0",
  "solana-transaction-status",
  "solana-vote-program",
@@ -4961,15 +4971,17 @@ dependencies = [
  "futures-util",
  "serde_json",
  "serial_test",
- "solana-client",
  "solana-ledger",
  "solana-logger 1.12.0",
  "solana-measure",
  "solana-merkle-tree",
  "solana-metrics",
  "solana-perf",
+ "solana-pubsub-client",
  "solana-rayon-threadlimit",
  "solana-rpc",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
@@ -5033,7 +5045,6 @@ dependencies = [
  "serial_test",
  "solana-address-lookup-table-program",
  "solana-bloom",
- "solana-client",
  "solana-entry",
  "solana-frozen-abi 1.12.0",
  "solana-frozen-abi-macro 1.12.0",
@@ -5049,11 +5060,13 @@ dependencies = [
  "solana-program-runtime",
  "solana-rayon-threadlimit",
  "solana-rpc",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
  "solana-stake-program",
  "solana-streamer",
+ "solana-tpu-client",
  "solana-transaction-status",
  "solana-version",
  "solana-vote-program",
@@ -5081,7 +5094,6 @@ dependencies = [
  "serde",
  "serial_test",
  "solana-bench-tps",
- "solana-client",
  "solana-core",
  "solana-faucet",
  "solana-gossip",
@@ -5091,8 +5103,11 @@ dependencies = [
  "solana-net-utils",
  "solana-perf",
  "solana-rpc",
+ "solana-rpc-client",
  "solana-sdk 1.12.0",
  "solana-streamer",
+ "solana-thin-client",
+ "solana-tpu-client",
  "solana-version",
 ]
 
@@ -5341,7 +5356,6 @@ dependencies = [
  "serial_test",
  "solana-bloom",
  "solana-clap-utils",
- "solana-client",
  "solana-entry",
  "solana-frozen-abi 1.12.0",
  "solana-frozen-abi-macro 1.12.0",
@@ -5355,6 +5369,8 @@ dependencies = [
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
+ "solana-thin-client",
+ "solana-tpu-client",
  "solana-version",
  "solana-vote-program",
  "thiserror",
@@ -5381,9 +5397,9 @@ dependencies = [
  "serde",
  "serde_yaml",
  "solana-clap-utils",
- "solana-client",
  "solana-config-program",
  "solana-logger 1.12.0",
+ "solana-rpc-client",
  "solana-sdk 1.12.0",
  "solana-version",
  "tar",
@@ -5522,7 +5538,6 @@ dependencies = [
  "rand 0.7.3",
  "rayon",
  "serial_test",
- "solana-client",
  "solana-config-program",
  "solana-core",
  "solana-download-utils",
@@ -5530,10 +5545,15 @@ dependencies = [
  "solana-gossip",
  "solana-ledger",
  "solana-logger 1.12.0",
+ "solana-pubsub-client",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-stake-program",
  "solana-streamer",
+ "solana-thin-client",
+ "solana-tpu-client",
  "solana-vote-program",
  "tempfile",
 ]
@@ -5944,7 +5964,6 @@ dependencies = [
  "soketto",
  "solana-account-decoder",
  "solana-address-lookup-table-program",
- "solana-client",
  "solana-entry",
  "solana-faucet",
  "solana-gossip",
@@ -5955,12 +5974,14 @@ dependencies = [
  "solana-perf",
  "solana-poh",
  "solana-rayon-threadlimit",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
  "solana-stake-program",
  "solana-storage-bigtable",
  "solana-streamer",
+ "solana-tpu-client",
  "solana-transaction-status",
  "solana-version",
  "solana-vote-program",
@@ -6052,12 +6073,15 @@ dependencies = [
  "serde",
  "serde_json",
  "solana-account-decoder",
- "solana-client",
  "solana-logger 1.12.0",
+ "solana-pubsub-client",
  "solana-rpc",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-sdk 1.12.0",
  "solana-streamer",
  "solana-test-validator",
+ "solana-tpu-client",
  "solana-transaction-status",
  "tokio",
 ]
@@ -6260,12 +6284,12 @@ version = "1.12.0"
 dependencies = [
  "crossbeam-channel",
  "log",
- "solana-client",
  "solana-logger 1.12.0",
  "solana-measure",
  "solana-metrics",
  "solana-runtime",
  "solana-sdk 1.12.0",
+ "solana-tpu-client",
 ]
 
 [[package]]
@@ -6275,8 +6299,9 @@ dependencies = [
  "clap 2.33.3",
  "solana-clap-utils",
  "solana-cli-config",
- "solana-client",
  "solana-remote-wallet",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-stake-program",
@@ -6430,9 +6455,11 @@ dependencies = [
  "solana-program-runtime",
  "solana-program-test",
  "solana-rpc",
+ "solana-rpc-client",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
+ "solana-tpu-client",
  "tokio",
 ]
 
@@ -6467,9 +6494,10 @@ dependencies = [
  "solana-account-decoder",
  "solana-clap-utils",
  "solana-cli-config",
- "solana-client",
  "solana-logger 1.12.0",
  "solana-remote-wallet",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-sdk 1.12.0",
  "solana-streamer",
  "solana-test-validator",
@@ -6537,6 +6565,7 @@ dependencies = [
  "solana-logger 1.12.0",
  "solana-measure",
  "solana-net-utils",
+ "solana-rpc-client",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
@@ -6606,7 +6635,6 @@ dependencies = [
  "signal-hook",
  "solana-clap-utils",
  "solana-cli-config",
- "solana-client",
  "solana-core",
  "solana-download-utils",
  "solana-entry",
@@ -6620,12 +6648,15 @@ dependencies = [
  "solana-perf",
  "solana-poh",
  "solana-rpc",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
  "solana-storage-bigtable",
  "solana-streamer",
  "solana-test-validator",
+ "solana-tpu-client",
  "solana-version",
  "solana-vote-program",
  "symlink",
@@ -6677,10 +6708,11 @@ dependencies = [
  "solana-clap-utils",
  "solana-cli-config",
  "solana-cli-output",
- "solana-client",
  "solana-logger 1.12.0",
  "solana-metrics",
  "solana-notifier",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-sdk 1.12.0",
  "solana-version",
 ]

+ 1 - 0
accounts-cluster-bench/Cargo.toml

@@ -21,6 +21,7 @@ solana-gossip = { path = "../gossip", version = "=1.12.0" }
 solana-logger = { path = "../logger", version = "=1.12.0" }
 solana-measure = { path = "../measure", version = "=1.12.0" }
 solana-net-utils = { path = "../net-utils", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }

+ 2 - 1
accounts-cluster-bench/src/main.rs

@@ -6,9 +6,10 @@ use {
     rayon::prelude::*,
     solana_account_decoder::parse_token::spl_token_pubkey,
     solana_clap_utils::input_parsers::pubkey_of,
-    solana_client::{rpc_client::RpcClient, transaction_executor::TransactionExecutor},
+    solana_client::transaction_executor::TransactionExecutor,
     solana_faucet::faucet::{request_airdrop_transaction, FAUCET_PORT},
     solana_gossip::gossip_service::discover,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_runtime::inline_spl_token,
     solana_sdk::{
         commitment_config::CommitmentConfig,

+ 1 - 1
banking-bench/Cargo.toml

@@ -14,7 +14,6 @@ crossbeam-channel = "0.5"
 log = "0.4.17"
 rand = "0.7.0"
 rayon = "1.5.3"
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-core = { path = "../core", version = "=1.12.0" }
 solana-gossip = { path = "../gossip", version = "=1.12.0" }
 solana-ledger = { path = "../ledger", version = "=1.12.0" }
@@ -25,6 +24,7 @@ solana-poh = { path = "../poh", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 
 [package.metadata.docs.rs]

+ 1 - 1
banking-bench/src/main.rs

@@ -5,7 +5,6 @@ use {
     log::*,
     rand::{thread_rng, Rng},
     rayon::prelude::*,
-    solana_client::connection_cache::{ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE},
     solana_core::banking_stage::BankingStage,
     solana_gossip::cluster_info::{ClusterInfo, Node},
     solana_ledger::{
@@ -29,6 +28,7 @@ use {
         transaction::Transaction,
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_tpu_client::connection_cache::{ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE},
     std::{
         sync::{atomic::Ordering, Arc, RwLock},
         thread::sleep,

+ 1 - 0
banks-server/Cargo.toml

@@ -18,6 +18,7 @@ solana-client = { path = "../client", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-send-transaction-service = { path = "../send-transaction-service", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 tarpc = { version = "0.29.0", features = ["full"] }
 tokio = { version = "1", features = ["full"] }
 tokio-serde = { version = "0.8", features = ["bincode"] }

+ 1 - 1
banks-server/src/banks_server.rs

@@ -6,7 +6,6 @@ use {
         Banks, BanksRequest, BanksResponse, BanksTransactionResultWithSimulation,
         TransactionConfirmationStatus, TransactionSimulationDetails, TransactionStatus,
     },
-    solana_client::connection_cache::ConnectionCache,
     solana_runtime::{
         bank::{Bank, TransactionSimulationResult},
         bank_forks::BankForks,
@@ -28,6 +27,7 @@ use {
         send_transaction_service::{SendTransactionService, TransactionInfo},
         tpu_info::NullTpuInfo,
     },
+    solana_tpu_client::connection_cache::ConnectionCache,
     std::{
         convert::TryFrom,
         io,

+ 1 - 1
banks-server/src/rpc_banks_service.rs

@@ -3,8 +3,8 @@
 use {
     crate::banks_server::start_tcp_server,
     futures::{future::FutureExt, pin_mut, prelude::stream::StreamExt, select},
-    solana_client::connection_cache::ConnectionCache,
     solana_runtime::{bank_forks::BankForks, commitment::BlockCommitmentCache},
+    solana_tpu_client::connection_cache::ConnectionCache,
     std::{
         net::SocketAddr,
         sync::{

+ 5 - 0
bench-tps/Cargo.toml

@@ -28,9 +28,14 @@ solana-measure = { path = "../measure", version = "=1.12.0" }
 solana-metrics = { path = "../metrics", version = "=1.12.0" }
 solana-net-utils = { path = "../net-utils", version = "=1.12.0" }
 solana-rpc = { path = "../rpc", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
+solana-rpc-client-nonce-utils = { path = "../rpc-client-nonce-utils", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-thin-client = { path = "../thin-client", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 thiserror = "1.0"
 

+ 1 - 2
bench-tps/src/bench.rs

@@ -8,7 +8,6 @@ use {
     log::*,
     rand::distributions::{Distribution, Uniform},
     rayon::prelude::*,
-    solana_client::nonce_utils,
     solana_metrics::{self, datapoint_info},
     solana_sdk::{
         clock::{DEFAULT_MS_PER_SLOT, DEFAULT_S_PER_SLOT, MAX_PROCESSING_AGE},
@@ -547,7 +546,7 @@ fn get_nonce_blockhash<T: 'static + BenchTpsClient + Send + Sync + ?Sized>(
     let nonce_account = client
         .get_account(&nonce_account_pubkey)
         .unwrap_or_else(|error| panic!("{:?}", error));
-    let nonce_data = nonce_utils::data_from_account(&nonce_account)
+    let nonce_data = solana_rpc_client_nonce_utils::data_from_account(&nonce_account)
         .unwrap_or_else(|error| panic!("{:?}", error));
     nonce_data.blockhash()
 }

+ 2 - 1
bench-tps/src/bench_tps_client.rs

@@ -1,10 +1,11 @@
 use {
-    solana_client::{client_error::ClientError, tpu_client::TpuSenderError},
+    solana_rpc_client_api::client_error::Error as ClientError,
     solana_sdk::{
         account::Account, commitment_config::CommitmentConfig, epoch_info::EpochInfo, hash::Hash,
         message::Message, pubkey::Pubkey, signature::Signature, transaction::Transaction,
         transport::TransportError,
     },
+    solana_tpu_client::tpu_client::TpuSenderError,
     thiserror::Error,
 };
 

+ 1 - 1
bench-tps/src/bench_tps_client/rpc_client.rs

@@ -1,6 +1,6 @@
 use {
     crate::bench_tps_client::{BenchTpsClient, BenchTpsError, Result},
-    solana_client::rpc_client::RpcClient,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         account::Account, commitment_config::CommitmentConfig, epoch_info::EpochInfo, hash::Hash,
         message::Message, pubkey::Pubkey, signature::Signature, transaction::Transaction,

+ 1 - 1
bench-tps/src/bench_tps_client/thin_client.rs

@@ -1,6 +1,5 @@
 use {
     crate::bench_tps_client::{BenchTpsClient, BenchTpsError, Result},
-    solana_client::thin_client::ThinClient,
     solana_sdk::{
         account::Account,
         client::{AsyncClient, Client, SyncClient},
@@ -12,6 +11,7 @@ use {
         signature::Signature,
         transaction::Transaction,
     },
+    solana_thin_client::thin_client::ThinClient,
 };
 
 impl BenchTpsClient for ThinClient {

+ 1 - 1
bench-tps/src/bench_tps_client/tpu_client.rs

@@ -1,10 +1,10 @@
 use {
     crate::bench_tps_client::{BenchTpsClient, BenchTpsError, Result},
-    solana_client::tpu_client::TpuClient,
     solana_sdk::{
         account::Account, commitment_config::CommitmentConfig, epoch_info::EpochInfo, hash::Hash,
         message::Message, pubkey::Pubkey, signature::Signature, transaction::Transaction,
     },
+    solana_tpu_client::tpu_client::TpuClient,
 };
 
 impl BenchTpsClient for TpuClient {

+ 1 - 1
bench-tps/src/cli.rs

@@ -2,12 +2,12 @@ use {
     clap::{crate_description, crate_name, App, Arg, ArgMatches},
     solana_clap_utils::input_validators::{is_url, is_url_or_moniker},
     solana_cli_config::{ConfigInput, CONFIG_FILE},
-    solana_client::connection_cache::{DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC},
     solana_sdk::{
         fee_calculator::FeeRateGovernor,
         pubkey::Pubkey,
         signature::{read_keypair_file, Keypair},
     },
+    solana_tpu_client::connection_cache::{DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC},
     std::{net::SocketAddr, process::exit, time::Duration},
 };
 

+ 6 - 6
bench-tps/src/main.rs

@@ -10,19 +10,19 @@ use {
         keypairs::get_keypairs,
         send_batch::{generate_durable_nonce_accounts, generate_keypairs},
     },
-    solana_client::{
-        connection_cache::ConnectionCache,
-        rpc_client::RpcClient,
-        thin_client::ThinClient,
-        tpu_client::{TpuClient, TpuClientConfig},
-    },
     solana_genesis::Base64Account,
     solana_gossip::gossip_service::{discover_cluster, get_client, get_multi_client},
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         commitment_config::CommitmentConfig, fee_calculator::FeeRateGovernor, pubkey::Pubkey,
         system_program,
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_thin_client::thin_client::ThinClient,
+    solana_tpu_client::{
+        connection_cache::ConnectionCache,
+        tpu_client::{TpuClient, TpuClientConfig},
+    },
     std::{
         collections::HashMap, fs::File, io::prelude::*, net::SocketAddr, path::Path, process::exit,
         sync::Arc,

+ 6 - 6
bench-tps/tests/bench_tps.rs

@@ -7,12 +7,6 @@ use {
         cli::Config,
         send_batch::generate_durable_nonce_accounts,
     },
-    solana_client::{
-        connection_cache::ConnectionCache,
-        rpc_client::RpcClient,
-        thin_client::ThinClient,
-        tpu_client::{TpuClient, TpuClientConfig},
-    },
     solana_core::validator::ValidatorConfig,
     solana_faucet::faucet::run_local_faucet,
     solana_local_cluster::{
@@ -20,12 +14,18 @@ use {
         validator_configs::make_identical_validator_configs,
     },
     solana_rpc::rpc::JsonRpcConfig,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         commitment_config::CommitmentConfig,
         signature::{Keypair, Signer},
     },
     solana_streamer::socket::SocketAddrSpace,
     solana_test_validator::TestValidator,
+    solana_thin_client::thin_client::ThinClient,
+    solana_tpu_client::{
+        connection_cache::ConnectionCache,
+        tpu_client::{TpuClient, TpuClientConfig},
+    },
     std::{sync::Arc, time::Duration},
 };
 

+ 1 - 1
cli-config/src/lib.rs

@@ -23,7 +23,7 @@
 //! Two important fields of `Config` are
 //!
 //! - [`json_rpc_url`], the URL to pass to
-//!   `solana_client::rpc_client::RpcClient`.
+//!   `solana_rpc_client::rpc_client::RpcClient`.
 //! - [`keypair_path`], a signing source, which may be a keypair file, but
 //!   may also represent several other types of signers, as described in
 //!   the documentation for `solana_clap_utils::keypair::signer_from_path`.

+ 1 - 1
cli-output/Cargo.toml

@@ -24,7 +24,7 @@ serde_json = "1.0.83"
 solana-account-decoder = { path = "../account-decoder", version = "=1.12.0" }
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
 solana-cli-config = { path = "../cli-config", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-transaction-status = { path = "../transaction-status", version = "=1.12.0" }
 solana-vote-program = { path = "../programs/vote", version = "=1.12.0" }

+ 1 - 1
cli-output/src/cli_output.rs

@@ -17,7 +17,7 @@ use {
     serde_json::{Map, Value},
     solana_account_decoder::parse_token::UiTokenAccount,
     solana_clap_utils::keypair::SignOnly,
-    solana_client::rpc_response::{
+    solana_rpc_client_api::response::{
         RpcAccountBalance, RpcContactInfo, RpcInflationGovernor, RpcInflationRate, RpcKeyedAccount,
         RpcSupply, RpcVoteAccountInfo,
     },

+ 4 - 1
cli/Cargo.toml

@@ -33,14 +33,17 @@ solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "=1.12.
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
 solana-cli-config = { path = "../cli-config", version = "=1.12.0" }
 solana-cli-output = { path = "../cli-output", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-config-program = { path = "../programs/config", version = "=1.12.0" }
 solana-faucet = { path = "../faucet", version = "=1.12.0" }
 solana-logger = { path = "../logger", version = "=1.12.0" }
 solana-program-runtime = { path = "../program-runtime", version = "=1.12.0" }
+solana-pubsub-client = { path = "../pubsub-client", version = "=1.12.0" }
 solana-remote-wallet = { path = "../remote-wallet", version = "=1.12.0" }
 solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
+solana-rpc-client-nonce-utils = { path = "../rpc-client-nonce-utils", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-transaction-status = { path = "../transaction-status", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 solana-vote-program = { path = "../programs/vote", version = "=1.12.0" }

+ 2 - 1
cli/src/address_lookup_table.rs

@@ -10,8 +10,9 @@ use {
     },
     solana_clap_utils::{self, input_parsers::*, input_validators::*, keypair::*},
     solana_cli_output::{CliAddressLookupTable, CliAddressLookupTableCreated, CliSignature},
-    solana_client::{rpc_client::RpcClient, rpc_config::RpcSendTransactionConfig},
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::config::RpcSendTransactionConfig,
     solana_sdk::{
         account::from_account, clock::Clock, commitment_config::CommitmentConfig, message::Message,
         pubkey::Pubkey, signer::Signer, sysvar, transaction::Transaction,

+ 5 - 7
cli/src/checks.rs

@@ -1,9 +1,7 @@
 use {
     crate::cli::CliError,
-    solana_client::{
-        client_error::{ClientError, Result as ClientResult},
-        rpc_client::RpcClient,
-    },
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::client_error::{Error as ClientError, Result as ClientResult},
     solana_sdk::{
         commitment_config::CommitmentConfig, message::Message, native_token::lamports_to_sol,
         pubkey::Pubkey,
@@ -167,9 +165,9 @@ mod tests {
     use {
         super::*,
         serde_json::json,
-        solana_client::{
-            rpc_request::RpcRequest,
-            rpc_response::{Response, RpcResponseContext},
+        solana_rpc_client_api::{
+            request::RpcRequest,
+            response::{Response, RpcResponseContext},
         },
         solana_sdk::system_instruction,
         std::collections::HashMap,

+ 17 - 18
cli/src/cli.rs

@@ -12,16 +12,13 @@ use {
     solana_cli_output::{
         display::println_name_value, CliSignature, CliValidatorsSortOrder, OutputFormat,
     },
-    solana_client::{
-        blockhash_query::BlockhashQuery,
-        client_error::{ClientError, Result as ClientResult},
-        nonce_utils,
-        rpc_client::RpcClient,
-        rpc_config::{
-            RpcLargestAccountsFilter, RpcSendTransactionConfig, RpcTransactionLogsFilter,
-        },
-    },
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{
+        client_error::{Error as ClientError, Result as ClientResult},
+        config::{RpcLargestAccountsFilter, RpcSendTransactionConfig, RpcTransactionLogsFilter},
+    },
+    solana_rpc_client_nonce_utils::blockhash_query::BlockhashQuery,
     solana_sdk::{
         clock::{Epoch, Slot},
         commitment_config::CommitmentConfig,
@@ -465,7 +462,7 @@ pub enum CliError {
     #[error("Account {2} has insufficient funds for spend ({0} SOL) + fee ({1} SOL)")]
     InsufficientFundsForSpendAndFee(f64, f64, Pubkey),
     #[error(transparent)]
-    InvalidNonce(nonce_utils::Error),
+    InvalidNonce(solana_rpc_client_nonce_utils::Error),
     #[error("Dynamic program error: {0}")]
     DynamicProgramError(String),
     #[error("RPC request error: {0}")]
@@ -480,10 +477,12 @@ impl From<Box<dyn error::Error>> for CliError {
     }
 }
 
-impl From<nonce_utils::Error> for CliError {
-    fn from(error: nonce_utils::Error) -> Self {
+impl From<solana_rpc_client_nonce_utils::Error> for CliError {
+    fn from(error: solana_rpc_client_nonce_utils::Error) -> Self {
         match error {
-            nonce_utils::Error::Client(client_error) => Self::RpcRequestError(client_error),
+            solana_rpc_client_nonce_utils::Error::Client(client_error) => {
+                Self::RpcRequestError(client_error)
+            }
             _ => Self::InvalidNonce(error),
         }
     }
@@ -1711,12 +1710,12 @@ mod tests {
     use {
         super::*,
         serde_json::{json, Value},
-        solana_client::{
-            blockhash_query,
-            rpc_request::RpcRequest,
-            rpc_response::{Response, RpcResponseContext},
-        },
         solana_rpc_client::mock_sender_for_cli::SIGNATURE,
+        solana_rpc_client_api::{
+            request::RpcRequest,
+            response::{Response, RpcResponseContext},
+        },
+        solana_rpc_client_nonce_utils::blockhash_query,
         solana_sdk::{
             pubkey::Pubkey,
             signature::{

+ 15 - 17
cli/src/cluster_query.rs

@@ -23,20 +23,20 @@ use {
         },
         *,
     },
-    solana_client::{
-        client_error::ClientErrorKind,
-        pubsub_client::PubsubClient,
-        rpc_client::{GetConfirmedSignaturesForAddress2Config, RpcClient},
-        rpc_config::{
+    solana_pubsub_client::pubsub_client::PubsubClient,
+    solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::{GetConfirmedSignaturesForAddress2Config, RpcClient},
+    solana_rpc_client_api::{
+        client_error::ErrorKind as ClientErrorKind,
+        config::{
             RpcAccountInfoConfig, RpcBlockConfig, RpcGetVoteAccountsConfig,
             RpcLargestAccountsConfig, RpcLargestAccountsFilter, RpcProgramAccountsConfig,
             RpcTransactionConfig, RpcTransactionLogsConfig, RpcTransactionLogsFilter,
         },
-        rpc_filter,
-        rpc_request::DELINQUENT_VALIDATOR_SLOT_DISTANCE,
-        rpc_response::SlotInfo,
+        filter::{Memcmp, RpcFilterType},
+        request::DELINQUENT_VALIDATOR_SLOT_DISTANCE,
+        response::SlotInfo,
     },
-    solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_sdk::{
         account::from_account,
         account_utils::StateMut,
@@ -1770,12 +1770,9 @@ pub fn process_show_stakes(
         if vote_account_pubkeys.len() == 1 {
             program_accounts_config.filters = Some(vec![
                 // Filter by `StakeState::Stake(_, _)`
-                rpc_filter::RpcFilterType::Memcmp(rpc_filter::Memcmp::new_base58_encoded(
-                    0,
-                    &[2, 0, 0, 0],
-                )),
+                RpcFilterType::Memcmp(Memcmp::new_base58_encoded(0, &[2, 0, 0, 0])),
                 // Filter by `Delegation::voter_pubkey`, which begins at byte offset 124
-                rpc_filter::RpcFilterType::Memcmp(rpc_filter::Memcmp::new_base58_encoded(
+                RpcFilterType::Memcmp(Memcmp::new_base58_encoded(
                     124,
                     vote_account_pubkeys[0].as_ref(),
                 )),
@@ -1785,9 +1782,10 @@ pub fn process_show_stakes(
 
     if let Some(withdraw_authority_pubkey) = withdraw_authority_pubkey {
         // withdrawer filter
-        let withdrawer_filter = rpc_filter::RpcFilterType::Memcmp(
-            rpc_filter::Memcmp::new_base58_encoded(44, withdraw_authority_pubkey.as_ref()),
-        );
+        let withdrawer_filter = RpcFilterType::Memcmp(Memcmp::new_base58_encoded(
+            44,
+            withdraw_authority_pubkey.as_ref(),
+        ));
 
         let filters = program_accounts_config.filters.get_or_insert(vec![]);
         filters.push(withdrawer_filter);

+ 2 - 3
cli/src/feature.rs

@@ -8,10 +8,9 @@ use {
     serde::{Deserialize, Serialize},
     solana_clap_utils::{input_parsers::*, input_validators::*, keypair::*},
     solana_cli_output::{cli_version::CliVersion, QuietDisplay, VerboseDisplay},
-    solana_client::{
-        client_error::ClientError, rpc_client::RpcClient, rpc_request::MAX_MULTIPLE_ACCOUNTS,
-    },
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{client_error::Error as ClientError, request::MAX_MULTIPLE_ACCOUNTS},
     solana_sdk::{
         account::Account,
         clock::Slot,

+ 1 - 1
cli/src/inflation.rs

@@ -9,8 +9,8 @@ use {
     solana_cli_output::{
         CliEpochRewardshMetadata, CliInflation, CliKeyedEpochReward, CliKeyedEpochRewards,
     },
-    solana_client::rpc_client::RpcClient,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{clock::Epoch, pubkey::Pubkey},
     std::sync::Arc,
 };

+ 1 - 1
cli/src/main.rs

@@ -15,8 +15,8 @@ use {
         display::{println_name_value, println_name_value_or},
         OutputFormat,
     },
-    solana_client::rpc_config::RpcSendTransactionConfig,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client_api::config::RpcSendTransactionConfig,
     std::{collections::HashMap, error, path::PathBuf, sync::Arc, time::Duration},
 };
 

+ 2 - 1
cli/src/nonce.rs

@@ -20,8 +20,9 @@ use {
         nonce::*,
     },
     solana_cli_output::CliNonceAccount,
-    solana_client::{nonce_utils::*, rpc_client::RpcClient},
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_nonce_utils::*,
     solana_sdk::{
         account::Account,
         feature_set::merge_nonce_error_into_system_error,

+ 10 - 8
cli/src/program.rs

@@ -17,14 +17,6 @@ use {
         CliUpgradeableBuffer, CliUpgradeableBuffers, CliUpgradeableProgram,
         CliUpgradeableProgramClosed, CliUpgradeablePrograms,
     },
-    solana_client::{
-        client_error::ClientErrorKind,
-        connection_cache::ConnectionCache,
-        rpc_client::RpcClient,
-        rpc_config::{RpcAccountInfoConfig, RpcProgramAccountsConfig, RpcSendTransactionConfig},
-        rpc_filter::{Memcmp, RpcFilterType},
-        tpu_client::{TpuClient, TpuClientConfig},
-    },
     solana_program_runtime::invoke_context::InvokeContext,
     solana_rbpf::{
         elf::Executable,
@@ -32,6 +24,12 @@ use {
         vm::{Config, VerifiedExecutable},
     },
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{
+        client_error::ErrorKind as ClientErrorKind,
+        config::{RpcAccountInfoConfig, RpcProgramAccountsConfig, RpcSendTransactionConfig},
+        filter::{Memcmp, RpcFilterType},
+    },
     solana_sdk::{
         account::Account,
         account_utils::StateMut,
@@ -50,6 +48,10 @@ use {
         transaction::{Transaction, TransactionError},
         transaction_context::TransactionContext,
     },
+    solana_tpu_client::{
+        connection_cache::ConnectionCache,
+        tpu_client::{TpuClient, TpuClientConfig},
+    },
     std::{
         fs::File,
         io::{Read, Write},

+ 1 - 1
cli/src/spend_utils.rs

@@ -5,7 +5,7 @@ use {
     },
     clap::ArgMatches,
     solana_clap_utils::{input_parsers::lamports_of_sol, offline::SIGN_ONLY_ARG},
-    solana_client::rpc_client::RpcClient,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         commitment_config::CommitmentConfig, hash::Hash, message::Message,
         native_token::lamports_to_sol, pubkey::Pubkey,

+ 14 - 13
cli/src/stake.rs

@@ -27,11 +27,12 @@ use {
         CliEpochReward, CliStakeHistory, CliStakeHistoryEntry, CliStakeState, CliStakeType,
         OutputFormat, ReturnSignersConfig,
     },
-    solana_client::{
-        blockhash_query::BlockhashQuery, nonce_utils, rpc_client::RpcClient,
-        rpc_request::DELINQUENT_VALIDATOR_SLOT_DISTANCE, rpc_response::RpcInflationReward,
-    },
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{
+        request::DELINQUENT_VALIDATOR_SLOT_DISTANCE, response::RpcInflationReward,
+    },
+    solana_rpc_client_nonce_utils::blockhash_query::BlockhashQuery,
     solana_sdk::{
         account::from_account,
         account_utils::StateMut,
@@ -1421,7 +1422,7 @@ pub fn process_create_stake_account(
         }
 
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1562,7 +1563,7 @@ pub fn process_stake_authorize(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1708,7 +1709,7 @@ pub fn process_deactivate_stake_account(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1807,7 +1808,7 @@ pub fn process_withdraw_stake(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1953,7 +1954,7 @@ pub fn process_split_stake(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -2060,7 +2061,7 @@ pub fn process_merge_stake(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -2156,7 +2157,7 @@ pub fn process_stake_set_lockup(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -2626,7 +2627,7 @@ pub fn process_delegate_stake(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -2671,7 +2672,7 @@ mod tests {
     use {
         super::*,
         crate::{clap_app::get_clap_app, cli::parse_command},
-        solana_client::blockhash_query,
+        solana_rpc_client_nonce_utils::blockhash_query,
         solana_sdk::{
             hash::Hash,
             signature::{

+ 1 - 1
cli/src/test_utils.rs

@@ -1,5 +1,5 @@
 use {
-    solana_client::rpc_client::RpcClient,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         clock::{Epoch, DEFAULT_MS_PER_SLOT},
         commitment_config::CommitmentConfig,

+ 1 - 1
cli/src/validator_info.rs

@@ -16,9 +16,9 @@ use {
         keypair::DefaultSigner,
     },
     solana_cli_output::{CliValidatorInfo, CliValidatorInfoVec},
-    solana_client::rpc_client::RpcClient,
     solana_config_program::{config_instruction, get_config_data, ConfigKeys, ConfigState},
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         account::Account,
         message::Message,

+ 9 - 10
cli/src/vote.rs

@@ -26,11 +26,10 @@ use {
         return_signers_with_config, CliEpochVotingHistory, CliLockout, CliVoteAccount,
         ReturnSignersConfig,
     },
-    solana_client::{
-        blockhash_query::BlockhashQuery, nonce_utils, rpc_client::RpcClient,
-        rpc_config::RpcGetVoteAccountsConfig,
-    },
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::config::RpcGetVoteAccountsConfig,
+    solana_rpc_client_nonce_utils::blockhash_query::BlockhashQuery,
     solana_sdk::{
         account::Account, commitment_config::CommitmentConfig, message::Message,
         native_token::lamports_to_sol, pubkey::Pubkey, system_instruction::SystemError,
@@ -873,7 +872,7 @@ pub fn process_create_vote_account(
         }
 
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1010,7 +1009,7 @@ pub fn process_vote_authorize(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1086,7 +1085,7 @@ pub fn process_vote_update_validator(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1155,7 +1154,7 @@ pub fn process_vote_update_commission(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1346,7 +1345,7 @@ pub fn process_withdraw_from_vote_account(
     } else {
         tx.try_sign(&config.signers, recent_blockhash)?;
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,
@@ -1428,7 +1427,7 @@ mod tests {
     use {
         super::*,
         crate::{clap_app::get_clap_app, cli::parse_command},
-        solana_client::blockhash_query,
+        solana_rpc_client_nonce_utils::blockhash_query,
         solana_sdk::{
             hash::Hash,
             signature::{read_keypair_file, write_keypair, Keypair, Signer},

+ 4 - 5
cli/src/wallet.rs

@@ -26,11 +26,10 @@ use {
         return_signers_with_config, CliAccount, CliBalance, CliSignatureVerificationStatus,
         CliTransaction, CliTransactionConfirmation, OutputFormat, ReturnSignersConfig,
     },
-    solana_client::{
-        blockhash_query::BlockhashQuery, nonce_utils, rpc_client::RpcClient,
-        rpc_config::RpcTransactionConfig, rpc_response::RpcKeyedAccount,
-    },
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{config::RpcTransactionConfig, response::RpcKeyedAccount},
+    solana_rpc_client_nonce_utils::blockhash_query::BlockhashQuery,
     solana_sdk::{
         commitment_config::CommitmentConfig,
         message::Message,
@@ -763,7 +762,7 @@ pub fn process_transfer(
         )
     } else {
         if let Some(nonce_account) = &nonce_account {
-            let nonce_account = nonce_utils::get_account_with_commitment(
+            let nonce_account = solana_rpc_client_nonce_utils::get_account_with_commitment(
                 rpc_client,
                 nonce_account,
                 config.commitment,

+ 4 - 7
cli/tests/nonce.rs

@@ -7,12 +7,9 @@ use {
         test_utils::check_ready,
     },
     solana_cli_output::{parse_sign_only_reply_string, OutputFormat},
-    solana_client::{
-        blockhash_query::{self, BlockhashQuery},
-        nonce_utils,
-        rpc_client::RpcClient,
-    },
     solana_faucet::faucet::run_local_faucet,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_nonce_utils::blockhash_query::{self, BlockhashQuery},
     solana_sdk::{
         commitment_config::CommitmentConfig,
         hash::Hash,
@@ -326,12 +323,12 @@ fn test_create_account_with_seed() {
     check_balance!(0, &rpc_client, &to_address);
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_address,
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 

+ 1 - 1
cli/tests/program.rs

@@ -7,8 +7,8 @@ use {
         program::{ProgramCliCommand, CLOSE_PROGRAM_WARNING},
     },
     solana_cli_output::OutputFormat,
-    solana_client::rpc_client::RpcClient,
     solana_faucet::faucet::run_local_faucet,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         account_utils::StateMut,
         bpf_loader,

+ 1 - 1
cli/tests/request_airdrop.rs

@@ -1,8 +1,8 @@
 #![allow(clippy::integer_arithmetic)]
 use {
     solana_cli::cli::{process_command, CliCommand, CliConfig},
-    solana_client::rpc_client::RpcClient,
     solana_faucet::faucet::run_local_faucet,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         commitment_config::CommitmentConfig,
         native_token::sol_to_lamports,

+ 21 - 24
cli/tests/stake.rs

@@ -9,13 +9,10 @@ use {
         test_utils::{check_ready, wait_for_next_epoch},
     },
     solana_cli_output::{parse_sign_only_reply_string, OutputFormat},
-    solana_client::{
-        blockhash_query::{self, BlockhashQuery},
-        nonce_utils,
-        rpc_client::RpcClient,
-        rpc_response::{RpcStakeActivation, StakeActivationState},
-    },
     solana_faucet::faucet::run_local_faucet,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::response::{RpcStakeActivation, StakeActivationState},
+    solana_rpc_client_nonce_utils::blockhash_query::{self, BlockhashQuery},
     solana_sdk::{
         account_utils::StateMut,
         commitment_config::CommitmentConfig,
@@ -814,12 +811,12 @@ fn test_nonced_stake_delegation_and_deactivation() {
     process_command(&config).unwrap();
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -846,12 +843,12 @@ fn test_nonced_stake_delegation_and_deactivation() {
     process_command(&config).unwrap();
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -1123,12 +1120,12 @@ fn test_stake_authorize() {
     process_command(&config).unwrap();
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -1193,12 +1190,12 @@ fn test_stake_authorize() {
     };
     assert_eq!(current_authority, online_authority_pubkey);
 
-    let new_nonce_hash = nonce_utils::get_account_with_commitment(
+    let new_nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
     assert_ne!(nonce_hash, new_nonce_hash);
@@ -1481,12 +1478,12 @@ fn test_stake_split() {
     check_balance!(minimum_nonce_balance, &rpc_client, &nonce_account.pubkey());
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -1759,12 +1756,12 @@ fn test_stake_set_lockup() {
     check_balance!(minimum_nonce_balance, &rpc_client, &nonce_account_pubkey);
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -1888,12 +1885,12 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
     process_command(&config).unwrap();
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -1951,12 +1948,12 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
     check_balance!(50_000_000_000, &rpc_client, &stake_pubkey);
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -2007,12 +2004,12 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
     check_balance!(50_000_000_000, &rpc_client, &recipient_pubkey);
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 

+ 8 - 11
cli/tests/transfer.rs

@@ -8,12 +8,9 @@ use {
         test_utils::check_ready,
     },
     solana_cli_output::{parse_sign_only_reply_string, OutputFormat},
-    solana_client::{
-        blockhash_query::{self, BlockhashQuery},
-        nonce_utils,
-        rpc_client::RpcClient,
-    },
     solana_faucet::faucet::run_local_faucet,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_nonce_utils::blockhash_query::{self, BlockhashQuery},
     solana_sdk::{
         commitment_config::CommitmentConfig,
         fee::FeeStructure,
@@ -198,12 +195,12 @@ fn test_transfer() {
     );
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 
@@ -236,12 +233,12 @@ fn test_transfer() {
         &sender_pubkey,
     );
     check_balance!(sol_to_lamports(2.5), &rpc_client, &recipient_pubkey);
-    let new_nonce_hash = nonce_utils::get_account_with_commitment(
+    let new_nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
     assert_ne!(nonce_hash, new_nonce_hash);
@@ -263,12 +260,12 @@ fn test_transfer() {
     );
 
     // Fetch nonce hash
-    let nonce_hash = nonce_utils::get_account_with_commitment(
+    let nonce_hash = solana_rpc_client_nonce_utils::get_account_with_commitment(
         &rpc_client,
         &nonce_account.pubkey(),
         CommitmentConfig::processed(),
     )
-    .and_then(|ref a| nonce_utils::data_from_account(a))
+    .and_then(|ref a| solana_rpc_client_nonce_utils::data_from_account(a))
     .unwrap()
     .blockhash();
 

+ 2 - 4
cli/tests/vote.rs

@@ -6,11 +6,9 @@ use {
         spend_utils::SpendAmount,
     },
     solana_cli_output::{parse_sign_only_reply_string, OutputFormat},
-    solana_client::{
-        blockhash_query::{self, BlockhashQuery},
-        rpc_client::RpcClient,
-    },
     solana_faucet::faucet::run_local_faucet,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_nonce_utils::blockhash_query::{self, BlockhashQuery},
     solana_sdk::{
         account_utils::StateMut,
         commitment_config::CommitmentConfig,

+ 3 - 1
client-test/Cargo.toml

@@ -14,14 +14,16 @@ publish = false
 futures-util = "0.3.21"
 serde_json = "1.0.83"
 serial_test = "0.9.0"
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-ledger = { path = "../ledger", version = "=1.12.0" }
 solana-measure = { path = "../measure", version = "=1.12.0" }
 solana-merkle-tree = { path = "../merkle-tree", version = "=1.12.0" }
 solana-metrics = { path = "../metrics", version = "=1.12.0" }
 solana-perf = { path = "../perf", version = "=1.12.0" }
+solana-pubsub-client = { path = "../pubsub-client", version = "=1.12.0" }
 solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "=1.12.0" }
 solana-rpc = { path = "../rpc", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }

+ 9 - 10
client-test/tests/client.rs

@@ -2,23 +2,22 @@ use {
     futures_util::StreamExt,
     serde_json::{json, Value},
     serial_test::serial,
-    solana_client::{
-        nonblocking,
-        pubsub_client::PubsubClient,
-        rpc_client::RpcClient,
-        rpc_config::{
-            RpcAccountInfoConfig, RpcBlockSubscribeConfig, RpcBlockSubscribeFilter,
-            RpcProgramAccountsConfig,
-        },
-        rpc_response::SlotInfo,
-    },
     solana_ledger::{blockstore::Blockstore, get_tmp_ledger_path},
+    solana_pubsub_client::{nonblocking, pubsub_client::PubsubClient},
     solana_rpc::{
         optimistically_confirmed_bank_tracker::OptimisticallyConfirmedBank,
         rpc::{create_test_transaction_entries, populate_blockstore_for_tests},
         rpc_pubsub_service::{PubSubConfig, PubSubService},
         rpc_subscriptions::RpcSubscriptions,
     },
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{
+        config::{
+            RpcAccountInfoConfig, RpcBlockSubscribeConfig, RpcBlockSubscribeFilter,
+            RpcProgramAccountsConfig,
+        },
+        response::SlotInfo,
+    },
     solana_runtime::{
         bank::Bank,
         bank_forks::BankForks,

+ 2 - 1
core/Cargo.toml

@@ -37,7 +37,6 @@ serde = "1.0.143"
 serde_derive = "1.0.103"
 solana-address-lookup-table-program = { path = "../programs/address-lookup-table", version = "=1.12.0" }
 solana-bloom = { path = "../bloom", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-entry = { path = "../entry", version = "=1.12.0" }
 solana-frozen-abi = { path = "../frozen-abi", version = "=1.12.0" }
 solana-frozen-abi-macro = { path = "../frozen-abi/macro", version = "=1.12.0" }
@@ -52,10 +51,12 @@ solana-poh = { path = "../poh", version = "=1.12.0" }
 solana-program-runtime = { path = "../program-runtime", version = "=1.12.0" }
 solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "=1.12.0" }
 solana-rpc = { path = "../rpc", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-send-transaction-service = { path = "../send-transaction-service", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-transaction-status = { path = "../transaction-status", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 solana-vote-program = { path = "../programs/vote", version = "=1.12.0" }

+ 1 - 1
core/benches/banking_stage.rs

@@ -8,7 +8,6 @@ use {
     log::*,
     rand::{thread_rng, Rng},
     rayon::prelude::*,
-    solana_client::connection_cache::ConnectionCache,
     solana_core::{
         banking_stage::{BankingStage, BankingStageStats},
         leader_slot_banking_stage_metrics::LeaderSlotMetricsTracker,
@@ -37,6 +36,7 @@ use {
         transaction::{Transaction, VersionedTransaction},
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_tpu_client::connection_cache::ConnectionCache,
     std::{
         sync::{atomic::Ordering, Arc, RwLock},
         time::{Duration, Instant},

+ 1 - 1
core/src/banking_stage.rs

@@ -22,7 +22,6 @@ use {
     histogram::Histogram,
     itertools::Itertools,
     min_max_heap::MinMaxHeap,
-    solana_client::{connection_cache::ConnectionCache, tpu_connection::TpuConnection},
     solana_entry::entry::hash_transactions,
     solana_gossip::{cluster_info::ClusterInfo, contact_info::ContactInfo},
     solana_ledger::{
@@ -61,6 +60,7 @@ use {
         transport::TransportError,
     },
     solana_streamer::sendmmsg::batch_send,
+    solana_tpu_client::{connection_cache::ConnectionCache, tpu_connection::TpuConnection},
     solana_transaction_status::token_balances::TransactionTokenBalancesSet,
     std::{
         cmp,

+ 1 - 1
core/src/replay_stage.rs

@@ -31,7 +31,6 @@ use {
     crossbeam_channel::{Receiver, RecvTimeoutError, Sender},
     lazy_static::lazy_static,
     rayon::{prelude::*, ThreadPool},
-    solana_client::rpc_response::SlotUpdate,
     solana_entry::entry::VerifyRecyclers,
     solana_geyser_plugin_manager::block_metadata_notifier_interface::BlockMetadataNotifierLock,
     solana_gossip::cluster_info::ClusterInfo,
@@ -52,6 +51,7 @@ use {
         optimistically_confirmed_bank_tracker::{BankNotification, BankNotificationSender},
         rpc_subscriptions::RpcSubscriptions,
     },
+    solana_rpc_client_api::response::SlotUpdate,
     solana_runtime::{
         accounts_background_service::AbsRequestSender,
         bank::{Bank, NewBankOptions},

+ 1 - 1
core/src/retransmit_stage.rs

@@ -10,7 +10,6 @@ use {
     itertools::{izip, Itertools},
     lru::LruCache,
     rayon::{prelude::*, ThreadPool, ThreadPoolBuilder},
-    solana_client::rpc_response::SlotUpdate,
     solana_gossip::{
         cluster_info::{ClusterInfo, DATA_PLANE_FANOUT},
         contact_info::ContactInfo,
@@ -22,6 +21,7 @@ use {
     solana_measure::measure::Measure,
     solana_rayon_threadlimit::get_thread_count,
     solana_rpc::{max_slots::MaxSlots, rpc_subscriptions::RpcSubscriptions},
+    solana_rpc_client_api::response::SlotUpdate,
     solana_runtime::{bank::Bank, bank_forks::BankForks},
     solana_sdk::{clock::Slot, pubkey::Pubkey, timing::timestamp},
     solana_streamer::{

+ 1 - 1
core/src/tpu.rs

@@ -16,7 +16,6 @@ use {
         staked_nodes_updater_service::StakedNodesUpdaterService,
     },
     crossbeam_channel::{unbounded, Receiver},
-    solana_client::connection_cache::ConnectionCache,
     solana_gossip::cluster_info::ClusterInfo,
     solana_ledger::{blockstore::Blockstore, blockstore_processor::TransactionStatusSender},
     solana_poh::poh_recorder::{PohRecorder, WorkingBankEntry},
@@ -34,6 +33,7 @@ use {
         quic::{spawn_server, StreamStats, MAX_STAKED_CONNECTIONS, MAX_UNSTAKED_CONNECTIONS},
         streamer::StakedNodes,
     },
+    solana_tpu_client::connection_cache::ConnectionCache,
     std::{
         collections::HashMap,
         net::UdpSocket,

+ 1 - 1
core/src/tvu.rs

@@ -28,7 +28,6 @@ use {
         window_service::WindowService,
     },
     crossbeam_channel::{unbounded, Receiver},
-    solana_client::connection_cache::ConnectionCache,
     solana_geyser_plugin_manager::block_metadata_notifier_interface::BlockMetadataNotifierLock,
     solana_gossip::cluster_info::ClusterInfo,
     solana_ledger::{
@@ -46,6 +45,7 @@ use {
         vote_sender_types::ReplayVoteSender,
     },
     solana_sdk::{clock::Slot, pubkey::Pubkey, signature::Keypair},
+    solana_tpu_client::connection_cache::ConnectionCache,
     std::{
         collections::HashSet,
         net::UdpSocket,

+ 4 - 2
core/src/validator.rs

@@ -25,7 +25,6 @@ use {
     },
     crossbeam_channel::{bounded, unbounded, Receiver},
     rand::{thread_rng, Rng},
-    solana_client::connection_cache::ConnectionCache,
     solana_entry::poh::compute_hash_time_ns,
     solana_geyser_plugin_manager::geyser_plugin_service::GeyserPluginService,
     solana_gossip::{
@@ -99,6 +98,7 @@ use {
     },
     solana_send_transaction_service::send_transaction_service,
     solana_streamer::{socket::SocketAddrSpace, streamer::StakedNodes},
+    solana_tpu_client::connection_cache::ConnectionCache,
     solana_vote_program::vote_state,
     std::{
         collections::{HashMap, HashSet},
@@ -2127,9 +2127,11 @@ mod tests {
     use {
         super::*,
         crossbeam_channel::{bounded, RecvTimeoutError},
-        solana_client::connection_cache::{DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC},
         solana_ledger::{create_new_tmp_ledger, genesis_utils::create_genesis_config_with_leader},
         solana_sdk::{genesis_config::create_genesis_config, poh_config::PohConfig},
+        solana_tpu_client::connection_cache::{
+            DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC,
+        },
         std::{fs::remove_dir_all, thread, time::Duration},
     };
 

+ 1 - 1
core/src/warm_quic_cache_service.rs

@@ -3,9 +3,9 @@
 
 use {
     rand::{thread_rng, Rng},
-    solana_client::{connection_cache::ConnectionCache, tpu_connection::TpuConnection},
     solana_gossip::cluster_info::ClusterInfo,
     solana_poh::poh_recorder::PohRecorder,
+    solana_tpu_client::{connection_cache::ConnectionCache, tpu_connection::TpuConnection},
     std::{
         sync::{
             atomic::{AtomicBool, Ordering},

+ 3 - 1
dos/Cargo.toml

@@ -18,7 +18,6 @@ log = "0.4.17"
 rand = "0.7.0"
 serde = "1.0.143"
 solana-bench-tps = { path = "../bench-tps", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-core = { path = "../core", version = "=1.12.0" }
 solana-faucet = { path = "../faucet", version = "=1.12.0" }
 solana-gossip = { path = "../gossip", version = "=1.12.0" }
@@ -27,8 +26,10 @@ solana-measure = { path = "../measure", version = "=1.12.0" }
 solana-net-utils = { path = "../net-utils", version = "=1.12.0" }
 solana-perf = { path = "../perf", version = "=1.12.0" }
 solana-rpc = { path = "../rpc", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 
 [package.metadata.docs.rs]
@@ -37,3 +38,4 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dev-dependencies]
 serial_test = "0.9.0"
 solana-local-cluster = { path = "../local-cluster", version = "=1.12.0" }
+solana-thin-client = { path = "../thin-client", version = "=1.12.0" }

+ 6 - 6
dos/src/main.rs

@@ -45,11 +45,6 @@ use {
     log::*,
     rand::{thread_rng, Rng},
     solana_bench_tps::{bench::generate_and_fund_keypairs, bench_tps_client::BenchTpsClient},
-    solana_client::{
-        connection_cache::{ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE},
-        rpc_client::RpcClient,
-        tpu_connection::TpuConnection,
-    },
     solana_core::serve_repair::{RepairProtocol, RepairRequestHeader, ServeRepair},
     solana_dos::cli::*,
     solana_gossip::{
@@ -57,6 +52,7 @@ use {
         gossip_service::{discover, get_multi_client},
     },
     solana_measure::measure::Measure,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         hash::Hash,
         instruction::CompiledInstruction,
@@ -70,6 +66,10 @@ use {
         transaction::Transaction,
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_tpu_client::{
+        connection_cache::{ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE},
+        tpu_connection::TpuConnection,
+    },
     std::{
         net::{SocketAddr, UdpSocket},
         process::exit,
@@ -786,7 +786,6 @@ fn main() {
 pub mod test {
     use {
         super::*,
-        solana_client::thin_client::ThinClient,
         solana_core::validator::ValidatorConfig,
         solana_faucet::faucet::run_local_faucet,
         solana_local_cluster::{
@@ -796,6 +795,7 @@ pub mod test {
         },
         solana_rpc::rpc::JsonRpcConfig,
         solana_sdk::timing::timestamp,
+        solana_thin_client::thin_client::ThinClient,
     };
 
     const TEST_SEND_BATCH_SIZE: usize = 1;

+ 2 - 1
gossip/Cargo.toml

@@ -29,7 +29,6 @@ serde_bytes = "0.11"
 serde_derive = "1.0.103"
 solana-bloom = { path = "../bloom", version = "=1.12.0" }
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-entry = { path = "../entry", version = "=1.12.0" }
 solana-frozen-abi = { path = "../frozen-abi", version = "=1.12.0" }
 solana-frozen-abi-macro = { path = "../frozen-abi/macro", version = "=1.12.0" }
@@ -43,6 +42,8 @@ solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "=1.12.0"
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-thin-client = { path = "../thin-client", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 solana-vote-program = { path = "../programs/vote", version = "=1.12.0" }
 thiserror = "1.0"

+ 2 - 1
gossip/src/gossip_service.rs

@@ -4,7 +4,6 @@ use {
     crate::{cluster_info::ClusterInfo, contact_info::ContactInfo},
     crossbeam_channel::{unbounded, Sender},
     rand::{thread_rng, Rng},
-    solana_client::{connection_cache::ConnectionCache, thin_client::ThinClient},
     solana_perf::recycler::Recycler,
     solana_runtime::bank_forks::BankForks,
     solana_sdk::{
@@ -15,6 +14,8 @@ use {
         socket::SocketAddrSpace,
         streamer::{self, StreamerReceiveStats},
     },
+    solana_thin_client::thin_client::ThinClient,
+    solana_tpu_client::connection_cache::ConnectionCache,
     std::{
         collections::HashSet,
         net::{SocketAddr, TcpListener, UdpSocket},

+ 1 - 1
install/Cargo.toml

@@ -27,9 +27,9 @@ semver = "1.0.13"
 serde = { version = "1.0.143", features = ["derive"] }
 serde_yaml = "0.8.26"
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-config-program = { path = "../programs/config", version = "=1.12.0" }
 solana-logger = { path = "../logger", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 tar = "0.4.38"

+ 1 - 1
install/src/command.rs

@@ -9,8 +9,8 @@ use {
     crossbeam_channel::unbounded,
     indicatif::{ProgressBar, ProgressStyle},
     serde::{Deserialize, Serialize},
-    solana_client::rpc_client::RpcClient,
     solana_config_program::{config_instruction, get_config_data, ConfigState},
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         hash::{Hash, Hasher},
         message::Message,

+ 5 - 1
local-cluster/Cargo.toml

@@ -16,16 +16,20 @@ itertools = "0.10.3"
 log = "0.4.17"
 rand = "0.7.0"
 rayon = "1.5.3"
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-config-program = { path = "../programs/config", version = "=1.12.0" }
 solana-core = { path = "../core", version = "=1.12.0" }
 solana-entry = { path = "../entry", version = "=1.12.0" }
 solana-gossip = { path = "../gossip", version = "=1.12.0" }
 solana-ledger = { path = "../ledger", version = "=1.12.0" }
+solana-pubsub-client = { path = "../pubsub-client", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-stake-program = { path = "../programs/stake", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-thin-client = { path = "../thin-client", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-vote-program = { path = "../programs/vote", version = "=1.12.0" }
 tempfile = "3.3.0"
 

+ 1 - 1
local-cluster/src/cluster.rs

@@ -1,9 +1,9 @@
 use {
-    solana_client::thin_client::ThinClient,
     solana_core::validator::{Validator, ValidatorConfig},
     solana_gossip::{cluster_info::Node, contact_info::ContactInfo},
     solana_sdk::{pubkey::Pubkey, signature::Keypair},
     solana_streamer::socket::SocketAddrSpace,
+    solana_thin_client::thin_client::ThinClient,
     std::{path::PathBuf, sync::Arc},
 };
 

+ 2 - 1
local-cluster/src/cluster_tests.rs

@@ -6,7 +6,6 @@ use log::*;
 use {
     rand::{thread_rng, Rng},
     rayon::prelude::*,
-    solana_client::{connection_cache::ConnectionCache, thin_client::ThinClient},
     solana_core::consensus::VOTE_THRESHOLD_DEPTH,
     solana_entry::entry::{Entry, EntrySlice},
     solana_gossip::{
@@ -32,6 +31,8 @@ use {
         transport::TransportError,
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_thin_client::thin_client::ThinClient,
+    solana_tpu_client::connection_cache::ConnectionCache,
     solana_vote_program::vote_transaction,
     std::{
         collections::{HashMap, HashSet},

+ 4 - 6
local-cluster/src/local_cluster.rs

@@ -6,12 +6,6 @@ use {
     },
     itertools::izip,
     log::*,
-    solana_client::{
-        connection_cache::{
-            ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC,
-        },
-        thin_client::ThinClient,
-    },
     solana_core::{
         tower_storage::FileTowerStorage,
         validator::{Validator, ValidatorConfig, ValidatorStartProgress},
@@ -47,6 +41,10 @@ use {
     },
     solana_stake_program::{config::create_account as create_stake_config_account, stake_state},
     solana_streamer::socket::SocketAddrSpace,
+    solana_thin_client::thin_client::ThinClient,
+    solana_tpu_client::connection_cache::{
+        ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC,
+    },
     solana_vote_program::{
         vote_instruction,
         vote_state::{self, VoteInit},

+ 1 - 1
local-cluster/tests/common.rs

@@ -1,7 +1,6 @@
 #![allow(clippy::integer_arithmetic, dead_code)]
 use {
     log::*,
-    solana_client::rpc_client::RpcClient,
     solana_core::{
         broadcast_stage::BroadcastStageType,
         consensus::{Tower, SWITCH_FORK_THRESHOLD},
@@ -21,6 +20,7 @@ use {
         local_cluster::{ClusterConfig, LocalCluster},
         validator_configs::*,
     },
+    solana_rpc_client::rpc_client::RpcClient,
     solana_runtime::snapshot_config::SnapshotConfig,
     solana_sdk::{
         account::AccountSharedData,

+ 7 - 7
local-cluster/tests/local_cluster.rs

@@ -6,13 +6,6 @@ use {
     gag::BufferRedirect,
     log::*,
     serial_test::serial,
-    solana_client::{
-        pubsub_client::PubsubClient,
-        rpc_client::RpcClient,
-        rpc_config::{RpcProgramAccountsConfig, RpcSignatureSubscribeConfig},
-        rpc_response::RpcSignatureResult,
-        thin_client::ThinClient,
-    },
     solana_core::{
         broadcast_stage::BroadcastStageType,
         consensus::{Tower, SWITCH_FORK_THRESHOLD, VOTE_THRESHOLD_DEPTH},
@@ -33,6 +26,12 @@ use {
         local_cluster::{ClusterConfig, LocalCluster},
         validator_configs::*,
     },
+    solana_pubsub_client::pubsub_client::PubsubClient,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{
+        config::{RpcProgramAccountsConfig, RpcSignatureSubscribeConfig},
+        response::RpcSignatureResult,
+    },
     solana_runtime::{
         hardened_unpack::open_genesis_config,
         snapshot_archive_info::SnapshotArchiveInfoGetter,
@@ -54,6 +53,7 @@ use {
         system_program, system_transaction,
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_thin_client::thin_client::ThinClient,
     solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY,
     std::{
         collections::{HashMap, HashSet},

+ 14 - 6
programs/bpf/Cargo.lock

@@ -4151,6 +4151,7 @@ dependencies = [
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
+ "solana-tpu-client",
  "tarpc",
  "tokio",
  "tokio-serde",
@@ -4638,7 +4639,7 @@ dependencies = [
  "solana-account-decoder",
  "solana-clap-utils",
  "solana-cli-config",
- "solana-client",
+ "solana-rpc-client-api",
  "solana-sdk 1.12.0",
  "solana-transaction-status",
  "solana-vote-program",
@@ -4708,7 +4709,6 @@ dependencies = [
  "serde_derive",
  "solana-address-lookup-table-program",
  "solana-bloom",
- "solana-client",
  "solana-entry",
  "solana-frozen-abi 1.12.0",
  "solana-frozen-abi-macro 1.12.0",
@@ -4723,10 +4723,12 @@ dependencies = [
  "solana-program-runtime",
  "solana-rayon-threadlimit",
  "solana-rpc",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
  "solana-streamer",
+ "solana-tpu-client",
  "solana-transaction-status",
  "solana-version",
  "solana-vote-program",
@@ -4944,7 +4946,6 @@ dependencies = [
  "serde_derive",
  "solana-bloom",
  "solana-clap-utils",
- "solana-client",
  "solana-entry",
  "solana-frozen-abi 1.12.0",
  "solana-frozen-abi-macro 1.12.0",
@@ -4958,6 +4959,8 @@ dependencies = [
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
+ "solana-thin-client",
+ "solana-tpu-client",
  "solana-version",
  "solana-vote-program",
  "thiserror",
@@ -5346,7 +5349,6 @@ dependencies = [
  "serde_json",
  "soketto",
  "solana-account-decoder",
- "solana-client",
  "solana-entry",
  "solana-faucet",
  "solana-gossip",
@@ -5356,12 +5358,14 @@ dependencies = [
  "solana-perf",
  "solana-poh",
  "solana-rayon-threadlimit",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
  "solana-stake-program",
  "solana-storage-bigtable",
  "solana-streamer",
+ "solana-tpu-client",
  "solana-transaction-status",
  "solana-version",
  "solana-vote-program",
@@ -5616,11 +5620,11 @@ version = "1.12.0"
 dependencies = [
  "crossbeam-channel",
  "log",
- "solana-client",
  "solana-measure",
  "solana-metrics",
  "solana-runtime",
  "solana-sdk 1.12.0",
+ "solana-tpu-client",
 ]
 
 [[package]]
@@ -5753,9 +5757,11 @@ dependencies = [
  "solana-program-runtime",
  "solana-program-test",
  "solana-rpc",
+ "solana-rpc-client",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-streamer",
+ "solana-tpu-client",
  "tokio",
 ]
 
@@ -5858,7 +5864,6 @@ dependencies = [
  "signal-hook",
  "solana-clap-utils",
  "solana-cli-config",
- "solana-client",
  "solana-core",
  "solana-download-utils",
  "solana-entry",
@@ -5872,12 +5877,15 @@ dependencies = [
  "solana-perf",
  "solana-poh",
  "solana-rpc",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk 1.12.0",
  "solana-send-transaction-service",
  "solana-storage-bigtable",
  "solana-streamer",
  "solana-test-validator",
+ "solana-tpu-client",
  "solana-version",
  "solana-vote-program",
  "symlink",

+ 4 - 1
rpc-test/Cargo.toml

@@ -20,11 +20,14 @@ reqwest = { version = "0.11.11", default-features = false, features = ["blocking
 serde = "1.0.143"
 serde_json = "1.0.83"
 solana-account-decoder = { path = "../account-decoder", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
+solana-pubsub-client = { path = "../pubsub-client", version = "=1.12.0" }
 solana-rpc = { path = "../rpc", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
 solana-test-validator = { path = "../test-validator", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-transaction-status = { path = "../transaction-status", version = "=1.12.0" }
 tokio = { version = "~1.14.1", features = ["full"] }
 

+ 3 - 3
rpc-test/tests/nonblocking.rs

@@ -1,10 +1,10 @@
 use {
-    solana_client::{
+    solana_sdk::{clock::DEFAULT_MS_PER_SLOT, pubkey::Pubkey, system_transaction},
+    solana_test_validator::TestValidatorGenesis,
+    solana_tpu_client::{
         nonblocking::tpu_client::{LeaderTpuService, TpuClient},
         tpu_client::TpuClientConfig,
     },
-    solana_sdk::{clock::DEFAULT_MS_PER_SLOT, pubkey::Pubkey, system_transaction},
-    solana_test_validator::TestValidatorGenesis,
     std::sync::{
         atomic::{AtomicBool, Ordering},
         Arc,

+ 13 - 10
rpc-test/tests/rpc.rs

@@ -6,15 +6,13 @@ use {
     reqwest::{self, header::CONTENT_TYPE},
     serde_json::{json, Value},
     solana_account_decoder::UiAccount,
-    solana_client::{
-        client_error::{ClientErrorKind, Result as ClientResult},
-        connection_cache::{ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE},
-        nonblocking::pubsub_client::PubsubClient,
-        rpc_client::RpcClient,
-        rpc_config::{RpcAccountInfoConfig, RpcSignatureSubscribeConfig},
-        rpc_request::RpcError,
-        rpc_response::{Response as RpcResponse, RpcSignatureResult, SlotUpdate},
-        tpu_client::{TpuClient, TpuClientConfig},
+    solana_pubsub_client::nonblocking::pubsub_client::PubsubClient,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{
+        client_error::{ErrorKind as ClientErrorKind, Result as ClientResult},
+        config::{RpcAccountInfoConfig, RpcSignatureSubscribeConfig},
+        request::RpcError,
+        response::{Response as RpcResponse, RpcSignatureResult, SlotUpdate},
     },
     solana_sdk::{
         commitment_config::CommitmentConfig,
@@ -27,6 +25,10 @@ use {
     },
     solana_streamer::socket::SocketAddrSpace,
     solana_test_validator::TestValidator,
+    solana_tpu_client::{
+        connection_cache::{ConnectionCache, DEFAULT_TPU_CONNECTION_POOL_SIZE},
+        tpu_client::{TpuClient, TpuClientConfig},
+    },
     solana_transaction_status::TransactionStatus,
     std::{
         collections::HashSet,
@@ -116,7 +118,8 @@ fn test_rpc_send_tx() {
     assert!(confirmed_tx);
 
     use {
-        solana_account_decoder::UiAccountEncoding, solana_client::rpc_config::RpcAccountInfoConfig,
+        solana_account_decoder::UiAccountEncoding,
+        solana_rpc_client_api::config::RpcAccountInfoConfig,
     };
     let config = RpcAccountInfoConfig {
         encoding: Some(UiAccountEncoding::Base64),

+ 2 - 1
rpc/Cargo.toml

@@ -30,7 +30,6 @@ serde_derive = "1.0.103"
 serde_json = "1.0.83"
 soketto = "0.7"
 solana-account-decoder = { path = "../account-decoder", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-entry = { path = "../entry", version = "=1.12.0" }
 solana-faucet = { path = "../faucet", version = "=1.12.0" }
 solana-gossip = { path = "../gossip", version = "=1.12.0" }
@@ -40,12 +39,14 @@ solana-metrics = { path = "../metrics", version = "=1.12.0" }
 solana-perf = { path = "../perf", version = "=1.12.0" }
 solana-poh = { path = "../poh", version = "=1.12.0" }
 solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-send-transaction-service = { path = "../send-transaction-service", version = "=1.12.0" }
 solana-stake-program = { path = "../programs/stake", version = "=1.12.0" }
 solana-storage-bigtable = { path = "../storage-bigtable", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-transaction-status = { path = "../transaction-status", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 solana-vote-program = { path = "../programs/vote", version = "=1.12.0" }

+ 1 - 1
rpc/src/optimistically_confirmed_bank_tracker.rs

@@ -5,7 +5,7 @@
 use {
     crate::rpc_subscriptions::RpcSubscriptions,
     crossbeam_channel::{Receiver, RecvTimeoutError, Sender},
-    solana_client::rpc_response::{SlotTransactionStats, SlotUpdate},
+    solana_rpc_client_api::response::{SlotTransactionStats, SlotUpdate},
     solana_runtime::{bank::Bank, bank_forks::BankForks},
     solana_sdk::{clock::Slot, timing::timestamp},
     std::{

+ 1 - 1
rpc/src/parsed_token_accounts.rs

@@ -7,7 +7,7 @@ use {
         },
         UiAccount, UiAccountData, UiAccountEncoding,
     },
-    solana_client::rpc_response::RpcKeyedAccount,
+    solana_rpc_client_api::response::RpcKeyedAccount,
     solana_runtime::bank::Bank,
     solana_sdk::{
         account::{AccountSharedData, ReadableAccount},

+ 23 - 23
rpc/src/rpc.rs

@@ -14,21 +14,6 @@ use {
         parse_token::{is_known_spl_token_id, token_amount_to_ui_amount, UiTokenAmount},
         UiAccount, UiAccountEncoding, UiDataSliceConfig, MAX_BASE58_BYTES,
     },
-    solana_client::{
-        connection_cache::ConnectionCache,
-        rpc_config::*,
-        rpc_custom_error::RpcCustomError,
-        rpc_deprecated_config::*,
-        rpc_filter::{Memcmp, MemcmpEncodedBytes, RpcFilterType},
-        rpc_request::{
-            TokenAccountsFilter, DELINQUENT_VALIDATOR_SLOT_DISTANCE,
-            MAX_GET_CONFIRMED_BLOCKS_RANGE, MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS2_LIMIT,
-            MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS_SLOT_RANGE, MAX_GET_PROGRAM_ACCOUNT_FILTERS,
-            MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS, MAX_GET_SLOT_LEADERS, MAX_MULTIPLE_ACCOUNTS,
-            NUM_LARGEST_ACCOUNTS,
-        },
-        rpc_response::{Response as RpcResponse, *},
-    },
     solana_entry::entry::Entry,
     solana_faucet::faucet::request_airdrop_transaction,
     solana_gossip::{cluster_info::ClusterInfo, contact_info::ContactInfo},
@@ -40,6 +25,20 @@ use {
     },
     solana_metrics::inc_new_counter_info,
     solana_perf::packet::PACKET_DATA_SIZE,
+    solana_rpc_client_api::{
+        config::*,
+        custom_error::RpcCustomError,
+        deprecated_config::*,
+        filter::{Memcmp, MemcmpEncodedBytes, RpcFilterType},
+        request::{
+            TokenAccountsFilter, DELINQUENT_VALIDATOR_SLOT_DISTANCE,
+            MAX_GET_CONFIRMED_BLOCKS_RANGE, MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS2_LIMIT,
+            MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS_SLOT_RANGE, MAX_GET_PROGRAM_ACCOUNT_FILTERS,
+            MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS, MAX_GET_SLOT_LEADERS, MAX_MULTIPLE_ACCOUNTS,
+            NUM_LARGEST_ACCOUNTS,
+        },
+        response::{Response as RpcResponse, *},
+    },
     solana_runtime::{
         accounts::AccountAddressFilter,
         accounts_index::{AccountIndex, AccountSecondaryIndexes, IndexKey, ScanConfig},
@@ -82,6 +81,7 @@ use {
     solana_stake_program,
     solana_storage_bigtable::Error as StorageError,
     solana_streamer::socket::SocketAddrSpace,
+    solana_tpu_client::connection_cache::ConnectionCache,
     solana_transaction_status::{
         BlockEncodingOptions, ConfirmedBlock, ConfirmedTransactionStatusWithSignature,
         ConfirmedTransactionWithStatusMeta, EncodedConfirmedTransactionWithStatusMeta, Reward,
@@ -4572,14 +4572,6 @@ pub mod tests {
         jsonrpc_core_client::transports::local,
         serde::de::DeserializeOwned,
         solana_address_lookup_table_program::state::{AddressLookupTable, LookupTableMeta},
-        solana_client::{
-            rpc_custom_error::{
-                JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE,
-                JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE,
-                JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,
-            },
-            rpc_filter::{Memcmp, MemcmpEncodedBytes},
-        },
         solana_entry::entry::next_versioned_entry,
         solana_gossip::{contact_info::ContactInfo, socketaddr},
         solana_ledger::{
@@ -4587,6 +4579,14 @@ pub mod tests {
             blockstore_processor::fill_blockstore_slot_with_ticks,
             genesis_utils::{create_genesis_config, GenesisConfigInfo},
         },
+        solana_rpc_client_api::{
+            custom_error::{
+                JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE,
+                JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE,
+                JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,
+            },
+            filter::{Memcmp, MemcmpEncodedBytes},
+        },
         solana_runtime::{
             accounts_background_service::AbsRequestSender, commitment::BlockCommitment,
             inline_spl_token, non_circulating_supply::non_circulating_accounts,

+ 1 - 1
rpc/src/rpc_cache.rs

@@ -1,5 +1,5 @@
 use {
-    solana_client::{rpc_config::RpcLargestAccountsFilter, rpc_response::RpcAccountBalance},
+    solana_rpc_client_api::{config::RpcLargestAccountsFilter, response::RpcAccountBalance},
     std::{
         collections::HashMap,
         time::{Duration, SystemTime},

+ 1 - 1
rpc/src/rpc_completed_slots_service.rs

@@ -1,8 +1,8 @@
 use {
     crate::rpc_subscriptions::RpcSubscriptions,
     crossbeam_channel::RecvTimeoutError,
-    solana_client::rpc_response::SlotUpdate,
     solana_ledger::blockstore::CompletedSlotsReceiver,
+    solana_rpc_client_api::response::SlotUpdate,
     solana_sdk::timing::timestamp,
     std::{
         sync::{

+ 4 - 4
rpc/src/rpc_pubsub.rs

@@ -16,13 +16,13 @@ use {
     jsonrpc_derive::rpc,
     jsonrpc_pubsub::{typed::Subscriber, SubscriptionId as PubSubSubscriptionId},
     solana_account_decoder::{UiAccount, UiAccountEncoding},
-    solana_client::{
-        rpc_config::{
+    solana_rpc_client_api::{
+        config::{
             RpcAccountInfoConfig, RpcBlockSubscribeConfig, RpcBlockSubscribeFilter,
             RpcProgramAccountsConfig, RpcSignatureSubscribeConfig, RpcTransactionLogsConfig,
             RpcTransactionLogsFilter,
         },
-        rpc_response::{
+        response::{
             Response as RpcResponse, RpcBlockUpdate, RpcKeyedAccount, RpcLogsResponse,
             RpcSignatureResult, RpcVersionInfo, RpcVote, SlotInfo, SlotUpdate,
         },
@@ -601,7 +601,7 @@ mod tests {
         jsonrpc_core::{IoHandler, Response},
         serial_test::serial,
         solana_account_decoder::{parse_account_data::parse_account_data, UiAccountEncoding},
-        solana_client::rpc_response::{
+        solana_rpc_client_api::response::{
             ProcessedSignatureResult, ReceivedSignatureResult, RpcSignatureResult, SlotInfo,
         },
         solana_runtime::{

+ 2 - 2
rpc/src/rpc_service.rs

@@ -19,7 +19,6 @@ use {
         RequestMiddlewareAction, ServerBuilder,
     },
     regex::Regex,
-    solana_client::connection_cache::ConnectionCache,
     solana_gossip::cluster_info::ClusterInfo,
     solana_ledger::{
         bigtable_upload::ConfirmedBlockUploadConfig,
@@ -40,6 +39,7 @@ use {
     },
     solana_send_transaction_service::send_transaction_service::{self, SendTransactionService},
     solana_storage_bigtable::CredentialType,
+    solana_tpu_client::connection_cache::ConnectionCache,
     std::{
         collections::HashSet,
         net::SocketAddr,
@@ -570,7 +570,6 @@ mod tests {
     use {
         super::*,
         crate::rpc::create_validator_exit,
-        solana_client::rpc_config::RpcContextConfig,
         solana_gossip::{
             contact_info::ContactInfo,
             crds::GossipRoute,
@@ -580,6 +579,7 @@ mod tests {
             genesis_utils::{create_genesis_config, GenesisConfigInfo},
             get_tmp_ledger_path,
         },
+        solana_rpc_client_api::config::RpcContextConfig,
         solana_runtime::bank::Bank,
         solana_sdk::{
             genesis_config::{ClusterType, DEFAULT_GENESIS_ARCHIVE},

+ 1 - 1
rpc/src/rpc_subscription_tracker.rs

@@ -2,8 +2,8 @@ use {
     crate::rpc_subscriptions::{NotificationEntry, RpcNotification, TimestampedNotificationEntry},
     dashmap::{mapref::entry::Entry as DashEntry, DashMap},
     solana_account_decoder::{UiAccountEncoding, UiDataSliceConfig},
-    solana_client::rpc_filter::RpcFilterType,
     solana_metrics::{CounterToken, TokenCounter},
+    solana_rpc_client_api::filter::RpcFilterType,
     solana_runtime::{
         bank::{TransactionLogCollectorConfig, TransactionLogCollectorFilter},
         bank_forks::BankForks,

+ 5 - 5
rpc/src/rpc_subscriptions.rs

@@ -16,14 +16,14 @@ use {
     rayon::prelude::*,
     serde::Serialize,
     solana_account_decoder::{parse_token::is_known_spl_token_id, UiAccount, UiAccountEncoding},
-    solana_client::rpc_response::{
+    solana_ledger::{blockstore::Blockstore, get_tmp_ledger_path},
+    solana_measure::measure::Measure,
+    solana_rayon_threadlimit::get_thread_count,
+    solana_rpc_client_api::response::{
         ProcessedSignatureResult, ReceivedSignatureResult, Response as RpcResponse, RpcBlockUpdate,
         RpcBlockUpdateError, RpcKeyedAccount, RpcLogsResponse, RpcResponseContext,
         RpcSignatureResult, RpcVote, SlotInfo, SlotUpdate,
     },
-    solana_ledger::{blockstore::Blockstore, get_tmp_ledger_path},
-    solana_measure::measure::Measure,
-    solana_rayon_threadlimit::get_thread_count,
     solana_runtime::{
         bank::{Bank, TransactionLogInfo},
         bank_forks::BankForks,
@@ -1240,7 +1240,7 @@ pub(crate) mod tests {
             rpc_pubsub_service,
         },
         serial_test::serial,
-        solana_client::rpc_config::{
+        solana_rpc_client_api::config::{
             RpcAccountInfoConfig, RpcBlockSubscribeConfig, RpcBlockSubscribeFilter,
             RpcProgramAccountsConfig, RpcSignatureSubscribeConfig, RpcTransactionLogsConfig,
             RpcTransactionLogsFilter,

+ 1 - 1
send-transaction-service/Cargo.toml

@@ -12,11 +12,11 @@ edition = "2021"
 [dependencies]
 crossbeam-channel = "0.5"
 log = "0.4.17"
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-measure = { path = "../measure", version = "=1.12.0" }
 solana-metrics = { path = "../metrics", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 
 [dev-dependencies]
 solana-logger = { path = "../logger", version = "=1.12.0" }

+ 1 - 1
send-transaction-service/src/send_transaction_service.rs

@@ -2,7 +2,6 @@ use {
     crate::tpu_info::TpuInfo,
     crossbeam_channel::{Receiver, RecvTimeoutError},
     log::*,
-    solana_client::{connection_cache::ConnectionCache, tpu_connection::TpuConnection},
     solana_measure::measure::Measure,
     solana_metrics::datapoint_warn,
     solana_runtime::{bank::Bank, bank_forks::BankForks},
@@ -10,6 +9,7 @@ use {
         hash::Hash, nonce_account, pubkey::Pubkey, saturating_add_assign, signature::Signature,
         timing::AtomicInterval, transport::TransportError,
     },
+    solana_tpu_client::{connection_cache::ConnectionCache, tpu_connection::TpuConnection},
     std::{
         collections::{
             hash_map::{Entry, HashMap},

+ 2 - 1
stake-accounts/Cargo.toml

@@ -13,8 +13,9 @@ documentation = "https://docs.rs/solana-stake-accounts"
 clap = "2.33.1"
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
 solana-cli-config = { path = "../cli-config", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-remote-wallet = { path = "../remote-wallet", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-stake-program = { path = "../programs/stake", version = "=1.12.0" }
 

+ 2 - 1
stake-accounts/src/main.rs

@@ -11,7 +11,8 @@ use {
         },
     },
     solana_cli_config::Config,
-    solana_client::{client_error::ClientError, rpc_client::RpcClient},
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::client_error::Error as ClientError,
     solana_sdk::{
         message::Message,
         native_token::lamports_to_sol,

+ 2 - 0
test-validator/Cargo.toml

@@ -25,9 +25,11 @@ solana-net-utils = { path = "../net-utils", version = "=1.12.0" }
 solana-program-runtime = { path = "../program-runtime", version = "=1.12.0" }
 solana-program-test = { path = "../program-test", version = "=1.12.0" }
 solana-rpc = { path = "../rpc", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 tokio = { version = "1", features = ["full"] }
 
 [package.metadata.docs.rs]

+ 2 - 5
test-validator/src/lib.rs

@@ -3,11 +3,6 @@
 use {
     log::*,
     solana_cli_output::CliAccount,
-    solana_client::{
-        connection_cache::{DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC},
-        nonblocking,
-        rpc_client::RpcClient,
-    },
     solana_core::{
         tower_storage::TowerStorage,
         validator::{Validator, ValidatorConfig, ValidatorStartProgress},
@@ -24,6 +19,7 @@ use {
     solana_net_utils::PortRange,
     solana_program_runtime::compute_budget::ComputeBudget,
     solana_rpc::{rpc::JsonRpcConfig, rpc_pubsub_service::PubSubConfig},
+    solana_rpc_client::{nonblocking, rpc_client::RpcClient},
     solana_runtime::{
         accounts_db::AccountsDbConfig, accounts_index::AccountsIndexConfig, bank_forks::BankForks,
         genesis_utils::create_genesis_config_with_leader_ex,
@@ -47,6 +43,7 @@ use {
         signature::{read_keypair_file, write_keypair_file, Keypair, Signer},
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_tpu_client::connection_cache::{DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_USE_QUIC},
     std::{
         collections::{HashMap, HashSet},
         ffi::OsStr,

+ 2 - 1
tokens/Cargo.toml

@@ -22,8 +22,9 @@ serde = { version = "1.0", features = ["derive"] }
 solana-account-decoder = { path = "../account-decoder", version = "=1.12.0" }
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
 solana-cli-config = { path = "../cli-config", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-remote-wallet = { path = "../remote-wallet", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-transaction-status = { path = "../transaction-status", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }

+ 5 - 5
tokens/src/commands.rs

@@ -17,11 +17,11 @@ use {
     solana_account_decoder::parse_token::{
         pubkey_from_spl_token, real_number_string, spl_token_pubkey,
     },
-    solana_client::{
-        client_error::{ClientError, Result as ClientResult},
-        rpc_client::RpcClient,
-        rpc_config::RpcSendTransactionConfig,
-        rpc_request::MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{
+        client_error::{Error as ClientError, Result as ClientResult},
+        config::RpcSendTransactionConfig,
+        request::MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS,
     },
     solana_sdk::{
         clock::{Slot, DEFAULT_MS_PER_SLOT},

+ 1 - 1
tokens/src/main.rs

@@ -1,6 +1,6 @@
 use {
     solana_cli_config::{Config, CONFIG_FILE},
-    solana_client::rpc_client::RpcClient,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_tokens::{arg_parser::parse_args, args::Command, commands, spl_token},
     std::{
         env,

+ 1 - 1
tokens/src/spl_token.rs

@@ -7,7 +7,7 @@ use {
     solana_account_decoder::parse_token::{
         pubkey_from_spl_token, real_number_string, real_number_string_trimmed, spl_token_pubkey,
     },
-    solana_client::rpc_client::RpcClient,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{instruction::Instruction, message::Message, native_token::lamports_to_sol},
     solana_transaction_status::parse_token::spl_token_instruction,
     spl_associated_token_account::{

+ 1 - 1
tokens/tests/commands.rs

@@ -1,5 +1,5 @@
 use {
-    solana_client::rpc_client::RpcClient,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::signature::{Keypair, Signer},
     solana_streamer::socket::SocketAddrSpace,
     solana_test_validator::TestValidator,

+ 1 - 0
transaction-dos/Cargo.toml

@@ -23,6 +23,7 @@ solana-gossip = { path = "../gossip", version = "=1.12.0" }
 solana-logger = { path = "../logger", version = "=1.12.0" }
 solana-measure = { path = "../measure", version = "=1.12.0" }
 solana-net-utils = { path = "../net-utils", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }

+ 2 - 1
transaction-dos/src/main.rs

@@ -6,9 +6,10 @@ use {
     rayon::prelude::*,
     solana_clap_utils::input_parsers::pubkey_of,
     solana_cli::{cli::CliConfig, program::process_deploy},
-    solana_client::{rpc_client::RpcClient, transaction_executor::TransactionExecutor},
+    solana_client::transaction_executor::TransactionExecutor,
     solana_faucet::faucet::{request_airdrop_transaction, FAUCET_PORT},
     solana_gossip::gossip_service::discover,
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         commitment_config::CommitmentConfig,
         instruction::{AccountMeta, Instruction},

+ 3 - 1
validator/Cargo.toml

@@ -32,7 +32,6 @@ serde_json = "1.0.83"
 serde_yaml = "0.8.26"
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
 solana-cli-config = { path = "../cli-config", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-core = { path = "../core", version = "=1.12.0" }
 solana-download-utils = { path = "../download-utils", version = "=1.12.0" }
 solana-entry = { path = "../entry", version = "=1.12.0" }
@@ -46,12 +45,15 @@ solana-net-utils = { path = "../net-utils", version = "=1.12.0" }
 solana-perf = { path = "../perf", version = "=1.12.0" }
 solana-poh = { path = "../poh", version = "=1.12.0" }
 solana-rpc = { path = "../rpc", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-runtime = { path = "../runtime", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-send-transaction-service = { path = "../send-transaction-service", version = "=1.12.0" }
 solana-storage-bigtable = { path = "../storage-bigtable", version = "=1.12.0" }
 solana-streamer = { path = "../streamer", version = "=1.12.0" }
 solana-test-validator = { path = "../test-validator", version = "=1.12.0" }
+solana-tpu-client = { path = "../tpu-client", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 solana-vote-program = { path = "../programs/vote", version = "=1.12.0" }
 symlink = "0.1.0"

+ 1 - 1
validator/src/bin/solana-test-validator.rs

@@ -9,13 +9,13 @@ use {
             normalize_to_url_if_moniker,
         },
     },
-    solana_client::rpc_client::RpcClient,
     solana_core::tower_storage::FileTowerStorage,
     solana_faucet::faucet::{run_local_faucet_with_port, FAUCET_PORT},
     solana_rpc::{
         rpc::{JsonRpcConfig, RpcBigtableConfig},
         rpc_pubsub_service::PubSubConfig,
     },
+    solana_rpc_client::rpc_client::RpcClient,
     solana_sdk::{
         account::AccountSharedData,
         clock::Slot,

+ 1 - 1
validator/src/bootstrap.rs

@@ -2,7 +2,6 @@ use {
     log::*,
     rand::{seq::SliceRandom, thread_rng, Rng},
     rayon::prelude::*,
-    solana_client::rpc_client::RpcClient,
     solana_core::validator::{ValidatorConfig, ValidatorStartProgress},
     solana_download_utils::{download_snapshot_archive, DownloadProgressRecord},
     solana_genesis_utils::download_then_check_genesis_hash,
@@ -12,6 +11,7 @@ use {
         crds_value,
         gossip_service::GossipService,
     },
+    solana_rpc_client::rpc_client::RpcClient,
     solana_runtime::{
         snapshot_archive_info::SnapshotArchiveInfoGetter,
         snapshot_package::SnapshotType,

+ 10 - 13
validator/src/dashboard.rs

@@ -4,10 +4,9 @@ use {
         ProgressBar,
     },
     console::style,
-    solana_client::{
-        client_error, rpc_client::RpcClient, rpc_request, rpc_response::RpcContactInfo,
-    },
     solana_core::validator::ValidatorStartProgress,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{client_error, request, response::RpcContactInfo},
     solana_sdk::{
         clock::Slot, commitment_config::CommitmentConfig, exit::Exit, native_token::Sol,
         pubkey::Pubkey,
@@ -273,16 +272,14 @@ fn get_validator_stats(
     let health = match rpc_client.get_health() {
         Ok(()) => "ok".to_string(),
         Err(err) => {
-            if let client_error::ClientErrorKind::RpcError(
-                rpc_request::RpcError::RpcResponseError {
-                    code: _,
-                    message: _,
-                    data:
-                        rpc_request::RpcResponseErrorData::NodeUnhealthy {
-                            num_slots_behind: Some(num_slots_behind),
-                        },
-                },
-            ) = &err.kind
+            if let client_error::ErrorKind::RpcError(request::RpcError::RpcResponseError {
+                code: _,
+                message: _,
+                data:
+                    request::RpcResponseErrorData::NodeUnhealthy {
+                        num_slots_behind: Some(num_slots_behind),
+                    },
+            }) = &err.kind
             {
                 format!("{} slots behind", num_slots_behind)
             } else {

+ 3 - 4
validator/src/main.rs

@@ -18,10 +18,6 @@ use {
         },
         keypair::SKIP_SEED_PHRASE_VALIDATION_ARG,
     },
-    solana_client::{
-        connection_cache::DEFAULT_TPU_CONNECTION_POOL_SIZE, rpc_client::RpcClient,
-        rpc_config::RpcLeaderScheduleConfig, rpc_request::MAX_MULTIPLE_ACCOUNTS,
-    },
     solana_core::{
         ledger_cleanup_service::{DEFAULT_MAX_LEDGER_SHREDS, DEFAULT_MIN_MAX_LEDGER_SHREDS},
         system_monitor_service::SystemMonitorService,
@@ -41,6 +37,8 @@ use {
         rpc::{JsonRpcConfig, RpcBigtableConfig, MAX_REQUEST_BODY_SIZE},
         rpc_pubsub_service::PubSubConfig,
     },
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{config::RpcLeaderScheduleConfig, request::MAX_MULTIPLE_ACCOUNTS},
     solana_runtime::{
         accounts_db::{
             AccountShrinkThreshold, AccountsDbConfig, FillerAccountsConfig,
@@ -72,6 +70,7 @@ use {
         self, MAX_BATCH_SEND_RATE_MS, MAX_TRANSACTION_BATCH_SIZE,
     },
     solana_streamer::socket::SocketAddrSpace,
+    solana_tpu_client::connection_cache::DEFAULT_TPU_CONNECTION_POOL_SIZE,
     solana_validator::{
         admin_rpc_service,
         admin_rpc_service::{load_staked_nodes_overrides, StakedNodesOverrides},

+ 2 - 1
watchtower/Cargo.toml

@@ -16,10 +16,11 @@ log = "0.4.17"
 solana-clap-utils = { path = "../clap-utils", version = "=1.12.0" }
 solana-cli-config = { path = "../cli-config", version = "=1.12.0" }
 solana-cli-output = { path = "../cli-output", version = "=1.12.0" }
-solana-client = { path = "../client", version = "=1.12.0" }
 solana-logger = { path = "../logger", version = "=1.12.0" }
 solana-metrics = { path = "../metrics", version = "=1.12.0" }
 solana-notifier = { path = "../notifier", version = "=1.12.0" }
+solana-rpc-client = { path = "../rpc-client", version = "=1.12.0" }
+solana-rpc-client-api = { path = "../rpc-client-api", version = "=1.12.0" }
 solana-sdk = { path = "../sdk", version = "=1.12.0" }
 solana-version = { path = "../version", version = "=1.12.0" }
 

+ 3 - 2
watchtower/src/main.rs

@@ -9,9 +9,10 @@ use {
         input_validators::{is_parsable, is_pubkey_or_keypair, is_url},
     },
     solana_cli_output::display::format_labeled_address,
-    solana_client::{client_error, rpc_client::RpcClient, rpc_response::RpcVoteAccountStatus},
     solana_metrics::{datapoint_error, datapoint_info},
     solana_notifier::Notifier,
+    solana_rpc_client::rpc_client::RpcClient,
+    solana_rpc_client_api::{client_error, response::RpcVoteAccountStatus},
     solana_sdk::{
         hash::Hash,
         native_token::{sol_to_lamports, Sol},
@@ -321,7 +322,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
             Err(err) => {
                 let mut failure = Some(("rpc-error", err.to_string()));
 
-                if let client_error::ClientErrorKind::Reqwest(reqwest_err) = err.kind() {
+                if let client_error::ErrorKind::Reqwest(reqwest_err) = err.kind() {
                     if let Some(client_error::reqwest::StatusCode::BAD_GATEWAY) =
                         reqwest_err.status()
                     {