use super::{RuleConfigurability, RuleDefaultSeverity, RuleDefinition, RuleLanguage, RuleStatus};

pub(crate) const RULE_DEFINITIONS: &[RuleDefinition] = &[
    RuleDefinition {
        id: "cross_file_copy_paste_function",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Highly similar non-test function bodies repeated across multiple Python files.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
    RuleDefinition {
        id: "cross_file_repeated_literal",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Project repeats the same long string literal across multiple files.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
    RuleDefinition {
        id: "duplicate_error_handler_block",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Repeated exception-handling block shapes in one file.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
    RuleDefinition {
        id: "duplicate_query_fragment",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Repository repeats the same SQL-like query fragment across multiple files.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
    RuleDefinition {
        id: "duplicate_test_utility_logic",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Highly similar utility logic shared between test and production code.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
    RuleDefinition {
        id: "duplicate_transformation_pipeline",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Repository repeats the same data transformation pipeline stages across multiple functions.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
    RuleDefinition {
        id: "duplicate_validation_pipeline",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Repeated validation guard pipelines across functions in one file.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
    RuleDefinition {
        id: "repeated_string_literal",
        language: RuleLanguage::Python,
        family: "duplication",
        default_severity: RuleDefaultSeverity::Info,
        status: RuleStatus::Stable,
        configurability: &[
            RuleConfigurability::Disable,
            RuleConfigurability::Ignore,
            RuleConfigurability::SeverityOverride,
        ],
        description: "Project repeats the same long string literal multiple times in one file.",
        binding_location: super::bindings::PYTHON_DUPLICATION,
    },
];
