use std::path::PathBuf;
use std::sync::mpsc;
use tokio::sync::mpsc::UnboundedSender;
use crate::config::{LayoutOverlay, Osc11BackgroundFormat};
use crate::engine::db_ops::{DuplicateGroup, DuplicateGroupingMode};
use crate::layout::setup::RightPaneAsyncReady;
use crate::utils;
#[derive(Clone, Copy, Debug, Default)]
pub struct RunUblxDisplayOpts {
pub dev: bool,
}
#[derive(Clone, Copy, Debug, Default)]
pub struct RunUblxStartupFlow {
pub defer_first_snapshot: bool,
pub pending_force_full_enhance_toast: bool,
}
pub struct RunUblxParams<'a> {
pub db_path: PathBuf,
pub dir_to_ublx: PathBuf,
pub snapshot_done_rx: Option<mpsc::Receiver<(usize, usize, usize)>>,
pub snapshot_done_tx: Option<mpsc::Sender<(usize, usize, usize)>>,
pub bumper: Option<&'a utils::BumperBuffer>,
pub display: RunUblxDisplayOpts,
pub theme: Option<String>,
pub layout: LayoutOverlay,
pub bg_opacity: f32,
pub opacity_format: Osc11BackgroundFormat,
pub duplicate_groups: Vec<DuplicateGroup>,
pub duplicate_mode: DuplicateGroupingMode,
pub duplicate_groups_rx: Option<mpsc::Receiver<(Vec<DuplicateGroup>, DuplicateGroupingMode)>>,
pub zahir_export_rx: Option<mpsc::Receiver<Result<usize, String>>>,
pub lens_export_rx: Option<mpsc::Receiver<Result<usize, String>>>,
pub lens_names: Vec<String>,
pub config_reload_rx: Option<mpsc::Receiver<()>>,
pub startup: RunUblxStartupFlow,
pub right_pane_async_tx: Option<UnboundedSender<RightPaneAsyncReady>>,
}