module T::Helpers

def abstract!

def abstract!
  if defined?(super)
    # This is to play nicely with Rails' AbstractController::Base,
    # which also defines an `abstract!` method.
    # https://api.rubyonrails.org/classes/AbstractController/Base.html#method-c-abstract-21
    super
  end
  Private::Abstract::Declare.declare_abstract(self, type: :abstract)
end

def final!

def final!
  Private::Final.declare(self)
end

def interface!

def interface!
  Private::Abstract::Declare.declare_abstract(self, type: :interface)
end

def mixes_in_class_methods(mod, *mods)

Except that it is statically analyzed by sorbet.

end
other.extend(mod)
def self.included(other)

Nearly equivalent to

Causes a mixin to also mix in class methods from the named module.
def mixes_in_class_methods(mod, *mods)
  Private::Mixins.declare_mixes_in_class_methods(self, [mod].concat(mods))
end

def requires_ancestor(&block); end

TODO: implement the checks in sorbet-runtime.

end
include MyHelper
class MyClass < BasicObject # error: `MyClass` must include `Kernel` (required by `MyHelper`)

end
requires_ancestor { Kernel }

extend T::Helpers
module MyHelper

Example:

Specify an inclusion or inheritance requirement for `self`.
def requires_ancestor(&block); end

def sealed!

def sealed!
  Private::Sealed.declare(self, Kernel.caller(1..1)&.first&.split(':')&.first)
end