class Dependabot::Ecosystem::VersionManager

def deprecated?

def deprecated?
  return false unless detected_version
  # If the version is unsupported, the unsupported error is getting raised separately.
  return false if unsupported?
  deprecated_versions.include?(detected_version)
end

def initialize(

def initialize(
  name:,
  detected_version: nil,
  version: nil,
  deprecated_versions: [],
  supported_versions: [],
  requirement: nil
)
  @name = T.let(name, String)
  @detected_version = T.let(detected_version || version, T.nilable(Dependabot::Version))
  @version = T.let(version, T.nilable(Dependabot::Version))
  @deprecated_versions = T.let(deprecated_versions, T::Array[Dependabot::Version])
  @supported_versions = T.let(supported_versions, T::Array[Dependabot::Version])
  @requirement = T.let(requirement, T.nilable(Dependabot::Requirement))
end

def raise_if_unsupported!

def raise_if_unsupported!
  return unless detected_version
  return unless unsupported?
  # Example: v2.*, v3.*
  supported_versions_message = supported_versions.map { |v| "v#{v}.*" }.join(", ")
  raise ToolVersionNotSupported.new(
    name,
    detected_version.to_s,
    supported_versions_message
  )
end

def support_later_versions?

def support_later_versions?
  false
end

def unsupported?

def unsupported?
  return false unless detected_version
  return false if supported_versions.empty?
  # Check if the version is not supported
  supported_versions.all? { |supported| supported > detected_version }
end

def version_to_raw_s

def version_to_raw_s
  version&.to_semver.to_s
end

def version_to_s

def version_to_s
  version.to_s
end