Arie/serveme

View on GitHub
sorbet/rbi/gems/activesupport@7.0.5.rbi

Summary

Maintainability
Test Coverage
# typed: false

# DO NOT EDIT MANUALLY
# This is an autogenerated file for types exported from the `activesupport` gem.
# Please instead update this file by running `bin/tapioca gem activesupport`.

# source://american_date/1.2.0/lib/american_date.rb#16
::AMERICAN_DATE_RE = T.let(T.unsafe(nil), Regexp)

# source://ruby-openid/2.9.2/lib/openid/fetchers.rb#13
::MAX_RESPONSE_KB = T.let(T.unsafe(nil), Integer)

# source://yard/0.9.34/lib/yard.rb#61
::RUBY18 = T.let(T.unsafe(nil), FalseClass)

# source://yard/0.9.34/lib/yard.rb#62
::RUBY19 = T.let(T.unsafe(nil), TrueClass)

# source://activesupport//lib/active_support/lazy_load_hooks.rb#3
module ActiveSupport
  extend ::ActiveSupport::LazyLoadHooks
  extend ::ActiveSupport::Autoload

  # source://activesupport//lib/active_support/json/decoding.rb#9
  def parse_json_times; end

  # source://activesupport//lib/active_support/json/decoding.rb#9
  def parse_json_times=(val); end

  # source://activesupport//lib/active_support.rb#94
  def test_order; end

  # source://activesupport//lib/active_support.rb#94
  def test_order=(val); end

  # source://activesupport//lib/active_support.rb#95
  def test_parallelization_threshold; end

  # source://activesupport//lib/active_support.rb#95
  def test_parallelization_threshold=(val); end

  class << self
    # source://activesupport//lib/active_support.rb#99
    def cache_format_version; end

    # source://activesupport//lib/active_support.rb#103
    def cache_format_version=(value); end

    # source://activesupport//lib/active_support.rb#88
    def eager_load!; end

    # source://activesupport//lib/active_support.rb#97
    def error_reporter; end

    # source://activesupport//lib/active_support.rb#97
    def error_reporter=(_arg0); end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def escape_html_entities_in_json(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def escape_html_entities_in_json=(arg); end

    # Returns the currently loaded version of Active Support as a <tt>Gem::Version</tt>.
    #
    # source://activesupport//lib/active_support/gem_version.rb#5
    def gem_version; end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def json_encoder(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def json_encoder=(arg); end

    # source://activesupport//lib/active_support/json/decoding.rb#9
    def parse_json_times; end

    # source://activesupport//lib/active_support/json/decoding.rb#9
    def parse_json_times=(val); end

    # source://activesupport//lib/active_support.rb#94
    def test_order; end

    # source://activesupport//lib/active_support.rb#94
    def test_order=(val); end

    # source://activesupport//lib/active_support.rb#95
    def test_parallelization_threshold; end

    # source://activesupport//lib/active_support.rb#95
    def test_parallelization_threshold=(val); end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def time_precision(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def time_precision=(arg); end

    # source://activesupport//lib/active_support.rb#107
    def to_time_preserves_timezone; end

    # source://activesupport//lib/active_support.rb#111
    def to_time_preserves_timezone=(value); end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def use_standard_json_time_format(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/json/encoding.rb#8
    def use_standard_json_time_format=(arg); end

    # source://activesupport//lib/active_support.rb#115
    def utc_to_local_returns_utc_offset_times; end

    # source://activesupport//lib/active_support.rb#119
    def utc_to_local_returns_utc_offset_times=(value); end

    # Returns the currently loaded version of Active Support as a <tt>Gem::Version</tt>.
    #
    # source://activesupport//lib/active_support/version.rb#7
    def version; end
  end
end

# Actionable errors lets you define actions to resolve an error.
#
# To make an error actionable, include the <tt>ActiveSupport::ActionableError</tt>
# module and invoke the +action+ class macro to define the action. An action
# needs a name and a block to execute.
#
# source://activesupport//lib/active_support/actionable_error.rb#9
module ActiveSupport::ActionableError
  extend ::ActiveSupport::Concern
  include GeneratedInstanceMethods

  mixes_in_class_methods GeneratedClassMethods
  mixes_in_class_methods ::ActiveSupport::ActionableError::ClassMethods

  class << self
    # source://activesupport//lib/active_support/actionable_error.rb#18
    def actions(error); end

    # source://activesupport//lib/active_support/actionable_error.rb#27
    def dispatch(error, name); end
  end

  module GeneratedClassMethods
    def _actions; end
    def _actions=(value); end
    def _actions?; end
  end

  module GeneratedInstanceMethods
    def _actions; end
    def _actions=(value); end
    def _actions?; end
  end
end

# source://activesupport//lib/active_support/actionable_error.rb#33
module ActiveSupport::ActionableError::ClassMethods
  # Defines an action that can resolve the error.
  #
  #   class PendingMigrationError < MigrationError
  #     include ActiveSupport::ActionableError
  #
  #     action "Run pending migrations" do
  #       ActiveRecord::Tasks::DatabaseTasks.migrate
  #     end
  #   end
  #
  # source://activesupport//lib/active_support/actionable_error.rb#43
  def action(name, &block); end
end

# source://activesupport//lib/active_support/actionable_error.rb#12
class ActiveSupport::ActionableError::NonActionable < ::StandardError; end

# Wrapping an array in an +ArrayInquirer+ gives a friendlier way to check
# its string-like contents:
#
#   variants = ActiveSupport::ArrayInquirer.new([:phone, :tablet])
#
#   variants.phone?    # => true
#   variants.tablet?   # => true
#   variants.desktop?  # => false
#
# source://activesupport//lib/active_support/array_inquirer.rb#12
class ActiveSupport::ArrayInquirer < ::Array
  # Passes each element of +candidates+ collection to ArrayInquirer collection.
  # The method returns true if any element from the ArrayInquirer collection
  # is equal to the stringified or symbolized form of any element in the +candidates+ collection.
  #
  # If +candidates+ collection is not given, method returns true.
  #
  #   variants = ActiveSupport::ArrayInquirer.new([:phone, :tablet])
  #
  #   variants.any?                      # => true
  #   variants.any?(:phone, :tablet)     # => true
  #   variants.any?('phone', 'desktop')  # => true
  #   variants.any?(:desktop, :watch)    # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/array_inquirer.rb#25
  def any?(*candidates); end

  private

  # source://activesupport//lib/active_support/array_inquirer.rb#40
  def method_missing(name, *args); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/array_inquirer.rb#36
  def respond_to_missing?(name, include_private = T.unsafe(nil)); end
end

# Autoload and eager load conveniences for your library.
#
# This module allows you to define autoloads based on
# Rails conventions (i.e. no need to define the path
# it is automatically guessed based on the filename)
# and also define a set of constants that needs to be
# eager loaded:
#
#   module MyLib
#     extend ActiveSupport::Autoload
#
#     autoload :Model
#
#     eager_autoload do
#       autoload :Cache
#     end
#   end
#
# Then your library can be eager loaded by simply calling:
#
#   MyLib.eager_load!
#
# source://activesupport//lib/active_support/dependencies/autoload.rb#27
module ActiveSupport::Autoload
  # source://activesupport//lib/active_support/dependencies/autoload.rb#37
  def autoload(const_name, path = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/dependencies/autoload.rb#57
  def autoload_at(path); end

  # source://activesupport//lib/active_support/dependencies/autoload.rb#50
  def autoload_under(path); end

  # source://activesupport//lib/active_support/dependencies/autoload.rb#75
  def autoloads; end

  # source://activesupport//lib/active_support/dependencies/autoload.rb#64
  def eager_autoload; end

  # source://activesupport//lib/active_support/dependencies/autoload.rb#71
  def eager_load!; end

  class << self
    # source://activesupport//lib/active_support/dependencies/autoload.rb#28
    def extended(base); end
  end
end

# Backtraces often include many lines that are not relevant for the context
# under review. This makes it hard to find the signal amongst the backtrace
# noise, and adds debugging time. With a BacktraceCleaner, filters and
# silencers are used to remove the noisy lines, so that only the most relevant
# lines remain.
#
# Filters are used to modify lines of data, while silencers are used to remove
# lines entirely. The typical filter use case is to remove lengthy path
# information from the start of each line, and view file paths relevant to the
# app directory instead of the file system root. The typical silencer use case
# is to exclude the output of a noisy library from the backtrace, so that you
# can focus on the rest.
#
#   bc = ActiveSupport::BacktraceCleaner.new
#   bc.add_filter   { |line| line.gsub(Rails.root.to_s, '') } # strip the Rails.root prefix
#   bc.add_silencer { |line| /puma|rubygems/.match?(line) } # skip any lines from puma or rubygems
#   bc.clean(exception.backtrace) # perform the cleanup
#
# To reconfigure an existing BacktraceCleaner (like the default one in Rails)
# and show as much data as possible, you can always call
# BacktraceCleaner#remove_silencers!, which will restore the
# backtrace to a pristine state. If you need to reconfigure an existing
# BacktraceCleaner so that it does not filter or modify the paths of any lines
# of the backtrace, you can call BacktraceCleaner#remove_filters!
# These two methods will give you a completely untouched backtrace.
#
# Inspired by the Quiet Backtrace gem by thoughtbot.
#
# source://activesupport//lib/active_support/backtrace_cleaner.rb#31
class ActiveSupport::BacktraceCleaner
  # @return [BacktraceCleaner] a new instance of BacktraceCleaner
  #
  # source://activesupport//lib/active_support/backtrace_cleaner.rb#32
  def initialize; end

  # Adds a filter from the block provided. Each line in the backtrace will be
  # mapped against this filter.
  #
  #   # Will turn "/my/rails/root/app/models/person.rb" into "/app/models/person.rb"
  #   backtrace_cleaner.add_filter { |line| line.gsub(Rails.root, '') }
  #
  # source://activesupport//lib/active_support/backtrace_cleaner.rb#60
  def add_filter(&block); end

  # Adds a silencer from the block provided. If the silencer returns +true+
  # for a given line, it will be excluded from the clean backtrace.
  #
  #   # Will reject all lines that include the word "puma", like "/gems/puma/server.rb" or "/app/my_puma_server/rb"
  #   backtrace_cleaner.add_silencer { |line| /puma/.match?(line) }
  #
  # source://activesupport//lib/active_support/backtrace_cleaner.rb#69
  def add_silencer(&block); end

  # Returns the backtrace after all filters and silencers have been run
  # against it. Filters run first, then silencers.
  #
  # source://activesupport//lib/active_support/backtrace_cleaner.rb#41
  def clean(backtrace, kind = T.unsafe(nil)); end

  # Returns the backtrace after all filters and silencers have been run
  # against it. Filters run first, then silencers.
  #
  # source://activesupport//lib/active_support/backtrace_cleaner.rb#41
  def filter(backtrace, kind = T.unsafe(nil)); end

  # Removes all filters, but leaves in the silencers. Useful if you suddenly
  # need to see entire filepaths in the backtrace that you had already
  # filtered out.
  #
  # source://activesupport//lib/active_support/backtrace_cleaner.rb#83
  def remove_filters!; end

  # Removes all silencers, but leaves in the filters. Useful if your
  # context of debugging suddenly expands as you suspect a bug in one of
  # the libraries you use.
  #
  # source://activesupport//lib/active_support/backtrace_cleaner.rb#76
  def remove_silencers!; end

  private

  # source://activesupport//lib/active_support/backtrace_cleaner.rb#90
  def add_gem_filter; end

  # source://activesupport//lib/active_support/backtrace_cleaner.rb#99
  def add_gem_silencer; end

  # source://activesupport//lib/active_support/backtrace_cleaner.rb#103
  def add_stdlib_silencer; end

  # source://activesupport//lib/active_support/backtrace_cleaner.rb#107
  def filter_backtrace(backtrace); end

  # source://activesupport//lib/active_support/backtrace_cleaner.rb#123
  def noise(backtrace); end

  # source://activesupport//lib/active_support/backtrace_cleaner.rb#115
  def silence(backtrace); end
end

# source://activesupport//lib/active_support/backtrace_cleaner.rb#88
ActiveSupport::BacktraceCleaner::FORMATTED_GEMS_PATTERN = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/benchmarkable.rb#7
module ActiveSupport::Benchmarkable
  # Allows you to measure the execution time of a block in a template and
  # records the result to the log. Wrap this block around expensive operations
  # or possible bottlenecks to get a time reading for the operation. For
  # example, let's say you thought your file processing method was taking too
  # long; you could wrap it in a benchmark block.
  #
  #  <% benchmark 'Process data files' do %>
  #    <%= expensive_files_operation %>
  #  <% end %>
  #
  # That would add something like "Process data files (345.2ms)" to the log,
  # which you can then use to compare timings when optimizing your code.
  #
  # You may give an optional logger level (<tt>:debug</tt>, <tt>:info</tt>,
  # <tt>:warn</tt>, <tt>:error</tt>) as the <tt>:level</tt> option. The
  # default logger level value is <tt>:info</tt>.
  #
  #  <% benchmark 'Low-level files', level: :debug do %>
  #    <%= lowlevel_files_operation %>
  #  <% end %>
  #
  # Finally, you can pass true as the third argument to silence all log
  # activity (other than the timing information) from inside the block. This
  # is great for boiling down a noisy block to just a single statement that
  # produces one log line:
  #
  #  <% benchmark 'Process data files', level: :info, silence: true do %>
  #    <%= expensive_and_chatty_files_operation %>
  #  <% end %>
  #
  # source://activesupport//lib/active_support/benchmarkable.rb#37
  def benchmark(message = T.unsafe(nil), options = T.unsafe(nil), &block); end
end

# source://activesupport//lib/active_support/core_ext/big_decimal/conversions.rb#7
module ActiveSupport::BigDecimalWithDefaultFormat
  # source://activesupport//lib/active_support/core_ext/big_decimal/conversions.rb#8
  def to_s(format = T.unsafe(nil)); end
end

# See ActiveSupport::Cache::Store for documentation.
#
# source://activesupport//lib/active_support/cache.rb#16
module ActiveSupport::Cache
  class << self
    # Expands out the +key+ argument into a key that can be used for the
    # cache store. Optionally accepts a namespace, and all keys will be
    # scoped within that namespace.
    #
    # If the +key+ argument provided is an array, or responds to +to_a+, then
    # each of elements in the array will be turned into parameters/keys and
    # concatenated into a single key. For example:
    #
    #   ActiveSupport::Cache.expand_cache_key([:foo, :bar])               # => "foo/bar"
    #   ActiveSupport::Cache.expand_cache_key([:foo, :bar], "namespace")  # => "namespace/foo/bar"
    #
    # The +key+ argument can also respond to +cache_key+ or +to_param+.
    #
    # source://activesupport//lib/active_support/cache.rb#100
    def expand_cache_key(key, namespace = T.unsafe(nil)); end

    # Returns the value of attribute format_version.
    #
    # source://activesupport//lib/active_support/cache.rb#41
    def format_version; end

    # Sets the attribute format_version
    #
    # @param value the value to set the attribute format_version to.
    #
    # source://activesupport//lib/active_support/cache.rb#41
    def format_version=(_arg0); end

    # Creates a new Store object according to the given options.
    #
    # If no arguments are passed to this method, then a new
    # ActiveSupport::Cache::MemoryStore object will be returned.
    #
    # If you pass a Symbol as the first argument, then a corresponding cache
    # store class under the ActiveSupport::Cache namespace will be created.
    # For example:
    #
    #   ActiveSupport::Cache.lookup_store(:memory_store)
    #   # => returns a new ActiveSupport::Cache::MemoryStore object
    #
    #   ActiveSupport::Cache.lookup_store(:mem_cache_store)
    #   # => returns a new ActiveSupport::Cache::MemCacheStore object
    #
    # Any additional arguments will be passed to the corresponding cache store
    # class's constructor:
    #
    #   ActiveSupport::Cache.lookup_store(:file_store, '/tmp/cache')
    #   # => same as: ActiveSupport::Cache::FileStore.new('/tmp/cache')
    #
    # If the first argument is not a Symbol, then it will simply be returned:
    #
    #   ActiveSupport::Cache.lookup_store(MyOwnCacheStore.new)
    #   # => returns MyOwnCacheStore.new
    #
    # source://activesupport//lib/active_support/cache.rb#68
    def lookup_store(store = T.unsafe(nil), *parameters); end

    private

    # source://activesupport//lib/active_support/cache.rb#112
    def retrieve_cache_key(key); end

    # Obtains the specified cache store class, given the name of the +store+.
    # Raises an error when the store class cannot be found.
    #
    # source://activesupport//lib/active_support/cache.rb#124
    def retrieve_store_class(store); end
  end
end

# source://activesupport//lib/active_support/cache.rb#833
module ActiveSupport::Cache::Coders
  class << self
    # source://activesupport//lib/active_support/cache.rb#839
    def [](version); end
  end
end

# source://activesupport//lib/active_support/cache.rb#851
module ActiveSupport::Cache::Coders::Loader
  extend ::ActiveSupport::Cache::Coders::Loader

  # source://activesupport//lib/active_support/cache.rb#854
  def load(payload); end
end

# The one set by Marshal.
#
# source://activesupport//lib/active_support/cache.rb#834
ActiveSupport::Cache::Coders::MARK_61 = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/cache.rb#836
ActiveSupport::Cache::Coders::MARK_70_COMPRESSED = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/cache.rb#835
ActiveSupport::Cache::Coders::MARK_70_UNCOMPRESSED = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/cache.rb#874
module ActiveSupport::Cache::Coders::Rails61Coder
  include ::ActiveSupport::Cache::Coders::Loader
  extend ::ActiveSupport::Cache::Coders::Loader
  extend ::ActiveSupport::Cache::Coders::Rails61Coder

  # source://activesupport//lib/active_support/cache.rb#878
  def dump(entry); end

  # source://activesupport//lib/active_support/cache.rb#882
  def dump_compressed(entry, threshold); end
end

# source://activesupport//lib/active_support/cache.rb#887
module ActiveSupport::Cache::Coders::Rails70Coder
  include ::ActiveSupport::Cache::Coders::Loader
  extend ::ActiveSupport::Cache::Coders::Loader
  extend ::ActiveSupport::Cache::Coders::Rails70Coder

  # source://activesupport//lib/active_support/cache.rb#891
  def dump(entry); end

  # source://activesupport//lib/active_support/cache.rb#895
  def dump_compressed(entry, threshold); end
end

# source://activesupport//lib/active_support/cache/redis_cache_store.rb#26
module ActiveSupport::Cache::ConnectionPoolLike
  # @yield [_self]
  # @yieldparam _self [ActiveSupport::Cache::ConnectionPoolLike] the object that the method was called on
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#27
  def with; end
end

# source://activesupport//lib/active_support/cache.rb#27
ActiveSupport::Cache::DEFAULT_COMPRESS_LIMIT = T.let(T.unsafe(nil), Integer)

# This class is used to represent cache entries. Cache entries have a value, an optional
# expiration time, and an optional version. The expiration time is used to support the :race_condition_ttl option
# on the cache. The version is used to support the :version option on the cache for rejecting
# mismatches.
#
# Since cache entries in most instances will be serialized, the internals of this class are highly optimized
# using short instance variable names that are lazily defined.
#
# source://activesupport//lib/active_support/cache.rb#916
class ActiveSupport::Cache::Entry
  # Creates a new cache entry for the specified value. Options supported are
  # +:compressed+, +:version+, +:expires_at+ and +:expires_in+.
  #
  # @return [Entry] a new instance of Entry
  #
  # source://activesupport//lib/active_support/cache.rb#927
  def initialize(value, compressed: T.unsafe(nil), version: T.unsafe(nil), expires_in: T.unsafe(nil), expires_at: T.unsafe(nil), **_arg5); end

  # Returns the size of the cached value. This could be less than
  # <tt>value.bytesize</tt> if the data is compressed.
  #
  # source://activesupport//lib/active_support/cache.rb#963
  def bytesize; end

  # source://activesupport//lib/active_support/cache.rb#978
  def compressed(compress_threshold); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache.rb#974
  def compressed?; end

  # Duplicates the value in a class. This is used by cache implementations that don't natively
  # serialize entries to protect against accidental cache modifications.
  #
  # source://activesupport//lib/active_support/cache.rb#1008
  def dup_value!; end

  # Checks if the entry is expired. The +expires_in+ parameter can override
  # the value set when the entry was created.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache.rb#945
  def expired?; end

  # source://activesupport//lib/active_support/cache.rb#949
  def expires_at; end

  # source://activesupport//lib/active_support/cache.rb#953
  def expires_at=(value); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache.rb#1002
  def local?; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache.rb#939
  def mismatched?(version); end

  # source://activesupport//lib/active_support/cache.rb#1018
  def pack; end

  # source://activesupport//lib/active_support/cache.rb#935
  def value; end

  # Returns the value of attribute version.
  #
  # source://activesupport//lib/active_support/cache.rb#923
  def version; end

  private

  # source://activesupport//lib/active_support/cache.rb#1025
  def uncompress(value); end

  class << self
    # source://activesupport//lib/active_support/cache.rb#918
    def unpack(members); end
  end
end

# A cache store implementation which stores everything on the filesystem.
#
# FileStore implements the Strategy::LocalCache strategy which implements
# an in-memory cache inside of a block.
#
# source://activesupport//lib/active_support/cache/file_store.rb#13
class ActiveSupport::Cache::FileStore < ::ActiveSupport::Cache::Store
  # @return [FileStore] a new instance of FileStore
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#21
  def initialize(cache_path, **options); end

  # Returns the value of attribute cache_path.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#14
  def cache_path; end

  # Preemptively iterates through all stored keys and removes the ones which have expired.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#41
  def cleanup(options = T.unsafe(nil)); end

  # Deletes all items from the cache. In this case it deletes all the entries in the specified
  # file store directory except for .keep or .gitkeep. Be careful which directory is specified in your
  # config file when using +FileStore+ because everything in that directory will be deleted.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#34
  def clear(options = T.unsafe(nil)); end

  # Decrements an already existing integer value that is stored in the cache.
  # If the key is not found nothing is done.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#57
  def decrement(name, amount = T.unsafe(nil), options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/cache/file_store.rb#61
  def delete_matched(matcher, options = T.unsafe(nil)); end

  # Increments an already existing integer value that is stored in the cache.
  # If the key is not found nothing is done.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#51
  def increment(name, amount = T.unsafe(nil), options = T.unsafe(nil)); end

  private

  # Delete empty directories in the cache.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#160
  def delete_empty_directories(dir); end

  # source://activesupport//lib/active_support/cache/file_store.rb#98
  def delete_entry(key, **options); end

  # Make sure a file path's directories exist.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#169
  def ensure_cache_path(path); end

  # Translate a file path into a key.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#154
  def file_path_key(path); end

  # Lock a file for a block so only one process can modify it at a time.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#113
  def lock_file(file_name, &block); end

  # Modifies the amount of an already existing integer value that is stored in the cache.
  # If the key is not found nothing is done.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#187
  def modify_value(name, amount, options); end

  # Translate a key into a file path.
  #
  # source://activesupport//lib/active_support/cache/file_store.rb#127
  def normalize_key(key, options); end

  # source://activesupport//lib/active_support/cache/file_store.rb#73
  def read_entry(key, **options); end

  # source://activesupport//lib/active_support/cache/file_store.rb#80
  def read_serialized_entry(key, **_arg1); end

  # source://activesupport//lib/active_support/cache/file_store.rb#173
  def search_dir(dir, &callback); end

  # source://activesupport//lib/active_support/cache/file_store.rb#87
  def write_entry(key, entry, **options); end

  # source://activesupport//lib/active_support/cache/file_store.rb#91
  def write_serialized_entry(key, payload, **options); end

  class << self
    # Advertise cache versioning support.
    #
    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/cache/file_store.rb#27
    def supports_cache_versioning?; end
  end
end

# source://activesupport//lib/active_support/cache/file_store.rb#16
ActiveSupport::Cache::FileStore::DIR_FORMATTER = T.let(T.unsafe(nil), String)

# max filename size on file system is 255, minus room for timestamp, pid, and random characters appended by Tempfile (used by atomic write)
#
# source://activesupport//lib/active_support/cache/file_store.rb#17
ActiveSupport::Cache::FileStore::FILENAME_MAX_SIZE = T.let(T.unsafe(nil), Integer)

# max is 1024, plus some room
#
# source://activesupport//lib/active_support/cache/file_store.rb#18
ActiveSupport::Cache::FileStore::FILEPATH_MAX_SIZE = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/cache/file_store.rb#19
ActiveSupport::Cache::FileStore::GITKEEP_FILES = T.let(T.unsafe(nil), Array)

# A cache store implementation which stores everything into memory in the
# same process. If you're running multiple Ruby on Rails server processes
# (which is the case if you're using Phusion Passenger or puma clustered mode),
# then this means that Rails server process instances won't be able
# to share cache data with each other and this may not be the most
# appropriate cache in that scenario.
#
# This cache has a bounded size specified by the +:size+ options to the
# initializer (default is 32Mb). When the cache exceeds the allotted size,
# a cleanup will occur which tries to prune the cache down to three quarters
# of the maximum size by removing the least recently used entries.
#
# Unlike other Cache store implementations, MemoryStore does not compress
# values by default. MemoryStore does not benefit from compression as much
# as other Store implementations, as it does not send data over a network.
# However, when compression is enabled, it still pays the full cost of
# compression in terms of cpu use.
#
# MemoryStore is thread-safe.
#
# source://activesupport//lib/active_support/cache/memory_store.rb#26
class ActiveSupport::Cache::MemoryStore < ::ActiveSupport::Cache::Store
  # @return [MemoryStore] a new instance of MemoryStore
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#48
  def initialize(options = T.unsafe(nil)); end

  # Preemptively iterates through all stored keys and removes the ones which have expired.
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#75
  def cleanup(options = T.unsafe(nil)); end

  # Delete all data stored in a given cache store.
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#67
  def clear(options = T.unsafe(nil)); end

  # Decrement an integer value in the cache.
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#117
  def decrement(name, amount = T.unsafe(nil), options = T.unsafe(nil)); end

  # Deletes cache entries if the cache key matches a given pattern.
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#122
  def delete_matched(matcher, options = T.unsafe(nil)); end

  # Increment an integer value in the cache.
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#112
  def increment(name, amount = T.unsafe(nil), options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/cache/memory_store.rb#133
  def inspect; end

  # To ensure entries fit within the specified memory prune the cache by removing the least
  # recently accessed entries.
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#88
  def prune(target_size, max_time = T.unsafe(nil)); end

  # Returns true if the cache is currently being pruned.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#107
  def pruning?; end

  # Synchronize calls to the cache. This should be called wherever the underlying cache implementation
  # is not thread safe.
  #
  # source://activesupport//lib/active_support/cache/memory_store.rb#139
  def synchronize(&block); end

  private

  # source://activesupport//lib/active_support/cache/memory_store.rb#150
  def cached_size(key, payload); end

  # source://activesupport//lib/active_support/cache/memory_store.rb#146
  def default_coder; end

  # source://activesupport//lib/active_support/cache/memory_store.rb#183
  def delete_entry(key, **options); end

  # source://activesupport//lib/active_support/cache/memory_store.rb#191
  def modify_value(name, amount, options); end

  # source://activesupport//lib/active_support/cache/memory_store.rb#154
  def read_entry(key, **options); end

  # source://activesupport//lib/active_support/cache/memory_store.rb#166
  def write_entry(key, entry, **options); end

  class << self
    # Advertise cache versioning support.
    #
    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/cache/memory_store.rb#62
    def supports_cache_versioning?; end
  end
end

# source://activesupport//lib/active_support/cache/memory_store.rb#27
module ActiveSupport::Cache::MemoryStore::DupCoder
  extend ::ActiveSupport::Cache::MemoryStore::DupCoder

  # source://activesupport//lib/active_support/cache/memory_store.rb#30
  def dump(entry); end

  # source://activesupport//lib/active_support/cache/memory_store.rb#35
  def dump_compressed(entry, threshold); end

  # source://activesupport//lib/active_support/cache/memory_store.rb#41
  def load(entry); end
end

# source://activesupport//lib/active_support/cache/memory_store.rb#144
ActiveSupport::Cache::MemoryStore::PER_ENTRY_OVERHEAD = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/cache.rb#817
module ActiveSupport::Cache::NullCoder
  extend ::ActiveSupport::Cache::NullCoder

  # source://activesupport//lib/active_support/cache.rb#820
  def dump(entry); end

  # source://activesupport//lib/active_support/cache.rb#824
  def dump_compressed(entry, threshold); end

  # source://activesupport//lib/active_support/cache.rb#828
  def load(payload); end
end

# A cache store implementation which doesn't actually store anything. Useful in
# development and test environments where you don't want caching turned on but
# need to go through the caching interface.
#
# This cache does implement the local cache strategy, so values will actually
# be cached inside blocks that utilize this strategy. See
# ActiveSupport::Cache::Strategy::LocalCache for more details.
#
# source://activesupport//lib/active_support/cache/null_store.rb#12
class ActiveSupport::Cache::NullStore < ::ActiveSupport::Cache::Store
  include ::ActiveSupport::Cache::Strategy::LocalCache

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#81
  def cleanup(**options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#75
  def clear(**options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#100
  def decrement(name, amount = T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#87
  def delete_matched(matcher, options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#93
  def increment(name, amount = T.unsafe(nil), **options); end

  private

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#147
  def delete_entry(key, **_arg1); end

  # source://activesupport//lib/active_support/cache/null_store.rb#36
  def read_entry(key, **s); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#108
  def read_serialized_entry(key, raw: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/null_store.rb#43
  def write_entry(key, entry, **_arg2); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#138
  def write_serialized_entry(key, payload, **_arg2); end

  class << self
    # Advertise cache versioning support.
    #
    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/cache/null_store.rb#16
    def supports_cache_versioning?; end
  end
end

# Mapping of canonical option names to aliases that a store will recognize.
#
# source://activesupport//lib/active_support/cache.rb#30
ActiveSupport::Cache::OPTION_ALIASES = T.let(T.unsafe(nil), Hash)

# Redis cache store.
#
# Deployment note: Take care to use a *dedicated Redis cache* rather
# than pointing this at your existing Redis server. It won't cope well
# with mixed usage patterns and it won't expire cache entries by default.
#
# Redis cache server setup guide: https://redis.io/topics/lru-cache
#
# * Supports vanilla Redis, hiredis, and Redis::Distributed.
# * Supports Memcached-like sharding across Redises with Redis::Distributed.
# * Fault tolerant. If the Redis server is unavailable, no exceptions are
#   raised. Cache fetches are all misses and writes are dropped.
# * Local cache. Hot in-memory primary cache within block/middleware scope.
# * +read_multi+ and +write_multi+ support for Redis mget/mset. Use Redis::Distributed
#   4.0.1+ for distributed mget support.
# * +delete_matched+ support for Redis KEYS globs.
#
# source://activesupport//lib/active_support/cache/redis_cache_store.rb#51
class ActiveSupport::Cache::RedisCacheStore < ::ActiveSupport::Cache::Store
  include ::ActiveSupport::Cache::Strategy::LocalCache

  # Creates a new Redis cache store.
  #
  # Handles four options: :redis block, :redis instance, single :url
  # string, and multiple :url strings.
  #
  #   Option  Class       Result
  #   :redis  Proc    ->  options[:redis].call
  #   :redis  Object  ->  options[:redis]
  #   :url    String  ->  Redis.new(url: …)
  #   :url    Array   ->  Redis::Distributed.new([{ url: … }, { url: … }, …])
  #
  # No namespace is set by default. Provide one if the Redis cache
  # server is shared with other apps: <tt>namespace: 'myapp-cache'</tt>.
  #
  # Compression is enabled by default with a 1kB threshold, so cached
  # values larger than 1kB are automatically compressed. Disable by
  # passing <tt>compress: false</tt> or change the threshold by passing
  # <tt>compress_threshold: 4.kilobytes</tt>.
  #
  # No expiry is set on cache entries by default. Redis is expected to
  # be configured with an eviction policy that automatically deletes
  # least-recently or -frequently used keys when it reaches max memory.
  # See https://redis.io/topics/lru-cache for cache server setup.
  #
  # Race condition TTL is not set by default. This can be used to avoid
  # "thundering herd" cache writes when hot cache entries are expired.
  # See ActiveSupport::Cache::Store#fetch for more.
  #
  # @return [RedisCacheStore] a new instance of RedisCacheStore
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#149
  def initialize(namespace: T.unsafe(nil), compress: T.unsafe(nil), compress_threshold: T.unsafe(nil), coder: T.unsafe(nil), expires_in: T.unsafe(nil), race_condition_ttl: T.unsafe(nil), error_handler: T.unsafe(nil), **redis_options); end

  # Cache Store API implementation.
  #
  # Removes expired entries. Handled natively by Redis least-recently-/
  # least-frequently-used expiry, so manual cleanup is not supported.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#81
  def cleanup(**options); end

  # Clear the entire cache on all Redis servers. Safe to use on
  # shared servers if the cache is namespaced.
  #
  # Failsafe: Raises errors.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#75
  def clear(**options); end

  # Cache Store API implementation.
  #
  # Decrement a cached value. This method uses the Redis decr atomic
  # operator and can only be used on values written with the +:raw+ option.
  # Calling it on a value not stored with +:raw+ will initialize that value
  # to zero.
  #
  # Failsafe: Raises errors.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#100
  def decrement(name, amount = T.unsafe(nil), **options); end

  # Cache Store API implementation.
  #
  # Supports Redis KEYS glob patterns:
  #
  #   h?llo matches hello, hallo and hxllo
  #   h*llo matches hllo and heeeello
  #   h[ae]llo matches hello and hallo, but not hillo
  #   h[^e]llo matches hallo, hbllo, ... but not hello
  #   h[a-b]llo matches hallo and hbllo
  #
  # Use \ to escape special characters if you want to match them verbatim.
  #
  # See https://redis.io/commands/KEYS for more.
  #
  # Failsafe: Raises errors.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#87
  def delete_matched(matcher, options = T.unsafe(nil)); end

  # Cache Store API implementation.
  #
  # Increment a cached value. This method uses the Redis incr atomic
  # operator and can only be used on values written with the +:raw+ option.
  # Calling it on a value not stored with +:raw+ will initialize that value
  # to zero.
  #
  # Failsafe: Raises errors.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#93
  def increment(name, amount = T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#174
  def inspect; end

  # Returns the value of attribute max_key_bytesize.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#120
  def max_key_bytesize; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#304
  def mget_capable?; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#309
  def mset_capable?; end

  # Cache Store API implementation.
  #
  # Read multiple values at once. Returns a hash of requested keys ->
  # fetched values.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#183
  def read_multi(*names); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#161
  def redis; end

  # Returns the value of attribute redis_options.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#119
  def redis_options; end

  # Get info from redis servers.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#300
  def stats; end

  private

  # Delete an entry from the cache.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#147
  def delete_entry(key, **_arg1); end

  # Deletes multiple entries in the cache. Returns the number of entries deleted.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#408
  def delete_multi_entries(entries, **_options); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#443
  def deserialize_entry(payload, raw: T.unsafe(nil), **_arg2); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#465
  def failsafe(method, returning: T.unsafe(nil)); end

  # Truncate keys that exceed 1kB.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#429
  def normalize_key(key, options); end

  # Store provider interface:
  # Read an entry from the cache.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#328
  def read_entry(key, **options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#122
  def read_multi_entries(keys, **options); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#346
  def read_multi_mget(*names); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#108
  def read_serialized_entry(key, raw: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#459
  def serialize_entries(entries, **options); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#451
  def serialize_entry(entry, raw: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#315
  def set_redis_capabilities; end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#433
  def truncate_key(key); end

  # Write an entry to the cache.
  #
  # Requires Redis 2.6.12+ for extended SET options.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#371
  def write_entry(key, entry, raw: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#394
  def write_key_expiry(client, key, options); end

  # Nonstandard store provider API to write multiple values at once.
  #
  # source://activesupport//lib/active_support/cache/redis_cache_store.rb#413
  def write_multi_entries(entries, expires_in: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#138
  def write_serialized_entry(key, payload, **_arg2); end

  class << self
    # Factory method to create a new Redis instance.
    #
    # Handles four options: :redis block, :redis instance, single :url
    # string, and multiple :url strings.
    #
    #   Option  Class       Result
    #   :redis  Proc    ->  options[:redis].call
    #   :redis  Object  ->  options[:redis]
    #   :url    String  ->  Redis.new(url: …)
    #   :url    Array   ->  Redis::Distributed.new([{ url: … }, { url: … }, …])
    #
    # source://activesupport//lib/active_support/cache/redis_cache_store.rb#91
    def build_redis(redis: T.unsafe(nil), url: T.unsafe(nil), **redis_options); end

    # Advertise cache versioning support.
    #
    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/cache/redis_cache_store.rb#73
    def supports_cache_versioning?; end

    private

    # source://activesupport//lib/active_support/cache/redis_cache_store.rb#114
    def build_redis_client(**redis_options); end

    # source://activesupport//lib/active_support/cache/redis_cache_store.rb#108
    def build_redis_distributed_client(urls:, **redis_options); end
  end
end

# source://activesupport//lib/active_support/cache/redis_cache_store.rb#62
ActiveSupport::Cache::RedisCacheStore::DEFAULT_ERROR_HANDLER = T.let(T.unsafe(nil), Proc)

# source://activesupport//lib/active_support/cache/redis_cache_store.rb#55
ActiveSupport::Cache::RedisCacheStore::DEFAULT_REDIS_OPTIONS = T.let(T.unsafe(nil), Hash)

# Keys are truncated with the ActiveSupport digest if they exceed 1kB
#
# source://activesupport//lib/active_support/cache/redis_cache_store.rb#53
ActiveSupport::Cache::RedisCacheStore::MAX_KEY_BYTESIZE = T.let(T.unsafe(nil), Integer)

# The maximum number of entries to receive per SCAN call.
#
# source://activesupport//lib/active_support/cache/redis_cache_store.rb#69
ActiveSupport::Cache::RedisCacheStore::SCAN_BATCH_SIZE = T.let(T.unsafe(nil), Integer)

# An abstract cache store class. There are multiple cache store
# implementations, each having its own additional features. See the classes
# under the ActiveSupport::Cache module, e.g.
# ActiveSupport::Cache::MemCacheStore. MemCacheStore is currently the most
# popular cache store for large production websites.
#
# Some implementations may not support all methods beyond the basic cache
# methods of #fetch, #write, #read, #exist?, and #delete.
#
# ActiveSupport::Cache::Store can store any Ruby object that is supported by
# its +coder+'s +dump+ and +load+ methods.
#
#   cache = ActiveSupport::Cache::MemoryStore.new
#
#   cache.read('city')   # => nil
#   cache.write('city', "Duckburgh")
#   cache.read('city')   # => "Duckburgh"
#
#   cache.write('not serializable', Proc.new {}) # => TypeError
#
# Keys are always translated into Strings and are case sensitive. When an
# object is specified as a key and has a +cache_key+ method defined, this
# method will be called to define the key.  Otherwise, the +to_param+
# method will be called. Hashes and Arrays can also be used as keys. The
# elements will be delimited by slashes, and the elements within a Hash
# will be sorted by key so they are consistent.
#
#   cache.read('city') == cache.read(:city)   # => true
#
# Nil values can be cached.
#
# If your cache is on a shared infrastructure, you can define a namespace
# for your cache entries. If a namespace is defined, it will be prefixed on
# to every key. The namespace can be either a static value or a Proc. If it
# is a Proc, it will be invoked when each key is evaluated so that you can
# use application logic to invalidate keys.
#
#   cache.namespace = -> { @last_mod_time }  # Set the namespace to a variable
#   @last_mod_time = Time.now  # Invalidate the entire cache by changing namespace
#
# source://activesupport//lib/active_support/cache.rb#175
class ActiveSupport::Cache::Store
  # Creates a new cache.
  #
  # ==== Options
  #
  # * +:namespace+ - Sets the namespace for the cache. This option is
  #   especially useful if your application shares a cache with other
  #   applications.
  # * +:coder+ - Replaces the default cache entry serialization mechanism
  #   with a custom one. The +coder+ must respond to +dump+ and +load+.
  #   Using a custom coder disables automatic compression.
  #
  # Any other specified options are treated as default options for the
  # relevant cache operations, such as #read, #write, and #fetch.
  #
  # @return [Store] a new instance of Store
  #
  # source://activesupport//lib/active_support/cache.rb#211
  def initialize(options = T.unsafe(nil)); end

  # Cleans up the cache by removing expired entries.
  #
  # Options are passed to the underlying cache implementation.
  #
  # Some implementations may not support this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#582
  def cleanup(options = T.unsafe(nil)); end

  # Clears the entire cache. Be careful with this method since it could
  # affect other processes if shared cache is being used.
  #
  # The options hash is passed to the underlying cache implementation.
  #
  # Some implementations may not support this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#592
  def clear(options = T.unsafe(nil)); end

  # Decrements an integer value in the cache.
  #
  # Options are passed to the underlying cache implementation.
  #
  # Some implementations may not support this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#573
  def decrement(name, amount = T.unsafe(nil), options = T.unsafe(nil)); end

  # Deletes an entry in the cache. Returns +true+ if an entry is deleted.
  #
  # Options are passed to the underlying cache implementation.
  #
  # source://activesupport//lib/active_support/cache.rb#514
  def delete(name, options = T.unsafe(nil)); end

  # Deletes all entries with keys matching the pattern.
  #
  # Options are passed to the underlying cache implementation.
  #
  # Some implementations may not support this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#555
  def delete_matched(matcher, options = T.unsafe(nil)); end

  # Deletes multiple entries in the cache.
  #
  # Options are passed to the underlying cache implementation.
  #
  # source://activesupport//lib/active_support/cache.rb#525
  def delete_multi(names, options = T.unsafe(nil)); end

  # Returns +true+ if the cache contains an entry for the given key.
  #
  # Options are passed to the underlying cache implementation.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/cache.rb#537
  def exist?(name, options = T.unsafe(nil)); end

  # Fetches data from the cache, using the given key. If there is data in
  # the cache with the given key, then that data is returned.
  #
  # If there is no such data in the cache (a cache miss), then +nil+ will be
  # returned. However, if a block has been passed, that block will be passed
  # the key and executed in the event of a cache miss. The return value of the
  # block will be written to the cache under the given cache key, and that
  # return value will be returned.
  #
  #   cache.write('today', 'Monday')
  #   cache.fetch('today')  # => "Monday"
  #
  #   cache.fetch('city')   # => nil
  #   cache.fetch('city') do
  #     'Duckburgh'
  #   end
  #   cache.fetch('city')   # => "Duckburgh"
  #
  # ==== Options
  #
  # Internally, +fetch+ calls #read_entry, and calls #write_entry on a cache
  # miss. Thus, +fetch+ supports the same options as #read and #write.
  # Additionally, +fetch+ supports the following options:
  #
  # * <tt>force: true</tt> - Forces a cache "miss," meaning we treat the
  #   cache value as missing even if it's present. Passing a block is
  #   required when +force+ is true so this always results in a cache write.
  #
  #     cache.write('today', 'Monday')
  #     cache.fetch('today', force: true) { 'Tuesday' } # => 'Tuesday'
  #     cache.fetch('today', force: true) # => ArgumentError
  #
  #   The +:force+ option is useful when you're calling some other method to
  #   ask whether you should force a cache write. Otherwise, it's clearer to
  #   just call +write+.
  #
  # * <tt>skip_nil: true</tt> - Prevents caching a nil result:
  #
  #     cache.fetch('foo') { nil }
  #     cache.fetch('bar', skip_nil: true) { nil }
  #     cache.exist?('foo') # => true
  #     cache.exist?('bar') # => false
  #
  # * +:race_condition_ttl+ - Specifies the number of seconds during which
  #   an expired value can be reused while a new value is being generated.
  #   This can be used to prevent race conditions when cache entries expire,
  #   by preventing multiple processes from simultaneously regenerating the
  #   same entry (also known as the dog pile effect).
  #
  #   When a process encounters a cache entry that has expired less than
  #   +:race_condition_ttl+ seconds ago, it will bump the expiration time by
  #   +:race_condition_ttl+ seconds before generating a new value. During
  #   this extended time window, while the process generates a new value,
  #   other processes will continue to use the old value. After the first
  #   process writes the new value, other processes will then use it.
  #
  #   If the first process errors out while generating a new value, another
  #   process can try to generate a new value after the extended time window
  #   has elapsed.
  #
  #     # Set all values to expire after one minute.
  #     cache = ActiveSupport::Cache::MemoryStore.new(expires_in: 1.minute)
  #
  #     cache.write('foo', 'original value')
  #     val_1 = nil
  #     val_2 = nil
  #     sleep 60
  #
  #     Thread.new do
  #       val_1 = cache.fetch('foo', race_condition_ttl: 10.seconds) do
  #         sleep 1
  #         'new value 1'
  #       end
  #     end
  #
  #     Thread.new do
  #       val_2 = cache.fetch('foo', race_condition_ttl: 10.seconds) do
  #         'new value 2'
  #       end
  #     end
  #
  #     cache.fetch('foo') # => "original value"
  #     sleep 10 # First thread extended the life of cache by another 10 seconds
  #     cache.fetch('foo') # => "new value 1"
  #     val_1 # => "new value 1"
  #     val_2 # => "original value"
  #
  # source://activesupport//lib/active_support/cache.rb#321
  def fetch(name, options = T.unsafe(nil), &block); end

  # Fetches data from the cache, using the given keys. If there is data in
  # the cache with the given keys, then that data is returned. Otherwise,
  # the supplied block is called for each key for which there was no data,
  # and the result will be written to the cache and returned.
  # Therefore, you need to pass a block that returns the data to be written
  # to the cache. If you do not want to write the cache when the cache is
  # not found, use #read_multi.
  #
  # Returns a hash with the data for each of the names. For example:
  #
  #   cache.write("bim", "bam")
  #   cache.fetch_multi("bim", "unknown_key") do |key|
  #     "Fallback value for key: #{key}"
  #   end
  #   # => { "bim" => "bam",
  #   #      "unknown_key" => "Fallback value for key: unknown_key" }
  #
  # Options are passed to the underlying cache implementation. For example:
  #
  #   cache.fetch_multi("fizz", expires_in: 5.seconds) do |key|
  #     "buzz"
  #   end
  #   # => {"fizz"=>"buzz"}
  #   cache.read("fizz")
  #   # => "buzz"
  #   sleep(6)
  #   cache.read("fizz")
  #   # => nil
  #
  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/cache.rb#447
  def fetch_multi(*names); end

  # Increments an integer value in the cache.
  #
  # Options are passed to the underlying cache implementation.
  #
  # Some implementations may not support this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#564
  def increment(name, amount = T.unsafe(nil), options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/cache.rb#176
  def logger; end

  # source://activesupport//lib/active_support/cache.rb#176
  def logger=(val); end

  # Silences the logger within a block.
  #
  # source://activesupport//lib/active_support/cache.rb#227
  def mute; end

  # source://activesupport//lib/active_support/cache.rb#546
  def new_entry(value, options = T.unsafe(nil)); end

  # Returns the value of attribute options.
  #
  # source://activesupport//lib/active_support/cache.rb#178
  def options; end

  # Reads data from the cache, using the given key. If there is data in
  # the cache with the given key, then that data is returned. Otherwise,
  # +nil+ is returned.
  #
  # Note, if data was written with the <tt>:expires_in</tt> or
  # <tt>:version</tt> options, both of these conditions are applied before
  # the data is returned.
  #
  # ==== Options
  #
  # * +:version+ - Specifies a version for the cache entry. If the cached
  #   version does not match the requested version, the read will be treated
  #   as a cache miss. This feature is used to support recyclable cache keys.
  #
  # Other options will be handled by the specific cache store implementation.
  #
  # source://activesupport//lib/active_support/cache.rb#362
  def read(name, options = T.unsafe(nil)); end

  # Reads multiple values at once from the cache. Options can be passed
  # in the last argument.
  #
  # Some cache implementation may optimize this method.
  #
  # Returns a hash mapping the names provided to the values found.
  #
  # source://activesupport//lib/active_support/cache.rb#395
  def read_multi(*names); end

  # Returns the value of attribute silence.
  #
  # source://activesupport//lib/active_support/cache.rb#178
  def silence; end

  # Silences the logger.
  #
  # source://activesupport//lib/active_support/cache.rb#221
  def silence!; end

  # Returns the value of attribute silence.
  #
  # source://activesupport//lib/active_support/cache.rb#178
  def silence?; end

  # Writes the value to the cache with the key. The value must be supported
  # by the +coder+'s +dump+ and +load+ methods.
  #
  # By default, cache entries larger than 1kB are compressed. Compression
  # allows more data to be stored in the same memory footprint, leading to
  # fewer cache evictions and higher hit rates.
  #
  # ==== Options
  #
  # * <tt>compress: false</tt> - Disables compression of the cache entry.
  #
  # * +:compress_threshold+ - The compression threshold, specified in bytes.
  #   \Cache entries larger than this threshold will be compressed. Defaults
  #   to +1.kilobyte+.
  #
  # * +:expires_in+ - Sets a relative expiration time for the cache entry,
  #   specified in seconds. +:expire_in+ and +:expired_in+ are aliases for
  #   +:expires_in+.
  #
  #     cache = ActiveSupport::Cache::MemoryStore.new(expires_in: 5.minutes)
  #     cache.write(key, value, expires_in: 1.minute) # Set a lower value for one entry
  #
  # * +:expires_at+ - Sets an absolute expiration time for the cache entry.
  #
  #     cache = ActiveSupport::Cache::MemoryStore.new
  #     cache.write(key, value, expires_at: Time.now.at_end_of_hour)
  #
  # * +:version+ - Specifies a version for the cache entry. When reading
  #   from the cache, if the cached version does not match the requested
  #   version, the read will be treated as a cache miss. This feature is
  #   used to support recyclable cache keys.
  #
  # Other options will be handled by the specific cache store implementation.
  #
  # source://activesupport//lib/active_support/cache.rb#502
  def write(name, value, options = T.unsafe(nil)); end

  # Cache Storage API to write multiple values at once.
  #
  # source://activesupport//lib/active_support/cache.rb#407
  def write_multi(hash, options = T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/cache.rb#597
  def default_coder; end

  # Deletes an entry from the cache implementation. Subclasses must
  # implement this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#674
  def delete_entry(key, **options); end

  # Deletes multiples entries in the cache implementation. Subclasses MAY
  # implement this method.
  #
  # source://activesupport//lib/active_support/cache.rb#680
  def delete_multi_entries(entries, **options); end

  # source://activesupport//lib/active_support/cache.rb#641
  def deserialize_entry(payload); end

  # Expands key to be a consistent string value. Invokes +cache_key+ if
  # object responds to +cache_key+. Otherwise, +to_param+ method will be
  # called. If the key is a Hash, then keys will be sorted alphabetically.
  #
  # source://activesupport//lib/active_support/cache.rb#747
  def expanded_key(key); end

  # source://activesupport//lib/active_support/cache.rb#768
  def expanded_version(key); end

  # source://activesupport//lib/active_support/cache.rb#802
  def get_entry_value(entry, name, options); end

  # source://activesupport//lib/active_support/cache.rb#786
  def handle_expired_entry(entry, key, options); end

  # source://activesupport//lib/active_support/cache.rb#776
  def instrument(operation, key, options = T.unsafe(nil)); end

  # Adds the namespace defined in the options to a pattern designed to
  # match keys. Implementations that support delete_matched should call
  # this method to translate a pattern that matches names into one that
  # matches namespaced keys.
  #
  # source://activesupport//lib/active_support/cache.rb#605
  def key_matcher(pattern, options); end

  # Merges the default options with ones specific to a method call.
  #
  # source://activesupport//lib/active_support/cache.rb#685
  def merged_options(call_options); end

  # Prefix the key with a namespace string:
  #
  #   namespace_key 'foo', namespace: 'cache'
  #   # => 'cache:foo'
  #
  # With a namespace block:
  #
  #   namespace_key 'foo', namespace: -> { 'cache' }
  #   # => 'cache:foo'
  #
  # source://activesupport//lib/active_support/cache.rb#725
  def namespace_key(key, options = T.unsafe(nil)); end

  # Expands and namespaces the cache key. May be overridden by
  # cache stores to do additional normalization.
  #
  # source://activesupport//lib/active_support/cache.rb#712
  def normalize_key(key, options = T.unsafe(nil)); end

  # Normalize aliased options to their canonical form
  #
  # source://activesupport//lib/active_support/cache.rb#699
  def normalize_options(options); end

  # source://activesupport//lib/active_support/cache.rb#764
  def normalize_version(key, options = T.unsafe(nil)); end

  # Reads an entry from the cache implementation. Subclasses must implement
  # this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#622
  def read_entry(key, **options); end

  # Reads multiple entries from the cache implementation. Subclasses MAY
  # implement this method.
  #
  # source://activesupport//lib/active_support/cache.rb#647
  def read_multi_entries(names, **options); end

  # source://activesupport//lib/active_support/cache.rb#807
  def save_block_result_to_cache(name, options); end

  # source://activesupport//lib/active_support/cache.rb#632
  def serialize_entry(entry, **options); end

  # Writes an entry to the cache implementation. Subclasses must implement
  # this method.
  #
  # @raise [NotImplementedError]
  #
  # source://activesupport//lib/active_support/cache.rb#628
  def write_entry(key, entry, **options); end

  # Writes multiple entries to the cache implementation. Subclasses MAY
  # implement this method.
  #
  # source://activesupport//lib/active_support/cache.rb#666
  def write_multi_entries(hash, **options); end

  class << self
    # source://activesupport//lib/active_support/cache.rb#176
    def logger; end

    # source://activesupport//lib/active_support/cache.rb#176
    def logger=(val); end

    private

    # source://activesupport//lib/active_support/cache.rb#190
    def ensure_connection_pool_added!; end

    # source://activesupport//lib/active_support/cache.rb#183
    def retrieve_pool_options(options); end
  end
end

# source://activesupport//lib/active_support/cache.rb#34
module ActiveSupport::Cache::Strategy; end

# Caches that implement LocalCache will be backed by an in-memory cache for the
# duration of a block. Repeated calls to the cache for the same key will hit the
# in-memory cache for faster access.
#
# source://activesupport//lib/active_support/cache/strategy/local_cache.rb#11
module ActiveSupport::Cache::Strategy::LocalCache
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#81
  def cleanup(**options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#75
  def clear(**options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#100
  def decrement(name, amount = T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#87
  def delete_matched(matcher, options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#93
  def increment(name, amount = T.unsafe(nil), **options); end

  # Middleware class can be inserted as a Rack handler to be local cache for the
  # duration of request.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#69
  def middleware; end

  # Use a local cache for the duration of block.
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#63
  def with_local_cache(&block); end

  private

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#170
  def bypass_local_cache(&block); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#147
  def delete_entry(key, **_arg1); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#166
  def local_cache; end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#162
  def local_cache_key; end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#122
  def read_multi_entries(keys, **options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#108
  def read_serialized_entry(key, raw: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#174
  def use_temporary_local_cache(temporary_cache); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#152
  def write_cache_value(name, value, **options); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#138
  def write_serialized_entry(key, payload, **_arg2); end
end

# Class for storing and registering the local caches.
#
# source://activesupport//lib/active_support/cache/strategy/local_cache.rb#15
module ActiveSupport::Cache::Strategy::LocalCache::LocalCacheRegistry
  extend ::ActiveSupport::Cache::Strategy::LocalCache::LocalCacheRegistry

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#18
  def cache_for(local_cache_key); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#23
  def set_cache_for(local_cache_key, value); end
end

# Simple memory backed cache. This cache is not thread safe and is intended only
# for serving as a temporary memory cache for a single thread.
#
# source://activesupport//lib/active_support/cache/strategy/local_cache.rb#31
class ActiveSupport::Cache::Strategy::LocalCache::LocalStore
  # @return [LocalStore] a new instance of LocalStore
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#32
  def initialize; end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#36
  def clear(options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#53
  def delete_entry(key); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#57
  def fetch_entry(key); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#40
  def read_entry(key); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#44
  def read_multi_entries(keys); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache.rb#48
  def write_entry(key, entry); end
end

# --
# This class wraps up local storage for middlewares. Only the middleware method should
# construct them.
#
# source://activesupport//lib/active_support/cache/strategy/local_cache_middleware.rb#13
class ActiveSupport::Cache::Strategy::LocalCache::Middleware
  # @return [Middleware] a new instance of Middleware
  #
  # source://activesupport//lib/active_support/cache/strategy/local_cache_middleware.rb#16
  def initialize(name, local_cache_key); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache_middleware.rb#27
  def call(env); end

  # source://activesupport//lib/active_support/cache/strategy/local_cache_middleware.rb#14
  def local_cache_key; end

  # source://activesupport//lib/active_support/cache/strategy/local_cache_middleware.rb#14
  def name; end

  # source://activesupport//lib/active_support/cache/strategy/local_cache_middleware.rb#22
  def new(app); end
end

# These options mean something to all cache implementations. Individual cache
# implementations may support additional options.
#
# source://activesupport//lib/active_support/cache.rb#25
ActiveSupport::Cache::UNIVERSAL_OPTIONS = T.let(T.unsafe(nil), Array)

# CachingKeyGenerator is a wrapper around KeyGenerator which allows users to avoid
# re-executing the key generation process when it's called using the same +salt+ and
# +key_size+.
#
# source://activesupport//lib/active_support/key_generator.rb#47
class ActiveSupport::CachingKeyGenerator
  # @return [CachingKeyGenerator] a new instance of CachingKeyGenerator
  #
  # source://activesupport//lib/active_support/key_generator.rb#48
  def initialize(key_generator); end

  # Returns a derived key suitable for use.
  #
  # source://activesupport//lib/active_support/key_generator.rb#54
  def generate_key(*args); end
end

# Callbacks are code hooks that are run at key points in an object's life cycle.
# The typical use case is to have a base class define a set of callbacks
# relevant to the other functionality it supplies, so that subclasses can
# install callbacks that enhance or modify the base functionality without
# needing to override or redefine methods of the base class.
#
# Mixing in this module allows you to define the events in the object's
# life cycle that will support callbacks (via ClassMethods#define_callbacks),
# set the instance methods, procs, or callback objects to be called (via
# ClassMethods#set_callback), and run the installed callbacks at the
# appropriate times (via +run_callbacks+).
#
# By default callbacks are halted by throwing +:abort+.
# See ClassMethods#define_callbacks for details.
#
# Three kinds of callbacks are supported: before callbacks, run before a
# certain event; after callbacks, run after the event; and around callbacks,
# blocks that surround the event, triggering it when they yield. Callback code
# can be contained in instance methods, procs or lambdas, or callback objects
# that respond to certain predetermined methods. See ClassMethods#set_callback
# for details.
#
#   class Record
#     include ActiveSupport::Callbacks
#     define_callbacks :save
#
#     def save
#       run_callbacks :save do
#         puts "- save"
#       end
#     end
#   end
#
#   class PersonRecord < Record
#     set_callback :save, :before, :saving_message
#     def saving_message
#       puts "saving..."
#     end
#
#     set_callback :save, :after do |object|
#       puts "saved"
#     end
#   end
#
#   person = PersonRecord.new
#   person.save
#
# Output:
#   saving...
#   - save
#   saved
#
# source://activesupport//lib/active_support/callbacks.rb#63
module ActiveSupport::Callbacks
  extend ::ActiveSupport::Concern
  include GeneratedInstanceMethods

  mixes_in_class_methods GeneratedClassMethods
  mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
  mixes_in_class_methods ::ActiveSupport::DescendantsTracker

  # Runs the callbacks for the given event.
  #
  # Calls the before and around callbacks in the order they were set, yields
  # the block (if given one), and then runs the after callbacks in reverse
  # order.
  #
  # If the callback chain was halted, returns +false+. Otherwise returns the
  # result of the block, +nil+ if no callbacks have been set, or +true+
  # if callbacks have been set but no block is given.
  #
  #   run_callbacks :save do
  #     save
  #   end
  #
  # --
  #
  # As this method is used in many places, and often wraps large portions of
  # user code, it has an additional design goal of minimizing its impact on
  # the visible call stack. An exception from inside a :before or :after
  # callback can be as noisy as it likes -- but when control has passed
  # smoothly through and into the supplied block, we want as little evidence
  # as possible that we were here.
  #
  # source://activesupport//lib/active_support/callbacks.rb#95
  def run_callbacks(kind); end

  private

  # A hook invoked every time a before callback is halted.
  # This can be overridden in ActiveSupport::Callbacks implementors in order
  # to provide better debugging/logging.
  #
  # source://activesupport//lib/active_support/callbacks.rb#147
  def halted_callback_hook(filter, name); end

  module GeneratedClassMethods
    def __callbacks; end
    def __callbacks=(value); end
    def __callbacks?; end
  end

  module GeneratedInstanceMethods
    def __callbacks; end
    def __callbacks?; end
  end
end

# source://activesupport//lib/active_support/callbacks.rb#71
ActiveSupport::Callbacks::CALLBACK_FILTER_TYPES = T.let(T.unsafe(nil), Array)

# A future invocation of user-supplied code (either as a callback,
# or a condition filter).
#
# source://activesupport//lib/active_support/callbacks.rb#375
module ActiveSupport::Callbacks::CallTemplate
  class << self
    # Filters support:
    #
    #   Symbols:: A method to call.
    #   Procs::   A proc to call with the object.
    #   Objects:: An object with a <tt>before_foo</tt> method on it to call.
    #
    # All of these objects are converted into a CallTemplate and handled
    # the same after this point.
    #
    # source://activesupport//lib/active_support/callbacks.rb#533
    def build(filter, callback); end
  end
end

# source://activesupport//lib/active_support/callbacks.rb#434
class ActiveSupport::Callbacks::CallTemplate::InstanceExec0
  # @return [InstanceExec0] a new instance of InstanceExec0
  #
  # source://activesupport//lib/active_support/callbacks.rb#435
  def initialize(block); end

  # source://activesupport//lib/active_support/callbacks.rb#439
  def expand(target, value, block); end

  # source://activesupport//lib/active_support/callbacks.rb#449
  def inverted_lambda; end

  # source://activesupport//lib/active_support/callbacks.rb#443
  def make_lambda; end
end

# source://activesupport//lib/active_support/callbacks.rb#456
class ActiveSupport::Callbacks::CallTemplate::InstanceExec1
  # @return [InstanceExec1] a new instance of InstanceExec1
  #
  # source://activesupport//lib/active_support/callbacks.rb#457
  def initialize(block); end

  # source://activesupport//lib/active_support/callbacks.rb#461
  def expand(target, value, block); end

  # source://activesupport//lib/active_support/callbacks.rb#471
  def inverted_lambda; end

  # source://activesupport//lib/active_support/callbacks.rb#465
  def make_lambda; end
end

# source://activesupport//lib/active_support/callbacks.rb#478
class ActiveSupport::Callbacks::CallTemplate::InstanceExec2
  # @return [InstanceExec2] a new instance of InstanceExec2
  #
  # source://activesupport//lib/active_support/callbacks.rb#479
  def initialize(block); end

  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/callbacks.rb#483
  def expand(target, value, block); end

  # source://activesupport//lib/active_support/callbacks.rb#495
  def inverted_lambda; end

  # source://activesupport//lib/active_support/callbacks.rb#488
  def make_lambda; end
end

# source://activesupport//lib/active_support/callbacks.rb#376
class ActiveSupport::Callbacks::CallTemplate::MethodCall
  # @return [MethodCall] a new instance of MethodCall
  #
  # source://activesupport//lib/active_support/callbacks.rb#377
  def initialize(method); end

  # Return the parts needed to make this call, with the given
  # input values.
  #
  # Returns an array of the form:
  #
  #   [target, block, method, *arguments]
  #
  # This array can be used as such:
  #
  #   target.send(method, *arguments, &block)
  #
  # The actual invocation is left up to the caller to minimize
  # call stack pollution.
  #
  # source://activesupport//lib/active_support/callbacks.rb#394
  def expand(target, value, block); end

  # source://activesupport//lib/active_support/callbacks.rb#404
  def inverted_lambda; end

  # source://activesupport//lib/active_support/callbacks.rb#398
  def make_lambda; end
end

# source://activesupport//lib/active_support/callbacks.rb#411
class ActiveSupport::Callbacks::CallTemplate::ObjectCall
  # @return [ObjectCall] a new instance of ObjectCall
  #
  # source://activesupport//lib/active_support/callbacks.rb#412
  def initialize(target, method); end

  # source://activesupport//lib/active_support/callbacks.rb#417
  def expand(target, value, block); end

  # source://activesupport//lib/active_support/callbacks.rb#427
  def inverted_lambda; end

  # source://activesupport//lib/active_support/callbacks.rb#421
  def make_lambda; end
end

# source://activesupport//lib/active_support/callbacks.rb#503
class ActiveSupport::Callbacks::CallTemplate::ProcCall
  # @return [ProcCall] a new instance of ProcCall
  #
  # source://activesupport//lib/active_support/callbacks.rb#504
  def initialize(target); end

  # source://activesupport//lib/active_support/callbacks.rb#508
  def expand(target, value, block); end

  # source://activesupport//lib/active_support/callbacks.rb#518
  def inverted_lambda; end

  # source://activesupport//lib/active_support/callbacks.rb#512
  def make_lambda; end
end

# source://activesupport//lib/active_support/callbacks.rb#280
class ActiveSupport::Callbacks::Callback
  # @return [Callback] a new instance of Callback
  #
  # source://activesupport//lib/active_support/callbacks.rb#295
  def initialize(name, filter, kind, options, chain_config); end

  # Wraps code with filter
  #
  # source://activesupport//lib/active_support/callbacks.rb#330
  def apply(callback_sequence); end

  # Returns the value of attribute chain_config.
  #
  # source://activesupport//lib/active_support/callbacks.rb#293
  def chain_config; end

  # source://activesupport//lib/active_support/callbacks.rb#344
  def current_scopes; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/callbacks.rb#320
  def duplicates?(other); end

  # Returns the value of attribute filter.
  #
  # source://activesupport//lib/active_support/callbacks.rb#293
  def filter; end

  # Returns the value of attribute kind.
  #
  # source://activesupport//lib/active_support/callbacks.rb#292
  def kind; end

  # Sets the attribute kind
  #
  # @param value the value to set the attribute kind to.
  #
  # source://activesupport//lib/active_support/callbacks.rb#292
  def kind=(_arg0); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/callbacks.rb#316
  def matches?(_kind, _filter); end

  # source://activesupport//lib/active_support/callbacks.rb#304
  def merge_conditional_options(chain, if_option:, unless_option:); end

  # Returns the value of attribute name.
  #
  # source://activesupport//lib/active_support/callbacks.rb#292
  def name; end

  # Sets the attribute name
  #
  # @param value the value to set the attribute name to.
  #
  # source://activesupport//lib/active_support/callbacks.rb#292
  def name=(_arg0); end

  private

  # source://activesupport//lib/active_support/callbacks.rb#352
  def check_conditionals(conditionals); end

  # source://activesupport//lib/active_support/callbacks.rb#367
  def conditions_lambdas; end

  class << self
    # source://activesupport//lib/active_support/callbacks.rb#281
    def build(chain, filter, kind, options); end
  end
end

# source://activesupport//lib/active_support/callbacks.rb#349
ActiveSupport::Callbacks::Callback::EMPTY_ARRAY = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/callbacks.rb#603
class ActiveSupport::Callbacks::CallbackChain
  include ::Enumerable

  # @return [CallbackChain] a new instance of CallbackChain
  #
  # source://activesupport//lib/active_support/callbacks.rb#608
  def initialize(name, config); end

  # source://activesupport//lib/active_support/callbacks.rb#654
  def append(*callbacks); end

  # source://activesupport//lib/active_support/callbacks.rb#633
  def clear; end

  # source://activesupport//lib/active_support/callbacks.rb#645
  def compile; end

  # Returns the value of attribute config.
  #
  # source://activesupport//lib/active_support/callbacks.rb#606
  def config; end

  # source://activesupport//lib/active_support/callbacks.rb#628
  def delete(o); end

  # source://activesupport//lib/active_support/callbacks.rb#619
  def each(&block); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/callbacks.rb#621
  def empty?; end

  # source://activesupport//lib/active_support/callbacks.rb#620
  def index(o); end

  # source://activesupport//lib/active_support/callbacks.rb#623
  def insert(index, o); end

  # Returns the value of attribute name.
  #
  # source://activesupport//lib/active_support/callbacks.rb#606
  def name; end

  # source://activesupport//lib/active_support/callbacks.rb#658
  def prepend(*callbacks); end

  protected

  # Returns the value of attribute chain.
  #
  # source://activesupport//lib/active_support/callbacks.rb#663
  def chain; end

  private

  # source://activesupport//lib/active_support/callbacks.rb#666
  def append_one(callback); end

  # source://activesupport//lib/active_support/callbacks.rb#683
  def default_terminator; end

  # source://activesupport//lib/active_support/callbacks.rb#639
  def initialize_copy(other); end

  # source://activesupport//lib/active_support/callbacks.rb#672
  def prepend_one(callback); end

  # source://activesupport//lib/active_support/callbacks.rb#678
  def remove_duplicates(callback); end
end

# Execute before and after filters in a sequence instead of
# chaining them with nested lambda calls, see:
# https://github.com/rails/rails/issues/18011
#
# source://activesupport//lib/active_support/callbacks.rb#556
class ActiveSupport::Callbacks::CallbackSequence
  # @return [CallbackSequence] a new instance of CallbackSequence
  #
  # source://activesupport//lib/active_support/callbacks.rb#557
  def initialize(nested = T.unsafe(nil), call_template = T.unsafe(nil), user_conditions = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/callbacks.rb#571
  def after(&after); end

  # source://activesupport//lib/active_support/callbacks.rb#576
  def around(call_template, user_conditions); end

  # source://activesupport//lib/active_support/callbacks.rb#566
  def before(&before); end

  # source://activesupport//lib/active_support/callbacks.rb#590
  def expand_call_template(arg, block); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/callbacks.rb#586
  def final?; end

  # source://activesupport//lib/active_support/callbacks.rb#598
  def invoke_after(arg); end

  # source://activesupport//lib/active_support/callbacks.rb#594
  def invoke_before(arg); end

  # Returns the value of attribute nested.
  #
  # source://activesupport//lib/active_support/callbacks.rb#584
  def nested; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/callbacks.rb#580
  def skip?(arg); end
end

# source://activesupport//lib/active_support/callbacks.rb#695
module ActiveSupport::Callbacks::ClassMethods
  # This is used internally to append, prepend and skip callbacks to the
  # CallbackChain.
  #
  # source://activesupport//lib/active_support/callbacks.rb#705
  def __update_callbacks(name); end

  # Define sets of events in the object life cycle that support callbacks.
  #
  #   define_callbacks :validate
  #   define_callbacks :initialize, :save, :destroy
  #
  # ===== Options
  #
  # * <tt>:terminator</tt> - Determines when a before filter will halt the
  #   callback chain, preventing following before and around callbacks from
  #   being called and the event from being triggered.
  #   This should be a lambda to be executed.
  #   The current object and the result lambda of the callback will be provided
  #   to the terminator lambda.
  #
  #     define_callbacks :validate, terminator: ->(target, result_lambda) { result_lambda.call == false }
  #
  #   In this example, if any before validate callbacks returns +false+,
  #   any successive before and around callback is not executed.
  #
  #   The default terminator halts the chain when a callback throws +:abort+.
  #
  # * <tt>:skip_after_callbacks_if_terminated</tt> - Determines if after
  #   callbacks should be terminated by the <tt>:terminator</tt> option. By
  #   default after callbacks are executed no matter if callback chain was
  #   terminated or not. This option has no effect if <tt>:terminator</tt>
  #   option is set to +nil+.
  #
  # * <tt>:scope</tt> - Indicates which methods should be executed when an
  #   object is used as a callback.
  #
  #     class Audit
  #       def before(caller)
  #         puts 'Audit: before is called'
  #       end
  #
  #       def before_save(caller)
  #         puts 'Audit: before_save is called'
  #       end
  #     end
  #
  #     class Account
  #       include ActiveSupport::Callbacks
  #
  #       define_callbacks :save
  #       set_callback :save, :before, Audit.new
  #
  #       def save
  #         run_callbacks :save do
  #           puts 'save in main'
  #         end
  #       end
  #     end
  #
  #   In the above case whenever you save an account the method
  #   <tt>Audit#before</tt> will be called. On the other hand
  #
  #     define_callbacks :save, scope: [:kind, :name]
  #
  #   would trigger <tt>Audit#before_save</tt> instead. That's constructed
  #   by calling <tt>#{kind}_#{name}</tt> on the given instance. In this
  #   case "kind" is "before" and "name" is "save". In this context +:kind+
  #   and +:name+ have special meanings: +:kind+ refers to the kind of
  #   callback (before/after/around) and +:name+ refers to the method on
  #   which callbacks are being defined.
  #
  #   A declaration like
  #
  #     define_callbacks :save, scope: [:name]
  #
  #   would call <tt>Audit#save</tt>.
  #
  # ===== Notes
  #
  # +names+ passed to +define_callbacks+ must not end with
  # <tt>!</tt>, <tt>?</tt> or <tt>=</tt>.
  #
  # Calling +define_callbacks+ multiple times with the same +names+ will
  # overwrite previous callbacks registered with +set_callback+.
  #
  # source://activesupport//lib/active_support/callbacks.rb#917
  def define_callbacks(*names); end

  # source://activesupport//lib/active_support/callbacks.rb#696
  def normalize_callback_params(filters, block); end

  # Remove all set callbacks for the given event.
  #
  # source://activesupport//lib/active_support/callbacks.rb#827
  def reset_callbacks(name); end

  # Install a callback for the given event.
  #
  #   set_callback :save, :before, :before_method
  #   set_callback :save, :after,  :after_method, if: :condition
  #   set_callback :save, :around, ->(r, block) { stuff; result = block.call; stuff }
  #
  # The second argument indicates whether the callback is to be run +:before+,
  # +:after+, or +:around+ the event. If omitted, +:before+ is assumed. This
  # means the first example above can also be written as:
  #
  #   set_callback :save, :before_method
  #
  # The callback can be specified as a symbol naming an instance method; as a
  # proc, lambda, or block; or as an object that responds to a certain method
  # determined by the <tt>:scope</tt> argument to +define_callbacks+.
  #
  # If a proc, lambda, or block is given, its body is evaluated in the context
  # of the current object. It can also optionally accept the current object as
  # an argument.
  #
  # Before and around callbacks are called in the order that they are set;
  # after callbacks are called in the reverse order.
  #
  # Around callbacks can access the return value from the event, if it
  # wasn't halted, from the +yield+ call.
  #
  # ===== Options
  #
  # * <tt>:if</tt> - A symbol or an array of symbols, each naming an instance
  #   method or a proc; the callback will be called only when they all return
  #   a true value.
  #
  #   If a proc is given, its body is evaluated in the context of the
  #   current object. It can also optionally accept the current object as
  #   an argument.
  # * <tt>:unless</tt> - A symbol or an array of symbols, each naming an
  #   instance method or a proc; the callback will be called only when they
  #   all return a false value.
  #
  #   If a proc is given, its body is evaluated in the context of the
  #   current object. It can also optionally accept the current object as
  #   an argument.
  # * <tt>:prepend</tt> - If +true+, the callback will be prepended to the
  #   existing chain rather than appended.
  #
  # source://activesupport//lib/active_support/callbacks.rb#756
  def set_callback(name, *filter_list, &block); end

  # Skip a previously set callback. Like +set_callback+, <tt>:if</tt> or
  # <tt>:unless</tt> options may be passed in order to control when the
  # callback is skipped.
  #
  #   class Writer < PersonRecord
  #     attr_accessor :age
  #     skip_callback :save, :before, :saving_message, if: -> { age > 18 }
  #   end
  #
  # When if option returns true, callback is skipped.
  #
  #   writer = Writer.new
  #   writer.age = 20
  #   writer.save
  #
  # Output:
  #   - save
  #   saved
  #
  # When if option returns false, callback is NOT skipped.
  #
  #   young_writer = Writer.new
  #   young_writer.age = 17
  #   young_writer.save
  #
  # Output:
  #   saving...
  #   - save
  #   saved
  #
  # An <tt>ArgumentError</tt> will be raised if the callback has not
  # already been set (unless the <tt>:raise</tt> option is set to <tt>false</tt>).
  #
  # source://activesupport//lib/active_support/callbacks.rb#802
  def skip_callback(name, *filter_list, &block); end

  protected

  # source://activesupport//lib/active_support/callbacks.rb#948
  def get_callbacks(name); end

  # source://activesupport//lib/active_support/callbacks.rb#952
  def set_callbacks(name, callbacks); end
end

# source://activesupport//lib/active_support/callbacks.rb#150
module ActiveSupport::Callbacks::Conditionals; end

# source://activesupport//lib/active_support/callbacks.rb#151
class ActiveSupport::Callbacks::Conditionals::Value
  # @return [Value] a new instance of Value
  #
  # source://activesupport//lib/active_support/callbacks.rb#152
  def initialize(&block); end

  # source://activesupport//lib/active_support/callbacks.rb#155
  def call(target, value); end
end

# source://activesupport//lib/active_support/callbacks.rb#159
module ActiveSupport::Callbacks::Filters; end

# source://activesupport//lib/active_support/callbacks.rb#212
class ActiveSupport::Callbacks::Filters::After
  class << self
    # source://activesupport//lib/active_support/callbacks.rb#213
    def build(callback_sequence, user_callback, user_conditions, chain_config); end

    private

    # source://activesupport//lib/active_support/callbacks.rb#255
    def conditional(callback_sequence, user_callback, user_conditions); end

    # source://activesupport//lib/active_support/callbacks.rb#244
    def halting(callback_sequence, user_callback); end

    # source://activesupport//lib/active_support/callbacks.rb#229
    def halting_and_conditional(callback_sequence, user_callback, user_conditions); end

    # source://activesupport//lib/active_support/callbacks.rb#269
    def simple(callback_sequence, user_callback); end
  end
end

# source://activesupport//lib/active_support/callbacks.rb#162
class ActiveSupport::Callbacks::Filters::Before
  class << self
    # source://activesupport//lib/active_support/callbacks.rb#163
    def build(callback_sequence, user_callback, user_conditions, chain_config, filter, name); end

    private

    # source://activesupport//lib/active_support/callbacks.rb#192
    def halting(callback_sequence, user_callback, halted_lambda, filter, name); end

    # source://activesupport//lib/active_support/callbacks.rb#173
    def halting_and_conditional(callback_sequence, user_callback, user_conditions, halted_lambda, filter, name); end
  end
end

# source://activesupport//lib/active_support/callbacks.rb#160
class ActiveSupport::Callbacks::Filters::Environment < ::Struct
  # Returns the value of attribute halted
  #
  # @return [Object] the current value of halted
  def halted; end

  # Sets the attribute halted
  #
  # @param value [Object] the value to set the attribute halted to.
  # @return [Object] the newly set value
  def halted=(_); end

  # Returns the value of attribute target
  #
  # @return [Object] the current value of target
  def target; end

  # Sets the attribute target
  #
  # @param value [Object] the value to set the attribute target to.
  # @return [Object] the newly set value
  def target=(_); end

  # Returns the value of attribute value
  #
  # @return [Object] the current value of value
  def value; end

  # Sets the attribute value
  #
  # @param value [Object] the value to set the attribute value to.
  # @return [Object] the newly set value
  def value=(_); end

  class << self
    def [](*_arg0); end
    def inspect; end
    def keyword_init?; end
    def members; end
    def new(*_arg0); end
  end
end

# source://activesupport//lib/active_support/code_generator.rb#4
class ActiveSupport::CodeGenerator
  # @return [CodeGenerator] a new instance of CodeGenerator
  #
  # source://activesupport//lib/active_support/code_generator.rb#48
  def initialize(owner, path, line); end

  # source://activesupport//lib/active_support/code_generator.rb#55
  def define_cached_method(name, namespace:, as: T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/code_generator.rb#59
  def execute; end

  class << self
    # source://activesupport//lib/active_support/code_generator.rb#36
    def batch(owner, path, line); end
  end
end

# source://activesupport//lib/active_support/code_generator.rb#5
class ActiveSupport::CodeGenerator::MethodSet
  # @return [MethodSet] a new instance of MethodSet
  #
  # source://activesupport//lib/active_support/code_generator.rb#8
  def initialize(namespace); end

  # source://activesupport//lib/active_support/code_generator.rb#25
  def apply(owner, path, line); end

  # source://activesupport//lib/active_support/code_generator.rb#14
  def define_cached_method(name, as: T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/code_generator.rb#6
ActiveSupport::CodeGenerator::MethodSet::METHOD_CACHES = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/core_ext/range/compare_range.rb#4
module ActiveSupport::CompareWithRange
  # Extends the default Range#=== to support range comparisons.
  #  (1..5) === (1..5)  # => true
  #  (1..5) === (2..3)  # => true
  #  (1..5) === (1...6) # => true
  #  (1..5) === (2..6)  # => false
  #
  # The native Range#=== behavior is untouched.
  #  ('a'..'f') === ('c') # => true
  #  (5..9) === (11) # => false
  #
  # The given range must be fully bounded, with both start and end.
  #
  # source://activesupport//lib/active_support/core_ext/range/compare_range.rb#16
  def ===(value); end

  # Extends the default Range#include? to support range comparisons.
  #  (1..5).include?(1..5)  # => true
  #  (1..5).include?(2..3)  # => true
  #  (1..5).include?(1...6) # => true
  #  (1..5).include?(2..6)  # => false
  #
  # The native Range#include? behavior is untouched.
  #  ('a'..'f').include?('c') # => true
  #  (5..9).include?(11) # => false
  #
  # The given range must be fully bounded, with both start and end.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/range/compare_range.rb#41
  def include?(value); end
end

# A typical module looks like this:
#
#   module M
#     def self.included(base)
#       base.extend ClassMethods
#       base.class_eval do
#         scope :disabled, -> { where(disabled: true) }
#       end
#     end
#
#     module ClassMethods
#       ...
#     end
#   end
#
# By using <tt>ActiveSupport::Concern</tt> the above module could instead be
# written as:
#
#   require "active_support/concern"
#
#   module M
#     extend ActiveSupport::Concern
#
#     included do
#       scope :disabled, -> { where(disabled: true) }
#     end
#
#     class_methods do
#       ...
#     end
#   end
#
# Moreover, it gracefully handles module dependencies. Given a +Foo+ module
# and a +Bar+ module which depends on the former, we would typically write the
# following:
#
#   module Foo
#     def self.included(base)
#       base.class_eval do
#         def self.method_injected_by_foo
#           ...
#         end
#       end
#     end
#   end
#
#   module Bar
#     def self.included(base)
#       base.method_injected_by_foo
#     end
#   end
#
#   class Host
#     include Foo # We need to include this dependency for Bar
#     include Bar # Bar is the module that Host really needs
#   end
#
# But why should +Host+ care about +Bar+'s dependencies, namely +Foo+? We
# could try to hide these from +Host+ directly including +Foo+ in +Bar+:
#
#   module Bar
#     include Foo
#     def self.included(base)
#       base.method_injected_by_foo
#     end
#   end
#
#   class Host
#     include Bar
#   end
#
# Unfortunately this won't work, since when +Foo+ is included, its <tt>base</tt>
# is the +Bar+ module, not the +Host+ class. With <tt>ActiveSupport::Concern</tt>,
# module dependencies are properly resolved:
#
#   require "active_support/concern"
#
#   module Foo
#     extend ActiveSupport::Concern
#     included do
#       def self.method_injected_by_foo
#         ...
#       end
#     end
#   end
#
#   module Bar
#     extend ActiveSupport::Concern
#     include Foo
#
#     included do
#       self.method_injected_by_foo
#     end
#   end
#
#   class Host
#     include Bar # It works, now Bar takes care of its dependencies
#   end
#
# === Prepending concerns
#
# Just like <tt>include</tt>, concerns also support <tt>prepend</tt> with a corresponding
# <tt>prepended do</tt> callback. <tt>module ClassMethods</tt> or <tt>class_methods do</tt> are
# prepended as well.
#
# <tt>prepend</tt> is also used for any dependencies.
#
# source://activesupport//lib/active_support/concern.rb#110
module ActiveSupport::Concern
  # source://activesupport//lib/active_support/concern.rb#127
  def append_features(base); end

  # Define class methods from given block.
  # You can define private class methods as well.
  #
  #   module Example
  #     extend ActiveSupport::Concern
  #
  #     class_methods do
  #       def foo; puts 'foo'; end
  #
  #       private
  #         def bar; puts 'bar'; end
  #     end
  #   end
  #
  #   class Buzz
  #     include Example
  #   end
  #
  #   Buzz.foo # => "foo"
  #   Buzz.bar # => private method 'bar' called for Buzz:Class(NoMethodError)
  #
  # source://activesupport//lib/active_support/concern.rb#207
  def class_methods(&class_methods_module_definition); end

  # Evaluate given block in context of base class,
  # so that you can write class macros here.
  # When you define more than one +included+ block, it raises an exception.
  #
  # source://activesupport//lib/active_support/concern.rb#156
  def included(base = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/concern.rb#140
  def prepend_features(base); end

  # Evaluate given block in context of base class,
  # so that you can write class macros here.
  # When you define more than one +prepended+ block, it raises an exception.
  #
  # source://activesupport//lib/active_support/concern.rb#173
  def prepended(base = T.unsafe(nil), &block); end

  class << self
    # source://activesupport//lib/active_support/concern.rb#123
    def extended(base); end
  end
end

# source://activesupport//lib/active_support/concern.rb#111
class ActiveSupport::Concern::MultipleIncludedBlocks < ::StandardError
  # @return [MultipleIncludedBlocks] a new instance of MultipleIncludedBlocks
  #
  # source://activesupport//lib/active_support/concern.rb#112
  def initialize; end
end

# source://activesupport//lib/active_support/concern.rb#117
class ActiveSupport::Concern::MultiplePrependBlocks < ::StandardError
  # @return [MultiplePrependBlocks] a new instance of MultiplePrependBlocks
  #
  # source://activesupport//lib/active_support/concern.rb#118
  def initialize; end
end

# source://activesupport//lib/active_support/concurrency/share_lock.rb#7
module ActiveSupport::Concurrency; end

# A monitor that will permit dependency loading while blocked waiting for
# the lock.
#
# source://activesupport//lib/active_support/concurrency/load_interlock_aware_monitor.rb#9
class ActiveSupport::Concurrency::LoadInterlockAwareMonitor < ::Monitor
  # Enters an exclusive section, but allows dependency loading while blocked
  #
  # source://activesupport//lib/active_support/concurrency/load_interlock_aware_monitor.rb#15
  def mon_enter; end

  # source://activesupport//lib/active_support/concurrency/load_interlock_aware_monitor.rb#20
  def synchronize(&block); end
end

# source://activesupport//lib/active_support/concurrency/load_interlock_aware_monitor.rb#11
ActiveSupport::Concurrency::LoadInterlockAwareMonitor::EXCEPTION_IMMEDIATE = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/concurrency/load_interlock_aware_monitor.rb#10
ActiveSupport::Concurrency::LoadInterlockAwareMonitor::EXCEPTION_NEVER = T.let(T.unsafe(nil), Hash)

# A share/exclusive lock, otherwise known as a read/write lock.
#
# https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock
#
# source://activesupport//lib/active_support/concurrency/share_lock.rb#11
class ActiveSupport::Concurrency::ShareLock
  include ::MonitorMixin

  # @return [ShareLock] a new instance of ShareLock
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#50
  def initialize; end

  # Execute the supplied block while holding the Exclusive lock. If
  # +no_wait+ is set and the lock is not immediately available,
  # returns +nil+ without yielding. Otherwise, returns the result of
  # the block.
  #
  # See +start_exclusive+ for other options.
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#148
  def exclusive(purpose: T.unsafe(nil), compatible: T.unsafe(nil), after_compatible: T.unsafe(nil), no_wait: T.unsafe(nil)); end

  # We track Thread objects, instead of just using counters, because
  # we need exclusive locks to be reentrant, and we need to be able
  # to upgrade share locks to exclusive.
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#18
  def raw_state; end

  # Execute the supplied block while holding the Share lock.
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#159
  def sharing; end

  # Returns false if +no_wait+ is set and the lock is not
  # immediately available. Otherwise, returns true after the lock
  # has been acquired.
  #
  # +purpose+ and +compatible+ work together; while this thread is
  # waiting for the exclusive lock, it will yield its share (if any)
  # to any other attempt whose +purpose+ appears in this attempt's
  # +compatible+ list. This allows a "loose" upgrade, which, being
  # less strict, prevents some classes of deadlocks.
  #
  # For many resources, loose upgrades are sufficient: if a thread
  # is awaiting a lock, it is not running any other code. With
  # +purpose+ matching, it is possible to yield only to other
  # threads whose activity will not interfere.
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#76
  def start_exclusive(purpose: T.unsafe(nil), compatible: T.unsafe(nil), no_wait: T.unsafe(nil)); end

  # source://activesupport//lib/active_support/concurrency/share_lock.rb#114
  def start_sharing; end

  # Relinquish the exclusive lock. Must only be called by the thread
  # that called start_exclusive (and currently holds the lock).
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#96
  def stop_exclusive(compatible: T.unsafe(nil)); end

  # source://activesupport//lib/active_support/concurrency/share_lock.rb#131
  def stop_sharing; end

  # Temporarily give up all held Share locks while executing the
  # supplied block, allowing any +compatible+ exclusive lock request
  # to proceed.
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#171
  def yield_shares(purpose: T.unsafe(nil), compatible: T.unsafe(nil), block_share: T.unsafe(nil)); end

  private

  # Must be called within synchronize
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#204
  def busy_for_exclusive?(purpose); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#209
  def busy_for_sharing?(purpose); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/concurrency/share_lock.rb#214
  def eligible_waiters?(compatible); end

  # source://activesupport//lib/active_support/concurrency/share_lock.rb#218
  def wait_for(method, &block); end
end

# Configurable provides a <tt>config</tt> method to store and retrieve
# configuration options as an OrderedOptions.
#
# source://activesupport//lib/active_support/configurable.rb#9
module ActiveSupport::Configurable
  extend ::ActiveSupport::Concern

  mixes_in_class_methods ::ActiveSupport::Configurable::ClassMethods

  # Reads and writes attributes from a configuration OrderedOptions.
  #
  #   require "active_support/configurable"
  #
  #   class User
  #     include ActiveSupport::Configurable
  #   end
  #
  #   user = User.new
  #
  #   user.config.allowed_access = true
  #   user.config.level = 1
  #
  #   user.config.allowed_access # => true
  #   user.config.level          # => 1
  #
  # source://activesupport//lib/active_support/configurable.rb#145
  def config; end
end

# source://activesupport//lib/active_support/configurable.rb#27
module ActiveSupport::Configurable::ClassMethods
  # source://activesupport//lib/active_support/configurable.rb#28
  def config; end

  # @yield [config]
  #
  # source://activesupport//lib/active_support/configurable.rb#37
  def configure; end

  private

  # Allows you to add shortcut so that you don't have to refer to attribute
  # through config. Also look at the example for config to contrast.
  #
  # Defines both class and instance config accessors.
  #
  #   class User
  #     include ActiveSupport::Configurable
  #     config_accessor :allowed_access
  #   end
  #
  #   User.allowed_access # => nil
  #   User.allowed_access = false
  #   User.allowed_access # => false
  #
  #   user = User.new
  #   user.allowed_access # => false
  #   user.allowed_access = true
  #   user.allowed_access # => true
  #
  #   User.allowed_access # => false
  #
  # The attribute name must be a valid method name in Ruby.
  #
  #   class User
  #     include ActiveSupport::Configurable
  #     config_accessor :"1_Badname"
  #   end
  #   # => NameError: invalid config attribute name
  #
  # To omit the instance writer method, pass <tt>instance_writer: false</tt>.
  # To omit the instance reader method, pass <tt>instance_reader: false</tt>.
  #
  #   class User
  #     include ActiveSupport::Configurable
  #     config_accessor :allowed_access, instance_reader: false, instance_writer: false
  #   end
  #
  #   User.allowed_access = false
  #   User.allowed_access # => false
  #
  #   User.new.allowed_access = true # => NoMethodError
  #   User.new.allowed_access        # => NoMethodError
  #
  # Or pass <tt>instance_accessor: false</tt>, to omit both instance methods.
  #
  #   class User
  #     include ActiveSupport::Configurable
  #     config_accessor :allowed_access, instance_accessor: false
  #   end
  #
  #   User.allowed_access = false
  #   User.allowed_access # => false
  #
  #   User.new.allowed_access = true # => NoMethodError
  #   User.new.allowed_access        # => NoMethodError
  #
  # Also you can pass <tt>default</tt> or a block to set up the attribute with a default value.
  #
  #   class User
  #     include ActiveSupport::Configurable
  #     config_accessor :allowed_access, default: false
  #     config_accessor :hair_colors do
  #       [:brown, :black, :blonde, :red]
  #     end
  #   end
  #
  #   User.allowed_access # => false
  #   User.hair_colors # => [:brown, :black, :blonde, :red]
  #
  # source://activesupport//lib/active_support/configurable.rb#109
  def config_accessor(*names, instance_reader: T.unsafe(nil), instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/configurable.rb#12
class ActiveSupport::Configurable::Configuration < ::ActiveSupport::InheritableOptions
  # source://activesupport//lib/active_support/configurable.rb#13
  def compile_methods!; end

  class << self
    # Compiles reader methods so we don't have to go through method_missing.
    #
    # source://activesupport//lib/active_support/configurable.rb#18
    def compile_methods!(keys); end
  end
end

# Reads a YAML configuration file, evaluating any ERB, then
# parsing the resulting YAML.
#
# Warns in case of YAML confusing characters, like invisible
# non-breaking spaces.
#
# source://activesupport//lib/active_support/configuration_file.rb#9
class ActiveSupport::ConfigurationFile
  # @return [ConfigurationFile] a new instance of ConfigurationFile
  #
  # source://activesupport//lib/active_support/configuration_file.rb#12
  def initialize(content_path); end

  # source://activesupport//lib/active_support/configuration_file.rb#21
  def parse(context: T.unsafe(nil), **options); end

  private

  # source://activesupport//lib/active_support/configuration_file.rb#35
  def read(content_path); end

  # source://activesupport//lib/active_support/configuration_file.rb#46
  def render(context); end

  class << self
    # source://activesupport//lib/active_support/configuration_file.rb#17
    def parse(content_path, **options); end
  end
end

# source://activesupport//lib/active_support/configuration_file.rb#10
class ActiveSupport::ConfigurationFile::FormatError < ::StandardError; end

# Abstract super class that provides a thread-isolated attributes singleton, which resets automatically
# before and after each request. This allows you to keep all the per-request attributes easily
# available to the whole system.
#
# The following full app-like example demonstrates how to use a Current class to
# facilitate easy access to the global, per-request attributes without passing them deeply
# around everywhere:
#
#   # app/models/current.rb
#   class Current < ActiveSupport::CurrentAttributes
#     attribute :account, :user
#     attribute :request_id, :user_agent, :ip_address
#
#     resets { Time.zone = nil }
#
#     def user=(user)
#       super
#       self.account = user.account
#       Time.zone    = user.time_zone
#     end
#   end
#
#   # app/controllers/concerns/authentication.rb
#   module Authentication
#     extend ActiveSupport::Concern
#
#     included do
#       before_action :authenticate
#     end
#
#     private
#       def authenticate
#         if authenticated_user = User.find_by(id: cookies.encrypted[:user_id])
#           Current.user = authenticated_user
#         else
#           redirect_to new_session_url
#         end
#       end
#   end
#
#   # app/controllers/concerns/set_current_request_details.rb
#   module SetCurrentRequestDetails
#     extend ActiveSupport::Concern
#
#     included do
#       before_action do
#         Current.request_id = request.uuid
#         Current.user_agent = request.user_agent
#         Current.ip_address = request.ip
#       end
#     end
#   end
#
#   class ApplicationController < ActionController::Base
#     include Authentication
#     include SetCurrentRequestDetails
#   end
#
#   class MessagesController < ApplicationController
#     def create
#       Current.account.messages.create(message_params)
#     end
#   end
#
#   class Message < ApplicationRecord
#     belongs_to :creator, default: -> { Current.user }
#     after_create { |message| Event.create(record: message) }
#   end
#
#   class Event < ApplicationRecord
#     before_create do
#       self.request_id = Current.request_id
#       self.user_agent = Current.user_agent
#       self.ip_address = Current.ip_address
#     end
#   end
#
# A word of caution: It's easy to overdo a global singleton like Current and tangle your model as a result.
# Current should only be used for a few, top-level globals, like account, user, and request details.
# The attributes stuck in Current should be used by more or less all actions on all requests. If you start
# sticking controller-specific attributes in there, you're going to create a mess.
#
# source://activesupport//lib/active_support/current_attributes.rb#89
class ActiveSupport::CurrentAttributes
  include ::ActiveSupport::Callbacks
  extend ::ActiveSupport::Callbacks::ClassMethods
  extend ::ActiveSupport::DescendantsTracker

  # @return [CurrentAttributes] a new instance of CurrentAttributes
  #
  # source://activesupport//lib/active_support/current_attributes.rb#188
  def initialize; end

  # source://activesupport//lib/active_support/callbacks.rb#68
  def __callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#68
  def __callbacks?; end

  # source://activesupport//lib/active_support/callbacks.rb#940
  def _reset_callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#928
  def _run_reset_callbacks(&block); end

  # Returns the value of attribute attributes.
  #
  # source://activesupport//lib/active_support/current_attributes.rb#186
  def attributes; end

  # Sets the attribute attributes
  #
  # @param value the value to set the attribute attributes to.
  #
  # source://activesupport//lib/active_support/current_attributes.rb#186
  def attributes=(_arg0); end

  # Reset all attributes. Should be called before and after actions, when used as a per-request singleton.
  #
  # source://activesupport//lib/active_support/current_attributes.rb#211
  def reset; end

  # Expose one or more attributes within a block. Old values are returned after the block concludes.
  # Example demonstrating the common use of needing to set Current attributes outside the request-cycle:
  #
  #   class Chat::PublicationJob < ApplicationJob
  #     def perform(attributes, room_number, creator)
  #       Current.set(person: creator) do
  #         Chat::Publisher.publish(attributes: attributes, room_number: room_number)
  #       end
  #     end
  #   end
  #
  # source://activesupport//lib/active_support/current_attributes.rb#202
  def set(set_attributes); end

  private

  # source://activesupport//lib/active_support/current_attributes.rb#218
  def assign_attributes(new_attributes); end

  # source://activesupport//lib/active_support/current_attributes.rb#222
  def compute_attributes(keys); end

  class << self
    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks=(value); end

    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks?; end

    # source://activesupport//lib/active_support/callbacks.rb#932
    def _reset_callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#936
    def _reset_callbacks=(value); end

    # Calls this block after #reset is called on the instance. Used for resetting external collaborators, like Time.zone.
    #
    # source://activesupport//lib/active_support/current_attributes.rb#142
    def after_reset(&block); end

    # Declares one or more attributes that will be given both class and instance accessor methods.
    #
    # source://activesupport//lib/active_support/current_attributes.rb#100
    def attribute(*names); end

    # Calls this block before #reset is called on the instance. Used for resetting external collaborators that depend on current values.
    #
    # source://activesupport//lib/active_support/current_attributes.rb#137
    def before_reset(&block); end

    # source://activesupport//lib/active_support/current_attributes.rb#153
    def clear_all; end

    # Returns singleton instance for this class in this thread. If none exists, one is created.
    #
    # source://activesupport//lib/active_support/current_attributes.rb#95
    def instance; end

    # source://activesupport//lib/active_support/current_attributes.rb#147
    def reset(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/current_attributes.rb#149
    def reset_all; end

    # Calls this block after #reset is called on the instance. Used for resetting external collaborators, like Time.zone.
    #
    # source://activesupport//lib/active_support/current_attributes.rb#142
    def resets(&block); end

    # source://activesupport//lib/active_support/current_attributes.rb#147
    def set(*_arg0, **_arg1, &_arg2); end

    private

    # source://activesupport//lib/active_support/current_attributes.rb#163
    def current_instances; end

    # source://activesupport//lib/active_support/current_attributes.rb#167
    def current_instances_key; end

    # source://activesupport//lib/active_support/current_attributes.rb#159
    def generated_attribute_methods; end

    # source://activesupport//lib/active_support/current_attributes.rb#171
    def method_missing(name, *args, **_arg2, &block); end

    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/current_attributes.rb#181
    def respond_to_missing?(name, _); end
  end
end

# source://activesupport//lib/active_support/dependencies/interlock.rb#6
module ActiveSupport::Dependencies
  class << self
    # source://activesupport//lib/active_support/dependencies.rb#62
    def _autoloaded_tracked_classes; end

    # source://activesupport//lib/active_support/dependencies.rb#62
    def _autoloaded_tracked_classes=(_arg0); end

    # source://activesupport//lib/active_support/dependencies.rb#56
    def _eager_load_paths; end

    # source://activesupport//lib/active_support/dependencies.rb#56
    def _eager_load_paths=(_arg0); end

    # source://activesupport//lib/active_support/dependencies.rb#49
    def autoload_once_paths; end

    # source://activesupport//lib/active_support/dependencies.rb#49
    def autoload_once_paths=(_arg0); end

    # source://activesupport//lib/active_support/dependencies.rb#43
    def autoload_paths; end

    # source://activesupport//lib/active_support/dependencies.rb#43
    def autoload_paths=(_arg0); end

    # source://activesupport//lib/active_support/dependencies.rb#69
    def autoloader; end

    # source://activesupport//lib/active_support/dependencies.rb#69
    def autoloader=(_arg0); end

    # Private method that reloads constants autoloaded by the main autoloader.
    #
    # Rails.application.reloader.reload! is the public interface for application
    # reload. That involves more things, like deleting unloaded classes from the
    # internal state of the descendants tracker, or reloading routes.
    #
    # source://activesupport//lib/active_support/dependencies.rb#76
    def clear; end

    # Private method that helps configuring the autoloaders.
    #
    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/dependencies.rb#94
    def eager_load?(path); end

    # source://activesupport//lib/active_support/dependencies.rb#10
    def interlock; end

    # source://activesupport//lib/active_support/dependencies.rb#10
    def interlock=(_arg0); end

    # Execute the supplied block while holding an exclusive lock,
    # preventing any other thread from being inside a #run_interlock
    # block at the same time.
    #
    # source://activesupport//lib/active_support/dependencies.rb#24
    def load_interlock(&block); end

    # Execute the supplied block without interference from any
    # concurrent loads.
    #
    # source://activesupport//lib/active_support/dependencies.rb#17
    def run_interlock(&block); end

    # Private method used by require_dependency.
    #
    # source://activesupport//lib/active_support/dependencies.rb#84
    def search_for_file(relpath); end

    # Execute the supplied block while holding an exclusive lock,
    # preventing any other thread from being inside a #run_interlock
    # block at the same time.
    #
    # source://activesupport//lib/active_support/dependencies.rb#31
    def unload_interlock(&block); end
  end
end

# source://activesupport//lib/active_support/dependencies/interlock.rb#7
class ActiveSupport::Dependencies::Interlock
  # @return [Interlock] a new instance of Interlock
  #
  # source://activesupport//lib/active_support/dependencies/interlock.rb#8
  def initialize; end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#32
  def done_running; end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#24
  def done_unloading; end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#12
  def loading(&block); end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#40
  def permit_concurrent_loads(&block); end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#44
  def raw_state(&block); end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#36
  def running(&block); end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#28
  def start_running; end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#20
  def start_unloading; end

  # source://activesupport//lib/active_support/dependencies/interlock.rb#16
  def unloading(&block); end
end

# source://activesupport//lib/active_support/dependencies/require_dependency.rb#3
module ActiveSupport::Dependencies::RequireDependency
  # <b>Warning:</b> This method is obsolete. The semantics of the autoloader
  # match Ruby's and you do not need to be defensive with load order anymore.
  # Just refer to classes and modules normally.
  #
  # Engines that do not control the mode in which their parent application runs
  # should call +require_dependency+ where needed in case the runtime mode is
  # +:classic+.
  #
  # source://activesupport//lib/active_support/dependencies/require_dependency.rb#11
  def require_dependency(filename); end
end

# source://activesupport//lib/active_support/core_ext/numeric/deprecated_conversions.rb#4
module ActiveSupport::DeprecatedNumericWithFormat
  # source://activesupport//lib/active_support/core_ext/numeric/deprecated_conversions.rb#5
  def to_s(format = T.unsafe(nil), options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/range/deprecated_conversions.rb#4
module ActiveSupport::DeprecatedRangeWithFormat
  # source://activesupport//lib/active_support/deprecation/method_wrappers.rb#63
  def to_default_s(*args, **_arg1, &block); end

  # source://activesupport//lib/active_support/core_ext/range/deprecated_conversions.rb#6
  def to_s(format = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/range/deprecated_conversions.rb#5
ActiveSupport::DeprecatedRangeWithFormat::NOT_SET = T.let(T.unsafe(nil), Object)

# \Deprecation specifies the API used by Rails to deprecate methods, instance
# variables, objects, and constants.
#
# source://activesupport//lib/active_support/deprecation.rb#8
class ActiveSupport::Deprecation
  include ::Singleton
  include ::ActiveSupport::Deprecation::InstanceDelegator
  include ::ActiveSupport::Deprecation::Behavior
  include ::ActiveSupport::Deprecation::Reporting
  include ::ActiveSupport::Deprecation::Disallowed
  include ::ActiveSupport::Deprecation::MethodWrapper
  extend ::Singleton::SingletonClassMethods
  extend ::ActiveSupport::Deprecation::InstanceDelegator::ClassMethods
  extend ::ActiveSupport::Deprecation::InstanceDelegator::OverrideDelegators

  # It accepts two parameters on initialization. The first is a version of library
  # and the second is a library name.
  #
  #   ActiveSupport::Deprecation.new('2.0', 'MyLibrary')
  #
  # @return [Deprecation] a new instance of Deprecation
  #
  # source://activesupport//lib/active_support/deprecation.rb#41
  def initialize(deprecation_horizon = T.unsafe(nil), gem_name = T.unsafe(nil)); end

  # The version number in which the deprecated behavior will be removed, by default.
  #
  # source://activesupport//lib/active_support/deprecation.rb#35
  def deprecation_horizon; end

  # The version number in which the deprecated behavior will be removed, by default.
  #
  # source://activesupport//lib/active_support/deprecation.rb#35
  def deprecation_horizon=(_arg0); end

  class << self
    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def allow(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def behavior(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def behavior=(arg); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def debug(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def debug=(arg); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def deprecate_methods(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def deprecation_horizon(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def deprecation_horizon=(arg); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#31
    def deprecation_warning(deprecated_method_name, message = T.unsafe(nil), caller_backtrace = T.unsafe(nil)); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def disallowed_behavior(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def disallowed_behavior=(arg); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def disallowed_warnings(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def disallowed_warnings=(arg); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def gem_name(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def gem_name=(arg); end

    def new(*_arg0); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def silence(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def silenced(*_arg0, **_arg1, &_arg2); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#21
    def silenced=(arg); end

    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#26
    def warn(message = T.unsafe(nil), callstack = T.unsafe(nil)); end

    private

    def allocate; end
  end
end

# Behavior module allows to determine how to display deprecation messages.
# You can create a custom behavior or set any from the +DEFAULT_BEHAVIORS+
# constant. Available behaviors are:
#
# [+raise+]   Raise <tt>ActiveSupport::DeprecationException</tt>.
# [+stderr+]  Log all deprecation warnings to <tt>$stderr</tt>.
# [+log+]     Log all deprecation warnings to +Rails.logger+.
# [+notify+]  Use +ActiveSupport::Notifications+ to notify +deprecation.rails+.
# [+silence+] Do nothing. On Rails, set <tt>config.active_support.report_deprecations = false</tt> to disable all behaviors.
#
# Setting behaviors only affects deprecations that happen after boot time.
# For more information you can read the documentation of the +behavior=+ method.
#
# source://activesupport//lib/active_support/deprecation/behaviors.rb#61
module ActiveSupport::Deprecation::Behavior
  # Returns the current behavior or if one isn't set, defaults to +:stderr+.
  #
  # source://activesupport//lib/active_support/deprecation/behaviors.rb#66
  def behavior; end

  # Sets the behavior to the specified value. Can be a single value, array,
  # or an object that responds to +call+.
  #
  # Available behaviors:
  #
  # [+raise+]   Raise <tt>ActiveSupport::DeprecationException</tt>.
  # [+stderr+]  Log all deprecation warnings to <tt>$stderr</tt>.
  # [+log+]     Log all deprecation warnings to +Rails.logger+.
  # [+notify+]  Use +ActiveSupport::Notifications+ to notify +deprecation.rails+.
  # [+silence+] Do nothing.
  #
  # Setting behaviors only affects deprecations that happen after boot time.
  # Deprecation warnings raised by gems are not affected by this setting
  # because they happen before Rails boots up.
  #
  #   ActiveSupport::Deprecation.behavior = :stderr
  #   ActiveSupport::Deprecation.behavior = [:stderr, :log]
  #   ActiveSupport::Deprecation.behavior = MyCustomHandler
  #   ActiveSupport::Deprecation.behavior = ->(message, callstack, deprecation_horizon, gem_name) {
  #     # custom stuff
  #   }
  #
  # If you are using Rails, you can set <tt>config.active_support.report_deprecations = false</tt> to disable
  # all deprecation behaviors. This is similar to the +silence+ option but more performant.
  #
  # source://activesupport//lib/active_support/deprecation/behaviors.rb#99
  def behavior=(behavior); end

  # Whether to print a backtrace along with the warning.
  #
  # source://activesupport//lib/active_support/deprecation/behaviors.rb#63
  def debug; end

  # Whether to print a backtrace along with the warning.
  #
  # source://activesupport//lib/active_support/deprecation/behaviors.rb#63
  def debug=(_arg0); end

  # Returns the current behavior for disallowed deprecations or if one isn't set, defaults to +:raise+.
  #
  # source://activesupport//lib/active_support/deprecation/behaviors.rb#71
  def disallowed_behavior; end

  # Sets the behavior for disallowed deprecations (those configured by
  # ActiveSupport::Deprecation.disallowed_warnings=) to the specified
  # value. As with +behavior=+, this can be a single value, array, or an
  # object that responds to +call+.
  #
  # source://activesupport//lib/active_support/deprecation/behaviors.rb#107
  def disallowed_behavior=(behavior); end

  private

  # source://activesupport//lib/active_support/deprecation/behaviors.rb#112
  def arity_coerce(behavior); end
end

# Default warning behaviors per Rails.env.
#
# source://activesupport//lib/active_support/deprecation/behaviors.rb#13
ActiveSupport::Deprecation::DEFAULT_BEHAVIORS = T.let(T.unsafe(nil), Hash)

# DeprecatedConstantAccessor transforms a constant into a deprecated one by
# hooking +const_missing+.
#
# It takes the names of an old (deprecated) constant and of a new constant
# (both in string form) and optionally a deprecator. The deprecator defaults
# to +ActiveSupport::Deprecator+ if none is specified.
#
# The deprecated constant now returns the same object as the new one rather
# than a proxy object, so it can be used transparently in +rescue+ blocks
# etc.
#
#   PLANETS = %w(mercury venus earth mars jupiter saturn uranus neptune pluto)
#
#   # (In a later update, the original implementation of `PLANETS` has been removed.)
#
#   PLANETS_POST_2006 = %w(mercury venus earth mars jupiter saturn uranus neptune)
#   include ActiveSupport::Deprecation::DeprecatedConstantAccessor
#   deprecate_constant 'PLANETS', 'PLANETS_POST_2006'
#
#   PLANETS.map { |planet| planet.capitalize }
#   # => DEPRECATION WARNING: PLANETS is deprecated! Use PLANETS_POST_2006 instead.
#        (Backtrace information…)
#        ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
#
# source://activesupport//lib/active_support/deprecation/constant_accessor.rb#28
module ActiveSupport::Deprecation::DeprecatedConstantAccessor
  class << self
    # @private
    #
    # source://activesupport//lib/active_support/deprecation/constant_accessor.rb#29
    def included(base); end
  end
end

# DeprecatedConstantProxy transforms a constant into a deprecated one. It
# takes the names of an old (deprecated) constant and of a new constant
# (both in string form) and optionally a deprecator. The deprecator defaults
# to +ActiveSupport::Deprecator+ if none is specified. The deprecated constant
# now returns the value of the new one.
#
#   PLANETS = %w(mercury venus earth mars jupiter saturn uranus neptune pluto)
#
#   # (In a later update, the original implementation of `PLANETS` has been removed.)
#
#   PLANETS_POST_2006 = %w(mercury venus earth mars jupiter saturn uranus neptune)
#   PLANETS = ActiveSupport::Deprecation::DeprecatedConstantProxy.new('PLANETS', 'PLANETS_POST_2006')
#
#   PLANETS.map { |planet| planet.capitalize }
#   # => DEPRECATION WARNING: PLANETS is deprecated! Use PLANETS_POST_2006 instead.
#        (Backtrace information…)
#        ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
#
# source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#123
class ActiveSupport::Deprecation::DeprecatedConstantProxy < ::Module
  # @return [DeprecatedConstantProxy] a new instance of DeprecatedConstantProxy
  #
  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#131
  def initialize(old_const, new_const, deprecator = T.unsafe(nil), message: T.unsafe(nil)); end

  # Returns the class of the new constant.
  #
  #   PLANETS_POST_2006 = %w(mercury venus earth mars jupiter saturn uranus neptune)
  #   PLANETS = ActiveSupport::Deprecation::DeprecatedConstantProxy.new('PLANETS', 'PLANETS_POST_2006')
  #   PLANETS.class # => Array
  #
  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#157
  def class; end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#150
  def hash(*_arg0, **_arg1, &_arg2); end

  # Don't give a deprecation warning on inspect since test/unit and error
  # logs rely on it for diagnostics.
  #
  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#144
  def inspect; end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#150
  def instance_methods(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#150
  def name(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#150
  def respond_to?(*_arg0, **_arg1, &_arg2); end

  private

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#166
  def const_missing(name); end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#171
  def method_missing(called, *args, &block); end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#162
  def target; end

  class << self
    # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#124
    def new(*args, **options, &block); end
  end
end

# DeprecatedInstanceVariableProxy transforms an instance variable into a
# deprecated one. It takes an instance of a class, a method on that class
# and an instance variable. It optionally takes a deprecator as the last
# argument. The deprecator defaults to +ActiveSupport::Deprecator+ if none
# is specified.
#
#   class Example
#     def initialize
#       @request = ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy.new(self, :request, :@request)
#       @_request = :special_request
#     end
#
#     def request
#       @_request
#     end
#
#     def old_request
#       @request
#     end
#   end
#
#   example = Example.new
#   # => #<Example:0x007fb9b31090b8 @_request=:special_request, @request=:special_request>
#
#   example.old_request.to_s
#   # => DEPRECATION WARNING: @request is deprecated! Call request.to_s instead of
#      @request.to_s
#      (Backtrace information…)
#      "special_request"
#
#   example.request.to_s
#   # => "special_request"
#
# source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#88
class ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy < ::ActiveSupport::Deprecation::DeprecationProxy
  # @return [DeprecatedInstanceVariableProxy] a new instance of DeprecatedInstanceVariableProxy
  #
  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#89
  def initialize(instance, method, var = T.unsafe(nil), deprecator = T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#97
  def target; end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#101
  def warn(callstack, called, args); end
end

# DeprecatedObjectProxy transforms an object into a deprecated one. It
# takes an object, a deprecation message, and optionally a deprecator. The
# deprecator defaults to +ActiveSupport::Deprecator+ if none is specified.
#
#   deprecated_object = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(Object.new, "This object is now deprecated")
#   # => #<Object:0x007fb9b34c34b0>
#
#   deprecated_object.to_s
#   DEPRECATION WARNING: This object is now deprecated.
#   (Backtrace)
#   # => "#<Object:0x007fb9b34c34b0>"
#
# source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#39
class ActiveSupport::Deprecation::DeprecatedObjectProxy < ::ActiveSupport::Deprecation::DeprecationProxy
  # @return [DeprecatedObjectProxy] a new instance of DeprecatedObjectProxy
  #
  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#40
  def initialize(object, message, deprecator = T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#47
  def target; end

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#51
  def warn(callstack, called, args); end
end

# source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#5
class ActiveSupport::Deprecation::DeprecationProxy
  # Don't give a deprecation warning on inspect since test/unit and error
  # logs rely on it for diagnostics.
  #
  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#17
  def inspect; end

  private

  # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#22
  def method_missing(called, *args, &block); end

  class << self
    # source://activesupport//lib/active_support/deprecation/proxy_wrappers.rb#6
    def new(*args, &block); end
  end
end

# source://activesupport//lib/active_support/deprecation/disallowed.rb#5
module ActiveSupport::Deprecation::Disallowed
  # Returns the configured criteria used to identify deprecation messages
  # which should be treated as disallowed.
  #
  # source://activesupport//lib/active_support/deprecation/disallowed.rb#21
  def disallowed_warnings; end

  # Sets the criteria used to identify deprecation messages which should be
  # disallowed. Can be an array containing strings, symbols, or regular
  # expressions. (Symbols are treated as strings.) These are compared against
  # the text of the generated deprecation warning.
  #
  # Additionally the scalar symbol +:all+ may be used to treat all
  # deprecations as disallowed.
  #
  # Deprecations matching a substring or regular expression will be handled
  # using the configured Behavior#disallowed_behavior rather than
  # Behavior#behavior.
  #
  # source://activesupport//lib/active_support/deprecation/disallowed.rb#17
  def disallowed_warnings=(_arg0); end

  private

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/deprecation/disallowed.rb#26
  def deprecation_disallowed?(message); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/deprecation/disallowed.rb#40
  def explicitly_allowed?(message); end
end

# source://activesupport//lib/active_support/deprecation/instance_delegator.rb#7
module ActiveSupport::Deprecation::InstanceDelegator
  mixes_in_class_methods ::ActiveSupport::Deprecation::InstanceDelegator::ClassMethods
  mixes_in_class_methods ::ActiveSupport::Deprecation::InstanceDelegator::OverrideDelegators

  class << self
    # @private
    #
    # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#8
    def included(base); end
  end
end

# source://activesupport//lib/active_support/deprecation/instance_delegator.rb#14
module ActiveSupport::Deprecation::InstanceDelegator::ClassMethods
  # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#15
  def include(included_module); end

  # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#20
  def method_added(method_name); end
end

# source://activesupport//lib/active_support/deprecation/instance_delegator.rb#25
module ActiveSupport::Deprecation::InstanceDelegator::OverrideDelegators
  # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#31
  def deprecation_warning(deprecated_method_name, message = T.unsafe(nil), caller_backtrace = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/deprecation/instance_delegator.rb#26
  def warn(message = T.unsafe(nil), callstack = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/deprecation/method_wrappers.rb#8
module ActiveSupport::Deprecation::MethodWrapper
  # Declare that a method has been deprecated.
  #
  #   class Fred
  #     def aaa; end
  #     def bbb; end
  #     def ccc; end
  #     def ddd; end
  #     def eee; end
  #   end
  #
  # Using the default deprecator:
  #   ActiveSupport::Deprecation.deprecate_methods(Fred, :aaa, bbb: :zzz, ccc: 'use Bar#ccc instead')
  #   # => Fred
  #
  #   Fred.new.aaa
  #   # DEPRECATION WARNING: aaa is deprecated and will be removed from Rails 5.1. (called from irb_binding at (irb):10)
  #   # => nil
  #
  #   Fred.new.bbb
  #   # DEPRECATION WARNING: bbb is deprecated and will be removed from Rails 5.1 (use zzz instead). (called from irb_binding at (irb):11)
  #   # => nil
  #
  #   Fred.new.ccc
  #   # DEPRECATION WARNING: ccc is deprecated and will be removed from Rails 5.1 (use Bar#ccc instead). (called from irb_binding at (irb):12)
  #   # => nil
  #
  # Passing in a custom deprecator:
  #   custom_deprecator = ActiveSupport::Deprecation.new('next-release', 'MyGem')
  #   ActiveSupport::Deprecation.deprecate_methods(Fred, ddd: :zzz, deprecator: custom_deprecator)
  #   # => [:ddd]
  #
  #   Fred.new.ddd
  #   DEPRECATION WARNING: ddd is deprecated and will be removed from MyGem next-release (use zzz instead). (called from irb_binding at (irb):15)
  #   # => nil
  #
  # Using a custom deprecator directly:
  #   custom_deprecator = ActiveSupport::Deprecation.new('next-release', 'MyGem')
  #   custom_deprecator.deprecate_methods(Fred, eee: :zzz)
  #   # => [:eee]
  #
  #   Fred.new.eee
  #   DEPRECATION WARNING: eee is deprecated and will be removed from MyGem next-release (use zzz instead). (called from irb_binding at (irb):18)
  #   # => nil
  #
  # source://activesupport//lib/active_support/deprecation/method_wrappers.rb#52
  def deprecate_methods(target_module, *method_names); end
end

# source://activesupport//lib/active_support/deprecation/reporting.rb#7
module ActiveSupport::Deprecation::Reporting
  # Allow previously disallowed deprecation warnings within the block.
  # <tt>allowed_warnings</tt> can be an array containing strings, symbols, or regular
  # expressions. (Symbols are treated as strings). These are compared against
  # the text of deprecation warning messages generated within the block.
  # Matching warnings will be exempt from the rules set by
  # +ActiveSupport::Deprecation.disallowed_warnings+
  #
  # The optional <tt>if:</tt> argument accepts a truthy/falsy value or an object that
  # responds to <tt>.call</tt>. If truthy, then matching warnings will be allowed.
  # If falsey then the method yields to the block without allowing the warning.
  #
  #   ActiveSupport::Deprecation.disallowed_behavior = :raise
  #   ActiveSupport::Deprecation.disallowed_warnings = [
  #     "something broke"
  #   ]
  #
  #   ActiveSupport::Deprecation.warn('something broke!')
  #   # => ActiveSupport::DeprecationException
  #
  #   ActiveSupport::Deprecation.allow ['something broke'] do
  #     ActiveSupport::Deprecation.warn('something broke!')
  #   end
  #   # => nil
  #
  #   ActiveSupport::Deprecation.allow ['something broke'], if: Rails.env.production? do
  #     ActiveSupport::Deprecation.warn('something broke!')
  #   end
  #   # => ActiveSupport::DeprecationException for dev/test, nil for production
  #
  # source://activesupport//lib/active_support/deprecation/reporting.rb#72
  def allow(allowed_warnings = T.unsafe(nil), if: T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/deprecation/reporting.rb#86
  def deprecation_warning(deprecated_method_name, message = T.unsafe(nil), caller_backtrace = T.unsafe(nil)); end

  # Name of gem where method is deprecated
  #
  # source://activesupport//lib/active_support/deprecation/reporting.rb#11
  def gem_name; end

  # Name of gem where method is deprecated
  #
  # source://activesupport//lib/active_support/deprecation/reporting.rb#11
  def gem_name=(_arg0); end

  # Silence deprecation warnings within the block.
  #
  #   ActiveSupport::Deprecation.warn('something broke!')
  #   # => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
  #
  #   ActiveSupport::Deprecation.silence do
  #     ActiveSupport::Deprecation.warn('something broke!')
  #   end
  #   # => nil
  #
  # source://activesupport//lib/active_support/deprecation/reporting.rb#40
  def silence(&block); end

  # source://activesupport//lib/active_support/deprecation/reporting.rb#82
  def silenced; end

  # Whether to print a message (silent mode)
  #
  # source://activesupport//lib/active_support/deprecation/reporting.rb#9
  def silenced=(_arg0); end

  # Outputs a deprecation warning to the output configured by
  # <tt>ActiveSupport::Deprecation.behavior</tt>.
  #
  #   ActiveSupport::Deprecation.warn('something broke!')
  #   # => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
  #
  # source://activesupport//lib/active_support/deprecation/reporting.rb#18
  def warn(message = T.unsafe(nil), callstack = T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/deprecation/reporting.rb#137
  def _extract_callstack(callstack); end

  # Outputs a deprecation warning message
  #
  #   deprecated_method_warning(:method_name)
  #   # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon}"
  #   deprecated_method_warning(:method_name, :another_method)
  #   # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon} (use another_method instead)"
  #   deprecated_method_warning(:method_name, "Optional message")
  #   # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon} (Optional message)"
  #
  # source://activesupport//lib/active_support/deprecation/reporting.rb#102
  def deprecated_method_warning(method_name, message = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/deprecation/reporting.rb#116
  def deprecation_caller_message(callstack); end

  # source://activesupport//lib/active_support/deprecation/reporting.rb#111
  def deprecation_message(callstack, message = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/deprecation/reporting.rb#127
  def extract_callstack(callstack); end

  # source://activesupport//lib/active_support/deprecation/reporting.rb#152
  def ignored_callstack(path); end
end

# source://activesupport//lib/active_support/deprecation/reporting.rb#150
ActiveSupport::Deprecation::Reporting::RAILS_GEM_ROOT = T.let(T.unsafe(nil), String)

# Raised when ActiveSupport::Deprecation::Behavior#behavior is set with <tt>:raise</tt>.
# You would set <tt>:raise</tt>, as a behavior to raise errors and proactively report exceptions from deprecations.
#
# source://activesupport//lib/active_support/deprecation/behaviors.rb#8
class ActiveSupport::DeprecationException < ::StandardError; end

# This module provides an internal implementation to track descendants
# which is faster than iterating through ObjectSpace.
#
# source://activesupport//lib/active_support/descendants_tracker.rb#9
module ActiveSupport::DescendantsTracker
  # source://activesupport//lib/active_support/descendants_tracker.rb#88
  def descendants; end

  # source://activesupport//lib/active_support/descendants_tracker.rb#92
  def direct_descendants; end

  # source://activesupport//lib/active_support/descendants_tracker.rb#82
  def subclasses; end

  class << self
    # source://activesupport//lib/active_support/descendants_tracker.rb#66
    def clear(classes); end

    # source://activesupport//lib/active_support/descendants_tracker.rb#62
    def descendants(klass); end

    # source://activesupport//lib/active_support/descendants_tracker.rb#11
    def direct_descendants(klass); end

    # source://activesupport//lib/active_support/descendants_tracker.rb#50
    def disable_clear!; end

    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/descendants_tracker.rb#77
    def native?; end

    # source://activesupport//lib/active_support/descendants_tracker.rb#58
    def subclasses(klass); end
  end
end

# source://activesupport//lib/active_support/digest.rb#6
class ActiveSupport::Digest
  class << self
    # source://activesupport//lib/active_support/digest.rb#8
    def hash_digest_class; end

    # @raise [ArgumentError]
    #
    # source://activesupport//lib/active_support/digest.rb#12
    def hash_digest_class=(klass); end

    # source://activesupport//lib/active_support/digest.rb#17
    def hexdigest(arg); end
  end
end

# Provides accurate date and time measurements using Date#advance and
# Time#advance, respectively. It mainly supports the methods on Numeric.
#
#   1.month.ago       # equivalent to Time.now.advance(months: -1)
#
# source://activesupport//lib/active_support/duration.rb#13
class ActiveSupport::Duration
  # @return [Duration] a new instance of Duration
  #
  # source://activesupport//lib/active_support/duration.rb#223
  def initialize(value, parts, variable = T.unsafe(nil)); end

  # Returns the modulo of this Duration by another Duration or Numeric.
  # Numeric values are treated as seconds.
  #
  # source://activesupport//lib/active_support/duration.rb#306
  def %(other); end

  # Multiplies this Duration by a Numeric and returns a new Duration.
  #
  # source://activesupport//lib/active_support/duration.rb#281
  def *(other); end

  # Adds another Duration or a Numeric to this Duration. Numeric values
  # are treated as seconds.
  #
  # source://activesupport//lib/active_support/duration.rb#262
  def +(other); end

  # source://activesupport//lib/active_support/duration.rb#320
  def +@; end

  # Subtracts another Duration or a Numeric from this Duration. Numeric
  # values are treated as seconds.
  #
  # source://activesupport//lib/active_support/duration.rb#276
  def -(other); end

  # source://activesupport//lib/active_support/duration.rb#316
  def -@; end

  # Divides this Duration by a Numeric and returns a new Duration.
  #
  # source://activesupport//lib/active_support/duration.rb#292
  def /(other); end

  # Compares one Duration with another or a Numeric to this Duration.
  # Numeric values are treated as seconds.
  #
  # source://activesupport//lib/active_support/duration.rb#252
  def <=>(other); end

  # Returns +true+ if +other+ is also a Duration instance with the
  # same +value+, or if <tt>other == value</tt>.
  #
  # source://activesupport//lib/active_support/duration.rb#335
  def ==(other); end

  # source://activesupport//lib/active_support/duration.rb#475
  def _parts; end

  # Calculates a new Time or Date that is as far in the future
  # as this Duration represents.
  #
  # source://activesupport//lib/active_support/duration.rb#430
  def after(time = T.unsafe(nil)); end

  # Calculates a new Time or Date that is as far in the past
  # as this Duration represents.
  #
  # source://activesupport//lib/active_support/duration.rb#438
  def ago(time = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/duration.rb#453
  def as_json(options = T.unsafe(nil)); end

  # Calculates a new Time or Date that is as far in the past
  # as this Duration represents.
  #
  # source://activesupport//lib/active_support/duration.rb#438
  def before(time = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/duration.rb#239
  def coerce(other); end

  # source://activesupport//lib/active_support/duration.rb#461
  def encode_with(coder); end

  # Returns +true+ if +other+ is also a Duration instance, which has the
  # same parts as this one.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration.rb#420
  def eql?(other); end

  # Calculates a new Time or Date that is as far in the future
  # as this Duration represents.
  #
  # source://activesupport//lib/active_support/duration.rb#430
  def from_now(time = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/duration.rb#424
  def hash; end

  # Returns the amount of days a duration covers as a float
  #
  #   12.hours.in_days # => 0.5
  #
  # source://activesupport//lib/active_support/duration.rb#393
  def in_days; end

  # Returns the amount of hours a duration covers as a float
  #
  #   1.day.in_hours # => 24.0
  #
  # source://activesupport//lib/active_support/duration.rb#386
  def in_hours; end

  # Returns the amount of minutes a duration covers as a float
  #
  #   1.day.in_minutes # => 1440.0
  #
  # source://activesupport//lib/active_support/duration.rb#379
  def in_minutes; end

  # Returns the amount of months a duration covers as a float
  #
  #   9.weeks.in_months # => 2.07
  #
  # source://activesupport//lib/active_support/duration.rb#407
  def in_months; end

  # Returns the number of seconds that this Duration represents.
  #
  #   1.minute.to_i   # => 60
  #   1.hour.to_i     # => 3600
  #   1.day.to_i      # => 86400
  #
  # Note that this conversion makes some assumptions about the
  # duration of some periods, e.g. months are always 1/12 of year
  # and years are 365.2425 days:
  #
  #   # equivalent to (1.year / 12).to_i
  #   1.month.to_i    # => 2629746
  #
  #   # equivalent to 365.2425.days.to_i
  #   1.year.to_i     # => 31556952
  #
  # In such cases, Ruby's core
  # Date[https://ruby-doc.org/stdlib/libdoc/date/rdoc/Date.html] and
  # Time[https://ruby-doc.org/stdlib/libdoc/time/rdoc/Time.html] should be used for precision
  # date and time arithmetic.
  #
  # source://activesupport//lib/active_support/duration.rb#371
  def in_seconds; end

  # Returns the amount of weeks a duration covers as a float
  #
  #   2.months.in_weeks # => 8.696
  #
  # source://activesupport//lib/active_support/duration.rb#400
  def in_weeks; end

  # Returns the amount of years a duration covers as a float
  #
  #   30.days.in_years # => 0.082
  #
  # source://activesupport//lib/active_support/duration.rb#414
  def in_years; end

  # source://activesupport//lib/active_support/duration.rb#457
  def init_with(coder); end

  # source://activesupport//lib/active_support/duration.rb#444
  def inspect; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration.rb#329
  def instance_of?(klass); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration.rb#324
  def is_a?(klass); end

  # Build ISO 8601 Duration string for this duration.
  # The +precision+ parameter can be used to limit seconds' precision of duration.
  #
  # source://activesupport//lib/active_support/duration.rb#467
  def iso8601(precision: T.unsafe(nil)); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration.rb#324
  def kind_of?(klass); end

  # Returns a copy of the parts hash that defines the duration
  #
  # source://activesupport//lib/active_support/duration.rb#235
  def parts; end

  # Calculates a new Time or Date that is as far in the future
  # as this Duration represents.
  #
  # source://activesupport//lib/active_support/duration.rb#430
  def since(time = T.unsafe(nil)); end

  # Returns the number of seconds that this Duration represents.
  #
  #   1.minute.to_i   # => 60
  #   1.hour.to_i     # => 3600
  #   1.day.to_i      # => 86400
  #
  # Note that this conversion makes some assumptions about the
  # duration of some periods, e.g. months are always 1/12 of year
  # and years are 365.2425 days:
  #
  #   # equivalent to (1.year / 12).to_i
  #   1.month.to_i    # => 2629746
  #
  #   # equivalent to 365.2425.days.to_i
  #   1.year.to_i     # => 31556952
  #
  # In such cases, Ruby's core
  # Date[https://ruby-doc.org/stdlib/libdoc/date/rdoc/Date.html] and
  # Time[https://ruby-doc.org/stdlib/libdoc/time/rdoc/Time.html] should be used for precision
  # date and time arithmetic.
  #
  # source://activesupport//lib/active_support/duration.rb#371
  def to_i; end

  # Returns the amount of seconds a duration covers as a string.
  # For more information check to_i method.
  #
  #   1.day.to_s # => "86400"
  #
  # source://activesupport//lib/active_support/duration.rb#347
  def to_s; end

  # Calculates a new Time or Date that is as far in the past
  # as this Duration represents.
  #
  # source://activesupport//lib/active_support/duration.rb#438
  def until(time = T.unsafe(nil)); end

  # Returns the value of attribute value.
  #
  # source://activesupport//lib/active_support/duration.rb#132
  def value; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration.rb#471
  def variable?; end

  private

  # source://activesupport//lib/active_support/duration.rb#506
  def method_missing(method, *args, &block); end

  # @raise [TypeError]
  #
  # source://activesupport//lib/active_support/duration.rb#510
  def raise_type_error(other); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration.rb#502
  def respond_to_missing?(method, _); end

  # source://activesupport//lib/active_support/duration.rb#480
  def sum(sign, time = T.unsafe(nil)); end

  class << self
    # source://activesupport//lib/active_support/duration.rb#148
    def ===(other); end

    # Creates a new Duration from a seconds value that is converted
    # to the individual parts:
    #
    #   ActiveSupport::Duration.build(31556952).parts # => {:years=>1}
    #   ActiveSupport::Duration.build(2716146).parts  # => {:months=>1, :days=>1}
    #
    # source://activesupport//lib/active_support/duration.rb#188
    def build(value); end

    # source://activesupport//lib/active_support/duration.rb#166
    def days(value); end

    # source://activesupport//lib/active_support/duration.rb#162
    def hours(value); end

    # source://activesupport//lib/active_support/duration.rb#158
    def minutes(value); end

    # source://activesupport//lib/active_support/duration.rb#174
    def months(value); end

    # Creates a new Duration from string formatted according to ISO 8601 Duration.
    #
    # See {ISO 8601}[https://en.wikipedia.org/wiki/ISO_8601#Durations] for more information.
    # This method allows negative parts to be present in pattern.
    # If invalid string is provided, it will raise +ActiveSupport::Duration::ISO8601Parser::ParsingError+.
    #
    # source://activesupport//lib/active_support/duration.rb#143
    def parse(iso8601duration); end

    # source://activesupport//lib/active_support/duration.rb#154
    def seconds(value); end

    # source://activesupport//lib/active_support/duration.rb#170
    def weeks(value); end

    # source://activesupport//lib/active_support/duration.rb#178
    def years(value); end

    private

    # source://activesupport//lib/active_support/duration.rb#216
    def calculate_total_seconds(parts); end
  end
end

# Parses a string formatted according to ISO 8601 Duration into the hash.
#
# See {ISO 8601}[https://en.wikipedia.org/wiki/ISO_8601#Durations] for more information.
#
# This parser allows negative parts to be present in pattern.
#
# source://activesupport//lib/active_support/duration/iso8601_parser.rb#12
class ActiveSupport::Duration::ISO8601Parser
  # @return [ISO8601Parser] a new instance of ISO8601Parser
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#34
  def initialize(string); end

  # Returns the value of attribute mode.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#32
  def mode; end

  # Sets the attribute mode
  #
  # @param value the value to set the attribute mode to.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#32
  def mode=(_arg0); end

  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#41
  def parse!; end

  # Returns the value of attribute parts.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#31
  def parts; end

  # Returns the value of attribute scanner.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#31
  def scanner; end

  # Returns the value of attribute sign.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#32
  def sign; end

  # Sets the attribute sign
  #
  # @param value the value to set the attribute sign to.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#32
  def sign=(_arg0); end

  private

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#83
  def finished?; end

  # Parses number which can be a float with either comma or period.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#88
  def number; end

  # @raise [ParsingError]
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#96
  def raise_parsing_error(reason = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#92
  def scan(pattern); end

  # Checks for various semantic errors as stated in ISO 8601 standard.
  #
  # source://activesupport//lib/active_support/duration/iso8601_parser.rb#101
  def validate!; end
end

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#17
ActiveSupport::Duration::ISO8601Parser::COMMA = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#22
ActiveSupport::Duration::ISO8601Parser::DATE_COMPONENT = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#28
ActiveSupport::Duration::ISO8601Parser::DATE_COMPONENTS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#20
ActiveSupport::Duration::ISO8601Parser::DATE_MARKER = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#25
ActiveSupport::Duration::ISO8601Parser::DATE_TO_PART = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#16
ActiveSupport::Duration::ISO8601Parser::PERIOD = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#15
ActiveSupport::Duration::ISO8601Parser::PERIOD_OR_COMMA = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#13
class ActiveSupport::Duration::ISO8601Parser::ParsingError < ::ArgumentError; end

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#19
ActiveSupport::Duration::ISO8601Parser::SIGN_MARKER = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#23
ActiveSupport::Duration::ISO8601Parser::TIME_COMPONENT = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#29
ActiveSupport::Duration::ISO8601Parser::TIME_COMPONENTS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#21
ActiveSupport::Duration::ISO8601Parser::TIME_MARKER = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/duration/iso8601_parser.rb#26
ActiveSupport::Duration::ISO8601Parser::TIME_TO_PART = T.let(T.unsafe(nil), Hash)

# Serializes duration to string according to ISO 8601 Duration format.
#
# source://activesupport//lib/active_support/duration/iso8601_serializer.rb#8
class ActiveSupport::Duration::ISO8601Serializer
  # @return [ISO8601Serializer] a new instance of ISO8601Serializer
  #
  # source://activesupport//lib/active_support/duration/iso8601_serializer.rb#11
  def initialize(duration, precision: T.unsafe(nil)); end

  # Builds and returns output string.
  #
  # source://activesupport//lib/active_support/duration/iso8601_serializer.rb#17
  def serialize; end

  private

  # source://activesupport//lib/active_support/duration/iso8601_serializer.rb#58
  def format_seconds(seconds); end

  # Return pair of duration's parts and whole duration sign.
  # Parts are summarized (as they can become repetitive due to addition, etc).
  # Zero parts are removed as not significant.
  # If all parts are negative it will negate all of them and return minus as a sign.
  #
  # source://activesupport//lib/active_support/duration/iso8601_serializer.rb#41
  def normalize; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration/iso8601_serializer.rb#54
  def week_mixed_with_date?(parts); end
end

# source://activesupport//lib/active_support/duration/iso8601_serializer.rb#9
ActiveSupport::Duration::ISO8601Serializer::DATE_COMPONENTS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/duration.rb#129
ActiveSupport::Duration::PARTS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/duration.rb#119
ActiveSupport::Duration::PARTS_IN_SECONDS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/duration.rb#114
ActiveSupport::Duration::SECONDS_PER_DAY = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/duration.rb#113
ActiveSupport::Duration::SECONDS_PER_HOUR = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/duration.rb#112
ActiveSupport::Duration::SECONDS_PER_MINUTE = T.let(T.unsafe(nil), Integer)

# 1/12 of a gregorian year
#
# source://activesupport//lib/active_support/duration.rb#116
ActiveSupport::Duration::SECONDS_PER_MONTH = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/duration.rb#115
ActiveSupport::Duration::SECONDS_PER_WEEK = T.let(T.unsafe(nil), Integer)

# length of a gregorian year (365.2425 days)
#
# source://activesupport//lib/active_support/duration.rb#117
ActiveSupport::Duration::SECONDS_PER_YEAR = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/duration.rb#14
class ActiveSupport::Duration::Scalar < ::Numeric
  # @return [Scalar] a new instance of Scalar
  #
  # source://activesupport//lib/active_support/duration.rb#18
  def initialize(value); end

  # source://activesupport//lib/active_support/duration.rb#84
  def %(other); end

  # source://activesupport//lib/active_support/duration.rb#65
  def *(other); end

  # source://activesupport//lib/active_support/duration.rb#40
  def +(other); end

  # source://activesupport//lib/active_support/duration.rb#52
  def -(other); end

  # source://activesupport//lib/active_support/duration.rb#26
  def -@; end

  # source://activesupport//lib/active_support/duration.rb#76
  def /(other); end

  # source://activesupport//lib/active_support/duration.rb#30
  def <=>(other); end

  # source://activesupport//lib/active_support/duration.rb#22
  def coerce(other); end

  # source://activesupport//lib/active_support/duration.rb#16
  def to_f(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/duration.rb#16
  def to_i(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/duration.rb#16
  def to_s(*_arg0, **_arg1, &_arg2); end

  # Returns the value of attribute value.
  #
  # source://activesupport//lib/active_support/duration.rb#15
  def value; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/duration.rb#92
  def variable?; end

  private

  # source://activesupport//lib/active_support/duration.rb#97
  def calculate(op, other); end

  # @raise [TypeError]
  #
  # source://activesupport//lib/active_support/duration.rb#107
  def raise_type_error(other); end
end

# source://activesupport//lib/active_support/duration.rb#130
ActiveSupport::Duration::VARIABLE_PARTS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/core_ext/range/each.rb#6
module ActiveSupport::EachTimeWithZone
  # source://activesupport//lib/active_support/core_ext/range/each.rb#7
  def each(&block); end

  # source://activesupport//lib/active_support/core_ext/range/each.rb#12
  def step(n = T.unsafe(nil), &block); end

  private

  # @raise [TypeError]
  #
  # source://activesupport//lib/active_support/core_ext/range/each.rb#18
  def ensure_iteration_allowed; end
end

# Provides convenience methods on top of EncryptedFile to access values stored
# as encrypted YAML.
#
# Values can be accessed via +Hash+ methods, such as +fetch+ and +dig+, or via
# dynamic accessor methods, similar to OrderedOptions.
#
#   my_config = ActiveSupport::EncryptedConfiguration.new(...)
#   my_config.read # => "some_secret: 123\nsome_namespace:\n  another_secret: 456"
#
#   my_config[:some_secret]
#   # => 123
#   my_config.some_secret
#   # => 123
#   my_config.dig(:some_namespace, :another_secret)
#   # => 456
#   my_config.some_namespace.another_secret
#   # => 456
#   my_config.fetch(:foo)
#   # => KeyError
#   my_config.foo!
#   # => KeyError
#
# source://activesupport//lib/active_support/encrypted_configuration.rb#32
class ActiveSupport::EncryptedConfiguration < ::ActiveSupport::EncryptedFile
  # @return [EncryptedConfiguration] a new instance of EncryptedConfiguration
  #
  # source://activesupport//lib/active_support/encrypted_configuration.rb#36
  def initialize(config_path:, key_path:, env_key:, raise_if_missing_key:); end

  # source://activesupport//lib/active_support/encrypted_configuration.rb#33
  def [](*_arg0, **_arg1, &_arg2); end

  # Returns the decrypted content as a Hash with symbolized keys.
  #
  #   my_config = ActiveSupport::EncryptedConfiguration.new(...)
  #   my_config.read # => "some_secret: 123\nsome_namespace:\n  another_secret: 456"
  #
  #   my_config.config
  #   # => { some_secret: 123, some_namespace: { another_secret: 789 } }
  #
  # source://activesupport//lib/active_support/encrypted_configuration.rb#63
  def config; end

  # source://activesupport//lib/active_support/encrypted_configuration.rb#33
  def fetch(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/core_ext/module/delegation.rb#302
  def method_missing(method, *args, **_arg2, &block); end

  # Reads the file and returns the decrypted content. See EncryptedFile#read.
  #
  # source://activesupport//lib/active_support/encrypted_configuration.rb#42
  def read; end

  # source://activesupport//lib/active_support/encrypted_configuration.rb#49
  def write(contents); end

  private

  # source://activesupport//lib/active_support/encrypted_configuration.rb#68
  def deep_transform(hash); end

  # source://activesupport//lib/active_support/encrypted_configuration.rb#82
  def deserialize(config); end

  # source://activesupport//lib/active_support/encrypted_configuration.rb#78
  def options; end

  # source://activesupport//lib/active_support/core_ext/module/delegation.rb#294
  def respond_to_missing?(name, include_private = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/encrypted_file.rb#8
class ActiveSupport::EncryptedFile
  # @return [EncryptedFile] a new instance of EncryptedFile
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#42
  def initialize(content_path:, key_path:, env_key:, raise_if_missing_key:); end

  # source://activesupport//lib/active_support/encrypted_file.rb#77
  def change(&block); end

  # Returns the value of attribute content_path.
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#40
  def content_path; end

  # Returns the value of attribute env_key.
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#40
  def env_key; end

  # Returns the encryption key, first trying the environment variable
  # specified by +env_key+, then trying the key file specified by +key_path+.
  # If +raise_if_missing_key+ is true, raises MissingKeyError if the
  # environment variable is not set and the key file does not exist.
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#52
  def key; end

  # Returns the value of attribute key_path.
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#40
  def key_path; end

  # Returns the value of attribute raise_if_missing_key.
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#40
  def raise_if_missing_key; end

  # Reads the file and returns the decrypted content.
  #
  # Raises:
  # - MissingKeyError if the key is missing and +raise_if_missing_key+ is true.
  # - MissingContentError if the encrypted file does not exist or otherwise
  #   if the key is missing.
  # - ActiveSupport::MessageEncryptor::InvalidMessage if the content cannot be
  #   decrypted or verified.
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#64
  def read; end

  # source://activesupport//lib/active_support/encrypted_file.rb#72
  def write(contents); end

  private

  # @raise [InvalidKeyLengthError]
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#125
  def check_key_length; end

  # source://activesupport//lib/active_support/encrypted_file.rb#103
  def decrypt(contents); end

  # source://activesupport//lib/active_support/encrypted_file.rb#98
  def encrypt(contents); end

  # source://activesupport//lib/active_support/encrypted_file.rb#107
  def encryptor; end

  # @raise [MissingKeyError]
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#121
  def handle_missing_key; end

  # source://activesupport//lib/active_support/encrypted_file.rb#112
  def read_env_key; end

  # source://activesupport//lib/active_support/encrypted_file.rb#116
  def read_key_file; end

  # source://activesupport//lib/active_support/encrypted_file.rb#83
  def writing(contents); end

  class << self
    # source://activesupport//lib/active_support/encrypted_file.rb#35
    def expected_key_length; end

    # source://activesupport//lib/active_support/encrypted_file.rb#31
    def generate_key; end
  end
end

# source://activesupport//lib/active_support/encrypted_file.rb#29
ActiveSupport::EncryptedFile::CIPHER = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/encrypted_file.rb#23
class ActiveSupport::EncryptedFile::InvalidKeyLengthError < ::RuntimeError
  # @return [InvalidKeyLengthError] a new instance of InvalidKeyLengthError
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#24
  def initialize; end
end

# source://activesupport//lib/active_support/encrypted_file.rb#9
class ActiveSupport::EncryptedFile::MissingContentError < ::RuntimeError
  # @return [MissingContentError] a new instance of MissingContentError
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#10
  def initialize(content_path); end
end

# source://activesupport//lib/active_support/encrypted_file.rb#15
class ActiveSupport::EncryptedFile::MissingKeyError < ::RuntimeError
  # @return [MissingKeyError] a new instance of MissingKeyError
  #
  # source://activesupport//lib/active_support/encrypted_file.rb#16
  def initialize(key_path:, env_key:); end
end

# source://activesupport//lib/active_support/core_ext/enumerable.rb#4
module ActiveSupport::EnumerableCoreExt; end

# source://activesupport//lib/active_support/core_ext/enumerable.rb#5
module ActiveSupport::EnumerableCoreExt::Constants
  private

  # source://activesupport//lib/active_support/core_ext/enumerable.rb#7
  def const_missing(name); end
end

# HACK: For performance reasons, Enumerable shouldn't have any constants of its own.
# So we move SoleItemExpectedError into ActiveSupport::EnumerableCoreExt.
#
# source://activesupport//lib/active_support/core_ext/enumerable.rb#25
ActiveSupport::EnumerableCoreExt::SoleItemExpectedError = Enumerable::SoleItemExpectedError

# source://activesupport//lib/active_support/environment_inquirer.rb#6
class ActiveSupport::EnvironmentInquirer < ::ActiveSupport::StringInquirer
  # @return [EnvironmentInquirer] a new instance of EnvironmentInquirer
  #
  # source://activesupport//lib/active_support/environment_inquirer.rb#8
  def initialize(env); end

  def development?; end
  def production?; end
  def test?; end
end

# source://activesupport//lib/active_support/environment_inquirer.rb#7
ActiveSupport::EnvironmentInquirer::DEFAULT_ENVIRONMENTS = T.let(T.unsafe(nil), Array)

# +ActiveSupport::ErrorReporter+ is a common interface for error reporting services.
#
# To rescue and report any unhandled error, you can use the +handle+ method:
#
#   Rails.error.handle do
#     do_something!
#   end
#
# If an error is raised, it will be reported and swallowed.
#
# Alternatively if you want to report the error but not swallow it, you can use +record+
#
#   Rails.error.record do
#     do_something!
#   end
#
# Both methods can be restricted to only handle a specific exception class
#
#   maybe_tags = Rails.error.handle(Redis::BaseError) { redis.get("tags") }
#
# You can also pass some extra context information that may be used by the error subscribers:
#
#   Rails.error.handle(context: { section: "admin" }) do
#     # ...
#   end
#
# Additionally a +severity+ can be passed along to communicate how important the error report is.
# +severity+ can be one of +:error+, +:warning+, or +:info+. Handled errors default to the +:warning+
# severity, and unhandled ones to +:error+.
#
# Both +handle+ and +record+ pass through the return value from the block. In the case of +handle+
# rescuing an error, a fallback can be provided. The fallback must be a callable whose result will
# be returned when the block raises and is handled:
#
#   user = Rails.error.handle(fallback: -> { User.anonymous }) do
#     User.find_by(params)
#   end
#
# source://activesupport//lib/active_support/error_reporter.rb#41
class ActiveSupport::ErrorReporter
  # @return [ErrorReporter] a new instance of ErrorReporter
  #
  # source://activesupport//lib/active_support/error_reporter.rb#46
  def initialize(*subscribers, logger: T.unsafe(nil)); end

  # Report any unhandled exception, and swallow it.
  #
  #   Rails.error.handle do
  #     1 + '1'
  #   end
  #
  # source://activesupport//lib/active_support/error_reporter.rb#57
  def handle(error_class = T.unsafe(nil), severity: T.unsafe(nil), context: T.unsafe(nil), fallback: T.unsafe(nil)); end

  # Returns the value of attribute logger.
  #
  # source://activesupport//lib/active_support/error_reporter.rb#44
  def logger; end

  # Sets the attribute logger
  #
  # @param value the value to set the attribute logger to.
  #
  # source://activesupport//lib/active_support/error_reporter.rb#44
  def logger=(_arg0); end

  # source://activesupport//lib/active_support/error_reporter.rb#64
  def record(error_class = T.unsafe(nil), severity: T.unsafe(nil), context: T.unsafe(nil)); end

  # When the block based +handle+ and +record+ methods are not suitable, you can directly use +report+
  #
  #   Rails.error.report(error, handled: true)
  #
  # source://activesupport//lib/active_support/error_reporter.rb#95
  def report(error, handled:, severity: T.unsafe(nil), context: T.unsafe(nil)); end

  # Update the execution context that is accessible to error subscribers
  #
  #   Rails.error.set_context(section: "checkout", user_id: @user.id)
  #
  # See +ActiveSupport::ExecutionContext.set+
  #
  # source://activesupport//lib/active_support/error_reporter.rb#88
  def set_context(*_arg0, **_arg1, &_arg2); end

  # Register a new error subscriber. The subscriber must respond to
  #
  #   report(Exception, handled: Boolean, context: Hash)
  #
  # The +report+ method +should+ never raise an error.
  #
  # source://activesupport//lib/active_support/error_reporter.rb#76
  def subscribe(subscriber); end
end

# source://activesupport//lib/active_support/error_reporter.rb#42
ActiveSupport::ErrorReporter::SEVERITIES = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/execution_context.rb#4
module ActiveSupport::ExecutionContext
  class << self
    # source://activesupport//lib/active_support/execution_context.rb#34
    def []=(key, value); end

    # source://activesupport//lib/active_support/execution_context.rb#7
    def after_change(&block); end

    # source://activesupport//lib/active_support/execution_context.rb#43
    def clear; end

    # Updates the execution context. If a block is given, it resets the provided keys to their
    # previous value once the block exits.
    #
    # source://activesupport//lib/active_support/execution_context.rb#13
    def set(**options); end

    # source://activesupport//lib/active_support/execution_context.rb#39
    def to_h; end

    private

    # source://activesupport//lib/active_support/execution_context.rb#48
    def store; end
  end
end

# source://activesupport//lib/active_support/execution_wrapper.rb#8
class ActiveSupport::ExecutionWrapper
  include ::ActiveSupport::Callbacks
  extend ::ActiveSupport::Callbacks::ClassMethods
  extend ::ActiveSupport::DescendantsTracker

  # source://activesupport//lib/active_support/callbacks.rb#68
  def __callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#68
  def __callbacks?; end

  # source://activesupport//lib/active_support/callbacks.rb#940
  def _complete_callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#940
  def _run_callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#928
  def _run_complete_callbacks(&block); end

  # source://activesupport//lib/active_support/callbacks.rb#928
  def _run_run_callbacks(&block); end

  # source://activesupport//lib/active_support/execution_wrapper.rb#142
  def complete; end

  # Complete this in-flight execution. This method *must* be called
  # exactly once on the result of any call to +run!+.
  #
  # Where possible, prefer +wrap+.
  #
  # source://activesupport//lib/active_support/execution_wrapper.rb#136
  def complete!; end

  # source://activesupport//lib/active_support/execution_wrapper.rb#128
  def run; end

  # source://activesupport//lib/active_support/execution_wrapper.rb#123
  def run!; end

  private

  # source://activesupport//lib/active_support/execution_wrapper.rb#147
  def hook_state; end

  class << self
    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks=(value); end

    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks?; end

    # source://activesupport//lib/active_support/callbacks.rb#932
    def _complete_callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#936
    def _complete_callbacks=(value); end

    # source://activesupport//lib/active_support/callbacks.rb#932
    def _run_callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#936
    def _run_callbacks=(value); end

    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/execution_wrapper.rb#119
    def active?; end

    # source://activesupport//lib/active_support/execution_wrapper.rb#115
    def active_key; end

    # source://activesupport//lib/active_support/execution_wrapper.rb#111
    def error_reporter; end

    # source://activesupport//lib/active_support/execution_wrapper.rb#101
    def perform; end

    # Register an object to be invoked during both the +run+ and
    # +complete+ steps.
    #
    # +hook.complete+ will be passed the value returned from +hook.run+,
    # and will only be invoked if +run+ has previously been called.
    # (Mostly, this means it won't be invoked if an exception occurs in
    # a preceding +to_run+ block; all ordinary +to_complete+ blocks are
    # invoked in that situation.)
    #
    # source://activesupport//lib/active_support/execution_wrapper.rb#51
    def register_hook(hook, outer: T.unsafe(nil)); end

    # Run this execution.
    #
    # Returns an instance, whose +complete!+ method *must* be invoked
    # after the work has been performed.
    #
    # Where possible, prefer +wrap+.
    #
    # source://activesupport//lib/active_support/execution_wrapper.rb#67
    def run!(reset: T.unsafe(nil)); end

    # source://activesupport//lib/active_support/execution_wrapper.rb#22
    def to_complete(*args, &block); end

    # source://activesupport//lib/active_support/execution_wrapper.rb#18
    def to_run(*args, &block); end

    # Perform the work in the supplied block as an execution.
    #
    # source://activesupport//lib/active_support/execution_wrapper.rb#87
    def wrap; end
  end
end

# source://activesupport//lib/active_support/execution_wrapper.rb#33
class ActiveSupport::ExecutionWrapper::CompleteHook < ::Struct
  # source://activesupport//lib/active_support/execution_wrapper.rb#34
  def after(target); end

  # source://activesupport//lib/active_support/execution_wrapper.rb#34
  def before(target); end

  # Returns the value of attribute hook
  #
  # @return [Object] the current value of hook
  def hook; end

  # Sets the attribute hook
  #
  # @param value [Object] the value to set the attribute hook to.
  # @return [Object] the newly set value
  def hook=(_); end

  class << self
    def [](*_arg0); end
    def inspect; end
    def keyword_init?; end
    def members; end
    def new(*_arg0); end
  end
end

# source://activesupport//lib/active_support/execution_wrapper.rb#11
ActiveSupport::ExecutionWrapper::Null = T.let(T.unsafe(nil), Object)

# source://activesupport//lib/active_support/execution_wrapper.rb#26
class ActiveSupport::ExecutionWrapper::RunHook < ::Struct
  # source://activesupport//lib/active_support/execution_wrapper.rb#27
  def before(target); end

  # Returns the value of attribute hook
  #
  # @return [Object] the current value of hook
  def hook; end

  # Sets the attribute hook
  #
  # @param value [Object] the value to set the attribute hook to.
  # @return [Object] the newly set value
  def hook=(_); end

  class << self
    def [](*_arg0); end
    def inspect; end
    def keyword_init?; end
    def members; end
    def new(*_arg0); end
  end
end

# source://activesupport//lib/active_support/executor.rb#6
class ActiveSupport::Executor < ::ActiveSupport::ExecutionWrapper; end

# FileUpdateChecker specifies the API used by Rails to watch files
# and control reloading. The API depends on four methods:
#
# * +initialize+ which expects two parameters and one block as
#   described below.
#
# * +updated?+ which returns a boolean if there were updates in
#   the filesystem or not.
#
# * +execute+ which executes the given block on initialization
#   and updates the latest watched files and timestamp.
#
# * +execute_if_updated+ which just executes the block if it was updated.
#
# After initialization, a call to +execute_if_updated+ must execute
# the block only if there was really a change in the filesystem.
#
# This class is used by Rails to reload the I18n framework whenever
# they are changed upon a new request.
#
#   i18n_reloader = ActiveSupport::FileUpdateChecker.new(paths) do
#     I18n.reload!
#   end
#
#   ActiveSupport::Reloader.to_prepare do
#     i18n_reloader.execute_if_updated
#   end
#
# source://activesupport//lib/active_support/file_update_checker.rb#33
class ActiveSupport::FileUpdateChecker
  # It accepts two parameters on initialization. The first is an array
  # of files and the second is an optional hash of directories. The hash must
  # have directories as keys and the value is an array of extensions to be
  # watched under that directory.
  #
  # This method must also receive a block that will be called once a path
  # changes. The array of files and list of directories cannot be changed
  # after FileUpdateChecker has been initialized.
  #
  # @return [FileUpdateChecker] a new instance of FileUpdateChecker
  #
  # source://activesupport//lib/active_support/file_update_checker.rb#42
  def initialize(files, dirs = T.unsafe(nil), &block); end

  # Executes the given block and updates the latest watched files and
  # timestamp.
  #
  # source://activesupport//lib/active_support/file_update_checker.rb#80
  def execute; end

  # Execute the block given if updated.
  #
  # source://activesupport//lib/active_support/file_update_checker.rb#90
  def execute_if_updated; end

  # Check if any of the entries were updated. If so, the watched and/or
  # updated_at values are cached until the block is executed via +execute+
  # or +execute_if_updated+.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/file_update_checker.rb#61
  def updated?; end

  private

  # source://activesupport//lib/active_support/file_update_checker.rb#156
  def compile_ext(array); end

  # source://activesupport//lib/active_support/file_update_checker.rb#142
  def compile_glob(hash); end

  # source://activesupport//lib/active_support/file_update_checker.rb#152
  def escape(key); end

  # This method returns the maximum mtime of the files in +paths+, or +nil+
  # if the array is empty.
  #
  # Files with a mtime in the future are ignored. Such abnormal situation
  # can happen for example if the user changes the clock by hand. It is
  # healthy to consider this edge case because with mtimes in the future
  # reloading is not triggered.
  #
  # source://activesupport//lib/active_support/file_update_checker.rb#120
  def max_mtime(paths); end

  # source://activesupport//lib/active_support/file_update_checker.rb#109
  def updated_at(paths); end

  # source://activesupport//lib/active_support/file_update_checker.rb#101
  def watched; end
end

# source://activesupport//lib/active_support/fork_tracker.rb#4
module ActiveSupport::ForkTracker
  class << self
    # source://activesupport//lib/active_support/fork_tracker.rb#59
    def after_fork(&block); end

    # source://activesupport//lib/active_support/fork_tracker.rb#40
    def check!; end

    # source://activesupport//lib/active_support/fork_tracker.rb#48
    def hook!; end

    # source://activesupport//lib/active_support/fork_tracker.rb#64
    def unregister(callback); end
  end
end

# source://activesupport//lib/active_support/fork_tracker.rb#15
module ActiveSupport::ForkTracker::CoreExt
  # source://activesupport//lib/active_support/fork_tracker.rb#16
  def fork(*_arg0, **_arg1, &_arg2); end
end

# source://activesupport//lib/active_support/fork_tracker.rb#31
module ActiveSupport::ForkTracker::CoreExtPrivate
  include ::ActiveSupport::ForkTracker::CoreExt

  private

  # source://activesupport//lib/active_support/fork_tracker.rb#16
  def fork(*_arg0, **_arg1, &_arg2); end
end

# source://activesupport//lib/active_support/fork_tracker.rb#5
module ActiveSupport::ForkTracker::ModernCoreExt
  # source://activesupport//lib/active_support/fork_tracker.rb#6
  def _fork; end
end

# A convenient wrapper for the zlib standard library that allows
# compression/decompression of strings with gzip.
#
#   gzip = ActiveSupport::Gzip.compress('compress me!')
#   # => "\x1F\x8B\b\x00o\x8D\xCDO\x00\x03K\xCE\xCF-(J-.V\xC8MU\x04\x00R>n\x83\f\x00\x00\x00"
#
#   ActiveSupport::Gzip.decompress(gzip)
#   # => "compress me!"
#
# source://activesupport//lib/active_support/gzip.rb#15
module ActiveSupport::Gzip
  class << self
    # Compresses a string using gzip.
    #
    # source://activesupport//lib/active_support/gzip.rb#30
    def compress(source, level = T.unsafe(nil), strategy = T.unsafe(nil)); end

    # Decompresses a gzipped string.
    #
    # source://activesupport//lib/active_support/gzip.rb#25
    def decompress(source); end
  end
end

# source://activesupport//lib/active_support/gzip.rb#16
class ActiveSupport::Gzip::Stream < ::StringIO
  # @return [Stream] a new instance of Stream
  #
  # source://activesupport//lib/active_support/gzip.rb#17
  def initialize(*_arg0); end

  # source://activesupport//lib/active_support/gzip.rb#21
  def close; end
end

# Implements a hash where keys <tt>:foo</tt> and <tt>"foo"</tt> are considered
# to be the same.
#
#   rgb = ActiveSupport::HashWithIndifferentAccess.new
#
#   rgb[:black] = '#000000'
#   rgb[:black]  # => '#000000'
#   rgb['black'] # => '#000000'
#
#   rgb['white'] = '#FFFFFF'
#   rgb[:white]  # => '#FFFFFF'
#   rgb['white'] # => '#FFFFFF'
#
# Internally symbols are mapped to strings when used as keys in the entire
# writing interface (calling <tt>[]=</tt>, <tt>merge</tt>, etc). This
# mapping belongs to the public interface. For example, given:
#
#   hash = ActiveSupport::HashWithIndifferentAccess.new(a: 1)
#
# You are guaranteed that the key is returned as a string:
#
#   hash.keys # => ["a"]
#
# Technically other types of keys are accepted:
#
#   hash = ActiveSupport::HashWithIndifferentAccess.new(a: 1)
#   hash[0] = 0
#   hash # => {"a"=>1, 0=>0}
#
# but this class is intended for use cases where strings or symbols are the
# expected keys and it is convenient to understand both as the same. For
# example the +params+ hash in Ruby on Rails.
#
# Note that core extensions define <tt>Hash#with_indifferent_access</tt>:
#
#   rgb = { black: '#000000', white: '#FFFFFF' }.with_indifferent_access
#
# which may be handy.
#
# To access this class outside of Rails, require the core extension with:
#
#   require "active_support/core_ext/hash/indifferent_access"
#
# which will, in turn, require this file.
#
# source://activesupport//lib/active_support/hash_with_indifferent_access.rb#53
class ActiveSupport::HashWithIndifferentAccess < ::Hash
  # @return [HashWithIndifferentAccess] a new instance of HashWithIndifferentAccess
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#68
  def initialize(constructor = T.unsafe(nil)); end

  # Same as <tt>Hash#[]</tt> where the key passed as argument can be
  # either a string or a symbol:
  #
  #   counters = ActiveSupport::HashWithIndifferentAccess.new
  #   counters[:foo] = 1
  #
  #   counters['foo'] # => 1
  #   counters[:foo]  # => 1
  #   counters[:zoo]  # => nil
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#166
  def [](key); end

  # Assigns a new value to the hash:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash[:key] = 'value'
  #
  # This value can be later fetched using either +:key+ or <tt>'key'</tt>.
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#96
  def []=(key, value); end

  # Same as <tt>Hash#assoc</tt> where the key passed as argument can be
  # either a string or a symbol:
  #
  #   counters = ActiveSupport::HashWithIndifferentAccess.new
  #   counters[:foo] = 1
  #
  #   counters.assoc('foo') # => ["foo", 1]
  #   counters.assoc(:foo)  # => ["foo", 1]
  #   counters.assoc(:zoo)  # => nil
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#179
  def assoc(key); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#357
  def compact; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#311
  def deep_stringify_keys; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#309
  def deep_stringify_keys!; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#316
  def deep_symbolize_keys; end

  # Same as <tt>Hash#default</tt> where the key passed as argument can be
  # either a string or a symbol:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new(1)
  #   hash.default                   # => 1
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new { |hash, key| key }
  #   hash.default                   # => nil
  #   hash.default('foo')            # => 'foo'
  #   hash.default(:foo)             # => 'foo'
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#221
  def default(*args); end

  # Removes the specified key from the hash.
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#295
  def delete(key); end

  # Same as <tt>Hash#dig</tt> where the key passed as argument can be
  # either a string or a symbol:
  #
  #   counters = ActiveSupport::HashWithIndifferentAccess.new
  #   counters[:foo] = { bar: 1 }
  #
  #   counters.dig('foo', 'bar')     # => 1
  #   counters.dig(:foo, :bar)       # => 1
  #   counters.dig(:zoo)             # => nil
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#206
  def dig(*args); end

  # Returns a shallow copy of the hash.
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new({ a: { b: 'b' } })
  #   dup  = hash.dup
  #   dup[:a][:c] = 'c'
  #
  #   hash[:a][:c] # => "c"
  #   dup[:a][:c]  # => "c"
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#256
  def dup; end

  # Returns a hash with indifferent access that includes everything except given keys.
  #   hash = { a: "x", b: "y", c: 10 }.with_indifferent_access
  #   hash.except(:a, "b") # => {c: 10}.with_indifferent_access
  #   hash                 # => { a: "x", b: "y", c: 10 }.with_indifferent_access
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#303
  def except(*keys); end

  # Returns +true+ so that <tt>Array#extract_options!</tt> finds members of
  # this class.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#56
  def extractable_options?; end

  # Same as <tt>Hash#fetch</tt> where the key passed as argument can be
  # either a string or a symbol:
  #
  #   counters = ActiveSupport::HashWithIndifferentAccess.new
  #   counters[:foo] = 1
  #
  #   counters.fetch('foo')          # => 1
  #   counters.fetch(:bar, 0)        # => 0
  #   counters.fetch(:bar) { |key| 0 } # => 0
  #   counters.fetch(:zoo)           # => KeyError: key not found: "zoo"
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#193
  def fetch(key, *extras); end

  # Returns an array of the values at the specified indices, but also
  # raises an exception when one of the keys can't be found.
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash[:a] = 'x'
  #   hash[:b] = 'y'
  #   hash.fetch_values('a', 'b') # => ["x", "y"]
  #   hash.fetch_values('a', 'c') { |key| 'z' } # => ["x", "z"]
  #   hash.fetch_values('a', 'c') # => KeyError: key not found: "c"
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#244
  def fetch_values(*indices, &block); end

  # Checks the hash for a key matching the argument passed in:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash['key'] = 'value'
  #   hash.key?(:key)  # => true
  #   hash.key?('key') # => true
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#149
  def has_key?(key); end

  # Checks the hash for a key matching the argument passed in:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash['key'] = 'value'
  #   hash.key?(:key)  # => true
  #   hash.key?('key') # => true
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#149
  def include?(key); end

  # Checks the hash for a key matching the argument passed in:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash['key'] = 'value'
  #   hash.key?(:key)  # => true
  #   hash.key?('key') # => true
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#149
  def key?(key); end

  # Checks the hash for a key matching the argument passed in:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash['key'] = 'value'
  #   hash.key?(:key)  # => true
  #   hash.key?('key') # => true
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#149
  def member?(key); end

  # This method has the same semantics of +update+, except it does not
  # modify the receiver but rather returns a new hash with indifferent
  # access with the result of the merge.
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#265
  def merge(*hashes, &block); end

  # Updates the receiver in-place, merging in the hashes passed as arguments:
  #
  #   hash_1 = ActiveSupport::HashWithIndifferentAccess.new
  #   hash_1[:key] = 'value'
  #
  #   hash_2 = ActiveSupport::HashWithIndifferentAccess.new
  #   hash_2[:key] = 'New Value!'
  #
  #   hash_1.update(hash_2) # => {"key"=>"New Value!"}
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash.update({ "a" => 1 }, { "b" => 2 }) # => { "a" => 1, "b" => 2 }
  #
  # The arguments can be either an
  # <tt>ActiveSupport::HashWithIndifferentAccess</tt> or a regular +Hash+.
  # In either case the merge respects the semantics of indifferent access.
  #
  # If the argument is a regular hash with keys +:key+ and <tt>"key"</tt> only one
  # of the values end up in the receiver, but which one is unspecified.
  #
  # When given a block, the value for duplicated keys will be determined
  # by the result of invoking the block with the duplicated key, the value
  # in the receiver, and the value in +other_hash+. The rules for duplicated
  # keys follow the semantics of indifferent access:
  #
  #   hash_1[:key] = 10
  #   hash_2['key'] = 12
  #   hash_1.update(hash_2) { |key, old, new| old + new } # => {"key"=>22}
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#130
  def merge!(*other_hashes, &block); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#64
  def nested_under_indifferent_access; end

  def regular_update(*_arg0); end
  def regular_writer(_arg0, _arg1); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#324
  def reject(*args, &block); end

  # Replaces the contents of this hash with other_hash.
  #
  #   h = { "a" => 100, "b" => 200 }
  #   h.replace({ "c" => 300, "d" => 400 }) # => {"c"=>300, "d"=>400}
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#290
  def replace(other_hash); end

  # Like +merge+ but the other way around: Merges the receiver into the
  # argument and returns a new hash with indifferent access as result:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash['a'] = nil
  #   hash.reverse_merge(a: 0, b: 1) # => {"a"=>nil, "b"=>1}
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#275
  def reverse_merge(other_hash); end

  # Same semantics as +reverse_merge+ but modifies the receiver in-place.
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#281
  def reverse_merge!(other_hash); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#319
  def select(*args, &block); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#347
  def slice(*keys); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#352
  def slice!(*keys); end

  # Assigns a new value to the hash:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash[:key] = 'value'
  #
  # This value can be later fetched using either +:key+ or <tt>'key'</tt>.
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#96
  def store(key, value); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#310
  def stringify_keys; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#308
  def stringify_keys!; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#314
  def symbolize_keys; end

  # Convert to a regular hash with string keys.
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#362
  def to_hash; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#314
  def to_options; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#317
  def to_options!; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#334
  def transform_keys(*args, &block); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#339
  def transform_keys!; end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#329
  def transform_values(*args, &block); end

  # Updates the receiver in-place, merging in the hashes passed as arguments:
  #
  #   hash_1 = ActiveSupport::HashWithIndifferentAccess.new
  #   hash_1[:key] = 'value'
  #
  #   hash_2 = ActiveSupport::HashWithIndifferentAccess.new
  #   hash_2[:key] = 'New Value!'
  #
  #   hash_1.update(hash_2) # => {"key"=>"New Value!"}
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash.update({ "a" => 1 }, { "b" => 2 }) # => { "a" => 1, "b" => 2 }
  #
  # The arguments can be either an
  # <tt>ActiveSupport::HashWithIndifferentAccess</tt> or a regular +Hash+.
  # In either case the merge respects the semantics of indifferent access.
  #
  # If the argument is a regular hash with keys +:key+ and <tt>"key"</tt> only one
  # of the values end up in the receiver, but which one is unspecified.
  #
  # When given a block, the value for duplicated keys will be determined
  # by the result of invoking the block with the duplicated key, the value
  # in the receiver, and the value in +other_hash+. The rules for duplicated
  # keys follow the semantics of indifferent access:
  #
  #   hash_1[:key] = 10
  #   hash_2['key'] = 12
  #   hash_1.update(hash_2) { |key, old, new| old + new } # => {"key"=>22}
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#130
  def update(*other_hashes, &block); end

  # Returns an array of the values at the specified indices:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash[:a] = 'x'
  #   hash[:b] = 'y'
  #   hash.values_at('a', 'b') # => ["x", "y"]
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#231
  def values_at(*keys); end

  # Like +merge+ but the other way around: Merges the receiver into the
  # argument and returns a new hash with indifferent access as result:
  #
  #   hash = ActiveSupport::HashWithIndifferentAccess.new
  #   hash['a'] = nil
  #   hash.reverse_merge(a: 0, b: 1) # => {"a"=>nil, "b"=>1}
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#275
  def with_defaults(other_hash); end

  # Same semantics as +reverse_merge+ but modifies the receiver in-place.
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#281
  def with_defaults!(other_hash); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#60
  def with_indifferent_access; end

  # Returns a hash with indifferent access that includes everything except given keys.
  #   hash = { a: "x", b: "y", c: 10 }.with_indifferent_access
  #   hash.except(:a, "b") # => {c: 10}.with_indifferent_access
  #   hash                 # => { a: "x", b: "y", c: 10 }.with_indifferent_access
  #
  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#303
  def without(*keys); end

  private

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#374
  def convert_key(key); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#383
  def convert_value(value, conversion: T.unsafe(nil)); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#400
  def set_defaults(target); end

  # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#408
  def update_with_single_argument(other_hash, block); end

  class << self
    # source://activesupport//lib/active_support/hash_with_indifferent_access.rb#83
    def [](*args); end
  end
end

# source://activesupport//lib/active_support/html_safe_translation.rb#4
module ActiveSupport::HtmlSafeTranslation
  extend ::ActiveSupport::HtmlSafeTranslation

  # source://activesupport//lib/active_support/html_safe_translation.rb#7
  def translate(key, **options); end

  private

  # source://activesupport//lib/active_support/html_safe_translation.rb#22
  def html_escape_translation_options(options); end

  # source://activesupport//lib/active_support/html_safe_translation.rb#35
  def html_safe_translation(translation); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/html_safe_translation.rb#18
  def html_safe_translation_key?(key); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/html_safe_translation.rb#30
  def i18n_option?(name); end
end

# The Inflector transforms words from singular to plural, class names to table
# names, modularized class names to ones without, and class names to foreign
# keys. The default inflections for pluralization, singularization, and
# uncountable words are kept in inflections.rb.
#
# The Rails core team has stated patches for the inflections library will not
# be accepted in order to avoid breaking legacy applications which may be
# relying on errant inflections. If you discover an incorrect inflection and
# require it for your application or wish to define rules for languages other
# than English, please correct or add them yourself (explained below).
#
# source://activesupport//lib/active_support/inflector/inflections.rb#7
module ActiveSupport::Inflector
  extend ::ActiveSupport::Inflector

  # Converts strings to UpperCamelCase.
  # If the +uppercase_first_letter+ parameter is set to false, then produces
  # lowerCamelCase.
  #
  # Also converts '/' to '::' which is useful for converting
  # paths to namespaces.
  #
  #   camelize('active_model')                # => "ActiveModel"
  #   camelize('active_model', false)         # => "activeModel"
  #   camelize('active_model/errors')         # => "ActiveModel::Errors"
  #   camelize('active_model/errors', false)  # => "activeModel::Errors"
  #
  # As a rule of thumb you can think of +camelize+ as the inverse of
  # #underscore, though there are cases where that does not hold:
  #
  #   camelize(underscore('SSLError'))        # => "SslError"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#69
  def camelize(term, uppercase_first_letter = T.unsafe(nil)); end

  # Creates a class name from a plural table name like Rails does for table
  # names to models. Note that this returns a string and not a Class. (To
  # convert to an actual class follow +classify+ with #constantize.)
  #
  #   classify('ham_and_eggs') # => "HamAndEgg"
  #   classify('posts')        # => "Post"
  #
  # Singular names are not handled correctly:
  #
  #   classify('calculus')     # => "Calculu"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#208
  def classify(table_name); end

  # Tries to find a constant with the name specified in the argument string.
  #
  #   constantize('Module')   # => Module
  #   constantize('Foo::Bar') # => Foo::Bar
  #
  # The name is assumed to be the one of a top-level constant, no matter
  # whether it starts with "::" or not. No lexical context is taken into
  # account:
  #
  #   C = 'outside'
  #   module M
  #     C = 'inside'
  #     C                # => 'inside'
  #     constantize('C') # => 'outside', same as ::C
  #   end
  #
  # NameError is raised when the name is not in CamelCase or the constant is
  # unknown.
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#279
  def constantize(camel_cased_word); end

  # Replaces underscores with dashes in the string.
  #
  #   dasherize('puni_puni') # => "puni-puni"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#216
  def dasherize(underscored_word); end

  # Removes the rightmost segment from the constant expression in the string.
  #
  #   deconstantize('Net::HTTP')   # => "Net"
  #   deconstantize('::Net::HTTP') # => "::Net"
  #   deconstantize('String')      # => ""
  #   deconstantize('::String')    # => ""
  #   deconstantize('')            # => ""
  #
  # See also #demodulize.
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#246
  def deconstantize(path); end

  # Removes the module part from the expression in the string.
  #
  #   demodulize('ActiveSupport::Inflector::Inflections') # => "Inflections"
  #   demodulize('Inflections')                           # => "Inflections"
  #   demodulize('::Inflections')                         # => "Inflections"
  #   demodulize('')                                      # => ""
  #
  # See also #deconstantize.
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#228
  def demodulize(path); end

  # Creates a foreign key name from a class name.
  # +separate_class_name_and_id_with_underscore+ sets whether
  # the method should put '_' between the name and 'id'.
  #
  #   foreign_key('Message')        # => "message_id"
  #   foreign_key('Message', false) # => "messageid"
  #   foreign_key('Admin::Post')    # => "post_id"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#257
  def foreign_key(class_name, separate_class_name_and_id_with_underscore = T.unsafe(nil)); end

  # Tweaks an attribute name for display to end users.
  #
  # Specifically, performs these transformations:
  #
  # * Applies human inflection rules to the argument.
  # * Deletes leading underscores, if any.
  # * Removes an "_id" suffix if present.
  # * Replaces underscores with spaces, if any.
  # * Downcases all words except acronyms.
  # * Capitalizes the first word.
  # The capitalization of the first word can be turned off by setting the
  # +:capitalize+ option to false (default is true).
  #
  # The trailing '_id' can be kept and capitalized by setting the
  # optional parameter +keep_id_suffix+ to true (default is false).
  #
  #   humanize('employee_salary')                  # => "Employee salary"
  #   humanize('author_id')                        # => "Author"
  #   humanize('author_id', capitalize: false)     # => "author"
  #   humanize('_id')                              # => "Id"
  #   humanize('author_id', keep_id_suffix: true)  # => "Author id"
  #
  # If "SSL" was defined to be an acronym:
  #
  #   humanize('ssl_error') # => "SSL error"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#132
  def humanize(lower_case_and_underscored_word, capitalize: T.unsafe(nil), keep_id_suffix: T.unsafe(nil)); end

  # Yields a singleton instance of Inflector::Inflections so you can specify
  # additional inflector rules. If passed an optional locale, rules for other
  # languages can be specified. If not specified, defaults to <tt>:en</tt>.
  # Only rules for English are provided.
  #
  #   ActiveSupport::Inflector.inflections(:en) do |inflect|
  #     inflect.uncountable 'rails'
  #   end
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#263
  def inflections(locale = T.unsafe(nil)); end

  # Returns the suffix that should be added to a number to denote the position
  # in an ordered sequence such as 1st, 2nd, 3rd, 4th.
  #
  #   ordinal(1)     # => "st"
  #   ordinal(2)     # => "nd"
  #   ordinal(1002)  # => "nd"
  #   ordinal(1003)  # => "rd"
  #   ordinal(-11)   # => "th"
  #   ordinal(-1021) # => "st"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#324
  def ordinal(number); end

  # Turns a number into an ordinal string used to denote the position in an
  # ordered sequence such as 1st, 2nd, 3rd, 4th.
  #
  #   ordinalize(1)     # => "1st"
  #   ordinalize(2)     # => "2nd"
  #   ordinalize(1002)  # => "1002nd"
  #   ordinalize(1003)  # => "1003rd"
  #   ordinalize(-11)   # => "-11th"
  #   ordinalize(-1021) # => "-1021st"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#337
  def ordinalize(number); end

  # Replaces special characters in a string so that it may be used as part of
  # a 'pretty' URL.
  #
  #   parameterize("Donald E. Knuth") # => "donald-e-knuth"
  #   parameterize("^très|Jolie-- ")  # => "tres-jolie"
  #
  # To use a custom separator, override the +separator+ argument.
  #
  #   parameterize("Donald E. Knuth", separator: '_') # => "donald_e_knuth"
  #   parameterize("^très|Jolie__ ", separator: '_')  # => "tres_jolie"
  #
  # To preserve the case of the characters in a string, use the +preserve_case+ argument.
  #
  #   parameterize("Donald E. Knuth", preserve_case: true) # => "Donald-E-Knuth"
  #   parameterize("^très|Jolie-- ", preserve_case: true) # => "tres-Jolie"
  #
  # It preserves dashes and underscores unless they are used as separators:
  #
  #   parameterize("^très|Jolie__ ")                 # => "tres-jolie__"
  #   parameterize("^très|Jolie-- ", separator: "_") # => "tres_jolie--"
  #   parameterize("^très_Jolie-- ", separator: ".") # => "tres_jolie--"
  #
  # If the optional parameter +locale+ is specified,
  # the word will be parameterized as a word of that language.
  # By default, this parameter is set to <tt>nil</tt> and it will use
  # the configured <tt>I18n.locale</tt>.
  #
  # source://activesupport//lib/active_support/inflector/transliterate.rb#121
  def parameterize(string, separator: T.unsafe(nil), preserve_case: T.unsafe(nil), locale: T.unsafe(nil)); end

  # Returns the plural form of the word in the string.
  #
  # If passed an optional +locale+ parameter, the word will be
  # pluralized using rules defined for that language. By default,
  # this parameter is set to <tt>:en</tt>.
  #
  #   pluralize('post')             # => "posts"
  #   pluralize('octopus')          # => "octopi"
  #   pluralize('sheep')            # => "sheep"
  #   pluralize('words')            # => "words"
  #   pluralize('CamelOctopus')     # => "CamelOctopi"
  #   pluralize('ley', :es)         # => "leyes"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#32
  def pluralize(word, locale = T.unsafe(nil)); end

  # Tries to find a constant with the name specified in the argument string.
  #
  #   safe_constantize('Module')   # => Module
  #   safe_constantize('Foo::Bar') # => Foo::Bar
  #
  # The name is assumed to be the one of a top-level constant, no matter
  # whether it starts with "::" or not. No lexical context is taken into
  # account:
  #
  #   C = 'outside'
  #   module M
  #     C = 'inside'
  #     C                     # => 'inside'
  #     safe_constantize('C') # => 'outside', same as ::C
  #   end
  #
  # +nil+ is returned when the name is not in CamelCase or the constant (or
  # part of it) is unknown.
  #
  #   safe_constantize('blargle')                  # => nil
  #   safe_constantize('UnknownModule')            # => nil
  #   safe_constantize('UnknownModule::Foo::Bar')  # => nil
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#305
  def safe_constantize(camel_cased_word); end

  # The reverse of #pluralize, returns the singular form of a word in a
  # string.
  #
  # If passed an optional +locale+ parameter, the word will be
  # singularized using rules defined for that language. By default,
  # this parameter is set to <tt>:en</tt>.
  #
  #   singularize('posts')            # => "post"
  #   singularize('octopi')           # => "octopus"
  #   singularize('sheep')            # => "sheep"
  #   singularize('word')             # => "word"
  #   singularize('CamelOctopi')      # => "CamelOctopus"
  #   singularize('leyes', :es)       # => "ley"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#49
  def singularize(word, locale = T.unsafe(nil)); end

  # Creates the name of a table like Rails does for models to table names.
  # This method uses the #pluralize method on the last word in the string.
  #
  #   tableize('RawScaledScorer') # => "raw_scaled_scorers"
  #   tableize('ham_and_egg')     # => "ham_and_eggs"
  #   tableize('fancyCategory')   # => "fancy_categories"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#194
  def tableize(class_name); end

  # Capitalizes all the words and replaces some characters in the string to
  # create a nicer looking title. +titleize+ is meant for creating pretty
  # output. It is not used in the Rails internals.
  #
  # The trailing '_id','Id'.. can be kept and capitalized by setting the
  # optional parameter +keep_id_suffix+ to true.
  # By default, this parameter is false.
  #
  # +titleize+ is also aliased as +titlecase+.
  #
  #   titleize('man from the boondocks')                       # => "Man From The Boondocks"
  #   titleize('x-men: the last stand')                        # => "X Men: The Last Stand"
  #   titleize('TheManWithoutAPast')                           # => "The Man Without A Past"
  #   titleize('raiders_of_the_lost_ark')                      # => "Raiders Of The Lost Ark"
  #   titleize('string_ending_with_id', keep_id_suffix: true)  # => "String Ending With Id"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#182
  def titleize(word, keep_id_suffix: T.unsafe(nil)); end

  # Replaces non-ASCII characters with an ASCII approximation, or if none
  # exists, a replacement character which defaults to "?".
  #
  #    transliterate('Ærøskøbing')
  #    # => "AEroskobing"
  #
  # Default approximations are provided for Western/Latin characters,
  # e.g, "ø", "ñ", "é", "ß", etc.
  #
  # This method is I18n aware, so you can set up custom approximations for a
  # locale. This can be useful, for example, to transliterate German's "ü"
  # and "ö" to "ue" and "oe", or to add support for transliterating Russian
  # to ASCII.
  #
  # In order to make your custom transliterations available, you must set
  # them as the <tt>i18n.transliterate.rule</tt> i18n key:
  #
  #   # Store the transliterations in locales/de.yml
  #   i18n:
  #     transliterate:
  #       rule:
  #         ü: "ue"
  #         ö: "oe"
  #
  #   # Or set them using Ruby
  #   I18n.backend.store_translations(:de, i18n: {
  #     transliterate: {
  #       rule: {
  #         'ü' => 'ue',
  #         'ö' => 'oe'
  #       }
  #     }
  #   })
  #
  # The value for <tt>i18n.transliterate.rule</tt> can be a simple Hash that
  # maps characters to ASCII approximations as shown above, or, for more
  # complex requirements, a Proc:
  #
  #   I18n.backend.store_translations(:de, i18n: {
  #     transliterate: {
  #       rule: ->(string) { MyTransliterator.transliterate(string) }
  #     }
  #   })
  #
  # Now you can have different transliterations for each locale:
  #
  #   transliterate('Jürgen', locale: :en)
  #   # => "Jurgen"
  #
  #   transliterate('Jürgen', locale: :de)
  #   # => "Juergen"
  #
  # Transliteration is restricted to UTF-8, US-ASCII, and GB18030 strings.
  # Other encodings will raise an ArgumentError.
  #
  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/inflector/transliterate.rb#64
  def transliterate(string, replacement = T.unsafe(nil), locale: T.unsafe(nil)); end

  # Makes an underscored, lowercase form from the expression in the string.
  #
  # Changes '::' to '/' to convert namespaces to paths.
  #
  #   underscore('ActiveModel')         # => "active_model"
  #   underscore('ActiveModel::Errors') # => "active_model/errors"
  #
  # As a rule of thumb you can think of +underscore+ as the inverse of
  # #camelize, though there are cases where that does not hold:
  #
  #   camelize(underscore('SSLError'))  # => "SslError"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#96
  def underscore(camel_cased_word); end

  # Converts just the first character to uppercase.
  #
  #   upcase_first('what a Lovely Day') # => "What a Lovely Day"
  #   upcase_first('w')                 # => "W"
  #   upcase_first('')                  # => ""
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#163
  def upcase_first(string); end

  private

  # Applies inflection rules for +singularize+ and +pluralize+.
  #
  # If passed an optional +locale+ parameter, the uncountables will be
  # found for that locale.
  #
  #   apply_inflections('post', inflections.plurals, :en)    # => "posts"
  #   apply_inflections('posts', inflections.singulars, :en) # => "post"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#366
  def apply_inflections(word, rules, locale = T.unsafe(nil)); end

  # Mounts a regular expression, returned as a string to ease interpolation,
  # that will match part by part the given constant.
  #
  #   const_regexp("Foo::Bar::Baz") # => "Foo(::Bar(::Baz)?)?"
  #   const_regexp("::")            # => "::"
  #
  # source://activesupport//lib/active_support/inflector/methods.rb#347
  def const_regexp(camel_cased_word); end
end

# source://activesupport//lib/active_support/inflector/transliterate.rb#8
ActiveSupport::Inflector::ALLOWED_ENCODINGS_FOR_TRANSLITERATE = T.let(T.unsafe(nil), Array)

# A singleton instance of this class is yielded by Inflector.inflections,
# which can then be used to specify additional inflection rules. If passed
# an optional locale, rules for other languages can be specified. The
# default locale is <tt>:en</tt>. Only rules for English are provided.
#
#   ActiveSupport::Inflector.inflections(:en) do |inflect|
#     inflect.plural /^(ox)$/i, '\1\2en'
#     inflect.singular /^(ox)en/i, '\1'
#
#     inflect.irregular 'cactus', 'cacti'
#
#     inflect.uncountable 'equipment'
#   end
#
# New rules are added at the top. So in the example above, the irregular
# rule for cactus will now be the first of the pluralization and
# singularization rules that is runs. This guarantees that your rules run
# before any of the rules that may already have been loaded.
#
# source://activesupport//lib/active_support/inflector/inflections.rb#28
class ActiveSupport::Inflector::Inflections
  # @return [Inflections] a new instance of Inflections
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#78
  def initialize; end

  # Specifies a new acronym. An acronym must be specified as it will appear
  # in a camelized string. An underscore string that contains the acronym
  # will retain the acronym when passed to +camelize+, +humanize+, or
  # +titleize+. A camelized string that contains the acronym will maintain
  # the acronym when titleized or humanized, and will convert the acronym
  # into a non-delimited single lowercase word when passed to +underscore+.
  #
  #   acronym 'HTML'
  #   titleize 'html'     # => 'HTML'
  #   camelize 'html'     # => 'HTML'
  #   underscore 'MyHTML' # => 'my_html'
  #
  # The acronym, however, must occur as a delimited unit and not be part of
  # another word for conversions to recognize it:
  #
  #   acronym 'HTTP'
  #   camelize 'my_http_delimited' # => 'MyHTTPDelimited'
  #   camelize 'https'             # => 'Https', not 'HTTPs'
  #   underscore 'HTTPS'           # => 'http_s', not 'https'
  #
  #   acronym 'HTTPS'
  #   camelize 'https'   # => 'HTTPS'
  #   underscore 'HTTPS' # => 'https'
  #
  # Note: Acronyms that are passed to +pluralize+ will no longer be
  # recognized, since the acronym will not occur as a delimited unit in the
  # pluralized result. To work around this, you must specify the pluralized
  # form as an acronym as well:
  #
  #    acronym 'API'
  #    camelize(pluralize('api')) # => 'Apis'
  #
  #    acronym 'APIs'
  #    camelize(pluralize('api')) # => 'APIs'
  #
  # +acronym+ may be used to specify any word that contains an acronym or
  # otherwise needs to maintain a non-standard capitalization. The only
  # restriction is that the word must begin with a capital letter.
  #
  #   acronym 'RESTful'
  #   underscore 'RESTful'           # => 'restful'
  #   underscore 'RESTfulController' # => 'restful_controller'
  #   titleize 'RESTfulController'   # => 'RESTful Controller'
  #   camelize 'restful'             # => 'RESTful'
  #   camelize 'restful_controller'  # => 'RESTfulController'
  #
  #   acronym 'McDonald'
  #   underscore 'McDonald' # => 'mcdonald'
  #   camelize 'mcdonald'   # => 'McDonald'
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#140
  def acronym(word); end

  # Returns the value of attribute acronyms.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#74
  def acronyms; end

  # source://activesupport//lib/active_support/inflector/inflections.rb#76
  def acronyms_camelize_regex; end

  # source://activesupport//lib/active_support/inflector/inflections.rb#76
  def acronyms_underscore_regex; end

  # Clears the loaded inflections within a given scope (default is
  # <tt>:all</tt>). Give the scope as a symbol of the inflection type, the
  # options are: <tt>:plurals</tt>, <tt>:singulars</tt>, <tt>:uncountables</tt>,
  # <tt>:humans</tt>, <tt>:acronyms</tt>.
  #
  #   clear :all
  #   clear :plurals
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#229
  def clear(scope = T.unsafe(nil)); end

  # Specifies a humanized form of a string by a regular expression rule or
  # by a string mapping. When using a regular expression based replacement,
  # the normal humanize formatting is called after the replacement. When a
  # string is used, the human form should be specified as desired (example:
  # 'The name', not 'the_name').
  #
  #   human /_cnt$/i, '\1_count'
  #   human 'legacy_col_person_name', 'Name'
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#218
  def human(rule, replacement); end

  # Returns the value of attribute humans.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#74
  def humans; end

  # Specifies a new irregular that applies to both pluralization and
  # singularization at the same time. This can only be used for strings, not
  # regular expressions. You simply pass the irregular in singular and
  # plural form.
  #
  #   irregular 'cactus', 'cacti'
  #   irregular 'person', 'people'
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#172
  def irregular(singular, plural); end

  # Specifies a new pluralization rule and its replacement. The rule can
  # either be a string or a regular expression. The replacement should
  # always be a string that may include references to the matched data from
  # the rule.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#149
  def plural(rule, replacement); end

  # Returns the value of attribute plurals.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#74
  def plurals; end

  # Specifies a new singularization rule and its replacement. The rule can
  # either be a string or a regular expression. The replacement should
  # always be a string that may include references to the matched data from
  # the rule.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#159
  def singular(rule, replacement); end

  # Returns the value of attribute singulars.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#74
  def singulars; end

  # Specifies words that are uncountable and should not be inflected.
  #
  #   uncountable 'money'
  #   uncountable 'money', 'information'
  #   uncountable %w( money information rice )
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#206
  def uncountable(*words); end

  # Returns the value of attribute uncountables.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#74
  def uncountables; end

  private

  # source://activesupport//lib/active_support/inflector/inflections.rb#248
  def define_acronym_regex_patterns; end

  # Private, for the test suite.
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#84
  def initialize_dup(orig); end

  class << self
    # source://activesupport//lib/active_support/inflector/inflections.rb#63
    def instance(locale = T.unsafe(nil)); end

    # source://activesupport//lib/active_support/inflector/inflections.rb#67
    def instance_or_fallback(locale); end
  end
end

# source://activesupport//lib/active_support/inflector/inflections.rb#31
class ActiveSupport::Inflector::Inflections::Uncountables < ::Array
  # @return [Uncountables] a new instance of Uncountables
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#32
  def initialize; end

  # source://activesupport//lib/active_support/inflector/inflections.rb#42
  def <<(*word); end

  # source://activesupport//lib/active_support/inflector/inflections.rb#46
  def add(words); end

  # source://activesupport//lib/active_support/inflector/inflections.rb#37
  def delete(entry); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/inflector/inflections.rb#53
  def uncountable?(str); end

  private

  # source://activesupport//lib/active_support/inflector/inflections.rb#58
  def to_regex(string); end
end

# +InheritableOptions+ provides a constructor to build an OrderedOptions
# hash inherited from another hash.
#
# Use this if you already have some hash and you want to create a new one based on it.
#
#   h = ActiveSupport::InheritableOptions.new({ girl: 'Mary', boy: 'John' })
#   h.girl # => 'Mary'
#   h.boy  # => 'John'
#
# source://activesupport//lib/active_support/ordered_options.rb#79
class ActiveSupport::InheritableOptions < ::ActiveSupport::OrderedOptions
  # @return [InheritableOptions] a new instance of InheritableOptions
  #
  # source://activesupport//lib/active_support/ordered_options.rb#80
  def initialize(parent = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/ordered_options.rb#91
  def inheritable_copy; end
end

# source://activesupport//lib/active_support/isolated_execution_state.rb#6
module ActiveSupport::IsolatedExecutionState
  class << self
    # source://activesupport//lib/active_support/isolated_execution_state.rb#32
    def [](key); end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#36
    def []=(key, value); end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#48
    def clear; end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#44
    def delete(key); end

    # Returns the value of attribute isolation_level.
    #
    # source://activesupport//lib/active_support/isolated_execution_state.rb#13
    def isolation_level; end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#15
    def isolation_level=(level); end

    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/isolated_execution_state.rb#40
    def key?(key); end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#52
    def share_with(other); end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#28
    def unique_id; end

    private

    # source://activesupport//lib/active_support/isolated_execution_state.rb#61
    def current; end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#65
    def current_fiber; end

    # source://activesupport//lib/active_support/isolated_execution_state.rb#61
    def current_thread; end
  end
end

# source://activesupport//lib/active_support/json/decoding.rb#11
module ActiveSupport::JSON
  class << self
    # Parses a JSON string (JavaScript Object Notation) into a hash.
    # See http://www.json.org for more info.
    #
    #   ActiveSupport::JSON.decode("{\"team\":\"rails\",\"players\":\"36\"}")
    #   => {"team" => "rails", "players" => "36"}
    #
    # source://activesupport//lib/active_support/json/decoding.rb#22
    def decode(json); end

    # Dumps objects in JSON (JavaScript Object Notation).
    # See http://www.json.org for more info.
    #
    #   ActiveSupport::JSON.encode({ team: 'rails', players: '36' })
    #   # => "{\"team\":\"rails\",\"players\":\"36\"}"
    #
    # source://activesupport//lib/active_support/json/encoding.rb#21
    def encode(value, options = T.unsafe(nil)); end

    # Returns the class of the error that will be raised when there is an
    # error in decoding JSON. Using this method means you won't directly
    # depend on the ActiveSupport's JSON implementation, in case it changes
    # in the future.
    #
    #   begin
    #     obj = ActiveSupport::JSON.decode(some_string)
    #   rescue ActiveSupport::JSON.parse_error
    #     Rails.logger.warn("Attempted to decode invalid JSON: #{some_string}")
    #   end
    #
    # source://activesupport//lib/active_support/json/decoding.rb#42
    def parse_error; end

    private

    # source://activesupport//lib/active_support/json/decoding.rb#47
    def convert_dates_from(data); end
  end
end

# source://activesupport//lib/active_support/json/decoding.rb#14
ActiveSupport::JSON::DATETIME_REGEX = T.let(T.unsafe(nil), Regexp)

# matches YAML-formatted dates
#
# source://activesupport//lib/active_support/json/decoding.rb#13
ActiveSupport::JSON::DATE_REGEX = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/json/encoding.rb#25
module ActiveSupport::JSON::Encoding
  class << self
    # If true, encode >, <, & as escaped unicode sequences (e.g. > as \u003e)
    # as a safety measure.
    #
    # source://activesupport//lib/active_support/json/encoding.rb#121
    def escape_html_entities_in_json; end

    # If true, encode >, <, & as escaped unicode sequences (e.g. > as \u003e)
    # as a safety measure.
    #
    # source://activesupport//lib/active_support/json/encoding.rb#121
    def escape_html_entities_in_json=(_arg0); end

    # Sets the encoder used by Rails to encode Ruby objects into JSON strings
    # in +Object#to_json+ and +ActiveSupport::JSON.encode+.
    #
    # source://activesupport//lib/active_support/json/encoding.rb#129
    def json_encoder; end

    # Sets the encoder used by Rails to encode Ruby objects into JSON strings
    # in +Object#to_json+ and +ActiveSupport::JSON.encode+.
    #
    # source://activesupport//lib/active_support/json/encoding.rb#129
    def json_encoder=(_arg0); end

    # Sets the precision of encoded time values.
    # Defaults to 3 (equivalent to millisecond precision)
    #
    # source://activesupport//lib/active_support/json/encoding.rb#125
    def time_precision; end

    # Sets the precision of encoded time values.
    # Defaults to 3 (equivalent to millisecond precision)
    #
    # source://activesupport//lib/active_support/json/encoding.rb#125
    def time_precision=(_arg0); end

    # If true, use ISO 8601 format for dates and times. Otherwise, fall back
    # to the Active Support legacy format.
    #
    # source://activesupport//lib/active_support/json/encoding.rb#117
    def use_standard_json_time_format; end

    # If true, use ISO 8601 format for dates and times. Otherwise, fall back
    # to the Active Support legacy format.
    #
    # source://activesupport//lib/active_support/json/encoding.rb#117
    def use_standard_json_time_format=(_arg0); end
  end
end

# source://activesupport//lib/active_support/json/encoding.rb#26
class ActiveSupport::JSON::Encoding::JSONGemEncoder
  # @return [JSONGemEncoder] a new instance of JSONGemEncoder
  #
  # source://activesupport//lib/active_support/json/encoding.rb#29
  def initialize(options = T.unsafe(nil)); end

  # Encode the given object into a JSON string
  #
  # source://activesupport//lib/active_support/json/encoding.rb#34
  def encode(value); end

  # Returns the value of attribute options.
  #
  # source://activesupport//lib/active_support/json/encoding.rb#27
  def options; end

  private

  # Convert an object into a "JSON-ready" representation composed of
  # primitives like Hash, Array, String, Numeric,
  # and +true+/+false+/+nil+.
  # Recursively calls #as_json to the object to recursively build a
  # fully JSON-ready object.
  #
  # This allows developers to implement #as_json without having to
  # worry about what base types of objects they are allowed to return
  # or having to remember to call #as_json recursively.
  #
  # Note: the +options+ hash passed to +object.to_json+ is only passed
  # to +object.as_json+, not any of this method's recursive +#as_json+
  # calls.
  #
  # source://activesupport//lib/active_support/json/encoding.rb#89
  def jsonify(value); end

  # Encode a "jsonified" Ruby data structure using the JSON gem
  #
  # source://activesupport//lib/active_support/json/encoding.rb#109
  def stringify(jsonified); end
end

# Rails does more escaping than the JSON gem natively does (we
# escape \u2028 and \u2029 and optionally >, <, & to work around
# certain browser problems).
#
# source://activesupport//lib/active_support/json/encoding.rb#42
ActiveSupport::JSON::Encoding::JSONGemEncoder::ESCAPED_CHARS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/json/encoding.rb#51
ActiveSupport::JSON::Encoding::JSONGemEncoder::ESCAPE_REGEX_WITHOUT_HTML_ENTITIES = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/json/encoding.rb#50
ActiveSupport::JSON::Encoding::JSONGemEncoder::ESCAPE_REGEX_WITH_HTML_ENTITIES = T.let(T.unsafe(nil), Regexp)

# This class wraps all the strings we see and does the extra escaping
#
# source://activesupport//lib/active_support/json/encoding.rb#54
class ActiveSupport::JSON::Encoding::JSONGemEncoder::EscapedString < ::String
  # source://activesupport//lib/active_support/json/encoding.rb#55
  def to_json(*_arg0); end

  # source://activesupport//lib/active_support/json/encoding.rb#67
  def to_s; end
end

# KeyGenerator is a simple wrapper around OpenSSL's implementation of PBKDF2.
# It can be used to derive a number of keys for various purposes from a given secret.
# This lets Rails applications have a single secure secret, but avoid reusing that
# key in multiple incompatible contexts.
#
# source://activesupport//lib/active_support/key_generator.rb#11
class ActiveSupport::KeyGenerator
  # @return [KeyGenerator] a new instance of KeyGenerator
  #
  # source://activesupport//lib/active_support/key_generator.rb#26
  def initialize(secret, options = T.unsafe(nil)); end

  # Returns a derived key suitable for use.  The default +key_size+ is chosen
  # to be compatible with the default settings of ActiveSupport::MessageVerifier.
  # i.e. <tt>OpenSSL::Digest::SHA1#block_length</tt>
  #
  # source://activesupport//lib/active_support/key_generator.rb#39
  def generate_key(salt, key_size = T.unsafe(nil)); end

  class << self
    # source://activesupport//lib/active_support/key_generator.rb#21
    def hash_digest_class; end

    # source://activesupport//lib/active_support/key_generator.rb#13
    def hash_digest_class=(klass); end
  end
end

# LazyLoadHooks allows Rails to lazily load a lot of components and thus
# making the app boot faster. Because of this feature now there is no need to
# require <tt>ActiveRecord::Base</tt> at boot time purely to apply
# configuration. Instead a hook is registered that applies configuration once
# <tt>ActiveRecord::Base</tt> is loaded. Here <tt>ActiveRecord::Base</tt> is
# used as example but this feature can be applied elsewhere too.
#
# Here is an example where on_load method is called to register a hook.
#
#   initializer 'active_record.initialize_timezone' do
#     ActiveSupport.on_load(:active_record) do
#       self.time_zone_aware_attributes = true
#       self.default_timezone = :utc
#     end
#   end
#
# When the entirety of +ActiveRecord::Base+ has been
# evaluated then run_load_hooks is invoked. The very last line of
# +ActiveRecord::Base+ is:
#
#   ActiveSupport.run_load_hooks(:active_record, ActiveRecord::Base)
#
# run_load_hooks will then execute all the hooks that were registered
# with the on_load method. In the case of the above example, it will
# execute the block of code that is in the +initializer+.
#
# Registering a hook that has already run results in that hook executing
# immediately. This allows hooks to be nested for code that relies on
# multiple lazily loaded components:
#
#   initializer "action_text.renderer" do
#     ActiveSupport.on_load(:action_controller_base) do
#       ActiveSupport.on_load(:action_text_content) do
#         self.default_renderer = Class.new(ActionController::Base).renderer
#       end
#     end
#   end
#
# source://activesupport//lib/active_support/lazy_load_hooks.rb#41
module ActiveSupport::LazyLoadHooks
  # Declares a block that will be executed when a Rails component is fully
  # loaded. If the component has already loaded, the block is executed
  # immediately.
  #
  # Options:
  #
  # * <tt>:yield</tt> - Yields the object that run_load_hooks to +block+.
  # * <tt>:run_once</tt> - Given +block+ will run only once.
  #
  # source://activesupport//lib/active_support/lazy_load_hooks.rb#58
  def on_load(name, options = T.unsafe(nil), &block); end

  # Executes all blocks registered to +name+ via on_load, using +base+ as the
  # evaluation context.
  #
  #   ActiveSupport.run_load_hooks(:active_record, ActiveRecord::Base)
  #
  # In the case of the above example, it will execute all hooks registered
  # for +:active_record+ within the class +ActiveRecord::Base+.
  #
  # source://activesupport//lib/active_support/lazy_load_hooks.rb#73
  def run_load_hooks(name, base = T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/lazy_load_hooks.rb#89
  def execute_hook(name, base, options, block); end

  # source://activesupport//lib/active_support/lazy_load_hooks.rb#81
  def with_execution_control(name, block, once); end

  class << self
    # source://activesupport//lib/active_support/lazy_load_hooks.rb#42
    def extended(base); end
  end
end

# <tt>ActiveSupport::LogSubscriber</tt> is an object set to consume
# ActiveSupport::Notifications with the sole purpose of logging them.
# The log subscriber dispatches notifications to a registered object based
# on its given namespace.
#
# An example would be Active Record log subscriber responsible for logging
# queries:
#
#   module ActiveRecord
#     class LogSubscriber < ActiveSupport::LogSubscriber
#       def sql(event)
#         info "#{event.payload[:name]} (#{event.duration}) #{event.payload[:sql]}"
#       end
#     end
#   end
#
# And it's finally registered as:
#
#   ActiveRecord::LogSubscriber.attach_to :active_record
#
# Since we need to know all instance methods before attaching the log
# subscriber, the line above should be called after your
# <tt>ActiveRecord::LogSubscriber</tt> definition.
#
# A logger also needs to be set with <tt>ActiveRecord::LogSubscriber.logger=</tt>.
# This is assigned automatically in a Rails environment.
#
# After configured, whenever a <tt>"sql.active_record"</tt> notification is published,
# it will properly dispatch the event
# (<tt>ActiveSupport::Notifications::Event</tt>) to the sql method.
#
# Being an ActiveSupport::Notifications consumer,
# <tt>ActiveSupport::LogSubscriber</tt> exposes a simple interface to check if
# instrumented code raises an exception. It is common to log a different
# message in case of an error, and this can be achieved by extending
# the previous example:
#
#   module ActiveRecord
#     class LogSubscriber < ActiveSupport::LogSubscriber
#       def sql(event)
#         exception = event.payload[:exception]
#
#         if exception
#           exception_object = event.payload[:exception_object]
#
#           error "[ERROR] #{event.payload[:name]}: #{exception.join(', ')} " \
#                 "(#{exception_object.backtrace.first})"
#         else
#           # standard logger code
#         end
#       end
#     end
#   end
#
# Log subscriber also has some helpers to deal with logging and automatically
# flushes all logs when the request finishes
# (via <tt>action_dispatch.callback</tt> notification) in a Rails environment.
#
# source://activesupport//lib/active_support/log_subscriber.rb#65
class ActiveSupport::LogSubscriber < ::ActiveSupport::Subscriber
  # source://activesupport//lib/active_support/log_subscriber.rb#80
  def colorize_logging; end

  # source://activesupport//lib/active_support/log_subscriber.rb#80
  def colorize_logging=(val); end

  # source://activesupport//lib/active_support/log_subscriber.rb#129
  def debug(progname = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/log_subscriber.rb#129
  def error(progname = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/log_subscriber.rb#129
  def fatal(progname = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/log_subscriber.rb#114
  def finish(name, id, payload); end

  # source://activesupport//lib/active_support/log_subscriber.rb#129
  def info(progname = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/log_subscriber.rb#106
  def logger; end

  # source://activesupport//lib/active_support/log_subscriber.rb#120
  def publish_event(event); end

  # source://activesupport//lib/active_support/log_subscriber.rb#110
  def start(name, id, payload); end

  # source://activesupport//lib/active_support/log_subscriber.rb#129
  def unknown(progname = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/log_subscriber.rb#129
  def warn(progname = T.unsafe(nil), &block); end

  private

  # Set color by using a symbol or one of the defined constants. If a third
  # option is set to +true+, it also adds bold to the string. This is based
  # on the Highline implementation and will automatically append CLEAR to the
  # end of the returned String.
  #
  # source://activesupport//lib/active_support/log_subscriber.rb#139
  def color(text, color, bold = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/log_subscriber.rb#146
  def log_exception(name, e); end

  class << self
    # source://activesupport//lib/active_support/log_subscriber.rb#80
    def colorize_logging; end

    # source://activesupport//lib/active_support/log_subscriber.rb#80
    def colorize_logging=(val); end

    # Flush all log_subscribers' logger.
    #
    # source://activesupport//lib/active_support/log_subscriber.rb#96
    def flush_all!; end

    # source://activesupport//lib/active_support/log_subscriber.rb#91
    def log_subscribers; end

    # source://activesupport//lib/active_support/log_subscriber.rb#83
    def logger; end

    # Sets the attribute logger
    #
    # @param value the value to set the attribute logger to.
    #
    # source://activesupport//lib/active_support/log_subscriber.rb#89
    def logger=(_arg0); end

    private

    # source://activesupport//lib/active_support/log_subscriber.rb#101
    def fetch_public_methods(subscriber, inherit_all); end
  end
end

# Colors
#
# source://activesupport//lib/active_support/log_subscriber.rb#71
ActiveSupport::LogSubscriber::BLACK = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#75
ActiveSupport::LogSubscriber::BLUE = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#68
ActiveSupport::LogSubscriber::BOLD = T.let(T.unsafe(nil), String)

# Embed in a String to clear all previous ANSI sequences.
#
# source://activesupport//lib/active_support/log_subscriber.rb#67
ActiveSupport::LogSubscriber::CLEAR = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#77
ActiveSupport::LogSubscriber::CYAN = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#73
ActiveSupport::LogSubscriber::GREEN = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#76
ActiveSupport::LogSubscriber::MAGENTA = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#72
ActiveSupport::LogSubscriber::RED = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#78
ActiveSupport::LogSubscriber::WHITE = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/log_subscriber.rb#74
ActiveSupport::LogSubscriber::YELLOW = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/logger.rb#8
class ActiveSupport::Logger < ::Logger
  include ::ActiveSupport::LoggerSilence
  include ::ActiveSupport::LoggerThreadSafeLevel

  # @return [Logger] a new instance of Logger
  #
  # source://activesupport//lib/active_support/logger.rb#80
  def initialize(*args, **kwargs); end

  # source://activesupport//lib/active_support/logger_silence.rb#12
  def silencer; end

  # source://activesupport//lib/active_support/logger_silence.rb#12
  def silencer=(val); end

  class << self
    # Broadcasts logs to multiple loggers.
    #
    # source://activesupport//lib/active_support/logger.rb#23
    def broadcast(logger); end

    # Returns true if the logger destination matches one of the sources
    #
    #   logger = Logger.new(STDOUT)
    #   ActiveSupport::Logger.logger_outputs_to?(logger, STDOUT)
    #   # => true
    #
    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/logger.rb#16
    def logger_outputs_to?(logger, *sources); end

    # source://activesupport//lib/active_support/logger_silence.rb#12
    def silencer; end

    # source://activesupport//lib/active_support/logger_silence.rb#12
    def silencer=(val); end
  end
end

# Simple formatter which only displays the message.
#
# source://activesupport//lib/active_support/logger.rb#86
class ActiveSupport::Logger::SimpleFormatter < ::Logger::Formatter
  # This method is invoked when a log event occurs
  #
  # source://activesupport//lib/active_support/logger.rb#88
  def call(severity, timestamp, progname, msg); end
end

# source://activesupport//lib/active_support/logger_silence.rb#8
module ActiveSupport::LoggerSilence
  extend ::ActiveSupport::Concern
  include ::ActiveSupport::LoggerThreadSafeLevel

  # Silences the logger for the duration of the block.
  #
  # source://activesupport//lib/active_support/logger_silence.rb#17
  def silence(severity = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/logger_thread_safe_level.rb#9
module ActiveSupport::LoggerThreadSafeLevel
  extend ::ActiveSupport::Concern

  # Redefined to check severity against #level, and thus the thread-local level, rather than +@level+.
  # FIXME: Remove when the minimum Ruby version supports overriding Logger#level.
  #
  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#50
  def add(severity, message = T.unsafe(nil), progname = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#14
  def debug?; end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#14
  def error?; end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#14
  def fatal?; end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#14
  def info?; end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#36
  def level; end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#20
  def local_level; end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#24
  def local_level=(level); end

  # Change the thread-local level for the duration of the given block.
  #
  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#41
  def log_at(level); end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#14
  def unknown?; end

  # source://activesupport//lib/active_support/logger_thread_safe_level.rb#14
  def warn?; end
end

# MessageEncryptor is a simple way to encrypt values which get stored
# somewhere you don't trust.
#
# The cipher text and initialization vector are base64 encoded and returned
# to you.
#
# This can be used in situations similar to the MessageVerifier, but
# where you don't want users to be able to determine the value of the payload.
#
#   len   = ActiveSupport::MessageEncryptor.key_len
#   salt  = SecureRandom.random_bytes(len)
#   key   = ActiveSupport::KeyGenerator.new('password').generate_key(salt, len) # => "\x89\xE0\x156\xAC..."
#   crypt = ActiveSupport::MessageEncryptor.new(key)                            # => #<ActiveSupport::MessageEncryptor ...>
#   encrypted_data = crypt.encrypt_and_sign('my secret data')                   # => "NlFBTTMwOUV5UlA1QlNEN2xkY2d6eThYWWh..."
#   crypt.decrypt_and_verify(encrypted_data)                                    # => "my secret data"
#
# The +decrypt_and_verify+ method will raise an
# <tt>ActiveSupport::MessageEncryptor::InvalidMessage</tt> exception if the data
# provided cannot be decrypted or verified.
#
#   crypt.decrypt_and_verify('not encrypted data') # => ActiveSupport::MessageEncryptor::InvalidMessage
#
# === Confining messages to a specific purpose
#
# By default any message can be used throughout your app. But they can also be
# confined to a specific +:purpose+.
#
#   token = crypt.encrypt_and_sign("this is the chair", purpose: :login)
#
# Then that same purpose must be passed when verifying to get the data back out:
#
#   crypt.decrypt_and_verify(token, purpose: :login)    # => "this is the chair"
#   crypt.decrypt_and_verify(token, purpose: :shipping) # => nil
#   crypt.decrypt_and_verify(token)                     # => nil
#
# Likewise, if a message has no purpose it won't be returned when verifying with
# a specific purpose.
#
#   token = crypt.encrypt_and_sign("the conversation is lively")
#   crypt.decrypt_and_verify(token, purpose: :scare_tactics) # => nil
#   crypt.decrypt_and_verify(token)                          # => "the conversation is lively"
#
# === Making messages expire
#
# By default messages last forever and verifying one year from now will still
# return the original value. But messages can be set to expire at a given
# time with +:expires_in+ or +:expires_at+.
#
#   crypt.encrypt_and_sign(parcel, expires_in: 1.month)
#   crypt.encrypt_and_sign(doowad, expires_at: Time.now.end_of_year)
#
# Then the messages can be verified and returned up to the expire time.
# Thereafter, verifying returns +nil+.
#
# === Rotating keys
#
# MessageEncryptor also supports rotating out old configurations by falling
# back to a stack of encryptors. Call +rotate+ to build and add an encryptor
# so +decrypt_and_verify+ will also try the fallback.
#
# By default any rotated encryptors use the values of the primary
# encryptor unless specified otherwise.
#
# You'd give your encryptor the new defaults:
#
#   crypt = ActiveSupport::MessageEncryptor.new(@secret, cipher: "aes-256-gcm")
#
# Then gradually rotate the old values out by adding them as fallbacks. Any message
# generated with the old values will then work until the rotation is removed.
#
#   crypt.rotate old_secret            # Fallback to an old secret instead of @secret.
#   crypt.rotate cipher: "aes-256-cbc" # Fallback to an old cipher instead of aes-256-gcm.
#
# Though if both the secret and the cipher was changed at the same time,
# the above should be combined into:
#
#   crypt.rotate old_secret, cipher: "aes-256-cbc"
#
# source://activesupport//lib/active_support/message_encryptor.rb#87
class ActiveSupport::MessageEncryptor
  include ::ActiveSupport::Messages::Rotator
  include ::ActiveSupport::Messages::Rotator::Encryptor

  # Initialize a new MessageEncryptor. +secret+ must be at least as long as
  # the cipher key size. For the default 'aes-256-gcm' cipher, this is 256
  # bits. If you are using a user-entered secret, you can generate a suitable
  # key by using ActiveSupport::KeyGenerator or a similar key
  # derivation function.
  #
  # First additional parameter is used as the signature key for MessageVerifier.
  # This allows you to specify keys to encrypt and sign data.
  #
  #    ActiveSupport::MessageEncryptor.new('secret', 'signature_secret')
  #
  # Options:
  # * <tt>:cipher</tt>     - Cipher to use. Can be any cipher returned by
  #   <tt>OpenSSL::Cipher.ciphers</tt>. Default is 'aes-256-gcm'.
  # * <tt>:digest</tt> - String of digest to use for signing. Default is
  #   +SHA1+. Ignored when using an AEAD cipher like 'aes-256-gcm'.
  # * <tt>:serializer</tt> - Object serializer to use. Default is +Marshal+.
  #
  # @return [MessageEncryptor] a new instance of MessageEncryptor
  #
  # source://activesupport//lib/active_support/messages/rotator.rb#6
  def initialize(*secrets, on_rotation: T.unsafe(nil), **options); end

  # Decrypt and verify a message. We need to verify the message in order to
  # avoid padding attacks. Reference: https://www.limited-entropy.com/padding-oracle-attacks/.
  #
  # source://activesupport//lib/active_support/messages/rotator.rb#21
  def decrypt_and_verify(*args, on_rotation: T.unsafe(nil), **options); end

  # Encrypt and sign a message. We need to sign the message in order to avoid
  # padding attacks. Reference: https://www.limited-entropy.com/padding-oracle-attacks/.
  #
  # source://activesupport//lib/active_support/message_encryptor.rb#153
  def encrypt_and_sign(value, expires_at: T.unsafe(nil), expires_in: T.unsafe(nil), purpose: T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/message_encryptor.rb#186
  def _decrypt(encrypted_message, purpose); end

  # source://activesupport//lib/active_support/message_encryptor.rb#169
  def _encrypt(value, **metadata_options); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/message_encryptor.rb#218
  def aead_mode?; end

  # source://activesupport//lib/active_support/message_encryptor.rb#212
  def new_cipher; end

  # source://activesupport//lib/active_support/message_encryptor.rb#222
  def resolve_verifier; end

  # Returns the value of attribute verifier.
  #
  # source://activesupport//lib/active_support/message_encryptor.rb#216
  def verifier; end

  class << self
    # source://activesupport//lib/active_support/message_encryptor.rb#93
    def default_cipher; end

    # Given a cipher, returns the key length of the cipher to help generate the key of desired size
    #
    # source://activesupport//lib/active_support/message_encryptor.rb#164
    def key_len(cipher = T.unsafe(nil)); end

    # source://activesupport//lib/active_support/message_encryptor.rb#90
    def use_authenticated_message_encryption; end

    # source://activesupport//lib/active_support/message_encryptor.rb#90
    def use_authenticated_message_encryption=(val); end
  end
end

# source://activesupport//lib/active_support/message_encryptor.rb#122
class ActiveSupport::MessageEncryptor::InvalidMessage < ::StandardError; end

# source://activesupport//lib/active_support/message_encryptor.rb#102
module ActiveSupport::MessageEncryptor::NullSerializer
  class << self
    # source://activesupport//lib/active_support/message_encryptor.rb#107
    def dump(value); end

    # source://activesupport//lib/active_support/message_encryptor.rb#103
    def load(value); end
  end
end

# source://activesupport//lib/active_support/message_encryptor.rb#112
module ActiveSupport::MessageEncryptor::NullVerifier
  class << self
    # source://activesupport//lib/active_support/message_encryptor.rb#117
    def generate(value); end

    # source://activesupport//lib/active_support/message_encryptor.rb#113
    def verify(value); end
  end
end

# source://activesupport//lib/active_support/message_encryptor.rb#123
ActiveSupport::MessageEncryptor::OpenSSLCipherError = OpenSSL::Cipher::CipherError

# +MessageVerifier+ makes it easy to generate and verify messages which are
# signed to prevent tampering.
#
# This is useful for cases like remember-me tokens and auto-unsubscribe links
# where the session store isn't suitable or available.
#
# Remember Me:
#   cookies[:remember_me] = @verifier.generate([@user.id, 2.weeks.from_now])
#
# In the authentication filter:
#
#   id, time = @verifier.verify(cookies[:remember_me])
#   if Time.now < time
#     self.current_user = User.find(id)
#   end
#
# By default it uses Marshal to serialize the message. If you want to use
# another serialization method, you can set the serializer in the options
# hash upon initialization:
#
#   @verifier = ActiveSupport::MessageVerifier.new('s3Krit', serializer: YAML)
#
# +MessageVerifier+ creates HMAC signatures using SHA1 hash algorithm by default.
# If you want to use a different hash algorithm, you can change it by providing
# +:digest+ key as an option while initializing the verifier:
#
#   @verifier = ActiveSupport::MessageVerifier.new('s3Krit', digest: 'SHA256')
#
# === Confining messages to a specific purpose
#
# By default any message can be used throughout your app. But they can also be
# confined to a specific +:purpose+.
#
#   token = @verifier.generate("this is the chair", purpose: :login)
#
# Then that same purpose must be passed when verifying to get the data back out:
#
#   @verifier.verified(token, purpose: :login)    # => "this is the chair"
#   @verifier.verified(token, purpose: :shipping) # => nil
#   @verifier.verified(token)                     # => nil
#
#   @verifier.verify(token, purpose: :login)      # => "this is the chair"
#   @verifier.verify(token, purpose: :shipping)   # => ActiveSupport::MessageVerifier::InvalidSignature
#   @verifier.verify(token)                       # => ActiveSupport::MessageVerifier::InvalidSignature
#
# Likewise, if a message has no purpose it won't be returned when verifying with
# a specific purpose.
#
#   token = @verifier.generate("the conversation is lively")
#   @verifier.verified(token, purpose: :scare_tactics) # => nil
#   @verifier.verified(token)                          # => "the conversation is lively"
#
#   @verifier.verify(token, purpose: :scare_tactics)   # => ActiveSupport::MessageVerifier::InvalidSignature
#   @verifier.verify(token)                            # => "the conversation is lively"
#
# === Making messages expire
#
# By default messages last forever and verifying one year from now will still
# return the original value. But messages can be set to expire at a given
# time with +:expires_in+ or +:expires_at+.
#
#   @verifier.generate("parcel", expires_in: 1.month)
#   @verifier.generate("doowad", expires_at: Time.now.end_of_year)
#
# Then the messages can be verified and returned up to the expire time.
# Thereafter, the +verified+ method returns +nil+ while +verify+ raises
# <tt>ActiveSupport::MessageVerifier::InvalidSignature</tt>.
#
# === Rotating keys
#
# MessageVerifier also supports rotating out old configurations by falling
# back to a stack of verifiers. Call +rotate+ to build and add a verifier so
# either +verified+ or +verify+ will also try verifying with the fallback.
#
# By default any rotated verifiers use the values of the primary
# verifier unless specified otherwise.
#
# You'd give your verifier the new defaults:
#
#   verifier = ActiveSupport::MessageVerifier.new(@secret, digest: "SHA512", serializer: JSON)
#
# Then gradually rotate the old values out by adding them as fallbacks. Any message
# generated with the old values will then work until the rotation is removed.
#
#   verifier.rotate old_secret          # Fallback to an old secret instead of @secret.
#   verifier.rotate digest: "SHA256"    # Fallback to an old digest instead of SHA512.
#   verifier.rotate serializer: Marshal # Fallback to an old serializer instead of JSON.
#
# Though the above would most likely be combined into one rotation:
#
#   verifier.rotate old_secret, digest: "SHA256", serializer: Marshal
#
# source://activesupport//lib/active_support/message_verifier.rb#102
class ActiveSupport::MessageVerifier
  include ::ActiveSupport::Messages::Rotator
  include ::ActiveSupport::Messages::Rotator::Verifier

  # @raise [ArgumentError]
  # @return [MessageVerifier] a new instance of MessageVerifier
  #
  # source://activesupport//lib/active_support/messages/rotator.rb#6
  def initialize(*secrets, on_rotation: T.unsafe(nil), **options); end

  # Generates a signed message for the provided value.
  #
  # The message is signed with the +MessageVerifier+'s secret.
  # Returns Base64-encoded message joined with the generated signature.
  #
  #   verifier = ActiveSupport::MessageVerifier.new 's3Krit'
  #   verifier.generate 'a private message' # => "BAhJIhRwcml2YXRlLW1lc3NhZ2UGOgZFVA==--e2d724331ebdee96a10fb99b089508d1c72bd772"
  #
  # source://activesupport//lib/active_support/message_verifier.rb#188
  def generate(value, expires_at: T.unsafe(nil), expires_in: T.unsafe(nil), purpose: T.unsafe(nil)); end

  # Checks if a signed message could have been generated by signing an object
  # with the +MessageVerifier+'s secret.
  #
  #   verifier = ActiveSupport::MessageVerifier.new 's3Krit'
  #   signed_message = verifier.generate 'a private message'
  #   verifier.valid_message?(signed_message) # => true
  #
  #   tampered_message = signed_message.chop # editing the message invalidates the signature
  #   verifier.valid_message?(tampered_message) # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/message_verifier.rb#126
  def valid_message?(signed_message); end

  # Decodes the signed message using the +MessageVerifier+'s secret.
  #
  #   verifier = ActiveSupport::MessageVerifier.new 's3Krit'
  #
  #   signed_message = verifier.generate 'a private message'
  #   verifier.verified(signed_message) # => 'a private message'
  #
  # Returns +nil+ if the message was not signed with the same secret.
  #
  #   other_verifier = ActiveSupport::MessageVerifier.new 'd1ff3r3nt-s3Krit'
  #   other_verifier.verified(signed_message) # => nil
  #
  # Returns +nil+ if the message is not Base64-encoded.
  #
  #   invalid_message = "f--46a0120593880c733a53b6dad75b42ddc1c8996d"
  #   verifier.verified(invalid_message) # => nil
  #
  # Raises any error raised while decoding the signed message.
  #
  #   incompatible_message = "test--dad7b06c94abba8d46a15fafaef56c327665d5ff"
  #   verifier.verified(incompatible_message) # => TypeError: incompatible marshal file format
  #
  # source://activesupport//lib/active_support/messages/rotator.rb#36
  def verified(*args, on_rotation: T.unsafe(nil), **options); end

  # Decodes the signed message using the +MessageVerifier+'s secret.
  #
  #   verifier = ActiveSupport::MessageVerifier.new 's3Krit'
  #   signed_message = verifier.generate 'a private message'
  #
  #   verifier.verify(signed_message) # => 'a private message'
  #
  # Raises +InvalidSignature+ if the message was not signed with the same
  # secret or was not Base64-encoded.
  #
  #   other_verifier = ActiveSupport::MessageVerifier.new 'd1ff3r3nt-s3Krit'
  #   other_verifier.verify(signed_message) # => ActiveSupport::MessageVerifier::InvalidSignature
  #
  # source://activesupport//lib/active_support/message_verifier.rb#177
  def verify(*args, **options); end

  private

  # source://activesupport//lib/active_support/message_verifier.rb#198
  def decode(data); end

  # source://activesupport//lib/active_support/message_verifier.rb#206
  def digest_length_in_hex; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/message_verifier.rb#233
  def digest_matches_data?(digest, data); end

  # source://activesupport//lib/active_support/message_verifier.rb#194
  def encode(data); end

  # source://activesupport//lib/active_support/message_verifier.rb#202
  def generate_digest(data); end

  # source://activesupport//lib/active_support/message_verifier.rb#221
  def get_data_and_digest_from(signed_message); end

  # source://activesupport//lib/active_support/message_verifier.rb#214
  def separator_index_for(signed_message); end
end

# source://activesupport//lib/active_support/message_verifier.rb#105
class ActiveSupport::MessageVerifier::InvalidSignature < ::StandardError; end

# source://activesupport//lib/active_support/message_verifier.rb#107
ActiveSupport::MessageVerifier::SEPARATOR = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/message_verifier.rb#108
ActiveSupport::MessageVerifier::SEPARATOR_LENGTH = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/messages/metadata.rb#6
module ActiveSupport::Messages; end

# source://activesupport//lib/active_support/messages/metadata.rb#7
class ActiveSupport::Messages::Metadata
  # @return [Metadata] a new instance of Metadata
  #
  # source://activesupport//lib/active_support/messages/metadata.rb#8
  def initialize(message, expires_at = T.unsafe(nil), purpose = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/messages/metadata.rb#13
  def as_json(options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/messages/metadata.rb#58
  def verify(purpose); end

  private

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/messages/metadata.rb#67
  def fresh?; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/messages/metadata.rb#63
  def match?(purpose); end

  # source://activesupport//lib/active_support/messages/metadata.rb#71
  def parse_expires_at(expires_at); end

  class << self
    # source://activesupport//lib/active_support/messages/metadata.rb#26
    def verify(message, purpose); end

    # source://activesupport//lib/active_support/messages/metadata.rb#18
    def wrap(message, expires_at: T.unsafe(nil), expires_in: T.unsafe(nil), purpose: T.unsafe(nil)); end

    private

    # source://activesupport//lib/active_support/messages/metadata.rb#53
    def decode(message); end

    # source://activesupport//lib/active_support/messages/metadata.rb#49
    def encode(message); end

    # source://activesupport//lib/active_support/messages/metadata.rb#39
    def extract_metadata(message); end

    # source://activesupport//lib/active_support/messages/metadata.rb#31
    def pick_expiry(expires_at, expires_in); end
  end
end

# source://activesupport//lib/active_support/messages/rotation_configuration.rb#5
class ActiveSupport::Messages::RotationConfiguration
  # @return [RotationConfiguration] a new instance of RotationConfiguration
  #
  # source://activesupport//lib/active_support/messages/rotation_configuration.rb#8
  def initialize; end

  # Returns the value of attribute encrypted.
  #
  # source://activesupport//lib/active_support/messages/rotation_configuration.rb#6
  def encrypted; end

  # source://activesupport//lib/active_support/messages/rotation_configuration.rb#12
  def rotate(kind, *args, **options); end

  # Returns the value of attribute signed.
  #
  # source://activesupport//lib/active_support/messages/rotation_configuration.rb#6
  def signed; end
end

# source://activesupport//lib/active_support/messages/rotator.rb#5
module ActiveSupport::Messages::Rotator
  # source://activesupport//lib/active_support/messages/rotator.rb#6
  def initialize(*secrets, on_rotation: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/messages/rotator.rb#14
  def rotate(*secrets, **options); end

  private

  # source://activesupport//lib/active_support/messages/rotator.rb#47
  def run_rotations(on_rotation); end
end

# source://activesupport//lib/active_support/messages/rotator.rb#18
module ActiveSupport::Messages::Rotator::Encryptor
  include ::ActiveSupport::Messages::Rotator

  # source://activesupport//lib/active_support/messages/rotator.rb#21
  def decrypt_and_verify(*args, on_rotation: T.unsafe(nil), **options); end

  private

  # source://activesupport//lib/active_support/messages/rotator.rb#28
  def build_rotation(secret = T.unsafe(nil), sign_secret = T.unsafe(nil), options); end
end

# source://activesupport//lib/active_support/messages/rotator.rb#33
module ActiveSupport::Messages::Rotator::Verifier
  include ::ActiveSupport::Messages::Rotator

  # source://activesupport//lib/active_support/messages/rotator.rb#36
  def verified(*args, on_rotation: T.unsafe(nil), **options); end

  private

  # source://activesupport//lib/active_support/messages/rotator.rb#41
  def build_rotation(secret = T.unsafe(nil), options); end
end

# source://activesupport//lib/active_support/multibyte.rb#4
module ActiveSupport::Multibyte
  class << self
    # Returns the current proxy class.
    #
    # source://activesupport//lib/active_support/multibyte.rb#19
    def proxy_class; end

    # The proxy class returned when calling mb_chars. You can use this accessor
    # to configure your own proxy class so you can support other encodings. See
    # the ActiveSupport::Multibyte::Chars implementation for an example how to
    # do this.
    #
    #   ActiveSupport::Multibyte.proxy_class = CharsForUTF32
    #
    # source://activesupport//lib/active_support/multibyte.rb#14
    def proxy_class=(klass); end
  end
end

# Chars enables you to work transparently with UTF-8 encoding in the Ruby
# String class without having extensive knowledge about the encoding. A
# Chars object accepts a string upon initialization and proxies String
# methods in an encoding safe manner. All the normal String methods are also
# implemented on the proxy.
#
# String methods are proxied through the Chars object, and can be accessed
# through the +mb_chars+ method. Methods which would normally return a
# String object now return a Chars object so methods can be chained.
#
#   'The Perfect String  '.mb_chars.downcase.strip
#   # => #<ActiveSupport::Multibyte::Chars:0x007fdc434ccc10 @wrapped_string="the perfect string">
#
# Chars objects are perfectly interchangeable with String objects as long as
# no explicit class checks are made. If certain methods do explicitly check
# the class, call +to_s+ before you pass chars objects to them.
#
#   bad.explicit_checking_method 'T'.mb_chars.downcase.to_s
#
# The default Chars implementation assumes that the encoding of the string
# is UTF-8, if you want to handle different encodings you can write your own
# multibyte string handler and configure it through
# ActiveSupport::Multibyte.proxy_class.
#
#   class CharsForUTF32
#     def size
#       @wrapped_string.size / 4
#     end
#
#     def self.accepts?(string)
#       string.length % 4 == 0
#     end
#   end
#
#   ActiveSupport::Multibyte.proxy_class = CharsForUTF32
#
# source://activesupport//lib/active_support/multibyte/chars.rb#45
class ActiveSupport::Multibyte::Chars
  include ::Comparable

  # Creates a new Chars instance by wrapping _string_.
  #
  # @return [Chars] a new instance of Chars
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#54
  def initialize(string); end

  # source://activesupport//lib/active_support/multibyte/chars.rb#51
  def <=>(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/multibyte/chars.rb#51
  def =~(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/multibyte/chars.rb#51
  def acts_like_string?(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/multibyte/chars.rb#159
  def as_json(options = T.unsafe(nil)); end

  # Performs composition on all the characters.
  #
  #   'é'.length                       # => 1
  #   'é'.mb_chars.compose.to_s.length # => 1
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#138
  def compose; end

  # Performs canonical decomposition on all the characters.
  #
  #   'é'.length                         # => 1
  #   'é'.mb_chars.decompose.to_s.length # => 2
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#130
  def decompose; end

  # Returns the number of grapheme clusters in the string.
  #
  #   'क्षि'.mb_chars.length   # => 4
  #   'क्षि'.mb_chars.grapheme_length # => 2
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#146
  def grapheme_length; end

  # Limits the byte size of the string to a number of bytes without breaking
  # characters. Usable when the storage for a string is limited for some
  # reason.
  #
  #   'こんにちは'.mb_chars.limit(7).to_s # => "こん"
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#113
  def limit(limit); end

  # source://activesupport//lib/active_support/multibyte/chars.rb#51
  def match?(*_arg0, **_arg1, &_arg2); end

  # Forward all undefined methods to the wrapped string.
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#60
  def method_missing(method, *args, &block); end

  # Reverses all characters in the string.
  #
  #   'Café'.mb_chars.reverse.to_s # => 'éfaC'
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#104
  def reverse; end

  # source://activesupport//lib/active_support/multibyte/chars.rb#164
  def reverse!(*args); end

  # Works like <tt>String#slice!</tt>, but returns an instance of
  # Chars, or +nil+ if the string was not modified. The string will not be
  # modified if the range given is out of bounds
  #
  #   string = 'Welcome'
  #   string.mb_chars.slice!(3)    # => #<ActiveSupport::Multibyte::Chars:0x000000038109b8 @wrapped_string="c">
  #   string # => 'Welome'
  #   string.mb_chars.slice!(0..3) # => #<ActiveSupport::Multibyte::Chars:0x00000002eb80a0 @wrapped_string="Welo">
  #   string # => 'me'
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#94
  def slice!(*args); end

  # Works just like <tt>String#split</tt>, with the exception that the items
  # in the resulting list are Chars instances instead of String. This makes
  # chaining methods easier.
  #
  #   'Café périferôl'.mb_chars.split(/é/).map { |part| part.upcase.to_s } # => ["CAF", " P", "RIFERÔL"]
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#81
  def split(*args); end

  # Replaces all ISO-8859-1 or CP1252 characters by their UTF-8 equivalent
  # resulting in a valid UTF-8 string.
  #
  # Passing +true+ will forcibly tidy all bytes, assuming that the string's
  # encoding is entirely CP1252 or ISO-8859-1.
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#155
  def tidy_bytes(force = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/multibyte/chars.rb#164
  def tidy_bytes!(*args); end

  # Capitalizes the first letter of every word, when possible.
  #
  #   "ÉL QUE SE ENTERÓ".mb_chars.titleize.to_s    # => "Él Que Se Enteró"
  #   "日本語".mb_chars.titleize.to_s               # => "日本語"
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#121
  def titlecase; end

  # Capitalizes the first letter of every word, when possible.
  #
  #   "ÉL QUE SE ENTERÓ".mb_chars.titleize.to_s    # => "Él Que Se Enteró"
  #   "日本語".mb_chars.titleize.to_s               # => "日本語"
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#121
  def titleize; end

  # Returns the value of attribute wrapped_string.
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#47
  def to_s; end

  # Returns the value of attribute wrapped_string.
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#47
  def to_str; end

  # Returns the value of attribute wrapped_string.
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#47
  def wrapped_string; end

  private

  # source://activesupport//lib/active_support/multibyte/chars.rb#171
  def chars(string); end

  # Returns +true+ if _obj_ responds to the given method. Private methods
  # are included in the search only if the optional second parameter
  # evaluates to +true+.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/multibyte/chars.rb#72
  def respond_to_missing?(method, include_private); end
end

# source://activesupport//lib/active_support/multibyte/unicode.rb#5
module ActiveSupport::Multibyte::Unicode
  extend ::ActiveSupport::Multibyte::Unicode

  # Compose decomposed characters to the composed form.
  #
  # source://activesupport//lib/active_support/multibyte/unicode.rb#21
  def compose(codepoints); end

  # Decompose composed characters to the decomposed form.
  #
  # source://activesupport//lib/active_support/multibyte/unicode.rb#12
  def decompose(type, codepoints); end

  # Replaces all ISO-8859-1 or CP1252 characters by their UTF-8 equivalent
  # resulting in a valid UTF-8 string.
  #
  # Passing +true+ will forcibly tidy all bytes, assuming that the string's
  # encoding is entirely CP1252 or ISO-8859-1.
  #
  # source://activesupport//lib/active_support/multibyte/unicode.rb#32
  def tidy_bytes(string, force = T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/multibyte/unicode.rb#65
  def recode_windows1252_chars(string); end
end

# The Unicode version that is supported by the implementation
#
# source://activesupport//lib/active_support/multibyte/unicode.rb#9
ActiveSupport::Multibyte::Unicode::UNICODE_VERSION = T.let(T.unsafe(nil), String)

# = \Notifications
#
# <tt>ActiveSupport::Notifications</tt> provides an instrumentation API for
# Ruby.
#
# == Instrumenters
#
# To instrument an event you just need to do:
#
#   ActiveSupport::Notifications.instrument('render', extra: :information) do
#     render plain: 'Foo'
#   end
#
# That first executes the block and then notifies all subscribers once done.
#
# In the example above +render+ is the name of the event, and the rest is called
# the _payload_. The payload is a mechanism that allows instrumenters to pass
# extra information to subscribers. Payloads consist of a hash whose contents
# are arbitrary and generally depend on the event.
#
# == Subscribers
#
# You can consume those events and the information they provide by registering
# a subscriber.
#
#   ActiveSupport::Notifications.subscribe('render') do |name, start, finish, id, payload|
#     name    # => String, name of the event (such as 'render' from above)
#     start   # => Time, when the instrumented block started execution
#     finish  # => Time, when the instrumented block ended execution
#     id      # => String, unique ID for the instrumenter that fired the event
#     payload # => Hash, the payload
#   end
#
# Here, the +start+ and +finish+ values represent wall-clock time. If you are
# concerned about accuracy, you can register a monotonic subscriber.
#
#   ActiveSupport::Notifications.monotonic_subscribe('render') do |name, start, finish, id, payload|
#     name    # => String, name of the event (such as 'render' from above)
#     start   # => Monotonic time, when the instrumented block started execution
#     finish  # => Monotonic time, when the instrumented block ended execution
#     id      # => String, unique ID for the instrumenter that fired the event
#     payload # => Hash, the payload
#   end
#
# The +start+ and +finish+ values above represent monotonic time.
#
# For instance, let's store all "render" events in an array:
#
#   events = []
#
#   ActiveSupport::Notifications.subscribe('render') do |*args|
#     events << ActiveSupport::Notifications::Event.new(*args)
#   end
#
# That code returns right away, you are just subscribing to "render" events.
# The block is saved and will be called whenever someone instruments "render":
#
#   ActiveSupport::Notifications.instrument('render', extra: :information) do
#     render plain: 'Foo'
#   end
#
#   event = events.first
#   event.name      # => "render"
#   event.duration  # => 10 (in milliseconds)
#   event.payload   # => { extra: :information }
#
# The block in the <tt>subscribe</tt> call gets the name of the event, start
# timestamp, end timestamp, a string with a unique identifier for that event's instrumenter
# (something like "535801666f04d0298cd6"), and a hash with the payload, in
# that order.
#
# If an exception happens during that particular instrumentation the payload will
# have a key <tt>:exception</tt> with an array of two elements as value: a string with
# the name of the exception class, and the exception message.
# The <tt>:exception_object</tt> key of the payload will have the exception
# itself as the value:
#
#   event.payload[:exception]         # => ["ArgumentError", "Invalid value"]
#   event.payload[:exception_object]  # => #<ArgumentError: Invalid value>
#
# As the earlier example depicts, the class ActiveSupport::Notifications::Event
# is able to take the arguments as they come and provide an object-oriented
# interface to that data.
#
# It is also possible to pass an object which responds to <tt>call</tt> method
# as the second parameter to the <tt>subscribe</tt> method instead of a block:
#
#   module ActionController
#     class PageRequest
#       def call(name, started, finished, unique_id, payload)
#         Rails.logger.debug ['notification:', name, started, finished, unique_id, payload].join(' ')
#       end
#     end
#   end
#
#   ActiveSupport::Notifications.subscribe('process_action.action_controller', ActionController::PageRequest.new)
#
# resulting in the following output within the logs including a hash with the payload:
#
#   notification: process_action.action_controller 2012-04-13 01:08:35 +0300 2012-04-13 01:08:35 +0300 af358ed7fab884532ec7 {
#      controller: "Devise::SessionsController",
#      action: "new",
#      params: {"action"=>"new", "controller"=>"devise/sessions"},
#      format: :html,
#      method: "GET",
#      path: "/login/sign_in",
#      status: 200,
#      view_runtime: 279.3080806732178,
#      db_runtime: 40.053
#    }
#
# You can also subscribe to all events whose name matches a certain regexp:
#
#   ActiveSupport::Notifications.subscribe(/render/) do |*args|
#     ...
#   end
#
# and even pass no argument to <tt>subscribe</tt>, in which case you are subscribing
# to all events.
#
# == Temporary Subscriptions
#
# Sometimes you do not want to subscribe to an event for the entire life of
# the application. There are two ways to unsubscribe.
#
# WARNING: The instrumentation framework is designed for long-running subscribers,
# use this feature sparingly because it wipes some internal caches and that has
# a negative impact on performance.
#
# === Subscribe While a Block Runs
#
# You can subscribe to some event temporarily while some block runs. For
# example, in
#
#   callback = lambda {|*args| ... }
#   ActiveSupport::Notifications.subscribed(callback, "sql.active_record") do
#     ...
#   end
#
# the callback will be called for all "sql.active_record" events instrumented
# during the execution of the block. The callback is unsubscribed automatically
# after that.
#
# To record +started+ and +finished+ values with monotonic time,
# specify the optional <tt>:monotonic</tt> option to the
# <tt>subscribed</tt> method. The <tt>:monotonic</tt> option is set
# to +false+ by default.
#
#   callback = lambda {|name, started, finished, unique_id, payload| ... }
#   ActiveSupport::Notifications.subscribed(callback, "sql.active_record", monotonic: true) do
#     ...
#   end
#
# === Manual Unsubscription
#
# The +subscribe+ method returns a subscriber object:
#
#   subscriber = ActiveSupport::Notifications.subscribe("render") do |*args|
#     ...
#   end
#
# To prevent that block from being called anymore, just unsubscribe passing
# that reference:
#
#   ActiveSupport::Notifications.unsubscribe(subscriber)
#
# You can also unsubscribe by passing the name of the subscriber object. Note
# that this will unsubscribe all subscriptions with the given name:
#
#   ActiveSupport::Notifications.unsubscribe("render")
#
# Subscribers using a regexp or other pattern-matching object will remain subscribed
# to all events that match their original pattern, unless those events match a string
# passed to +unsubscribe+:
#
#   subscriber = ActiveSupport::Notifications.subscribe(/render/) { }
#   ActiveSupport::Notifications.unsubscribe('render_template.action_view')
#   subscriber.matches?('render_template.action_view') # => false
#   subscriber.matches?('render_partial.action_view') # => true
#
# == Default Queue
#
# Notifications ships with a queue implementation that consumes and publishes events
# to all log subscribers. You can use any queue implementation you want.
#
# source://activesupport//lib/active_support/notifications/instrumenter.rb#6
module ActiveSupport::Notifications
  class << self
    # source://activesupport//lib/active_support/notifications.rb#204
    def instrument(name, payload = T.unsafe(nil)); end

    # source://activesupport//lib/active_support/notifications.rb#268
    def instrumenter; end

    # Performs the same functionality as #subscribe, but the +start+ and
    # +finish+ block arguments are in monotonic time instead of wall-clock
    # time. Monotonic time will not jump forward or backward (due to NTP or
    # Daylights Savings). Use +monotonic_subscribe+ when accuracy of time
    # duration is important. For example, computing elapsed time between
    # two events.
    #
    # source://activesupport//lib/active_support/notifications.rb#253
    def monotonic_subscribe(pattern = T.unsafe(nil), callback = T.unsafe(nil), &block); end

    # Returns the value of attribute notifier.
    #
    # source://activesupport//lib/active_support/notifications.rb#194
    def notifier; end

    # Sets the attribute notifier
    #
    # @param value the value to set the attribute notifier to.
    #
    # source://activesupport//lib/active_support/notifications.rb#194
    def notifier=(_arg0); end

    # source://activesupport//lib/active_support/notifications.rb#196
    def publish(name, *args); end

    # source://activesupport//lib/active_support/notifications.rb#200
    def publish_event(event); end

    # Subscribe to a given event name with the passed +block+.
    #
    # You can subscribe to events by passing a String to match exact event
    # names, or by passing a Regexp to match all events that match a pattern.
    #
    #   ActiveSupport::Notifications.subscribe(/render/) do |*args|
    #     @event = ActiveSupport::Notifications::Event.new(*args)
    #   end
    #
    # The +block+ will receive five parameters with information about the event:
    #
    #   ActiveSupport::Notifications.subscribe('render') do |name, start, finish, id, payload|
    #     name    # => String, name of the event (such as 'render' from above)
    #     start   # => Time, when the instrumented block started execution
    #     finish  # => Time, when the instrumented block ended execution
    #     id      # => String, unique ID for the instrumenter that fired the event
    #     payload # => Hash, the payload
    #   end
    #
    # If the block passed to the method only takes one parameter,
    # it will yield an event object to the block:
    #
    #   ActiveSupport::Notifications.subscribe(/render/) do |event|
    #     @event = event
    #   end
    #
    # Raises an error if invalid event name type is passed:
    #
    #   ActiveSupport::Notifications.subscribe(:render) {|*args| ...}
    #   #=> ArgumentError (pattern must be specified as a String, Regexp or empty)
    #
    # source://activesupport//lib/active_support/notifications.rb#243
    def subscribe(pattern = T.unsafe(nil), callback = T.unsafe(nil), &block); end

    # source://activesupport//lib/active_support/notifications.rb#257
    def subscribed(callback, pattern = T.unsafe(nil), monotonic: T.unsafe(nil), &block); end

    # source://activesupport//lib/active_support/notifications.rb#264
    def unsubscribe(subscriber_or_name); end

    private

    # source://activesupport//lib/active_support/notifications.rb#273
    def registry; end
  end
end

# source://activesupport//lib/active_support/notifications/instrumenter.rb#58
class ActiveSupport::Notifications::Event
  # @return [Event] a new instance of Event
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#62
  def initialize(name, start, ending, transaction_id, payload); end

  # source://activesupport//lib/active_support/notifications/instrumenter.rb#136
  def <<(event); end

  # Returns the number of allocations made since the call to +start!+ and
  # the call to +finish!+
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#116
  def allocations; end

  # Returns the value of attribute children.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#59
  def children; end

  # Returns the CPU time (in milliseconds) passed since the call to
  # +start!+ and the call to +finish!+
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#104
  def cpu_time; end

  # Returns the difference in milliseconds between when the execution of the
  # event started and when it ended.
  #
  #   ActiveSupport::Notifications.subscribe('wait') do |*args|
  #     @event = ActiveSupport::Notifications::Event.new(*args)
  #   end
  #
  #   ActiveSupport::Notifications.instrument('wait') do
  #     sleep 1
  #   end
  #
  #   @event.duration # => 1000.138
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#132
  def duration; end

  # Returns the value of attribute end.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#59
  def end; end

  # Record information at the time this event finishes
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#96
  def finish!; end

  # Returns the idle time time (in milliseconds) passed since the call to
  # +start!+ and the call to +finish!+
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#110
  def idle_time; end

  # Returns the value of attribute name.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#59
  def name; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#140
  def parent_of?(event); end

  # Returns the value of attribute payload.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#60
  def payload; end

  # Sets the attribute payload
  #
  # @param value the value to set the attribute payload to.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#60
  def payload=(_arg0); end

  # source://activesupport//lib/active_support/notifications/instrumenter.rb#75
  def record; end

  # Record information at the time this event starts
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#89
  def start!; end

  # Returns the value of attribute time.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#59
  def time; end

  # Returns the value of attribute transaction_id.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#59
  def transaction_id; end

  private

  # source://activesupport//lib/active_support/notifications/instrumenter.rb#145
  def now; end

  # Likely on JRuby, TruffleRuby
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#162
  def now_allocations; end

  # source://activesupport//lib/active_support/notifications/instrumenter.rb#152
  def now_cpu; end
end

# This is a default queue implementation that ships with Notifications.
# It just pushes events to all registered log subscribers.
#
# This class is thread safe. All methods are reentrant.
#
# source://activesupport//lib/active_support/notifications/fanout.rb#24
class ActiveSupport::Notifications::Fanout
  include ::Mutex_m

  # @return [Fanout] a new instance of Fanout
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#27
  def initialize; end

  # source://activesupport//lib/active_support/notifications/fanout.rb#75
  def finish(name, id, payload, listeners = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#87
  def iterate_guarding_exceptions(listeners); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#108
  def listeners_for(name); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#117
  def listening?(name); end

  # source://mutex_m/0.1.2/mutex_m.rb#93
  def lock; end

  # source://mutex_m/0.1.2/mutex_m.rb#83
  def locked?; end

  # source://activesupport//lib/active_support/notifications/fanout.rb#79
  def publish(name, *args); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#83
  def publish_event(event); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#71
  def start(name, id, payload); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#34
  def subscribe(pattern = T.unsafe(nil), callable = T.unsafe(nil), monotonic: T.unsafe(nil), &block); end

  # source://mutex_m/0.1.2/mutex_m.rb#78
  def synchronize(&block); end

  # source://mutex_m/0.1.2/mutex_m.rb#88
  def try_lock; end

  # source://mutex_m/0.1.2/mutex_m.rb#98
  def unlock; end

  # source://activesupport//lib/active_support/notifications/fanout.rb#51
  def unsubscribe(subscriber_or_name); end

  # This is a sync queue, so there is no waiting.
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#122
  def wait; end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#125
module ActiveSupport::Notifications::Fanout::Subscribers
  class << self
    # source://activesupport//lib/active_support/notifications/fanout.rb#126
    def new(pattern, listener, monotonic); end
  end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#257
class ActiveSupport::Notifications::Fanout::Subscribers::EventObject < ::ActiveSupport::Notifications::Fanout::Subscribers::Evented
  # source://activesupport//lib/active_support/notifications/fanout.rb#265
  def finish(name, id, payload); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#273
  def publish_event(event); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#258
  def start(name, id, payload); end

  private

  # source://activesupport//lib/active_support/notifications/fanout.rb#278
  def build_event(name, id, payload); end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#182
class ActiveSupport::Notifications::Fanout::Subscribers::Evented
  # @return [Evented] a new instance of Evented
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#185
  def initialize(pattern, delegate); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#210
  def finish(name, id, payload); end

  # Returns the value of attribute pattern.
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#183
  def pattern; end

  # source://activesupport//lib/active_support/notifications/fanout.rb#192
  def publish(name, *args); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#198
  def publish_event(event); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#206
  def start(name, id, payload); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#214
  def subscribed_to?(name); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#218
  def unsubscribe!(name); end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#145
class ActiveSupport::Notifications::Fanout::Subscribers::Matcher
  # @return [Matcher] a new instance of Matcher
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#158
  def initialize(pattern); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#167
  def ===(name); end

  # Returns the value of attribute exclusions.
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#146
  def exclusions; end

  # Returns the value of attribute pattern.
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#146
  def pattern; end

  # source://activesupport//lib/active_support/notifications/fanout.rb#163
  def unsubscribe!(name); end

  class << self
    # source://activesupport//lib/active_support/notifications/fanout.rb#148
    def wrap(pattern); end
  end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#171
class ActiveSupport::Notifications::Fanout::Subscribers::Matcher::AllMessages
  # source://activesupport//lib/active_support/notifications/fanout.rb#172
  def ===(name); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#176
  def unsubscribe!(*_arg0); end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#240
class ActiveSupport::Notifications::Fanout::Subscribers::MonotonicTimed < ::ActiveSupport::Notifications::Fanout::Subscribers::Evented
  # source://activesupport//lib/active_support/notifications/fanout.rb#250
  def finish(name, id, payload); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#241
  def publish(name, *args); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#245
  def start(name, id, payload); end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#223
class ActiveSupport::Notifications::Fanout::Subscribers::Timed < ::ActiveSupport::Notifications::Fanout::Subscribers::Evented
  # source://activesupport//lib/active_support/notifications/fanout.rb#233
  def finish(name, id, payload); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#224
  def publish(name, *args); end

  # source://activesupport//lib/active_support/notifications/fanout.rb#228
  def start(name, id, payload); end
end

# source://activesupport//lib/active_support/notifications/fanout.rb#10
class ActiveSupport::Notifications::InstrumentationSubscriberError < ::RuntimeError
  # @return [InstrumentationSubscriberError] a new instance of InstrumentationSubscriberError
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#13
  def initialize(exceptions); end

  # Returns the value of attribute exceptions.
  #
  # source://activesupport//lib/active_support/notifications/fanout.rb#11
  def exceptions; end
end

# Instrumenters are stored in a thread local.
#
# source://activesupport//lib/active_support/notifications/instrumenter.rb#8
class ActiveSupport::Notifications::Instrumenter
  # @return [Instrumenter] a new instance of Instrumenter
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#11
  def initialize(notifier); end

  # Send a finish notification with +name+ and +payload+.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#44
  def finish(name, payload); end

  # source://activesupport//lib/active_support/notifications/instrumenter.rb#48
  def finish_with_state(listeners_state, name, payload); end

  # Returns the value of attribute id.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#9
  def id; end

  # Given a block, instrument it by measuring the time taken to execute
  # and publish it. Without a block, simply send a message via the
  # notifier. Notice that events get sent even if an error occurs in the
  # passed-in block.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#20
  def instrument(name, payload = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/notifications/instrumenter.rb#34
  def new_event(name, payload = T.unsafe(nil)); end

  # Send a start notification with +name+ and +payload+.
  #
  # source://activesupport//lib/active_support/notifications/instrumenter.rb#39
  def start(name, payload); end

  private

  # source://activesupport//lib/active_support/notifications/instrumenter.rb#53
  def unique_id; end
end

# source://activesupport//lib/active_support/number_helper.rb#4
module ActiveSupport::NumberHelper
  extend ::ActiveSupport::Autoload
  extend ::ActiveSupport::NumberHelper

  # Formats a +number+ into a currency string (e.g., $13.65). You
  # can customize the format in the +options+ hash.
  #
  # The currency unit and number formatting of the current locale will be used
  # unless otherwise specified in the provided options. No currency conversion
  # is performed. If the user is given a way to change their locale, they will
  # also be able to change the relative value of the currency displayed with
  # this helper. If your application will ever support multiple locales, you
  # may want to specify a constant <tt>:locale</tt> option or consider
  # using a library capable of currency conversion.
  #
  # ==== Options
  #
  # * <tt>:locale</tt> - Sets the locale to be used for formatting
  #   (defaults to current locale).
  # * <tt>:precision</tt> - Sets the level of precision (defaults
  #   to 2).
  # * <tt>:round_mode</tt> - Determine how rounding is performed
  #   (defaults to :default. See BigDecimal::mode)
  # * <tt>:unit</tt> - Sets the denomination of the currency
  #   (defaults to "$").
  # * <tt>:separator</tt> - Sets the separator between the units
  #   (defaults to ".").
  # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults
  #   to ",").
  # * <tt>:format</tt> - Sets the format for non-negative numbers
  #   (defaults to "%u%n").  Fields are <tt>%u</tt> for the
  #   currency, and <tt>%n</tt> for the number.
  # * <tt>:negative_format</tt> - Sets the format for negative
  #   numbers (defaults to prepending a hyphen to the formatted
  #   number given by <tt>:format</tt>).  Accepts the same fields
  #   than <tt>:format</tt>, except <tt>%n</tt> is here the
  #   absolute value of the number.
  # * <tt>:strip_insignificant_zeros</tt> - If +true+ removes
  #   insignificant zeros after the decimal separator (defaults to
  #   +false+).
  #
  # ==== Examples
  #
  #   number_to_currency(1234567890.50)                # => "$1,234,567,890.50"
  #   number_to_currency(1234567890.506)               # => "$1,234,567,890.51"
  #   number_to_currency(1234567890.506, precision: 3) # => "$1,234,567,890.506"
  #   number_to_currency(1234567890.506, locale: :fr)  # => "1 234 567 890,51 €"
  #   number_to_currency('123a456')                    # => "$123a456"
  #
  #   number_to_currency(-0.456789, precision: 0)
  #   # => "$0"
  #   number_to_currency(-1234567890.50, negative_format: '(%u%n)')
  #   # => "($1,234,567,890.50)"
  #   number_to_currency(1234567890.50, unit: '&pound;', separator: ',', delimiter: '')
  #   # => "&pound;1234567890,50"
  #   number_to_currency(1234567890.50, unit: '&pound;', separator: ',', delimiter: '', format: '%n %u')
  #   # => "1234567890,50 &pound;"
  #   number_to_currency(1234567890.50, strip_insignificant_zeros: true)
  #   # => "$1,234,567,890.5"
  #   number_to_currency(1234567890.50, precision: 0, round_mode: :up)
  #   # => "$1,234,567,891"
  #
  # source://activesupport//lib/active_support/number_helper.rb#114
  def number_to_currency(number, options = T.unsafe(nil)); end

  # Formats a +number+ with grouped thousands using +delimiter+
  # (e.g., 12,324). You can customize the format in the +options+
  # hash.
  #
  # ==== Options
  #
  # * <tt>:locale</tt> - Sets the locale to be used for formatting
  #   (defaults to current locale).
  # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults
  #   to ",").
  # * <tt>:separator</tt> - Sets the separator between the
  #   fractional and integer digits (defaults to ".").
  # * <tt>:delimiter_pattern</tt> - Sets a custom regular expression used for
  #   deriving the placement of delimiter. Helpful when using currency formats
  #   like INR.
  #
  # ==== Examples
  #
  #   number_to_delimited(12345678)                    # => "12,345,678"
  #   number_to_delimited('123456')                    # => "123,456"
  #   number_to_delimited(12345678.05)                 # => "12,345,678.05"
  #   number_to_delimited(12345678, delimiter: '.')    # => "12.345.678"
  #   number_to_delimited(12345678, delimiter: ',')    # => "12,345,678"
  #   number_to_delimited(12345678.05, separator: ' ') # => "12,345,678 05"
  #   number_to_delimited(12345678.05, locale: :fr)    # => "12 345 678,05"
  #   number_to_delimited('112a')                      # => "112a"
  #   number_to_delimited(98765432.98, delimiter: ' ', separator: ',')
  #                                                    # => "98 765 432,98"
  #   number_to_delimited("123456.78",
  #     delimiter_pattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/)
  #                                                    # => "1,23,456.78"
  #
  # source://activesupport//lib/active_support/number_helper.rb#189
  def number_to_delimited(number, options = T.unsafe(nil)); end

  # Pretty prints (formats and approximates) a number in a way it
  # is more readable by humans (e.g.: 1200000000 becomes "1.2
  # Billion"). This is useful for numbers that can get very large
  # (and too hard to read).
  #
  # See <tt>number_to_human_size</tt> if you want to print a file
  # size.
  #
  # You can also define your own unit-quantifier names if you want
  # to use other decimal units (e.g.: 1500 becomes "1.5
  # kilometers", 0.150 becomes "150 milliliters", etc). You may
  # define a wide range of unit quantifiers, even fractional ones
  # (centi, deci, mili, etc).
  #
  # ==== Options
  #
  # * <tt>:locale</tt> - Sets the locale to be used for formatting
  #   (defaults to current locale).
  # * <tt>:precision</tt> - Sets the precision of the number
  #   (defaults to 3).
  # * <tt>:round_mode</tt> - Determine how rounding is performed
  #   (defaults to :default. See BigDecimal::mode)
  # * <tt>:significant</tt> - If +true+, precision will be the number
  #   of significant_digits. If +false+, the number of fractional
  #   digits (defaults to +true+)
  # * <tt>:separator</tt> - Sets the separator between the
  #   fractional and integer digits (defaults to ".").
  # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults
  #   to "").
  # * <tt>:strip_insignificant_zeros</tt> - If +true+ removes
  #   insignificant zeros after the decimal separator (defaults to
  #   +true+)
  # * <tt>:units</tt> - A Hash of unit quantifier names. Or a
  #   string containing an i18n scope where to find this hash. It
  #   might have the following keys:
  #   * *integers*: <tt>:unit</tt>, <tt>:ten</tt>,
  #     <tt>:hundred</tt>, <tt>:thousand</tt>, <tt>:million</tt>,
  #     <tt>:billion</tt>, <tt>:trillion</tt>,
  #     <tt>:quadrillion</tt>
  #   * *fractionals*: <tt>:deci</tt>, <tt>:centi</tt>,
  #     <tt>:mili</tt>, <tt>:micro</tt>, <tt>:nano</tt>,
  #     <tt>:pico</tt>, <tt>:femto</tt>
  # * <tt>:format</tt> - Sets the format of the output string
  #   (defaults to "%n %u"). The field types are:
  #   * %u - The quantifier (ex.: 'thousand')
  #   * %n - The number
  #
  # ==== Examples
  #
  #   number_to_human(123)                         # => "123"
  #   number_to_human(1234)                        # => "1.23 Thousand"
  #   number_to_human(12345)                       # => "12.3 Thousand"
  #   number_to_human(1234567)                     # => "1.23 Million"
  #   number_to_human(1234567890)                  # => "1.23 Billion"
  #   number_to_human(1234567890123)               # => "1.23 Trillion"
  #   number_to_human(1234567890123456)            # => "1.23 Quadrillion"
  #   number_to_human(1234567890123456789)         # => "1230 Quadrillion"
  #   number_to_human(489939, precision: 2)        # => "490 Thousand"
  #   number_to_human(489939, precision: 4)        # => "489.9 Thousand"
  #   number_to_human(489939, precision: 2
  #                         , round_mode: :down)   # => "480 Thousand"
  #   number_to_human(1234567, precision: 4,
  #                            significant: false) # => "1.2346 Million"
  #   number_to_human(1234567, precision: 1,
  #                            separator: ',',
  #                            significant: false) # => "1,2 Million"
  #
  #   number_to_human(500000000, precision: 5)           # => "500 Million"
  #   number_to_human(12345012345, significant: false)   # => "12.345 Billion"
  #
  # Non-significant zeros after the decimal separator are stripped
  # out by default (set <tt>:strip_insignificant_zeros</tt> to
  # +false+ to change that):
  #
  #   number_to_human(12.00001)                                       # => "12"
  #   number_to_human(12.00001, strip_insignificant_zeros: false)     # => "12.0"
  #
  # ==== Custom Unit Quantifiers
  #
  # You can also use your own custom unit quantifiers:
  #
  #   number_to_human(500000, units: { unit: 'ml', thousand: 'lt' })  # => "500 lt"
  #
  # If in your I18n locale you have:
  #
  #   distance:
  #     centi:
  #       one: "centimeter"
  #       other: "centimeters"
  #     unit:
  #       one: "meter"
  #       other: "meters"
  #     thousand:
  #       one: "kilometer"
  #       other: "kilometers"
  #     billion: "gazillion-distance"
  #
  # Then you could do:
  #
  #   number_to_human(543934, units: :distance)            # => "544 kilometers"
  #   number_to_human(54393498, units: :distance)          # => "54400 kilometers"
  #   number_to_human(54393498000, units: :distance)       # => "54.4 gazillion-distance"
  #   number_to_human(343, units: :distance, precision: 1) # => "300 meters"
  #   number_to_human(1, units: :distance)                 # => "1 meter"
  #   number_to_human(0.34, units: :distance)              # => "34 centimeters"
  #
  # source://activesupport//lib/active_support/number_helper.rb#392
  def number_to_human(number, options = T.unsafe(nil)); end

  # Formats the bytes in +number+ into a more understandable
  # representation (e.g., giving it 1500 yields 1.46 KB). This
  # method is useful for reporting file sizes to users. You can
  # customize the format in the +options+ hash.
  #
  # See <tt>number_to_human</tt> if you want to pretty-print a
  # generic number.
  #
  # ==== Options
  #
  # * <tt>:locale</tt> - Sets the locale to be used for formatting
  #   (defaults to current locale).
  # * <tt>:precision</tt> - Sets the precision of the number
  #   (defaults to 3).
  # * <tt>:round_mode</tt> - Determine how rounding is performed
  #   (defaults to :default. See BigDecimal::mode)
  # * <tt>:significant</tt> - If +true+, precision will be the number
  #   of significant_digits. If +false+, the number of fractional
  #   digits (defaults to +true+)
  # * <tt>:separator</tt> - Sets the separator between the
  #   fractional and integer digits (defaults to ".").
  # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults
  #   to "").
  # * <tt>:strip_insignificant_zeros</tt> - If +true+ removes
  #   insignificant zeros after the decimal separator (defaults to
  #   +true+)
  #
  # ==== Examples
  #
  #   number_to_human_size(123)                                    # => "123 Bytes"
  #   number_to_human_size(1234)                                   # => "1.21 KB"
  #   number_to_human_size(12345)                                  # => "12.1 KB"
  #   number_to_human_size(1234567)                                # => "1.18 MB"
  #   number_to_human_size(1234567890)                             # => "1.15 GB"
  #   number_to_human_size(1234567890123)                          # => "1.12 TB"
  #   number_to_human_size(1234567890123456)                       # => "1.1 PB"
  #   number_to_human_size(1234567890123456789)                    # => "1.07 EB"
  #   number_to_human_size(1234567, precision: 2)                  # => "1.2 MB"
  #   number_to_human_size(483989, precision: 2)                   # => "470 KB"
  #   number_to_human_size(483989, precision: 2, round_mode: :up)  # => "480 KB"
  #   number_to_human_size(1234567, precision: 2, separator: ',')  # => "1,2 MB"
  #   number_to_human_size(1234567890123, precision: 5)            # => "1.1228 TB"
  #   number_to_human_size(524288000, precision: 5)                # => "500 MB"
  #
  # source://activesupport//lib/active_support/number_helper.rb#283
  def number_to_human_size(number, options = T.unsafe(nil)); end

  # Formats a +number+ as a percentage string (e.g., 65%). You can
  # customize the format in the +options+ hash.
  #
  # ==== Options
  #
  # * <tt>:locale</tt> - Sets the locale to be used for formatting
  #   (defaults to current locale).
  # * <tt>:precision</tt> - Sets the precision of the number
  #   (defaults to 3). Keeps the number's precision if +nil+.
  # * <tt>:round_mode</tt> - Determine how rounding is performed
  #   (defaults to :default. See BigDecimal::mode)
  # * <tt>:significant</tt> - If +true+, precision will be the number
  #   of significant_digits. If +false+, the number of fractional
  #   digits (defaults to +false+).
  # * <tt>:separator</tt> - Sets the separator between the
  #   fractional and integer digits (defaults to ".").
  # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults
  #   to "").
  # * <tt>:strip_insignificant_zeros</tt> - If +true+ removes
  #   insignificant zeros after the decimal separator (defaults to
  #   +false+).
  # * <tt>:format</tt> - Specifies the format of the percentage
  #   string The number field is <tt>%n</tt> (defaults to "%n%").
  #
  # ==== Examples
  #
  #   number_to_percentage(100)                                              # => "100.000%"
  #   number_to_percentage('98')                                             # => "98.000%"
  #   number_to_percentage(100, precision: 0)                                # => "100%"
  #   number_to_percentage(1000, delimiter: '.', separator: ',')             # => "1.000,000%"
  #   number_to_percentage(302.24398923423, precision: 5)                    # => "302.24399%"
  #   number_to_percentage(1000, locale: :fr)                                # => "1000,000%"
  #   number_to_percentage(1000, precision: nil)                             # => "1000%"
  #   number_to_percentage('98a')                                            # => "98a%"
  #   number_to_percentage(100, format: '%n  %')                             # => "100.000  %"
  #   number_to_percentage(302.24398923423, precision: 5, round_mode: :down) # => "302.24398%"
  #
  # source://activesupport//lib/active_support/number_helper.rb#154
  def number_to_percentage(number, options = T.unsafe(nil)); end

  # Formats a +number+ into a phone number (US by default e.g., (555)
  # 123-9876). You can customize the format in the +options+ hash.
  #
  # ==== Options
  #
  # * <tt>:area_code</tt> - Adds parentheses around the area code.
  # * <tt>:delimiter</tt> - Specifies the delimiter to use
  #   (defaults to "-").
  # * <tt>:extension</tt> - Specifies an extension to add to the
  #   end of the generated number.
  # * <tt>:country_code</tt> - Sets the country code for the phone
  #   number.
  # * <tt>:pattern</tt> - Specifies how the number is divided into three
  #   groups with the custom regexp to override the default format.
  # ==== Examples
  #
  #   number_to_phone(5551234)                                     # => "555-1234"
  #   number_to_phone('5551234')                                   # => "555-1234"
  #   number_to_phone(1235551234)                                  # => "123-555-1234"
  #   number_to_phone(1235551234, area_code: true)                 # => "(123) 555-1234"
  #   number_to_phone(1235551234, delimiter: ' ')                  # => "123 555 1234"
  #   number_to_phone(1235551234, area_code: true, extension: 555) # => "(123) 555-1234 x 555"
  #   number_to_phone(1235551234, country_code: 1)                 # => "+1-123-555-1234"
  #   number_to_phone('123a456')                                   # => "123a456"
  #
  #   number_to_phone(1235551234, country_code: 1, extension: 1343, delimiter: '.')
  #   # => "+1.123.555.1234 x 1343"
  #
  #   number_to_phone(75561234567, pattern: /(\d{1,4})(\d{4})(\d{4})$/, area_code: true)
  #   # => "(755) 6123-4567"
  #   number_to_phone(13312345678, pattern: /(\d{3})(\d{4})(\d{4})$/)
  #   # => "133-1234-5678"
  #
  # source://activesupport//lib/active_support/number_helper.rb#53
  def number_to_phone(number, options = T.unsafe(nil)); end

  # Formats a +number+ with the specified level of
  # <tt>:precision</tt> (e.g., 112.32 has a precision of 2 if
  # +:significant+ is +false+, and 5 if +:significant+ is +true+).
  # You can customize the format in the +options+ hash.
  #
  # ==== Options
  #
  # * <tt>:locale</tt> - Sets the locale to be used for formatting
  #   (defaults to current locale).
  # * <tt>:precision</tt> - Sets the precision of the number
  #   (defaults to 3). Keeps the number's precision if +nil+.
  # * <tt>:round_mode</tt> - Determine how rounding is performed
  #   (defaults to :default. See BigDecimal::mode)
  # * <tt>:significant</tt> - If +true+, precision will be the number
  #   of significant_digits. If +false+, the number of fractional
  #   digits (defaults to +false+).
  # * <tt>:separator</tt> - Sets the separator between the
  #   fractional and integer digits (defaults to ".").
  # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults
  #   to "").
  # * <tt>:strip_insignificant_zeros</tt> - If +true+ removes
  #   insignificant zeros after the decimal separator (defaults to
  #   +false+).
  #
  # ==== Examples
  #
  #   number_to_rounded(111.2345)                                  # => "111.235"
  #   number_to_rounded(111.2345, precision: 2)                    # => "111.23"
  #   number_to_rounded(13, precision: 5)                          # => "13.00000"
  #   number_to_rounded(389.32314, precision: 0)                   # => "389"
  #   number_to_rounded(111.2345, significant: true)               # => "111"
  #   number_to_rounded(111.2345, precision: 1, significant: true) # => "100"
  #   number_to_rounded(13, precision: 5, significant: true)       # => "13.000"
  #   number_to_rounded(13, precision: nil)                        # => "13"
  #   number_to_rounded(389.32314, precision: 0, round_mode: :up)  # => "390"
  #   number_to_rounded(111.234, locale: :fr)                      # => "111,234"
  #
  #   number_to_rounded(13, precision: 5, significant: true, strip_insignificant_zeros: true)
  #   # => "13"
  #
  #   number_to_rounded(389.32314, precision: 4, significant: true) # => "389.3"
  #   number_to_rounded(1111.2345, precision: 2, separator: ',', delimiter: '.')
  #   # => "1.111,23"
  #
  # source://activesupport//lib/active_support/number_helper.rb#236
  def number_to_rounded(number, options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/number_helper/number_converter.rb#11
class ActiveSupport::NumberHelper::NumberConverter
  # @return [NumberConverter] a new instance of NumberConverter
  #
  # source://activesupport//lib/active_support/number_helper/number_converter.rb#123
  def initialize(number, options); end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#128
  def execute; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
  def namespace; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
  def namespace=(_arg0); end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
  def namespace?; end

  # Returns the value of attribute number.
  #
  # source://activesupport//lib/active_support/number_helper/number_converter.rb#18
  def number; end

  # Returns the value of attribute opts.
  #
  # source://activesupport//lib/active_support/number_helper/number_converter.rb#18
  def opts; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
  def validate_float; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
  def validate_float=(_arg0); end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
  def validate_float?; end

  private

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#147
  def default_format_options; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#172
  def default_value(key); end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#143
  def format_options; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#153
  def i18n_format_options; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#139
  def options; end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#168
  def translate_in_locale(key, **i18n_options); end

  # source://activesupport//lib/active_support/number_helper/number_converter.rb#164
  def translate_number_value_with_default(key, **i18n_options); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/number_helper/number_converter.rb#176
  def valid_float?; end

  class << self
    # source://activesupport//lib/active_support/number_helper/number_converter.rb#119
    def convert(number, options); end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace; end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace=(value); end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace?; end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
    def validate_float; end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
    def validate_float=(value); end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
    def validate_float?; end
  end
end

# source://activesupport//lib/active_support/number_helper/number_converter.rb#20
ActiveSupport::NumberHelper::NumberConverter::DEFAULTS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/number_helper/number_to_currency_converter.rb#7
class ActiveSupport::NumberHelper::NumberToCurrencyConverter < ::ActiveSupport::NumberHelper::NumberConverter
  # source://activesupport//lib/active_support/number_helper/number_to_currency_converter.rb#10
  def convert; end

  private

  # source://activesupport//lib/active_support/number_helper/number_to_currency_converter.rb#38
  def i18n_opts; end

  # source://activesupport//lib/active_support/number_helper/number_to_currency_converter.rb#29
  def options; end

  class << self
    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace; end
  end
end

# source://activesupport//lib/active_support/number_helper/number_to_delimited_converter.rb#7
class ActiveSupport::NumberHelper::NumberToDelimitedConverter < ::ActiveSupport::NumberHelper::NumberConverter
  # source://activesupport//lib/active_support/number_helper/number_to_delimited_converter.rb#12
  def convert; end

  private

  # source://activesupport//lib/active_support/number_helper/number_to_delimited_converter.rb#25
  def delimiter_pattern; end

  # source://activesupport//lib/active_support/number_helper/number_to_delimited_converter.rb#17
  def parts; end

  class << self
    # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
    def validate_float; end
  end
end

# source://activesupport//lib/active_support/number_helper/number_to_delimited_converter.rb#10
ActiveSupport::NumberHelper::NumberToDelimitedConverter::DEFAULT_DELIMITER_REGEX = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#7
class ActiveSupport::NumberHelper::NumberToHumanConverter < ::ActiveSupport::NumberHelper::NumberConverter
  # source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#15
  def convert; end

  private

  # source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#50
  def calculate_exponent(units); end

  # source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#38
  def determine_unit(units, exponent); end

  # source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#34
  def format; end

  # source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#55
  def unit_exponents(units); end

  class << self
    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace; end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
    def validate_float; end
  end
end

# source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#8
ActiveSupport::NumberHelper::NumberToHumanConverter::DECIMAL_UNITS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/number_helper/number_to_human_converter.rb#10
ActiveSupport::NumberHelper::NumberToHumanConverter::INVERTED_DECIMAL_UNITS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#7
class ActiveSupport::NumberHelper::NumberToHumanSizeConverter < ::ActiveSupport::NumberHelper::NumberConverter
  # source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#13
  def convert; end

  private

  # source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#55
  def base; end

  # source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#31
  def conversion_format; end

  # source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#44
  def exponent; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#51
  def smaller_than_base?; end

  # source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#39
  def storage_unit_key; end

  # source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#35
  def unit; end

  class << self
    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace; end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
    def validate_float; end
  end
end

# source://activesupport//lib/active_support/number_helper/number_to_human_size_converter.rb#8
ActiveSupport::NumberHelper::NumberToHumanSizeConverter::STORAGE_UNITS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/number_helper/number_to_percentage_converter.rb#7
class ActiveSupport::NumberHelper::NumberToPercentageConverter < ::ActiveSupport::NumberHelper::NumberConverter
  # source://activesupport//lib/active_support/number_helper/number_to_percentage_converter.rb#10
  def convert; end

  class << self
    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace; end
  end
end

# source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#7
class ActiveSupport::NumberHelper::NumberToPhoneConverter < ::ActiveSupport::NumberHelper::NumberConverter
  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#8
  def convert; end

  private

  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#15
  def convert_to_phone_number(number); end

  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#23
  def convert_with_area_code(number); end

  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#30
  def convert_without_area_code(number); end

  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#46
  def country_code(code); end

  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#42
  def delimiter; end

  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#50
  def phone_ext(ext); end

  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#54
  def regexp_pattern(default_pattern); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/number_helper/number_to_phone_converter.rb#38
  def start_with_delimiter?(number); end
end

# source://activesupport//lib/active_support/number_helper/number_to_rounded_converter.rb#7
class ActiveSupport::NumberHelper::NumberToRoundedConverter < ::ActiveSupport::NumberHelper::NumberConverter
  # source://activesupport//lib/active_support/number_helper/number_to_rounded_converter.rb#11
  def convert; end

  private

  # source://activesupport//lib/active_support/number_helper/number_to_rounded_converter.rb#49
  def format_number(number); end

  # source://activesupport//lib/active_support/number_helper/number_to_rounded_converter.rb#45
  def strip_insignificant_zeros; end

  class << self
    # source://activesupport//lib/active_support/number_helper/number_converter.rb#13
    def namespace; end

    # source://activesupport//lib/active_support/number_helper/number_converter.rb#16
    def validate_float; end
  end
end

# source://activesupport//lib/active_support/number_helper/rounding_helper.rb#5
class ActiveSupport::NumberHelper::RoundingHelper
  # @return [RoundingHelper] a new instance of RoundingHelper
  #
  # source://activesupport//lib/active_support/number_helper/rounding_helper.rb#8
  def initialize(options); end

  # source://activesupport//lib/active_support/number_helper/rounding_helper.rb#20
  def digit_count(number); end

  # Returns the value of attribute options.
  #
  # source://activesupport//lib/active_support/number_helper/rounding_helper.rb#6
  def options; end

  # source://activesupport//lib/active_support/number_helper/rounding_helper.rb#12
  def round(number); end

  private

  # source://activesupport//lib/active_support/number_helper/rounding_helper.rb#37
  def absolute_precision(number); end

  # source://activesupport//lib/active_support/number_helper/rounding_helper.rb#26
  def convert_to_decimal(number); end
end

# source://activesupport//lib/active_support/core_ext/numeric/conversions.rb#7
module ActiveSupport::NumericWithFormat
  # Provides options for converting numbers into formatted strings.
  # Options are provided for phone numbers, currency, percentage,
  # precision, positional notation, file size, and pretty printing.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  # ==== Options
  #
  # For details on which formats use which options, see ActiveSupport::NumberHelper
  #
  # ==== Examples
  #
  #  Phone Numbers:
  #  5551234.to_fs(:phone)                                     # => "555-1234"
  #  1235551234.to_fs(:phone)                                  # => "123-555-1234"
  #  1235551234.to_fs(:phone, area_code: true)                 # => "(123) 555-1234"
  #  1235551234.to_fs(:phone, delimiter: ' ')                  # => "123 555 1234"
  #  1235551234.to_fs(:phone, area_code: true, extension: 555) # => "(123) 555-1234 x 555"
  #  1235551234.to_fs(:phone, country_code: 1)                 # => "+1-123-555-1234"
  #  1235551234.to_fs(:phone, country_code: 1, extension: 1343, delimiter: '.')
  #  # => "+1.123.555.1234 x 1343"
  #
  #  Currency:
  #  1234567890.50.to_fs(:currency)                     # => "$1,234,567,890.50"
  #  1234567890.506.to_fs(:currency)                    # => "$1,234,567,890.51"
  #  1234567890.506.to_fs(:currency, precision: 3)      # => "$1,234,567,890.506"
  #  1234567890.506.to_fs(:currency, round_mode: :down) # => "$1,234,567,890.50"
  #  1234567890.506.to_fs(:currency, locale: :fr)       # => "1 234 567 890,51 €"
  #  -1234567890.50.to_fs(:currency, negative_format: '(%u%n)')
  #  # => "($1,234,567,890.50)"
  #  1234567890.50.to_fs(:currency, unit: '&pound;', separator: ',', delimiter: '')
  #  # => "&pound;1234567890,50"
  #  1234567890.50.to_fs(:currency, unit: '&pound;', separator: ',', delimiter: '', format: '%n %u')
  #  # => "1234567890,50 &pound;"
  #
  #  Percentage:
  #  100.to_fs(:percentage)                                  # => "100.000%"
  #  100.to_fs(:percentage, precision: 0)                    # => "100%"
  #  1000.to_fs(:percentage, delimiter: '.', separator: ',') # => "1.000,000%"
  #  302.24398923423.to_fs(:percentage, precision: 5)        # => "302.24399%"
  #  302.24398923423.to_fs(:percentage, round_mode: :down)   # => "302.243%"
  #  1000.to_fs(:percentage, locale: :fr)                    # => "1 000,000%"
  #  100.to_fs(:percentage, format: '%n  %')                 # => "100.000  %"
  #
  #  Delimited:
  #  12345678.to_fs(:delimited)                     # => "12,345,678"
  #  12345678.05.to_fs(:delimited)                  # => "12,345,678.05"
  #  12345678.to_fs(:delimited, delimiter: '.')     # => "12.345.678"
  #  12345678.to_fs(:delimited, delimiter: ',')     # => "12,345,678"
  #  12345678.05.to_fs(:delimited, separator: ' ')  # => "12,345,678 05"
  #  12345678.05.to_fs(:delimited, locale: :fr)     # => "12 345 678,05"
  #  98765432.98.to_fs(:delimited, delimiter: ' ', separator: ',')
  #  # => "98 765 432,98"
  #
  #  Rounded:
  #  111.2345.to_fs(:rounded)                                      # => "111.235"
  #  111.2345.to_fs(:rounded, precision: 2)                        # => "111.23"
  #  111.2345.to_fs(:rounded, precision: 2, round_mode: :up)       # => "111.24"
  #  13.to_fs(:rounded, precision: 5)                              # => "13.00000"
  #  389.32314.to_fs(:rounded, precision: 0)                       # => "389"
  #  111.2345.to_fs(:rounded, significant: true)                   # => "111"
  #  111.2345.to_fs(:rounded, precision: 1, significant: true)     # => "100"
  #  13.to_fs(:rounded, precision: 5, significant: true)           # => "13.000"
  #  111.234.to_fs(:rounded, locale: :fr)                          # => "111,234"
  #  13.to_fs(:rounded, precision: 5, significant: true, strip_insignificant_zeros: true)
  #  # => "13"
  #  389.32314.to_fs(:rounded, precision: 4, significant: true)    # => "389.3"
  #  1111.2345.to_fs(:rounded, precision: 2, separator: ',', delimiter: '.')
  #  # => "1.111,23"
  #
  #  Human-friendly size in Bytes:
  #  123.to_fs(:human_size)                                    # => "123 Bytes"
  #  1234.to_fs(:human_size)                                   # => "1.21 KB"
  #  12345.to_fs(:human_size)                                  # => "12.1 KB"
  #  1234567.to_fs(:human_size)                                # => "1.18 MB"
  #  1234567890.to_fs(:human_size)                             # => "1.15 GB"
  #  1234567890123.to_fs(:human_size)                          # => "1.12 TB"
  #  1234567890123456.to_fs(:human_size)                       # => "1.1 PB"
  #  1234567890123456789.to_fs(:human_size)                    # => "1.07 EB"
  #  1234567.to_fs(:human_size, precision: 2)                  # => "1.2 MB"
  #  1234567.to_fs(:human_size, precision: 2, round_mode: :up) # => "1.3 MB"
  #  483989.to_fs(:human_size, precision: 2)                   # => "470 KB"
  #  1234567.to_fs(:human_size, precision: 2, separator: ',')  # => "1,2 MB"
  #  1234567890123.to_fs(:human_size, precision: 5)            # => "1.1228 TB"
  #  524288000.to_fs(:human_size, precision: 5)                # => "500 MB"
  #
  #  Human-friendly format:
  #  123.to_fs(:human)                                       # => "123"
  #  1234.to_fs(:human)                                      # => "1.23 Thousand"
  #  12345.to_fs(:human)                                     # => "12.3 Thousand"
  #  1234567.to_fs(:human)                                   # => "1.23 Million"
  #  1234567890.to_fs(:human)                                # => "1.23 Billion"
  #  1234567890123.to_fs(:human)                             # => "1.23 Trillion"
  #  1234567890123456.to_fs(:human)                          # => "1.23 Quadrillion"
  #  1234567890123456789.to_fs(:human)                       # => "1230 Quadrillion"
  #  489939.to_fs(:human, precision: 2)                      # => "490 Thousand"
  #  489939.to_fs(:human, precision: 2, round_mode: :down)   # => "480 Thousand"
  #  489939.to_fs(:human, precision: 4)                      # => "489.9 Thousand"
  #  1234567.to_fs(:human, precision: 4,
  #                   significant: false)                             # => "1.2346 Million"
  #  1234567.to_fs(:human, precision: 1,
  #                   separator: ',',
  #                   significant: false)                             # => "1,2 Million"
  #
  # source://activesupport//lib/active_support/core_ext/numeric/conversions.rb#111
  def to_formatted_s(format = T.unsafe(nil), options = T.unsafe(nil)); end

  # Provides options for converting numbers into formatted strings.
  # Options are provided for phone numbers, currency, percentage,
  # precision, positional notation, file size, and pretty printing.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  # ==== Options
  #
  # For details on which formats use which options, see ActiveSupport::NumberHelper
  #
  # ==== Examples
  #
  #  Phone Numbers:
  #  5551234.to_fs(:phone)                                     # => "555-1234"
  #  1235551234.to_fs(:phone)                                  # => "123-555-1234"
  #  1235551234.to_fs(:phone, area_code: true)                 # => "(123) 555-1234"
  #  1235551234.to_fs(:phone, delimiter: ' ')                  # => "123 555 1234"
  #  1235551234.to_fs(:phone, area_code: true, extension: 555) # => "(123) 555-1234 x 555"
  #  1235551234.to_fs(:phone, country_code: 1)                 # => "+1-123-555-1234"
  #  1235551234.to_fs(:phone, country_code: 1, extension: 1343, delimiter: '.')
  #  # => "+1.123.555.1234 x 1343"
  #
  #  Currency:
  #  1234567890.50.to_fs(:currency)                     # => "$1,234,567,890.50"
  #  1234567890.506.to_fs(:currency)                    # => "$1,234,567,890.51"
  #  1234567890.506.to_fs(:currency, precision: 3)      # => "$1,234,567,890.506"
  #  1234567890.506.to_fs(:currency, round_mode: :down) # => "$1,234,567,890.50"
  #  1234567890.506.to_fs(:currency, locale: :fr)       # => "1 234 567 890,51 €"
  #  -1234567890.50.to_fs(:currency, negative_format: '(%u%n)')
  #  # => "($1,234,567,890.50)"
  #  1234567890.50.to_fs(:currency, unit: '&pound;', separator: ',', delimiter: '')
  #  # => "&pound;1234567890,50"
  #  1234567890.50.to_fs(:currency, unit: '&pound;', separator: ',', delimiter: '', format: '%n %u')
  #  # => "1234567890,50 &pound;"
  #
  #  Percentage:
  #  100.to_fs(:percentage)                                  # => "100.000%"
  #  100.to_fs(:percentage, precision: 0)                    # => "100%"
  #  1000.to_fs(:percentage, delimiter: '.', separator: ',') # => "1.000,000%"
  #  302.24398923423.to_fs(:percentage, precision: 5)        # => "302.24399%"
  #  302.24398923423.to_fs(:percentage, round_mode: :down)   # => "302.243%"
  #  1000.to_fs(:percentage, locale: :fr)                    # => "1 000,000%"
  #  100.to_fs(:percentage, format: '%n  %')                 # => "100.000  %"
  #
  #  Delimited:
  #  12345678.to_fs(:delimited)                     # => "12,345,678"
  #  12345678.05.to_fs(:delimited)                  # => "12,345,678.05"
  #  12345678.to_fs(:delimited, delimiter: '.')     # => "12.345.678"
  #  12345678.to_fs(:delimited, delimiter: ',')     # => "12,345,678"
  #  12345678.05.to_fs(:delimited, separator: ' ')  # => "12,345,678 05"
  #  12345678.05.to_fs(:delimited, locale: :fr)     # => "12 345 678,05"
  #  98765432.98.to_fs(:delimited, delimiter: ' ', separator: ',')
  #  # => "98 765 432,98"
  #
  #  Rounded:
  #  111.2345.to_fs(:rounded)                                      # => "111.235"
  #  111.2345.to_fs(:rounded, precision: 2)                        # => "111.23"
  #  111.2345.to_fs(:rounded, precision: 2, round_mode: :up)       # => "111.24"
  #  13.to_fs(:rounded, precision: 5)                              # => "13.00000"
  #  389.32314.to_fs(:rounded, precision: 0)                       # => "389"
  #  111.2345.to_fs(:rounded, significant: true)                   # => "111"
  #  111.2345.to_fs(:rounded, precision: 1, significant: true)     # => "100"
  #  13.to_fs(:rounded, precision: 5, significant: true)           # => "13.000"
  #  111.234.to_fs(:rounded, locale: :fr)                          # => "111,234"
  #  13.to_fs(:rounded, precision: 5, significant: true, strip_insignificant_zeros: true)
  #  # => "13"
  #  389.32314.to_fs(:rounded, precision: 4, significant: true)    # => "389.3"
  #  1111.2345.to_fs(:rounded, precision: 2, separator: ',', delimiter: '.')
  #  # => "1.111,23"
  #
  #  Human-friendly size in Bytes:
  #  123.to_fs(:human_size)                                    # => "123 Bytes"
  #  1234.to_fs(:human_size)                                   # => "1.21 KB"
  #  12345.to_fs(:human_size)                                  # => "12.1 KB"
  #  1234567.to_fs(:human_size)                                # => "1.18 MB"
  #  1234567890.to_fs(:human_size)                             # => "1.15 GB"
  #  1234567890123.to_fs(:human_size)                          # => "1.12 TB"
  #  1234567890123456.to_fs(:human_size)                       # => "1.1 PB"
  #  1234567890123456789.to_fs(:human_size)                    # => "1.07 EB"
  #  1234567.to_fs(:human_size, precision: 2)                  # => "1.2 MB"
  #  1234567.to_fs(:human_size, precision: 2, round_mode: :up) # => "1.3 MB"
  #  483989.to_fs(:human_size, precision: 2)                   # => "470 KB"
  #  1234567.to_fs(:human_size, precision: 2, separator: ',')  # => "1,2 MB"
  #  1234567890123.to_fs(:human_size, precision: 5)            # => "1.1228 TB"
  #  524288000.to_fs(:human_size, precision: 5)                # => "500 MB"
  #
  #  Human-friendly format:
  #  123.to_fs(:human)                                       # => "123"
  #  1234.to_fs(:human)                                      # => "1.23 Thousand"
  #  12345.to_fs(:human)                                     # => "12.3 Thousand"
  #  1234567.to_fs(:human)                                   # => "1.23 Million"
  #  1234567890.to_fs(:human)                                # => "1.23 Billion"
  #  1234567890123.to_fs(:human)                             # => "1.23 Trillion"
  #  1234567890123456.to_fs(:human)                          # => "1.23 Quadrillion"
  #  1234567890123456789.to_fs(:human)                       # => "1230 Quadrillion"
  #  489939.to_fs(:human, precision: 2)                      # => "490 Thousand"
  #  489939.to_fs(:human, precision: 2, round_mode: :down)   # => "480 Thousand"
  #  489939.to_fs(:human, precision: 4)                      # => "489.9 Thousand"
  #  1234567.to_fs(:human, precision: 4,
  #                   significant: false)                             # => "1.2346 Million"
  #  1234567.to_fs(:human, precision: 1,
  #                   separator: ',',
  #                   significant: false)                             # => "1,2 Million"
  #
  # source://activesupport//lib/active_support/core_ext/numeric/conversions.rb#111
  def to_fs(format = T.unsafe(nil), options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/option_merger.rb#6
class ActiveSupport::OptionMerger
  # @return [OptionMerger] a new instance of OptionMerger
  #
  # source://activesupport//lib/active_support/option_merger.rb#11
  def initialize(context, options); end

  private

  # source://activesupport//lib/active_support/option_merger.rb#16
  def method_missing(method, *arguments, &block); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/option_merger.rb#34
  def respond_to_missing?(*arguments); end
end

# DEPRECATED: <tt>ActiveSupport::OrderedHash</tt> implements a hash that preserves
# insertion order.
#
#   oh = ActiveSupport::OrderedHash.new
#   oh[:a] = 1
#   oh[:b] = 2
#   oh.keys # => [:a, :b], this order is guaranteed
#
# Also, maps the +omap+ feature for YAML files
# (See https://yaml.org/type/omap.html) to support ordered items
# when loading from yaml.
#
# <tt>ActiveSupport::OrderedHash</tt> is namespaced to prevent conflicts
# with other implementations.
#
# source://activesupport//lib/active_support/ordered_hash.rb#24
class ActiveSupport::OrderedHash < ::Hash
  # source://activesupport//lib/active_support/ordered_hash.rb#29
  def encode_with(coder); end

  # Returns true to make sure that this hash is extractable via <tt>Array#extract_options!</tt>
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/ordered_hash.rb#46
  def extractable_options?; end

  # source://activesupport//lib/active_support/ordered_hash.rb#41
  def nested_under_indifferent_access; end

  # source://activesupport//lib/active_support/ordered_hash.rb#37
  def reject(*args, &block); end

  # source://activesupport//lib/active_support/ordered_hash.rb#33
  def select(*args, &block); end

  # source://activesupport//lib/active_support/ordered_hash.rb#25
  def to_yaml_type; end
end

# +OrderedOptions+ inherits from +Hash+ and provides dynamic accessor methods.
#
# With a +Hash+, key-value pairs are typically managed like this:
#
#   h = {}
#   h[:boy] = 'John'
#   h[:girl] = 'Mary'
#   h[:boy]  # => 'John'
#   h[:girl] # => 'Mary'
#   h[:dog]  # => nil
#
# Using +OrderedOptions+, the above code can be written as:
#
#   h = ActiveSupport::OrderedOptions.new
#   h.boy = 'John'
#   h.girl = 'Mary'
#   h.boy  # => 'John'
#   h.girl # => 'Mary'
#   h.dog  # => nil
#
# To raise an exception when the value is blank, append a
# bang to the key name, like:
#
#   h.dog! # => raises KeyError: :dog is blank
#
# source://activesupport//lib/active_support/ordered_options.rb#31
class ActiveSupport::OrderedOptions < ::Hash
  # source://activesupport//lib/active_support/ordered_options.rb#39
  def [](key); end

  # source://activesupport//lib/active_support/ordered_options.rb#35
  def []=(key, value); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/ordered_options.rb#62
  def extractable_options?; end

  # source://activesupport//lib/active_support/ordered_options.rb#66
  def inspect; end

  # source://activesupport//lib/active_support/ordered_options.rb#43
  def method_missing(name, *args); end

  protected

  # preserve the original #[] method
  def _get(_arg0); end

  private

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/ordered_options.rb#58
  def respond_to_missing?(name, include_private); end
end

# +ParameterFilter+ replaces values in a <tt>Hash</tt>-like object if their
# keys match one of the specified filters.
#
# Matching based on nested keys is possible by using dot notation, e.g.
# <tt>"credit_card.number"</tt>.
#
# If a proc is given as a filter, each key and value of the <tt>Hash</tt>-like
# and of any nested <tt>Hash</tt>es will be passed to it. The value or key can
# then be mutated as desired using methods such as <tt>String#replace</tt>.
#
#   # Replaces values with "[FILTERED]" for keys that match /password/i.
#   ActiveSupport::ParameterFilter.new([:password])
#
#   # Replaces values with "[FILTERED]" for keys that match /foo|bar/i.
#   ActiveSupport::ParameterFilter.new([:foo, "bar"])
#
#   # Replaces values for the exact key "pin" and for keys that begin with
#   # "pin_". Does not match keys that otherwise include "pin" as a
#   # substring, such as "shipping_id".
#   ActiveSupport::ParameterFilter.new([/\Apin\z/, /\Apin_/])
#
#   # Replaces the value for :code in `{ credit_card: { code: "xxxx" } }`.
#   # Does not change `{ file: { code: "xxxx" } }`.
#   ActiveSupport::ParameterFilter.new(["credit_card.code"])
#
#   # Reverses values for keys that match /secret/i.
#   ActiveSupport::ParameterFilter.new([-> (k, v) do
#     v.reverse! if /secret/i.match?(k)
#   end])
#
# source://activesupport//lib/active_support/parameter_filter.rb#36
class ActiveSupport::ParameterFilter
  # Create instance with given filters. Supported type of filters are +String+, +Regexp+, and +Proc+.
  # Other types of filters are treated as +String+ using +to_s+.
  # For +Proc+ filters, key, value, and optional original hash is passed to block arguments.
  #
  # ==== Options
  #
  # * <tt>:mask</tt> - A replaced object when filtered. Defaults to <tt>"[FILTERED]"</tt>.
  #
  # @return [ParameterFilter] a new instance of ParameterFilter
  #
  # source://activesupport//lib/active_support/parameter_filter.rb#46
  def initialize(filters = T.unsafe(nil), mask: T.unsafe(nil)); end

  # Mask value of +params+ if key matches one of filters.
  #
  # source://activesupport//lib/active_support/parameter_filter.rb#52
  def filter(params); end

  # Returns filtered value for given key. For +Proc+ filters, third block argument is not populated.
  #
  # source://activesupport//lib/active_support/parameter_filter.rb#57
  def filter_param(key, value); end

  private

  # source://activesupport//lib/active_support/parameter_filter.rb#62
  def compiled_filter; end
end

# source://activesupport//lib/active_support/parameter_filter.rb#66
class ActiveSupport::ParameterFilter::CompiledFilter
  # @return [CompiledFilter] a new instance of CompiledFilter
  #
  # source://activesupport//lib/active_support/parameter_filter.rb#100
  def initialize(regexps, deep_regexps, blocks, mask:); end

  # Returns the value of attribute blocks.
  #
  # source://activesupport//lib/active_support/parameter_filter.rb#98
  def blocks; end

  # source://activesupport//lib/active_support/parameter_filter.rb#107
  def call(params, parents = T.unsafe(nil), original_params = T.unsafe(nil)); end

  # Returns the value of attribute deep_regexps.
  #
  # source://activesupport//lib/active_support/parameter_filter.rb#98
  def deep_regexps; end

  # Returns the value of attribute regexps.
  #
  # source://activesupport//lib/active_support/parameter_filter.rb#98
  def regexps; end

  # source://activesupport//lib/active_support/parameter_filter.rb#117
  def value_for_key(key, value, parents = T.unsafe(nil), original_params = T.unsafe(nil)); end

  class << self
    # source://activesupport//lib/active_support/parameter_filter.rb#67
    def compile(filters, mask:); end
  end
end

# source://activesupport//lib/active_support/parameter_filter.rb#37
ActiveSupport::ParameterFilter::FILTERED = T.let(T.unsafe(nil), String)

# NOTE: This approach has been deprecated for end-user code in favor of {thread_mattr_accessor}[rdoc-ref:Module#thread_mattr_accessor] and friends.
# Please use that approach instead.
#
# This module is used to encapsulate access to thread local variables.
#
# Instead of polluting the thread locals namespace:
#
#   Thread.current[:connection_handler]
#
# you define a class that extends this module:
#
#   module ActiveRecord
#     class RuntimeRegistry
#       extend ActiveSupport::PerThreadRegistry
#
#       attr_accessor :connection_handler
#     end
#   end
#
# and invoke the declared instance accessors as class methods. So
#
#   ActiveRecord::RuntimeRegistry.connection_handler = connection_handler
#
# sets a connection handler local to the current thread, and
#
#   ActiveRecord::RuntimeRegistry.connection_handler
#
# returns a connection handler local to the current thread.
#
# This feature is accomplished by instantiating the class and storing the
# instance as a thread local keyed by the class name. In the example above
# a key "ActiveRecord::RuntimeRegistry" is stored in <tt>Thread.current</tt>.
# The class methods proxy to said thread local instance.
#
# If the class has an initializer, it must accept no arguments.
#
# source://activesupport//lib/active_support/per_thread_registry.rb#41
module ActiveSupport::PerThreadRegistry
  # source://activesupport//lib/active_support/per_thread_registry.rb#50
  def instance; end

  private

  # source://activesupport//lib/active_support/per_thread_registry.rb#55
  def method_missing(name, *args, **_arg2, &block); end

  class << self
    # @private
    #
    # source://activesupport//lib/active_support/per_thread_registry.rb#42
    def extended(object); end
  end
end

# A class with no predefined methods that behaves similarly to Builder's
# BlankSlate. Used for proxy classes.
#
# source://activesupport//lib/active_support/proxy_object.rb#6
class ActiveSupport::ProxyObject < ::BasicObject
  # Let ActiveSupport::ProxyObject at least raise exceptions.
  #
  # source://activesupport//lib/active_support/proxy_object.rb#11
  def raise(*args); end
end

# source://activesupport//lib/active_support/railtie.rb#7
class ActiveSupport::Railtie < ::Rails::Railtie; end

# source://activesupport//lib/active_support/core_ext/range/conversions.rb#4
module ActiveSupport::RangeWithFormat
  # Convert range to a formatted string. See RANGE_FORMATS for predefined formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   range = (1..100)           # => 1..100
  #
  #   range.to_s                 # => "1..100"
  #   range.to_fs(:db)            # => "BETWEEN '1' AND '100'"
  #
  # == Adding your own range formats to to_s
  # You can add your own formats to the Range::RANGE_FORMATS hash.
  # Use the format name as the hash key and a Proc instance.
  #
  #   # config/initializers/range_formats.rb
  #   Range::RANGE_FORMATS[:short] = ->(start, stop) { "Between #{start.to_fs(:db)} and #{stop.to_fs(:db)}" }
  #
  # source://activesupport//lib/active_support/core_ext/range/conversions.rb#30
  def to_formatted_s(format = T.unsafe(nil)); end

  # Convert range to a formatted string. See RANGE_FORMATS for predefined formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   range = (1..100)           # => 1..100
  #
  #   range.to_s                 # => "1..100"
  #   range.to_fs(:db)            # => "BETWEEN '1' AND '100'"
  #
  # == Adding your own range formats to to_s
  # You can add your own formats to the Range::RANGE_FORMATS hash.
  # Use the format name as the hash key and a Proc instance.
  #
  #   # config/initializers/range_formats.rb
  #   Range::RANGE_FORMATS[:short] = ->(start, stop) { "Between #{start.to_fs(:db)} and #{stop.to_fs(:db)}" }
  #
  # source://activesupport//lib/active_support/core_ext/range/conversions.rb#30
  def to_fs(format = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/range/conversions.rb#5
ActiveSupport::RangeWithFormat::RANGE_FORMATS = T.let(T.unsafe(nil), Hash)

# --
# This class defines several callbacks:
#
#   to_prepare -- Run once at application startup, and also from
#   +to_run+.
#
#   to_run -- Run before a work run that is reloading. If
#   +reload_classes_only_on_change+ is true (the default), the class
#   unload will have already occurred.
#
#   to_complete -- Run after a work run that has reloaded. If
#   +reload_classes_only_on_change+ is false, the class unload will
#   have occurred after the work run, but before this callback.
#
#   before_class_unload -- Run immediately before the classes are
#   unloaded.
#
#   after_class_unload -- Run immediately after the classes are
#   unloaded.
#
# source://activesupport//lib/active_support/reloader.rb#27
class ActiveSupport::Reloader < ::ActiveSupport::ExecutionWrapper
  # @return [Reloader] a new instance of Reloader
  #
  # source://activesupport//lib/active_support/reloader.rb#91
  def initialize; end

  # source://activesupport//lib/active_support/callbacks.rb#940
  def _class_unload_callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#940
  def _prepare_callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#928
  def _run_class_unload_callbacks(&block); end

  # source://activesupport//lib/active_support/callbacks.rb#928
  def _run_prepare_callbacks(&block); end

  # source://activesupport//lib/active_support/reloader.rb#77
  def check; end

  # source://activesupport//lib/active_support/reloader.rb#77
  def check=(_arg0); end

  # source://activesupport//lib/active_support/reloader.rb#77
  def check?; end

  # source://activesupport//lib/active_support/reloader.rb#118
  def class_unload!(&block); end

  # source://activesupport//lib/active_support/reloader.rb#123
  def complete!; end

  # source://activesupport//lib/active_support/reloader.rb#76
  def executor; end

  # source://activesupport//lib/active_support/reloader.rb#76
  def executor=(_arg0); end

  # source://activesupport//lib/active_support/reloader.rb#76
  def executor?; end

  # Release the unload lock if it has been previously obtained
  #
  # source://activesupport//lib/active_support/reloader.rb#106
  def release_unload_lock!; end

  # Acquire the ActiveSupport::Dependencies::Interlock unload lock,
  # ensuring it will be released automatically
  #
  # source://activesupport//lib/active_support/reloader.rb#98
  def require_unload_lock!; end

  # source://activesupport//lib/active_support/reloader.rb#113
  def run!; end

  class << self
    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#932
    def _class_unload_callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#936
    def _class_unload_callbacks=(value); end

    # source://activesupport//lib/active_support/callbacks.rb#932
    def _prepare_callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#936
    def _prepare_callbacks=(value); end

    # Registers a callback that will run immediately after the classes are unloaded.
    #
    # source://activesupport//lib/active_support/reloader.rb#43
    def after_class_unload(*args, &block); end

    # Registers a callback that will run immediately before the classes are unloaded.
    #
    # source://activesupport//lib/active_support/reloader.rb#38
    def before_class_unload(*args, &block); end

    # source://activesupport//lib/active_support/reloader.rb#77
    def check; end

    # source://activesupport//lib/active_support/reloader.rb#79
    def check!; end

    # source://activesupport//lib/active_support/reloader.rb#77
    def check=(value); end

    # source://activesupport//lib/active_support/reloader.rb#77
    def check?; end

    # source://activesupport//lib/active_support/reloader.rb#76
    def executor; end

    # source://activesupport//lib/active_support/reloader.rb#76
    def executor=(value); end

    # source://activesupport//lib/active_support/reloader.rb#76
    def executor?; end

    # source://activesupport//lib/active_support/reloader.rb#87
    def prepare!; end

    # Initiate a manual reload
    #
    # source://activesupport//lib/active_support/reloader.rb#50
    def reload!; end

    # source://activesupport//lib/active_support/reloader.rb#83
    def reloaded!; end

    # source://activesupport//lib/active_support/reloader.rb#61
    def run!(reset: T.unsafe(nil)); end

    # Registers a callback that will run once at application startup and every time the code is reloaded.
    #
    # source://activesupport//lib/active_support/reloader.rb#33
    def to_prepare(*args, &block); end

    # Run the supplied block as a work unit, reloading code as needed
    #
    # source://activesupport//lib/active_support/reloader.rb#70
    def wrap; end
  end
end

# Rescuable module adds support for easier exception handling.
#
# source://activesupport//lib/active_support/rescuable.rb#9
module ActiveSupport::Rescuable
  extend ::ActiveSupport::Concern
  include GeneratedInstanceMethods

  mixes_in_class_methods GeneratedClassMethods
  mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods

  # Internal handler lookup. Delegates to class method. Some libraries call
  # this directly, so keeping it around for compatibility.
  #
  # source://activesupport//lib/active_support/rescuable.rb#170
  def handler_for_rescue(exception); end

  # Delegates to the class method, but uses the instance as the subject for
  # rescue_from handlers (method calls, +instance_exec+ blocks).
  #
  # source://activesupport//lib/active_support/rescuable.rb#164
  def rescue_with_handler(exception); end

  module GeneratedClassMethods
    def rescue_handlers; end
    def rescue_handlers=(value); end
    def rescue_handlers?; end
  end

  module GeneratedInstanceMethods
    def rescue_handlers; end
    def rescue_handlers=(value); end
    def rescue_handlers?; end
  end
end

# source://activesupport//lib/active_support/rescuable.rb#16
module ActiveSupport::Rescuable::ClassMethods
  # source://activesupport//lib/active_support/rescuable.rb#103
  def handler_for_rescue(exception, object: T.unsafe(nil)); end

  # Registers exception classes with a handler to be called by <tt>rescue_with_handler</tt>.
  #
  # <tt>rescue_from</tt> receives a series of exception classes or class
  # names, and an exception handler specified by a trailing <tt>:with</tt>
  # option containing the name of a method or a Proc object. Alternatively, a block
  # can be given as the handler.
  #
  # Handlers that take one argument will be called with the exception, so
  # that the exception can be inspected when dealing with it.
  #
  # Handlers are inherited. They are searched from right to left, from
  # bottom to top, and up the hierarchy. The handler of the first class for
  # which <tt>exception.is_a?(klass)</tt> holds true is the one invoked, if
  # any.
  #
  #   class ApplicationController < ActionController::Base
  #     rescue_from User::NotAuthorized, with: :deny_access
  #     rescue_from ActiveRecord::RecordInvalid, with: :show_record_errors
  #
  #     rescue_from "MyApp::BaseError" do |exception|
  #       redirect_to root_url, alert: exception.message
  #     end
  #
  #     private
  #       def deny_access
  #         head :forbidden
  #       end
  #
  #       def show_record_errors(exception)
  #         redirect_back_or_to root_url, alert: exception.record.errors.full_messages.to_sentence
  #       end
  #   end
  #
  # Exceptions raised inside exception handlers are not propagated up.
  #
  # source://activesupport//lib/active_support/rescuable.rb#51
  def rescue_from(*klasses, with: T.unsafe(nil), &block); end

  # Matches an exception to a handler based on the exception class.
  #
  # If no handler matches the exception, check for a handler matching the
  # (optional) +exception.cause+. If no handler matches the exception or its
  # cause, this returns +nil+, so you can deal with unhandled exceptions.
  # Be sure to re-raise unhandled exceptions if this is what you expect.
  #
  #     begin
  #       # ...
  #     rescue => exception
  #       rescue_with_handler(exception) || raise
  #     end
  #
  # Returns the exception if it was handled and +nil+ if it was not.
  #
  # source://activesupport//lib/active_support/rescuable.rb#88
  def rescue_with_handler(exception, object: T.unsafe(nil), visited_exceptions: T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/rescuable.rb#137
  def constantize_rescue_handler_class(class_or_name); end

  # source://activesupport//lib/active_support/rescuable.rb#122
  def find_rescue_handler(exception); end
end

# source://activesupport//lib/active_support/ruby_features.rb#4
module ActiveSupport::RubyFeatures; end

# RUBY_VERSION >= "3.1"
#
# source://activesupport//lib/active_support/ruby_features.rb#5
ActiveSupport::RubyFeatures::CLASS_SUBCLASSES = T.let(T.unsafe(nil), TrueClass)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#162
class ActiveSupport::SafeBuffer < ::String
  # @return [SafeBuffer] a new instance of SafeBuffer
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#200
  def initialize(str = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#257
  def %(args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#250
  def *(*_arg0); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#246
  def +(other); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#214
  def <<(value); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#181
  def [](*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#238
  def []=(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#222
  def bytesplice(*args, value); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def capitalize(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def capitalize!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def chomp(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def chomp!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def chop(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def chop!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#210
  def clone_empty; end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#214
  def concat(value); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def delete(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def delete!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def delete_prefix(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def delete_prefix!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def delete_suffix(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def delete_suffix!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def downcase(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def downcase!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#280
  def encode_with(coder); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#301
  def gsub(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#312
  def gsub!(*args, &block); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#268
  def html_safe?; end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#226
  def insert(index, value); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def lstrip(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def lstrip!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def next(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def next!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#230
  def prepend(value); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#234
  def replace(value); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def reverse(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def reverse!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def rstrip(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def rstrip!(*args); end

  # @raise [SafeConcatError]
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#195
  def safe_concat(value); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def scrub(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def scrub!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def slice(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def slice!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def squeeze(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def squeeze!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def strip(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def strip!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#301
  def sub(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#312
  def sub!(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def succ(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def succ!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def swapcase(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def swapcase!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#276
  def to_param; end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#272
  def to_s; end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def tr(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def tr!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def tr_s(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def tr_s!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def unicode_normalize(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def unicode_normalize!(*args); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#287
  def upcase(*args, &block); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#291
  def upcase!(*args); end

  private

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#327
  def explicit_html_escape_interpolated_argument(arg); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#331
  def implicit_html_escape_interpolated_argument(arg); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#205
  def initialize_copy(other); end

  def original_concat(*_arg0); end

  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#354
  def set_block_back_references(block, match_data); end
end

# Raised when ActiveSupport::SafeBuffer#safe_concat is called on unsafe buffers.
#
# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#175
class ActiveSupport::SafeBuffer::SafeConcatError < ::StandardError
  # @return [SafeConcatError] a new instance of SafeConcatError
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#176
  def initialize; end
end

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#163
ActiveSupport::SafeBuffer::UNSAFE_STRING_METHODS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#169
ActiveSupport::SafeBuffer::UNSAFE_STRING_METHODS_WITH_BACKREF = T.let(T.unsafe(nil), Array)

# The ActiveSupport::SecureCompareRotator is a wrapper around ActiveSupport::SecurityUtils.secure_compare
# and allows you to rotate a previously defined value to a new one.
#
# It can be used as follow:
#
#   rotator = ActiveSupport::SecureCompareRotator.new('new_production_value')
#   rotator.rotate('previous_production_value')
#   rotator.secure_compare!('previous_production_value')
#
# One real use case example would be to rotate a basic auth credentials:
#
#   class MyController < ApplicationController
#     def authenticate_request
#       rotator = ActiveSupport::SecureCompareRotator.new('new_password')
#       rotator.rotate('old_password')
#
#       authenticate_or_request_with_http_basic do |username, password|
#         rotator.secure_compare!(password)
#       rescue ActiveSupport::SecureCompareRotator::InvalidMatch
#         false
#       end
#     end
#   end
#
# source://activesupport//lib/active_support/secure_compare_rotator.rb#30
class ActiveSupport::SecureCompareRotator
  include ::ActiveSupport::Messages::Rotator
  include ::ActiveSupport::SecurityUtils

  # @return [SecureCompareRotator] a new instance of SecureCompareRotator
  #
  # source://activesupport//lib/active_support/messages/rotator.rb#6
  def initialize(*secrets, on_rotation: T.unsafe(nil), **options); end

  # source://activesupport//lib/active_support/secure_compare_rotator.rb#40
  def secure_compare!(other_value, on_rotation: T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/secure_compare_rotator.rb#47
  def build_rotation(previous_value, _options); end
end

# source://activesupport//lib/active_support/secure_compare_rotator.rb#34
class ActiveSupport::SecureCompareRotator::InvalidMatch < ::StandardError; end

# source://activesupport//lib/active_support/security_utils.rb#4
module ActiveSupport::SecurityUtils
  private

  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/security_utils.rb#11
  def fixed_length_secure_compare(a, b); end

  # Secure string comparison for strings of variable length.
  #
  # While a timing attack would not be able to discern the content of
  # a secret compared via secure_compare, it is possible to determine
  # the secret length. This should be considered when using secure_compare
  # to compare weak, short secrets to user input.
  #
  # source://activesupport//lib/active_support/security_utils.rb#33
  def secure_compare(a, b); end

  class << self
    # @raise [ArgumentError]
    #
    # source://activesupport//lib/active_support/security_utils.rb#11
    def fixed_length_secure_compare(a, b); end

    # Secure string comparison for strings of variable length.
    #
    # While a timing attack would not be able to discern the content of
    # a secret compared via secure_compare, it is possible to determine
    # the secret length. This should be considered when using secure_compare
    # to compare weak, short secrets to user input.
    #
    # source://activesupport//lib/active_support/security_utils.rb#33
    def secure_compare(a, b); end
  end
end

# Wrapping a string in this class gives you a prettier way to test
# for equality. The value returned by <tt>Rails.env</tt> is wrapped
# in a StringInquirer object, so instead of calling this:
#
#   Rails.env == 'production'
#
# you can call this:
#
#   Rails.env.production?
#
# == Instantiating a new StringInquirer
#
#   vehicle = ActiveSupport::StringInquirer.new('car')
#   vehicle.car?   # => true
#   vehicle.bike?  # => false
#
# source://activesupport//lib/active_support/string_inquirer.rb#19
class ActiveSupport::StringInquirer < ::String
  private

  # source://activesupport//lib/active_support/string_inquirer.rb#25
  def method_missing(method_name, *arguments); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/string_inquirer.rb#21
  def respond_to_missing?(method_name, include_private = T.unsafe(nil)); end
end

# ActiveSupport::Subscriber is an object set to consume
# ActiveSupport::Notifications. The subscriber dispatches notifications to
# a registered object based on its given namespace.
#
# An example would be an Active Record subscriber responsible for collecting
# statistics about queries:
#
#   module ActiveRecord
#     class StatsSubscriber < ActiveSupport::Subscriber
#       attach_to :active_record
#
#       def sql(event)
#         Statsd.timing("sql.#{event.payload[:name]}", event.duration)
#       end
#     end
#   end
#
# After configured, whenever a "sql.active_record" notification is published,
# it will properly dispatch the event (ActiveSupport::Notifications::Event) to
# the +sql+ method.
#
# We can detach a subscriber as well:
#
#   ActiveRecord::StatsSubscriber.detach_from(:active_record)
#
# source://activesupport//lib/active_support/subscriber.rb#30
class ActiveSupport::Subscriber
  # @return [Subscriber] a new instance of Subscriber
  #
  # source://activesupport//lib/active_support/subscriber.rb#128
  def initialize; end

  # source://activesupport//lib/active_support/subscriber.rb#143
  def finish(name, id, payload); end

  # source://activesupport//lib/active_support/subscriber.rb#126
  def patterns; end

  # source://activesupport//lib/active_support/subscriber.rb#152
  def publish_event(event); end

  # source://activesupport//lib/active_support/subscriber.rb#134
  def start(name, id, payload); end

  private

  # source://activesupport//lib/active_support/subscriber.rb#158
  def event_stack; end

  class << self
    # Attach the subscriber to a namespace.
    #
    # source://activesupport//lib/active_support/subscriber.rb#33
    def attach_to(namespace, subscriber = T.unsafe(nil), notifier = T.unsafe(nil), inherit_all: T.unsafe(nil)); end

    # Detach the subscriber from a namespace.
    #
    # source://activesupport//lib/active_support/subscriber.rb#48
    def detach_from(namespace, notifier = T.unsafe(nil)); end

    # Adds event subscribers for all new methods added to the class.
    #
    # source://activesupport//lib/active_support/subscriber.rb#67
    def method_added(event); end

    # source://activesupport//lib/active_support/subscriber.rb#76
    def subscribers; end

    private

    # source://activesupport//lib/active_support/subscriber.rb#83
    def add_event_subscriber(event); end

    # source://activesupport//lib/active_support/subscriber.rb#121
    def fetch_public_methods(subscriber, inherit_all); end

    # source://activesupport//lib/active_support/subscriber.rb#105
    def find_attached_subscriber; end

    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/subscriber.rb#109
    def invalid_event?(event); end

    # Returns the value of attribute namespace.
    #
    # source://activesupport//lib/active_support/subscriber.rb#81
    def namespace; end

    # Returns the value of attribute notifier.
    #
    # source://activesupport//lib/active_support/subscriber.rb#81
    def notifier; end

    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/subscriber.rb#117
    def pattern_subscribed?(pattern); end

    # source://activesupport//lib/active_support/subscriber.rb#113
    def prepare_pattern(event); end

    # source://activesupport//lib/active_support/subscriber.rb#94
    def remove_event_subscriber(event); end

    # Returns the value of attribute subscriber.
    #
    # source://activesupport//lib/active_support/subscriber.rb#81
    def subscriber; end
  end
end

# Wraps any standard Logger object to provide tagging capabilities.
#
# May be called with a block:
#
#   logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
#   logger.tagged('BCX') { logger.info 'Stuff' }                            # Logs "[BCX] Stuff"
#   logger.tagged('BCX', "Jason") { logger.info 'Stuff' }                   # Logs "[BCX] [Jason] Stuff"
#   logger.tagged('BCX') { logger.tagged('Jason') { logger.info 'Stuff' } } # Logs "[BCX] [Jason] Stuff"
#
# If called without a block, a new logger will be returned with applied tags:
#
#   logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
#   logger.tagged("BCX").info "Stuff"                 # Logs "[BCX] Stuff"
#   logger.tagged("BCX", "Jason").info "Stuff"        # Logs "[BCX] [Jason] Stuff"
#   logger.tagged("BCX").tagged("Jason").info "Stuff" # Logs "[BCX] [Jason] Stuff"
#
# This is used by the default Rails.logger as configured by Railties to make
# it easy to stamp log lines with subdomains, request ids, and anything else
# to aid debugging of multi-user production applications.
#
# source://activesupport//lib/active_support/tagged_logging.rb#28
module ActiveSupport::TaggedLogging
  # source://activesupport//lib/active_support/tagged_logging.rb#95
  def clear_tags!(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/tagged_logging.rb#108
  def flush; end

  # source://activesupport//lib/active_support/tagged_logging.rb#95
  def pop_tags(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/tagged_logging.rb#95
  def push_tags(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/tagged_logging.rb#97
  def tagged(*tags); end

  class << self
    # source://activesupport//lib/active_support/tagged_logging.rb#81
    def new(logger); end
  end
end

# source://activesupport//lib/active_support/tagged_logging.rb#29
module ActiveSupport::TaggedLogging::Formatter
  # This method is invoked when a log event occurs.
  #
  # source://activesupport//lib/active_support/tagged_logging.rb#31
  def call(severity, timestamp, progname, msg); end

  # source://activesupport//lib/active_support/tagged_logging.rb#53
  def clear_tags!; end

  # source://activesupport//lib/active_support/tagged_logging.rb#57
  def current_tags; end

  # source://activesupport//lib/active_support/tagged_logging.rb#49
  def pop_tags(size = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/tagged_logging.rb#42
  def push_tags(*tags); end

  # source://activesupport//lib/active_support/tagged_logging.rb#35
  def tagged(*tags); end

  # source://activesupport//lib/active_support/tagged_logging.rb#63
  def tags_text; end
end

# source://activesupport//lib/active_support/tagged_logging.rb#73
module ActiveSupport::TaggedLogging::LocalTagStorage
  # Returns the value of attribute current_tags.
  #
  # source://activesupport//lib/active_support/tagged_logging.rb#74
  def current_tags; end

  # Sets the attribute current_tags
  #
  # @param value the value to set the attribute current_tags to.
  #
  # source://activesupport//lib/active_support/tagged_logging.rb#74
  def current_tags=(_arg0); end

  class << self
    # @private
    #
    # source://activesupport//lib/active_support/tagged_logging.rb#76
    def extended(base); end
  end
end

# source://activesupport//lib/active_support/test_case.rb#19
class ActiveSupport::TestCase < ::Minitest::Test
  include ::ActiveSupport::Testing::SetupAndTeardown
  include ::ActiveSupport::Testing::TaggedLogging
  include ::ActiveSupport::Callbacks
  include ::ActiveSupport::Testing::Assertions
  include ::ActiveSupport::Testing::Deprecation
  include ::ActiveSupport::Testing::TimeHelpers
  include ::ActiveSupport::Testing::FileFixtures
  extend ::ActiveSupport::Callbacks::ClassMethods
  extend ::ActiveSupport::DescendantsTracker
  extend ::ActiveSupport::Testing::SetupAndTeardown::ClassMethods
  extend ::ActiveSupport::Testing::Declarative

  # source://activesupport//lib/active_support/callbacks.rb#68
  def __callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#68
  def __callbacks?; end

  # source://activesupport//lib/active_support/callbacks.rb#928
  def _run_setup_callbacks(&block); end

  # source://activesupport//lib/active_support/callbacks.rb#928
  def _run_teardown_callbacks(&block); end

  # source://activesupport//lib/active_support/callbacks.rb#940
  def _setup_callbacks; end

  # source://activesupport//lib/active_support/callbacks.rb#940
  def _teardown_callbacks; end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#735
  def assert_no_match(matcher, obj, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#664
  def assert_not_empty(obj, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#675
  def assert_not_equal(exp, act, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#687
  def assert_not_in_delta(exp, act, delta = T.unsafe(nil), msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#699
  def assert_not_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#706
  def assert_not_includes(collection, obj, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#717
  def assert_not_instance_of(cls, obj, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#727
  def assert_not_kind_of(cls, obj, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#745
  def assert_not_nil(obj, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#780
  def assert_not_operator(o1, op, o2 = T.unsafe(nil), msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#803
  def assert_not_predicate(o1, op, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#811
  def assert_not_respond_to(obj, meth, msg = T.unsafe(nil)); end

  # source://minitest/5.18.1/lib/minitest/assertions.rb#820
  def assert_not_same(exp, act, msg = T.unsafe(nil)); end

  # test/unit backwards compatibility methods
  #
  # source://minitest/5.18.1/lib/minitest/assertions.rb#422
  def assert_raise(*exp); end

  # source://activesupport//lib/active_support/testing/file_fixtures.rb#20
  def file_fixture_path; end

  # source://activesupport//lib/active_support/testing/file_fixtures.rb#20
  def file_fixture_path?; end

  # source://activesupport//lib/active_support/test_case.rb#151
  def inspect; end

  # source://minitest/5.18.1/lib/minitest.rb#304
  def method_name; end

  class << self
    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks=(value); end

    # source://activesupport//lib/active_support/callbacks.rb#68
    def __callbacks?; end

    # source://activesupport//lib/active_support/callbacks.rb#932
    def _setup_callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#936
    def _setup_callbacks=(value); end

    # source://activesupport//lib/active_support/callbacks.rb#932
    def _teardown_callbacks; end

    # source://activesupport//lib/active_support/callbacks.rb#936
    def _teardown_callbacks=(value); end

    # source://activesupport//lib/active_support/testing/file_fixtures.rb#20
    def file_fixture_path; end

    # source://activesupport//lib/active_support/testing/file_fixtures.rb#20
    def file_fixture_path=(value); end

    # source://activesupport//lib/active_support/testing/file_fixtures.rb#20
    def file_fixture_path?; end

    # Parallelizes the test suite.
    #
    # Takes a +workers+ argument that controls how many times the process
    # is forked. For each process a new database will be created suffixed
    # with the worker number.
    #
    #   test-database-0
    #   test-database-1
    #
    # If <tt>ENV["PARALLEL_WORKERS"]</tt> is set the workers argument will be ignored
    # and the environment variable will be used instead. This is useful for CI
    # environments, or other environments where you may need more workers than
    # you do for local testing.
    #
    # If the number of workers is set to +1+ or fewer, the tests will not be
    # parallelized.
    #
    # If +workers+ is set to +:number_of_processors+, the number of workers will be
    # set to the actual core count on the machine you are on.
    #
    # The default parallelization method is to fork processes. If you'd like to
    # use threads instead you can pass <tt>with: :threads</tt> to the +parallelize+
    # method. Note the threaded parallelization does not create multiple
    # database and will not work with system tests at this time.
    #
    #   parallelize(workers: :number_of_processors, with: :threads)
    #
    # The threaded parallelization uses minitest's parallel executor directly.
    # The processes parallelization uses a Ruby DRb server.
    #
    # Because parallelization presents an overhead, it is only enabled when the
    # number of tests to run is above the +threshold+ param. The default value is
    # 50, and it's configurable via +config.active_support.test_parallelization_threshold+.
    #
    # source://activesupport//lib/active_support/test_case.rb#79
    def parallelize(workers: T.unsafe(nil), with: T.unsafe(nil), threshold: T.unsafe(nil)); end

    # Set up hook for parallel testing. This can be used if you have multiple
    # databases or any behavior that needs to be run after the process is forked
    # but before the tests run.
    #
    # Note: this feature is not available with the threaded parallelization.
    #
    # In your +test_helper.rb+ add the following:
    #
    #   class ActiveSupport::TestCase
    #     parallelize_setup do
    #       # create databases
    #     end
    #   end
    #
    # source://activesupport//lib/active_support/test_case.rb#101
    def parallelize_setup(&block); end

    # Clean up hook for parallel testing. This can be used to drop databases
    # if your app uses multiple write/read databases or other clean up before
    # the tests finish. This runs before the forked process is closed.
    #
    # Note: this feature is not available with the threaded parallelization.
    #
    # In your +test_helper.rb+ add the following:
    #
    #   class ActiveSupport::TestCase
    #     parallelize_teardown do
    #       # drop databases
    #     end
    #   end
    #
    # source://activesupport//lib/active_support/test_case.rb#118
    def parallelize_teardown(&block); end

    # Returns the order in which test cases are run.
    #
    #   ActiveSupport::TestCase.test_order # => :random
    #
    # Possible values are +:random+, +:parallel+, +:alpha+, +:sorted+.
    # Defaults to +:random+.
    #
    # source://activesupport//lib/active_support/test_case.rb#42
    def test_order; end

    # Sets the order in which test cases are run.
    #
    #   ActiveSupport::TestCase.test_order = :random # => :random
    #
    # Valid values are:
    # * +:random+   (to run tests in random order)
    # * +:parallel+ (to run tests in parallel)
    # * +:sorted+   (to run tests alphabetically by method name)
    # * +:alpha+    (equivalent to +:sorted+)
    #
    # source://activesupport//lib/active_support/test_case.rb#32
    def test_order=(new_order); end
  end
end

# source://activesupport//lib/active_support/test_case.rb#20
ActiveSupport::TestCase::Assertion = Minitest::Assertion

# source://activesupport//lib/active_support/testing/tagged_logging.rb#4
module ActiveSupport::Testing; end

# source://activesupport//lib/active_support/testing/assertions.rb#7
module ActiveSupport::Testing::Assertions
  # Assertion that the result of evaluating an expression is changed before
  # and after invoking the passed in block.
  #
  #   assert_changes 'Status.all_good?' do
  #     post :create, params: { status: { ok: false } }
  #   end
  #
  # You can pass the block as a string to be evaluated in the context of
  # the block. A lambda can be passed for the block as well.
  #
  #   assert_changes -> { Status.all_good? } do
  #     post :create, params: { status: { ok: false } }
  #   end
  #
  # The assertion is useful to test side effects. The passed block can be
  # anything that can be converted to string with #to_s.
  #
  #   assert_changes :@object do
  #     @object = 42
  #   end
  #
  # The keyword arguments +:from+ and +:to+ can be given to specify the
  # expected initial value and the expected value after the block was
  # executed.
  #
  #   assert_changes :@object, from: nil, to: :foo do
  #     @object = :foo
  #   end
  #
  # An error message can be specified.
  #
  #   assert_changes -> { Status.all_good? }, 'Expected the status to be bad' do
  #     post :create, params: { status: { incident: true } }
  #   end
  #
  # source://activesupport//lib/active_support/testing/assertions.rb#175
  def assert_changes(expression, message = T.unsafe(nil), from: T.unsafe(nil), to: T.unsafe(nil), &block); end

  # Test numeric difference between the return value of an expression as a
  # result of what is evaluated in the yielded block.
  #
  #   assert_difference 'Article.count' do
  #     post :create, params: { article: {...} }
  #   end
  #
  # An arbitrary expression is passed in and evaluated.
  #
  #   assert_difference 'Article.last.comments(:reload).size' do
  #     post :create, params: { comment: {...} }
  #   end
  #
  # An arbitrary positive or negative difference can be specified.
  # The default is <tt>1</tt>.
  #
  #   assert_difference 'Article.count', -1 do
  #     post :delete, params: { id: ... }
  #   end
  #
  # An array of expressions can also be passed in and evaluated.
  #
  #   assert_difference [ 'Article.count', 'Post.count' ], 2 do
  #     post :create, params: { article: {...} }
  #   end
  #
  # A hash of expressions/numeric differences can also be passed in and evaluated.
  #
  #   assert_difference ->{ Article.count } => 1, ->{ Notification.count } => 2 do
  #     post :create, params: { article: {...} }
  #   end
  #
  # A lambda or a list of lambdas can be passed in and evaluated:
  #
  #   assert_difference ->{ Article.count }, 2 do
  #     post :create, params: { article: {...} }
  #   end
  #
  #   assert_difference [->{ Article.count }, ->{ Post.count }], 2 do
  #     post :create, params: { article: {...} }
  #   end
  #
  # An error message can be specified.
  #
  #   assert_difference 'Article.count', -1, 'An Article should be destroyed' do
  #     post :delete, params: { id: ... }
  #   end
  #
  # source://activesupport//lib/active_support/testing/assertions.rb#86
  def assert_difference(expression, *args, &block); end

  # Assertion that the result of evaluating an expression is not changed before
  # and after invoking the passed in block.
  #
  #   assert_no_changes 'Status.all_good?' do
  #     post :create, params: { status: { ok: true } }
  #   end
  #
  # Provide the optional keyword argument :from to specify the expected
  # initial value.
  #
  #   assert_no_changes -> { Status.all_good? }, from: true do
  #     post :create, params: { status: { ok: true } }
  #   end
  #
  # An error message can be specified.
  #
  #   assert_no_changes -> { Status.all_good? }, 'Expected the status to be good' do
  #     post :create, params: { status: { ok: false } }
  #   end
  #
  # source://activesupport//lib/active_support/testing/assertions.rb#222
  def assert_no_changes(expression, message = T.unsafe(nil), from: T.unsafe(nil), &block); end

  # Assertion that the numeric result of evaluating an expression is not
  # changed before and after invoking the passed in block.
  #
  #   assert_no_difference 'Article.count' do
  #     post :create, params: { article: invalid_attributes }
  #   end
  #
  # A lambda can be passed in and evaluated.
  #
  #   assert_no_difference -> { Article.count } do
  #     post :create, params: { article: invalid_attributes }
  #   end
  #
  # An error message can be specified.
  #
  #   assert_no_difference 'Article.count', 'An Article should not be created' do
  #     post :create, params: { article: invalid_attributes }
  #   end
  #
  # An array of expressions can also be passed in and evaluated.
  #
  #   assert_no_difference [ 'Article.count', -> { Post.count } ] do
  #     post :create, params: { article: invalid_attributes }
  #   end
  #
  # source://activesupport//lib/active_support/testing/assertions.rb#137
  def assert_no_difference(expression, message = T.unsafe(nil), &block); end

  # Asserts that an expression is not truthy. Passes if <tt>object</tt> is
  # +nil+ or +false+. "Truthy" means "considered true in a conditional"
  # like <tt>if foo</tt>.
  #
  #   assert_not nil    # => true
  #   assert_not false  # => true
  #   assert_not 'foo'  # => Expected "foo" to be nil or false
  #
  # An error message can be specified.
  #
  #   assert_not foo, 'foo should be false'
  #
  # source://activesupport//lib/active_support/testing/assertions.rb#21
  def assert_not(object, message = T.unsafe(nil)); end

  # Assertion that the block should not raise an exception.
  #
  # Passes if evaluated code in the yielded block raises no exception.
  #
  #   assert_nothing_raised do
  #     perform_service(param: 'no_exception')
  #   end
  #
  # source://activesupport//lib/active_support/testing/assertions.rb#33
  def assert_nothing_raised; end

  private

  # source://activesupport//lib/active_support/testing/assertions.rb#249
  def _assert_nothing_raised_or_warn(assertion, &block); end
end

# source://activesupport//lib/active_support/testing/assertions.rb#8
ActiveSupport::Testing::Assertions::UNTRACKED = T.let(T.unsafe(nil), Object)

# Resolves a constant from a minitest spec name.
#
# Given the following spec-style test:
#
#   describe WidgetsController, :index do
#     describe "authenticated user" do
#       describe "returns widgets" do
#         it "has a controller that exists" do
#           assert_kind_of WidgetsController, @controller
#         end
#       end
#     end
#   end
#
# The test will have the following name:
#
#   "WidgetsController::index::authenticated user::returns widgets"
#
# The constant WidgetsController can be resolved from the name.
# The following code will resolve the constant:
#
#   controller = determine_constant_from_test_name(name) do |constant|
#     Class === constant && constant < ::ActionController::Metal
#   end
#
# source://activesupport//lib/active_support/testing/constant_lookup.rb#32
module ActiveSupport::Testing::ConstantLookup
  extend ::ActiveSupport::Concern

  mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
end

# source://activesupport//lib/active_support/testing/constant_lookup.rb#35
module ActiveSupport::Testing::ConstantLookup::ClassMethods
  # source://activesupport//lib/active_support/testing/constant_lookup.rb#36
  def determine_constant_from_test_name(test_name); end
end

# source://activesupport//lib/active_support/testing/declarative.rb#5
module ActiveSupport::Testing::Declarative
  # Helper to define a test method using a String. Under the hood, it replaces
  # spaces with underscores and defines the test method.
  #
  #   test "verify something" do
  #     ...
  #   end
  #
  # source://activesupport//lib/active_support/testing/declarative.rb#13
  def test(name, &block); end
end

# source://activesupport//lib/active_support/testing/deprecation.rb#7
module ActiveSupport::Testing::Deprecation
  # Asserts that a matching deprecation warning was emitted by the given deprecator during the execution of the yielded block.
  #
  #   assert_deprecated(/foo/, CustomDeprecator) do
  #     CustomDeprecator.warn "foo should no longer be used"
  #   end
  #
  # The +match+ object may be a +Regexp+, or +String+ appearing in the message.
  #
  #   assert_deprecated('foo', CustomDeprecator) do
  #     CustomDeprecator.warn "foo should no longer be used"
  #   end
  #
  # If the +match+ is omitted (or explicitly +nil+), any deprecation warning will match.
  #
  #   assert_deprecated(nil, CustomDeprecator) do
  #     CustomDeprecator.warn "foo should no longer be used"
  #   end
  #
  # If no +deprecator+ is given, defaults to ActiveSupport::Deprecation.
  #
  #   assert_deprecated do
  #     ActiveSupport::Deprecation.warn "foo should no longer be used"
  #   end
  #
  # source://activesupport//lib/active_support/testing/deprecation.rb#31
  def assert_deprecated(match = T.unsafe(nil), deprecator = T.unsafe(nil), &block); end

  # Asserts that no deprecation warnings are emitted by the given deprecator during the execution of the yielded block.
  #
  #   assert_not_deprecated(CustomDeprecator) do
  #     CustomDeprecator.warn "message" # fails assertion
  #   end
  #
  # If no +deprecator+ is given, defaults to ActiveSupport::Deprecation.
  #
  #   assert_not_deprecated do
  #     ActiveSupport::Deprecation.warn "message" # fails assertion
  #   end
  #
  #   assert_not_deprecated do
  #     CustomDeprecator.warn "message" # passes assertion
  #   end
  #
  # source://activesupport//lib/active_support/testing/deprecation.rb#56
  def assert_not_deprecated(deprecator = T.unsafe(nil), &block); end

  # Returns an array of all the deprecation warnings emitted by the given
  # +deprecator+ during the execution of the yielded block.
  #
  #   collect_deprecations(CustomDeprecator) do
  #     CustomDeprecator.warn "message"
  #   end # => ["message"]
  #
  # If no +deprecator+ is given, defaults to ActiveSupport::Deprecation.
  #
  #   collect_deprecations do
  #     CustomDeprecator.warn "custom message"
  #     ActiveSupport::Deprecation.warn "message"
  #   end # => ["message"]
  #
  # source://activesupport//lib/active_support/testing/deprecation.rb#75
  def collect_deprecations(deprecator = T.unsafe(nil)); end
end

# Adds simple access to sample files called file fixtures.
# File fixtures are normal files stored in
# <tt>ActiveSupport::TestCase.file_fixture_path</tt>.
#
# File fixtures are represented as +Pathname+ objects.
# This makes it easy to extract specific information:
#
#   file_fixture("example.txt").read # get the file's content
#   file_fixture("example.mp3").size # get the file size
#
# source://activesupport//lib/active_support/testing/file_fixtures.rb#16
module ActiveSupport::Testing::FileFixtures
  extend ::ActiveSupport::Concern
  include GeneratedInstanceMethods

  mixes_in_class_methods GeneratedClassMethods

  # Returns a +Pathname+ to the fixture file named +fixture_name+.
  #
  # Raises +ArgumentError+ if +fixture_name+ can't be found.
  #
  # source://activesupport//lib/active_support/testing/file_fixtures.rb#26
  def file_fixture(fixture_name); end

  module GeneratedClassMethods
    def file_fixture_path; end
    def file_fixture_path=(value); end
    def file_fixture_path?; end
  end

  module GeneratedInstanceMethods
    def file_fixture_path; end
    def file_fixture_path?; end
  end
end

# source://activesupport//lib/active_support/testing/isolation.rb#5
module ActiveSupport::Testing::Isolation
  include ::ActiveSupport::Testing::Isolation::Forking

  # source://activesupport//lib/active_support/testing/isolation.rb#18
  def run; end

  class << self
    # @return [Boolean]
    #
    # source://activesupport//lib/active_support/testing/isolation.rb#14
    def forking_env?; end

    # source://activesupport//lib/active_support/testing/isolation.rb#8
    def included(klass); end
  end
end

# source://activesupport//lib/active_support/testing/isolation.rb#26
module ActiveSupport::Testing::Isolation::Forking
  # source://activesupport//lib/active_support/testing/isolation.rb#27
  def run_in_isolation(&blk); end
end

# source://activesupport//lib/active_support/testing/isolation.rb#64
module ActiveSupport::Testing::Isolation::Subprocess
  # Complicated H4X to get this working in windows / jruby with
  # no forking.
  #
  # source://activesupport//lib/active_support/testing/isolation.rb#69
  def run_in_isolation(&blk); end
end

# source://activesupport//lib/active_support/testing/isolation.rb#65
ActiveSupport::Testing::Isolation::Subprocess::ORIG_ARGV = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/testing/parallelization/server.rb#8
class ActiveSupport::Testing::Parallelization
  # @return [Parallelization] a new instance of Parallelization
  #
  # source://activesupport//lib/active_support/testing/parallelization.rb#28
  def initialize(worker_count); end

  # source://activesupport//lib/active_support/testing/parallelization.rb#41
  def <<(work); end

  # source://activesupport//lib/active_support/testing/parallelization.rb#18
  def after_fork_hooks; end

  # source://activesupport//lib/active_support/testing/parallelization.rb#26
  def run_cleanup_hooks; end

  # source://activesupport//lib/active_support/testing/parallelization.rb#49
  def shutdown; end

  # source://activesupport//lib/active_support/testing/parallelization.rb#45
  def size; end

  # source://activesupport//lib/active_support/testing/parallelization.rb#35
  def start; end

  class << self
    # source://activesupport//lib/active_support/testing/parallelization.rb#14
    def after_fork_hook(&blk); end

    # source://activesupport//lib/active_support/testing/parallelization.rb#18
    def after_fork_hooks; end

    # source://activesupport//lib/active_support/testing/parallelization.rb#22
    def run_cleanup_hook(&blk); end

    # source://activesupport//lib/active_support/testing/parallelization.rb#26
    def run_cleanup_hooks; end
  end
end

# source://activesupport//lib/active_support/testing/parallelization/server.rb#9
class ActiveSupport::Testing::Parallelization::Server
  include ::DRb::DRbUndumped

  # @return [Server] a new instance of Server
  #
  # source://activesupport//lib/active_support/testing/parallelization/server.rb#12
  def initialize; end

  # source://activesupport//lib/active_support/testing/parallelization/server.rb#28
  def <<(o); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/testing/parallelization/server.rb#48
  def active_workers?; end

  # source://activesupport//lib/active_support/testing/parallelization/server.rb#52
  def interrupt; end

  # source://activesupport//lib/active_support/testing/parallelization/server.rb#33
  def pop; end

  # @raise [DRb::DRbConnError]
  #
  # source://activesupport//lib/active_support/testing/parallelization/server.rb#18
  def record(reporter, result); end

  # source://activesupport//lib/active_support/testing/parallelization/server.rb#56
  def shutdown; end

  # source://activesupport//lib/active_support/testing/parallelization/server.rb#40
  def start_worker(worker_id); end

  # source://activesupport//lib/active_support/testing/parallelization/server.rb#44
  def stop_worker(worker_id); end
end

# source://activesupport//lib/active_support/testing/parallelization/worker.rb#6
class ActiveSupport::Testing::Parallelization::Worker
  # @return [Worker] a new instance of Worker
  #
  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#7
  def initialize(number, url); end

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#80
  def after_fork; end

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#42
  def perform_job(job); end

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#86
  def run_cleanup; end

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#56
  def safe_record(reporter, result); end

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#14
  def start; end

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#36
  def work_from_queue; end

  private

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#93
  def add_setup_exception(result); end

  # source://activesupport//lib/active_support/testing/parallelization/worker.rb#97
  def set_process_title(status); end
end

# source://activesupport//lib/active_support/testing/parallelize_executor.rb#5
class ActiveSupport::Testing::ParallelizeExecutor
  # @return [ParallelizeExecutor] a new instance of ParallelizeExecutor
  #
  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#8
  def initialize(size:, with:, threshold: T.unsafe(nil)); end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#21
  def <<(work); end

  # Returns the value of attribute parallelize_with.
  #
  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#6
  def parallelize_with; end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#25
  def shutdown; end

  # Returns the value of attribute size.
  #
  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#6
  def size; end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#14
  def start; end

  # Returns the value of attribute threshold.
  #
  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#6
  def threshold; end

  private

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#34
  def build_parallel_executor; end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#67
  def execution_info; end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#30
  def parallel_executor; end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#46
  def parallelize; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#51
  def parallelized?; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#55
  def should_parallelize?; end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#63
  def show_execution_info; end

  # source://activesupport//lib/active_support/testing/parallelize_executor.rb#59
  def tests_count; end
end

# Adds support for +setup+ and +teardown+ callbacks.
# These callbacks serve as a replacement to overwriting the
# <tt>#setup</tt> and <tt>#teardown</tt> methods of your TestCase.
#
#   class ExampleTest < ActiveSupport::TestCase
#     setup do
#       # ...
#     end
#
#     teardown do
#       # ...
#     end
#   end
#
# source://activesupport//lib/active_support/testing/setup_and_teardown.rb#20
module ActiveSupport::Testing::SetupAndTeardown
  # source://activesupport//lib/active_support/testing/setup_and_teardown.rb#44
  def after_teardown; end

  # source://activesupport//lib/active_support/testing/setup_and_teardown.rb#39
  def before_setup; end

  class << self
    # source://activesupport//lib/active_support/testing/setup_and_teardown.rb#21
    def prepended(klass); end
  end
end

# source://activesupport//lib/active_support/testing/setup_and_teardown.rb#27
module ActiveSupport::Testing::SetupAndTeardown::ClassMethods
  # Add a callback, which runs before <tt>TestCase#setup</tt>.
  #
  # source://activesupport//lib/active_support/testing/setup_and_teardown.rb#29
  def setup(*args, &block); end

  # Add a callback, which runs after <tt>TestCase#teardown</tt>.
  #
  # source://activesupport//lib/active_support/testing/setup_and_teardown.rb#34
  def teardown(*args, &block); end
end

# Manages stubs for TimeHelpers
#
# source://activesupport//lib/active_support/testing/time_helpers.rb#10
class ActiveSupport::Testing::SimpleStubs
  # @return [SimpleStubs] a new instance of SimpleStubs
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#13
  def initialize; end

  # Stubs object.method_name with the given block
  # If the method is already stubbed, remove that stub
  # so that removing this stub will restore the original implementation.
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #   target = Time.zone.local(2004, 11, 24, 1, 4, 44)
  #   simple_stubs.stub_object(Time, :now) { at(target.to_i) }
  #   Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#24
  def stub_object(object, method_name, &block); end

  # Returns true if any stubs are set, false if there are none
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#54
  def stubbed?; end

  # Returns the Stub for object#method_name
  # (nil if it is not stubbed)
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#49
  def stubbing(object, method_name); end

  # Remove all object-method stubs held by this instance
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#38
  def unstub_all!; end

  private

  # Restores the original object.method described by the Stub
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#60
  def unstub_object(stub); end
end

# source://activesupport//lib/active_support/testing/time_helpers.rb#11
class ActiveSupport::Testing::SimpleStubs::Stub < ::Struct
  # Returns the value of attribute method_name
  #
  # @return [Object] the current value of method_name
  def method_name; end

  # Sets the attribute method_name
  #
  # @param value [Object] the value to set the attribute method_name to.
  # @return [Object] the newly set value
  def method_name=(_); end

  # Returns the value of attribute object
  #
  # @return [Object] the current value of object
  def object; end

  # Sets the attribute object
  #
  # @param value [Object] the value to set the attribute object to.
  # @return [Object] the newly set value
  def object=(_); end

  # Returns the value of attribute original_method
  #
  # @return [Object] the current value of original_method
  def original_method; end

  # Sets the attribute original_method
  #
  # @param value [Object] the value to set the attribute original_method to.
  # @return [Object] the newly set value
  def original_method=(_); end

  class << self
    def [](*_arg0); end
    def inspect; end
    def keyword_init?; end
    def members; end
    def new(*_arg0); end
  end
end

# source://activesupport//lib/active_support/testing/stream.rb#5
module ActiveSupport::Testing::Stream
  private

  # source://activesupport//lib/active_support/testing/stream.rb#23
  def capture(stream); end

  # source://activesupport//lib/active_support/testing/stream.rb#17
  def quietly(&block); end

  # source://activesupport//lib/active_support/testing/stream.rb#7
  def silence_stream(stream); end
end

# Logs a "PostsControllerTest: test name" heading before each test to
# make test.log easier to search and follow along with.
#
# source://activesupport//lib/active_support/testing/tagged_logging.rb#7
module ActiveSupport::Testing::TaggedLogging
  # source://activesupport//lib/active_support/testing/tagged_logging.rb#10
  def before_setup; end

  # source://activesupport//lib/active_support/testing/tagged_logging.rb#8
  def tagged_logger=(_arg0); end

  private

  # source://activesupport//lib/active_support/testing/tagged_logging.rb#22
  def tagged_logger; end
end

# Contains helpers that help you test passage of time.
#
# source://activesupport//lib/active_support/testing/time_helpers.rb#69
module ActiveSupport::Testing::TimeHelpers
  # source://activesupport//lib/active_support/testing/time_helpers.rb#70
  def after_teardown; end

  # Calls +travel_to+ with +Time.now+.
  #
  #   Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
  #   freeze_time
  #   sleep(1)
  #   Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
  #
  # This method also accepts a block, which will return the current time back to its original
  # state at the end of the block:
  #
  #   Time.current # => Sun, 09 Jul 2017 15:34:49 EST -05:00
  #   freeze_time do
  #     sleep(1)
  #     User.create.created_at # => Sun, 09 Jul 2017 15:34:49 EST -05:00
  #   end
  #   Time.current # => Sun, 09 Jul 2017 15:34:50 EST -05:00
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#234
  def freeze_time(&block); end

  # Changes current time to the time in the future or in the past by a given time difference by
  # stubbing +Time.now+, +Date.today+, and +DateTime.now+. The stubs are automatically removed
  # at the end of the test.
  #
  #   Time.current     # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #   travel 1.day
  #   Time.current     # => Sun, 10 Nov 2013 15:34:49 EST -05:00
  #   Date.current     # => Sun, 10 Nov 2013
  #   DateTime.current # => Sun, 10 Nov 2013 15:34:49 -0500
  #
  # This method also accepts a block, which will return the current time back to its original
  # state at the end of the block:
  #
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #   travel 1.day do
  #     User.create.created_at # => Sun, 10 Nov 2013 15:34:49 EST -05:00
  #   end
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#93
  def travel(duration, &block); end

  # Returns the current time back to its original state, by removing the stubs added by
  # +travel+, +travel_to+, and +freeze_time+.
  #
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  #   travel_to Time.zone.local(2004, 11, 24, 1, 4, 44)
  #   Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #
  #   travel_back
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  # This method also accepts a block, which brings the stubs back at the end of the block:
  #
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  #   travel_to Time.zone.local(2004, 11, 24, 1, 4, 44)
  #   Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #
  #   travel_back do
  #     Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #   end
  #
  #   Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#208
  def travel_back; end

  # Changes current time to the given time by stubbing +Time.now+,
  # +Date.today+, and +DateTime.now+ to return the time or date passed into this method.
  # The stubs are automatically removed at the end of the test.
  #
  #   Time.current     # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #   travel_to Time.zone.local(2004, 11, 24, 1, 4, 44)
  #   Time.current     # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #   Date.current     # => Wed, 24 Nov 2004
  #   DateTime.current # => Wed, 24 Nov 2004 01:04:44 -0500
  #
  # Dates are taken as their timestamp at the beginning of the day in the
  # application time zone. <tt>Time.current</tt> returns said timestamp,
  # and <tt>Time.now</tt> its equivalent in the system time zone. Similarly,
  # <tt>Date.current</tt> returns a date equal to the argument, and
  # <tt>Date.today</tt> the date according to <tt>Time.now</tt>, which may
  # be different. (Note that you rarely want to deal with <tt>Time.now</tt>,
  # or <tt>Date.today</tt>, in order to honor the application time zone
  # please always use <tt>Time.current</tt> and <tt>Date.current</tt>.)
  #
  # Note that the usec for the time passed will be set to 0 to prevent rounding
  # errors with external services, like MySQL (which will round instead of floor,
  # leading to off-by-one-second errors).
  #
  # This method also accepts a block, which will return the current time back to its original
  # state at the end of the block:
  #
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #   travel_to Time.zone.local(2004, 11, 24, 1, 4, 44) do
  #     Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #   end
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#128
  def travel_to(date_or_time); end

  # Returns the current time back to its original state, by removing the stubs added by
  # +travel+, +travel_to+, and +freeze_time+.
  #
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  #   travel_to Time.zone.local(2004, 11, 24, 1, 4, 44)
  #   Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #
  #   travel_back
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  # This method also accepts a block, which brings the stubs back at the end of the block:
  #
  #   Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #
  #   travel_to Time.zone.local(2004, 11, 24, 1, 4, 44)
  #   Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #
  #   travel_back do
  #     Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
  #   end
  #
  #   Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#208
  def unfreeze_time; end

  private

  # Returns the value of attribute in_block.
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#243
  def in_block; end

  # Sets the attribute in_block
  #
  # @param value the value to set the attribute in_block to.
  #
  # source://activesupport//lib/active_support/testing/time_helpers.rb#243
  def in_block=(_arg0); end

  # source://activesupport//lib/active_support/testing/time_helpers.rb#239
  def simple_stubs; end
end

# A Time-like class that can represent a time in any time zone. Necessary
# because standard Ruby Time instances are limited to UTC and the
# system's <tt>ENV['TZ']</tt> zone.
#
# You shouldn't ever need to create a TimeWithZone instance directly via +new+.
# Instead use methods +local+, +parse+, +at+, and +now+ on TimeZone instances,
# and +in_time_zone+ on Time and DateTime instances.
#
#   Time.zone = 'Eastern Time (US & Canada)'        # => 'Eastern Time (US & Canada)'
#   Time.zone.local(2007, 2, 10, 15, 30, 45)        # => Sat, 10 Feb 2007 15:30:45.000000000 EST -05:00
#   Time.zone.parse('2007-02-10 15:30:45')          # => Sat, 10 Feb 2007 15:30:45.000000000 EST -05:00
#   Time.zone.at(1171139445)                        # => Sat, 10 Feb 2007 15:30:45.000000000 EST -05:00
#   Time.zone.now                                   # => Sun, 18 May 2008 13:07:55.754107581 EDT -04:00
#   Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone  # => Sat, 10 Feb 2007 15:30:45.000000000 EST -05:00
#
# See Time and TimeZone for further documentation of these methods.
#
# TimeWithZone instances implement the same API as Ruby Time instances, so
# that Time and TimeWithZone instances are interchangeable.
#
#   t = Time.zone.now                     # => Sun, 18 May 2008 13:27:25.031505668 EDT -04:00
#   t.hour                                # => 13
#   t.dst?                                # => true
#   t.utc_offset                          # => -14400
#   t.zone                                # => "EDT"
#   t.to_fs(:rfc822)                      # => "Sun, 18 May 2008 13:27:25 -0400"
#   t + 1.day                             # => Mon, 19 May 2008 13:27:25.031505668 EDT -04:00
#   t.beginning_of_year                   # => Tue, 01 Jan 2008 00:00:00.000000000 EST -05:00
#   t > Time.utc(1999)                    # => true
#   t.is_a?(Time)                         # => true
#   t.is_a?(ActiveSupport::TimeWithZone)  # => true
#
# source://activesupport//lib/active_support/time_with_zone.rb#42
class ActiveSupport::TimeWithZone
  include ::DateAndTime::Compatibility
  include ::Comparable

  # @return [TimeWithZone] a new instance of TimeWithZone
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#61
  def initialize(utc_time, time_zone, local_time = T.unsafe(nil), period = T.unsafe(nil)); end

  # Adds an interval of time to the current object's time and returns that
  # value as a new TimeWithZone object.
  #
  #   Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
  #   now = Time.zone.now # => Sun, 02 Nov 2014 01:26:28.725182881 EDT -04:00
  #   now + 1000          # => Sun, 02 Nov 2014 01:43:08.725182881 EDT -04:00
  #
  # If we're adding a Duration of variable length (i.e., years, months, days),
  # move forward from #time, otherwise move forward from #utc, for accuracy
  # when moving across DST boundaries.
  #
  # For instance, a time + 24.hours will advance exactly 24 hours, while a
  # time + 1.day will advance 23-25 hours, depending on the day.
  #
  #   now + 24.hours      # => Mon, 03 Nov 2014 00:26:28.725182881 EST -05:00
  #   now + 1.day         # => Mon, 03 Nov 2014 01:26:28.725182881 EST -05:00
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#328
  def +(other); end

  # Subtracts an interval of time and returns a new TimeWithZone object unless
  # the other value +acts_like?+ time. In which case, it will subtract the
  # other time and return the difference in seconds as a Float.
  #
  #   Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
  #   now = Time.zone.now # => Mon, 03 Nov 2014 00:26:28.725182881 EST -05:00
  #   now - 1000          # => Mon, 03 Nov 2014 00:09:48.725182881 EST -05:00
  #
  # If subtracting a Duration of variable length (i.e., years, months, days),
  # move backward from #time, otherwise move backward from #utc, for accuracy
  # when moving across DST boundaries.
  #
  # For instance, a time - 24.hours will go subtract exactly 24 hours, while a
  # time - 1.day will subtract 23-25 hours, depending on the day.
  #
  #   now - 24.hours      # => Sun, 02 Nov 2014 01:26:28.725182881 EDT -04:00
  #   now - 1.day         # => Sun, 02 Nov 2014 00:26:28.725182881 EDT -04:00
  #
  # If both the TimeWithZone object and the other value act like Time, a Float
  # will be returned.
  #
  #   Time.zone.now - 1.day.ago # => 86399.999967
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#362
  def -(other); end

  # Use the time in UTC for comparisons.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#261
  def <=>(other); end

  # So that +self+ <tt>acts_like?(:time)</tt>.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#523
  def acts_like_time?; end

  # Uses Date to provide precise Time calculations for years, months, and days
  # according to the proleptic Gregorian calendar. The result is returned as a
  # new TimeWithZone object.
  #
  # The +options+ parameter takes a hash with any of these keys:
  # <tt>:years</tt>, <tt>:months</tt>, <tt>:weeks</tt>, <tt>:days</tt>,
  # <tt>:hours</tt>, <tt>:minutes</tt>, <tt>:seconds</tt>.
  #
  # If advancing by a value of variable length (i.e., years, weeks, months,
  # days), move forward from #time, otherwise move forward from #utc, for
  # accuracy when moving across DST boundaries.
  #
  #   Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
  #   now = Time.zone.now # => Sun, 02 Nov 2014 01:26:28.558049687 EDT -04:00
  #   now.advance(seconds: 1) # => Sun, 02 Nov 2014 01:26:29.558049687 EDT -04:00
  #   now.advance(minutes: 1) # => Sun, 02 Nov 2014 01:27:28.558049687 EDT -04:00
  #   now.advance(hours: 1)   # => Sun, 02 Nov 2014 01:26:28.558049687 EST -05:00
  #   now.advance(days: 1)    # => Mon, 03 Nov 2014 01:26:28.558049687 EST -05:00
  #   now.advance(weeks: 1)   # => Sun, 09 Nov 2014 01:26:28.558049687 EST -05:00
  #   now.advance(months: 1)  # => Tue, 02 Dec 2014 01:26:28.558049687 EST -05:00
  #   now.advance(years: 1)   # => Mon, 02 Nov 2015 01:26:28.558049687 EST -05:00
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#451
  def advance(options); end

  def after?(_arg0); end

  # Subtracts an interval of time from the current object's time and returns
  # the result as a new TimeWithZone object.
  #
  #   Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
  #   now = Time.zone.now # => Mon, 03 Nov 2014 00:26:28.725182881 EST -05:00
  #   now.ago(1000)       # => Mon, 03 Nov 2014 00:09:48.725182881 EST -05:00
  #
  # If we're subtracting a Duration of variable length (i.e., years, months,
  # days), move backward from #time, otherwise move backward from #utc, for
  # accuracy when moving across DST boundaries.
  #
  # For instance, <tt>time.ago(24.hours)</tt> will move back exactly 24 hours,
  # while <tt>time.ago(1.day)</tt> will move back 23-25 hours, depending on
  # the day.
  #
  #   now.ago(24.hours)   # => Sun, 02 Nov 2014 01:26:28.725182881 EDT -04:00
  #   now.ago(1.day)      # => Sun, 02 Nov 2014 00:26:28.725182881 EDT -04:00
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#390
  def ago(other); end

  # Coerces time to a string for JSON encoding. The default format is ISO 8601.
  # You can get %Y/%m/%d %H:%M:%S +offset style by setting
  # <tt>ActiveSupport::JSON::Encoding.use_standard_json_time_format</tt>
  # to +false+.
  #
  #   # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = true
  #   Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").to_json
  #   # => "2005-02-01T05:15:10.000-10:00"
  #
  #   # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = false
  #   Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").to_json
  #   # => "2005/02/01 05:15:10 -1000"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#176
  def as_json(options = T.unsafe(nil)); end

  def before?(_arg0); end

  # Returns true if the current object's time is within the specified
  # +min+ and +max+ time.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#269
  def between?(min, max); end

  # An instance of ActiveSupport::TimeWithZone is never blank
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#534
  def blank?; end

  # Returns a new +ActiveSupport::TimeWithZone+ where one or more of the elements have
  # been changed according to the +options+ parameter. The time options (<tt>:hour</tt>,
  # <tt>:min</tt>, <tt>:sec</tt>, <tt>:usec</tt>, <tt>:nsec</tt>) reset cascadingly,
  # so if only the hour is passed, then minute, sec, usec, and nsec is set to 0. If the
  # hour and minute is passed, then sec, usec, and nsec is set to 0. The +options+
  # parameter takes a hash with any of these keys: <tt>:year</tt>, <tt>:month</tt>,
  # <tt>:day</tt>, <tt>:hour</tt>, <tt>:min</tt>, <tt>:sec</tt>, <tt>:usec</tt>,
  # <tt>:nsec</tt>, <tt>:offset</tt>, <tt>:zone</tt>. Pass either <tt>:usec</tt>
  # or <tt>:nsec</tt>, not both. Similarly, pass either <tt>:zone</tt> or
  # <tt>:offset</tt>, not both.
  #
  #   t = Time.zone.now          # => Fri, 14 Apr 2017 11:45:15.116992711 EST -05:00
  #   t.change(year: 2020)       # => Tue, 14 Apr 2020 11:45:15.116992711 EST -05:00
  #   t.change(hour: 12)         # => Fri, 14 Apr 2017 12:00:00.116992711 EST -05:00
  #   t.change(min: 30)          # => Fri, 14 Apr 2017 11:30:00.116992711 EST -05:00
  #   t.change(offset: "-10:00") # => Fri, 14 Apr 2017 11:45:15.116992711 HST -10:00
  #   t.change(zone: "Hawaii")   # => Fri, 14 Apr 2017 11:45:15.116992711 HST -10:00
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#411
  def change(options); end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#73
  def comparable_time; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def day; end

  # Returns true if the current time is within Daylight Savings Time for the
  # specified time zone.
  #
  #   Time.zone = 'Eastern Time (US & Canada)'    # => 'Eastern Time (US & Canada)'
  #   Time.zone.parse("2012-5-30").dst?           # => true
  #   Time.zone.parse("2012-11-30").dst?          # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#104
  def dst?; end

  # source://activesupport//lib/active_support/time_with_zone.rb#188
  def encode_with(coder); end

  # Returns +true+ if +other+ is equal to current object.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#304
  def eql?(other); end

  # Returns a formatted string of the offset from UTC, or an alternative
  # string if the time zone is already UTC.
  #
  #   Time.zone = 'Eastern Time (US & Canada)'   # => "Eastern Time (US & Canada)"
  #   Time.zone.now.formatted_offset(true)       # => "-05:00"
  #   Time.zone.now.formatted_offset(false)      # => "-0500"
  #   Time.zone = 'UTC'                          # => "UTC"
  #   Time.zone.now.formatted_offset(true, "0")  # => "0"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#135
  def formatted_offset(colon = T.unsafe(nil), alternate_utc_string = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/time_with_zone.rb#538
  def freeze; end

  # Returns true if the current object's time is in the future.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#299
  def future?; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#73
  def getgm; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the system timezone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#93
  def getlocal(utc_offset = T.unsafe(nil)); end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#73
  def getutc; end

  # Returns true if the current time zone is set to UTC.
  #
  #   Time.zone = 'UTC'                           # => 'UTC'
  #   Time.zone.now.utc?                          # => true
  #   Time.zone = 'Eastern Time (US & Canada)'    # => 'Eastern Time (US & Canada)'
  #   Time.zone.now.utc?                          # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#115
  def gmt?; end

  # Returns the offset from current time to UTC time in seconds.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#121
  def gmt_offset; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#73
  def gmtime; end

  # Returns the offset from current time to UTC time in seconds.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#121
  def gmtoff; end

  # source://activesupport//lib/active_support/time_with_zone.rb#308
  def hash; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def hour; end

  # Returns a string of the object's date and time in the format used by
  # HTTP requests.
  #
  #   Time.zone.now.httpdate  # => "Tue, 01 Jan 2013 04:39:43 GMT"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#196
  def httpdate; end

  # Adds an interval of time to the current object's time and returns that
  # value as a new TimeWithZone object.
  #
  #   Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
  #   now = Time.zone.now # => Sun, 02 Nov 2014 01:26:28.725182881 EDT -04:00
  #   now + 1000          # => Sun, 02 Nov 2014 01:43:08.725182881 EDT -04:00
  #
  # If we're adding a Duration of variable length (i.e., years, months, days),
  # move forward from #time, otherwise move forward from #utc, for accuracy
  # when moving across DST boundaries.
  #
  # For instance, a time + 24.hours will advance exactly 24 hours, while a
  # time + 1.day will advance 23-25 hours, depending on the day.
  #
  #   now + 24.hours      # => Mon, 03 Nov 2014 00:26:28.725182881 EST -05:00
  #   now + 1.day         # => Mon, 03 Nov 2014 01:26:28.725182881 EST -05:00
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#328
  def in(other); end

  # Returns the simultaneous time in <tt>Time.zone</tt>, or the specified zone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#87
  def in_time_zone(new_zone = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/time_with_zone.rb#184
  def init_with(coder); end

  # Returns a string of the object's date, time, zone, and offset from UTC.
  #
  #   Time.zone.now.inspect # => "Thu, 04 Dec 2014 11:00:25.624541392 EST -05:00"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#150
  def inspect; end

  # Say we're a Time to thwart type checking.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#528
  def is_a?(klass); end

  # Returns true if the current time is within Daylight Savings Time for the
  # specified time zone.
  #
  #   Time.zone = 'Eastern Time (US & Canada)'    # => 'Eastern Time (US & Canada)'
  #   Time.zone.parse("2012-5-30").dst?           # => true
  #   Time.zone.parse("2012-11-30").dst?          # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#104
  def isdst; end

  # Returns a string of the object's date and time in the ISO 8601 standard
  # format.
  #
  #   Time.zone.now.xmlschema  # => "2014-12-04T11:02:37-05:00"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#158
  def iso8601(fraction_digits = T.unsafe(nil)); end

  # Say we're a Time to thwart type checking.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#528
  def kind_of?(klass); end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the system timezone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#93
  def localtime(utc_offset = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/time_with_zone.rb#544
  def marshal_dump; end

  # source://activesupport//lib/active_support/time_with_zone.rb#548
  def marshal_load(variables); end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def mday; end

  # Send the missing method to +time+ instance, and wrap result in a new
  # TimeWithZone with the existing +time_zone+.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#569
  def method_missing(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def min; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def mon; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def month; end

  # Returns true if the current object's time falls within
  # the next day (tomorrow).
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#286
  def next_day?; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def nsec; end

  # Returns true if the current object's time is in the past.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#274
  def past?; end

  # Returns the underlying <tt>TZInfo::TimezonePeriod</tt>.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#82
  def period; end

  # Returns true if the current object's time falls within
  # the previous day (yesterday).
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#293
  def prev_day?; end

  # respond_to_missing? is not called in some cases, such as when type conversion is
  # performed with Kernel#String
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#554
  def respond_to?(sym, include_priv = T.unsafe(nil)); end

  # Returns a string of the object's date and time in the RFC 2822 standard
  # format.
  #
  #   Time.zone.now.rfc2822  # => "Tue, 01 Jan 2013 04:51:39 +0000"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#204
  def rfc2822; end

  # Returns a string of the object's date and time in the ISO 8601 standard
  # format.
  #
  #   Time.zone.now.xmlschema  # => "2014-12-04T11:02:37-05:00"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#158
  def rfc3339(fraction_digits = T.unsafe(nil)); end

  # Returns a string of the object's date and time in the RFC 2822 standard
  # format.
  #
  #   Time.zone.now.rfc2822  # => "Tue, 01 Jan 2013 04:51:39 +0000"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#204
  def rfc822; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def sec; end

  # Adds an interval of time to the current object's time and returns that
  # value as a new TimeWithZone object.
  #
  #   Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
  #   now = Time.zone.now # => Sun, 02 Nov 2014 01:26:28.725182881 EDT -04:00
  #   now + 1000          # => Sun, 02 Nov 2014 01:43:08.725182881 EDT -04:00
  #
  # If we're adding a Duration of variable length (i.e., years, months, days),
  # move forward from #time, otherwise move forward from #utc, for accuracy
  # when moving across DST boundaries.
  #
  # For instance, a time + 24.hours will advance exactly 24 hours, while a
  # time + 1.day will advance 23-25 hours, depending on the day.
  #
  #   now + 24.hours      # => Mon, 03 Nov 2014 00:26:28.725182881 EST -05:00
  #   now + 1.day         # => Mon, 03 Nov 2014 01:26:28.725182881 EST -05:00
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#328
  def since(other); end

  # Replaces <tt>%Z</tt> directive with +zone before passing to Time#strftime,
  # so that zone information is correct.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#255
  def strftime(format); end

  # Returns a <tt>Time</tt> instance that represents the time in +time_zone+.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#68
  def time; end

  # Returns the value of attribute time_zone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#59
  def time_zone; end

  # Returns Array of parts of Time in sequence of
  # [seconds, minutes, hours, day, month, year, weekday, yearday, dst?, zone].
  #
  #   now = Time.zone.now     # => Tue, 18 Aug 2015 02:29:27.485278555 UTC +00:00
  #   now.to_a                # => [27, 29, 2, 18, 8, 2015, 2, 230, false, "UTC"]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#474
  def to_a; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def to_date; end

  # Returns an instance of DateTime with the timezone's UTC offset
  #
  #   Time.zone.now.to_datetime                         # => Tue, 18 Aug 2015 02:32:20 +0000
  #   Time.current.in_time_zone('Hawaii').to_datetime   # => Mon, 17 Aug 2015 16:32:20 -1000
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#507
  def to_datetime; end

  # Returns the object's date and time as a floating-point number of seconds
  # since the Epoch (January 1, 1970 00:00 UTC).
  #
  #   Time.zone.now.to_f # => 1417709320.285418
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#482
  def to_f; end

  # Returns a string of the object's date and time.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  # Accepts an optional <tt>format</tt>:
  # * <tt>:default</tt> - default value, mimics Ruby Time#to_s format.
  # * <tt>:db</tt> - format outputs time in UTC :db time. See Time#to_fs(:db).
  # * Any key in <tt>Time::DATE_FORMATS</tt> can be used. See active_support/core_ext/time/conversions.rb.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#241
  def to_formatted_s(format = T.unsafe(nil)); end

  # Returns a string of the object's date and time.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  # Accepts an optional <tt>format</tt>:
  # * <tt>:default</tt> - default value, mimics Ruby Time#to_s format.
  # * <tt>:db</tt> - format outputs time in UTC :db time. See Time#to_fs(:db).
  # * Any key in <tt>Time::DATE_FORMATS</tt> can be used. See active_support/core_ext/time/conversions.rb.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#241
  def to_fs(format = T.unsafe(nil)); end

  # Returns the object's date and time as an integer number of seconds
  # since the Epoch (January 1, 1970 00:00 UTC).
  #
  #   Time.zone.now.to_i # => 1417709320
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#490
  def to_i; end

  # Returns the object's date and time as a rational number of seconds
  # since the Epoch (January 1, 1970 00:00 UTC).
  #
  #   Time.zone.now.to_r # => (708854548642709/500000)
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#499
  def to_r; end

  # Returns a string of the object's date and time.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#212
  def to_s(format = T.unsafe(nil)); end

  # Returns an instance of +Time+, either with the same UTC offset
  # as +self+ or in the local system timezone depending on the setting
  # of +ActiveSupport.to_time_preserves_timezone+.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#514
  def to_time; end

  # Returns true if the current object's time falls within
  # the current day.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#280
  def today?; end

  # Returns true if the current object's time falls within
  # the next day (tomorrow).
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#286
  def tomorrow?; end

  # Returns the object's date and time as an integer number of seconds
  # since the Epoch (January 1, 1970 00:00 UTC).
  #
  #   Time.zone.now.to_i # => 1417709320
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#490
  def tv_sec; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def usec; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#73
  def utc; end

  # Returns true if the current time zone is set to UTC.
  #
  #   Time.zone = 'UTC'                           # => 'UTC'
  #   Time.zone.now.utc?                          # => true
  #   Time.zone = 'Eastern Time (US & Canada)'    # => 'Eastern Time (US & Canada)'
  #   Time.zone.now.utc?                          # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#115
  def utc?; end

  # Returns the offset from current time to UTC time in seconds.
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#121
  def utc_offset; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def wday; end

  # Returns a string of the object's date and time in the ISO 8601 standard
  # format.
  #
  #   Time.zone.now.xmlschema  # => "2014-12-04T11:02:37-05:00"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#158
  def xmlschema(fraction_digits = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def yday; end

  # source://activesupport//lib/active_support/time_with_zone.rb#463
  def year; end

  # Returns true if the current object's time falls within
  # the previous day (yesterday).
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#293
  def yesterday?; end

  # Returns the time zone abbreviation.
  #
  #   Time.zone = 'Eastern Time (US & Canada)'   # => "Eastern Time (US & Canada)"
  #   Time.zone.now.zone # => "EST"
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#143
  def zone; end

  private

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#605
  def duration_of_variable_length?(obj); end

  # source://activesupport//lib/active_support/time_with_zone.rb#586
  def get_period_and_ensure_valid_local_time(period); end

  # source://activesupport//lib/active_support/time_with_zone.rb#578
  def incorporate_utc_offset(time, offset); end

  # Ensure proxy class responds to all methods that underlying time instance
  # responds to.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/time_with_zone.rb#562
  def respond_to_missing?(sym, include_priv); end

  # source://activesupport//lib/active_support/time_with_zone.rb#599
  def transfer_time_values_to_utc_constructor(time); end

  # source://activesupport//lib/active_support/time_with_zone.rb#609
  def wrap_with_time_zone(time); end

  class << self
    # Report class name as 'Time' to thwart type checking.
    #
    # source://activesupport//lib/active_support/time_with_zone.rb#44
    def name; end
  end
end

# source://activesupport//lib/active_support/time_with_zone.rb#209
ActiveSupport::TimeWithZone::NOT_SET = T.let(T.unsafe(nil), Object)

# source://activesupport//lib/active_support/time_with_zone.rb#55
ActiveSupport::TimeWithZone::PRECISIONS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/time_with_zone.rb#576
ActiveSupport::TimeWithZone::SECONDS_PER_DAY = T.let(T.unsafe(nil), Integer)

# The TimeZone class serves as a wrapper around <tt>TZInfo::Timezone</tt> instances.
# It allows us to do the following:
#
# * Limit the set of zones provided by TZInfo to a meaningful subset of 134
#   zones.
# * Retrieve and display zones with a friendlier name
#   (e.g., "Eastern Time (US & Canada)" instead of "America/New_York").
# * Lazily load <tt>TZInfo::Timezone</tt> instances only when they're needed.
# * Create ActiveSupport::TimeWithZone instances via TimeZone's +local+,
#   +parse+, +at+, and +now+ methods.
#
# If you set <tt>config.time_zone</tt> in the Rails Application, you can
# access this TimeZone object via <tt>Time.zone</tt>:
#
#   # application.rb:
#   class Application < Rails::Application
#     config.time_zone = 'Eastern Time (US & Canada)'
#   end
#
#   Time.zone      # => #<ActiveSupport::TimeZone:0x514834...>
#   Time.zone.name # => "Eastern Time (US & Canada)"
#   Time.zone.now  # => Sun, 18 May 2008 14:30:44 EDT -04:00
#
# source://activesupport//lib/active_support/values/time_zone.rb#29
class ActiveSupport::TimeZone
  include ::Comparable

  # Create a new TimeZone object with the given name and offset. The
  # offset is the number of seconds that this time zone is offset from UTC
  # (GMT). Seconds were chosen as the offset unit because that is the unit
  # that Ruby uses to represent time zone offsets (see Time#utc_offset).
  #
  # @return [TimeZone] a new instance of TimeZone
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#301
  def initialize(name, utc_offset = T.unsafe(nil), tzinfo = T.unsafe(nil)); end

  # Compare this time zone to the parameter. The two are compared first on
  # their offsets, and then by name.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#324
  def <=>(zone); end

  # Compare #name and TZInfo identifier to a supplied regexp, returning +true+
  # if a match is found.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#333
  def =~(re); end

  # Method for creating new ActiveSupport::TimeWithZone instance in time zone
  # of +self+ from number of seconds since the Unix epoch.
  #
  #   Time.zone = 'Hawaii'        # => "Hawaii"
  #   Time.utc(2000).to_f         # => 946684800.0
  #   Time.zone.at(946684800.0)   # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #
  # A second argument can be supplied to specify sub-second precision.
  #
  #   Time.zone = 'Hawaii'                # => "Hawaii"
  #   Time.at(946684800, 123456.789).nsec # => 123456789
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#370
  def at(*args); end

  # source://activesupport//lib/active_support/values/time_zone.rb#566
  def encode_with(coder); end

  # Returns a formatted string of the offset from UTC, or an alternative
  # string if the time zone is already UTC.
  #
  #   zone = ActiveSupport::TimeZone['Central Time (US & Canada)']
  #   zone.formatted_offset        # => "-06:00"
  #   zone.formatted_offset(false) # => "-0600"
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#318
  def formatted_offset(colon = T.unsafe(nil), alternate_utc_string = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/values/time_zone.rb#562
  def init_with(coder); end

  # Method for creating new ActiveSupport::TimeWithZone instance in time zone
  # of +self+ from an ISO 8601 string.
  #
  #   Time.zone = 'Hawaii'                     # => "Hawaii"
  #   Time.zone.iso8601('1999-12-31T14:00:00') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #
  # If the time components are missing then they will be set to zero.
  #
  #   Time.zone = 'Hawaii'            # => "Hawaii"
  #   Time.zone.iso8601('1999-12-31') # => Fri, 31 Dec 1999 00:00:00 HST -10:00
  #
  # If the string is invalid then an +ArgumentError+ will be raised unlike +parse+
  # which usually returns +nil+ when given an invalid date string.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#387
  def iso8601(str); end

  # Method for creating new ActiveSupport::TimeWithZone instance in time zone
  # of +self+ from given values.
  #
  #   Time.zone = 'Hawaii'                    # => "Hawaii"
  #   Time.zone.local(2007, 2, 1, 15, 30, 45) # => Thu, 01 Feb 2007 15:30:45 HST -10:00
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#354
  def local(*args); end

  # Adjust the given time to the simultaneous time in UTC. Returns a
  # Time.utc() instance.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#542
  def local_to_utc(time, dst = T.unsafe(nil)); end

  # Compare #name and TZInfo identifier to a supplied regexp, returning +true+
  # if a match is found.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#339
  def match?(re); end

  # Returns the value of attribute name.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#294
  def name; end

  # Returns an ActiveSupport::TimeWithZone instance representing the current
  # time in the time zone represented by +self+.
  #
  #   Time.zone = 'Hawaii'  # => "Hawaii"
  #   Time.zone.now         # => Wed, 23 Jan 2008 20:24:27 HST -10:00
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#507
  def now; end

  # Method for creating new ActiveSupport::TimeWithZone instance in time zone
  # of +self+ from parsed string.
  #
  #   Time.zone = 'Hawaii'                   # => "Hawaii"
  #   Time.zone.parse('1999-12-31 14:00:00') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #
  # If upper components are missing from the string, they are supplied from
  # TimeZone#now:
  #
  #   Time.zone.now               # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #   Time.zone.parse('22:30:00') # => Fri, 31 Dec 1999 22:30:00 HST -10:00
  #
  # However, if the date component is not provided, but any other upper
  # components are supplied, then the day of the month defaults to 1:
  #
  #   Time.zone.parse('Mar 2000') # => Wed, 01 Mar 2000 00:00:00 HST -10:00
  #
  # If the string is invalid then an +ArgumentError+ could be raised.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#444
  def parse(str, now = T.unsafe(nil)); end

  # Available so that TimeZone instances respond like <tt>TZInfo::Timezone</tt>
  # instances.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#554
  def period_for_local(time, dst = T.unsafe(nil)); end

  # Available so that TimeZone instances respond like <tt>TZInfo::Timezone</tt>
  # instances.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#548
  def period_for_utc(time); end

  # source://activesupport//lib/active_support/values/time_zone.rb#558
  def periods_for_local(time); end

  # Method for creating new ActiveSupport::TimeWithZone instance in time zone
  # of +self+ from an RFC 3339 string.
  #
  #   Time.zone = 'Hawaii'                     # => "Hawaii"
  #   Time.zone.rfc3339('2000-01-01T00:00:00Z') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #
  # If the time or zone components are missing then an +ArgumentError+ will
  # be raised. This is much stricter than either +parse+ or +iso8601+ which
  # allow for missing components.
  #
  #   Time.zone = 'Hawaii'            # => "Hawaii"
  #   Time.zone.rfc3339('1999-12-31') # => ArgumentError: invalid date
  #
  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#460
  def rfc3339(str); end

  # Parses +str+ according to +format+ and returns an ActiveSupport::TimeWithZone.
  #
  # Assumes that +str+ is a time in the time zone +self+,
  # unless +format+ includes an explicit time zone.
  # (This is the same behavior as +parse+.)
  # In either case, the returned TimeWithZone has the timezone of +self+.
  #
  #   Time.zone = 'Hawaii'                   # => "Hawaii"
  #   Time.zone.strptime('1999-12-31 14:00:00', '%Y-%m-%d %H:%M:%S') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #
  # If upper components are missing from the string, they are supplied from
  # TimeZone#now:
  #
  #   Time.zone.now                              # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #   Time.zone.strptime('22:30:00', '%H:%M:%S') # => Fri, 31 Dec 1999 22:30:00 HST -10:00
  #
  # However, if the date component is not provided, but any other upper
  # components are supplied, then the day of the month defaults to 1:
  #
  #   Time.zone.strptime('Mar 2000', '%b %Y') # => Wed, 01 Mar 2000 00:00:00 HST -10:00
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#498
  def strptime(str, format, now = T.unsafe(nil)); end

  # Returns a textual representation of this time zone.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#345
  def to_s; end

  # Returns the current date in this time zone.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#512
  def today; end

  # Returns the next date in this time zone.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#517
  def tomorrow; end

  # Returns the value of attribute tzinfo.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#295
  def tzinfo; end

  # Returns the offset of this time zone from UTC in seconds.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#308
  def utc_offset; end

  # Adjust the given time to the simultaneous time in the time zone
  # represented by +self+. Returns a local time with the appropriate offset
  # -- if you want an ActiveSupport::TimeWithZone instance, use
  # Time#in_time_zone() instead.
  #
  # As of tzinfo 2, utc_to_local returns a Time with a non-zero utc_offset.
  # See the +utc_to_local_returns_utc_offset_times+ config for more info.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#533
  def utc_to_local(time); end

  # Returns the previous date in this time zone.
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#522
  def yesterday; end

  private

  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/values/time_zone.rb#572
  def parts_to_time(parts, now); end

  # source://activesupport//lib/active_support/values/time_zone.rb#597
  def time_now; end

  class << self
    # Locate a specific time zone object. If the argument is a string, it
    # is interpreted to mean the name of the timezone to locate. If it is a
    # numeric value it is either the hour offset, or the second offset, of the
    # timezone to find. (The first one with that offset will be returned.)
    # Returns +nil+ if no such time zone is known to the system.
    #
    # source://activesupport//lib/active_support/values/time_zone.rb#230
    def [](arg); end

    # Returns an array of all TimeZone objects. There are multiple
    # TimeZone objects per time zone, in many cases, to make it easier
    # for users to find their own time zone.
    #
    # source://activesupport//lib/active_support/values/time_zone.rb#221
    def all; end

    # source://activesupport//lib/active_support/values/time_zone.rb#263
    def clear; end

    # A convenience method for returning a collection of TimeZone objects
    # for time zones in the country specified by its ISO 3166-1 Alpha2 code.
    #
    # source://activesupport//lib/active_support/values/time_zone.rb#258
    def country_zones(country_code); end

    def create(*_arg0); end

    # source://activesupport//lib/active_support/values/time_zone.rb#205
    def find_tzinfo(name); end

    # Returns a TimeZone instance with the given name, or +nil+ if no
    # such TimeZone instance exists. (This exists to support the use of
    # this class with the +composed_of+ macro.)
    #
    # source://activesupport//lib/active_support/values/time_zone.rb#214
    def new(name); end

    # Assumes self represents an offset from UTC in seconds (as returned from
    # Time#utc_offset) and turns this into an +HH:MM formatted string.
    #
    #   ActiveSupport::TimeZone.seconds_to_utc_offset(-21_600) # => "-06:00"
    #
    # source://activesupport//lib/active_support/values/time_zone.rb#197
    def seconds_to_utc_offset(seconds, colon = T.unsafe(nil)); end

    # A convenience method for returning a collection of TimeZone objects
    # for time zones in the USA.
    #
    # source://activesupport//lib/active_support/values/time_zone.rb#252
    def us_zones; end

    private

    # source://activesupport//lib/active_support/values/time_zone.rb#271
    def load_country_zones(code); end

    # source://activesupport//lib/active_support/values/time_zone.rb#285
    def zones_map; end
  end
end

# Keys are Rails TimeZone names, values are TZInfo identifiers.
#
# source://activesupport//lib/active_support/values/time_zone.rb#31
ActiveSupport::TimeZone::MAPPING = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/values/time_zone.rb#186
ActiveSupport::TimeZone::UTC_OFFSET_WITHOUT_COLON = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/values/time_zone.rb#185
ActiveSupport::TimeZone::UTC_OFFSET_WITH_COLON = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/object/json.rb#35
module ActiveSupport::ToJsonWithActiveSupportEncoder
  # source://activesupport//lib/active_support/core_ext/object/json.rb#36
  def to_json(options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/object/try.rb#6
module ActiveSupport::Tryable
  # source://activesupport//lib/active_support/core_ext/object/try.rb#7
  def try(*args, **_arg1, &block); end

  # source://activesupport//lib/active_support/core_ext/object/try.rb#20
  def try!(*args, **_arg1, &block); end
end

# source://activesupport//lib/active_support/gem_version.rb#9
module ActiveSupport::VERSION; end

# source://activesupport//lib/active_support/gem_version.rb#10
ActiveSupport::VERSION::MAJOR = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/gem_version.rb#11
ActiveSupport::VERSION::MINOR = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/gem_version.rb#13
ActiveSupport::VERSION::PRE = T.let(T.unsafe(nil), T.untyped)

# source://activesupport//lib/active_support/gem_version.rb#15
ActiveSupport::VERSION::STRING = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/gem_version.rb#12
ActiveSupport::VERSION::TINY = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/hash/conversions.rb#140
class ActiveSupport::XMLConverter
  # @return [XMLConverter] a new instance of XMLConverter
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#151
  def initialize(xml, disallowed_types = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#156
  def to_h; end

  private

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#222
  def become_array?(value); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#218
  def become_content?(value); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#226
  def become_empty_string?(value); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#232
  def become_hash?(value); end

  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#172
  def deep_to_h(value); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#241
  def garbage?(value); end

  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#161
  def normalize_keys(params); end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#236
  def nothing?(value); end

  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#257
  def process_array(value); end

  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#248
  def process_content(value); end

  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#185
  def process_hash(value); end
end

# source://activesupport//lib/active_support/core_ext/hash/conversions.rb#149
ActiveSupport::XMLConverter::DISALLOWED_TYPES = T.let(T.unsafe(nil), Array)

# Raised if the XML contains attributes with type="yaml" or
# type="symbol". Read Hash#from_xml for more details.
#
# source://activesupport//lib/active_support/core_ext/hash/conversions.rb#143
class ActiveSupport::XMLConverter::DisallowedType < ::StandardError
  # @return [DisallowedType] a new instance of DisallowedType
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#144
  def initialize(type); end
end

# = XmlMini
#
# To use the much faster libxml parser:
#   gem 'libxml-ruby', '=0.9.7'
#   XmlMini.backend = 'LibXML'
#
# source://activesupport//lib/active_support/xml_mini.rb#17
module ActiveSupport::XmlMini
  extend ::ActiveSupport::XmlMini

  # source://activesupport//lib/active_support/xml_mini.rb#97
  def backend; end

  # source://activesupport//lib/active_support/xml_mini.rb#101
  def backend=(name); end

  # Returns the value of attribute depth.
  #
  # source://activesupport//lib/active_support/xml_mini.rb#92
  def depth; end

  # Sets the attribute depth
  #
  # @param value the value to set the attribute depth to.
  #
  # source://activesupport//lib/active_support/xml_mini.rb#92
  def depth=(_arg0); end

  # source://activesupport//lib/active_support/xml_mini.rb#95
  def parse(*_arg0, **_arg1, &_arg2); end

  # source://activesupport//lib/active_support/xml_mini.rb#148
  def rename_key(key, options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/xml_mini.rb#115
  def to_tag(key, value, options); end

  # source://activesupport//lib/active_support/xml_mini.rb#107
  def with_backend(name); end

  private

  # source://activesupport//lib/active_support/xml_mini.rb#159
  def _dasherize(key); end

  # TODO: Add support for other encodings
  #
  # source://activesupport//lib/active_support/xml_mini.rb#166
  def _parse_binary(bin, entity); end

  # source://activesupport//lib/active_support/xml_mini.rb#175
  def _parse_file(file, entity); end

  # source://activesupport//lib/active_support/xml_mini.rb#191
  def cast_backend_name_to_module(name); end

  # source://activesupport//lib/active_support/xml_mini.rb#183
  def current_thread_backend; end

  # source://activesupport//lib/active_support/xml_mini.rb#187
  def current_thread_backend=(name); end
end

# source://activesupport//lib/active_support/xml_mini.rb#34
ActiveSupport::XmlMini::DEFAULT_ENCODINGS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/xml_mini.rb#55
ActiveSupport::XmlMini::FORMATTING = T.let(T.unsafe(nil), Hash)

# This module decorates files deserialized using Hash.from_xml with
# the <tt>original_filename</tt> and <tt>content_type</tt> methods.
#
# source://activesupport//lib/active_support/xml_mini.rb#22
module ActiveSupport::XmlMini::FileLike
  # source://activesupport//lib/active_support/xml_mini.rb#29
  def content_type; end

  # source://activesupport//lib/active_support/xml_mini.rb#23
  def content_type=(_arg0); end

  # source://activesupport//lib/active_support/xml_mini.rb#25
  def original_filename; end

  # source://activesupport//lib/active_support/xml_mini.rb#23
  def original_filename=(_arg0); end
end

# source://activesupport//lib/active_support/xml_mini.rb#65
ActiveSupport::XmlMini::PARSING = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/xml_mini.rb#39
ActiveSupport::XmlMini::TYPE_NAMES = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/xml_mini/rexml.rb#8
module ActiveSupport::XmlMini_REXML
  extend ::ActiveSupport::XmlMini_REXML

  # Parse an XML Document string or IO into a simple hash.
  #
  # Same as XmlSimple::xml_in but doesn't shoot itself in the foot,
  # and uses the defaults from Active Support.
  #
  # data::
  #   XML Document string or IO to parse
  #
  # source://activesupport//lib/active_support/xml_mini/rexml.rb#20
  def parse(data); end

  private

  # Actually converts an XML document element into a data structure.
  #
  # element::
  #   The document element to be collapsed.
  #
  # source://activesupport//lib/active_support/xml_mini/rexml.rb#63
  def collapse(element, depth); end

  # Determines if a document element has text content
  #
  # element::
  #   XML element to be checked.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/xml_mini/rexml.rb#133
  def empty_content?(element); end

  # Converts the attributes array of an XML element into a hash.
  # Returns an empty Hash if node has no attributes.
  #
  # element::
  #   XML element to extract attributes from.
  #
  # source://activesupport//lib/active_support/xml_mini/rexml.rb#123
  def get_attributes(element); end

  # Adds a new key/value pair to an existing Hash. If the key to be added
  # already exists and the existing value associated with key is not
  # an Array, it will be wrapped in an Array. Then the new value is
  # appended to that Array.
  #
  # hash::
  #   Hash to add key/value pair to.
  # key::
  #   Key to be added.
  # value::
  #   Value to be associated with key.
  #
  # source://activesupport//lib/active_support/xml_mini/rexml.rb#103
  def merge!(hash, key, value); end

  # Convert an XML element and merge into the hash
  #
  # hash::
  #   Hash to merge the converted element into.
  # element::
  #   XML element to merge into hash
  #
  # @raise [REXML::ParseException]
  #
  # source://activesupport//lib/active_support/xml_mini/rexml.rb#54
  def merge_element!(hash, element, depth); end

  # Merge all the texts of an element into the hash
  #
  # hash::
  #   Hash to add the converted element to.
  # element::
  #   XML element whose texts are to me merged into the hash
  #
  # source://activesupport//lib/active_support/xml_mini/rexml.rb#81
  def merge_texts!(hash, element); end

  # source://activesupport//lib/active_support/xml_mini/rexml.rb#41
  def require_rexml; end
end

# source://activesupport//lib/active_support/xml_mini/rexml.rb#11
ActiveSupport::XmlMini_REXML::CONTENT_KEY = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/object/blank.rb#83
class Array
  include ::Enumerable

  # source://activesupport//lib/active_support/core_ext/object/json.rb#158
  def as_json(options = T.unsafe(nil)); end

  # Removes all blank elements from the +Array+ in place and returns self.
  # Uses Object#blank? for determining if an item is blank.
  #
  #   a = [1, "", nil, 2, " ", [], {}, false, true]
  #   a.compact_blank!
  #   # =>  [1, 2, true]
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#325
  def compact_blank!; end

  # Returns a copy of the Array excluding the specified elements.
  #
  #   ["David", "Rafael", "Aaron", "Todd"].excluding("Aaron", "Todd") # => ["David", "Rafael"]
  #   [ [ 0, 1 ], [ 1, 0 ] ].excluding([ [ 1, 0 ] ]) # => [ [ 0, 1 ] ]
  #
  # Note: This is an optimization of <tt>Enumerable#excluding</tt> that uses <tt>Array#-</tt>
  # instead of <tt>Array#reject</tt> for performance reasons.
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#47
  def excluding(*elements); end

  # Removes and returns the elements for which the block returns a true value.
  # If no block is given, an Enumerator is returned instead.
  #
  #   numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  #   odd_numbers = numbers.extract! { |number| number.odd? } # => [1, 3, 5, 7, 9]
  #   numbers # => [0, 2, 4, 6, 8]
  #
  # source://activesupport//lib/active_support/core_ext/array/extract.rb#10
  def extract!; end

  # Extracts options from a set of arguments. Removes and returns the last
  # element in the array if it's a hash, otherwise returns a blank hash.
  #
  #   def options(*args)
  #     args.extract_options!
  #   end
  #
  #   options(1, 2)        # => {}
  #   options(1, 2, a: :b) # => {:a=>:b}
  #
  # source://activesupport//lib/active_support/core_ext/array/extract_options.rb#24
  def extract_options!; end

  # Equal to <tt>self[4]</tt>.
  #
  #   %w( a b c d e ).fifth # => "e"
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#76
  def fifth; end

  # Equal to <tt>self[41]</tt>. Also known as accessing "the reddit".
  #
  #   (1..42).to_a.forty_two # => 42
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#83
  def forty_two; end

  # Equal to <tt>self[3]</tt>.
  #
  #   %w( a b c d e ).fourth # => "d"
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#69
  def fourth; end

  # Returns the tail of the array from +position+.
  #
  #   %w( a b c d ).from(0)  # => ["a", "b", "c", "d"]
  #   %w( a b c d ).from(2)  # => ["c", "d"]
  #   %w( a b c d ).from(10) # => []
  #   %w().from(0)           # => []
  #   %w( a b c d ).from(-2) # => ["c", "d"]
  #   %w( a b c ).from(-10)  # => []
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#12
  def from(position); end

  # Splits or iterates over the array in +number+ of groups, padding any
  # remaining slots with +fill_with+ unless it is +false+.
  #
  #   %w(1 2 3 4 5 6 7 8 9 10).in_groups(3) {|group| p group}
  #   ["1", "2", "3", "4"]
  #   ["5", "6", "7", nil]
  #   ["8", "9", "10", nil]
  #
  #   %w(1 2 3 4 5 6 7 8 9 10).in_groups(3, '&nbsp;') {|group| p group}
  #   ["1", "2", "3", "4"]
  #   ["5", "6", "7", "&nbsp;"]
  #   ["8", "9", "10", "&nbsp;"]
  #
  #   %w(1 2 3 4 5 6 7).in_groups(3, false) {|group| p group}
  #   ["1", "2", "3"]
  #   ["4", "5"]
  #   ["6", "7"]
  #
  # source://activesupport//lib/active_support/core_ext/array/grouping.rb#62
  def in_groups(number, fill_with = T.unsafe(nil), &block); end

  # Splits or iterates over the array in groups of size +number+,
  # padding any remaining slots with +fill_with+ unless it is +false+.
  #
  #   %w(1 2 3 4 5 6 7 8 9 10).in_groups_of(3) {|group| p group}
  #   ["1", "2", "3"]
  #   ["4", "5", "6"]
  #   ["7", "8", "9"]
  #   ["10", nil, nil]
  #
  #   %w(1 2 3 4 5).in_groups_of(2, '&nbsp;') {|group| p group}
  #   ["1", "2"]
  #   ["3", "4"]
  #   ["5", "&nbsp;"]
  #
  #   %w(1 2 3 4 5).in_groups_of(2, false) {|group| p group}
  #   ["1", "2"]
  #   ["3", "4"]
  #   ["5"]
  #
  # source://activesupport//lib/active_support/core_ext/array/grouping.rb#22
  def in_groups_of(number, fill_with = T.unsafe(nil), &block); end

  # Returns a new array that includes the passed elements.
  #
  #   [ 1, 2, 3 ].including(4, 5) # => [ 1, 2, 3, 4, 5 ]
  #   [ [ 0, 1 ] ].including([ [ 1, 0 ] ]) # => [ [ 0, 1 ], [ 1, 0 ] ]
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#36
  def including(*elements); end

  # Wraps the array in an ActiveSupport::ArrayInquirer object, which gives a
  # friendlier way to check its string-like contents.
  #
  #   pets = [:cat, :dog].inquiry
  #
  #   pets.cat?     # => true
  #   pets.ferret?  # => false
  #
  #   pets.any?(:cat, :ferret)  # => true
  #   pets.any?(:ferret, :alligator)  # => false
  #
  # source://activesupport//lib/active_support/core_ext/array/inquiry.rb#16
  def inquiry; end

  # Equal to <tt>self[1]</tt>.
  #
  #   %w( a b c d e ).second # => "b"
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#55
  def second; end

  # Equal to <tt>self[-2]</tt>.
  #
  #   %w( a b c d e ).second_to_last # => "d"
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#97
  def second_to_last; end

  # Divides the array into one or more subarrays based on a delimiting +value+
  # or the result of an optional block.
  #
  #   [1, 2, 3, 4, 5].split(3)              # => [[1, 2], [4, 5]]
  #   (1..10).to_a.split { |i| i % 3 == 0 } # => [[1, 2], [4, 5], [7, 8], [10]]
  #
  # source://activesupport//lib/active_support/core_ext/array/grouping.rb#93
  def split(value = T.unsafe(nil), &block); end

  # source://activesupport//lib/active_support/core_ext/enumerable.rb#310
  def sum(init = T.unsafe(nil), &block); end

  # Equal to <tt>self[2]</tt>.
  #
  #   %w( a b c d e ).third # => "c"
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#62
  def third; end

  # Equal to <tt>self[-3]</tt>.
  #
  #   %w( a b c d e ).third_to_last # => "c"
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#90
  def third_to_last; end

  # Returns the beginning of the array up to +position+.
  #
  #   %w( a b c d ).to(0)  # => ["a"]
  #   %w( a b c d ).to(2)  # => ["a", "b", "c"]
  #   %w( a b c d ).to(10) # => ["a", "b", "c", "d"]
  #   %w().to(0)           # => []
  #   %w( a b c d ).to(-2) # => ["a", "b", "c"]
  #   %w( a b c ).to(-10)  # => []
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#24
  def to(position); end

  # Extends <tt>Array#to_s</tt> to convert a collection of elements into a
  # comma separated id list if <tt>:db</tt> argument is given as the format.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   Blog.all.to_fs(:db)  # => "1,2,3"
  #   Blog.none.to_fs(:db) # => "null"
  #   [1,2].to_fs          # => "[1, 2]"
  #
  # source://activesupport//lib/active_support/core_ext/array/conversions.rb#94
  def to_formatted_s(format = T.unsafe(nil)); end

  # Extends <tt>Array#to_s</tt> to convert a collection of elements into a
  # comma separated id list if <tt>:db</tt> argument is given as the format.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   Blog.all.to_fs(:db)  # => "1,2,3"
  #   Blog.none.to_fs(:db) # => "null"
  #   [1,2].to_fs          # => "[1, 2]"
  #
  # source://activesupport//lib/active_support/core_ext/array/conversions.rb#94
  def to_fs(format = T.unsafe(nil)); end

  # Calls <tt>to_param</tt> on all its elements and joins the result with
  # slashes. This is used by <tt>url_for</tt> in Action Pack.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#42
  def to_param; end

  # Converts an array into a string suitable for use as a URL query string,
  # using the given +key+ as the param name.
  #
  #   ['Rails', 'coding'].to_query('hobbies') # => "hobbies%5B%5D=Rails&hobbies%5B%5D=coding"
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#50
  def to_query(key); end

  # source://activesupport//lib/active_support/core_ext/array/deprecated_conversions.rb#5
  def to_s(format = T.unsafe(nil)); end

  # Converts the array to a comma-separated sentence where the last element is
  # joined by the connector word.
  #
  # You can pass the following options to change the default behavior. If you
  # pass an option key that doesn't exist in the list below, it will raise an
  # <tt>ArgumentError</tt>.
  #
  # ==== Options
  #
  # * <tt>:words_connector</tt> - The sign or word used to join all but the last
  #   element in arrays with three or more elements (default: ", ").
  # * <tt>:last_word_connector</tt> - The sign or word used to join the last element
  #   in arrays with three or more elements (default: ", and ").
  # * <tt>:two_words_connector</tt> - The sign or word used to join the elements
  #   in arrays with two elements (default: " and ").
  # * <tt>:locale</tt> - If +i18n+ is available, you can set a locale and use
  #   the connector options defined on the 'support.array' namespace in the
  #   corresponding dictionary file.
  #
  # ==== Examples
  #
  #   [].to_sentence                      # => ""
  #   ['one'].to_sentence                 # => "one"
  #   ['one', 'two'].to_sentence          # => "one and two"
  #   ['one', 'two', 'three'].to_sentence # => "one, two, and three"
  #
  #   ['one', 'two'].to_sentence(passing: 'invalid option')
  #   # => ArgumentError: Unknown key: :passing. Valid keys are: :words_connector, :two_words_connector, :last_word_connector, :locale
  #
  #   ['one', 'two'].to_sentence(two_words_connector: '-')
  #   # => "one-two"
  #
  #   ['one', 'two', 'three'].to_sentence(words_connector: ' or ', last_word_connector: ' or at least ')
  #   # => "one or two or at least three"
  #
  # Using <tt>:locale</tt> option:
  #
  #   # Given this locale dictionary:
  #   #
  #   #   es:
  #   #     support:
  #   #       array:
  #   #         words_connector: " o "
  #   #         two_words_connector: " y "
  #   #         last_word_connector: " o al menos "
  #
  #   ['uno', 'dos'].to_sentence(locale: :es)
  #   # => "uno y dos"
  #
  #   ['uno', 'dos', 'tres'].to_sentence(locale: :es)
  #   # => "uno o dos o al menos tres"
  #
  # source://activesupport//lib/active_support/core_ext/array/conversions.rb#60
  def to_sentence(options = T.unsafe(nil)); end

  # Returns a string that represents the array in XML by invoking +to_xml+
  # on each element. Active Record collections delegate their representation
  # in XML to this method.
  #
  # All elements are expected to respond to +to_xml+, if any of them does
  # not then an exception is raised.
  #
  # The root node reflects the class name of the first element in plural
  # if all elements belong to the same type and that's not Hash:
  #
  #   customer.projects.to_xml
  #
  #   <?xml version="1.0" encoding="UTF-8"?>
  #   <projects type="array">
  #     <project>
  #       <amount type="decimal">20000.0</amount>
  #       <customer-id type="integer">1567</customer-id>
  #       <deal-date type="date">2008-04-09</deal-date>
  #       ...
  #     </project>
  #     <project>
  #       <amount type="decimal">57230.0</amount>
  #       <customer-id type="integer">1567</customer-id>
  #       <deal-date type="date">2008-04-15</deal-date>
  #       ...
  #     </project>
  #   </projects>
  #
  # Otherwise the root element is "objects":
  #
  #   [{ foo: 1, bar: 2}, { baz: 3}].to_xml
  #
  #   <?xml version="1.0" encoding="UTF-8"?>
  #   <objects type="array">
  #     <object>
  #       <bar type="integer">2</bar>
  #       <foo type="integer">1</foo>
  #     </object>
  #     <object>
  #       <baz type="integer">3</baz>
  #     </object>
  #   </objects>
  #
  # If the collection is empty the root element is "nil-classes" by default:
  #
  #   [].to_xml
  #
  #   <?xml version="1.0" encoding="UTF-8"?>
  #   <nil-classes type="array"/>
  #
  # To ensure a meaningful root element use the <tt>:root</tt> option:
  #
  #   customer_with_no_projects.projects.to_xml(root: 'projects')
  #
  #   <?xml version="1.0" encoding="UTF-8"?>
  #   <projects type="array"/>
  #
  # By default name of the node for the children of root is <tt>root.singularize</tt>.
  # You can change it with the <tt>:children</tt> option.
  #
  # The +options+ hash is passed downwards:
  #
  #   Message.all.to_xml(skip_types: true)
  #
  #   <?xml version="1.0" encoding="UTF-8"?>
  #   <messages>
  #     <message>
  #       <created-at>2008-03-07T09:58:18+01:00</created-at>
  #       <id>1</id>
  #       <name>1</name>
  #       <updated-at>2008-03-07T09:58:18+01:00</updated-at>
  #       <user-id>1</user-id>
  #     </message>
  #   </messages>
  #
  # source://activesupport//lib/active_support/core_ext/array/conversions.rb#184
  def to_xml(options = T.unsafe(nil)); end

  # Returns a copy of the Array excluding the specified elements.
  #
  #   ["David", "Rafael", "Aaron", "Todd"].excluding("Aaron", "Todd") # => ["David", "Rafael"]
  #   [ [ 0, 1 ], [ 1, 0 ] ].excluding([ [ 1, 0 ] ]) # => [ [ 0, 1 ] ]
  #
  # Note: This is an optimization of <tt>Enumerable#excluding</tt> that uses <tt>Array#-</tt>
  # instead of <tt>Array#reject</tt> for performance reasons.
  #
  # source://activesupport//lib/active_support/core_ext/array/access.rb#47
  def without(*elements); end

  class << self
    # Wraps its argument in an array unless it is already an array (or array-like).
    #
    # Specifically:
    #
    # * If the argument is +nil+ an empty array is returned.
    # * Otherwise, if the argument responds to +to_ary+ it is invoked, and its result returned.
    # * Otherwise, returns an array with the argument as its single element.
    #
    #     Array.wrap(nil)       # => []
    #     Array.wrap([1, 2, 3]) # => [1, 2, 3]
    #     Array.wrap(0)         # => [0]
    #
    # This method is similar in purpose to <tt>Kernel#Array</tt>, but there are some differences:
    #
    # * If the argument responds to +to_ary+ the method is invoked. <tt>Kernel#Array</tt>
    #   moves on to try +to_a+ if the returned value is +nil+, but <tt>Array.wrap</tt> returns
    #   an array with the argument as its single element right away.
    # * If the returned value from +to_ary+ is neither +nil+ nor an +Array+ object, <tt>Kernel#Array</tt>
    #   raises an exception, while <tt>Array.wrap</tt> does not, it just returns the value.
    # * It does not call +to_a+ on the argument, if the argument does not respond to +to_ary+
    #   it returns an array with the argument as its single element.
    #
    # The last point is easily explained with some enumerables:
    #
    #   Array(foo: :bar)      # => [[:foo, :bar]]
    #   Array.wrap(foo: :bar) # => [{:foo=>:bar}]
    #
    # There's also a related idiom that uses the splat operator:
    #
    #   [*object]
    #
    # which returns <tt>[]</tt> for +nil+, but calls to <tt>Array(object)</tt> otherwise.
    #
    # The differences with <tt>Kernel#Array</tt> explained above
    # apply to the rest of <tt>object</tt>s.
    #
    # source://activesupport//lib/active_support/core_ext/array/wrap.rb#39
    def wrap(object); end
  end
end

# source://activesupport//lib/active_support/core_ext/array/deprecated_conversions.rb#4
Array::NOT_SET = T.let(T.unsafe(nil), Object)

# source://activesupport//lib/active_support/core_ext/object/json.rb#118
class BigDecimal < ::Numeric
  include ::ActiveSupport::BigDecimalWithDefaultFormat
  include ::ActiveSupport::NumericWithFormat
  include ::ActiveSupport::DeprecatedNumericWithFormat

  # A BigDecimal would be naturally represented as a JSON number. Most libraries,
  # however, parse non-integer JSON numbers directly as floats. Clients using
  # those libraries would get in general a wrong number and no way to recover
  # other than manually inspecting the string with the JSON code itself.
  #
  # That's why a JSON string is returned. The JSON literal is not numeric, but
  # if the other end knows by contract that the data is supposed to be a
  # BigDecimal, it still has the chance to post-process the string and get the
  # real value.
  #
  # source://activesupport//lib/active_support/core_ext/object/json.rb#128
  def as_json(options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/numeric/deprecated_conversions.rb#5
  def to_s(format = T.unsafe(nil), options = T.unsafe(nil)); end
end

BigDecimal::EXCEPTION_NaN = T.let(T.unsafe(nil), Integer)
BigDecimal::VERSION = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/class/attribute.rb#5
class Class < ::Module
  # Declare a class-level attribute whose value is inheritable by subclasses.
  # Subclasses can change their own value and it will not impact parent class.
  #
  # ==== Options
  #
  # * <tt>:instance_reader</tt> - Sets the instance reader method (defaults to true).
  # * <tt>:instance_writer</tt> - Sets the instance writer method (defaults to true).
  # * <tt>:instance_accessor</tt> - Sets both instance methods (defaults to true).
  # * <tt>:instance_predicate</tt> - Sets a predicate method (defaults to true).
  # * <tt>:default</tt> - Sets a default value for the attribute (defaults to nil).
  #
  # ==== Examples
  #
  #   class Base
  #     class_attribute :setting
  #   end
  #
  #   class Subclass < Base
  #   end
  #
  #   Base.setting = true
  #   Subclass.setting            # => true
  #   Subclass.setting = false
  #   Subclass.setting            # => false
  #   Base.setting                # => true
  #
  # In the above case as long as Subclass does not assign a value to setting
  # by performing <tt>Subclass.setting = _something_</tt>, <tt>Subclass.setting</tt>
  # would read value assigned to parent class. Once Subclass assigns a value then
  # the value assigned by Subclass would be returned.
  #
  # This matches normal Ruby method inheritance: think of writing an attribute
  # on a subclass as overriding the reader method. However, you need to be aware
  # when using +class_attribute+ with mutable structures as +Array+ or +Hash+.
  # In such cases, you don't want to do changes in place. Instead use setters:
  #
  #   Base.setting = []
  #   Base.setting                # => []
  #   Subclass.setting            # => []
  #
  #   # Appending in child changes both parent and child because it is the same object:
  #   Subclass.setting << :foo
  #   Base.setting               # => [:foo]
  #   Subclass.setting           # => [:foo]
  #
  #   # Use setters to not propagate changes:
  #   Base.setting = []
  #   Subclass.setting += [:foo]
  #   Base.setting               # => []
  #   Subclass.setting           # => [:foo]
  #
  # For convenience, an instance predicate method is defined as well.
  # To skip it, pass <tt>instance_predicate: false</tt>.
  #
  #   Subclass.setting?       # => false
  #
  # Instances may overwrite the class value in the same way:
  #
  #   Base.setting = true
  #   object = Base.new
  #   object.setting          # => true
  #   object.setting = false
  #   object.setting          # => false
  #   Base.setting            # => true
  #
  # To opt out of the instance reader method, pass <tt>instance_reader: false</tt>.
  #
  #   object.setting          # => NoMethodError
  #   object.setting?         # => NoMethodError
  #
  # To opt out of the instance writer method, pass <tt>instance_writer: false</tt>.
  #
  #   object.setting = false  # => NoMethodError
  #
  # To opt out of both instance methods, pass <tt>instance_accessor: false</tt>.
  #
  # To set a default value for the attribute, pass <tt>default:</tt>, like so:
  #
  #   class_attribute :settings, default: {}
  #
  # source://activesupport//lib/active_support/core_ext/class/attribute.rb#85
  def class_attribute(*attrs, instance_accessor: T.unsafe(nil), instance_reader: T.unsafe(nil), instance_writer: T.unsafe(nil), instance_predicate: T.unsafe(nil), default: T.unsafe(nil)); end

  # Returns an array with all classes that are < than its receiver.
  #
  #   class C; end
  #   C.descendants # => []
  #
  #   class B < C; end
  #   C.descendants # => [B]
  #
  #   class A < B; end
  #   C.descendants # => [B, A]
  #
  #   class D < C; end
  #   C.descendants # => [B, A, D]
  #
  # source://activesupport//lib/active_support/core_ext/class/subclasses.rb#20
  def descendants; end
end

# source://activesupport//lib/active_support/core_ext/date/zones.rb#6
class Date
  include ::Comparable
  include ::DateAndTime::Zones
  include ::DateAndTime::Calculations

  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#90
  def +(other); end

  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#100
  def -(other); end

  # Allow Date to be compared with Time by converting to DateTime and relying on the <=> from there.
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#152
  def <=>(other); end

  # Duck-types as a Date-like class. See Object#acts_like?.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date/acts_like.rb#7
  def acts_like_date?; end

  # Provides precise Date calculations for years, months, and days. The +options+ parameter takes a hash with
  # any of these keys: <tt>:years</tt>, <tt>:months</tt>, <tt>:weeks</tt>, <tt>:days</tt>.
  #
  # The increments are applied in order of time units from largest to smallest.
  # In other words, the date is incremented first by +:years+, then by
  # +:months+, then by +:weeks+, then by +:days+. This order can affect the
  # result around the end of a month. For example, incrementing first by months
  # then by days:
  #
  #   Date.new(2004, 9, 30).advance(months: 1, days: 1)
  #   # => Sun, 31 Oct 2004
  #
  # Whereas incrementing first by days then by months yields a different result:
  #
  #   Date.new(2004, 9, 30).advance(days: 1).advance(months: 1)
  #   # => Mon, 01 Nov 2004
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#127
  def advance(options); end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
  # and then subtracts the specified number of seconds.
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#55
  def ago(seconds); end

  # source://activesupport//lib/active_support/core_ext/object/json.rb#197
  def as_json(options = T.unsafe(nil)); end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#67
  def at_beginning_of_day; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the end of the day (23:59:59)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#85
  def at_end_of_day; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#75
  def at_midday; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#75
  def at_middle_of_day; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#67
  def at_midnight; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#75
  def at_noon; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#67
  def beginning_of_day; end

  # No Date is blank:
  #
  #   Date.today.blank? # => false
  #
  # @return [false]
  #
  # source://activesupport//lib/active_support/core_ext/date/blank.rb#11
  def blank?; end

  # Returns a new Date where one or more of the elements have been changed according to the +options+ parameter.
  # The +options+ parameter is a hash with a combination of these keys: <tt>:year</tt>, <tt>:month</tt>, <tt>:day</tt>.
  #
  #   Date.new(2007, 5, 12).change(day: 1)               # => Date.new(2007, 5, 1)
  #   Date.new(2007, 5, 12).change(year: 2005, month: 1) # => Date.new(2005, 1, 12)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#143
  def change(options); end

  # Allow Date to be compared with Time by converting to DateTime and relying on the <=> from there.
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#152
  def compare_with_coercion(other); end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the end of the day (23:59:59)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#85
  def end_of_day; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
  # and then adds the specified number of seconds
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#61
  def in(seconds); end

  # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005"
  #
  # source://activesupport//lib/active_support/core_ext/date/conversions.rb#62
  def inspect; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#75
  def midday; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#75
  def middle_of_day; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#67
  def midnight; end

  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#100
  def minus_with_duration(other); end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#75
  def noon; end

  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#90
  def plus_with_duration(other); end

  # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005"
  #
  # source://activesupport//lib/active_support/core_ext/date/conversions.rb#62
  def readable_inspect; end

  # Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00)
  # and then adds the specified number of seconds
  #
  # source://activesupport//lib/active_support/core_ext/date/calculations.rb#61
  def since(seconds); end

  # Convert to a formatted string. See DATE_FORMATS for predefined formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   date = Date.new(2007, 11, 10)       # => Sat, 10 Nov 2007
  #
  #   date.to_fs(:db)                     # => "2007-11-10"
  #   date.to_formatted_s(:db)            # => "2007-11-10"
  #
  #   date.to_fs(:short)         # => "10 Nov"
  #   date.to_fs(:number)        # => "20071110"
  #   date.to_fs(:long)          # => "November 10, 2007"
  #   date.to_fs(:long_ordinal)  # => "November 10th, 2007"
  #   date.to_fs(:rfc822)        # => "10 Nov 2007"
  #   date.to_fs(:iso8601)       # => "2007-11-10"
  #
  # == Adding your own date formats to to_fs
  # You can add your own formats to the Date::DATE_FORMATS hash.
  # Use the format name as the hash key and either a strftime string
  # or Proc instance that takes a date argument as the value.
  #
  #   # config/initializers/date_formats.rb
  #   Date::DATE_FORMATS[:month_and_year] = '%B %Y'
  #   Date::DATE_FORMATS[:short_ordinal] = ->(date) { date.strftime("%B #{date.day.ordinalize}") }
  #
  # source://activesupport//lib/active_support/core_ext/date/conversions.rb#47
  def to_formatted_s(format = T.unsafe(nil)); end

  # Convert to a formatted string. See DATE_FORMATS for predefined formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   date = Date.new(2007, 11, 10)       # => Sat, 10 Nov 2007
  #
  #   date.to_fs(:db)                     # => "2007-11-10"
  #   date.to_formatted_s(:db)            # => "2007-11-10"
  #
  #   date.to_fs(:short)         # => "10 Nov"
  #   date.to_fs(:number)        # => "20071110"
  #   date.to_fs(:long)          # => "November 10, 2007"
  #   date.to_fs(:long_ordinal)  # => "November 10th, 2007"
  #   date.to_fs(:rfc822)        # => "10 Nov 2007"
  #   date.to_fs(:iso8601)       # => "2007-11-10"
  #
  # == Adding your own date formats to to_fs
  # You can add your own formats to the Date::DATE_FORMATS hash.
  # Use the format name as the hash key and either a strftime string
  # or Proc instance that takes a date argument as the value.
  #
  #   # config/initializers/date_formats.rb
  #   Date::DATE_FORMATS[:month_and_year] = '%B %Y'
  #   Date::DATE_FORMATS[:short_ordinal] = ->(date) { date.strftime("%B #{date.day.ordinalize}") }
  #
  # source://activesupport//lib/active_support/core_ext/date/conversions.rb#47
  def to_fs(format = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/date/deprecated_conversions.rb#7
  def to_s(format = T.unsafe(nil)); end

  # Converts a Date instance to a Time, where the time is set to the beginning of the day.
  # The timezone can be either +:local+ or +:utc+ (default +:local+).
  #
  #   date = Date.new(2007, 11, 10)  # => Sat, 10 Nov 2007
  #
  #   date.to_time                   # => 2007-11-10 00:00:00 0800
  #   date.to_time(:local)           # => 2007-11-10 00:00:00 0800
  #
  #   date.to_time(:utc)             # => 2007-11-10 00:00:00 UTC
  #
  # NOTE: The +:local+ timezone is Ruby's *process* timezone, i.e. <tt>ENV['TZ']</tt>.
  # If the <b>application's</b> timezone is needed, then use +in_time_zone+ instead.
  #
  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/core_ext/date/conversions.rb#82
  def to_time(form = T.unsafe(nil)); end

  # Returns a string which represents the time in used time zone as DateTime
  # defined by XML Schema:
  #
  #   date = Date.new(2015, 05, 23)  # => Sat, 23 May 2015
  #   date.xmlschema                 # => "2015-05-23T00:00:00+04:00"
  #
  # source://activesupport//lib/active_support/core_ext/date/conversions.rb#94
  def xmlschema; end

  class << self
    # Returns the week start (e.g. +:monday+) for the current request, if this has been set (via Date.beginning_of_week=).
    # If <tt>Date.beginning_of_week</tt> has not been set for the current request, returns the week start specified in <tt>config.beginning_of_week</tt>.
    # If no +config.beginning_of_week+ was specified, returns +:monday+.
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#19
    def beginning_of_week; end

    # Sets <tt>Date.beginning_of_week</tt> to a week start (e.g. +:monday+) for current request/thread.
    #
    # This method accepts any of the following day symbols:
    # +:monday+, +:tuesday+, +:wednesday+, +:thursday+, +:friday+, +:saturday+, +:sunday+
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#27
    def beginning_of_week=(week_start); end

    # Returns the value of attribute beginning_of_week_default.
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#14
    def beginning_of_week_default; end

    # Sets the attribute beginning_of_week_default
    #
    # @param value the value to set the attribute beginning_of_week_default to.
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#14
    def beginning_of_week_default=(_arg0); end

    # Returns Time.zone.today when <tt>Time.zone</tt> or <tt>config.time_zone</tt> are set, otherwise just returns Date.today.
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#48
    def current; end

    # Returns week start day symbol (e.g. +:monday+), or raises an +ArgumentError+ for invalid day symbol.
    #
    # @raise [ArgumentError]
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#32
    def find_beginning_of_week!(week_start); end

    # Returns a new Date representing the date 1 day after today (i.e. tomorrow's date).
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#43
    def tomorrow; end

    # Returns a new Date representing the date 1 day ago (i.e. yesterday's date).
    #
    # source://activesupport//lib/active_support/core_ext/date/calculations.rb#38
    def yesterday; end
  end
end

# source://activesupport//lib/active_support/core_ext/date/conversions.rb#9
Date::DATE_FORMATS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/core_ext/date/deprecated_conversions.rb#6
Date::NOT_SET = T.let(T.unsafe(nil), Object)

# source://date/3.3.3/date.rb#7
Date::VERSION = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#5
module DateAndTime; end

# source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#7
module DateAndTime::Calculations
  # Returns true if the date/time falls after <tt>date_or_time</tt>.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#72
  def after?(date_or_time); end

  # Returns a Range representing the whole day of the current date/time.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#300
  def all_day; end

  # Returns a Range representing the whole month of the current date/time.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#311
  def all_month; end

  # Returns a Range representing the whole quarter of the current date/time.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#316
  def all_quarter; end

  # Returns a Range representing the whole week of the current date/time.
  # Week starts on start_day, default is <tt>Date.beginning_of_week</tt> or <tt>config.beginning_of_week</tt> when set.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#306
  def all_week(start_day = T.unsafe(nil)); end

  # Returns a Range representing the whole year of the current date/time.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#321
  def all_year; end

  # Returns a new date/time at the start of the month.
  #
  #   today = Date.today # => Thu, 18 Jun 2015
  #   today.beginning_of_month # => Mon, 01 Jun 2015
  #
  # +DateTime+ objects will have a time set to 0:00.
  #
  #   now = DateTime.current # => Thu, 18 Jun 2015 15:23:13 +0000
  #   now.beginning_of_month # => Mon, 01 Jun 2015 00:00:00 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#125
  def at_beginning_of_month; end

  # Returns a new date/time at the start of the quarter.
  #
  #   today = Date.today # => Fri, 10 Jul 2015
  #   today.beginning_of_quarter # => Wed, 01 Jul 2015
  #
  # +DateTime+ objects will have a time set to 0:00.
  #
  #   now = DateTime.current # => Fri, 10 Jul 2015 18:41:29 +0000
  #   now.beginning_of_quarter # => Wed, 01 Jul 2015 00:00:00 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#139
  def at_beginning_of_quarter; end

  # Returns a new date/time representing the start of this week on the given day.
  # Week is assumed to start on +start_day+, default is
  # +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
  # +DateTime+ objects have their time set to 0:00.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#257
  def at_beginning_of_week(start_day = T.unsafe(nil)); end

  # Returns a new date/time at the beginning of the year.
  #
  #   today = Date.today # => Fri, 10 Jul 2015
  #   today.beginning_of_year # => Thu, 01 Jan 2015
  #
  # +DateTime+ objects will have a time set to 0:00.
  #
  #   now = DateTime.current # => Fri, 10 Jul 2015 18:41:29 +0000
  #   now.beginning_of_year # => Thu, 01 Jan 2015 00:00:00 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#169
  def at_beginning_of_year; end

  # Returns a new date/time representing the end of the month.
  # DateTime objects will have a time set to 23:59:59.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#286
  def at_end_of_month; end

  # Returns a new date/time at the end of the quarter.
  #
  #   today = Date.today # => Fri, 10 Jul 2015
  #   today.end_of_quarter # => Wed, 30 Sep 2015
  #
  # +DateTime+ objects will have a time set to 23:59:59.
  #
  #   now = DateTime.current # => Fri, 10 Jul 2015 18:41:29 +0000
  #   now.end_of_quarter # => Wed, 30 Sep 2015 23:59:59 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#154
  def at_end_of_quarter; end

  # Returns a new date/time representing the end of this week on the given day.
  # Week is assumed to start on +start_day+, default is
  # +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
  # DateTime objects have their time set to 23:59:59.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#273
  def at_end_of_week(start_day = T.unsafe(nil)); end

  # Returns a new date/time representing the end of the year.
  # DateTime objects will have a time set to 23:59:59.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#294
  def at_end_of_year; end

  # Returns true if the date/time falls before <tt>date_or_time</tt>.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#67
  def before?(date_or_time); end

  # Returns a new date/time at the start of the month.
  #
  #   today = Date.today # => Thu, 18 Jun 2015
  #   today.beginning_of_month # => Mon, 01 Jun 2015
  #
  # +DateTime+ objects will have a time set to 0:00.
  #
  #   now = DateTime.current # => Thu, 18 Jun 2015 15:23:13 +0000
  #   now.beginning_of_month # => Mon, 01 Jun 2015 00:00:00 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#125
  def beginning_of_month; end

  # Returns a new date/time at the start of the quarter.
  #
  #   today = Date.today # => Fri, 10 Jul 2015
  #   today.beginning_of_quarter # => Wed, 01 Jul 2015
  #
  # +DateTime+ objects will have a time set to 0:00.
  #
  #   now = DateTime.current # => Fri, 10 Jul 2015 18:41:29 +0000
  #   now.beginning_of_quarter # => Wed, 01 Jul 2015 00:00:00 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#139
  def beginning_of_quarter; end

  # Returns a new date/time representing the start of this week on the given day.
  # Week is assumed to start on +start_day+, default is
  # +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
  # +DateTime+ objects have their time set to 0:00.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#257
  def beginning_of_week(start_day = T.unsafe(nil)); end

  # Returns a new date/time at the beginning of the year.
  #
  #   today = Date.today # => Fri, 10 Jul 2015
  #   today.beginning_of_year # => Thu, 01 Jan 2015
  #
  # +DateTime+ objects will have a time set to 0:00.
  #
  #   now = DateTime.current # => Fri, 10 Jul 2015 18:41:29 +0000
  #   now.beginning_of_year # => Thu, 01 Jan 2015 00:00:00 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#169
  def beginning_of_year; end

  # Returns a new date/time the specified number of days ago.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#77
  def days_ago(days); end

  # Returns a new date/time the specified number of days in the future.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#82
  def days_since(days); end

  # Returns the number of days to the start of the week on the given day.
  # Week is assumed to start on +start_day+, default is
  # +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#248
  def days_to_week_start(start_day = T.unsafe(nil)); end

  # Returns a new date/time representing the end of the month.
  # DateTime objects will have a time set to 23:59:59.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#286
  def end_of_month; end

  # Returns a new date/time at the end of the quarter.
  #
  #   today = Date.today # => Fri, 10 Jul 2015
  #   today.end_of_quarter # => Wed, 30 Sep 2015
  #
  # +DateTime+ objects will have a time set to 23:59:59.
  #
  #   now = DateTime.current # => Fri, 10 Jul 2015 18:41:29 +0000
  #   now.end_of_quarter # => Wed, 30 Sep 2015 23:59:59 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#154
  def end_of_quarter; end

  # Returns a new date/time representing the end of this week on the given day.
  # Week is assumed to start on +start_day+, default is
  # +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
  # DateTime objects have their time set to 23:59:59.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#273
  def end_of_week(start_day = T.unsafe(nil)); end

  # Returns a new date/time representing the end of the year.
  # DateTime objects will have a time set to 23:59:59.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#294
  def end_of_year; end

  # Returns true if the date/time is in the future.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#52
  def future?; end

  # Short-hand for <tt>months_ago(1)</tt>.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#230
  def last_month; end

  # Short-hand for <tt>months_ago(3)</tt>.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#235
  def last_quarter; end

  # Returns a new date/time representing the given day in the previous week.
  # Week is assumed to start on +start_day+, default is
  # +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
  # DateTime objects have their time set to 0:00 unless +same_time+ is true.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#213
  def last_week(start_day = T.unsafe(nil), same_time: T.unsafe(nil)); end

  # Returns a new date/time representing the previous weekday.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#220
  def last_weekday; end

  # Short-hand for <tt>years_ago(1)</tt>.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#241
  def last_year; end

  # Returns Monday of this week assuming that week starts on Monday.
  # +DateTime+ objects have their time set to 0:00.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#265
  def monday; end

  # Returns a new date/time the specified number of months ago.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#97
  def months_ago(months); end

  # Returns a new date/time the specified number of months in the future.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#102
  def months_since(months); end

  # Returns true if the date/time is tomorrow.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#35
  def next_day?; end

  # Returns a new date/time representing the next occurrence of the specified day of week.
  #
  #   today = Date.today               # => Thu, 14 Dec 2017
  #   today.next_occurring(:monday)    # => Mon, 18 Dec 2017
  #   today.next_occurring(:thursday)  # => Thu, 21 Dec 2017
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#330
  def next_occurring(day_of_week); end

  # Short-hand for <tt>months_since(3)</tt>.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#205
  def next_quarter; end

  # Returns a new date/time representing the given day in the next week.
  #
  #   today = Date.today # => Thu, 07 May 2015
  #   today.next_week    # => Mon, 11 May 2015
  #
  # The +given_day_in_next_week+ defaults to the beginning of the week
  # which is determined by +Date.beginning_of_week+ or +config.beginning_of_week+
  # when set.
  #
  #   today = Date.today       # => Thu, 07 May 2015
  #   today.next_week(:friday) # => Fri, 15 May 2015
  #
  # +DateTime+ objects have their time set to 0:00 unless +same_time+ is true.
  #
  #   now = DateTime.current # => Thu, 07 May 2015 13:31:16 +0000
  #   now.next_week      # => Mon, 11 May 2015 00:00:00 +0000
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#190
  def next_week(given_day_in_next_week = T.unsafe(nil), same_time: T.unsafe(nil)); end

  # Returns a new date/time representing the next weekday.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#196
  def next_weekday; end

  # Returns true if the date/time does not fall on a Saturday or Sunday.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#62
  def on_weekday?; end

  # Returns true if the date/time falls on a Saturday or Sunday.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#57
  def on_weekend?; end

  # Returns true if the date/time is in the past.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#47
  def past?; end

  # Returns true if the date/time is yesterday.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#41
  def prev_day?; end

  # Returns a new date/time representing the previous occurrence of the specified day of week.
  #
  #   today = Date.today               # => Thu, 14 Dec 2017
  #   today.prev_occurring(:monday)    # => Mon, 11 Dec 2017
  #   today.prev_occurring(:thursday)  # => Thu, 07 Dec 2017
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#341
  def prev_occurring(day_of_week); end

  # Short-hand for <tt>months_ago(3)</tt>.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#235
  def prev_quarter; end

  # Returns a new date/time representing the given day in the previous week.
  # Week is assumed to start on +start_day+, default is
  # +Date.beginning_of_week+ or +config.beginning_of_week+ when set.
  # DateTime objects have their time set to 0:00 unless +same_time+ is true.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#213
  def prev_week(start_day = T.unsafe(nil), same_time: T.unsafe(nil)); end

  # Returns a new date/time representing the previous weekday.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#220
  def prev_weekday; end

  # Returns Sunday of this week assuming that week starts on Monday.
  # +DateTime+ objects have their time set to 23:59:59.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#280
  def sunday; end

  # Returns true if the date/time is today.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#30
  def today?; end

  # Returns a new date/time representing tomorrow.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#25
  def tomorrow; end

  # Returns true if the date/time is tomorrow.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#35
  def tomorrow?; end

  # Returns a new date/time the specified number of weeks ago.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#87
  def weeks_ago(weeks); end

  # Returns a new date/time the specified number of weeks in the future.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#92
  def weeks_since(weeks); end

  # Returns a new date/time the specified number of years ago.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#107
  def years_ago(years); end

  # Returns a new date/time the specified number of years in the future.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#112
  def years_since(years); end

  # Returns a new date/time representing yesterday.
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#20
  def yesterday; end

  # Returns true if the date/time is yesterday.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#41
  def yesterday?; end

  private

  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#360
  def copy_time_to(other); end

  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#356
  def days_span(day); end

  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#348
  def first_hour(date_or_time); end

  # source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#352
  def last_hour(date_or_time); end
end

# source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#8
DateAndTime::Calculations::DAYS_INTO_WEEK = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/core_ext/date_and_time/calculations.rb#17
DateAndTime::Calculations::WEEKEND_DAYS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#6
module DateAndTime::Compatibility
  # source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#14
  def preserve_timezone; end

  # source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#29
  def utc_to_local_returns_utc_offset_times; end

  class << self
    # source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#14
    def preserve_timezone; end

    # source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#14
    def preserve_timezone=(val); end

    # source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#29
    def utc_to_local_returns_utc_offset_times; end

    # source://activesupport//lib/active_support/core_ext/date_and_time/compatibility.rb#29
    def utc_to_local_returns_utc_offset_times=(val); end
  end
end

# source://activesupport//lib/active_support/core_ext/date_and_time/zones.rb#4
module DateAndTime::Zones
  # Returns the simultaneous time in <tt>Time.zone</tt> if a zone is given or
  # if Time.zone_default is set. Otherwise, it returns the current time.
  #
  #   Time.zone = 'Hawaii'        # => 'Hawaii'
  #   Time.utc(2000).in_time_zone # => Fri, 31 Dec 1999 14:00:00 HST -10:00
  #   Date.new(2000).in_time_zone # => Sat, 01 Jan 2000 00:00:00 HST -10:00
  #
  # This method is similar to Time#localtime, except that it uses <tt>Time.zone</tt> as the local zone
  # instead of the operating system's time zone.
  #
  # You can also pass in a TimeZone instance or string that identifies a TimeZone as an argument,
  # and the conversion will be based on that zone instead of <tt>Time.zone</tt>.
  #
  #   Time.utc(2000).in_time_zone('Alaska') # => Fri, 31 Dec 1999 15:00:00 AKST -09:00
  #   Date.new(2000).in_time_zone('Alaska') # => Sat, 01 Jan 2000 00:00:00 AKST -09:00
  #
  # source://activesupport//lib/active_support/core_ext/date_and_time/zones.rb#20
  def in_time_zone(zone = T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/core_ext/date_and_time/zones.rb#32
  def time_with_zone(time, zone); end
end

# source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#5
class DateTime < ::Date
  include ::DateAndTime::Compatibility

  # Layers additional behavior on DateTime#<=> so that Time and
  # ActiveSupport::TimeWithZone instances can be compared with a DateTime.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#208
  def <=>(other); end

  # Duck-types as a Date-like class. See Object#acts_like?.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_time/acts_like.rb#8
  def acts_like_date?; end

  # Duck-types as a Time-like class. See Object#acts_like?.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_time/acts_like.rb#13
  def acts_like_time?; end

  # Uses Date to provide precise Time calculations for years, months, and days.
  # The +options+ parameter takes a hash with any of these keys: <tt>:years</tt>,
  # <tt>:months</tt>, <tt>:weeks</tt>, <tt>:days</tt>, <tt>:hours</tt>,
  # <tt>:minutes</tt>, <tt>:seconds</tt>.
  #
  # Just like Date#advance, increments are applied in order of time units from
  # largest to smallest. This order can affect the result around the end of a
  # month.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#82
  def advance(options); end

  # Returns a new DateTime representing the time a number of seconds ago.
  # Do not use this method in combination with x.months, use months_ago instead!
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#109
  def ago(seconds); end

  # source://activesupport//lib/active_support/core_ext/object/json.rb#207
  def as_json(options = T.unsafe(nil)); end

  # Returns a new DateTime representing the start of the day (0:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#122
  def at_beginning_of_day; end

  # Returns a new DateTime representing the start of the hour (hh:00:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#146
  def at_beginning_of_hour; end

  # Returns a new DateTime representing the start of the minute (hh:mm:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#158
  def at_beginning_of_minute; end

  # Returns a new DateTime representing the end of the day (23:59:59).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#140
  def at_end_of_day; end

  # Returns a new DateTime representing the end of the hour (hh:59:59).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#152
  def at_end_of_hour; end

  # Returns a new DateTime representing the end of the minute (hh:mm:59).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#164
  def at_end_of_minute; end

  # Returns a new DateTime representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#130
  def at_midday; end

  # Returns a new DateTime representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#130
  def at_middle_of_day; end

  # Returns a new DateTime representing the start of the day (0:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#122
  def at_midnight; end

  # Returns a new DateTime representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#130
  def at_noon; end

  # Returns a new DateTime representing the start of the day (0:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#122
  def beginning_of_day; end

  # Returns a new DateTime representing the start of the hour (hh:00:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#146
  def beginning_of_hour; end

  # Returns a new DateTime representing the start of the minute (hh:mm:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#158
  def beginning_of_minute; end

  # No DateTime is ever blank:
  #
  #   DateTime.now.blank? # => false
  #
  # @return [false]
  #
  # source://activesupport//lib/active_support/core_ext/date_time/blank.rb#11
  def blank?; end

  # Returns a new DateTime where one or more of the elements have been changed
  # according to the +options+ parameter. The time options (<tt>:hour</tt>,
  # <tt>:min</tt>, <tt>:sec</tt>) reset cascadingly, so if only the hour is
  # passed, then minute and sec is set to 0. If the hour and minute is passed,
  # then sec is set to 0. The +options+ parameter takes a hash with any of these
  # keys: <tt>:year</tt>, <tt>:month</tt>, <tt>:day</tt>, <tt>:hour</tt>,
  # <tt>:min</tt>, <tt>:sec</tt>, <tt>:offset</tt>, <tt>:start</tt>.
  #
  #   DateTime.new(2012, 8, 29, 22, 35, 0).change(day: 1)              # => DateTime.new(2012, 8, 1, 22, 35, 0)
  #   DateTime.new(2012, 8, 29, 22, 35, 0).change(year: 1981, day: 1)  # => DateTime.new(1981, 8, 1, 22, 35, 0)
  #   DateTime.new(2012, 8, 29, 22, 35, 0).change(year: 1981, hour: 0) # => DateTime.new(1981, 8, 29, 0, 0, 0)
  #
  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#51
  def change(options); end

  # Returns a new DateTime representing the end of the day (23:59:59).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#140
  def end_of_day; end

  # Returns a new DateTime representing the end of the hour (hh:59:59).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#152
  def end_of_hour; end

  # Returns a new DateTime representing the end of the minute (hh:mm:59).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#164
  def end_of_minute; end

  # Returns a formatted string of the offset from UTC, or an alternative
  # string if the time zone is already UTC.
  #
  #   datetime = DateTime.civil(2000, 1, 1, 0, 0, 0, Rational(-6, 24))
  #   datetime.formatted_offset         # => "-06:00"
  #   datetime.formatted_offset(false)  # => "-0600"
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#51
  def formatted_offset(colon = T.unsafe(nil), alternate_utc_string = T.unsafe(nil)); end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24))     # => Mon, 21 Feb 2005 10:11:12 -0600
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc # => Mon, 21 Feb 2005 16:11:12 UTC
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#184
  def getgm; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the system timezone.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#170
  def getlocal(utc_offset = T.unsafe(nil)); end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24))     # => Mon, 21 Feb 2005 10:11:12 -0600
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc # => Mon, 21 Feb 2005 16:11:12 UTC
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#184
  def getutc; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24))     # => Mon, 21 Feb 2005 10:11:12 -0600
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc # => Mon, 21 Feb 2005 16:11:12 UTC
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#184
  def gmtime; end

  # Returns a new DateTime representing the time a number of seconds since the
  # instance time. Do not use this method in combination with x.months, use
  # months_since instead!
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#116
  def in(seconds); end

  # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005 14:30:00 +0000".
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#56
  def inspect; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the system timezone.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#170
  def localtime(utc_offset = T.unsafe(nil)); end

  # Returns a new DateTime representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#130
  def midday; end

  # Returns a new DateTime representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#130
  def middle_of_day; end

  # Returns a new DateTime representing the start of the day (0:00).
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#122
  def midnight; end

  # Returns a new DateTime representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#130
  def noon; end

  # Returns the fraction of a second as nanoseconds
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#94
  def nsec; end

  # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005 14:30:00 +0000".
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#56
  def readable_inspect; end

  # Returns the number of seconds since 00:00:00.
  #
  #   DateTime.new(2012, 8, 29,  0,  0,  0).seconds_since_midnight # => 0
  #   DateTime.new(2012, 8, 29, 12, 34, 56).seconds_since_midnight # => 45296
  #   DateTime.new(2012, 8, 29, 23, 59, 59).seconds_since_midnight # => 86399
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#20
  def seconds_since_midnight; end

  # Returns the number of seconds until 23:59:59.
  #
  #   DateTime.new(2012, 8, 29,  0,  0,  0).seconds_until_end_of_day # => 86399
  #   DateTime.new(2012, 8, 29, 12, 34, 56).seconds_until_end_of_day # => 41103
  #   DateTime.new(2012, 8, 29, 23, 59, 59).seconds_until_end_of_day # => 0
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#29
  def seconds_until_end_of_day; end

  # Returns a new DateTime representing the time a number of seconds since the
  # instance time. Do not use this method in combination with x.months, use
  # months_since instead!
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#116
  def since(seconds); end

  # Returns the fraction of a second as a +Rational+
  #
  #   DateTime.new(2012, 8, 29, 0, 0, 0.5).subsec # => (1/2)
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#36
  def subsec; end

  # Converts +self+ to a floating-point number of seconds, including fractional microseconds, since the Unix epoch.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#79
  def to_f; end

  # Convert to a formatted string. See Time::DATE_FORMATS for predefined formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  # === Examples
  #   datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0)   # => Tue, 04 Dec 2007 00:00:00 +0000
  #
  #   datetime.to_fs(:db)            # => "2007-12-04 00:00:00"
  #   datetime.to_formatted_s(:db)   # => "2007-12-04 00:00:00"
  #   datetime.to_fs(:number)        # => "20071204000000"
  #   datetime.to_fs(:short)         # => "04 Dec 00:00"
  #   datetime.to_fs(:long)          # => "December 04, 2007 00:00"
  #   datetime.to_fs(:long_ordinal)  # => "December 4th, 2007 00:00"
  #   datetime.to_fs(:rfc822)        # => "Tue, 04 Dec 2007 00:00:00 +0000"
  #   datetime.to_fs(:iso8601)       # => "2007-12-04T00:00:00+00:00"
  #
  # == Adding your own datetime formats to to_fs
  # DateTime formats are shared with Time. You can add your own to the
  # Time::DATE_FORMATS hash. Use the format name as the hash key and
  # either a strftime string or Proc instance that takes a time or
  # datetime argument as the value.
  #
  #   # config/initializers/time_formats.rb
  #   Time::DATE_FORMATS[:month_and_year] = '%B %Y'
  #   Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#35
  def to_formatted_s(format = T.unsafe(nil)); end

  # Convert to a formatted string. See Time::DATE_FORMATS for predefined formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  # === Examples
  #   datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0)   # => Tue, 04 Dec 2007 00:00:00 +0000
  #
  #   datetime.to_fs(:db)            # => "2007-12-04 00:00:00"
  #   datetime.to_formatted_s(:db)   # => "2007-12-04 00:00:00"
  #   datetime.to_fs(:number)        # => "20071204000000"
  #   datetime.to_fs(:short)         # => "04 Dec 00:00"
  #   datetime.to_fs(:long)          # => "December 04, 2007 00:00"
  #   datetime.to_fs(:long_ordinal)  # => "December 4th, 2007 00:00"
  #   datetime.to_fs(:rfc822)        # => "Tue, 04 Dec 2007 00:00:00 +0000"
  #   datetime.to_fs(:iso8601)       # => "2007-12-04T00:00:00+00:00"
  #
  # == Adding your own datetime formats to to_fs
  # DateTime formats are shared with Time. You can add your own to the
  # Time::DATE_FORMATS hash. Use the format name as the hash key and
  # either a strftime string or Proc instance that takes a time or
  # datetime argument as the value.
  #
  #   # config/initializers/time_formats.rb
  #   Time::DATE_FORMATS[:month_and_year] = '%B %Y'
  #   Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#35
  def to_fs(format = T.unsafe(nil)); end

  # Converts +self+ to an integer number of seconds since the Unix epoch.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#84
  def to_i; end

  # source://activesupport//lib/active_support/core_ext/date_time/deprecated_conversions.rb#7
  def to_s(format = T.unsafe(nil)); end

  # Either return an instance of +Time+ with the same UTC offset
  # as +self+ or an instance of +Time+ representing the same time
  # in the local system timezone depending on the setting of
  # on the setting of +ActiveSupport.to_time_preserves_timezone+.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/compatibility.rb#15
  def to_time; end

  # Returns the fraction of a second as microseconds
  #
  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#89
  def usec; end

  # Returns a <tt>Time</tt> instance of the simultaneous time in the UTC timezone.
  #
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24))     # => Mon, 21 Feb 2005 10:11:12 -0600
  #   DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc # => Mon, 21 Feb 2005 16:11:12 UTC
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#184
  def utc; end

  # Returns +true+ if <tt>offset == 0</tt>.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#197
  def utc?; end

  # Returns the offset value in seconds.
  #
  # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#202
  def utc_offset; end

  private

  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#99
  def offset_in_seconds; end

  # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#103
  def seconds_since_unix_epoch; end

  class << self
    # Returns DateTime with local offset for given year if format is local else
    # offset is zero.
    #
    #   DateTime.civil_from_format :local, 2012
    #   # => Sun, 01 Jan 2012 00:00:00 +0300
    #   DateTime.civil_from_format :local, 2012, 12, 17
    #   # => Mon, 17 Dec 2012 00:00:00 +0000
    #
    # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#69
    def civil_from_format(utc_or_local, year, month = T.unsafe(nil), day = T.unsafe(nil), hour = T.unsafe(nil), min = T.unsafe(nil), sec = T.unsafe(nil)); end

    # Returns <tt>Time.zone.now.to_datetime</tt> when <tt>Time.zone</tt> or
    # <tt>config.time_zone</tt> are set, otherwise returns
    # <tt>Time.now.to_datetime</tt>.
    #
    # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#10
    def current; end
  end
end

# source://activesupport//lib/active_support/core_ext/date_time/deprecated_conversions.rb#6
DateTime::NOT_SET = T.let(T.unsafe(nil), Object)

# source://activesupport//lib/active_support/core_ext/object/try.rb#117
class Delegator < ::BasicObject
  include ::ActiveSupport::Tryable
end

# source://activesupport//lib/active_support/core_ext/digest/uuid.rb#7
module Digest::UUID
  class << self
    # source://activesupport//lib/active_support/core_ext/digest/uuid.rb#13
    def use_rfc4122_namespaced_uuids; end

    # source://activesupport//lib/active_support/core_ext/digest/uuid.rb#13
    def use_rfc4122_namespaced_uuids=(val); end

    # Generates a v5 non-random UUID (Universally Unique IDentifier).
    #
    # Using OpenSSL::Digest::MD5 generates version 3 UUIDs; OpenSSL::Digest::SHA1 generates version 5 UUIDs.
    # uuid_from_hash always generates the same UUID for a given name and namespace combination.
    #
    # See RFC 4122 for details of UUID at: https://www.ietf.org/rfc/rfc4122.txt
    #
    # source://activesupport//lib/active_support/core_ext/digest/uuid.rb#21
    def uuid_from_hash(hash_class, namespace, name); end

    # Convenience method for uuid_from_hash using OpenSSL::Digest::MD5.
    #
    # source://activesupport//lib/active_support/core_ext/digest/uuid.rb#44
    def uuid_v3(uuid_namespace, name); end

    # Convenience method for SecureRandom.uuid.
    #
    # source://activesupport//lib/active_support/core_ext/digest/uuid.rb#54
    def uuid_v4; end

    # Convenience method for uuid_from_hash using OpenSSL::Digest::SHA1.
    #
    # source://activesupport//lib/active_support/core_ext/digest/uuid.rb#49
    def uuid_v5(uuid_namespace, name); end

    private

    # source://activesupport//lib/active_support/core_ext/digest/uuid.rb#58
    def pack_uuid_namespace(namespace); end
  end
end

# source://activesupport//lib/active_support/core_ext/digest/uuid.rb#8
Digest::UUID::DNS_NAMESPACE = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/digest/uuid.rb#10
Digest::UUID::OID_NAMESPACE = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/digest/uuid.rb#9
Digest::UUID::URL_NAMESPACE = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/digest/uuid.rb#11
Digest::UUID::X500_NAMESPACE = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#8
module ERB::Util
  private

  # A utility method for escaping HTML tag characters.
  # This method is also aliased as <tt>h</tt>.
  #
  #   puts html_escape('is a > 0 & a < 10?')
  #   # => is a &gt; 0 &amp; a &lt; 10?
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#27
  def h(s); end

  # A utility method for escaping HTML tag characters.
  # This method is also aliased as <tt>h</tt>.
  #
  #   puts html_escape('is a > 0 & a < 10?')
  #   # => is a &gt; 0 &amp; a &lt; 10?
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#27
  def html_escape(s); end

  # A utility method for escaping HTML without affecting existing escaped entities.
  #
  #   html_escape_once('1 < 2 &amp; 3')
  #   # => "1 &lt; 2 &amp; 3"
  #
  #   html_escape_once('&lt;&lt; Accept & Checkout')
  #   # => "&lt;&lt; Accept &amp; Checkout"
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#58
  def html_escape_once(s); end

  # A utility method for escaping HTML entities in JSON strings. Specifically, the
  # &, > and < characters are replaced with their equivalent unicode escaped form -
  # \u0026, \u003e, and \u003c. The Unicode sequences \u2028 and \u2029 are also
  # escaped as they are treated as newline characters in some JavaScript engines.
  # These sequences have identical meaning as the original characters inside the
  # context of a JSON string, so assuming the input is a valid and well-formed
  # JSON value, the output will have equivalent meaning when parsed:
  #
  #   json = JSON.generate({ name: "</script><script>alert('PWNED!!!')</script>"})
  #   # => "{\"name\":\"</script><script>alert('PWNED!!!')</script>\"}"
  #
  #   json_escape(json)
  #   # => "{\"name\":\"\\u003C/script\\u003E\\u003Cscript\\u003Ealert('PWNED!!!')\\u003C/script\\u003E\"}"
  #
  #   JSON.parse(json) == JSON.parse(json_escape(json))
  #   # => true
  #
  # The intended use case for this method is to escape JSON strings before including
  # them inside a script tag to avoid XSS vulnerability:
  #
  #   <script>
  #     var currentUser = <%= raw json_escape(current_user.to_json) %>;
  #   </script>
  #
  # It is necessary to +raw+ the result of +json_escape+, so that quotation marks
  # don't get converted to <tt>&quot;</tt> entities. +json_escape+ doesn't
  # automatically flag the result as HTML safe, since the raw value is unsafe to
  # use inside HTML attributes.
  #
  # If your JSON is being used downstream for insertion into the DOM, be aware of
  # whether or not it is being inserted via <tt>html()</tt>. Most jQuery plugins do this.
  # If that is the case, be sure to +html_escape+ or +sanitize+ any user-generated
  # content returned by your JSON.
  #
  # If you need to output JSON elsewhere in your HTML, you can just do something
  # like this, as any unsafe characters (including quotation marks) will be
  # automatically escaped for you:
  #
  #   <div data-user-info="<%= current_user.to_json %>">...</div>
  #
  # WARNING: this helper only works with valid JSON. Using this on non-JSON values
  # will open up serious XSS vulnerabilities. For example, if you replace the
  # +current_user.to_json+ in the example above with user input instead, the browser
  # will happily <tt>eval()</tt> that string as JavaScript.
  #
  # The escaping performed in this method is identical to those performed in the
  # Active Support JSON encoder when +ActiveSupport.escape_html_entities_in_json+ is
  # set to true. Because this transformation is idempotent, this helper can be
  # applied even if +ActiveSupport.escape_html_entities_in_json+ is already true.
  #
  # Therefore, when you are unsure if +ActiveSupport.escape_html_entities_in_json+
  # is enabled, or if you are unsure where your JSON string originated from, it
  # is recommended that you always apply this helper (other libraries, such as the
  # JSON gem, do not provide this kind of protection by default; also some gems
  # might override +to_json+ to bypass Active Support's encoder).
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#120
  def json_escape(s); end

  # HTML escapes strings but doesn't wrap them with an ActiveSupport::SafeBuffer.
  # This method is not for public consumption! Seriously!
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#41
  def unwrapped_html_escape(s); end

  # A utility method for escaping XML names of tags and names of attributes.
  #
  #   xml_name_escape('1 < 2 & 3')
  #   # => "1___2___3"
  #
  # It follows the requirements of the specification: https://www.w3.org/TR/REC-xml/#NT-Name
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#133
  def xml_name_escape(name); end

  class << self
    # A utility method for escaping HTML tag characters.
    # This method is also aliased as <tt>h</tt>.
    #
    #   puts html_escape('is a > 0 & a < 10?')
    #   # => is a &gt; 0 &amp; a &lt; 10?
    #
    # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#27
    def h(s); end

    # A utility method for escaping HTML tag characters.
    # This method is also aliased as <tt>h</tt>.
    #
    #   puts html_escape('is a > 0 & a < 10?')
    #   # => is a &gt; 0 &amp; a &lt; 10?
    #
    # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#27
    def html_escape(s); end

    # A utility method for escaping HTML without affecting existing escaped entities.
    #
    #   html_escape_once('1 < 2 &amp; 3')
    #   # => "1 &lt; 2 &amp; 3"
    #
    #   html_escape_once('&lt;&lt; Accept & Checkout')
    #   # => "&lt;&lt; Accept &amp; Checkout"
    #
    # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#58
    def html_escape_once(s); end

    # A utility method for escaping HTML entities in JSON strings. Specifically, the
    # &, > and < characters are replaced with their equivalent unicode escaped form -
    # \u0026, \u003e, and \u003c. The Unicode sequences \u2028 and \u2029 are also
    # escaped as they are treated as newline characters in some JavaScript engines.
    # These sequences have identical meaning as the original characters inside the
    # context of a JSON string, so assuming the input is a valid and well-formed
    # JSON value, the output will have equivalent meaning when parsed:
    #
    #   json = JSON.generate({ name: "</script><script>alert('PWNED!!!')</script>"})
    #   # => "{\"name\":\"</script><script>alert('PWNED!!!')</script>\"}"
    #
    #   json_escape(json)
    #   # => "{\"name\":\"\\u003C/script\\u003E\\u003Cscript\\u003Ealert('PWNED!!!')\\u003C/script\\u003E\"}"
    #
    #   JSON.parse(json) == JSON.parse(json_escape(json))
    #   # => true
    #
    # The intended use case for this method is to escape JSON strings before including
    # them inside a script tag to avoid XSS vulnerability:
    #
    #   <script>
    #     var currentUser = <%= raw json_escape(current_user.to_json) %>;
    #   </script>
    #
    # It is necessary to +raw+ the result of +json_escape+, so that quotation marks
    # don't get converted to <tt>&quot;</tt> entities. +json_escape+ doesn't
    # automatically flag the result as HTML safe, since the raw value is unsafe to
    # use inside HTML attributes.
    #
    # If your JSON is being used downstream for insertion into the DOM, be aware of
    # whether or not it is being inserted via <tt>html()</tt>. Most jQuery plugins do this.
    # If that is the case, be sure to +html_escape+ or +sanitize+ any user-generated
    # content returned by your JSON.
    #
    # If you need to output JSON elsewhere in your HTML, you can just do something
    # like this, as any unsafe characters (including quotation marks) will be
    # automatically escaped for you:
    #
    #   <div data-user-info="<%= current_user.to_json %>">...</div>
    #
    # WARNING: this helper only works with valid JSON. Using this on non-JSON values
    # will open up serious XSS vulnerabilities. For example, if you replace the
    # +current_user.to_json+ in the example above with user input instead, the browser
    # will happily <tt>eval()</tt> that string as JavaScript.
    #
    # The escaping performed in this method is identical to those performed in the
    # Active Support JSON encoder when +ActiveSupport.escape_html_entities_in_json+ is
    # set to true. Because this transformation is idempotent, this helper can be
    # applied even if +ActiveSupport.escape_html_entities_in_json+ is already true.
    #
    # Therefore, when you are unsure if +ActiveSupport.escape_html_entities_in_json+
    # is enabled, or if you are unsure where your JSON string originated from, it
    # is recommended that you always apply this helper (other libraries, such as the
    # JSON gem, do not provide this kind of protection by default; also some gems
    # might override +to_json+ to bypass Active Support's encoder).
    #
    # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#120
    def json_escape(s); end

    # HTML escapes strings but doesn't wrap them with an ActiveSupport::SafeBuffer.
    # This method is not for public consumption! Seriously!
    #
    # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#41
    def unwrapped_html_escape(s); end

    # A utility method for escaping XML names of tags and names of attributes.
    #
    #   xml_name_escape('1 < 2 & 3')
    #   # => "1___2___3"
    #
    # It follows the requirements of the specification: https://www.w3.org/TR/REC-xml/#NT-Name
    #
    # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#133
    def xml_name_escape(name); end
  end
end

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#9
ERB::Util::HTML_ESCAPE = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#11
ERB::Util::HTML_ESCAPE_ONCE_REGEXP = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#10
ERB::Util::JSON_ESCAPE = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#12
ERB::Util::JSON_ESCAPE_REGEXP = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#19
ERB::Util::TAG_NAME_FOLLOWING_REGEXP = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#20
ERB::Util::TAG_NAME_REPLACEMENT_CHAR = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#18
ERB::Util::TAG_NAME_START_REGEXP = T.let(T.unsafe(nil), Regexp)

# Following XML requirements: https://www.w3.org/TR/REC-xml/#NT-Name
#
# source://activesupport//lib/active_support/core_ext/string/output_safety.rb#15
ERB::Util::TAG_NAME_START_REGEXP_SET = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/object/json.rb#139
module Enumerable
  extend ::ActiveSupport::EnumerableCoreExt::Constants

  # source://activesupport//lib/active_support/core_ext/object/json.rb#140
  def as_json(options = T.unsafe(nil)); end

  # Returns a new +Array+ without the blank items.
  # Uses Object#blank? for determining if an item is blank.
  #
  #   [1, "", nil, 2, " ", [], {}, false, true].compact_blank
  #   # =>  [1, 2, true]
  #
  #   Set.new([nil, "", 1, false]).compact_blank
  #   # => [1]
  #
  # When called on a +Hash+, returns a new +Hash+ without the blank values.
  #
  #   { a: "", b: 1, c: nil, d: [], e: false, f: true }.compact_blank
  #   # => { b: 1, f: true }
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#235
  def compact_blank; end

  # The negative of the <tt>Enumerable#include?</tt>. Returns +true+ if the
  # collection does not include the object.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#169
  def exclude?(object); end

  # Returns a copy of the enumerable excluding the specified elements.
  #
  #   ["David", "Rafael", "Aaron", "Todd"].excluding "Aaron", "Todd"
  #   # => ["David", "Rafael"]
  #
  #   ["David", "Rafael", "Aaron", "Todd"].excluding %w[ Aaron Todd ]
  #   # => ["David", "Rafael"]
  #
  #   {foo: 1, bar: 2, baz: 3}.excluding :bar
  #   # => {foo: 1, baz: 3}
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#183
  def excluding(*elements); end

  # Returns a new +Array+ where the order has been set to that provided in the +series+, based on the +key+ of the
  # objects in the original enumerable.
  #
  #   [ Person.find(5), Person.find(3), Person.find(1) ].in_order_of(:id, [ 1, 5, 3 ])
  #   # => [ Person.find(1), Person.find(5), Person.find(3) ]
  #
  # If the +series+ include keys that have no corresponding element in the Enumerable, these are ignored.
  # If the Enumerable has additional elements that aren't named in the +series+, these are not included in the result.
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#247
  def in_order_of(key, series); end

  # Returns a new array that includes the passed elements.
  #
  #   [ 1, 2, 3 ].including(4, 5)
  #   # => [ 1, 2, 3, 4, 5 ]
  #
  #   ["David", "Rafael"].including %w[ Aaron Todd ]
  #   # => ["David", "Rafael", "Aaron", "Todd"]
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#163
  def including(*elements); end

  # Convert an enumerable to a hash, using the block result as the key and the
  # element as the value.
  #
  #   people.index_by(&:login)
  #   # => { "nextangle" => <Person ...>, "chade-" => <Person ...>, ...}
  #
  #   people.index_by { |person| "#{person.first_name} #{person.last_name}" }
  #   # => { "Chade- Fowlersburg-e" => <Person ...>, "David Heinemeier Hansson" => <Person ...>, ...}
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#103
  def index_by; end

  # Convert an enumerable to a hash, using the element as the key and the block
  # result as the value.
  #
  #   post = Post.new(title: "hey there", body: "what's up?")
  #
  #   %i( title body ).index_with { |attr_name| post.public_send(attr_name) }
  #   # => { title: "hey there", body: "what's up?" }
  #
  # If an argument is passed instead of a block, it will be used as the value
  # for all elements:
  #
  #   %i( created_at updated_at ).index_with(Time.now)
  #   # => { created_at: 2020-03-09 22:31:47, updated_at: 2020-03-09 22:31:47 }
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#126
  def index_with(default = T.unsafe(nil)); end

  # Returns +true+ if the enumerable has more than 1 element. Functionally
  # equivalent to <tt>enum.to_a.size > 1</tt>. Can be called with a block too,
  # much like any?, so <tt>people.many? { |p| p.age > 26 }</tt> returns +true+
  # if more than one person is over 26.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#144
  def many?; end

  # Calculates the maximum from the extracted elements.
  #
  #   payments = [Payment.new(5), Payment.new(15), Payment.new(10)]
  #   payments.maximum(:price) # => 15
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#52
  def maximum(key); end

  # Calculates the minimum from the extracted elements.
  #
  #   payments = [Payment.new(5), Payment.new(15), Payment.new(10)]
  #   payments.minimum(:price) # => 5
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#44
  def minimum(key); end

  # Extract the given key from the first element in the enumerable.
  #
  #   [{ name: "David" }, { name: "Rafael" }, { name: "Aaron" }].pick(:name)
  #   # => "David"
  #
  #   [{ id: 1, name: "David" }, { id: 2, name: "Rafael" }].pick(:id, :name)
  #   # => [1, "David"]
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#212
  def pick(*keys); end

  # Extract the given key from each element in the enumerable.
  #
  #   [{ name: "David" }, { name: "Rafael" }, { name: "Aaron" }].pluck(:name)
  #   # => ["David", "Rafael", "Aaron"]
  #
  #   [{ id: 1, name: "David" }, { id: 2, name: "Rafael" }].pluck(:id, :name)
  #   # => [[1, "David"], [2, "Rafael"]]
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#196
  def pluck(*keys); end

  # Returns the sole item in the enumerable. If there are no items, or more
  # than one item, raises +Enumerable::SoleItemExpectedError+.
  #
  #   ["x"].sole          # => "x"
  #   Set.new.sole        # => Enumerable::SoleItemExpectedError: no item found
  #   { a: 1, b: 2 }.sole # => Enumerable::SoleItemExpectedError: multiple items found
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#257
  def sole; end

  # Calculates a sum from the elements.
  #
  #   payments.sum { |p| p.price * p.tax_rate }
  #   payments.sum(&:price)
  #
  # The latter is a shortcut for:
  #
  #   payments.inject(0) { |sum, p| sum + p.price }
  #
  # It can also calculate the sum without the use of a block.
  #
  #   [5, 15, 10].sum # => 30
  #   ['foo', 'bar'].sum('') # => "foobar"
  #   [[1, 2], [3, 1, 5]].sum([]) # => [1, 2, 3, 1, 5]
  #
  # The default sum of an empty list is zero. You can override this default:
  #
  #   [].sum(Payment.new(0)) { |i| i.amount } # => Payment.new(0)
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#74
  def sum(identity = T.unsafe(nil), &block); end

  # Returns a copy of the enumerable excluding the specified elements.
  #
  #   ["David", "Rafael", "Aaron", "Todd"].excluding "Aaron", "Todd"
  #   # => ["David", "Rafael"]
  #
  #   ["David", "Rafael", "Aaron", "Todd"].excluding %w[ Aaron Todd ]
  #   # => ["David", "Rafael"]
  #
  #   {foo: 1, bar: 2, baz: 3}.excluding :bar
  #   # => {foo: 1, baz: 3}
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#183
  def without(*elements); end
end

# Error generated by +sole+ when called on an enumerable that doesn't have
# exactly one item.
#
# source://activesupport//lib/active_support/core_ext/enumerable.rb#21
class Enumerable::SoleItemExpectedError < ::StandardError; end

# source://activesupport//lib/active_support/core_ext/object/json.rb#240
class Exception
  # source://activesupport//lib/active_support/core_ext/object/json.rb#241
  def as_json(options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/object/blank.rb#61
class FalseClass
  # source://activesupport//lib/active_support/core_ext/object/json.rb#81
  def as_json(options = T.unsafe(nil)); end

  # +false+ is blank:
  #
  #   false.blank? # => true
  #
  # @return [true]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#67
  def blank?; end

  # Returns +self+.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#34
  def to_param; end
end

# source://activesupport//lib/active_support/core_ext/file/atomic.rb#5
class File < ::IO
  class << self
    # Write to a file atomically. Useful for situations where you don't
    # want other processes or threads to see half-written files.
    #
    #   File.atomic_write('important.file') do |file|
    #     file.write('hello')
    #   end
    #
    # This method needs to create a temporary file. By default it will create it
    # in the same directory as the destination file. If you don't like this
    # behavior you can provide a different directory but it must be on the
    # same physical filesystem as the file you're trying to write.
    #
    #   File.atomic_write('/data/something.important', '/data/tmp') do |file|
    #     file.write('hello')
    #   end
    #
    # source://activesupport//lib/active_support/core_ext/file/atomic.rb#21
    def atomic_write(file_name, temp_dir = T.unsafe(nil)); end

    # Private utility method.
    #
    # source://activesupport//lib/active_support/core_ext/file/atomic.rb#56
    def probe_stat_in(dir); end
  end
end

# source://yard/0.9.34/lib/yard/core_ext/file.rb#5
File::RELATIVE_PARENTDIR = T.let(T.unsafe(nil), String)

# source://yard/0.9.34/lib/yard/core_ext/file.rb#6
File::RELATIVE_SAMEDIR = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/object/json.rb#110
class Float < ::Numeric
  include ::ActiveSupport::NumericWithFormat
  include ::ActiveSupport::DeprecatedNumericWithFormat

  # Encoding Infinity or NaN to JSON should return "null". The default returns
  # "Infinity" or "NaN" which are not valid JSON.
  #
  # source://activesupport//lib/active_support/core_ext/object/json.rb#113
  def as_json(options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/numeric/deprecated_conversions.rb#5
  def to_s(format = T.unsafe(nil), options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/hash/deep_merge.rb#3
class Hash
  include ::Enumerable

  # source://activesupport//lib/active_support/core_ext/object/json.rb#164
  def as_json(options = T.unsafe(nil)); end

  # Validates all keys in a hash match <tt>*valid_keys</tt>, raising
  # +ArgumentError+ on a mismatch.
  #
  # Note that keys are treated differently than HashWithIndifferentAccess,
  # meaning that string and symbol keys will not match.
  #
  #   { name: 'Rob', years: '28' }.assert_valid_keys(:name, :age) # => raises "ArgumentError: Unknown key: :years. Valid keys are: :name, :age"
  #   { name: 'Rob', age: '28' }.assert_valid_keys('name', 'age') # => raises "ArgumentError: Unknown key: :name. Valid keys are: 'name', 'age'"
  #   { name: 'Rob', age: '28' }.assert_valid_keys(:name, :age)   # => passes, raises nothing
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#48
  def assert_valid_keys(*valid_keys); end

  # Hash#reject has its own definition, so this needs one too.
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#268
  def compact_blank; end

  # Removes all blank values from the +Hash+ in place and returns self.
  # Uses Object#blank? for determining if a value is blank.
  #
  #   h = { a: "", b: 1, c: nil, d: [], e: false, f: true }
  #   h.compact_blank!
  #   # => { b: 1, f: true }
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#278
  def compact_blank!; end

  # Returns a new hash with +self+ and +other_hash+ merged recursively.
  #
  #   h1 = { a: true, b: { c: [1, 2, 3] } }
  #   h2 = { a: false, b: { x: [3, 4, 5] } }
  #
  #   h1.deep_merge(h2) # => { a: false, b: { c: [1, 2, 3], x: [3, 4, 5] } }
  #
  # Like with Hash#merge in the standard library, a block can be provided
  # to merge values:
  #
  #   h1 = { a: 100, b: 200, c: { c1: 100 } }
  #   h2 = { b: 250, c: { c1: 200 } }
  #   h1.deep_merge(h2) { |key, this_val, other_val| this_val + other_val }
  #   # => { a: 100, b: 450, c: { c1: 300 } }
  #
  # source://activesupport//lib/active_support/core_ext/hash/deep_merge.rb#18
  def deep_merge(other_hash, &block); end

  # Same as +deep_merge+, but modifies +self+.
  #
  # source://activesupport//lib/active_support/core_ext/hash/deep_merge.rb#23
  def deep_merge!(other_hash, &block); end

  # Returns a new hash with all keys converted to strings.
  # This includes the keys from the root hash and from all
  # nested hashes and arrays.
  #
  #   hash = { person: { name: 'Rob', age: '28' } }
  #
  #   hash.deep_stringify_keys
  #   # => {"person"=>{"name"=>"Rob", "age"=>"28"}}
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#84
  def deep_stringify_keys; end

  # Destructively converts all keys to strings.
  # This includes the keys from the root hash and from all
  # nested hashes and arrays.
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#91
  def deep_stringify_keys!; end

  # Returns a new hash with all keys converted to symbols, as long as
  # they respond to +to_sym+. This includes the keys from the root hash
  # and from all nested hashes and arrays.
  #
  #   hash = { 'person' => { 'name' => 'Rob', 'age' => '28' } }
  #
  #   hash.deep_symbolize_keys
  #   # => {:person=>{:name=>"Rob", :age=>"28"}}
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#103
  def deep_symbolize_keys; end

  # Destructively converts all keys to symbols, as long as they respond
  # to +to_sym+. This includes the keys from the root hash and from all
  # nested hashes and arrays.
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#110
  def deep_symbolize_keys!; end

  # Returns a new hash with all keys converted by the block operation.
  # This includes the keys from the root hash and from all
  # nested hashes and arrays.
  #
  #   hash = { person: { name: 'Rob', age: '28' } }
  #
  #   hash.deep_transform_keys{ |key| key.to_s.upcase }
  #   # => {"PERSON"=>{"NAME"=>"Rob", "AGE"=>"28"}}
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#65
  def deep_transform_keys(&block); end

  # Destructively converts all keys by using the block operation.
  # This includes the keys from the root hash and from all
  # nested hashes and arrays.
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#72
  def deep_transform_keys!(&block); end

  # Returns a new hash with all values converted by the block operation.
  # This includes the values from the root hash and from all
  # nested hashes and arrays.
  #
  #   hash = { person: { name: 'Rob', age: '28' } }
  #
  #   hash.deep_transform_values{ |value| value.to_s.upcase }
  #   # => {person: {name: "ROB", age: "28"}}
  #
  # source://activesupport//lib/active_support/core_ext/hash/deep_transform_values.rb#12
  def deep_transform_values(&block); end

  # Destructively converts all values by using the block operation.
  # This includes the values from the root hash and from all
  # nested hashes and arrays.
  #
  # source://activesupport//lib/active_support/core_ext/hash/deep_transform_values.rb#19
  def deep_transform_values!(&block); end

  # Removes the given keys from hash and returns it.
  #   hash = { a: true, b: false, c: nil }
  #   hash.except!(:c) # => { a: true, b: false }
  #   hash             # => { a: true, b: false }
  #
  # source://activesupport//lib/active_support/core_ext/hash/except.rb#20
  def except!(*keys); end

  # Removes and returns the key/value pairs matching the given keys.
  #
  #   hash = { a: 1, b: 2, c: 3, d: 4 }
  #   hash.extract!(:a, :b) # => {:a=>1, :b=>2}
  #   hash                  # => {:c=>3, :d=>4}
  #
  # source://activesupport//lib/active_support/core_ext/hash/slice.rb#24
  def extract!(*keys); end

  # By default, only instances of Hash itself are extractable.
  # Subclasses of Hash may implement this method and return
  # true to declare themselves as extractable. If a Hash
  # is extractable, Array#extract_options! pops it from
  # the Array when it is the last element of the Array.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/array/extract_options.rb#9
  def extractable_options?; end

  # Returns an ActiveSupport::HashWithIndifferentAccess out of its receiver:
  #
  #   { a: 1 }.with_indifferent_access['a'] # => 1
  # Called when object is nested under an object that receives
  # #with_indifferent_access. This method will be called on the current object
  # by the enclosing object and is aliased to #with_indifferent_access by
  # default. Subclasses of Hash may override this method to return +self+ if
  # converting to an ActiveSupport::HashWithIndifferentAccess would not be
  # desirable.
  #
  #   b = { b: 1 }
  #   { a: b }.with_indifferent_access['a'] # calls b.nested_under_indifferent_access
  #   # => {"b"=>1}
  #
  # source://activesupport//lib/active_support/core_ext/hash/indifferent_access.rb#9
  def nested_under_indifferent_access; end

  # Merges the caller into +other_hash+. For example,
  #
  #   options = options.reverse_merge(size: 25, velocity: 10)
  #
  # is equivalent to
  #
  #   options = { size: 25, velocity: 10 }.merge(options)
  #
  # This is particularly useful for initializing an options hash
  # with default values.
  #
  # source://activesupport//lib/active_support/core_ext/hash/reverse_merge.rb#14
  def reverse_merge(other_hash); end

  # Destructive +reverse_merge+.
  #
  # source://activesupport//lib/active_support/core_ext/hash/reverse_merge.rb#20
  def reverse_merge!(other_hash); end

  # Destructive +reverse_merge+.
  #
  # source://activesupport//lib/active_support/core_ext/hash/reverse_merge.rb#20
  def reverse_update(other_hash); end

  # Replaces the hash with only the given keys.
  # Returns a hash containing the removed key/value pairs.
  #
  #   hash = { a: 1, b: 2, c: 3, d: 4 }
  #   hash.slice!(:a, :b)  # => {:c=>3, :d=>4}
  #   hash                 # => {:a=>1, :b=>2}
  #
  # source://activesupport//lib/active_support/core_ext/hash/slice.rb#10
  def slice!(*keys); end

  # Returns a new hash with all keys converted to strings.
  #
  #   hash = { name: 'Rob', age: '28' }
  #
  #   hash.stringify_keys
  #   # => {"name"=>"Rob", "age"=>"28"}
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#10
  def stringify_keys; end

  # Destructively converts all keys to strings. Same as
  # +stringify_keys+, but modifies +self+.
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#16
  def stringify_keys!; end

  # Returns a new hash with all keys converted to symbols, as long as
  # they respond to +to_sym+.
  #
  #   hash = { 'name' => 'Rob', 'age' => '28' }
  #
  #   hash.symbolize_keys
  #   # => {:name=>"Rob", :age=>"28"}
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#27
  def symbolize_keys; end

  # Destructively converts all keys to symbols, as long as they respond
  # to +to_sym+. Same as +symbolize_keys+, but modifies +self+.
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#34
  def symbolize_keys!; end

  # Returns a new hash with all keys converted to symbols, as long as
  # they respond to +to_sym+.
  #
  #   hash = { 'name' => 'Rob', 'age' => '28' }
  #
  #   hash.symbolize_keys
  #   # => {:name=>"Rob", :age=>"28"}
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#27
  def to_options; end

  # Destructively converts all keys to symbols, as long as they respond
  # to +to_sym+. Same as +symbolize_keys+, but modifies +self+.
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#34
  def to_options!; end

  # Returns a string representation of the receiver suitable for use as a URL
  # query string:
  #
  #   {name: 'David', nationality: 'Danish'}.to_query
  #   # => "name=David&nationality=Danish"
  #
  # An optional namespace can be passed to enclose key names:
  #
  #   {name: 'David', nationality: 'Danish'}.to_query('user')
  #   # => "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
  #
  # The string pairs "key=value" that conform the query string
  # are sorted lexicographically in ascending order.
  #
  # This method is also aliased as +to_param+.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#77
  def to_param(namespace = T.unsafe(nil)); end

  # Returns a string representation of the receiver suitable for use as a URL
  # query string:
  #
  #   {name: 'David', nationality: 'Danish'}.to_query
  #   # => "name=David&nationality=Danish"
  #
  # An optional namespace can be passed to enclose key names:
  #
  #   {name: 'David', nationality: 'Danish'}.to_query('user')
  #   # => "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
  #
  # The string pairs "key=value" that conform the query string
  # are sorted lexicographically in ascending order.
  #
  # This method is also aliased as +to_param+.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#77
  def to_query(namespace = T.unsafe(nil)); end

  # Returns a string containing an XML representation of its receiver:
  #
  #   { foo: 1, bar: 2 }.to_xml
  #   # =>
  #   # <?xml version="1.0" encoding="UTF-8"?>
  #   # <hash>
  #   #   <foo type="integer">1</foo>
  #   #   <bar type="integer">2</bar>
  #   # </hash>
  #
  # To do so, the method loops over the pairs and builds nodes that depend on
  # the _values_. Given a pair +key+, +value+:
  #
  # * If +value+ is a hash there's a recursive call with +key+ as <tt>:root</tt>.
  #
  # * If +value+ is an array there's a recursive call with +key+ as <tt>:root</tt>,
  #   and +key+ singularized as <tt>:children</tt>.
  #
  # * If +value+ is a callable object it must expect one or two arguments. Depending
  #   on the arity, the callable is invoked with the +options+ hash as first argument
  #   with +key+ as <tt>:root</tt>, and +key+ singularized as second argument. The
  #   callable can add nodes by using <tt>options[:builder]</tt>.
  #
  #     {foo: lambda { |options, key| options[:builder].b(key) }}.to_xml
  #     # => "<b>foo</b>"
  #
  # * If +value+ responds to +to_xml+ the method is invoked with +key+ as <tt>:root</tt>.
  #
  #     class Foo
  #       def to_xml(options)
  #         options[:builder].bar 'fooing!'
  #       end
  #     end
  #
  #     { foo: Foo.new }.to_xml(skip_instruct: true)
  #     # =>
  #     # <hash>
  #     #   <bar>fooing!</bar>
  #     # </hash>
  #
  # * Otherwise, a node with +key+ as tag is created with a string representation of
  #   +value+ as text node. If +value+ is +nil+ an attribute "nil" set to "true" is added.
  #   Unless the option <tt>:skip_types</tt> exists and is true, an attribute "type" is
  #   added as well according to the following mapping:
  #
  #     XML_TYPE_NAMES = {
  #       "Symbol"     => "symbol",
  #       "Integer"    => "integer",
  #       "BigDecimal" => "decimal",
  #       "Float"      => "float",
  #       "TrueClass"  => "boolean",
  #       "FalseClass" => "boolean",
  #       "Date"       => "date",
  #       "DateTime"   => "dateTime",
  #       "Time"       => "dateTime"
  #     }
  #
  # By default the root node is "hash", but that's configurable via the <tt>:root</tt> option.
  #
  # The default XML builder is a fresh instance of <tt>Builder::XmlMarkup</tt>. You can
  # configure your own builder with the <tt>:builder</tt> option. The method also accepts
  # options like <tt>:dasherize</tt> and friends, they are forwarded to the builder.
  #
  # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#74
  def to_xml(options = T.unsafe(nil)); end

  # Merges the caller into +other_hash+. For example,
  #
  #   options = options.reverse_merge(size: 25, velocity: 10)
  #
  # is equivalent to
  #
  #   options = { size: 25, velocity: 10 }.merge(options)
  #
  # This is particularly useful for initializing an options hash
  # with default values.
  #
  # source://activesupport//lib/active_support/core_ext/hash/reverse_merge.rb#14
  def with_defaults(other_hash); end

  # Destructive +reverse_merge+.
  #
  # source://activesupport//lib/active_support/core_ext/hash/reverse_merge.rb#20
  def with_defaults!(other_hash); end

  # Returns an ActiveSupport::HashWithIndifferentAccess out of its receiver:
  #
  #   { a: 1 }.with_indifferent_access['a'] # => 1
  #
  # source://activesupport//lib/active_support/core_ext/hash/indifferent_access.rb#9
  def with_indifferent_access; end

  private

  # Support methods for deep transforming nested hashes and arrays.
  #
  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#116
  def _deep_transform_keys_in_object(object, &block); end

  # source://activesupport//lib/active_support/core_ext/hash/keys.rb#129
  def _deep_transform_keys_in_object!(object, &block); end

  # Support methods for deep transforming nested hashes and arrays.
  #
  # source://activesupport//lib/active_support/core_ext/hash/deep_transform_values.rb#25
  def _deep_transform_values_in_object(object, &block); end

  # source://activesupport//lib/active_support/core_ext/hash/deep_transform_values.rb#36
  def _deep_transform_values_in_object!(object, &block); end

  class << self
    # Builds a Hash from XML just like <tt>Hash.from_xml</tt>, but also allows Symbol and YAML.
    #
    # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#133
    def from_trusted_xml(xml); end

    # Returns a Hash containing a collection of pairs when the key is the node name and the value is
    # its content
    #
    #   xml = <<-XML
    #     <?xml version="1.0" encoding="UTF-8"?>
    #       <hash>
    #         <foo type="integer">1</foo>
    #         <bar type="integer">2</bar>
    #       </hash>
    #   XML
    #
    #   hash = Hash.from_xml(xml)
    #   # => {"hash"=>{"foo"=>1, "bar"=>2}}
    #
    # +DisallowedType+ is raised if the XML contains attributes with <tt>type="yaml"</tt> or
    # <tt>type="symbol"</tt>. Use <tt>Hash.from_trusted_xml</tt> to
    # parse this XML.
    #
    # Custom +disallowed_types+ can also be passed in the form of an
    # array.
    #
    #   xml = <<-XML
    #     <?xml version="1.0" encoding="UTF-8"?>
    #       <hash>
    #         <foo type="integer">1</foo>
    #         <bar type="string">"David"</bar>
    #       </hash>
    #   XML
    #
    #   hash = Hash.from_xml(xml, ['integer'])
    #   # => ActiveSupport::XMLConverter::DisallowedType: Disallowed type attribute: "integer"
    #
    # Note that passing custom disallowed types will override the default types,
    # which are Symbol and YAML.
    #
    # source://activesupport//lib/active_support/core_ext/hash/conversions.rb#128
    def from_xml(xml, disallowed_types = T.unsafe(nil)); end
  end
end

# :stopdoc:
#
# source://activesupport//lib/active_support/hash_with_indifferent_access.rb#425
HashWithIndifferentAccess = ActiveSupport::HashWithIndifferentAccess

# :enddoc:
#
# source://activesupport//lib/active_support/i18n_railtie.rb#8
module I18n
  class << self
    # source://i18n/1.14.1/lib/i18n/backend/cache.rb#64
    def cache_key_digest; end

    # source://i18n/1.14.1/lib/i18n/backend/cache.rb#68
    def cache_key_digest=(key_digest); end

    # source://i18n/1.14.1/lib/i18n/backend/cache.rb#56
    def cache_namespace; end

    # source://i18n/1.14.1/lib/i18n/backend/cache.rb#60
    def cache_namespace=(namespace); end

    # source://i18n/1.14.1/lib/i18n/backend/cache.rb#48
    def cache_store; end

    # source://i18n/1.14.1/lib/i18n/backend/cache.rb#52
    def cache_store=(store); end

    # source://i18n/1.14.1/lib/i18n/backend/fallbacks.rb#17
    def fallbacks; end

    # source://i18n/1.14.1/lib/i18n/backend/fallbacks.rb#23
    def fallbacks=(fallbacks); end

    # source://i18n/1.14.1/lib/i18n/interpolate/ruby.rb#23
    def interpolate(string, values); end

    # source://i18n/1.14.1/lib/i18n/interpolate/ruby.rb#29
    def interpolate_hash(string, values); end

    # source://i18n/1.14.1/lib/i18n.rb#37
    def new_double_nested_cache; end

    # source://i18n/1.14.1/lib/i18n/backend/cache.rb#72
    def perform_caching?; end

    # source://i18n/1.14.1/lib/i18n.rb#45
    def reserve_key(key); end

    # source://i18n/1.14.1/lib/i18n.rb#50
    def reserved_keys_pattern; end
  end
end

# source://i18n/1.14.1/lib/i18n/interpolate/ruby.rb#7
I18n::DEFAULT_INTERPOLATION_PATTERNS = T.let(T.unsafe(nil), Array)

# source://i18n/1.14.1/lib/i18n.rb#35
I18n::EMPTY_HASH = T.let(T.unsafe(nil), Hash)

# source://i18n/1.14.1/lib/i18n/interpolate/ruby.rb#12
I18n::INTERPOLATION_PATTERN = T.let(T.unsafe(nil), Regexp)

# source://i18n/1.14.1/lib/i18n/backend/key_value.rb#21
I18n::JSON = ActiveSupport::JSON

# source://i18n/1.14.1/lib/i18n.rb#19
I18n::RESERVED_KEYS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/i18n_railtie.rb#9
class I18n::Railtie < ::Rails::Railtie
  class << self
    # source://activesupport//lib/active_support/i18n_railtie.rb#78
    def forward_raise_on_missing_translations_config(app); end

    # source://activesupport//lib/active_support/i18n_railtie.rb#88
    def include_fallbacks_module; end

    # source://activesupport//lib/active_support/i18n_railtie.rb#92
    def init_fallbacks(fallbacks); end

    # Setup i18n configuration.
    #
    # source://activesupport//lib/active_support/i18n_railtie.rb#32
    def initialize_i18n(app); end

    # source://activesupport//lib/active_support/i18n_railtie.rb#108
    def validate_fallbacks(fallbacks); end

    # source://activesupport//lib/active_support/i18n_railtie.rb#119
    def watched_dirs_with_extensions(paths); end
  end
end

# source://i18n/1.14.1/lib/i18n/version.rb#4
I18n::VERSION = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/object/json.rb#145
class IO
  include ::Enumerable
  include ::File::Constants

  # source://activesupport//lib/active_support/core_ext/object/json.rb#146
  def as_json(options = T.unsafe(nil)); end
end

class IO::Buffer
  include ::Comparable

  def initialize(*_arg0); end

  def &(_arg0); end
  def <=>(_arg0); end
  def ^(_arg0); end
  def and!(_arg0); end
  def clear(*_arg0); end
  def copy(*_arg0); end
  def each(*_arg0); end
  def each_byte(*_arg0); end
  def empty?; end
  def external?; end
  def free; end
  def get_string(*_arg0); end
  def get_value(_arg0, _arg1); end
  def get_values(_arg0, _arg1); end
  def hexdump; end
  def inspect; end
  def internal?; end
  def locked; end
  def locked?; end
  def mapped?; end
  def not!; end
  def null?; end
  def or!(_arg0); end
  def pread(*_arg0); end
  def pwrite(*_arg0); end
  def read(*_arg0); end
  def readonly?; end
  def resize(_arg0); end
  def set_string(*_arg0); end
  def set_value(_arg0, _arg1, _arg2); end
  def set_values(_arg0, _arg1, _arg2); end
  def shared?; end
  def size; end
  def slice(*_arg0); end
  def to_s; end
  def transfer; end
  def valid?; end
  def values(*_arg0); end
  def write(*_arg0); end
  def xor!(_arg0); end
  def |(_arg0); end
  def ~; end

  private

  def initialize_copy(_arg0); end

  class << self
    def for(_arg0); end
    def map(*_arg0); end
    def size_of(_arg0); end
  end
end

class IO::Buffer::AccessError < ::RuntimeError; end
class IO::Buffer::AllocationError < ::RuntimeError; end
IO::Buffer::BIG_ENDIAN = T.let(T.unsafe(nil), Integer)
IO::Buffer::DEFAULT_SIZE = T.let(T.unsafe(nil), Integer)
IO::Buffer::EXTERNAL = T.let(T.unsafe(nil), Integer)
IO::Buffer::HOST_ENDIAN = T.let(T.unsafe(nil), Integer)
IO::Buffer::INTERNAL = T.let(T.unsafe(nil), Integer)
class IO::Buffer::InvalidatedError < ::RuntimeError; end
IO::Buffer::LITTLE_ENDIAN = T.let(T.unsafe(nil), Integer)
IO::Buffer::LOCKED = T.let(T.unsafe(nil), Integer)
class IO::Buffer::LockedError < ::RuntimeError; end
IO::Buffer::MAPPED = T.let(T.unsafe(nil), Integer)
class IO::Buffer::MaskError < ::ArgumentError; end
IO::Buffer::NETWORK_ENDIAN = T.let(T.unsafe(nil), Integer)
IO::Buffer::PAGE_SIZE = T.let(T.unsafe(nil), Integer)
IO::Buffer::PRIVATE = T.let(T.unsafe(nil), Integer)
IO::Buffer::READONLY = T.let(T.unsafe(nil), Integer)
IO::Buffer::SHARED = T.let(T.unsafe(nil), Integer)

class IO::ConsoleMode
  def echo=(_arg0); end
  def raw(*_arg0); end
  def raw!(*_arg0); end

  private

  def initialize_copy(_arg0); end
end

class IO::EAGAINWaitReadable < ::Errno::EAGAIN
  include ::IO::WaitReadable
end

class IO::EAGAINWaitWritable < ::Errno::EAGAIN
  include ::IO::WaitWritable
end

class IO::EINPROGRESSWaitReadable < ::Errno::EINPROGRESS
  include ::IO::WaitReadable
end

class IO::EINPROGRESSWaitWritable < ::Errno::EINPROGRESS
  include ::IO::WaitWritable
end

IO::EWOULDBLOCKWaitReadable = IO::EAGAINWaitReadable
IO::EWOULDBLOCKWaitWritable = IO::EAGAINWaitWritable
IO::PRIORITY = T.let(T.unsafe(nil), Integer)
IO::READABLE = T.let(T.unsafe(nil), Integer)
class IO::TimeoutError < ::IOError; end
IO::WRITABLE = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/object/json.rb#228
class IPAddr
  # source://activesupport//lib/active_support/core_ext/object/json.rb#229
  def as_json(options = T.unsafe(nil)); end
end

# source://ipaddr/1.2.5/ipaddr.rb#43
IPAddr::VERSION = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/integer/time.rb#6
class Integer < ::Numeric
  include ::ActiveSupport::NumericWithFormat
  include ::ActiveSupport::DeprecatedNumericWithFormat

  # Returns a Duration instance matching the number of months provided.
  #
  #   2.months # => 2 months
  #
  # source://activesupport//lib/active_support/core_ext/integer/time.rb#10
  def month; end

  # Returns a Duration instance matching the number of months provided.
  #
  #   2.months # => 2 months
  #
  # source://activesupport//lib/active_support/core_ext/integer/time.rb#10
  def months; end

  # source://activesupport//lib/active_support/core_ext/numeric/deprecated_conversions.rb#5
  def to_s(format = T.unsafe(nil), options = T.unsafe(nil)); end

  # Returns a Duration instance matching the number of years provided.
  #
  #   2.years # => 2 years
  #
  # source://activesupport//lib/active_support/core_ext/integer/time.rb#18
  def year; end

  # Returns a Duration instance matching the number of years provided.
  #
  #   2.years # => 2 years
  #
  # source://activesupport//lib/active_support/core_ext/integer/time.rb#18
  def years; end
end

Integer::GMP_VERSION = T.let(T.unsafe(nil), String)

# source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#3
module Kernel
  private

  # Sets $VERBOSE to +true+ for the duration of the block and back to its
  # original value afterwards.
  #
  # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#20
  def enable_warnings(&block); end

  # Sets $VERBOSE to +nil+ for the duration of the block and back to its original
  # value afterwards.
  #
  #   silence_warnings do
  #     value = noisy_call # no warning voiced
  #   end
  #
  #   noisy_call # warning voiced
  #
  # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#14
  def silence_warnings(&block); end

  # Blocks and ignores any exception passed as argument if raised within the block.
  #
  #   suppress(ZeroDivisionError) do
  #     1/0
  #     puts 'This code is NOT reached'
  #   end
  #
  #   puts 'This code gets executed and nothing related to ZeroDivisionError was seen'
  #
  # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#41
  def suppress(*exception_classes); end

  # Sets $VERBOSE for the duration of the block and back to its original
  # value afterwards.
  #
  # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#26
  def with_warnings(flag); end

  class << self
    # Sets $VERBOSE to +true+ for the duration of the block and back to its
    # original value afterwards.
    #
    # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#20
    def enable_warnings(&block); end

    # Sets $VERBOSE to +nil+ for the duration of the block and back to its original
    # value afterwards.
    #
    #   silence_warnings do
    #     value = noisy_call # no warning voiced
    #   end
    #
    #   noisy_call # warning voiced
    #
    # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#14
    def silence_warnings(&block); end

    # Blocks and ignores any exception passed as argument if raised within the block.
    #
    #   suppress(ZeroDivisionError) do
    #     1/0
    #     puts 'This code is NOT reached'
    #   end
    #
    #   puts 'This code gets executed and nothing related to ZeroDivisionError was seen'
    #
    # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#41
    def suppress(*exception_classes); end

    # Sets $VERBOSE for the duration of the block and back to its original
    # value afterwards.
    #
    # source://activesupport//lib/active_support/core_ext/kernel/reporting.rb#26
    def with_warnings(flag); end
  end
end

# source://activesupport//lib/active_support/core_ext/load_error.rb#3
class LoadError < ::ScriptError
  include ::DidYouMean::Correctable

  # Returns true if the given path name (except perhaps for the ".rb"
  # extension) is the missing file which caused the exception to be raised.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/load_error.rb#6
  def is_missing?(location); end
end

# == Attribute Accessors per Thread
#
# Extends the module object with class/module and instance accessors for
# class/module attributes, just like the native attr* accessors for instance
# attributes, but does so on a per-thread basis.
#
# So the values are scoped within the Thread.current space under the class name
# of the module.
#
# Note that it can also be scoped per-fiber if +Rails.application.config.active_support.isolation_level+
# is set to +:fiber+.
#
# source://activesupport//lib/active_support/core_ext/module/attribute_accessors.rb#8
class Module
  include ::Module::Concerning

  # Allows you to make aliases for attributes, which includes
  # getter, setter, and a predicate.
  #
  #   class Content < ActiveRecord::Base
  #     # has a title attribute
  #   end
  #
  #   class Email < Content
  #     alias_attribute :subject, :title
  #   end
  #
  #   e = Email.find(1)
  #   e.title    # => "Superstars"
  #   e.subject  # => "Superstars"
  #   e.subject? # => true
  #   e.subject = "Megastars"
  #   e.title    # => "Megastars"
  #
  # source://activesupport//lib/active_support/core_ext/module/aliasing.rb#21
  def alias_attribute(new_name, old_name); end

  # A module may or may not have a name.
  #
  #   module M; end
  #   M.name # => "M"
  #
  #   m = Module.new
  #   m.name # => nil
  #
  # +anonymous?+ method returns true if module does not have a name, false otherwise:
  #
  #   Module.new.anonymous? # => true
  #
  #   module M; end
  #   M.anonymous?          # => false
  #
  # A module gets a name when it is first assigned to a constant. Either
  # via the +module+ or +class+ keyword or by an explicit assignment:
  #
  #   m = Module.new # creates an anonymous module
  #   m.anonymous?   # => true
  #   M = m          # m gets a name here as a side-effect
  #   m.name         # => "M"
  #   m.anonymous?   # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/module/anonymous.rb#27
  def anonymous?; end

  # source://activesupport//lib/active_support/core_ext/object/json.rb#53
  def as_json(options = T.unsafe(nil)); end

  # Declares an attribute reader and writer backed by an internally-named instance
  # variable.
  #
  # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#16
  def attr_internal(*attrs); end

  # Declares an attribute reader and writer backed by an internally-named instance
  # variable.
  #
  # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#16
  def attr_internal_accessor(*attrs); end

  # Declares an attribute reader backed by an internally-named instance variable.
  #
  # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#5
  def attr_internal_reader(*attrs); end

  # Declares an attribute writer backed by an internally-named instance variable.
  #
  # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#10
  def attr_internal_writer(*attrs); end

  # Defines both class and instance accessors for class attributes.
  # All class and instance methods created will be public, even if
  # this method is called with a private or protected access modifier.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   HairColors.hair_colors = [:brown, :black, :blonde, :red]
  #   HairColors.hair_colors # => [:brown, :black, :blonde, :red]
  #   Person.new.hair_colors # => [:brown, :black, :blonde, :red]
  #
  # If a subclass changes the value then that would also change the value for
  # parent class. Similarly if parent class changes the value then that would
  # change the value of subclasses too.
  #
  #   class Citizen < Person
  #   end
  #
  #   Citizen.new.hair_colors << :blue
  #   Person.new.hair_colors # => [:brown, :black, :blonde, :red, :blue]
  #
  # To omit the instance writer method, pass <tt>instance_writer: false</tt>.
  # To omit the instance reader method, pass <tt>instance_reader: false</tt>.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors, instance_writer: false, instance_reader: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors = [:brown]  # => NoMethodError
  #   Person.new.hair_colors             # => NoMethodError
  #
  # Or pass <tt>instance_accessor: false</tt>, to omit both instance methods.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors, instance_accessor: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors = [:brown]  # => NoMethodError
  #   Person.new.hair_colors             # => NoMethodError
  #
  # You can set a default value for the attribute.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors, default: [:brown, :black, :blonde, :red]
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.class_variable_get("@@hair_colors") # => [:brown, :black, :blonde, :red]
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors.rb#202
  def cattr_accessor(*syms, instance_reader: T.unsafe(nil), instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil), &blk); end

  # Defines a class attribute and creates a class and instance reader methods.
  # The underlying class variable is set to +nil+, if it is not previously
  # defined. All class and instance methods created will be public, even if
  # this method is called with a private or protected access modifier.
  #
  #   module HairColors
  #     mattr_reader :hair_colors
  #   end
  #
  #   HairColors.hair_colors # => nil
  #   HairColors.class_variable_set("@@hair_colors", [:brown, :black])
  #   HairColors.hair_colors # => [:brown, :black]
  #
  # The attribute name must be a valid method name in Ruby.
  #
  #   module Foo
  #     mattr_reader :"1_Badname"
  #   end
  #   # => NameError: invalid attribute name: 1_Badname
  #
  # To omit the instance reader method, pass
  # <tt>instance_reader: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   module HairColors
  #     mattr_reader :hair_colors, instance_reader: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors # => NoMethodError
  #
  # You can set a default value for the attribute.
  #
  #   module HairColors
  #     mattr_reader :hair_colors, default: [:brown, :black, :blonde, :red]
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors # => [:brown, :black, :blonde, :red]
  #
  # @raise [TypeError]
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors.rb#53
  def cattr_reader(*syms, instance_reader: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil), location: T.unsafe(nil)); end

  # Defines a class attribute and creates a class and instance writer methods to
  # allow assignment to the attribute. All class and instance methods created
  # will be public, even if this method is called with a private or protected
  # access modifier.
  #
  #   module HairColors
  #     mattr_writer :hair_colors
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   HairColors.hair_colors = [:brown, :black]
  #   Person.class_variable_get("@@hair_colors") # => [:brown, :black]
  #   Person.new.hair_colors = [:blonde, :red]
  #   HairColors.class_variable_get("@@hair_colors") # => [:blonde, :red]
  #
  # To omit the instance writer method, pass
  # <tt>instance_writer: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   module HairColors
  #     mattr_writer :hair_colors, instance_writer: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors = [:blonde, :red] # => NoMethodError
  #
  # You can set a default value for the attribute.
  #
  #   module HairColors
  #     mattr_writer :hair_colors, default: [:brown, :black, :blonde, :red]
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.class_variable_get("@@hair_colors") # => [:brown, :black, :blonde, :red]
  #
  # @raise [TypeError]
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors.rb#117
  def cattr_writer(*syms, instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil), location: T.unsafe(nil)); end

  # Provides a +delegate+ class method to easily expose contained objects'
  # public methods as your own.
  #
  # ==== Options
  # * <tt>:to</tt> - Specifies the target object name as a symbol or string
  # * <tt>:prefix</tt> - Prefixes the new method with the target name or a custom prefix
  # * <tt>:allow_nil</tt> - If set to true, prevents a +Module::DelegationError+
  #   from being raised
  # * <tt>:private</tt> - If set to true, changes method visibility to private
  #
  # The macro receives one or more method names (specified as symbols or
  # strings) and the name of the target object via the <tt>:to</tt> option
  # (also a symbol or string).
  #
  # Delegation is particularly useful with Active Record associations:
  #
  #   class Greeter < ActiveRecord::Base
  #     def hello
  #       'hello'
  #     end
  #
  #     def goodbye
  #       'goodbye'
  #     end
  #   end
  #
  #   class Foo < ActiveRecord::Base
  #     belongs_to :greeter
  #     delegate :hello, to: :greeter
  #   end
  #
  #   Foo.new.hello   # => "hello"
  #   Foo.new.goodbye # => NoMethodError: undefined method `goodbye' for #<Foo:0x1af30c>
  #
  # Multiple delegates to the same target are allowed:
  #
  #   class Foo < ActiveRecord::Base
  #     belongs_to :greeter
  #     delegate :hello, :goodbye, to: :greeter
  #   end
  #
  #   Foo.new.goodbye # => "goodbye"
  #
  # Methods can be delegated to instance variables, class variables, or constants
  # by providing them as a symbols:
  #
  #   class Foo
  #     CONSTANT_ARRAY = [0,1,2,3]
  #     @@class_array  = [4,5,6,7]
  #
  #     def initialize
  #       @instance_array = [8,9,10,11]
  #     end
  #     delegate :sum, to: :CONSTANT_ARRAY
  #     delegate :min, to: :@@class_array
  #     delegate :max, to: :@instance_array
  #   end
  #
  #   Foo.new.sum # => 6
  #   Foo.new.min # => 4
  #   Foo.new.max # => 11
  #
  # It's also possible to delegate a method to the class by using +:class+:
  #
  #   class Foo
  #     def self.hello
  #       "world"
  #     end
  #
  #     delegate :hello, to: :class
  #   end
  #
  #   Foo.new.hello # => "world"
  #
  # Delegates can optionally be prefixed using the <tt>:prefix</tt> option. If the value
  # is <tt>true</tt>, the delegate methods are prefixed with the name of the object being
  # delegated to.
  #
  #   Person = Struct.new(:name, :address)
  #
  #   class Invoice < Struct.new(:client)
  #     delegate :name, :address, to: :client, prefix: true
  #   end
  #
  #   john_doe = Person.new('John Doe', 'Vimmersvej 13')
  #   invoice = Invoice.new(john_doe)
  #   invoice.client_name    # => "John Doe"
  #   invoice.client_address # => "Vimmersvej 13"
  #
  # It is also possible to supply a custom prefix.
  #
  #   class Invoice < Struct.new(:client)
  #     delegate :name, :address, to: :client, prefix: :customer
  #   end
  #
  #   invoice = Invoice.new(john_doe)
  #   invoice.customer_name    # => 'John Doe'
  #   invoice.customer_address # => 'Vimmersvej 13'
  #
  # The delegated methods are public by default.
  # Pass <tt>private: true</tt> to change that.
  #
  #   class User < ActiveRecord::Base
  #     has_one :profile
  #     delegate :first_name, to: :profile
  #     delegate :date_of_birth, to: :profile, private: true
  #
  #     def age
  #       Date.today.year - date_of_birth.year
  #     end
  #   end
  #
  #   User.new.first_name # => "Tomas"
  #   User.new.date_of_birth # => NoMethodError: private method `date_of_birth' called for #<User:0x00000008221340>
  #   User.new.age # => 2
  #
  # If the target is +nil+ and does not respond to the delegated method a
  # +Module::DelegationError+ is raised. If you wish to instead return +nil+,
  # use the <tt>:allow_nil</tt> option.
  #
  #   class User < ActiveRecord::Base
  #     has_one :profile
  #     delegate :age, to: :profile
  #   end
  #
  #   User.new.age
  #   # => Module::DelegationError: User#age delegated to profile.age, but profile is nil
  #
  # But if not having a profile yet is fine and should not be an error
  # condition:
  #
  #   class User < ActiveRecord::Base
  #     has_one :profile
  #     delegate :age, to: :profile, allow_nil: true
  #   end
  #
  #   User.new.age # nil
  #
  # Note that if the target is not +nil+ then the call is attempted regardless of the
  # <tt>:allow_nil</tt> option, and thus an exception is still raised if said object
  # does not respond to the method:
  #
  #   class Foo
  #     def initialize(bar)
  #       @bar = bar
  #     end
  #
  #     delegate :name, to: :@bar, allow_nil: true
  #   end
  #
  #   Foo.new("Bar").name # raises NoMethodError: undefined method `name'
  #
  # The target method must be public, otherwise it will raise +NoMethodError+.
  #
  # source://activesupport//lib/active_support/core_ext/module/delegation.rb#171
  def delegate(*methods, to: T.unsafe(nil), prefix: T.unsafe(nil), allow_nil: T.unsafe(nil), private: T.unsafe(nil)); end

  # When building decorators, a common pattern may emerge:
  #
  #   class Partition
  #     def initialize(event)
  #       @event = event
  #     end
  #
  #     def person
  #       detail.person || creator
  #     end
  #
  #     private
  #       def respond_to_missing?(name, include_private = false)
  #         @event.respond_to?(name, include_private)
  #       end
  #
  #       def method_missing(method, *args, &block)
  #         @event.send(method, *args, &block)
  #       end
  #   end
  #
  # With <tt>Module#delegate_missing_to</tt>, the above is condensed to:
  #
  #   class Partition
  #     delegate_missing_to :@event
  #
  #     def initialize(event)
  #       @event = event
  #     end
  #
  #     def person
  #       detail.person || creator
  #     end
  #   end
  #
  # The target can be anything callable within the object, e.g. instance
  # variables, methods, constants, etc.
  #
  # The delegated method must be public on the target, otherwise it will
  # raise +DelegationError+. If you wish to instead return +nil+,
  # use the <tt>:allow_nil</tt> option.
  #
  # The <tt>marshal_dump</tt> and <tt>_dump</tt> methods are exempt from
  # delegation due to possible interference when calling
  # <tt>Marshal.dump(object)</tt>, should the delegation target method
  # of <tt>object</tt> add or remove instance variables.
  #
  # source://activesupport//lib/active_support/core_ext/module/delegation.rb#289
  def delegate_missing_to(target, allow_nil: T.unsafe(nil)); end

  # deprecate :foo
  #   deprecate bar: 'message'
  #   deprecate :foo, :bar, baz: 'warning!', qux: 'gone!'
  #
  # You can also use custom deprecator instance:
  #
  #   deprecate :foo, deprecator: MyLib::Deprecator.new
  #   deprecate :foo, bar: "warning!", deprecator: MyLib::Deprecator.new
  #
  # \Custom deprecators must respond to <tt>deprecation_warning(deprecated_method_name, message, caller_backtrace)</tt>
  # method where you can implement your custom warning behavior.
  #
  #   class MyLib::Deprecator
  #     def deprecation_warning(deprecated_method_name, message, caller_backtrace = nil)
  #       message = "#{deprecated_method_name} is deprecated and will be removed from MyLibrary | #{message}"
  #       Kernel.warn message
  #     end
  #   end
  #
  # source://activesupport//lib/active_support/core_ext/module/deprecation.rb#22
  def deprecate(*method_names); end

  # Defines both class and instance accessors for class attributes.
  # All class and instance methods created will be public, even if
  # this method is called with a private or protected access modifier.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   HairColors.hair_colors = [:brown, :black, :blonde, :red]
  #   HairColors.hair_colors # => [:brown, :black, :blonde, :red]
  #   Person.new.hair_colors # => [:brown, :black, :blonde, :red]
  #
  # If a subclass changes the value then that would also change the value for
  # parent class. Similarly if parent class changes the value then that would
  # change the value of subclasses too.
  #
  #   class Citizen < Person
  #   end
  #
  #   Citizen.new.hair_colors << :blue
  #   Person.new.hair_colors # => [:brown, :black, :blonde, :red, :blue]
  #
  # To omit the instance writer method, pass <tt>instance_writer: false</tt>.
  # To omit the instance reader method, pass <tt>instance_reader: false</tt>.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors, instance_writer: false, instance_reader: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors = [:brown]  # => NoMethodError
  #   Person.new.hair_colors             # => NoMethodError
  #
  # Or pass <tt>instance_accessor: false</tt>, to omit both instance methods.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors, instance_accessor: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors = [:brown]  # => NoMethodError
  #   Person.new.hair_colors             # => NoMethodError
  #
  # You can set a default value for the attribute.
  #
  #   module HairColors
  #     mattr_accessor :hair_colors, default: [:brown, :black, :blonde, :red]
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.class_variable_get("@@hair_colors") # => [:brown, :black, :blonde, :red]
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors.rb#202
  def mattr_accessor(*syms, instance_reader: T.unsafe(nil), instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil), &blk); end

  # Defines a class attribute and creates a class and instance reader methods.
  # The underlying class variable is set to +nil+, if it is not previously
  # defined. All class and instance methods created will be public, even if
  # this method is called with a private or protected access modifier.
  #
  #   module HairColors
  #     mattr_reader :hair_colors
  #   end
  #
  #   HairColors.hair_colors # => nil
  #   HairColors.class_variable_set("@@hair_colors", [:brown, :black])
  #   HairColors.hair_colors # => [:brown, :black]
  #
  # The attribute name must be a valid method name in Ruby.
  #
  #   module Foo
  #     mattr_reader :"1_Badname"
  #   end
  #   # => NameError: invalid attribute name: 1_Badname
  #
  # To omit the instance reader method, pass
  # <tt>instance_reader: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   module HairColors
  #     mattr_reader :hair_colors, instance_reader: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors # => NoMethodError
  #
  # You can set a default value for the attribute.
  #
  #   module HairColors
  #     mattr_reader :hair_colors, default: [:brown, :black, :blonde, :red]
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors # => [:brown, :black, :blonde, :red]
  #
  # @raise [TypeError]
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors.rb#53
  def mattr_reader(*syms, instance_reader: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil), location: T.unsafe(nil)); end

  # Defines a class attribute and creates a class and instance writer methods to
  # allow assignment to the attribute. All class and instance methods created
  # will be public, even if this method is called with a private or protected
  # access modifier.
  #
  #   module HairColors
  #     mattr_writer :hair_colors
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   HairColors.hair_colors = [:brown, :black]
  #   Person.class_variable_get("@@hair_colors") # => [:brown, :black]
  #   Person.new.hair_colors = [:blonde, :red]
  #   HairColors.class_variable_get("@@hair_colors") # => [:blonde, :red]
  #
  # To omit the instance writer method, pass
  # <tt>instance_writer: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   module HairColors
  #     mattr_writer :hair_colors, instance_writer: false
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.new.hair_colors = [:blonde, :red] # => NoMethodError
  #
  # You can set a default value for the attribute.
  #
  #   module HairColors
  #     mattr_writer :hair_colors, default: [:brown, :black, :blonde, :red]
  #   end
  #
  #   class Person
  #     include HairColors
  #   end
  #
  #   Person.class_variable_get("@@hair_colors") # => [:brown, :black, :blonde, :red]
  #
  # @raise [TypeError]
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors.rb#117
  def mattr_writer(*syms, instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil), location: T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/module/redefine_method.rb#30
  def method_visibility(method); end

  # Returns the module which contains this one according to its name.
  #
  #   module M
  #     module N
  #     end
  #   end
  #   X = M::N
  #
  #   M::N.module_parent # => M
  #   X.module_parent    # => M
  #
  # The parent of top-level and anonymous modules is Object.
  #
  #   M.module_parent          # => Object
  #   Module.new.module_parent # => Object
  #
  # source://activesupport//lib/active_support/core_ext/module/introspection.rb#35
  def module_parent; end

  # Returns the name of the module containing this one.
  #
  #   M::N.module_parent_name # => "M"
  #
  # source://activesupport//lib/active_support/core_ext/module/introspection.rb#10
  def module_parent_name; end

  # Returns all the parents of this module according to its name, ordered from
  # nested outwards. The receiver is not contained within the result.
  #
  #   module M
  #     module N
  #     end
  #   end
  #   X = M::N
  #
  #   M.module_parents    # => [Object]
  #   M::N.module_parents # => [M, Object]
  #   X.module_parents    # => [M, Object]
  #
  # source://activesupport//lib/active_support/core_ext/module/introspection.rb#51
  def module_parents; end

  # Replaces the existing method definition, if there is one, with the passed
  # block as its body.
  #
  # source://activesupport//lib/active_support/core_ext/module/redefine_method.rb#17
  def redefine_method(method, &block); end

  # Replaces the existing singleton method definition, if there is one, with
  # the passed block as its body.
  #
  # source://activesupport//lib/active_support/core_ext/module/redefine_method.rb#26
  def redefine_singleton_method(method, &block); end

  # Removes the named method, if it exists.
  #
  # source://activesupport//lib/active_support/core_ext/module/remove_method.rb#7
  def remove_possible_method(method); end

  # Removes the named singleton method, if it exists.
  #
  # source://activesupport//lib/active_support/core_ext/module/remove_method.rb#14
  def remove_possible_singleton_method(method); end

  # Marks the named method as intended to be redefined, if it exists.
  # Suppresses the Ruby method redefinition warning. Prefer
  # #redefine_method where possible.
  #
  # source://activesupport//lib/active_support/core_ext/module/redefine_method.rb#7
  def silence_redefinition_of_method(method); end

  # Defines both class and instance accessors for class attributes.
  #
  #   class Account
  #     thread_mattr_accessor :user
  #   end
  #
  #   Account.user = "DHH"
  #   Account.user     # => "DHH"
  #   Account.new.user # => "DHH"
  #
  # Unlike +mattr_accessor+, values are *not* shared with subclasses or parent classes.
  # If a subclass changes the value, the parent class' value is not changed.
  # If the parent class changes the value, the value of subclasses is not changed.
  #
  #   class Customer < Account
  #   end
  #
  #   Account.user   # => "DHH"
  #   Customer.user  # => nil
  #   Customer.user  = "Rafael"
  #   Customer.user  # => "Rafael"
  #   Account.user   # => "DHH"
  #
  # To omit the instance writer method, pass <tt>instance_writer: false</tt>.
  # To omit the instance reader method, pass <tt>instance_reader: false</tt>.
  #
  #   class Current
  #     thread_mattr_accessor :user, instance_writer: false, instance_reader: false
  #   end
  #
  #   Current.new.user = "DHH"  # => NoMethodError
  #   Current.new.user          # => NoMethodError
  #
  # Or pass <tt>instance_accessor: false</tt>, to omit both instance methods.
  #
  #   class Current
  #     thread_mattr_accessor :user, instance_accessor: false
  #   end
  #
  #   Current.new.user = "DHH"  # => NoMethodError
  #   Current.new.user          # => NoMethodError
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#152
  def thread_cattr_accessor(*syms, instance_reader: T.unsafe(nil), instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil)); end

  # Defines a per-thread class attribute and creates class and instance reader methods.
  # The underlying per-thread class variable is set to +nil+, if it is not previously defined.
  #
  #   module Current
  #     thread_mattr_reader :user
  #   end
  #
  #   Current.user = "DHH"
  #   Current.user # => "DHH"
  #   Thread.new { Current.user }.value # => nil
  #
  # The attribute name must be a valid method name in Ruby.
  #
  #   module Foo
  #     thread_mattr_reader :"1_Badname"
  #   end
  #   # => NameError: invalid attribute name: 1_Badname
  #
  # To omit the instance reader method, pass
  # <tt>instance_reader: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   class Current
  #     thread_mattr_reader :user, instance_reader: false
  #   end
  #
  #   Current.new.user # => NoMethodError
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#41
  def thread_cattr_reader(*syms, instance_reader: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil)); end

  # Defines a per-thread class attribute and creates a class and instance writer methods to
  # allow assignment to the attribute.
  #
  #   module Current
  #     thread_mattr_writer :user
  #   end
  #
  #   Current.user = "DHH"
  #   Thread.current[:attr_Current_user] # => "DHH"
  #
  # To omit the instance writer method, pass
  # <tt>instance_writer: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   class Current
  #     thread_mattr_writer :user, instance_writer: false
  #   end
  #
  #   Current.new.user = "DHH" # => NoMethodError
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#85
  def thread_cattr_writer(*syms, instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil)); end

  # Defines both class and instance accessors for class attributes.
  #
  #   class Account
  #     thread_mattr_accessor :user
  #   end
  #
  #   Account.user = "DHH"
  #   Account.user     # => "DHH"
  #   Account.new.user # => "DHH"
  #
  # Unlike +mattr_accessor+, values are *not* shared with subclasses or parent classes.
  # If a subclass changes the value, the parent class' value is not changed.
  # If the parent class changes the value, the value of subclasses is not changed.
  #
  #   class Customer < Account
  #   end
  #
  #   Account.user   # => "DHH"
  #   Customer.user  # => nil
  #   Customer.user  = "Rafael"
  #   Customer.user  # => "Rafael"
  #   Account.user   # => "DHH"
  #
  # To omit the instance writer method, pass <tt>instance_writer: false</tt>.
  # To omit the instance reader method, pass <tt>instance_reader: false</tt>.
  #
  #   class Current
  #     thread_mattr_accessor :user, instance_writer: false, instance_reader: false
  #   end
  #
  #   Current.new.user = "DHH"  # => NoMethodError
  #   Current.new.user          # => NoMethodError
  #
  # Or pass <tt>instance_accessor: false</tt>, to omit both instance methods.
  #
  #   class Current
  #     thread_mattr_accessor :user, instance_accessor: false
  #   end
  #
  #   Current.new.user = "DHH"  # => NoMethodError
  #   Current.new.user          # => NoMethodError
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#152
  def thread_mattr_accessor(*syms, instance_reader: T.unsafe(nil), instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil)); end

  # Defines a per-thread class attribute and creates class and instance reader methods.
  # The underlying per-thread class variable is set to +nil+, if it is not previously defined.
  #
  #   module Current
  #     thread_mattr_reader :user
  #   end
  #
  #   Current.user = "DHH"
  #   Current.user # => "DHH"
  #   Thread.new { Current.user }.value # => nil
  #
  # The attribute name must be a valid method name in Ruby.
  #
  #   module Foo
  #     thread_mattr_reader :"1_Badname"
  #   end
  #   # => NameError: invalid attribute name: 1_Badname
  #
  # To omit the instance reader method, pass
  # <tt>instance_reader: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   class Current
  #     thread_mattr_reader :user, instance_reader: false
  #   end
  #
  #   Current.new.user # => NoMethodError
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#41
  def thread_mattr_reader(*syms, instance_reader: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil)); end

  # Defines a per-thread class attribute and creates a class and instance writer methods to
  # allow assignment to the attribute.
  #
  #   module Current
  #     thread_mattr_writer :user
  #   end
  #
  #   Current.user = "DHH"
  #   Thread.current[:attr_Current_user] # => "DHH"
  #
  # To omit the instance writer method, pass
  # <tt>instance_writer: false</tt> or <tt>instance_accessor: false</tt>.
  #
  #   class Current
  #     thread_mattr_writer :user, instance_writer: false
  #   end
  #
  #   Current.new.user = "DHH" # => NoMethodError
  #
  # source://activesupport//lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#85
  def thread_mattr_writer(*syms, instance_writer: T.unsafe(nil), instance_accessor: T.unsafe(nil), default: T.unsafe(nil)); end

  private

  # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#30
  def attr_internal_define(attr_name, type); end

  # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#26
  def attr_internal_ivar_name(attr); end

  class << self
    # Returns the value of attribute attr_internal_naming_format.
    #
    # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#22
    def attr_internal_naming_format; end

    # Sets the attribute attr_internal_naming_format
    #
    # @param value the value to set the attribute attr_internal_naming_format to.
    #
    # source://activesupport//lib/active_support/core_ext/module/attr_internal.rb#22
    def attr_internal_naming_format=(_arg0); end
  end
end

# = Bite-sized separation of concerns
#
# We often find ourselves with a medium-sized chunk of behavior that we'd
# like to extract, but only mix in to a single class.
#
# Extracting a plain old Ruby object to encapsulate it and collaborate or
# delegate to the original object is often a good choice, but when there's
# no additional state to encapsulate or we're making DSL-style declarations
# about the parent class, introducing new collaborators can obfuscate rather
# than simplify.
#
# The typical route is to just dump everything in a monolithic class, perhaps
# with a comment, as a least-bad alternative. Using modules in separate files
# means tedious sifting to get a big-picture view.
#
# = Dissatisfying ways to separate small concerns
#
# == Using comments:
#
#   class Todo < ApplicationRecord
#     # Other todo implementation
#     # ...
#
#     ## Event tracking
#     has_many :events
#
#     before_create :track_creation
#
#     private
#       def track_creation
#         # ...
#       end
#   end
#
# == With an inline module:
#
# Noisy syntax.
#
#   class Todo < ApplicationRecord
#     # Other todo implementation
#     # ...
#
#     module EventTracking
#       extend ActiveSupport::Concern
#
#       included do
#         has_many :events
#         before_create :track_creation
#       end
#
#       private
#         def track_creation
#           # ...
#         end
#     end
#     include EventTracking
#   end
#
# == Mix-in noise exiled to its own file:
#
# Once our chunk of behavior starts pushing the scroll-to-understand-it
# boundary, we give in and move it to a separate file. At this size, the
# increased overhead can be a reasonable tradeoff even if it reduces our
# at-a-glance perception of how things work.
#
#   class Todo < ApplicationRecord
#     # Other todo implementation
#     # ...
#
#     include TodoEventTracking
#   end
#
# = Introducing Module#concerning
#
# By quieting the mix-in noise, we arrive at a natural, low-ceremony way to
# separate bite-sized concerns.
#
#   class Todo < ApplicationRecord
#     # Other todo implementation
#     # ...
#
#     concerning :EventTracking do
#       included do
#         has_many :events
#         before_create :track_creation
#       end
#
#       private
#         def track_creation
#           # ...
#         end
#     end
#   end
#
#   Todo.ancestors
#   # => [Todo, Todo::EventTracking, ApplicationRecord, Object]
#
# This small step has some wonderful ripple effects. We can
# * grok the behavior of our class in one glance,
# * clean up monolithic junk-drawer classes by separating their concerns, and
# * stop leaning on protected/private for crude "this is internal stuff" modularity.
#
# === Prepending concerning
#
# <tt>concerning</tt> supports a <tt>prepend: true</tt> argument which will <tt>prepend</tt> the
# concern instead of using <tt>include</tt> for it.
#
# source://activesupport//lib/active_support/core_ext/module/concerning.rb#112
module Module::Concerning
  # A low-cruft shortcut to define a concern.
  #
  #   concern :EventTracking do
  #     ...
  #   end
  #
  # is equivalent to
  #
  #   module EventTracking
  #     extend ActiveSupport::Concern
  #
  #     ...
  #   end
  #
  # source://activesupport//lib/active_support/core_ext/module/concerning.rb#132
  def concern(topic, &module_definition); end

  # Define a new concern and mix it in.
  #
  # source://activesupport//lib/active_support/core_ext/module/concerning.rb#114
  def concerning(topic, prepend: T.unsafe(nil), &block); end
end

# source://activesupport//lib/active_support/core_ext/module/delegation.rb#13
Module::DELEGATION_RESERVED_KEYWORDS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/core_ext/module/delegation.rb#14
Module::DELEGATION_RESERVED_METHOD_NAMES = T.let(T.unsafe(nil), Set)

# Error generated by +delegate+ when a method is called on +nil+ and +allow_nil+
# option is not used.
#
# source://activesupport//lib/active_support/core_ext/module/delegation.rb#8
class Module::DelegationError < ::NoMethodError; end

# source://activesupport//lib/active_support/core_ext/module/delegation.rb#10
Module::RUBY_RESERVED_KEYWORDS = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/core_ext/name_error.rb#3
class NameError < ::StandardError
  include ::ErrorHighlight::CoreExt
  include ::DidYouMean::Correctable

  # Extract the name of the missing constant from the exception message.
  #
  #   begin
  #     HelloWorld
  #   rescue NameError => e
  #     e.missing_name
  #   end
  #   # => "HelloWorld"
  #
  # source://activesupport//lib/active_support/core_ext/name_error.rb#12
  def missing_name; end

  # Was this exception raised because the given name was missing?
  #
  #   begin
  #     HelloWorld
  #   rescue NameError => e
  #     e.missing_name?("HelloWorld")
  #   end
  #   # => true
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/name_error.rb#44
  def missing_name?(name); end

  private

  # source://activesupport//lib/active_support/core_ext/name_error.rb#56
  def real_mod_name(mod); end
end

# source://activesupport//lib/active_support/core_ext/name_error.rb#53
NameError::UNBOUND_METHOD_MODULE_NAME = T.let(T.unsafe(nil), UnboundMethod)

# source://activesupport//lib/active_support/core_ext/object/blank.rb#50
class NilClass
  # source://activesupport//lib/active_support/core_ext/object/json.rb#87
  def as_json(options = T.unsafe(nil)); end

  # +nil+ is blank:
  #
  #   nil.blank? # => true
  #
  # @return [true]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#56
  def blank?; end

  # Returns +self+.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#20
  def to_param; end

  # Calling +try+ on +nil+ always returns +nil+.
  # It becomes especially helpful when navigating through associations that may return +nil+.
  #
  #   nil.try(:name) # => nil
  #
  # Without +try+
  #   @person && @person.children.any? && @person.children.first.name
  #
  # With +try+
  #   @person.try(:children).try(:first).try(:name)
  #
  # source://activesupport//lib/active_support/core_ext/object/try.rb#148
  def try(*_arg0); end

  # Calling +try!+ on +nil+ always returns +nil+.
  #
  #   nil.try!(:name) # => nil
  #
  # source://activesupport//lib/active_support/core_ext/object/try.rb#155
  def try!(*_arg0); end
end

# source://activesupport//lib/active_support/core_ext/object/blank.rb#134
class Numeric
  include ::Comparable

  # source://activesupport//lib/active_support/core_ext/object/json.rb#105
  def as_json(options = T.unsafe(nil)); end

  # No number is blank:
  #
  #   1.blank? # => false
  #   0.blank? # => false
  #
  # @return [false]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#141
  def blank?; end

  # Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes
  #
  #   2.bytes # => 2
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#14
  def byte; end

  # Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes
  #
  #   2.bytes # => 2
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#14
  def bytes; end

  # Returns a Duration instance matching the number of days provided.
  #
  #   2.days # => 2 days
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#37
  def day; end

  # Returns a Duration instance matching the number of days provided.
  #
  #   2.days # => 2 days
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#37
  def days; end

  # Returns the number of bytes equivalent to the exabytes provided.
  #
  #   2.exabytes # => 2_305_843_009_213_693_952
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#62
  def exabyte; end

  # Returns the number of bytes equivalent to the exabytes provided.
  #
  #   2.exabytes # => 2_305_843_009_213_693_952
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#62
  def exabytes; end

  # Returns a Duration instance matching the number of fortnights provided.
  #
  #   2.fortnights # => 4 weeks
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#53
  def fortnight; end

  # Returns a Duration instance matching the number of fortnights provided.
  #
  #   2.fortnights # => 4 weeks
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#53
  def fortnights; end

  # Returns the number of bytes equivalent to the gigabytes provided.
  #
  #   2.gigabytes # => 2_147_483_648
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#38
  def gigabyte; end

  # Returns the number of bytes equivalent to the gigabytes provided.
  #
  #   2.gigabytes # => 2_147_483_648
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#38
  def gigabytes; end

  # Returns a Duration instance matching the number of hours provided.
  #
  #   2.hours # => 2 hours
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#29
  def hour; end

  # Returns a Duration instance matching the number of hours provided.
  #
  #   2.hours # => 2 hours
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#29
  def hours; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#156
  def html_safe?; end

  # Returns the number of milliseconds equivalent to the seconds provided.
  # Used with the standard time durations.
  #
  #   2.in_milliseconds # => 2000
  #   1.hour.in_milliseconds # => 3600000
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#63
  def in_milliseconds; end

  # Returns the number of bytes equivalent to the kilobytes provided.
  #
  #   2.kilobytes # => 2048
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#22
  def kilobyte; end

  # Returns the number of bytes equivalent to the kilobytes provided.
  #
  #   2.kilobytes # => 2048
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#22
  def kilobytes; end

  # Returns the number of bytes equivalent to the megabytes provided.
  #
  #   2.megabytes # => 2_097_152
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#30
  def megabyte; end

  # Returns the number of bytes equivalent to the megabytes provided.
  #
  #   2.megabytes # => 2_097_152
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#30
  def megabytes; end

  # Returns a Duration instance matching the number of minutes provided.
  #
  #   2.minutes # => 2 minutes
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#21
  def minute; end

  # Returns a Duration instance matching the number of minutes provided.
  #
  #   2.minutes # => 2 minutes
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#21
  def minutes; end

  # Returns the number of bytes equivalent to the petabytes provided.
  #
  #   2.petabytes # => 2_251_799_813_685_248
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#54
  def petabyte; end

  # Returns the number of bytes equivalent to the petabytes provided.
  #
  #   2.petabytes # => 2_251_799_813_685_248
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#54
  def petabytes; end

  # Returns a Duration instance matching the number of seconds provided.
  #
  #   2.seconds # => 2 seconds
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#13
  def second; end

  # Returns a Duration instance matching the number of seconds provided.
  #
  #   2.seconds # => 2 seconds
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#13
  def seconds; end

  # Returns the number of bytes equivalent to the terabytes provided.
  #
  #   2.terabytes # => 2_199_023_255_552
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#46
  def terabyte; end

  # Returns the number of bytes equivalent to the terabytes provided.
  #
  #   2.terabytes # => 2_199_023_255_552
  #
  # source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#46
  def terabytes; end

  # Returns a Duration instance matching the number of weeks provided.
  #
  #   2.weeks # => 2 weeks
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#45
  def week; end

  # Returns a Duration instance matching the number of weeks provided.
  #
  #   2.weeks # => 2 weeks
  #
  # source://activesupport//lib/active_support/core_ext/numeric/time.rb#45
  def weeks; end
end

# source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#9
Numeric::EXABYTE = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#6
Numeric::GIGABYTE = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#4
Numeric::KILOBYTE = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#5
Numeric::MEGABYTE = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#8
Numeric::PETABYTE = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/numeric/bytes.rb#7
Numeric::TERABYTE = T.let(T.unsafe(nil), Integer)

# --
# Most objects are cloneable, but not all. For example you can't dup methods:
#
#   method(:puts).dup # => TypeError: allocator undefined for Method
#
# Classes may signal their instances are not duplicable removing +dup+/+clone+
# or raising exceptions from them. So, to dup an arbitrary object you normally
# use an optimistic approach and are ready to catch an exception, say:
#
#   arbitrary_object.dup rescue object
#
# Rails dups objects in a few critical spots where they are not that arbitrary.
# That rescue is very expensive (like 40 times slower than a predicate), and it
# is often triggered.
#
# That's why we hardcode the following cases and check duplicable? instead of
# using that rescue idiom.
# ++
#
# source://activesupport//lib/active_support/core_ext/object/blank.rb#5
class Object < ::BasicObject
  include ::ActiveSupport::ToJsonWithActiveSupportEncoder
  include ::ActiveSupport::Dependencies::RequireDependency
  include ::Kernel
  include ::PP::ObjectMixin
  include ::ActiveSupport::Tryable

  # Provides a way to check whether some class acts like some other class based on the existence of
  # an appropriately-named marker method.
  #
  # A class that provides the same interface as <tt>SomeClass</tt> may define a marker method named
  # <tt>acts_like_some_class?</tt> to signal its compatibility to callers of
  # <tt>acts_like?(:some_class)</tt>.
  #
  # For example, Active Support extends <tt>Date</tt> to define an <tt>acts_like_date?</tt> method,
  # and extends <tt>Time</tt> to define <tt>acts_like_time?</tt>. As a result, developers can call
  # <tt>x.acts_like?(:time)</tt> and <tt>x.acts_like?(:date)</tt> to test duck-type compatibility,
  # and classes that are able to act like <tt>Time</tt> can also define an <tt>acts_like_time?</tt>
  # method to interoperate.
  #
  # Note that the marker method is only expected to exist. It isn't called, so its body or return
  # value are irrelevant.
  #
  # ==== Example: A class that provides the same interface as <tt>String</tt>
  #
  # This class may define:
  #
  #   class Stringish
  #     def acts_like_string?
  #     end
  #   end
  #
  # Then client code can query for duck-type-safeness this way:
  #
  #   Stringish.new.acts_like?(:string) # => true
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/object/acts_like.rb#33
  def acts_like?(duck); end

  # source://activesupport//lib/active_support/core_ext/object/json.rb#59
  def as_json(options = T.unsafe(nil)); end

  # An object is blank if it's false, empty, or a whitespace string.
  # For example, +nil+, '', '   ', [], {}, and +false+ are all blank.
  #
  # This simplifies
  #
  #   !address || address.empty?
  #
  # to
  #
  #   address.blank?
  #
  # @return [true, false]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#18
  def blank?; end

  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#150
  def html_safe?; end

  # Returns true if this object is included in the argument. Argument must be
  # any object which responds to +#include?+. Usage:
  #
  #   characters = ["Konata", "Kagami", "Tsukasa"]
  #   "Konata".in?(characters) # => true
  #
  # This will throw an +ArgumentError+ if the argument doesn't respond
  # to +#include?+.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/object/inclusion.rb#12
  def in?(another_object); end

  # Returns a hash with string keys that maps instance variable names without "@" to their
  # corresponding values.
  #
  #   class C
  #     def initialize(x, y)
  #       @x, @y = x, y
  #     end
  #   end
  #
  #   C.new(0, 1).instance_values # => {"x" => 0, "y" => 1}
  #
  # source://activesupport//lib/active_support/core_ext/object/instance_variables.rb#14
  def instance_values; end

  # Returns an array of instance variable names as strings including "@".
  #
  #   class C
  #     def initialize(x, y)
  #       @x, @y = x, y
  #     end
  #   end
  #
  #   C.new(0, 1).instance_variable_names # => ["@y", "@x"]
  #
  # source://activesupport//lib/active_support/core_ext/object/instance_variables.rb#27
  def instance_variable_names; end

  # Returns the receiver if it's present otherwise returns +nil+.
  # <tt>object.presence</tt> is equivalent to
  #
  #    object.present? ? object : nil
  #
  # For example, something like
  #
  #   state   = params[:state]   if params[:state].present?
  #   country = params[:country] if params[:country].present?
  #   region  = state || country || 'US'
  #
  # becomes
  #
  #   region = params[:state].presence || params[:country].presence || 'US'
  #
  # @return [Object]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#45
  def presence; end

  # Returns the receiver if it's included in the argument otherwise returns +nil+.
  # Argument must be any object which responds to +#include?+. Usage:
  #
  #   params[:bucket_type].presence_in %w( project calendar )
  #
  # This will throw an +ArgumentError+ if the argument doesn't respond to +#include?+.
  #
  # @return [Object]
  #
  # source://activesupport//lib/active_support/core_ext/object/inclusion.rb#26
  def presence_in(another_object); end

  # An object is present if it's not blank.
  #
  # @return [true, false]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#25
  def present?; end

  # Alias of <tt>to_s</tt>.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#7
  def to_param; end

  # Converts an object into a string suitable for use as a URL query string,
  # using the given <tt>key</tt> as the param name.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#13
  def to_query(key); end

  # An elegant way to factor duplication out of options passed to a series of
  # method calls. Each method called in the block, with the block variable as
  # the receiver, will have its options merged with the default +options+ hash
  # provided. Each method called on the block variable must take an options
  # hash as its final argument.
  #
  # Without <tt>with_options</tt>, this code contains duplication:
  #
  #   class Account < ActiveRecord::Base
  #     has_many :customers, dependent: :destroy
  #     has_many :products,  dependent: :destroy
  #     has_many :invoices,  dependent: :destroy
  #     has_many :expenses,  dependent: :destroy
  #   end
  #
  # Using <tt>with_options</tt>, we can remove the duplication:
  #
  #   class Account < ActiveRecord::Base
  #     with_options dependent: :destroy do |assoc|
  #       assoc.has_many :customers
  #       assoc.has_many :products
  #       assoc.has_many :invoices
  #       assoc.has_many :expenses
  #     end
  #   end
  #
  # It can also be used with an explicit receiver:
  #
  #   I18n.with_options locale: user.locale, scope: 'newsletter' do |i18n|
  #     subject i18n.t :subject
  #     body    i18n.t :body, user_name: user.name
  #   end
  #
  # When you don't pass an explicit receiver, it executes the whole block
  # in merging options context:
  #
  #   class Account < ActiveRecord::Base
  #     with_options dependent: :destroy do
  #       has_many :customers
  #       has_many :products
  #       has_many :invoices
  #       has_many :expenses
  #     end
  #   end
  #
  # <tt>with_options</tt> can also be nested since the call is forwarded to its receiver.
  #
  # NOTE: Each nesting level will merge inherited defaults in addition to their own.
  #
  #   class Post < ActiveRecord::Base
  #     with_options if: :persisted?, length: { minimum: 50 } do
  #       validates :content, if: -> { content.present? }
  #     end
  #   end
  #
  # The code is equivalent to:
  #
  #   validates :content, length: { minimum: 50 }, if: -> { content.present? }
  #
  # Hence the inherited default for +if+ key is ignored.
  #
  # NOTE: You cannot call class methods implicitly inside of +with_options+.
  # You can access these methods using the class name instead:
  #
  #   class Phone < ActiveRecord::Base
  #     enum phone_number_type: { home: 0, office: 1, mobile: 2 }
  #
  #     with_options presence: true do
  #       validates :phone_number_type, inclusion: { in: Phone.phone_number_types.keys }
  #     end
  #   end
  #
  # When the block argument is omitted, the decorated Object instance is returned:
  #
  #   module MyStyledHelpers
  #     def styled
  #       with_options style: "color: red;"
  #     end
  #   end
  #
  #   styled.link_to "I'm red", "/"
  #   # => <a href="/" style="color: red;">I'm red</a>
  #
  #   styled.button_tag "I'm red too!"
  #   # => <button style="color: red;">I'm red too!</button>
  #
  # source://activesupport//lib/active_support/core_ext/object/with_options.rb#92
  def with_options(options, &block); end
end

# source://activesupport//lib/active_support/core_ext/object/json.rb#222
class Pathname
  # source://activesupport//lib/active_support/core_ext/object/json.rb#223
  def as_json(options = T.unsafe(nil)); end
end

module Process
  extend ::ConnectionPool::ForkTracker
  extend ::ActiveSupport::ForkTracker::ModernCoreExt

  class << self
    # source://activesupport//lib/active_support/fork_tracker.rb#6
    def _fork; end
  end
end

Process::CLOCK_TAI = T.let(T.unsafe(nil), Integer)

# source://activesupport//lib/active_support/core_ext/object/json.rb#234
class Process::Status
  # source://activesupport//lib/active_support/core_ext/object/json.rb#235
  def as_json(options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/object/json.rb#151
class Range
  include ::ActiveSupport::RangeWithFormat
  include ::ActiveSupport::DeprecatedRangeWithFormat
  include ::ActiveSupport::CompareWithRange
  include ::ActiveSupport::EachTimeWithZone
  include ::Enumerable

  # source://activesupport//lib/active_support/core_ext/range/compare_range.rb#16
  def ===(value); end

  # source://activesupport//lib/active_support/core_ext/object/json.rb#152
  def as_json(options = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/range/each.rb#7
  def each(&block); end

  # source://activesupport//lib/active_support/core_ext/range/compare_range.rb#41
  def include?(value); end

  # Compare two ranges and see if they overlap each other
  #  (1..5).overlaps?(4..6) # => true
  #  (1..5).overlaps?(7..9) # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/range/overlaps.rb#7
  def overlaps?(other); end

  # source://activesupport//lib/active_support/core_ext/range/each.rb#12
  def step(n = T.unsafe(nil), &block); end

  # Optimize range sum to use arithmetic progression if a block is not given and
  # we have a range of numeric values.
  #
  # source://activesupport//lib/active_support/core_ext/enumerable.rb#287
  def sum(identity = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/range/deprecated_conversions.rb#6
  def to_s(format = T.unsafe(nil)); end
end

class Redis
  include ::Redis::Commands::Bitmaps
  include ::Redis::Commands::Cluster
  include ::Redis::Commands::Connection
  include ::Redis::Commands::Geo
  include ::Redis::Commands::Hashes
  include ::Redis::Commands::HyperLogLog
  include ::Redis::Commands::Keys
  include ::Redis::Commands::Lists
  include ::Redis::Commands::Pubsub
  include ::Redis::Commands::Scripting
  include ::Redis::Commands::Server
  include ::Redis::Commands::Sets
  include ::Redis::Commands::SortedSets
  include ::Redis::Commands::Streams
  include ::Redis::Commands::Strings
  include ::Redis::Commands::Transactions
  include ::ActiveSupport::Cache::ConnectionPoolLike
end

class Redis::Distributed
  include ::ActiveSupport::Cache::ConnectionPoolLike
end

# source://activesupport//lib/active_support/core_ext/object/json.rb#133
class Regexp
  # source://activesupport//lib/active_support/core_ext/object/json.rb#134
  def as_json(options = T.unsafe(nil)); end

  # Returns +true+ if the regexp has the multiline flag set.
  #
  #   (/./).multiline?  # => false
  #   (/./m).multiline? # => true
  #
  #   Regexp.new(".").multiline?                    # => false
  #   Regexp.new(".", Regexp::MULTILINE).multiline? # => true
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/regexp.rb#11
  def multiline?; end
end

# source://regexp_parser/2.8.1/lib/regexp_parser/token.rb#2
Regexp::TOKEN_KEYS = T.let(T.unsafe(nil), Array)

class Regexp::TimeoutError < ::RegexpError; end

# source://activesupport//lib/active_support/core_ext/object/duplicable.rb#53
module Singleton
  mixes_in_class_methods ::Singleton::SingletonClassMethods

  # Singleton instances are not duplicable:
  #
  #   Class.new.include(Singleton).instance.dup # TypeError (can't dup instance of singleton
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/object/duplicable.rb#57
  def duplicable?; end
end

# source://singleton/0.1.1/singleton.rb#95
Singleton::VERSION = T.let(T.unsafe(nil), String)

# String inflections define new methods on the String class to transform names for different purposes.
# For instance, you can figure out the name of a table from the name of a class.
#
#   'ScaleScore'.tableize # => "scale_scores"
#
# source://activesupport//lib/active_support/core_ext/object/blank.rb#103
class String
  include ::Comparable

  # Enables more predictable duck-typing on String-like classes. See <tt>Object#acts_like?</tt>.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/string/behavior.rb#5
  def acts_like_string?; end

  # source://activesupport//lib/active_support/core_ext/object/json.rb#93
  def as_json(options = T.unsafe(nil)); end

  # If you pass a single integer, returns a substring of one character at that
  # position. The first character of the string is at position 0, the next at
  # position 1, and so on. If a range is supplied, a substring containing
  # characters at offsets given by the range is returned. In both cases, if an
  # offset is negative, it is counted from the end of the string. Returns +nil+
  # if the initial offset falls outside the string. Returns an empty string if
  # the beginning of the range is greater than the end of the string.
  #
  #   str = "hello"
  #   str.at(0)      # => "h"
  #   str.at(1..3)   # => "ell"
  #   str.at(-2)     # => "l"
  #   str.at(-2..-1) # => "lo"
  #   str.at(5)      # => nil
  #   str.at(5..-1)  # => ""
  #
  # If a Regexp is given, the matching portion of the string is returned.
  # If a String is given, that given string is returned if it occurs in
  # the string. In both cases, +nil+ is returned if there is no match.
  #
  #   str = "hello"
  #   str.at(/lo/) # => "lo"
  #   str.at(/ol/) # => nil
  #   str.at("lo") # => "lo"
  #   str.at("ol") # => nil
  #
  # source://activesupport//lib/active_support/core_ext/string/access.rb#29
  def at(position); end

  # A string is blank if it's empty or contains whitespaces only:
  #
  #   ''.blank?       # => true
  #   '   '.blank?    # => true
  #   "\t\n\r".blank? # => true
  #   ' blah '.blank? # => false
  #
  # Unicode whitespace is supported:
  #
  #   "\u00a0".blank? # => true
  #
  # @return [true, false]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#121
  def blank?; end

  # By default, +camelize+ converts strings to UpperCamelCase. If the argument to camelize
  # is set to <tt>:lower</tt> then camelize produces lowerCamelCase.
  #
  # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
  #
  #   'active_record'.camelize                # => "ActiveRecord"
  #   'active_record'.camelize(:lower)        # => "activeRecord"
  #   'active_record/errors'.camelize         # => "ActiveRecord::Errors"
  #   'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"
  #
  # +camelize+ is also aliased as +camelcase+.
  #
  # See ActiveSupport::Inflector.camelize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#103
  def camelcase(first_letter = T.unsafe(nil)); end

  # By default, +camelize+ converts strings to UpperCamelCase. If the argument to camelize
  # is set to <tt>:lower</tt> then camelize produces lowerCamelCase.
  #
  # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
  #
  #   'active_record'.camelize                # => "ActiveRecord"
  #   'active_record'.camelize(:lower)        # => "activeRecord"
  #   'active_record/errors'.camelize         # => "ActiveRecord::Errors"
  #   'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"
  #
  # +camelize+ is also aliased as +camelcase+.
  #
  # See ActiveSupport::Inflector.camelize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#103
  def camelize(first_letter = T.unsafe(nil)); end

  # Creates a class name from a plural table name like Rails does for table names to models.
  # Note that this returns a string and not a class. (To convert to an actual class
  # follow +classify+ with +constantize+.)
  #
  #   'ham_and_eggs'.classify # => "HamAndEgg"
  #   'posts'.classify        # => "Post"
  #
  # See ActiveSupport::Inflector.classify.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#243
  def classify; end

  # +constantize+ tries to find a declared constant with the name specified
  # in the string. It raises a NameError when the name is not in CamelCase
  # or is not initialized.
  #
  #   'Module'.constantize  # => Module
  #   'Class'.constantize   # => Class
  #   'blargle'.constantize # => NameError: wrong constant name blargle
  #
  # See ActiveSupport::Inflector.constantize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#73
  def constantize; end

  # Replaces underscores with dashes in the string.
  #
  #   'puni_puni'.dasherize # => "puni-puni"
  #
  # See ActiveSupport::Inflector.dasherize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#152
  def dasherize; end

  # Removes the rightmost segment from the constant expression in the string.
  #
  #   'Net::HTTP'.deconstantize   # => "Net"
  #   '::Net::HTTP'.deconstantize # => "::Net"
  #   'String'.deconstantize      # => ""
  #   '::String'.deconstantize    # => ""
  #   ''.deconstantize            # => ""
  #
  # See ActiveSupport::Inflector.deconstantize.
  #
  # See also +demodulize+.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#181
  def deconstantize; end

  # Removes the module part from the constant expression in the string.
  #
  #   'ActiveSupport::Inflector::Inflections'.demodulize # => "Inflections"
  #   'Inflections'.demodulize                           # => "Inflections"
  #   '::Inflections'.demodulize                         # => "Inflections"
  #   ''.demodulize                                      # => ''
  #
  # See ActiveSupport::Inflector.demodulize.
  #
  # See also +deconstantize+.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#166
  def demodulize; end

  # Returns the first character. If a limit is supplied, returns a substring
  # from the beginning of the string until it reaches the limit value. If the
  # given limit is greater than or equal to the string length, returns a copy of self.
  #
  #   str = "hello"
  #   str.first    # => "h"
  #   str.first(1) # => "h"
  #   str.first(2) # => "he"
  #   str.first(0) # => ""
  #   str.first(6) # => "hello"
  #
  # source://activesupport//lib/active_support/core_ext/string/access.rb#78
  def first(limit = T.unsafe(nil)); end

  # Creates a foreign key name from a class name.
  # +separate_class_name_and_id_with_underscore+ sets whether
  # the method should put '_' between the name and 'id'.
  #
  #   'Message'.foreign_key        # => "message_id"
  #   'Message'.foreign_key(false) # => "messageid"
  #   'Admin::Post'.foreign_key    # => "post_id"
  #
  # See ActiveSupport::Inflector.foreign_key.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#290
  def foreign_key(separate_class_name_and_id_with_underscore = T.unsafe(nil)); end

  # Returns a substring from the given position to the end of the string.
  # If the position is negative, it is counted from the end of the string.
  #
  #   str = "hello"
  #   str.from(0)  # => "hello"
  #   str.from(3)  # => "lo"
  #   str.from(-2) # => "lo"
  #
  # You can mix it with +to+ method and do fun things like:
  #
  #   str = "hello"
  #   str.from(0).to(-1) # => "hello"
  #   str.from(1).to(-2) # => "ell"
  #
  # source://activesupport//lib/active_support/core_ext/string/access.rb#46
  def from(position); end

  # Marks a string as trusted safe. It will be inserted into HTML with no
  # additional escaping performed. It is your responsibility to ensure that the
  # string contains no malicious content. This method is equivalent to the
  # +raw+ helper in views. It is recommended that you use +sanitize+ instead of
  # this method. It should never be called on user input.
  #
  # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#368
  def html_safe; end

  # Capitalizes the first word, turns underscores into spaces, and (by default)strips a
  # trailing '_id' if present.
  # Like +titleize+, this is meant for creating pretty output.
  #
  # The capitalization of the first word can be turned off by setting the
  # optional parameter +capitalize+ to false.
  # By default, this parameter is true.
  #
  # The trailing '_id' can be kept and capitalized by setting the
  # optional parameter +keep_id_suffix+ to true.
  # By default, this parameter is false.
  #
  #   'employee_salary'.humanize                    # => "Employee salary"
  #   'author_id'.humanize                          # => "Author"
  #   'author_id'.humanize(capitalize: false)       # => "author"
  #   '_id'.humanize                                # => "Id"
  #   'author_id'.humanize(keep_id_suffix: true)    # => "Author id"
  #
  # See ActiveSupport::Inflector.humanize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#266
  def humanize(capitalize: T.unsafe(nil), keep_id_suffix: T.unsafe(nil)); end

  # Converts String to a TimeWithZone in the current zone if Time.zone or Time.zone_default
  # is set, otherwise converts String to a Time via String#to_time
  #
  # source://activesupport//lib/active_support/core_ext/string/zones.rb#9
  def in_time_zone(zone = T.unsafe(nil)); end

  # Indents the lines in the receiver:
  #
  #   <<EOS.indent(2)
  #   def some_method
  #     some_code
  #   end
  #   EOS
  #   # =>
  #     def some_method
  #       some_code
  #     end
  #
  # The second argument, +indent_string+, specifies which indent string to
  # use. The default is +nil+, which tells the method to make a guess by
  # peeking at the first indented line, and fallback to a space if there is
  # none.
  #
  #   "  foo".indent(2)        # => "    foo"
  #   "foo\n\t\tbar".indent(2) # => "\t\tfoo\n\t\t\t\tbar"
  #   "foo".indent(2, "\t")    # => "\t\tfoo"
  #
  # While +indent_string+ is typically one space or tab, it may be any string.
  #
  # The third argument, +indent_empty_lines+, is a flag that says whether
  # empty lines should be indented. Default is false.
  #
  #   "foo\n\nbar".indent(2)            # => "  foo\n\n  bar"
  #   "foo\n\nbar".indent(2, nil, true) # => "  foo\n  \n  bar"
  #
  # source://activesupport//lib/active_support/core_ext/string/indent.rb#42
  def indent(amount, indent_string = T.unsafe(nil), indent_empty_lines = T.unsafe(nil)); end

  # Same as +indent+, except it indents the receiver in-place.
  #
  # Returns the indented string, or +nil+ if there was nothing to indent.
  #
  # source://activesupport//lib/active_support/core_ext/string/indent.rb#7
  def indent!(amount, indent_string = T.unsafe(nil), indent_empty_lines = T.unsafe(nil)); end

  # Wraps the current string in the ActiveSupport::StringInquirer class,
  # which gives you a prettier way to test for equality.
  #
  #   env = 'production'.inquiry
  #   env.production?  # => true
  #   env.development? # => false
  #
  # source://activesupport//lib/active_support/core_ext/string/inquiry.rb#13
  def inquiry; end

  # Returns +true+ if string has utf_8 encoding.
  #
  #   utf_8_str = "some string".encode "UTF-8"
  #   iso_str = "some string".encode "ISO-8859-1"
  #
  #   utf_8_str.is_utf8? # => true
  #   iso_str.is_utf8?   # => false
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/string/multibyte.rb#48
  def is_utf8?; end

  # Returns the last character of the string. If a limit is supplied, returns a substring
  # from the end of the string until it reaches the limit value (counting backwards). If
  # the given limit is greater than or equal to the string length, returns a copy of self.
  #
  #   str = "hello"
  #   str.last    # => "o"
  #   str.last(1) # => "o"
  #   str.last(2) # => "lo"
  #   str.last(0) # => ""
  #   str.last(6) # => "hello"
  #
  # source://activesupport//lib/active_support/core_ext/string/access.rb#92
  def last(limit = T.unsafe(nil)); end

  # == Multibyte proxy
  #
  # +mb_chars+ is a multibyte safe proxy for string methods.
  #
  # It creates and returns an instance of the ActiveSupport::Multibyte::Chars class which
  # encapsulates the original string. A Unicode safe version of all the String methods are defined on this proxy
  # class. If the proxy class doesn't respond to a certain method, it's forwarded to the encapsulated string.
  #
  #   >> "lj".mb_chars.upcase.to_s
  #   => "LJ"
  #
  # NOTE: Ruby 2.4 and later support native Unicode case mappings:
  #
  #   >> "lj".upcase
  #   => "LJ"
  #
  # == Method chaining
  #
  # All the methods on the Chars proxy which normally return a string will return a Chars object. This allows
  # method chaining on the result of any of these methods.
  #
  #   name.mb_chars.reverse.length # => 12
  #
  # == Interoperability and configuration
  #
  # The Chars object tries to be as interchangeable with String objects as possible: sorting and comparing between
  # String and Char work like expected. The bang! methods change the internal string representation in the Chars
  # object. Interoperability problems can be resolved easily with a +to_s+ call.
  #
  # For more information about the methods defined on the Chars proxy see ActiveSupport::Multibyte::Chars. For
  # information about how to change the default Multibyte behavior see ActiveSupport::Multibyte.
  #
  # source://activesupport//lib/active_support/core_ext/string/multibyte.rb#37
  def mb_chars; end

  # Replaces special characters in a string so that it may be used as part of a 'pretty' URL.
  #
  # If the optional parameter +locale+ is specified,
  # the word will be parameterized as a word of that language.
  # By default, this parameter is set to <tt>nil</tt> and it will use
  # the configured <tt>I18n.locale</tt>.
  #
  #   class Person
  #     def to_param
  #       "#{id}-#{name.parameterize}"
  #     end
  #   end
  #
  #   @person = Person.find(1)
  #   # => #<Person id: 1, name: "Donald E. Knuth">
  #
  #   <%= link_to(@person.name, person_path) %>
  #   # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
  #
  # To preserve the case of the characters in a string, use the +preserve_case+ argument.
  #
  #   class Person
  #     def to_param
  #       "#{id}-#{name.parameterize(preserve_case: true)}"
  #     end
  #   end
  #
  #   @person = Person.find(1)
  #   # => #<Person id: 1, name: "Donald E. Knuth">
  #
  #   <%= link_to(@person.name, person_path) %>
  #   # => <a href="/person/1-Donald-E-Knuth">Donald E. Knuth</a>
  #
  # See ActiveSupport::Inflector.parameterize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#219
  def parameterize(separator: T.unsafe(nil), preserve_case: T.unsafe(nil), locale: T.unsafe(nil)); end

  # Returns the plural form of the word in the string.
  #
  # If the optional parameter +count+ is specified,
  # the singular form will be returned if <tt>count == 1</tt>.
  # For any other value of +count+ the plural will be returned.
  #
  # If the optional parameter +locale+ is specified,
  # the word will be pluralized as a word of that language.
  # By default, this parameter is set to <tt>:en</tt>.
  # You must define your own inflection rules for languages other than English.
  #
  #   'post'.pluralize             # => "posts"
  #   'octopus'.pluralize          # => "octopi"
  #   'sheep'.pluralize            # => "sheep"
  #   'words'.pluralize            # => "words"
  #   'the blue mailman'.pluralize # => "the blue mailmen"
  #   'CamelOctopus'.pluralize     # => "CamelOctopi"
  #   'apple'.pluralize(1)         # => "apple"
  #   'apple'.pluralize(2)         # => "apples"
  #   'ley'.pluralize(:es)         # => "leyes"
  #   'ley'.pluralize(1, :es)      # => "ley"
  #
  # See ActiveSupport::Inflector.pluralize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#35
  def pluralize(count = T.unsafe(nil), locale = T.unsafe(nil)); end

  # Returns a new string with all occurrences of the patterns removed.
  #   str = "foo bar test"
  #   str.remove(" test")                 # => "foo bar"
  #   str.remove(" test", /bar/)          # => "foo "
  #   str                                 # => "foo bar test"
  #
  # source://activesupport//lib/active_support/core_ext/string/filters.rb#32
  def remove(*patterns); end

  # Alters the string by removing all occurrences of the patterns.
  #   str = "foo bar test"
  #   str.remove!(" test", /bar/)         # => "foo "
  #   str                                 # => "foo "
  #
  # source://activesupport//lib/active_support/core_ext/string/filters.rb#40
  def remove!(*patterns); end

  # +safe_constantize+ tries to find a declared constant with the name specified
  # in the string. It returns +nil+ when the name is not in CamelCase
  # or is not initialized.
  #
  #   'Module'.safe_constantize  # => Module
  #   'Class'.safe_constantize   # => Class
  #   'blargle'.safe_constantize # => nil
  #
  # See ActiveSupport::Inflector.safe_constantize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#86
  def safe_constantize; end

  # The reverse of +pluralize+, returns the singular form of a word in a string.
  #
  # If the optional parameter +locale+ is specified,
  # the word will be singularized as a word of that language.
  # By default, this parameter is set to <tt>:en</tt>.
  # You must define your own inflection rules for languages other than English.
  #
  #   'posts'.singularize            # => "post"
  #   'octopi'.singularize           # => "octopus"
  #   'sheep'.singularize            # => "sheep"
  #   'word'.singularize             # => "word"
  #   'the blue mailmen'.singularize # => "the blue mailman"
  #   'CamelOctopi'.singularize      # => "CamelOctopus"
  #   'leyes'.singularize(:es)       # => "ley"
  #
  # See ActiveSupport::Inflector.singularize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#60
  def singularize(locale = T.unsafe(nil)); end

  # Returns the string, first removing all whitespace on both ends of
  # the string, and then changing remaining consecutive whitespace
  # groups into one space each.
  #
  # Note that it handles both ASCII and Unicode whitespace.
  #
  #   %{ Multi-line
  #      string }.squish                   # => "Multi-line string"
  #   " foo   bar    \n   \t   boo".squish # => "foo bar boo"
  #
  # source://activesupport//lib/active_support/core_ext/string/filters.rb#13
  def squish; end

  # Performs a destructive squish. See String#squish.
  #   str = " foo   bar    \n   \t   boo"
  #   str.squish!                         # => "foo bar boo"
  #   str                                 # => "foo bar boo"
  #
  # source://activesupport//lib/active_support/core_ext/string/filters.rb#21
  def squish!; end

  # Strips indentation in heredocs.
  #
  # For example in
  #
  #   if options[:usage]
  #     puts <<-USAGE.strip_heredoc
  #       This command does such and such.
  #
  #       Supported options are:
  #         -h         This message
  #         ...
  #     USAGE
  #   end
  #
  # the user would see the usage message aligned against the left margin.
  #
  # Technically, it looks for the least indented non-empty line
  # in the whole string, and removes that amount of leading whitespace.
  #
  # source://activesupport//lib/active_support/core_ext/string/strip.rb#22
  def strip_heredoc; end

  # Creates the name of a table like Rails does for models to table names. This method
  # uses the +pluralize+ method on the last word in the string.
  #
  #   'RawScaledScorer'.tableize # => "raw_scaled_scorers"
  #   'ham_and_egg'.tableize     # => "ham_and_eggs"
  #   'fancyCategory'.tableize   # => "fancy_categories"
  #
  # See ActiveSupport::Inflector.tableize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#231
  def tableize; end

  # Capitalizes all the words and replaces some characters in the string to create
  # a nicer looking title. +titleize+ is meant for creating pretty output. It is not
  # used in the Rails internals.
  #
  # The trailing '_id','Id'.. can be kept and capitalized by setting the
  # optional parameter +keep_id_suffix+ to true.
  # By default, this parameter is false.
  #
  #   'man from the boondocks'.titleize                       # => "Man From The Boondocks"
  #   'x-men: the last stand'.titleize                        # => "X Men: The Last Stand"
  #   'string_ending_with_id'.titleize(keep_id_suffix: true)  # => "String Ending With Id"
  #
  # +titleize+ is also aliased as +titlecase+.
  #
  # See ActiveSupport::Inflector.titleize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#130
  def titlecase(keep_id_suffix: T.unsafe(nil)); end

  # Capitalizes all the words and replaces some characters in the string to create
  # a nicer looking title. +titleize+ is meant for creating pretty output. It is not
  # used in the Rails internals.
  #
  # The trailing '_id','Id'.. can be kept and capitalized by setting the
  # optional parameter +keep_id_suffix+ to true.
  # By default, this parameter is false.
  #
  #   'man from the boondocks'.titleize                       # => "Man From The Boondocks"
  #   'x-men: the last stand'.titleize                        # => "X Men: The Last Stand"
  #   'string_ending_with_id'.titleize(keep_id_suffix: true)  # => "String Ending With Id"
  #
  # +titleize+ is also aliased as +titlecase+.
  #
  # See ActiveSupport::Inflector.titleize.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#130
  def titleize(keep_id_suffix: T.unsafe(nil)); end

  # Returns a substring from the beginning of the string to the given position.
  # If the position is negative, it is counted from the end of the string.
  #
  #   str = "hello"
  #   str.to(0)  # => "h"
  #   str.to(3)  # => "hell"
  #   str.to(-2) # => "hell"
  #
  # You can mix it with +from+ method and do fun things like:
  #
  #   str = "hello"
  #   str.from(0).to(-1) # => "hello"
  #   str.from(1).to(-2) # => "ell"
  #
  # source://activesupport//lib/active_support/core_ext/string/access.rb#63
  def to(position); end

  # Converts a string to a Date value.
  #
  #   "1-1-2012".to_date   # => Sun, 01 Jan 2012
  #   "01/01/2012".to_date # => Sun, 01 Jan 2012
  #   "2012-12-13".to_date # => Thu, 13 Dec 2012
  #   "12/13/2012".to_date # => ArgumentError: invalid date
  #
  # source://activesupport//lib/active_support/core_ext/string/conversions.rb#47
  def to_date; end

  # Converts a string to a DateTime value.
  #
  #   "1-1-2012".to_datetime            # => Sun, 01 Jan 2012 00:00:00 +0000
  #   "01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000
  #   "2012-12-13 12:50".to_datetime    # => Thu, 13 Dec 2012 12:50:00 +0000
  #   "12/13/2012".to_datetime          # => ArgumentError: invalid date
  #
  # source://activesupport//lib/active_support/core_ext/string/conversions.rb#57
  def to_datetime; end

  # Converts a string to a Time value.
  # The +form+ can be either +:utc+ or +:local+ (default +:local+).
  #
  # The time is parsed using Time.parse method.
  # If +form+ is +:local+, then the time is in the system timezone.
  # If the date part is missing then the current date is used and if
  # the time part is missing then it is assumed to be 00:00:00.
  #
  #   "13-12-2012".to_time               # => 2012-12-13 00:00:00 +0100
  #   "06:12".to_time                    # => 2012-12-13 06:12:00 +0100
  #   "2012-12-13 06:12".to_time         # => 2012-12-13 06:12:00 +0100
  #   "2012-12-13T06:12".to_time         # => 2012-12-13 06:12:00 +0100
  #   "2012-12-13T06:12".to_time(:utc)   # => 2012-12-13 06:12:00 UTC
  #   "12/13/2012".to_time               # => ArgumentError: argument out of range
  #   "1604326192".to_time               # => ArgumentError: argument out of range
  #
  # source://activesupport//lib/active_support/core_ext/string/conversions.rb#22
  def to_time(form = T.unsafe(nil)); end

  # Truncates a given +text+ after a given <tt>length</tt> if +text+ is longer than <tt>length</tt>:
  #
  #   'Once upon a time in a world far far away'.truncate(27)
  #   # => "Once upon a time in a wo..."
  #
  # Pass a string or regexp <tt>:separator</tt> to truncate +text+ at a natural break:
  #
  #   'Once upon a time in a world far far away'.truncate(27, separator: ' ')
  #   # => "Once upon a time in a..."
  #
  #   'Once upon a time in a world far far away'.truncate(27, separator: /\s/)
  #   # => "Once upon a time in a..."
  #
  # The last characters will be replaced with the <tt>:omission</tt> string (defaults to "...")
  # for a total length not exceeding <tt>length</tt>:
  #
  #   'And they found that many people were sleeping better.'.truncate(25, omission: '... (continued)')
  #   # => "And they f... (continued)"
  #
  # source://activesupport//lib/active_support/core_ext/string/filters.rb#66
  def truncate(truncate_at, options = T.unsafe(nil)); end

  # Truncates +text+ to at most <tt>bytesize</tt> bytes in length without
  # breaking string encoding by splitting multibyte characters or breaking
  # grapheme clusters ("perceptual characters") by truncating at combining
  # characters.
  #
  #   >> "🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".size
  #   => 20
  #   >> "🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".bytesize
  #   => 80
  #   >> "🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".truncate_bytes(20)
  #   => "🔪🔪🔪🔪…"
  #
  # The truncated text ends with the <tt>:omission</tt> string, defaulting
  # to "…", for a total length not exceeding <tt>bytesize</tt>.
  #
  # source://activesupport//lib/active_support/core_ext/string/filters.rb#95
  def truncate_bytes(truncate_at, omission: T.unsafe(nil)); end

  # Truncates a given +text+ after a given number of words (<tt>words_count</tt>):
  #
  #   'Once upon a time in a world far far away'.truncate_words(4)
  #   # => "Once upon a time..."
  #
  # Pass a string or regexp <tt>:separator</tt> to specify a different separator of words:
  #
  #   'Once<br>upon<br>a<br>time<br>in<br>a<br>world'.truncate_words(5, separator: '<br>')
  #   # => "Once<br>upon<br>a<br>time<br>in..."
  #
  # The last characters will be replaced with the <tt>:omission</tt> string (defaults to "..."):
  #
  #   'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)')
  #   # => "And they found that many... (continued)"
  #
  # source://activesupport//lib/active_support/core_ext/string/filters.rb#136
  def truncate_words(words_count, options = T.unsafe(nil)); end

  # The reverse of +camelize+. Makes an underscored, lowercase form from the expression in the string.
  #
  # +underscore+ will also change '::' to '/' to convert namespaces to paths.
  #
  #   'ActiveModel'.underscore         # => "active_model"
  #   'ActiveModel::Errors'.underscore # => "active_model/errors"
  #
  # See ActiveSupport::Inflector.underscore.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#143
  def underscore; end

  # Converts just the first character to uppercase.
  #
  #   'what a Lovely Day'.upcase_first # => "What a Lovely Day"
  #   'w'.upcase_first                 # => "W"
  #   ''.upcase_first                  # => ""
  #
  # See ActiveSupport::Inflector.upcase_first.
  #
  # source://activesupport//lib/active_support/core_ext/string/inflections.rb#277
  def upcase_first; end
end

# source://activesupport//lib/active_support/core_ext/object/blank.rb#104
String::BLANK_RE = T.let(T.unsafe(nil), Regexp)

# source://activesupport//lib/active_support/core_ext/object/blank.rb#105
String::ENCODED_BLANKS = T.let(T.unsafe(nil), Concurrent::Map)

# source://activesupport//lib/active_support/core_ext/object/json.rb#68
class Struct
  include ::Enumerable

  # source://activesupport//lib/active_support/core_ext/object/json.rb#69
  def as_json(options = T.unsafe(nil)); end
end

# source://nokogiri/1.15.2/lib/nokogiri/html4/element_description_defaults.rb#11
Struct::HTMLElementDescription = Struct

# source://sys-uname/1.2.3/lib/sys/unix/uname.rb#109
Struct::UnameStruct = Struct

# source://activesupport//lib/active_support/core_ext/object/json.rb#98
class Symbol
  include ::Comparable

  # source://activesupport//lib/active_support/core_ext/object/json.rb#99
  def as_json(options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/object/blank.rb#146
class Time
  include ::Comparable
  include ::DateAndTime::Zones
  include ::DateAndTime::Calculations
  include ::DateAndTime::Compatibility

  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#284
  def +(other); end

  # Time#- can also be used to determine the number of seconds between two Time instances.
  # We're layering on additional behavior so that ActiveSupport::TimeWithZone instances
  # are coerced into values that Time#- will recognize
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#307
  def -(other); end

  # Layers additional behavior on Time#<=> so that DateTime and ActiveSupport::TimeWithZone instances
  # can be chronologically compared with a Time
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#316
  def <=>(other); end

  # Duck-types as a Time-like class. See Object#acts_like?.
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/time/acts_like.rb#7
  def acts_like_time?; end

  # Uses Date to provide precise Time calculations for years, months, and days
  # according to the proleptic Gregorian calendar. The +options+ parameter
  # takes a hash with any of these keys: <tt>:years</tt>, <tt>:months</tt>,
  # <tt>:weeks</tt>, <tt>:days</tt>, <tt>:hours</tt>, <tt>:minutes</tt>,
  # <tt>:seconds</tt>.
  #
  #   Time.new(2015, 8, 1, 14, 35, 0).advance(seconds: 1) # => 2015-08-01 14:35:01 -0700
  #   Time.new(2015, 8, 1, 14, 35, 0).advance(minutes: 1) # => 2015-08-01 14:36:00 -0700
  #   Time.new(2015, 8, 1, 14, 35, 0).advance(hours: 1)   # => 2015-08-01 15:35:00 -0700
  #   Time.new(2015, 8, 1, 14, 35, 0).advance(days: 1)    # => 2015-08-02 14:35:00 -0700
  #   Time.new(2015, 8, 1, 14, 35, 0).advance(weeks: 1)   # => 2015-08-08 14:35:00 -0700
  #
  # Just like Date#advance, increments are applied in order of time units from
  # largest to smallest. This order can affect the result around the end of a
  # month.
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#186
  def advance(options); end

  # Returns a new Time representing the time a number of seconds ago, this is basically a wrapper around the Numeric extension
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#212
  def ago(seconds); end

  # source://activesupport//lib/active_support/core_ext/object/json.rb#187
  def as_json(options = T.unsafe(nil)); end

  # Returns a new Time representing the start of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#225
  def at_beginning_of_day; end

  # Returns a new Time representing the start of the hour (x:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#254
  def at_beginning_of_hour; end

  # Returns a new Time representing the start of the minute (x:xx:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#270
  def at_beginning_of_minute; end

  # Returns a new Time representing the end of the day, 23:59:59.999999
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#243
  def at_end_of_day; end

  # Returns a new Time representing the end of the hour, x:59:59.999999
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#260
  def at_end_of_hour; end

  # Returns a new Time representing the end of the minute, x:xx:59.999999
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#276
  def at_end_of_minute; end

  # Returns a new Time representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#233
  def at_midday; end

  # Returns a new Time representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#233
  def at_middle_of_day; end

  # Returns a new Time representing the start of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#225
  def at_midnight; end

  # Returns a new Time representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#233
  def at_noon; end

  # Returns a new Time representing the start of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#225
  def beginning_of_day; end

  # Returns a new Time representing the start of the hour (x:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#254
  def beginning_of_hour; end

  # Returns a new Time representing the start of the minute (x:xx:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#270
  def beginning_of_minute; end

  # No Time is blank:
  #
  #   Time.now.blank? # => false
  #
  # @return [false]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#152
  def blank?; end

  # Returns a new Time where one or more of the elements have been changed according
  # to the +options+ parameter. The time options (<tt>:hour</tt>, <tt>:min</tt>,
  # <tt>:sec</tt>, <tt>:usec</tt>, <tt>:nsec</tt>) reset cascadingly, so if only
  # the hour is passed, then minute, sec, usec, and nsec is set to 0. If the hour
  # and minute is passed, then sec, usec, and nsec is set to 0. The +options+ parameter
  # takes a hash with any of these keys: <tt>:year</tt>, <tt>:month</tt>, <tt>:day</tt>,
  # <tt>:hour</tt>, <tt>:min</tt>, <tt>:sec</tt>, <tt>:usec</tt>, <tt>:nsec</tt>,
  # <tt>:offset</tt>. Pass either <tt>:usec</tt> or <tt>:nsec</tt>, not both.
  #
  #   Time.new(2012, 8, 29, 22, 35, 0).change(day: 1)              # => Time.new(2012, 8, 1, 22, 35, 0)
  #   Time.new(2012, 8, 29, 22, 35, 0).change(year: 1981, day: 1)  # => Time.new(1981, 8, 1, 22, 35, 0)
  #   Time.new(2012, 8, 29, 22, 35, 0).change(year: 1981, hour: 0) # => Time.new(1981, 8, 29, 0, 0, 0)
  #
  # @raise [ArgumentError]
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#138
  def change(options); end

  # Layers additional behavior on Time#<=> so that DateTime and ActiveSupport::TimeWithZone instances
  # can be chronologically compared with a Time
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#316
  def compare_with_coercion(other); end

  # Returns a new Time representing the end of the day, 23:59:59.999999
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#243
  def end_of_day; end

  # Returns a new Time representing the end of the hour, x:59:59.999999
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#260
  def end_of_hour; end

  # Returns a new Time representing the end of the minute, x:xx:59.999999
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#276
  def end_of_minute; end

  # Layers additional behavior on Time#eql? so that ActiveSupport::TimeWithZone instances
  # can be eql? to an equivalent Time
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#331
  def eql?(other); end

  # Layers additional behavior on Time#eql? so that ActiveSupport::TimeWithZone instances
  # can be eql? to an equivalent Time
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#331
  def eql_with_coercion(other); end

  # Returns a formatted string of the offset from UTC, or an alternative
  # string if the time zone is already UTC.
  #
  #   Time.local(2000).formatted_offset        # => "-06:00"
  #   Time.local(2000).formatted_offset(false) # => "-0600"
  #
  # source://activesupport//lib/active_support/core_ext/time/conversions.rb#69
  def formatted_offset(colon = T.unsafe(nil), alternate_utc_string = T.unsafe(nil)); end

  # Returns a new Time representing the time a number of seconds since the instance time
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#217
  def in(seconds); end

  # Returns a new Time representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#233
  def midday; end

  # Returns a new Time representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#233
  def middle_of_day; end

  # Returns a new Time representing the start of the day (0:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#225
  def midnight; end

  # Time#- can also be used to determine the number of seconds between two Time instances.
  # We're layering on additional behavior so that ActiveSupport::TimeWithZone instances
  # are coerced into values that Time#- will recognize
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#307
  def minus_with_coercion(other); end

  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#294
  def minus_with_duration(other); end

  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#294
  def minus_without_coercion(other); end

  # Returns a new time the specified number of days in the future.
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#345
  def next_day(days = T.unsafe(nil)); end

  # Returns a new time the specified number of months in the future.
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#355
  def next_month(months = T.unsafe(nil)); end

  # Returns a new time the specified number of years in the future.
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#365
  def next_year(years = T.unsafe(nil)); end

  # Returns a new Time representing the middle of the day (12:00)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#233
  def noon; end

  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#284
  def plus_with_duration(other); end

  # Returns a new time the specified number of days ago.
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#340
  def prev_day(days = T.unsafe(nil)); end

  # Returns a new time the specified number of months ago.
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#350
  def prev_month(months = T.unsafe(nil)); end

  # Returns a new time the specified number of years ago.
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#360
  def prev_year(years = T.unsafe(nil)); end

  # Returns the fraction of a second as a +Rational+
  #
  #   Time.new(2012, 8, 29, 0, 0, 0.5).sec_fraction # => (1/2)
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#107
  def sec_fraction; end

  # Returns the number of seconds since 00:00:00.
  #
  #   Time.new(2012, 8, 29,  0,  0,  0).seconds_since_midnight # => 0.0
  #   Time.new(2012, 8, 29, 12, 34, 56).seconds_since_midnight # => 45296.0
  #   Time.new(2012, 8, 29, 23, 59, 59).seconds_since_midnight # => 86399.0
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#91
  def seconds_since_midnight; end

  # Returns the number of seconds until 23:59:59.
  #
  #   Time.new(2012, 8, 29,  0,  0,  0).seconds_until_end_of_day # => 86399
  #   Time.new(2012, 8, 29, 12, 34, 56).seconds_until_end_of_day # => 41103
  #   Time.new(2012, 8, 29, 23, 59, 59).seconds_until_end_of_day # => 0
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#100
  def seconds_until_end_of_day; end

  # Returns a new Time representing the time a number of seconds since the instance time
  #
  # source://activesupport//lib/active_support/core_ext/time/calculations.rb#217
  def since(seconds); end

  # Converts to a formatted string. See DATE_FORMATS for built-in formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   time = Time.now                    # => 2007-01-18 06:10:17 -06:00
  #
  #   time.to_fs(:time)                  # => "06:10"
  #   time.to_formatted_s(:time)         # => "06:10"
  #
  #   time.to_fs(:db)           # => "2007-01-18 06:10:17"
  #   time.to_fs(:number)       # => "20070118061017"
  #   time.to_fs(:short)        # => "18 Jan 06:10"
  #   time.to_fs(:long)         # => "January 18, 2007 06:10"
  #   time.to_fs(:long_ordinal) # => "January 18th, 2007 06:10"
  #   time.to_fs(:rfc822)       # => "Thu, 18 Jan 2007 06:10:17 -0600"
  #   time.to_fs(:iso8601)      # => "2007-01-18T06:10:17-06:00"
  #
  # == Adding your own time formats to +to_fs+
  # You can add your own formats to the Time::DATE_FORMATS hash.
  # Use the format name as the hash key and either a strftime string
  # or Proc instance that takes a time argument as the value.
  #
  #   # config/initializers/time_formats.rb
  #   Time::DATE_FORMATS[:month_and_year] = '%B %Y'
  #   Time::DATE_FORMATS[:short_ordinal]  = ->(time) { time.strftime("%B #{time.day.ordinalize}") }
  #
  # source://activesupport//lib/active_support/core_ext/time/conversions.rb#53
  def to_formatted_s(format = T.unsafe(nil)); end

  # Converts to a formatted string. See DATE_FORMATS for built-in formats.
  #
  # This method is aliased to <tt>to_formatted_s</tt>.
  #
  #   time = Time.now                    # => 2007-01-18 06:10:17 -06:00
  #
  #   time.to_fs(:time)                  # => "06:10"
  #   time.to_formatted_s(:time)         # => "06:10"
  #
  #   time.to_fs(:db)           # => "2007-01-18 06:10:17"
  #   time.to_fs(:number)       # => "20070118061017"
  #   time.to_fs(:short)        # => "18 Jan 06:10"
  #   time.to_fs(:long)         # => "January 18, 2007 06:10"
  #   time.to_fs(:long_ordinal) # => "January 18th, 2007 06:10"
  #   time.to_fs(:rfc822)       # => "Thu, 18 Jan 2007 06:10:17 -0600"
  #   time.to_fs(:iso8601)      # => "2007-01-18T06:10:17-06:00"
  #
  # == Adding your own time formats to +to_fs+
  # You can add your own formats to the Time::DATE_FORMATS hash.
  # Use the format name as the hash key and either a strftime string
  # or Proc instance that takes a time argument as the value.
  #
  #   # config/initializers/time_formats.rb
  #   Time::DATE_FORMATS[:month_and_year] = '%B %Y'
  #   Time::DATE_FORMATS[:short_ordinal]  = ->(time) { time.strftime("%B #{time.day.ordinalize}") }
  #
  # source://activesupport//lib/active_support/core_ext/time/conversions.rb#53
  def to_fs(format = T.unsafe(nil)); end

  # source://activesupport//lib/active_support/core_ext/time/deprecated_conversions.rb#7
  def to_s(format = T.unsafe(nil)); end

  # Either return +self+ or the time in the local system timezone depending
  # on the setting of +ActiveSupport.to_time_preserves_timezone+.
  #
  # source://activesupport//lib/active_support/core_ext/time/compatibility.rb#13
  def to_time; end

  class << self
    # Overriding case equality method so that it returns true for ActiveSupport::TimeWithZone instances
    #
    # source://activesupport//lib/active_support/core_ext/time/calculations.rb#18
    def ===(other); end

    # Layers additional behavior on Time.at so that ActiveSupport::TimeWithZone and DateTime
    # instances can be used when called with a single argument
    #
    # source://activesupport//lib/active_support/core_ext/time/calculations.rb#45
    def at(*args, **kwargs); end

    # Layers additional behavior on Time.at so that ActiveSupport::TimeWithZone and DateTime
    # instances can be used when called with a single argument
    #
    # source://activesupport//lib/active_support/core_ext/time/calculations.rb#45
    def at_with_coercion(*args, **kwargs); end

    # Returns <tt>Time.zone.now</tt> when <tt>Time.zone</tt> or <tt>config.time_zone</tt> are set, otherwise just returns <tt>Time.now</tt>.
    #
    # source://activesupport//lib/active_support/core_ext/time/calculations.rb#39
    def current; end

    # Returns the number of days in the given month.
    # If no year is specified, it will use the current year.
    #
    # source://activesupport//lib/active_support/core_ext/time/calculations.rb#24
    def days_in_month(month, year = T.unsafe(nil)); end

    # Returns the number of days in the given year.
    # If no year is specified, it will use the current year.
    #
    # source://activesupport//lib/active_support/core_ext/time/calculations.rb#34
    def days_in_year(year = T.unsafe(nil)); end

    # Returns a TimeZone instance matching the time zone provided.
    # Accepts the time zone in any format supported by <tt>Time.zone=</tt>.
    # Returns +nil+ for invalid time zones.
    #
    #   Time.find_zone "America/New_York" # => #<ActiveSupport::TimeZone @name="America/New_York" ...>
    #   Time.find_zone "NOT-A-TIMEZONE"   # => nil
    #
    # source://activesupport//lib/active_support/core_ext/time/zones.rb#93
    def find_zone(time_zone); end

    # Returns a TimeZone instance matching the time zone provided.
    # Accepts the time zone in any format supported by <tt>Time.zone=</tt>.
    # Raises an +ArgumentError+ for invalid time zones.
    #
    #   Time.find_zone! "America/New_York" # => #<ActiveSupport::TimeZone @name="America/New_York" ...>
    #   Time.find_zone! "EST"              # => #<ActiveSupport::TimeZone @name="EST" ...>
    #   Time.find_zone! -5.hours           # => #<ActiveSupport::TimeZone @name="Bogota" ...>
    #   Time.find_zone! nil                # => nil
    #   Time.find_zone! false              # => false
    #   Time.find_zone! "NOT-A-TIMEZONE"   # => ArgumentError: Invalid Timezone: NOT-A-TIMEZONE
    #
    # source://activesupport//lib/active_support/core_ext/time/zones.rb#81
    def find_zone!(time_zone); end

    # Creates a +Time+ instance from an RFC 3339 string.
    #
    #   Time.rfc3339('1999-12-31T14:00:00-10:00') # => 2000-01-01 00:00:00 -1000
    #
    # If the time or offset components are missing then an +ArgumentError+ will be raised.
    #
    #   Time.rfc3339('1999-12-31') # => ArgumentError: invalid date
    #
    # @raise [ArgumentError]
    #
    # source://activesupport//lib/active_support/core_ext/time/calculations.rb#69
    def rfc3339(str); end

    # Allows override of <tt>Time.zone</tt> locally inside supplied block;
    # resets <tt>Time.zone</tt> to existing value when done.
    #
    #   class ApplicationController < ActionController::Base
    #     around_action :set_time_zone
    #
    #     private
    #       def set_time_zone
    #         Time.use_zone(current_user.timezone) { yield }
    #       end
    #   end
    #
    # NOTE: This won't affect any ActiveSupport::TimeWithZone
    # objects that have already been created, e.g. any model timestamp
    # attributes that have been read before the block will remain in
    # the application's default timezone.
    #
    # source://activesupport//lib/active_support/core_ext/time/zones.rb#61
    def use_zone(time_zone); end

    # Returns the TimeZone for the current request, if this has been set (via Time.zone=).
    # If <tt>Time.zone</tt> has not been set for the current request, returns the TimeZone specified in <tt>config.time_zone</tt>.
    #
    # source://activesupport//lib/active_support/core_ext/time/zones.rb#14
    def zone; end

    # Sets <tt>Time.zone</tt> to a TimeZone object for the current request/thread.
    #
    # This method accepts any of the following:
    #
    # * A Rails TimeZone object.
    # * An identifier for a Rails TimeZone object (e.g., "Eastern Time (US & Canada)", <tt>-5.hours</tt>).
    # * A <tt>TZInfo::Timezone</tt> object.
    # * An identifier for a <tt>TZInfo::Timezone</tt> object (e.g., "America/New_York").
    #
    # Here's an example of how you might set <tt>Time.zone</tt> on a per request basis and reset it when the request is done.
    # <tt>current_user.time_zone</tt> just needs to return a string identifying the user's preferred time zone:
    #
    #   class ApplicationController < ActionController::Base
    #     around_action :set_time_zone
    #
    #     def set_time_zone
    #       if logged_in?
    #         Time.use_zone(current_user.time_zone) { yield }
    #       else
    #         yield
    #       end
    #     end
    #   end
    #
    # source://activesupport//lib/active_support/core_ext/time/zones.rb#41
    def zone=(time_zone); end

    # Returns the value of attribute zone_default.
    #
    # source://activesupport//lib/active_support/core_ext/time/zones.rb#10
    def zone_default; end

    # Sets the attribute zone_default
    #
    # @param value the value to set the attribute zone_default to.
    #
    # source://activesupport//lib/active_support/core_ext/time/zones.rb#10
    def zone_default=(_arg0); end
  end
end

# source://activesupport//lib/active_support/core_ext/time/calculations.rb#14
Time::COMMON_YEAR_DAYS_IN_MONTH = T.let(T.unsafe(nil), Array)

# source://activesupport//lib/active_support/core_ext/time/conversions.rb#8
Time::DATE_FORMATS = T.let(T.unsafe(nil), Hash)

# source://activesupport//lib/active_support/core_ext/time/deprecated_conversions.rb#6
Time::NOT_SET = T.let(T.unsafe(nil), Object)

# source://activesupport//lib/active_support/core_ext/object/blank.rb#72
class TrueClass
  # source://activesupport//lib/active_support/core_ext/object/json.rb#75
  def as_json(options = T.unsafe(nil)); end

  # +true+ is not blank:
  #
  #   true.blank? # => false
  #
  # @return [false]
  #
  # source://activesupport//lib/active_support/core_ext/object/blank.rb#78
  def blank?; end

  # Returns +self+.
  #
  # source://activesupport//lib/active_support/core_ext/object/to_query.rb#27
  def to_param; end
end

# source://activesupport//lib/active_support/core_ext/object/json.rb#216
class URI::Generic
  include ::URI::RFC2396_REGEXP

  # source://activesupport//lib/active_support/core_ext/object/json.rb#217
  def as_json(options = T.unsafe(nil)); end
end

# source://activesupport//lib/active_support/core_ext/object/duplicable.rb#41
class UnboundMethod
  # Unbound methods are not duplicable:
  #
  #   method(:puts).unbind.duplicable? # => false
  #   method(:puts).unbind.dup         # => TypeError: allocator undefined for UnboundMethod
  #
  # @return [Boolean]
  #
  # source://activesupport//lib/active_support/core_ext/object/duplicable.rb#46
  def duplicable?; end
end