1 // Copyright (c) 2025 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5 #ifndef BITCOIN_INTERFACES_RPC_H
6 #define BITCOIN_INTERFACES_RPC_H
7
8 #include <memory>
9 #include <string>
10
11 class UniValue;
12
13 namespace node {
14 struct NodeContext;
15 } // namespace node
16
17 namespace interfaces {
18 //! Interface giving clients ability to emulate HTTP RPC calls.
19 class Rpc
20 {
21 public:
22 virtual ~Rpc() = default;
23 virtual UniValue executeRpc(UniValue request, std::string url, std::string user) = 0;
24 };
25
26 //! Return implementation of Rpc interface.
27 std::unique_ptr<Rpc> MakeRpc(node::NodeContext& node);
28
29 } // namespace interfaces
30
31 #endif // BITCOIN_INTERFACES_RPC_H
32