tempo_node/rpc/policy/mod.rs
1pub use addresses::{AddressesFilters, PolicyAddress};
2
3use crate::rpc::policy::addresses::{AddressesParams, AddressesResponse};
4use jsonrpsee::{core::RpcResult, proc_macros::rpc};
5use reth_node_core::rpc::result::internal_rpc_err;
6use reth_rpc_eth_api::RpcNodeCore;
7
8pub mod addresses;
9
10#[rpc(server, namespace = "policy")]
11pub trait TempoPolicyApi {
12 /// Gets paginated addresses in a transfer policy on Tempo.
13 ///
14 /// Returns addresses that are authorized or restricted based on the policy type (whitelist or blacklist).
15 ///
16 /// Uses cursor-based pagination for stable iteration through addresses.
17 #[method(name = "getAddresses")]
18 async fn addresses(&self, params: AddressesParams) -> RpcResult<AddressesResponse>;
19}
20
21/// The JSON-RPC handlers for the `policy_` namespace.
22#[derive(Debug, Clone, Default)]
23pub struct TempoPolicy<EthApi> {
24 eth_api: EthApi,
25}
26
27impl<EthApi> TempoPolicy<EthApi> {
28 pub fn new(eth_api: EthApi) -> Self {
29 Self { eth_api }
30 }
31}
32
33#[async_trait::async_trait]
34impl<EthApi: RpcNodeCore> TempoPolicyApiServer for TempoPolicy<EthApi> {
35 async fn addresses(&self, _params: AddressesParams) -> RpcResult<AddressesResponse> {
36 Err(internal_rpc_err("unimplemented"))
37 }
38}
39
40impl<EthApi: RpcNodeCore> TempoPolicy<EthApi> {
41 /// Access the underlying provider.
42 pub fn provider(&self) -> &EthApi::Provider {
43 self.eth_api.provider()
44 }
45}