use arete_auth::AuthContext;
use async_trait::async_trait;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SolanaGatewayUsageSurface {
ChainRead,
Transaction,
}
#[derive(Clone, Debug)]
pub struct SolanaGatewayUsageObservation {
pub target_id: String,
pub auth_context: Option<AuthContext>,
pub surface: SolanaGatewayUsageSurface,
pub operation: &'static str,
pub result: &'static str,
pub address_count: u64,
pub response_bytes: u64,
}
#[async_trait]
pub trait SolanaGatewayUsageObserver: Send + Sync {
async fn observe(&self, observation: SolanaGatewayUsageObservation);
}