use serde::{Deserialize, Serialize};

pub mod merge_abort;
pub mod merge_analysis;
pub mod merge_analysis_for_ref;
pub mod merge_base;
pub mod merge_base_many;
pub mod merge_base_octopus;
pub mod merge_commit;
pub mod merge_is_conflicted;
pub mod merge_tree;
pub mod mergehead_list;
pub mod squash_commit;

pub use merge_commit::MergeCommitParams;
pub use merge_tree::MergeTreeResult;
pub use squash_commit::SquashCommitParams;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MergeAnalysisResult {
    pub is_none: bool,
    pub is_normal: bool,
    pub is_up_to_date: bool,
    pub is_fast_forward: bool,
    pub is_unborn: bool,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MergePreferenceResult {
    pub is_none: bool,
    pub is_no_fast_forward: bool,
    pub is_fastforward_only: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MergeOptions {
    pub find_renames: bool,
    pub fail_on_conflict: bool,
    pub skip_reuc: bool,
    pub no_recursive: bool,
    pub rename_threshold: u32,
    pub target_limit: u32,
    pub recursion_limit: u32,
}
