use crate::bond::Bond;
use crate::error::BondError;
use crate::events::{BondBrokenReason, BondEvent, BondEventHook, BondEventPayload};
use crate::query::{BondQuery, MetadataFilter};
use chrono::{DateTime, Utc};
use rusqlite::{Connection, params};
use std::collections::HashMap;
use std::path::{Path, PathBuf};
use std::sync::{Arc, RwLock};
mod health;
mod hooks;
mod lifecycle;
mod querying;
mod storage;
#[cfg(test)]
mod tests;
pub struct BondManager {
pub(super) conn: Connection,
pub(super) hooks: RwLock<Vec<Arc<dyn BondEventHook>>>,
}