use std::path::Path;
use std::sync::OnceLock;
use chrono::{DateTime, Utc};
use lean_ctx_protocol::{EngineInvocationV1, EngineObservationV1};
pub type ReceiptSink = fn(&Path, &str, &EngineInvocationV1, &EngineObservationV1, DateTime<Utc>);
static SINK: OnceLock<ReceiptSink> = OnceLock::new();
pub fn register_receipt_sink(sink: ReceiptSink) {
let _ = SINK.set(sink);
}
pub(crate) fn note_receipt(
root: &Path,
receipt_id: &str,
invocation: &EngineInvocationV1,
observation: &EngineObservationV1,
now: DateTime<Utc>,
) {
if let Some(sink) = SINK.get() {
sink(root, receipt_id, invocation, observation, now);
}
}