use crate::{
provider::{Provider, ProviderError},
verification::{NoopVerified, Verified},
NoopSigned, Signed,
};
pub mod dumb;
pub use dumb::DumbCache;
mod lru;
pub use self::lru::LruCache;
pub trait Cache: Provider {}
pub(crate) type CacheResult<T> = Result<Option<T>, crate::provider::ProviderError>;
pub(crate) fn into_cache_result<T>(res: crate::provider::Result<T>) -> CacheResult<T> {
match res {
Ok(val) => Ok(Some(val)),
Err(e) if matches!(e, ProviderError::NotFound) => Ok(None),
Err(e) => Err(e),
}
}
fn noop_verify_and_sign(inv: crate::Invoice) -> impl Signed + Verified + Send + Sync {
NoopSigned(NoopVerified(inv))
}