//! Read port for cex-policy governance records.
//!
//! Application code (a [`crate::governance::GovernanceHandler`], a ruleset
//! apply service) depends on this trait, not on the gRPC client, so it can be
//! tested against an in-memory fake that fails the way cex-policy does.
//! [`crate::governance::PolicyGovernanceClient`] is the production adapter.
use async_trait;
use ;
use PolicyFetchError;
/// Read side of cex-policy's internal API used by governance consumers.
///
/// Both methods share one contract: `Ok(None)` only when cex-policy answered
/// `NOT_FOUND`; any failure to get an answer is `Err` and must hold the event
/// that triggered the read (see [`PolicyFetchError`]).