use super::helpers::{
  CapabilityAttachmentContract, ModelRegistryVariantContract, capability_with_attachments, variant,
};

pub(super) fn anthropic_variants(image_attachment: &CapabilityAttachmentContract) -> Vec<ModelRegistryVariantContract> {
  vec![
    variant(
      "anthropic",
      "claude-opus-4",
      "claude-opus-4-20250514",
      &["claude-opus-4", "claude-opus-4.0"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("anthropic"),
      &[],
      Some("Claude Opus 4"),
    ),
    variant(
      "anthropic",
      "claude-sonnet-4.6",
      "claude-sonnet-4-6",
      &["claude-sonnet-4.6", "claude-sonnet-4-6"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("anthropic"),
      &["reasoning_budget_12000"],
      Some("Claude Sonnet 4.6"),
    ),
    variant(
      "anthropic",
      "claude-sonnet-4.5",
      "claude-sonnet-4-5-20250929",
      &["claude-sonnet-4.5", "claude-sonnet-4-5"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("anthropic"),
      &["reasoning_budget_12000"],
      Some("Claude Sonnet 4.5"),
    ),
    variant(
      "anthropic",
      "claude-sonnet-4",
      "claude-sonnet-4-20250514",
      &["claude-sonnet-4"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("anthropic"),
      &["reasoning_budget_12000"],
      Some("Claude Sonnet 4"),
    ),
    variant(
      "anthropic_vertex",
      "claude-opus-4",
      "claude-opus-4@20250514",
      &["claude-opus-4", "claude-opus-4.0"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("vertex_anthropic"),
      &[],
      Some("Claude Opus 4"),
    ),
    variant(
      "anthropic_vertex",
      "claude-sonnet-4.6",
      "claude-sonnet-4-6",
      &["claude-sonnet-4.6", "claude-sonnet-4-6"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("vertex_anthropic"),
      &["reasoning_budget_12000"],
      Some("Claude Sonnet 4.6"),
    ),
    variant(
      "anthropic_vertex",
      "claude-sonnet-4.5",
      "claude-sonnet-4-5@20250929",
      &["claude-sonnet-4.5", "claude-sonnet-4-5"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("vertex_anthropic"),
      &["reasoning_budget_12000"],
      Some("Claude Sonnet 4.5"),
    ),
    variant(
      "anthropic_vertex",
      "claude-sonnet-4",
      "claude-sonnet-4@20250514",
      &["claude-sonnet-4"],
      &[],
      vec![capability_with_attachments(
        &["text", "image"],
        &["text", "object"],
        image_attachment.clone(),
        None,
        false,
      )],
      Some("anthropic"),
      Some("vertex_anthropic"),
      &["reasoning_budget_12000"],
      Some("Claude Sonnet 4"),
    ),
  ]
}
