# typed: strict
module HasDomainType
  extend T::Sig
  extend T::Helpers
  include HelpersInterface
  abstract!

  requires_ancestor { Object }

  sig(:final) { returns(Domain::DomainType) }
  def domain_type
    T.unsafe(self.class).domain_type
  end

  module ClassMethods
    extend T::Sig
    extend T::Helpers
    include HelpersInterface
    abstract!

    sig { abstract.returns(Domain::DomainType) }
    def domain_type
    end
  end

  mixes_in_class_methods(ClassMethods)
end
