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}