Solana Ecosystem HTTP Clients.
try (var httpClient = HttpClient.newHttpClient()) { var heliusClient = HeliusClient.createHttpClient(URI.create("https://mainnet.helius-rpc.com/?api-key="), httpClient); }
Transaction transaction = ... var base64EncodedTx = transaction.base64EncodeToString(); var feeEstimate = heliusClient.getRecommendedTransactionPriorityFeeEstimate(base64EncodedTx).join(); System.out.format( "Mert recommends a %s micro lamport compute unit price.", feeEstimate.toPlainString() );
try (var httpClient = HttpClient.newHttpClient()) { var jupiterClient = JupiterClient.createClient(httpClient); }
software.sava.core.accounts.Signer signer = ... var tokens = jupiterClient.verifiedTokenMap().join(); var outputTokenContext = tokens.get(SolanaAccounts.MAIN_NET.wrappedSolTokenMint()); var inputTokenContext = tokens.values().stream() .filter(tokenContext -> tokenContext.symbol().equals("USDC")) .findFirst().orElseThrow(); var quoteRequest = JupiterQuoteRequest.buildRequest() .swapMode(SwapMode.ExactIn) .amount(inputTokenContext.fromDecimal(BigDecimal.ONE).toBigInteger()) .inputTokenMint(inputTokenContext.address()) .outputTokenMint(outputTokenContext.address()) .slippageBps(2) .dexes(Set.of( "Meteora", "Meteora DLMM", "Orca V2", "OpenBook V2", "Phoenix", "Raydium", "Raydium CLMM", "Raydium CP", "Whirlpool" )) .restrictIntermediateTokens(true) .onlyDirectRoutes(false) .create(); var quote = jupiterClient.getQuote(quoteRequest).join(); System.out.println(quote); var swapRequest = JupiterSwapRequest .buildRequest() .userPublicKey(signer.publicKey()) .skipUserAccountsRpcCalls(true) .useSharedAccounts(true) .createRequest(); var swapTransaction = jupiterClient.swap( swapRequest.preSerialize(), quote.quoteResponseJson() ).join(); var txBytes = swapTransaction.swapTransaction(); Transaction.sign(signer, txBytes); // send transaction