use async_trait::async_trait;
use uuid::Uuid;
use crate::error::Result;
use super::events::{BillingEvent, SessionSummary, TranscriptEntry};
#[async_trait]
pub trait BillingStorage: Send + Sync {
async fn record_event(&self, _event: &BillingEvent) -> Result<()> {
Ok(())
}
async fn checkpoint(
&self,
_summary: &SessionSummary,
_new_events: &[(Uuid, BillingEvent)],
_transcripts: &[TranscriptEntry],
) -> Result<()> {
Ok(())
}
async fn finalize_session(
&self,
summary: &SessionSummary,
transcripts: &[TranscriptEntry],
) -> Result<()>;
}
pub mod log_storage;
#[cfg(feature = "db-postgres")]
pub mod postgres;