diff --git a/.gitignore b/.gitignore
index d04479c..85db960 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
/node_modules
-.turbo/
\ No newline at end of file
+.turbo/
+
+**/.DS_Store
\ No newline at end of file
diff --git a/apps/govquests-api/rails_app/Gemfile b/apps/govquests-api/rails_app/Gemfile
index 198c285..c746f36 100644
--- a/apps/govquests-api/rails_app/Gemfile
+++ b/apps/govquests-api/rails_app/Gemfile
@@ -56,8 +56,8 @@ group :development, :test do
gem "rubocop-rails-omakase", require: false
# Types
- # gem "sorbet"
- # gem "tapioca"
+ gem "sorbet"
+ gem "tapioca"
end
group :test do
diff --git a/apps/govquests-api/rails_app/Gemfile.lock b/apps/govquests-api/rails_app/Gemfile.lock
index eeaebcf..bade7af 100644
--- a/apps/govquests-api/rails_app/Gemfile.lock
+++ b/apps/govquests-api/rails_app/Gemfile.lock
@@ -232,6 +232,7 @@ GEM
net-smtp (0.5.0)
net-protocol
net-ssh (7.2.3)
+ netrc (0.11.0)
nio4r (2.7.3)
nokogiri (1.16.7-aarch64-linux)
racc (~> 1.4)
@@ -250,6 +251,7 @@ GEM
parser (3.3.5.0)
ast (~> 2.4.1)
racc
+ prism (0.30.0)
pry (0.14.2)
coderay (~> 1.1)
method_source (~> 1.0)
@@ -300,6 +302,9 @@ GEM
ruby_event_store-active_record (= 2.15.0)
rainbow (3.1.1)
rake (13.2.1)
+ rbi (0.1.13)
+ prism (>= 0.18.0, < 1.0.0)
+ sorbet-runtime (>= 0.5.9204)
rdoc (6.7.0)
psych (>= 4.0.0)
regexp_parser (2.9.2)
@@ -360,7 +365,18 @@ GEM
fugit (~> 1.11.0)
railties (>= 7.1)
thor (~> 1.3.1)
- sorbet-runtime (0.5.11585)
+ sorbet (0.5.11463)
+ sorbet-static (= 0.5.11463)
+ sorbet-runtime (0.5.11463)
+ sorbet-static (0.5.11463-universal-darwin)
+ sorbet-static-and-runtime (0.5.11463)
+ sorbet (= 0.5.11463)
+ sorbet-runtime (= 0.5.11463)
+ spoom (1.3.2)
+ erubi (>= 1.10.0)
+ prism (>= 0.19.0)
+ sorbet-static-and-runtime (>= 0.5.10187)
+ thor (>= 0.19.2)
sqlite3 (2.1.0-aarch64-linux-gnu)
sqlite3 (2.1.0-aarch64-linux-musl)
sqlite3 (2.1.0-arm-linux-gnu)
@@ -378,6 +394,15 @@ GEM
net-ssh (>= 2.8.0)
ostruct
stringio (3.1.1)
+ tapioca (0.15.0)
+ bundler (>= 2.2.25)
+ netrc (>= 0.11.0)
+ parallel (>= 1.21.0)
+ rbi (>= 0.1.4, < 0.2)
+ sorbet-static-and-runtime (>= 0.5.11087)
+ spoom (>= 1.2.0)
+ thor (>= 1.2.0)
+ yard-sorbet
thor (1.3.2)
thruster (0.1.8)
thruster (0.1.8-aarch64-linux)
@@ -397,6 +422,10 @@ GEM
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
+ yard (0.9.36)
+ yard-sorbet (0.9.0)
+ sorbet-runtime
+ yard
zeitwerk (2.6.18)
PLATFORMS
@@ -437,7 +466,9 @@ DEPENDENCIES
rubocop-rake
solid_cache
solid_queue
+ sorbet
sqlite3 (>= 2.1)
+ tapioca
thruster
tzinfo-data
diff --git a/apps/govquests-api/rails_app/Makefile b/apps/govquests-api/rails_app/Makefile
index 1b0ddf1..2fd4bf3 100644
--- a/apps/govquests-api/rails_app/Makefile
+++ b/apps/govquests-api/rails_app/Makefile
@@ -7,4 +7,7 @@ test:
lint:
@bundle exec rubocop -A
-.PHONY: install test
\ No newline at end of file
+sorbet:
+ @bundle exec srb tc
+
+.PHONY: install test lint sorbet
\ No newline at end of file
diff --git a/apps/govquests-api/rails_app/bin/tapioca b/apps/govquests-api/rails_app/bin/tapioca
new file mode 100755
index 0000000..a6ae757
--- /dev/null
+++ b/apps/govquests-api/rails_app/bin/tapioca
@@ -0,0 +1,27 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+#
+# This file was generated by Bundler.
+#
+# The application 'tapioca' is installed as part of a gem, and
+# this file is here to facilitate running it.
+#
+
+ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
+
+bundle_binstub = File.expand_path("bundle", __dir__)
+
+if File.file?(bundle_binstub)
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
+ load(bundle_binstub)
+ else
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
+Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
+ end
+end
+
+require "rubygems"
+require "bundler/setup"
+
+load Gem.bin_path("tapioca", "tapioca")
diff --git a/apps/govquests-api/rails_app/config/initializers/rails_event_store.rb b/apps/govquests-api/rails_app/config/initializers/rails_event_store.rb
index f828ed8..bf0fa4c 100644
--- a/apps/govquests-api/rails_app/config/initializers/rails_event_store.rb
+++ b/apps/govquests-api/rails_app/config/initializers/rails_event_store.rb
@@ -14,5 +14,4 @@
end
Configuration.new.call(Rails.configuration.event_store, Rails.configuration.command_bus)
- puts " JOaNA"
end
diff --git a/apps/govquests-api/rails_app/sorbet/config b/apps/govquests-api/rails_app/sorbet/config
new file mode 100644
index 0000000..9b2d35a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/config
@@ -0,0 +1,5 @@
+--dir
+.
+--ignore=tmp/
+--ignore=vendor/
+--suppress-payload-superclass-redefinition-for=Reline::ANSI
\ No newline at end of file
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/.gitattributes b/apps/govquests-api/rails_app/sorbet/rbi/annotations/.gitattributes
new file mode 100644
index 0000000..d2eacd2
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/.gitattributes
@@ -0,0 +1 @@
+**/*.rbi linguist-vendored=true
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionmailer.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionmailer.rbi
new file mode 100644
index 0000000..3d2771d
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionmailer.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActionMailer::Base
+ sig { params(headers: T.untyped, block: T.nilable(T.proc.params(arg0: ActionMailer::Collector).void)).returns(Mail::Message) }
+ def mail(headers = nil, &block); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionpack.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionpack.rbi
new file mode 100644
index 0000000..9fdb5f2
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionpack.rbi
@@ -0,0 +1,429 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActionController::API
+ MODULES = T.let(T.unsafe(nil), T::Array[T.untyped])
+end
+
+module ActionController::Flash::ClassMethods
+ sig { params(types: Symbol).void }
+ def add_flash_types(*types); end
+end
+
+module ActionController::Helpers::ClassMethods
+ sig { returns(ActionView::Base) }
+ def helpers; end
+end
+
+class ActionController::Metal < AbstractController::Base
+ sig { returns(ActionController::Parameters) }
+ def params; end
+
+ sig { returns(ActionDispatch::Request) }
+ def request; end
+
+ sig { returns(ActionDispatch::Response) }
+ def response; end
+end
+
+module ActionController::MimeResponds
+ sig { params(mimes: T.nilable(Symbol), block: T.nilable(T.proc.params(arg0: ActionController::MimeResponds::Collector).void)).void }
+ def respond_to(*mimes, &block); end
+end
+
+class ActionController::Parameters
+ sig { params(other: T.any(String, ActionController::Parameters)).returns(T::Boolean) }
+ def ==(other); end
+
+ sig { params(key: T.any(String, Symbol), value: T.untyped).void }
+ def []=(key, value); end
+
+ sig { returns(T.nilable(T::Array[T.any(String, Symbol)])) }
+ def always_permitted_parameters; end
+
+ sig { params(obj: T.nilable(T::Array[T.any(String, Symbol)])).void }
+ def always_permitted_parameters=(obj); end
+
+ sig { returns(T.untyped) }
+ def deep_dup; end
+
+ sig { params(key: T.any(String, Symbol), block: T.untyped).returns(T.untyped) }
+ def delete(key, &block); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(T.untyped) }
+ def dig(*keys); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def each_pair(&block); end
+
+ # each is an alias of each_pair
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def each(&block); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ def except(*keys); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(T.untyped) }
+ def extract!(*keys); end
+
+ sig { params(key: T.any(String, Symbol), args: T.untyped).returns(T.untyped) }
+ def fetch(key, *args); end
+
+ sig { returns(String) }
+ def inspect; end
+
+ sig { params(other_hash: T.untyped, block: T.untyped).returns(ActionController::Parameters) }
+ def merge!(other_hash, &block); end
+
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def merge(other_hash); end
+
+ sig { returns(T.untyped) }
+ def parameters; end
+
+ sig { returns(T.self_type) }
+ def permit!; end
+
+ # You can pass _a lot_ of stuff to permit, so filters is left untyped for now.
+ sig { params(filters: T.untyped).returns(ActionController::Parameters) }
+ def permit(*filters); end
+
+ sig { params(new_permitted: T.untyped).void }
+ def permitted=(new_permitted); end
+
+ sig { returns(T::Boolean) }
+ def permitted?; end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def reject!(&block); end
+
+ # delete_if is an alias of reject!
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def delete_if(&block); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def reject(&block); end
+
+ sig { params(key: T.any(String, Symbol)).returns(T.untyped) }
+ def [](key); end
+
+ sig { params(key: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ sig { params(key: T::Array[T.any(String, Symbol)]).returns(T::Array[ActionController::Parameters]) }
+ def require(key); end
+
+ sig { params(key: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ sig { params(key: T::Array[T.any(String, Symbol)]).returns(T::Array[ActionController::Parameters]) }
+ def required(key); end
+
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def reverse_merge!(other_hash); end
+
+ # with_defaults! is an alias of reverse_merge!
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def with_defaults!(other_hash); end
+
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def reverse_merge(other_hash); end
+
+ # with_defaults is an alias of reverse_merge
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def with_defaults(other_hash); end
+
+ sig { params(block: T.untyped).returns(T.nilable(ActionController::Parameters)) }
+ def select!(&block); end
+
+ # keep_if is an alias of select!
+ sig { params(block: T.untyped).returns(T.nilable(ActionController::Parameters)) }
+ def keep_if(&block); end
+
+ sig { params(block: T.untyped).returns(ActionController::Parameters) }
+ def select(&block); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ def slice!(*keys); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ def slice(*keys); end
+
+ sig { params(block: T.nilable(Proc)).returns(ActiveSupport::HashWithIndifferentAccess) }
+ def to_h(&block); end
+
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
+ def to_hash; end
+
+ # to_param is an alias of to_query
+ sig { params(args: String).returns(T.nilable(String)) }
+ def to_param(*args); end
+
+ sig { params(args: String).returns(T.nilable(String)) }
+ def to_query(*args); end
+
+ sig { returns(ActiveSupport::HashWithIndifferentAccess) }
+ def to_unsafe_h; end
+
+ # to_unsafe_hash is an alias of to_unsafe_h
+ sig { returns(ActiveSupport::HashWithIndifferentAccess) }
+ def to_unsafe_hash; end
+
+ sig { params(block: T.untyped).returns(ActionController::Parameters) }
+ def transform_keys!(&block); end
+
+ sig { params(block: T.untyped).returns(ActionController::Parameters) }
+ def transform_keys(&block); end
+
+ sig { returns(ActionController::Parameters) }
+ def transform_values!; end
+
+ sig { returns(ActionController::Parameters) }
+ def transform_values; end
+
+ sig { params(keys: T.any(String, Symbol)).returns(T.untyped) }
+ def values_at(*keys); end
+
+ sig { returns(T.any(Symbol, T::Boolean)) }
+ def self.action_on_unpermitted_parameters; end
+
+ sig { params(obj: T.any(Symbol, T::Boolean)).void }
+ def self.action_on_unpermitted_parameters=(obj); end
+
+ sig { returns(T::Array[T.any(String, Symbol)]) }
+ def self.always_permitted_parameters; end
+
+ sig { params(obj: T::Array[T.any(String, Symbol)]).void }
+ def self.always_permitted_parameters=(obj); end
+
+ sig { returns(T::Boolean) }
+ def self.permit_all_parameters; end
+
+ sig { params(obj: T::Boolean).void }
+ def self.permit_all_parameters=(obj); end
+end
+
+module ActionController::RequestForgeryProtection
+ sig { returns(T::Boolean) }
+ def protect_against_forgery?; end
+
+ sig { params(form_options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def form_authenticity_token(form_options: {}); end
+end
+
+module ActionController::RequestForgeryProtection::ClassMethods
+ sig { params(options: T::Hash[T.untyped, T.untyped]).void }
+ def skip_forgery_protection(options = T.unsafe(nil)); end
+end
+
+module ActionController::StrongParameters
+ sig { returns(ActionController::Parameters) }
+ def params; end
+end
+
+module ActionDispatch::Http::Parameters
+ sig { returns(ActionController::Parameters) }
+ def parameters; end
+
+ # params is an alias of parameters
+ sig { returns(ActionController::Parameters) }
+ def params; end
+end
+
+module ActionDispatch::Integration::Runner
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { params(host: String).returns(String) }
+ def host!(host); end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { params(flag: T::Boolean).returns(T::Boolean) }
+ def https!(flag = true); end
+end
+
+class ActionDispatch::IntegrationTest
+ # The following methods are accessible on `IntegrationTest`
+ # through the following delegation chain:
+ # - `IntegrationTest` includes `IntegrationTest::Behavior`
+ # - `IntegrationTest::Behavior` includes `Integration::Runner`
+ # - `Integration::Runner#method_missing` delegates to `Integration::Session`
+ #
+ # Then `Integration::Session` either implements the methods
+ # directly or further delegates to `TestProcess` (included) or
+ # `TestResponse` / `Request` (via `delegate`).
+ #
+ # Cf. https://github.com/Shopify/rbi-central/pull/138 for more context.
+ # @method_missing: delegated to ActionDispatch::TestProcess
+ sig { returns(ActionDispatch::Flash::FlashHash) }
+ def flash; end
+
+ # @method_missing: delegated to ActionDispatch::TestProcess
+ sig { returns(ActionDispatch::Request::Session) }
+ def session; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(Integer)) }
+ def status; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(String)) }
+ def status_message; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(ActionDispatch::Response::Header) }
+ def headers; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(String)) }
+ def body; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(T::Boolean)) }
+ def redirect?; end
+
+ # @method_missing: delegated to ActionDispatch::Request
+ sig { returns(T.nilable(String)) }
+ def path; end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(String) }
+ def host; end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { params(host: String).returns(String) }
+ attr_writer :host
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(T.nilable(String)) }
+ attr_accessor :remote_addr
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(T.nilable(String)) }
+ attr_accessor :accept
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(Rack::Test::CookieJar) }
+ def cookies; end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(T.nilable(ActionController::Base)) }
+ attr_reader :controller
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(ActionDispatch::TestRequest) }
+ attr_reader :request
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(ActionDispatch::TestResponse) }
+ attr_reader :response
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(Integer) }
+ attr_accessor :request_count
+end
+
+class ActionDispatch::Request
+ # Provides access to the request's HTTP headers, for example:
+ #
+ # ```ruby
+ # request.headers["Content-Type"] # => "text/plain"
+ # ```
+ sig { returns(ActionDispatch::Http::Headers) }
+ def headers; end
+
+ # Returns a `String` with the last requested path including their params.
+ #
+ # ```ruby
+ # # get '/foo'
+ # request.original_fullpath # => '/foo'
+ #
+ # # get '/foo?bar'
+ # request.original_fullpath # => '/foo?bar'
+ # ```
+ sig { returns(String) }
+ def original_fullpath; end
+
+ # Returns the `String` full path including params of the last URL requested.
+ #
+ # ```ruby
+ # # get "/articles"
+ # request.fullpath # => "/articles"
+ #
+ # # get "/articles?page=2"
+ # request.fullpath # => "/articles?page=2"
+ # ```
+ sig { returns(String) }
+ def fullpath; end
+
+ # Returns the original request URL as a `String`.
+ #
+ # ```ruby
+ # # get "/articles?page=2"
+ # request.original_url # => "http://www.example.com/articles?page=2"
+ # ```
+ sig { returns(String) }
+ def original_url; end
+
+ # The `String` MIME type of the request.
+ #
+ # ```
+ # # get "/articles"
+ # request.media_type # => "application/x-www-form-urlencoded"
+ # ```
+ sig { returns(String) }
+ def media_type; end
+
+ # Returns the content length of the request as an integer.
+ sig { returns(Integer) }
+ def content_length; end
+
+ # Returns the IP address of client as a `String`.
+ sig { returns(String) }
+ def ip; end
+
+ # Returns the IP address of client as a `String`,
+ # usually set by the RemoteIp middleware.
+ sig { returns(String) }
+ def remote_ip; end
+
+ # Returns the unique request id, which is based on either the X-Request-Id header that can
+ # be generated by a firewall, load balancer, or web server or by the RequestId middleware
+ # (which sets the action_dispatch.request_id environment variable).
+ #
+ # This unique ID is useful for tracing a request from end-to-end as part of logging or debugging.
+ # This relies on the Rack variable set by the ActionDispatch::RequestId middleware.
+ sig { returns(T.nilable(String)) }
+ def request_id; end
+
+ # Returns true if the request has a header matching the given key parameter.
+ #
+ # ```ruby
+ # request.key? :ip_spoofing_check # => true
+ # ```
+ sig { params(key: Symbol).returns(T::Boolean) }
+ def key?(key); end
+
+ # True if the request came from localhost, 127.0.0.1, or ::1.
+ sig { returns(T::Boolean) }
+ def local?; end
+end
+
+module ActionDispatch::Routing::Mapper::Resources
+ sig { params(name: T.untyped).returns(T.untyped) }
+ def action_path(name); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def collection(&block); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def member(&block); end
+
+ sig { returns(T.untyped) }
+ def shallow; end
+
+ sig { returns(T::Boolean) }
+ def shallow?; end
+end
+
+class ActionDispatch::Routing::RouteSet
+ sig { params(block: T.proc.bind(ActionDispatch::Routing::Mapper).void).void }
+ def draw(&block); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionview.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionview.rbi
new file mode 100644
index 0000000..9c939f0
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/actionview.rbi
@@ -0,0 +1,75 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module ActionView
+ TemplateError = T.type_alias { Template::Error }
+
+ class MissingTemplate < ActionView::ActionViewError
+ sig { returns(String) }
+ def path; end
+ end
+end
+
+class ActionView::Helpers::FormBuilder
+ sig { returns(T.untyped) }
+ def object; end
+end
+
+module ActionView::Helpers::NumberHelper
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_currency(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_human(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_human_size(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_percentage(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_phone(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_with_delimiter(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_with_precision(number, options = T.unsafe(nil)); end
+end
+
+module ActionView::Helpers::SanitizeHelper
+ mixes_in_class_methods ActionView::Helpers::SanitizeHelper::ClassMethods
+end
+
+module ActionView::Helpers::UrlHelper
+ extend ActiveSupport::Concern
+ include ActionView::Helpers::TagHelper
+ mixes_in_class_methods ActionView::Helpers::UrlHelper::ClassMethods
+
+ sig { params(name: T.nilable(String), options: T.untyped, html_options: T.untyped, block: T.untyped).returns(ActiveSupport::SafeBuffer) }
+ def link_to(name = nil, options = nil, html_options = nil, &block); end
+
+ sig { params(condition: T.untyped, name: String, options: T.untyped, html_options: T.untyped, block: T.untyped).returns(T.untyped) }
+ def link_to_if(condition, name, options = {}, html_options = {}, &block); end
+end
+
+module ActionView::Layouts
+ mixes_in_class_methods ActionView::Layouts::ClassMethods
+end
+
+module ActionView::Rendering
+ mixes_in_class_methods ActionView::Rendering::ClassMethods
+end
+
+module ActionView::ViewPaths
+ mixes_in_class_methods ActionView::ViewPaths::ClassMethods
+end
+
+module ActionView::ViewPaths::ClassMethods
+ sig { params(value: T.any(String, T::Array[String])).void }
+ def append_view_path(value); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/activejob.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activejob.rbi
new file mode 100644
index 0000000..0f7441e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activejob.rbi
@@ -0,0 +1,44 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActiveJob::Base
+ sig { params(blk: T.proc.bind(T.attached_class).params(job: T.attached_class).void).void }
+ def self.after_discard(&blk); end
+
+ sig { params(filters: T.untyped, blk: T.nilable(T.proc.bind(T.attached_class).params(job: T.attached_class).void)).void }
+ def self.after_enqueue(*filters, &blk); end
+
+ sig { params(filters: T.untyped, blk: T.nilable(T.proc.bind(T.attached_class).params(job: T.attached_class).void)).void }
+ def self.after_perform(*filters, &blk); end
+
+ sig { params(filters: T.untyped, blk: T.nilable(T.proc.bind(T.attached_class).params(job: T.attached_class, block: T.untyped).void)).void }
+ def self.around_enqueue(*filters, &blk); end
+
+ sig { params(filters: T.untyped, blk: T.nilable(T.proc.bind(T.attached_class).params(job: T.attached_class, block: T.untyped).void)).void }
+ def self.around_perform(*filters, &blk); end
+
+ sig { params(filters: T.untyped, blk: T.nilable(T.proc.bind(T.attached_class).params(job: T.attached_class).void)).void }
+ def self.before_enqueue(*filters, &blk); end
+
+ sig { params(filters: T.untyped, blk: T.nilable(T.proc.bind(T.attached_class).params(job: T.attached_class).void)).void }
+ def self.before_perform(*filters, &blk); end
+
+ sig { type_parameters(:ExceptionType).params(exceptions: T::Class[T.type_parameter(:ExceptionType)], block: T.nilable(T.proc.params(job: T.attached_class, error: T.type_parameter(:ExceptionType)).void)).void }
+ sig { params(exceptions: T.any(Module, String), block: T.nilable(T.proc.params(job: T.attached_class, error: T.untyped).void)).void }
+ def self.discard_on(*exceptions, &block); end
+
+ sig { params(klasses: T.any(Module, String), with: T.nilable(Symbol), block: T.nilable(T.proc.params(exception: T.untyped).void)).void }
+ def self.rescue_from(*klasses, with: nil, &block); end
+
+ sig { params(exceptions: T.any(Module, String), wait: T.any(ActiveSupport::Duration, Integer, Symbol, T.proc.params(executions: Integer).returns(Integer)), attempts: T.any(Integer, Symbol), queue: T.nilable(T.any(String, Symbol)), priority: T.untyped, jitter: Numeric, block: T.nilable(T.proc.params(job: T.attached_class, error: T.untyped).void)).void }
+ def self.retry_on(*exceptions, wait: 3.seconds, attempts: 5, queue: nil, priority: nil, jitter: JITTER_DEFAULT, &block); end
+
+ sig { params(part_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.bind(T.attached_class).returns(T.untyped))).void }
+ def self.queue_as(part_name = nil, &block); end
+
+ sig { params(priority: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).returns(T.untyped))).void }
+ def self.queue_with_priority(priority = nil, &block); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/activemodel.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activemodel.rbi
new file mode 100644
index 0000000..1e1a642
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activemodel.rbi
@@ -0,0 +1,89 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActiveModel::Errors
+ Elem = type_member { { fixed: ActiveModel::Error } }
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
+ def [](attribute); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(ActiveModel::Error) }
+ def add(attribute, type = :invalid, **options); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T::Boolean) }
+ def added?(attribute, type = :invalid, options = {}); end
+
+ sig { params(options: T.untyped).returns(T::Hash[T.untyped, T.untyped]) }
+ def as_json(options = nil); end
+
+ sig { returns(T::Array[Symbol]) }
+ def attribute_names; end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T.nilable(T::Array[String])) }
+ def delete(attribute, type = nil, **options); end
+
+ sig { returns(T::Hash[Symbol, T::Array[T::Hash[Symbol, T.untyped]]]) }
+ def details; end
+
+ sig { returns(T::Array[Elem]) }
+ def errors; end
+
+ sig { params(attribute: T.any(Symbol, String), message: String).returns(String) }
+ def full_message(attribute, message); end
+
+ sig { returns(T::Array[String]) }
+ def full_messages; end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
+ def full_messages_for(attribute); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(String) }
+ def generate_message(attribute, type = :invalid, options = {}); end
+
+ sig { returns(T::Hash[Symbol, T::Array[ActiveModel::Error]]) }
+ def group_by_attribute; end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
+ def has_key?(attribute); end
+
+ sig { params(error: ActiveModel::Error, override_options: T.untyped).returns(T::Array[ActiveModel::Error]) }
+ def import(error, override_options = {}); end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
+ def include?(attribute); end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
+ def key?(attribute); end
+
+ sig { params(other: T.untyped).returns(T::Array[ActiveModel::Error]) }
+ def merge!(other); end
+
+ sig { returns(T::Hash[Symbol, T::Array[String]]) }
+ def messages; end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
+ def messages_for(attribute); end
+
+ sig { returns(T::Array[Elem]) }
+ def objects; end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped).returns(T::Boolean) }
+ def of_kind?(attribute, type = :invalid); end
+
+ sig { returns(T::Array[String]) }
+ def to_a; end
+
+ sig { params(full_messages: T.untyped).returns(T::Hash[Symbol, T::Array[String]]) }
+ def to_hash(full_messages = false); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T::Array[ActiveModel::Error]) }
+ def where(attribute, type = nil, **options); end
+end
+
+module ActiveModel::Validations
+ sig { returns(ActiveModel::Errors) }
+ def errors; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/activerecord.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activerecord.rbi
new file mode 100644
index 0000000..c023f0d
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activerecord.rbi
@@ -0,0 +1,92 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActiveRecord::Schema
+ sig { params(info: T::Hash[T.untyped, T.untyped], blk: T.proc.bind(ActiveRecord::Schema).void).void }
+ def self.define(info = nil, &blk); end
+end
+
+class ActiveRecord::Migration
+ # @shim: Methods on migration are delegated to `SchemaStatements` using `method_missing`
+ include ActiveRecord::ConnectionAdapters::SchemaStatements
+
+ # @shim: Methods on migration are delegated to `DatabaseStatements` using `method_missing`
+ include ActiveRecord::ConnectionAdapters::DatabaseStatements
+end
+
+class ActiveRecord::Base
+ sig { returns(FalseClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always true, `presence` always returns `self`
+ sig { returns(T.self_type) }
+ def presence; end
+
+ sig { returns(TrueClass) }
+ def present?; end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_initialize(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_find(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_touch(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_validation(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_validation(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_save(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_save(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_save(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_create(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_create(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_create(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_update(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_update(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_update(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_destroy(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_destroy(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_destroy(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_commit(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_rollback(*args, **options, &block); end
+end
+
+class ActiveRecord::Relation
+ sig { returns(T::Boolean) }
+ def blank?; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/activesupport.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activesupport.rbi
new file mode 100644
index 0000000..716210d
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/activesupport.rbi
@@ -0,0 +1,452 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module ActiveSupport::Testing::Declarative
+ sig { params(name: String, block: T.proc.bind(T.untyped).void).void }
+ def test(name, &block); end
+end
+
+class ActiveSupport::EnvironmentInquirer
+ sig { returns(T::Boolean) }
+ def development?; end
+
+ sig { returns(T::Boolean) }
+ def production?; end
+
+ sig { returns(T::Boolean) }
+ def test?; end
+
+ # @method_missing: delegated to String through ActiveSupport::StringInquirer
+ sig { returns(T::Boolean) }
+ def staging?; end
+end
+
+module ActiveSupport::Testing::SetupAndTeardown::ClassMethods
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
+ def setup(*args, &block); end
+
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
+ def teardown(*args, &block); end
+end
+
+class ActiveSupport::TestCase
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
+ def self.setup(*args, &block); end
+
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
+ def self.teardown(*args, &block); end
+
+ sig { params(name: String, block: T.proc.bind(T.attached_class).void).void }
+ def self.test(name, &block); end
+end
+
+class ActiveSupport::TimeWithZone
+ # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
+ include ::DateAndTime::Zones
+
+ # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
+ include ::DateAndTime::Calculations
+
+ sig { returns(FalseClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always true, `presence` always returns `self`
+ sig { returns(T.self_type) }
+ def presence; end
+
+ # @shim: since `blank?` is always false, `present?` always returns `true`
+ sig { returns(TrueClass) }
+ def present?; end
+end
+
+class Object
+ sig { returns(T::Boolean) }
+ def blank?; end
+
+ sig { returns(FalseClass) }
+ def html_safe?; end
+
+ sig { returns(T.nilable(T.self_type)) }
+ def presence; end
+
+ sig { params(another_object: T.untyped).returns(T.nilable(T.self_type)) }
+ def presence_in(another_object); end
+
+ sig { returns(T::Boolean) }
+ def present?; end
+end
+
+class Hash
+ sig { returns(T::Boolean) }
+ def blank?; end
+
+ sig { returns(T::Boolean) }
+ def present?; end
+
+ sig { returns(T::Boolean) }
+ def extractable_options?; end
+end
+
+class Array
+ sig { returns(T::Boolean) }
+ def blank?; end
+
+ sig { returns(T::Boolean) }
+ def present?; end
+
+ sig { params(position: Integer).returns(T.self_type) }
+ def from(position); end
+
+ sig { params(position: Integer).returns(T.self_type) }
+ def to(position); end
+
+ sig { params(elements: T.untyped).returns(T::Array[T.untyped]) }
+ def including(*elements); end
+
+ sig { params(elements: T.untyped).returns(T.self_type) }
+ def excluding(*elements); end
+
+ sig { params(elements: T.untyped).returns(T.self_type) }
+ def without(*elements); end
+
+ sig { returns(T.nilable(Elem)) }
+ def second; end
+
+ sig { returns(T.nilable(Elem)) }
+ def third; end
+
+ sig { returns(T.nilable(Elem)) }
+ def fourth; end
+
+ sig { returns(T.nilable(Elem)) }
+ def fifth; end
+
+ sig { returns(T.nilable(Elem)) }
+ def forty_two; end
+
+ sig { returns(T.nilable(Elem)) }
+ def third_to_last; end
+
+ sig { returns(T.nilable(Elem)) }
+ def second_to_last; end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def to_sentence(options = {}); end
+
+ sig { params(format: Symbol).returns(String) }
+ def to_fs(format = :default); end
+
+ sig { params(format: Symbol).returns(String) }
+ def to_formatted_s(format = :default); end
+
+ sig { returns(String) }
+ def to_xml; end
+
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
+ def extract_options!; end
+
+ sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
+ def in_groups(number, fill_with = T.unsafe(nil), &block); end
+
+ sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
+ def in_groups_of(number, fill_with = T.unsafe(nil), &block); end
+
+ sig { params(value: T.untyped, block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T::Array[T::Array[Elem]]) }
+ def split(value = nil, &block); end
+
+ sig { params(block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T.any(T::Array[Elem], T::Enumerator[Elem])) }
+ def extract!(&block); end
+
+ sig { returns(ActiveSupport::ArrayInquirer) }
+ def inquiry; end
+
+ sig { params(object: T.untyped).returns(T::Array[T.untyped]) }
+ def self.wrap(object); end
+end
+
+class Date
+ sig { returns(FalseClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always true, `presence` always returns `self`
+ sig { returns(T.self_type) }
+ def presence; end
+
+ # @shim: since `blank?` is always false, `present?` always returns `true`
+ sig { returns(TrueClass) }
+ def present?; end
+end
+
+class DateTime
+ sig { returns(FalseClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always true, `presence` always returns `self`
+ sig { returns(T.self_type) }
+ def presence; end
+
+ # @shim: since `blank?` is always false, `present?` always returns `true`
+ sig { returns(TrueClass) }
+ def present?; end
+end
+
+class NilClass
+ sig { returns(TrueClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always false, `presence` always returns `nil`
+ sig { returns(NilClass) }
+ def presence; end
+
+ # @shim: since `blank?` is always true, `present?` always returns `false`
+ sig { returns(FalseClass) }
+ def present?; end
+end
+
+class FalseClass
+ sig { returns(TrueClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always false, `presence` always returns `nil`
+ sig { returns(NilClass) }
+ def presence; end
+
+ # @shim: since `blank?` is always true, `present?` always returns `false`
+ sig { returns(FalseClass) }
+ def present?; end
+end
+
+class TrueClass
+ sig { returns(FalseClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always true, `presence` always returns `self`
+ sig { returns(T.self_type) }
+ def presence; end
+
+ # @shim: since `blank?` is always false, `present?` always returns `true`
+ sig { returns(TrueClass) }
+ def present?; end
+end
+
+class Numeric
+ sig { returns(FalseClass) }
+ def blank?; end
+
+ sig { returns(TrueClass) }
+ def html_safe?; end
+
+ # @shim: since `present?` is always true, `presence` always returns `self`
+ sig { returns(T.self_type) }
+ def presence; end
+
+ # @shim: since `blank?` is always false, `present?` always returns `true`
+ sig { returns(TrueClass) }
+ def present?; end
+end
+
+class Time
+ sig { returns(FalseClass) }
+ def blank?; end
+
+ # @shim: since `present?` is always true, `presence` always returns `self`
+ sig { returns(T.self_type) }
+ def presence; end
+
+ # @shim: since `blank?` is always false, `present?` always returns `true`
+ sig { returns(TrueClass) }
+ def present?; end
+
+ sig { returns(ActiveSupport::TimeZone) }
+ def self.zone; end
+
+ sig { returns(T.any(ActiveSupport::TimeWithZone, ::Time)) }
+ def self.current; end
+end
+
+class Symbol
+ sig { returns(T::Boolean) }
+ def blank?; end
+
+ sig { returns(T::Boolean) }
+ def present?; end
+
+ # alias for `#start_with?`
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
+ def starts_with?(*string_or_regexp); end
+
+ # alias for `#end_with?`
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
+ def ends_with?(*string_or_regexp); end
+end
+
+class String
+ sig { returns(TrueClass) }
+ def acts_like_string?; end
+
+ sig { params(position: Integer).returns(T.nilable(String)) }
+ sig { params(position: T.any(T::Range[Integer], Regexp)).returns(T.nilable(String)) }
+ sig { params(position: String).returns(T.nilable(String)) }
+ def at(position); end
+
+ sig { returns(String) }
+ def as_json; end
+
+ sig { returns(T::Boolean) }
+ def blank?; end
+
+ sig { params(first_letter: Symbol).returns(String) }
+ def camelcase(first_letter = :upper); end
+
+ sig { params(first_letter: Symbol).returns(String) }
+ def camelize(first_letter = :upper); end
+
+ sig { returns(String) }
+ def classify; end
+
+ sig { returns(T.untyped) }
+ def constantize; end
+
+ sig { returns(String) }
+ def dasherize; end
+
+ sig { returns(String) }
+ def deconstantize; end
+
+ sig { returns(String) }
+ def demodulize; end
+
+ # alias for `#end_with?`
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
+ def ends_with?(*string_or_regexp); end
+
+ sig { returns(String) }
+ def downcase_first; end
+
+ sig { params(string: String).returns(T::Boolean) }
+ def exclude?(string); end
+
+ sig { params(limit: Integer).returns(String) }
+ def first(limit = 1); end
+
+ sig { params(separate_class_name_and_id_with_underscore: T::Boolean).returns(String) }
+ def foreign_key(separate_class_name_and_id_with_underscore = true); end
+
+ sig { params(position: Integer).returns(String) }
+ def from(position); end
+
+ sig { returns(ActiveSupport::SafeBuffer) }
+ def html_safe; end
+
+ sig { params(capitalize: T::Boolean, keep_id_suffix: T::Boolean).returns(String) }
+ def humanize(capitalize: true, keep_id_suffix: false); end
+
+ sig { params(zone: T.nilable(T.any(ActiveSupport::TimeZone, String))).returns(T.any(ActiveSupport::TimeWithZone, Time)) }
+ def in_time_zone(zone = ::Time.zone); end
+
+ sig { params(amount: Integer, indent_string: T.nilable(String), indent_empty_lines: T::Boolean).returns(String) }
+ def indent(amount, indent_string = nil, indent_empty_lines = false); end
+
+ sig { params(amount: Integer, indent_string: T.nilable(String), indent_empty_lines: T::Boolean).returns(T.nilable(String)) }
+ def indent!(amount, indent_string = nil, indent_empty_lines = false); end
+
+ sig { returns(ActiveSupport::StringInquirer) }
+ def inquiry; end
+
+ sig { returns(T::Boolean) }
+ def is_utf8?; end
+
+ sig { params(limit: Integer).returns(String) }
+ def last(limit = 1); end
+
+ sig { returns(ActiveSupport::Multibyte::Chars) }
+ def mb_chars; end
+
+ sig { params(separator: String, preserve_case: T::Boolean, locale: T.nilable(Symbol)).returns(String) }
+ def parameterize(separator: "-", preserve_case: false, locale: nil); end
+
+ sig { params(count: T.nilable(T.any(Integer, Symbol)), locale: T.nilable(Symbol)).returns(String) }
+ def pluralize(count = nil, locale = :en); end
+
+ sig { returns(T::Boolean) }
+ def present?; end
+
+ sig { params(patterns: T.any(String, Regexp)).returns(String) }
+ def remove(*patterns); end
+
+ sig { params(patterns: T.any(String, Regexp)).returns(String) }
+ def remove!(*patterns); end
+
+ sig { returns(T.untyped) }
+ def safe_constantize; end
+
+ sig { params(locale: Symbol).returns(String) }
+ def singularize(locale = :en); end
+
+ sig { returns(String) }
+ def squish; end
+
+ sig { returns(String) }
+ def squish!; end
+
+ # alias for `#start_with?`
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
+ def starts_with?(*string_or_regexp); end
+
+ sig { returns(String) }
+ def strip_heredoc; end
+
+ sig { returns(String) }
+ def tableize; end
+
+ sig { params(keep_id_suffix: T::Boolean).returns(String) }
+ def titlecase(keep_id_suffix: false); end
+
+ sig { params(keep_id_suffix: T::Boolean).returns(String) }
+ def titleize(keep_id_suffix: false); end
+
+ sig { params(position: Integer).returns(String) }
+ def to(position); end
+
+ sig { returns(::Date) }
+ def to_date; end
+
+ sig { returns(::DateTime) }
+ def to_datetime; end
+
+ sig { params(form: T.nilable(Symbol)).returns(T.nilable(Time)) }
+ def to_time(form = :local); end
+
+ sig { params(truncate_to: Integer, options: T::Hash[Symbol, T.anything]).returns(String) }
+ def truncate(truncate_to, options = {}); end
+
+ sig { params(truncate_to: Integer, omission: T.nilable(String)).returns(String) }
+ def truncate_bytes(truncate_to, omission: "…"); end
+
+ sig { params(words_count: Integer, options: T::Hash[Symbol, T.anything]).returns(String) }
+ def truncate_words(words_count, options = {}); end
+
+ sig { returns(String) }
+ def underscore; end
+
+ sig { returns(String) }
+ def upcase_first; end
+end
+
+class ActiveSupport::ErrorReporter
+ sig { type_parameters(:Block, :Fallback).params(error_classes: T.class_of(Exception), severity: T.nilable(Symbol), context: T.nilable(T::Hash[Symbol, T.untyped]), fallback: T.nilable(T.proc.returns(T.type_parameter(:Fallback))), source: T.nilable(String), blk: T.proc.returns(T.type_parameter(:Block))).returns(T.any(T.type_parameter(:Block), T.type_parameter(:Fallback))) }
+ def handle(*error_classes, severity: T.unsafe(nil), context: T.unsafe(nil), fallback: T.unsafe(nil), source: T.unsafe(nil), &blk); end
+
+ sig { type_parameters(:Block).params(error_classes: T.class_of(Exception), severity: T.nilable(Symbol), context: T.nilable(T::Hash[Symbol, T.untyped]), source: T.nilable(String), blk: T.proc.returns(T.type_parameter(:Block))).returns(T.type_parameter(:Block)) }
+ def record(*error_classes, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil), &blk); end
+
+ sig { params(error: Exception, handled: T::Boolean, severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void }
+ def report(error, handled: true, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end
+
+ # @version >= 7.2.0.beta1
+ sig { params(error: T.any(Exception, String), severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void }
+ def unexpected(error, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/globalid.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/globalid.rbi
new file mode 100644
index 0000000..916b21d
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/globalid.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActiveRecord::Base
+ # @shim: this is included at runtime https://github.com/rails/globalid/blob/v1.0.0/lib/global_id/railtie.rb#L38
+ include GlobalID::Identification
+end
+
+module GlobalID::Identification
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(GlobalID) }
+ def to_gid(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def to_gid_param(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(GlobalID) }
+ def to_global_id(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(SignedGlobalID) }
+ def to_sgid(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def to_sgid_param(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(SignedGlobalID) }
+ def to_signed_global_id(options = {}); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/minitest.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/minitest.rbi
new file mode 100644
index 0000000..64a8928
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/minitest.rbi
@@ -0,0 +1,119 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module Minitest::Assertions
+ sig { params(test: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert(test, msg = nil); end
+
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_empty(obj, msg = nil); end
+
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_equal(exp, act, msg = nil); end
+
+ sig { params(exp: T.anything, act: T.anything, delta: Numeric, msg: T.anything).returns(TrueClass) }
+ def assert_in_delta(exp, act, delta = T.unsafe(nil), msg = nil); end
+
+ sig { params(a: T.anything, b: T.anything, epsilon: Numeric, msg: T.anything).returns(TrueClass) }
+ def assert_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = nil); end
+
+ sig { params(collection: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_includes(collection, obj, msg = nil); end
+
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_instance_of(cls, obj, msg = nil); end
+
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_kind_of(cls, obj, msg = nil); end
+
+ sig { params(matcher: T.any(String, Regexp), obj: T.anything, msg: T.anything).returns(MatchData) }
+ def assert_match(matcher, obj, msg = nil); end
+
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_nil(obj, msg = nil); end
+
+ sig { params(o1: T.anything, op: T.any(Symbol, String), o2: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_operator(o1, op, o2 = T.unsafe(nil), msg = nil); end
+
+ sig { params(stdout: T.nilable(T.any(String, Regexp)), stderr: T.nilable(T.any(String, Regexp)), block: T.proc.void).returns(T::Boolean) }
+ def assert_output(stdout = nil, stderr = nil, &block); end
+
+ sig { params(path: T.any(String, Pathname), msg: T.anything).returns(TrueClass) }
+ def assert_path_exists(path, msg = nil); end
+
+ sig { params(block: T.proc.void).returns(TrueClass) }
+ def assert_pattern(&block); end
+
+ sig { params(o1: T.anything, op: T.any(String, Symbol), msg: T.anything).returns(TrueClass) }
+ def assert_predicate(o1, op, msg = nil); end
+
+ sig { params(exp: NilClass, block: T.proc.void).returns(StandardError) }
+ sig { type_parameters(:T).params(exp: T.any(T::Class[T.type_parameter(:T)], Regexp, String), block: T.proc.void).returns(T.type_parameter(:T)) }
+ def assert_raises(*exp, &block); end
+
+ sig { params(obj: T.anything, meth: T.any(String, Symbol), msg: T.anything, include_all: T::Boolean).returns(TrueClass) }
+ def assert_respond_to(obj, meth, msg = nil, include_all: false); end
+
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
+ def assert_same(exp, act, msg = nil); end
+
+ sig { params(send_ary: T::Array[T.anything], m: T.anything).returns(T::Boolean) }
+ def assert_send(send_ary, m = nil); end
+
+ sig { params(block: T.proc.void).returns(T::Boolean) }
+ def assert_silent(&block); end
+
+ sig { params(sym: Symbol, msg: T.anything, block: T.proc.void).returns(T.anything) }
+ def assert_throws(sym, msg = nil, &block); end
+
+ sig { params(test: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute(test, msg = nil); end
+
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_empty(obj, msg = nil); end
+
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_equal(exp, act, msg = nil); end
+
+ sig { params(exp: T.anything, act: T.anything, delta: Numeric, msg: T.anything).returns(TrueClass) }
+ def refute_in_delta(exp, act, delta = T.unsafe(nil), msg = nil); end
+
+ sig { params(a: T.anything, b: T.anything, epsilon: Numeric, msg: T.anything).returns(TrueClass) }
+ def refute_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = nil); end
+
+ sig { params(collection: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_includes(collection, obj, msg = nil); end
+
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_instance_of(cls, obj, msg = nil); end
+
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_kind_of(cls, obj, msg = nil); end
+
+ sig { params(matcher: T.any(String, Regexp), obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_match(matcher, obj, msg = nil); end
+
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_nil(obj, msg = nil); end
+
+ sig { params(block: T.proc.void).returns(TrueClass) }
+ def refute_pattern(&block); end
+
+ sig { params(o1: T.anything, op: T.any(Symbol, String), o2: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_operator(o1, op, o2 = T.unsafe(nil), msg = nil); end
+
+ sig { params(path: T.any(String, Pathname), msg: T.anything).returns(TrueClass) }
+ def refute_path_exists(path, msg = nil); end
+
+ sig { params(o1: T.anything, op: T.any(String, Symbol), msg: T.anything).returns(TrueClass) }
+ def refute_predicate(o1, op, msg = nil); end
+
+ sig { params(obj: T.anything, meth: T.any(String, Symbol), msg: T.anything, include_all: T::Boolean).returns(TrueClass) }
+ def refute_respond_to(obj, meth, msg = nil, include_all: false); end
+
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
+ def refute_same(exp, act, msg = nil); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/railties.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/railties.rbi
new file mode 100644
index 0000000..cec2842
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/railties.rbi
@@ -0,0 +1,61 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module Rails
+ class << self
+ sig { returns(Rails::Application) }
+ def application; end
+
+ sig { returns(ActiveSupport::BacktraceCleaner) }
+ def backtrace_cleaner; end
+
+ sig { returns(ActiveSupport::Cache::Store) }
+ def cache; end
+
+ sig { returns(ActiveSupport::EnvironmentInquirer) }
+ def env; end
+
+ sig { returns(ActiveSupport::ErrorReporter) }
+ def error; end
+
+ sig { returns(ActiveSupport::Logger) }
+ def logger; end
+
+ sig { returns(Pathname) }
+ def root; end
+
+ sig { returns(String) }
+ def version; end
+ end
+end
+
+class Rails::Application < ::Rails::Engine
+ class << self
+ sig { params(block: T.proc.bind(Rails::Application).void).void }
+ def configure(&block); end
+ end
+
+ sig { params(block: T.proc.bind(Rails::Application).void).void }
+ def configure(&block); end
+
+ sig { returns(T.untyped) }
+ def config; end
+end
+
+class Rails::Engine < ::Rails::Railtie
+ sig { params(block: T.untyped).returns(ActionDispatch::Routing::RouteSet) }
+ def routes(&block); end
+end
+
+class Rails::Railtie
+ sig { params(block: T.proc.bind(Rails::Railtie).void).void }
+ def configure(&block); end
+end
+
+class Rails::Railtie::Configuration
+ sig { params(blk: T.proc.bind(ActiveSupport::Reloader).void).void }
+ def to_prepare(&blk); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/annotations/rainbow.rbi b/apps/govquests-api/rails_app/sorbet/rbi/annotations/rainbow.rbi
new file mode 100644
index 0000000..0d2cb4e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/annotations/rainbow.rbi
@@ -0,0 +1,269 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module Rainbow
+ # @shim: https://github.com/sickill/rainbow/blob/master/lib/rainbow.rb#L10-L12
+ sig { returns(T::Boolean) }
+ attr_accessor :enabled
+
+ class Color
+ sig { returns(Symbol) }
+ attr_reader :ground
+
+ sig { params(ground: Symbol, values: T.any([Integer], [Integer, Integer, Integer])).returns(Color) }
+ def self.build(ground, values); end
+
+ sig { params(hex: String).returns([Integer, Integer, Integer]) }
+ def self.parse_hex_color(hex); end
+
+ class Indexed < Rainbow::Color
+ sig { returns(Integer) }
+ attr_reader :num
+
+ sig { params(ground: Symbol, num: Integer).void }
+ def initialize(ground, num); end
+
+ sig { returns(T::Array[Integer]) }
+ def codes; end
+ end
+
+ class Named < Rainbow::Color::Indexed
+ NAMES = T.let(nil, T::Hash[Symbol, Integer])
+
+ sig { params(ground: Symbol, name: Symbol).void }
+ def initialize(ground, name); end
+
+ sig { returns(T::Array[Symbol]) }
+ def self.color_names; end
+
+ sig { returns(String) }
+ def self.valid_names; end
+ end
+
+ class RGB < Rainbow::Color::Indexed
+ sig { returns(Integer) }
+ attr_reader :r, :g, :b
+
+ sig { params(ground: Symbol, values: Integer).void }
+ def initialize(ground, *values); end
+
+ sig { returns(T::Array[Integer]) }
+ def codes; end
+
+ sig { params(value: Numeric).returns(Integer) }
+ def self.to_ansi_domain(value); end
+ end
+
+ class X11Named < Rainbow::Color::RGB
+ include Rainbow::X11ColorNames
+
+ sig { params(ground: Symbol, name: Symbol).void }
+ def initialize(ground, name); end
+
+ sig { returns(T::Array[Symbol]) }
+ def self.color_names; end
+
+ sig { returns(String) }
+ def self.valid_names; end
+ end
+ end
+
+ sig { returns(Wrapper) }
+ def self.global; end
+
+ sig { returns(T::Boolean) }
+ def self.enabled; end
+
+ sig { params(value: T::Boolean).returns(T::Boolean) }
+ def self.enabled=(value); end
+
+ sig { params(string: String).returns(String) }
+ def self.uncolor(string); end
+
+ class NullPresenter < String
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def color(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def foreground(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def fg(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def background(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def bg(*values); end
+
+ sig { returns(NullPresenter) }
+ def reset; end
+
+ sig { returns(NullPresenter) }
+ def bright; end
+
+ sig { returns(NullPresenter) }
+ def faint; end
+
+ sig { returns(NullPresenter) }
+ def italic; end
+
+ sig { returns(NullPresenter) }
+ def underline; end
+
+ sig { returns(NullPresenter) }
+ def blink; end
+
+ sig { returns(NullPresenter) }
+ def inverse; end
+
+ sig { returns(NullPresenter) }
+ def hide; end
+
+ sig { returns(NullPresenter) }
+ def cross_out; end
+
+ sig { returns(NullPresenter) }
+ def black; end
+
+ sig { returns(NullPresenter) }
+ def red; end
+
+ sig { returns(NullPresenter) }
+ def green; end
+
+ sig { returns(NullPresenter) }
+ def yellow; end
+
+ sig { returns(NullPresenter) }
+ def blue; end
+
+ sig { returns(NullPresenter) }
+ def magenta; end
+
+ sig { returns(NullPresenter) }
+ def cyan; end
+
+ sig { returns(NullPresenter) }
+ def white; end
+
+ sig { returns(NullPresenter) }
+ def bold; end
+
+ sig { returns(NullPresenter) }
+ def dark; end
+
+ sig { returns(NullPresenter) }
+ def strike; end
+ end
+
+ class Presenter < String
+ TERM_EFFECTS = T.let(nil, T::Hash[Symbol, Integer])
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def color(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def foreground(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def fg(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def background(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def bg(*values); end
+
+ sig { returns(Presenter) }
+ def reset; end
+
+ sig { returns(Presenter) }
+ def bright; end
+
+ sig { returns(Presenter) }
+ def faint; end
+
+ sig { returns(Presenter) }
+ def italic; end
+
+ sig { returns(Presenter) }
+ def underline; end
+
+ sig { returns(Presenter) }
+ def blink; end
+
+ sig { returns(Presenter) }
+ def inverse; end
+
+ sig { returns(Presenter) }
+ def hide; end
+
+ sig { returns(Presenter) }
+ def cross_out; end
+
+ sig { returns(Presenter) }
+ def black; end
+
+ sig { returns(Presenter) }
+ def red; end
+
+ sig { returns(Presenter) }
+ def green; end
+
+ sig { returns(Presenter) }
+ def yellow; end
+
+ sig { returns(Presenter) }
+ def blue; end
+
+ sig { returns(Presenter) }
+ def magenta; end
+
+ sig { returns(Presenter) }
+ def cyan; end
+
+ sig { returns(Presenter) }
+ def white; end
+
+ sig { returns(Presenter) }
+ def bold; end
+
+ sig { returns(Presenter) }
+ def dark; end
+
+ sig { returns(Presenter) }
+ def strike; end
+ end
+
+ class StringUtils
+ sig { params(string: String, codes: T::Array[Integer]).returns(String) }
+ def self.wrap_with_sgr(string, codes); end
+
+ sig { params(string: String).returns(String) }
+ def self.uncolor(string); end
+ end
+
+ VERSION = T.let(nil, String)
+
+ class Wrapper
+ sig { returns(T::Boolean) }
+ attr_accessor :enabled
+
+ sig { params(enabled: T::Boolean).void }
+ def initialize(enabled = true); end
+
+ sig { params(string: String).returns(T.any(Rainbow::Presenter, Rainbow::NullPresenter)) }
+ def wrap(string); end
+ end
+
+ module X11ColorNames
+ NAMES = T.let(nil, T::Hash[Symbol, [Integer, Integer, Integer]])
+ end
+end
+
+sig { params(string: String).returns(Rainbow::Presenter) }
+def Rainbow(string); end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/.gitattributes b/apps/govquests-api/rails_app/sorbet/rbi/dsl/.gitattributes
new file mode 100644
index 0000000..d9bb82a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/.gitattributes
@@ -0,0 +1 @@
+**/*.rbi linguist-generated=true
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/caching.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/caching.rbi
new file mode 100644
index 0000000..826d65c
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/caching.rbi
@@ -0,0 +1,31 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Caching`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Caching`.
+
+
+module AbstractController::Caching
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/caching/fragments.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/caching/fragments.rbi
new file mode 100644
index 0000000..d04a840
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/caching/fragments.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Caching::Fragments`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Caching::Fragments`.
+
+
+module AbstractController::Caching::Fragments
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/callbacks.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/callbacks.rbi
new file mode 100644
index 0000000..16926ae
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/callbacks.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Callbacks`.
+
+
+module AbstractController::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/helpers.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/helpers.rbi
new file mode 100644
index 0000000..3f1bbc1
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/helpers.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Helpers`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Helpers`.
+
+
+module AbstractController::Helpers
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/rendering.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/rendering.rbi
new file mode 100644
index 0000000..4a3bfe1
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/rendering.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Rendering`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Rendering`.
+
+
+module AbstractController::Rendering
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/url_for.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/url_for.rbi
new file mode 100644
index 0000000..14ffe07
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/abstract_controller/url_for.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::UrlFor`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::UrlFor`.
+
+
+module AbstractController::UrlFor
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/caching.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/caching.rbi
new file mode 100644
index 0000000..f88717f
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/caching.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Caching`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Caching`.
+
+
+module ActionController::Caching
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/conditional_get.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/conditional_get.rbi
new file mode 100644
index 0000000..a35b102
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/conditional_get.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::ConditionalGet`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::ConditionalGet`.
+
+
+module ActionController::ConditionalGet
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/content_security_policy.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/content_security_policy.rbi
new file mode 100644
index 0000000..04f6d59
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/content_security_policy.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::ContentSecurityPolicy`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::ContentSecurityPolicy`.
+
+
+module ActionController::ContentSecurityPolicy
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/data_streaming.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/data_streaming.rbi
new file mode 100644
index 0000000..91ac611
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/data_streaming.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::DataStreaming`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::DataStreaming`.
+
+
+module ActionController::DataStreaming
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/etag_with_flash.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/etag_with_flash.rbi
new file mode 100644
index 0000000..ab5f950
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/etag_with_flash.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::EtagWithFlash`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::EtagWithFlash`.
+
+
+module ActionController::EtagWithFlash
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/etag_with_template_digest.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/etag_with_template_digest.rbi
new file mode 100644
index 0000000..d6602b7
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/etag_with_template_digest.rbi
@@ -0,0 +1,31 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::EtagWithTemplateDigest`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::EtagWithTemplateDigest`.
+
+
+module ActionController::EtagWithTemplateDigest
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/flash.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/flash.rbi
new file mode 100644
index 0000000..d685467
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/flash.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Flash`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Flash`.
+
+
+module ActionController::Flash
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _flash_types; end
+ def _flash_types=(value); end
+ def _flash_types?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/form_builder.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/form_builder.rbi
new file mode 100644
index 0000000..059161c
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/form_builder.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::FormBuilder`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::FormBuilder`.
+
+
+module ActionController::FormBuilder
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _default_form_builder; end
+ def _default_form_builder=(value); end
+ def _default_form_builder?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/helpers.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/helpers.rbi
new file mode 100644
index 0000000..dbfe5f4
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/helpers.rbi
@@ -0,0 +1,37 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Helpers`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Helpers`.
+
+
+module ActionController::Helpers
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/params_wrapper.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/params_wrapper.rbi
new file mode 100644
index 0000000..4b12f1e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/params_wrapper.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::ParamsWrapper`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::ParamsWrapper`.
+
+
+module ActionController::ParamsWrapper
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/redirecting.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/redirecting.rbi
new file mode 100644
index 0000000..32ac3ea
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/redirecting.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Redirecting`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Redirecting`.
+
+
+module ActionController::Redirecting
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/renderers.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/renderers.rbi
new file mode 100644
index 0000000..0c6e186
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/renderers.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Renderers`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Renderers`.
+
+
+module ActionController::Renderers
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/renderers/all.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/renderers/all.rbi
new file mode 100644
index 0000000..5d5b25b
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/renderers/all.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Renderers::All`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Renderers::All`.
+
+
+module ActionController::Renderers::All
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionController::Renderers::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/request_forgery_protection.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/request_forgery_protection.rbi
new file mode 100644
index 0000000..2812530
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/request_forgery_protection.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::RequestForgeryProtection`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::RequestForgeryProtection`.
+
+
+module ActionController::RequestForgeryProtection
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/rescue.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/rescue.rbi
new file mode 100644
index 0000000..b58f096
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/rescue.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Rescue`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Rescue`.
+
+
+module ActionController::Rescue
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ 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
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/test_case/behavior.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/test_case/behavior.rbi
new file mode 100644
index 0000000..ee0cd10
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/test_case/behavior.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::TestCase::Behavior`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::TestCase::Behavior`.
+
+
+module ActionController::TestCase::Behavior
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _controller_class; end
+ def _controller_class=(value); end
+ def _controller_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _controller_class; end
+ def _controller_class=(value); end
+ def _controller_class?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/url_for.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/url_for.rbi
new file mode 100644
index 0000000..8b1aa82
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_controller/url_for.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::UrlFor`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::UrlFor`.
+
+
+module ActionController::UrlFor
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/assertions.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/assertions.rbi
new file mode 100644
index 0000000..002fcd5
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/assertions.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionDispatch::Assertions`.
+# Please instead update this file by running `bin/tapioca dsl ActionDispatch::Assertions`.
+
+
+module ActionDispatch::Assertions
+ mixes_in_class_methods ::ActionDispatch::Assertions::RoutingAssertions::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/integration_test.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/integration_test.rbi
new file mode 100644
index 0000000..ff92dad
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/integration_test.rbi
@@ -0,0 +1,11 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionDispatch::IntegrationTest`.
+# Please instead update this file by running `bin/tapioca dsl ActionDispatch::IntegrationTest`.
+
+
+class ActionDispatch::IntegrationTest
+ include GeneratedUrlHelpersModule
+ include GeneratedPathHelpersModule
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/routing/route_set/mounted_helpers.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/routing/route_set/mounted_helpers.rbi
new file mode 100644
index 0000000..8810693
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/routing/route_set/mounted_helpers.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionDispatch::Routing::RouteSet::MountedHelpers`.
+# Please instead update this file by running `bin/tapioca dsl ActionDispatch::Routing::RouteSet::MountedHelpers`.
+
+
+module ActionDispatch::Routing::RouteSet::MountedHelpers
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/routing/url_for.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/routing/url_for.rbi
new file mode 100644
index 0000000..8bb4a03
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_dispatch/routing/url_for.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionDispatch::Routing::UrlFor`.
+# Please instead update this file by running `bin/tapioca dsl ActionDispatch::Routing::UrlFor`.
+
+
+module ActionDispatch::Routing::UrlFor
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/inbound_email.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/inbound_email.rbi
new file mode 100644
index 0000000..0398af0
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/inbound_email.rbi
@@ -0,0 +1,960 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailbox::InboundEmail`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailbox::InboundEmail`.
+
+
+class ActionMailbox::InboundEmail
+ include GeneratedAssociationMethods
+ include EnumMethodsModule
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ sig { returns(ActiveStorage::Attached::One) }
+ def raw_email; end
+
+ sig { params(attachable: T.untyped).returns(T.untyped) }
+ def raw_email=(attachable); end
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ class << self
+ sig { returns(T::Hash[T.any(String, Symbol), Integer]) }
+ def statuses; end
+ end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionMailbox::InboundEmail).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::ActionMailbox::InboundEmail).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def fifth; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::ActionMailbox::InboundEmail])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::ActionMailbox::InboundEmail).void
+ ).returns(T.nilable(::ActionMailbox::InboundEmail))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::ActionMailbox::InboundEmail) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::ActionMailbox::InboundEmail).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::ActionMailbox::InboundEmail])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::ActionMailbox::InboundEmail]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::ActionMailbox::InboundEmail]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::ActionMailbox::InboundEmail) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::ActionMailbox::InboundEmail) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def first(limit = nil); end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def first!; end
+
+ sig { returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def forty_two; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def fourth; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def last(limit = nil); end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionMailbox::InboundEmail).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionMailbox::InboundEmail).void)
+ ).returns(::ActionMailbox::InboundEmail)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionMailbox::InboundEmail).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionMailbox::InboundEmail).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def second; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def second!; end
+
+ sig { returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def second_to_last; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def second_to_last!; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::ActionMailbox::InboundEmail).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def take(limit = nil); end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def take!; end
+
+ sig { returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def third; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def third!; end
+
+ sig { returns(T.nilable(::ActionMailbox::InboundEmail)) }
+ def third_to_last; end
+
+ sig { returns(::ActionMailbox::InboundEmail) }
+ def third_to_last!; end
+ end
+
+ module EnumMethodsModule
+ sig { void }
+ def bounced!; end
+
+ sig { returns(T::Boolean) }
+ def bounced?; end
+
+ sig { void }
+ def delivered!; end
+
+ sig { returns(T::Boolean) }
+ def delivered?; end
+
+ sig { void }
+ def failed!; end
+
+ sig { returns(T::Boolean) }
+ def failed?; end
+
+ sig { void }
+ def pending!; end
+
+ sig { returns(T::Boolean) }
+ def pending?; end
+
+ sig { void }
+ def processing!; end
+
+ sig { returns(T::Boolean) }
+ def processing?; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_raw_email_attachment(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_raw_email_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_raw_email_attachment(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_raw_email_attachment!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_raw_email_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_raw_email_blob!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def raw_email_attachment; end
+
+ sig { params(value: T.untyped).void }
+ def raw_email_attachment=(value); end
+
+ sig { returns(T.untyped) }
+ def raw_email_blob; end
+
+ sig { params(value: T.untyped).void }
+ def raw_email_blob=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_raw_email_attachment; end
+
+ sig { returns(T.untyped) }
+ def reload_raw_email_blob; end
+
+ sig { void }
+ def reset_raw_email_attachment; end
+
+ sig { void }
+ def reset_raw_email_blob; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def bounced(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def delivered(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def failed(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def not_bounced(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def not_delivered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def not_failed(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def not_pending(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def not_processing(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def pending(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def processing(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_attached_raw_email(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def bounced(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def delivered(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def failed(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def not_bounced(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def not_delivered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def not_failed(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def not_pending(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def not_processing(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def pending(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def processing(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_attached_raw_email(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActionMailbox::InboundEmail } }
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActionMailbox::InboundEmail } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActionMailbox::InboundEmail } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActionMailbox::InboundEmail } }
+
+ sig do
+ params(
+ records: T.any(::ActionMailbox::InboundEmail, T::Enumerable[T.any(::ActionMailbox::InboundEmail, T::Enumerable[::ActionMailbox::InboundEmail])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActionMailbox::InboundEmail, T::Enumerable[T.any(::ActionMailbox::InboundEmail, T::Enumerable[::ActionMailbox::InboundEmail])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::ActionMailbox::InboundEmail, T::Enumerable[T.any(::ActionMailbox::InboundEmail, T::Enumerable[::ActionMailbox::InboundEmail])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::ActionMailbox::InboundEmail, T::Enumerable[T.any(::ActionMailbox::InboundEmail, T::Enumerable[::ActionMailbox::InboundEmail])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActionMailbox::InboundEmail, T::Enumerable[T.any(::ActionMailbox::InboundEmail, T::Enumerable[::ActionMailbox::InboundEmail])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::ActionMailbox::InboundEmail, T::Enumerable[T.any(::ActionMailbox::InboundEmail, T::Enumerable[::ActionMailbox::InboundEmail])])
+ ).returns(T::Array[::ActionMailbox::InboundEmail])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def target; end
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::ActionMailbox::InboundEmail } }
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionMailbox::InboundEmail]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActionMailbox::InboundEmail } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActionMailbox::InboundEmail } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/incineration_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/incineration_job.rbi
new file mode 100644
index 0000000..48d9b0e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/incineration_job.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailbox::IncinerationJob`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailbox::IncinerationJob`.
+
+
+class ActionMailbox::IncinerationJob
+ class << self
+ sig do
+ params(
+ inbound_email: T.untyped,
+ block: T.nilable(T.proc.params(job: ActionMailbox::IncinerationJob).void)
+ ).returns(T.any(ActionMailbox::IncinerationJob, FalseClass))
+ end
+ def perform_later(inbound_email, &block); end
+
+ sig { params(inbound_email: T.untyped).returns(T.untyped) }
+ def perform_now(inbound_email); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/routing_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/routing_job.rbi
new file mode 100644
index 0000000..34b0e15
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailbox/routing_job.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailbox::RoutingJob`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailbox::RoutingJob`.
+
+
+class ActionMailbox::RoutingJob
+ class << self
+ sig do
+ params(
+ inbound_email: T.untyped,
+ block: T.nilable(T.proc.params(job: ActionMailbox::RoutingJob).void)
+ ).returns(T.any(ActionMailbox::RoutingJob, FalseClass))
+ end
+ def perform_later(inbound_email, &block); end
+
+ sig { params(inbound_email: T.untyped).returns(T.untyped) }
+ def perform_now(inbound_email); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/callbacks.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/callbacks.rbi
new file mode 100644
index 0000000..829e1ad
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/callbacks.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::Callbacks`.
+
+
+module ActionMailer::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/delivery_methods.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/delivery_methods.rbi
new file mode 100644
index 0000000..a4d7c6c
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/delivery_methods.rbi
@@ -0,0 +1,54 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::DeliveryMethods`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::DeliveryMethods`.
+
+
+module ActionMailer::DeliveryMethods
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+
+ module GeneratedInstanceMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/form_builder.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/form_builder.rbi
new file mode 100644
index 0000000..ca921d3
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/form_builder.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::FormBuilder`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::FormBuilder`.
+
+
+module ActionMailer::FormBuilder
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _default_form_builder; end
+ def _default_form_builder=(value); end
+ def _default_form_builder?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/mail_delivery_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/mail_delivery_job.rbi
new file mode 100644
index 0000000..ef86f90
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/mail_delivery_job.rbi
@@ -0,0 +1,35 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::MailDeliveryJob`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::MailDeliveryJob`.
+
+
+class ActionMailer::MailDeliveryJob
+ class << self
+ sig do
+ params(
+ mailer: T.untyped,
+ mail_method: T.untyped,
+ delivery_method: T.untyped,
+ args: T.untyped,
+ kwargs: T.untyped,
+ params: T.untyped,
+ block: T.nilable(T.proc.params(job: ActionMailer::MailDeliveryJob).void)
+ ).returns(T.any(ActionMailer::MailDeliveryJob, FalseClass))
+ end
+ def perform_later(mailer, mail_method, delivery_method, args:, kwargs: T.unsafe(nil), params: T.unsafe(nil), &block); end
+
+ sig do
+ params(
+ mailer: T.untyped,
+ mail_method: T.untyped,
+ delivery_method: T.untyped,
+ args: T.untyped,
+ kwargs: T.untyped,
+ params: T.untyped
+ ).returns(T.untyped)
+ end
+ def perform_now(mailer, mail_method, delivery_method, args:, kwargs: T.unsafe(nil), params: T.unsafe(nil)); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/queued_delivery.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/queued_delivery.rbi
new file mode 100644
index 0000000..a510146
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/queued_delivery.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::QueuedDelivery`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::QueuedDelivery`.
+
+
+module ActionMailer::QueuedDelivery
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def deliver_later_queue_name; end
+ def deliver_later_queue_name=(value); end
+ def deliver_later_queue_name?; end
+ def delivery_job; end
+ def delivery_job=(value); end
+ def delivery_job?; end
+ end
+
+ module GeneratedInstanceMethods
+ def deliver_later_queue_name; end
+ def deliver_later_queue_name=(value); end
+ def deliver_later_queue_name?; end
+ def delivery_job; end
+ def delivery_job=(value); end
+ def delivery_job?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/rescuable.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/rescuable.rbi
new file mode 100644
index 0000000..5bd7ad4
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/rescuable.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::Rescuable`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::Rescuable`.
+
+
+module ActionMailer::Rescuable
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ 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
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/test_case/behavior.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/test_case/behavior.rbi
new file mode 100644
index 0000000..cab5a04
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_mailer/test_case/behavior.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::TestCase::Behavior`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::TestCase::Behavior`.
+
+
+module ActionMailer::TestCase::Behavior
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _mailer_class; end
+ def _mailer_class=(value); end
+ def _mailer_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _mailer_class; end
+ def _mailer_class=(value); end
+ def _mailer_class?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_text/encrypted_rich_text.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_text/encrypted_rich_text.rbi
new file mode 100644
index 0000000..1e12dab
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_text/encrypted_rich_text.rbi
@@ -0,0 +1,860 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionText::EncryptedRichText`.
+# Please instead update this file by running `bin/tapioca dsl ActionText::EncryptedRichText`.
+
+
+class ActionText::EncryptedRichText
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ sig { returns(ActiveStorage::Attached::Many) }
+ def embeds; end
+
+ sig { params(attachable: T.untyped).returns(T.untyped) }
+ def embeds=(attachable); end
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::EncryptedRichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::ActionText::EncryptedRichText).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def fifth; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::ActionText::EncryptedRichText])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::ActionText::EncryptedRichText).void
+ ).returns(T.nilable(::ActionText::EncryptedRichText))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::ActionText::EncryptedRichText) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::ActionText::EncryptedRichText).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::ActionText::EncryptedRichText])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::ActionText::EncryptedRichText]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::ActionText::EncryptedRichText]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::ActionText::EncryptedRichText) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::ActionText::EncryptedRichText) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionText::EncryptedRichText)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionText::EncryptedRichText]) }
+ def first(limit = nil); end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def first!; end
+
+ sig { returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def forty_two; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def fourth; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionText::EncryptedRichText)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionText::EncryptedRichText]) }
+ def last(limit = nil); end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::EncryptedRichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::EncryptedRichText).void)
+ ).returns(::ActionText::EncryptedRichText)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::EncryptedRichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::EncryptedRichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def second; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def second!; end
+
+ sig { returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def second_to_last; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def second_to_last!; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::ActionText::EncryptedRichText).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionText::EncryptedRichText)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionText::EncryptedRichText]) }
+ def take(limit = nil); end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def take!; end
+
+ sig { returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def third; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def third!; end
+
+ sig { returns(T.nilable(::ActionText::EncryptedRichText)) }
+ def third_to_last; end
+
+ sig { returns(::ActionText::EncryptedRichText) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { returns(T::Array[T.untyped]) }
+ def embeds_attachment_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def embeds_attachment_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `ActionText::RichText` class because it declared `has_many :embeds_attachments`.
+ # 🔗 [Rails guide for `has_many` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def embeds_attachments; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def embeds_attachments=(value); end
+
+ sig { returns(T::Array[T.untyped]) }
+ def embeds_blob_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def embeds_blob_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `ActionText::RichText` class because it declared `has_many :embeds_blobs, through: :embeds_attachments`.
+ # 🔗 [Rails guide for `has_many_through` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-through-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def embeds_blobs; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def embeds_blobs=(value); end
+
+ sig { returns(T.untyped) }
+ def record; end
+
+ sig { params(value: T.untyped).void }
+ def record=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_record; end
+
+ sig { void }
+ def reset_record; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_attached_embeds(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_attached_embeds(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActionText::EncryptedRichText } }
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActionText::EncryptedRichText } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActionText::EncryptedRichText } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActionText::EncryptedRichText } }
+
+ sig do
+ params(
+ records: T.any(::ActionText::EncryptedRichText, T::Enumerable[T.any(::ActionText::EncryptedRichText, T::Enumerable[::ActionText::EncryptedRichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActionText::EncryptedRichText, T::Enumerable[T.any(::ActionText::EncryptedRichText, T::Enumerable[::ActionText::EncryptedRichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::ActionText::EncryptedRichText, T::Enumerable[T.any(::ActionText::EncryptedRichText, T::Enumerable[::ActionText::EncryptedRichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::ActionText::EncryptedRichText, T::Enumerable[T.any(::ActionText::EncryptedRichText, T::Enumerable[::ActionText::EncryptedRichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActionText::EncryptedRichText, T::Enumerable[T.any(::ActionText::EncryptedRichText, T::Enumerable[::ActionText::EncryptedRichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::ActionText::EncryptedRichText, T::Enumerable[T.any(::ActionText::EncryptedRichText, T::Enumerable[::ActionText::EncryptedRichText])])
+ ).returns(T::Array[::ActionText::EncryptedRichText])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def target; end
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::ActionText::EncryptedRichText } }
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionText::EncryptedRichText]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActionText::EncryptedRichText } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActionText::EncryptedRichText } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_text/rich_text.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_text/rich_text.rbi
new file mode 100644
index 0000000..48ad76a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_text/rich_text.rbi
@@ -0,0 +1,855 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionText::RichText`.
+# Please instead update this file by running `bin/tapioca dsl ActionText::RichText`.
+
+
+class ActionText::RichText
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ sig { returns(ActiveStorage::Attached::Many) }
+ def embeds; end
+
+ sig { params(attachable: T.untyped).returns(T.untyped) }
+ def embeds=(attachable); end
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::RichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig { params(column_name: NilClass, block: T.proc.params(object: ::ActionText::RichText).void).returns(Integer) }
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::ActionText::RichText)) }
+ def fifth; end
+
+ sig { returns(::ActionText::RichText) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::ActionText::RichText)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::ActionText::RichText])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::ActionText::RichText).void
+ ).returns(T.nilable(::ActionText::RichText))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::ActionText::RichText)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::ActionText::RichText) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::ActionText::RichText).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::ActionText::RichText])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::ActionText::RichText]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::ActionText::RichText]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::ActionText::RichText)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::ActionText::RichText) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::ActionText::RichText) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionText::RichText)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionText::RichText]) }
+ def first(limit = nil); end
+
+ sig { returns(::ActionText::RichText) }
+ def first!; end
+
+ sig { returns(T.nilable(::ActionText::RichText)) }
+ def forty_two; end
+
+ sig { returns(::ActionText::RichText) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::ActionText::RichText)) }
+ def fourth; end
+
+ sig { returns(::ActionText::RichText) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionText::RichText)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionText::RichText]) }
+ def last(limit = nil); end
+
+ sig { returns(::ActionText::RichText) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::RichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActionText::RichText).void)
+ ).returns(::ActionText::RichText)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::RichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActionText::RichText).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::ActionText::RichText)) }
+ def second; end
+
+ sig { returns(::ActionText::RichText) }
+ def second!; end
+
+ sig { returns(T.nilable(::ActionText::RichText)) }
+ def second_to_last; end
+
+ sig { returns(::ActionText::RichText) }
+ def second_to_last!; end
+
+ sig { returns(::ActionText::RichText) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::ActionText::RichText).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActionText::RichText)) }
+ sig { params(limit: Integer).returns(T::Array[::ActionText::RichText]) }
+ def take(limit = nil); end
+
+ sig { returns(::ActionText::RichText) }
+ def take!; end
+
+ sig { returns(T.nilable(::ActionText::RichText)) }
+ def third; end
+
+ sig { returns(::ActionText::RichText) }
+ def third!; end
+
+ sig { returns(T.nilable(::ActionText::RichText)) }
+ def third_to_last; end
+
+ sig { returns(::ActionText::RichText) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { returns(T::Array[T.untyped]) }
+ def embeds_attachment_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def embeds_attachment_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `ActionText::RichText` class because it declared `has_many :embeds_attachments`.
+ # 🔗 [Rails guide for `has_many` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def embeds_attachments; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def embeds_attachments=(value); end
+
+ sig { returns(T::Array[T.untyped]) }
+ def embeds_blob_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def embeds_blob_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `ActionText::RichText` class because it declared `has_many :embeds_blobs, through: :embeds_attachments`.
+ # 🔗 [Rails guide for `has_many_through` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-through-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def embeds_blobs; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def embeds_blobs=(value); end
+
+ sig { returns(T.untyped) }
+ def record; end
+
+ sig { params(value: T.untyped).void }
+ def record=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_record; end
+
+ sig { void }
+ def reset_record; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_attached_embeds(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_attached_embeds(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActionText::RichText } }
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActionText::RichText } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActionText::RichText } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActionText::RichText } }
+
+ sig do
+ params(
+ records: T.any(::ActionText::RichText, T::Enumerable[T.any(::ActionText::RichText, T::Enumerable[::ActionText::RichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActionText::RichText, T::Enumerable[T.any(::ActionText::RichText, T::Enumerable[::ActionText::RichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::ActionText::RichText, T::Enumerable[T.any(::ActionText::RichText, T::Enumerable[::ActionText::RichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::ActionText::RichText, T::Enumerable[T.any(::ActionText::RichText, T::Enumerable[::ActionText::RichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActionText::RichText, T::Enumerable[T.any(::ActionText::RichText, T::Enumerable[::ActionText::RichText])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::ActionText::RichText, T::Enumerable[T.any(::ActionText::RichText, T::Enumerable[::ActionText::RichText])])
+ ).returns(T::Array[::ActionText::RichText])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def target; end
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::ActionText::RichText } }
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActionText::RichText]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActionText::RichText } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActionText::RichText } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers.rbi
new file mode 100644
index 0000000..efa2fd8
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers.rbi
@@ -0,0 +1,14 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers`.
+
+
+module ActionView::Helpers
+ include GeneratedUrlHelpersModule
+ include GeneratedPathHelpersModule
+
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/form_helper.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/form_helper.rbi
new file mode 100644
index 0000000..10a330a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/form_helper.rbi
@@ -0,0 +1,11 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers::FormHelper`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers::FormHelper`.
+
+
+module ActionView::Helpers::FormHelper
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/form_tag_helper.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/form_tag_helper.rbi
new file mode 100644
index 0000000..ca1d562
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/form_tag_helper.rbi
@@ -0,0 +1,11 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers::FormTagHelper`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers::FormTagHelper`.
+
+
+module ActionView::Helpers::FormTagHelper
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/text_helper.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/text_helper.rbi
new file mode 100644
index 0000000..733cb5f
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/helpers/text_helper.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers::TextHelper`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers::TextHelper`.
+
+
+module ActionView::Helpers::TextHelper
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/layouts.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/layouts.rbi
new file mode 100644
index 0000000..4f1bd8e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/layouts.rbi
@@ -0,0 +1,28 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Layouts`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Layouts`.
+
+
+module ActionView::Layouts
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+ mixes_in_class_methods ::ActionView::Rendering::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _layout; end
+ def _layout=(value); end
+ def _layout?; end
+ def _layout_conditions; end
+ def _layout_conditions=(value); end
+ def _layout_conditions?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _layout_conditions; end
+ def _layout_conditions?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/rendering.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/rendering.rbi
new file mode 100644
index 0000000..52ac489
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/action_view/rendering.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Rendering`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Rendering`.
+
+
+module ActionView::Rendering
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/callbacks.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/callbacks.rbi
new file mode 100644
index 0000000..281a3bf
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/callbacks.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Callbacks`.
+
+
+module ActiveJob::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/concurrency_controls.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/concurrency_controls.rbi
new file mode 100644
index 0000000..cac3147
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/concurrency_controls.rbi
@@ -0,0 +1,36 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::ConcurrencyControls`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::ConcurrencyControls`.
+
+
+module ActiveJob::ConcurrencyControls
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def concurrency_duration; end
+ def concurrency_duration=(value); end
+ def concurrency_duration?; end
+ def concurrency_group; end
+ def concurrency_group=(value); end
+ def concurrency_group?; end
+ def concurrency_key; end
+ def concurrency_key=(value); end
+ def concurrency_key?; end
+ def concurrency_limit; end
+ def concurrency_limit=(value); end
+ def concurrency_limit?; end
+ end
+
+ module GeneratedInstanceMethods
+ def concurrency_duration; end
+ def concurrency_duration=(value); end
+ def concurrency_duration?; end
+ def concurrency_limit; end
+ def concurrency_limit=(value); end
+ def concurrency_limit?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/enqueuing.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/enqueuing.rbi
new file mode 100644
index 0000000..a55a52e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/enqueuing.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Enqueuing`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Enqueuing`.
+
+
+module ActiveJob::Enqueuing
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def enqueue_after_transaction_commit; end
+ def enqueue_after_transaction_commit=(value); end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/exceptions.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/exceptions.rbi
new file mode 100644
index 0000000..f1c1f6c
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/exceptions.rbi
@@ -0,0 +1,26 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Exceptions`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Exceptions`.
+
+
+module ActiveJob::Exceptions
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def after_discard_procs; end
+ def after_discard_procs=(value); end
+ def after_discard_procs?; end
+ def retry_jitter; end
+ def retry_jitter=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def after_discard_procs; end
+ def after_discard_procs=(value); end
+ def after_discard_procs?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/execution.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/execution.rbi
new file mode 100644
index 0000000..7fa4a61
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/execution.rbi
@@ -0,0 +1,25 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Execution`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Execution`.
+
+
+module ActiveJob::Execution
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ 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
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/logging.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/logging.rbi
new file mode 100644
index 0000000..d375911
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/logging.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Logging`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Logging`.
+
+
+module ActiveJob::Logging
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def log_arguments; end
+ def log_arguments=(value); end
+ def log_arguments?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_adapter.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_adapter.rbi
new file mode 100644
index 0000000..7d7053a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_adapter.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::QueueAdapter`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::QueueAdapter`.
+
+
+module ActiveJob::QueueAdapter
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _queue_adapter; end
+ def _queue_adapter=(value); end
+ def _queue_adapter_name; end
+ def _queue_adapter_name=(value); end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_name.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_name.rbi
new file mode 100644
index 0000000..e728614
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_name.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::QueueName`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::QueueName`.
+
+
+module ActiveJob::QueueName
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def queue_name; end
+ def queue_name=(value); end
+ def queue_name?; end
+ def queue_name_delimiter; end
+ def queue_name_delimiter=(value); end
+ def queue_name_delimiter?; end
+ def queue_name_prefix; end
+ def queue_name_prefix=(value); end
+ def queue_name_prefix?; end
+ end
+
+ module GeneratedInstanceMethods
+ def queue_name_prefix; end
+ def queue_name_prefix=(value); end
+ def queue_name_prefix?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_priority.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_priority.rbi
new file mode 100644
index 0000000..ec03184
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/queue_priority.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::QueuePriority`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::QueuePriority`.
+
+
+module ActiveJob::QueuePriority
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def priority; end
+ def priority=(value); end
+ def priority?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/test_helper/test_queue_adapter.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/test_helper/test_queue_adapter.rbi
new file mode 100644
index 0000000..8539af1
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_job/test_helper/test_queue_adapter.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::TestHelper::TestQueueAdapter`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::TestHelper::TestQueueAdapter`.
+
+
+module ActiveJob::TestHelper::TestQueueAdapter
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _test_adapter; end
+ def _test_adapter=(value); end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/api.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/api.rbi
new file mode 100644
index 0000000..1f1608c
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/api.rbi
@@ -0,0 +1,32 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::API`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::API`.
+
+
+module ActiveModel::API
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::Validations::ClassMethods
+ mixes_in_class_methods ::ActiveModel::Conversion::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def _validators; end
+ def _validators=(value); end
+ def _validators?; end
+ def param_delimiter; end
+ def param_delimiter=(value); end
+ def param_delimiter?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def _validators; end
+ def _validators?; end
+ def param_delimiter=(value); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/attribute_methods.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/attribute_methods.rbi
new file mode 100644
index 0000000..8e58d7b
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/attribute_methods.rbi
@@ -0,0 +1,28 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::AttributeMethods`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::AttributeMethods`.
+
+
+module ActiveModel::AttributeMethods
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns=(value); end
+ def attribute_method_patterns?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/attributes.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/attributes.rbi
new file mode 100644
index 0000000..d300cb5
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/attributes.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Attributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Attributes`.
+
+
+module ActiveModel::Attributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeRegistration::ClassMethods
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns=(value); end
+ def attribute_method_patterns?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/conversion.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/conversion.rbi
new file mode 100644
index 0000000..9289cdd
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/conversion.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Conversion`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Conversion`.
+
+
+module ActiveModel::Conversion
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def param_delimiter; end
+ def param_delimiter=(value); end
+ def param_delimiter?; end
+ end
+
+ module GeneratedInstanceMethods
+ def param_delimiter=(value); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/dirty.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/dirty.rbi
new file mode 100644
index 0000000..7eb00d3
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/dirty.rbi
@@ -0,0 +1,29 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Dirty`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Dirty`.
+
+
+module ActiveModel::Dirty
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns=(value); end
+ def attribute_method_patterns?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/serializers/json.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/serializers/json.rbi
new file mode 100644
index 0000000..ab70ce9
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/serializers/json.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Serializers::JSON`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Serializers::JSON`.
+
+
+module ActiveModel::Serializers::JSON
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def include_root_in_json; end
+ def include_root_in_json=(value); end
+ def include_root_in_json?; end
+ end
+
+ module GeneratedInstanceMethods
+ def include_root_in_json; end
+ def include_root_in_json?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/validations.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/validations.rbi
new file mode 100644
index 0000000..38b2a27
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/validations.rbi
@@ -0,0 +1,26 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Validations`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Validations`.
+
+
+module ActiveModel::Validations
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def _validators; end
+ def _validators=(value); end
+ def _validators?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def _validators; end
+ def _validators?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/validations/callbacks.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/validations/callbacks.rbi
new file mode 100644
index 0000000..16e3701
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_model/validations/callbacks.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Validations::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Validations::Callbacks`.
+
+
+module ActiveModel::Validations::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods.rbi
new file mode 100644
index 0000000..d65dd43
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods.rbi
@@ -0,0 +1,57 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::AttributeMethods`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::AttributeMethods`.
+
+
+module ActiveRecord::AttributeMethods
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns=(value); end
+ def attribute_method_patterns?; end
+ def default_column_serializer; end
+ def default_column_serializer=(value); end
+ def default_column_serializer?; end
+ def partial_inserts; end
+ def partial_inserts=(value); end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates=(value); end
+ def partial_updates?; end
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes=(value); end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes=(value); end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types=(value); end
+ def time_zone_aware_types?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns?; end
+ def partial_inserts; end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates?; end
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/dirty.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/dirty.rbi
new file mode 100644
index 0000000..516acdb
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/dirty.rbi
@@ -0,0 +1,39 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::AttributeMethods::Dirty`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::AttributeMethods::Dirty`.
+
+
+module ActiveRecord::AttributeMethods::Dirty
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns=(value); end
+ def attribute_method_patterns?; end
+ def partial_inserts; end
+ def partial_inserts=(value); end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates=(value); end
+ def partial_updates?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_patterns; end
+ def attribute_method_patterns?; end
+ def partial_inserts; end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/serialization.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/serialization.rbi
new file mode 100644
index 0000000..9d06e27
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/serialization.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::AttributeMethods::Serialization`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::AttributeMethods::Serialization`.
+
+
+module ActiveRecord::AttributeMethods::Serialization
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_column_serializer; end
+ def default_column_serializer=(value); end
+ def default_column_serializer?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/time_zone_conversion.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/time_zone_conversion.rbi
new file mode 100644
index 0000000..be40114
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attribute_methods/time_zone_conversion.rbi
@@ -0,0 +1,33 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::AttributeMethods::TimeZoneConversion`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::AttributeMethods::TimeZoneConversion`.
+
+
+module ActiveRecord::AttributeMethods::TimeZoneConversion
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes=(value); end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes=(value); end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types=(value); end
+ def time_zone_aware_types?; end
+ end
+
+ module GeneratedInstanceMethods
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attributes.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attributes.rbi
new file mode 100644
index 0000000..75bcc1a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/attributes.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Attributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Attributes`.
+
+
+module ActiveRecord::Attributes
+ mixes_in_class_methods ::ActiveModel::AttributeRegistration::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/callbacks.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/callbacks.rbi
new file mode 100644
index 0000000..76e4574
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/callbacks.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Callbacks`.
+
+
+module ActiveRecord::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/core.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/core.rbi
new file mode 100644
index 0000000..b31cc1c
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/core.rbi
@@ -0,0 +1,68 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Core`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Core`.
+
+
+module ActiveRecord::Core
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _destroy_association_async_job; end
+ def _destroy_association_async_job=(value); end
+ def _destroy_association_async_job?; end
+ def attributes_for_inspect; end
+ def attributes_for_inspect=(value); end
+ def attributes_for_inspect?; end
+ def belongs_to_required_by_default; end
+ def belongs_to_required_by_default=(value); end
+ def belongs_to_required_by_default?; end
+ def default_connection_handler; end
+ def default_connection_handler=(value); end
+ def default_connection_handler?; end
+ def default_role; end
+ def default_role=(value); end
+ def default_role?; end
+ def default_shard; end
+ def default_shard=(value); end
+ def default_shard?; end
+ def destroy_association_async_batch_size; end
+ def destroy_association_async_batch_size=(value); end
+ def enumerate_columns_in_select_statements; end
+ def enumerate_columns_in_select_statements=(value); end
+ def enumerate_columns_in_select_statements?; end
+ def has_many_inversing; end
+ def has_many_inversing=(value); end
+ def has_many_inversing?; end
+ def logger; end
+ def logger=(value); end
+ def logger?; end
+ def run_commit_callbacks_on_first_saved_instances_in_transaction; end
+ def run_commit_callbacks_on_first_saved_instances_in_transaction=(value); end
+ def run_commit_callbacks_on_first_saved_instances_in_transaction?; end
+ def shard_selector; end
+ def shard_selector=(value); end
+ def shard_selector?; end
+ def strict_loading_by_default; end
+ def strict_loading_by_default=(value); end
+ def strict_loading_by_default?; end
+ def strict_loading_mode; end
+ def strict_loading_mode=(value); end
+ def strict_loading_mode?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_connection_handler; end
+ def default_connection_handler?; end
+ def default_role; end
+ def default_role?; end
+ def default_shard; end
+ def default_shard?; end
+ def destroy_association_async_batch_size; end
+ def logger; end
+ def logger?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/counter_cache.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/counter_cache.rbi
new file mode 100644
index 0000000..9aff98e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/counter_cache.rbi
@@ -0,0 +1,26 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::CounterCache`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::CounterCache`.
+
+
+module ActiveRecord::CounterCache
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _counter_cache_columns; end
+ def _counter_cache_columns=(value); end
+ def _counter_cache_columns?; end
+ def counter_cached_association_names; end
+ def counter_cached_association_names=(value); end
+ def counter_cached_association_names?; end
+ end
+
+ module GeneratedInstanceMethods
+ def counter_cached_association_names; end
+ def counter_cached_association_names?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/encryption/encryptable_record.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/encryption/encryptable_record.rbi
new file mode 100644
index 0000000..73b5a46
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/encryption/encryptable_record.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Encryption::EncryptableRecord`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Encryption::EncryptableRecord`.
+
+
+module ActiveRecord::Encryption::EncryptableRecord
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def encrypted_attributes; end
+ def encrypted_attributes=(value); end
+ def encrypted_attributes?; end
+ end
+
+ module GeneratedInstanceMethods
+ def encrypted_attributes; end
+ def encrypted_attributes=(value); end
+ def encrypted_attributes?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/inheritance.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/inheritance.rbi
new file mode 100644
index 0000000..53130bd
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/inheritance.rbi
@@ -0,0 +1,28 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Inheritance`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Inheritance`.
+
+
+module ActiveRecord::Inheritance
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def store_full_class_name; end
+ def store_full_class_name=(value); end
+ def store_full_class_name?; end
+ def store_full_sti_class; end
+ def store_full_sti_class=(value); end
+ def store_full_sti_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def store_full_class_name; end
+ def store_full_class_name?; end
+ def store_full_sti_class; end
+ def store_full_sti_class?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/integration.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/integration.rbi
new file mode 100644
index 0000000..6fc6d69
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/integration.rbi
@@ -0,0 +1,33 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Integration`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Integration`.
+
+
+module ActiveRecord::Integration
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def cache_timestamp_format; end
+ def cache_timestamp_format=(value); end
+ def cache_timestamp_format?; end
+ def cache_versioning; end
+ def cache_versioning=(value); end
+ def cache_versioning?; end
+ def collection_cache_versioning; end
+ def collection_cache_versioning=(value); end
+ def collection_cache_versioning?; end
+ end
+
+ module GeneratedInstanceMethods
+ def cache_timestamp_format; end
+ def cache_timestamp_format?; end
+ def cache_versioning; end
+ def cache_versioning?; end
+ def collection_cache_versioning; end
+ def collection_cache_versioning?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/locking/optimistic.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/locking/optimistic.rbi
new file mode 100644
index 0000000..99efc8b
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/locking/optimistic.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Locking::Optimistic`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Locking::Optimistic`.
+
+
+module ActiveRecord::Locking::Optimistic
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def lock_optimistically; end
+ def lock_optimistically=(value); end
+ def lock_optimistically?; end
+ end
+
+ module GeneratedInstanceMethods
+ def lock_optimistically; end
+ def lock_optimistically?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/model_schema.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/model_schema.rbi
new file mode 100644
index 0000000..85bd9da
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/model_schema.rbi
@@ -0,0 +1,53 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::ModelSchema`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::ModelSchema`.
+
+
+module ActiveRecord::ModelSchema
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def immutable_strings_by_default; end
+ def immutable_strings_by_default=(value); end
+ def immutable_strings_by_default?; end
+ def implicit_order_column; end
+ def implicit_order_column=(value); end
+ def implicit_order_column?; end
+ def inheritance_column; end
+ def inheritance_column=(value); end
+ def inheritance_column?; end
+ def internal_metadata_table_name; end
+ def internal_metadata_table_name=(value); end
+ def internal_metadata_table_name?; end
+ def pluralize_table_names; end
+ def pluralize_table_names=(value); end
+ def pluralize_table_names?; end
+ def primary_key_prefix_type; end
+ def primary_key_prefix_type=(value); end
+ def primary_key_prefix_type?; end
+ def schema_migrations_table_name; end
+ def schema_migrations_table_name=(value); end
+ def schema_migrations_table_name?; end
+ def table_name_prefix; end
+ def table_name_prefix=(value); end
+ def table_name_prefix?; end
+ def table_name_suffix; end
+ def table_name_suffix=(value); end
+ def table_name_suffix?; end
+ end
+
+ module GeneratedInstanceMethods
+ def pluralize_table_names; end
+ def pluralize_table_names?; end
+ def primary_key_prefix_type; end
+ def primary_key_prefix_type?; end
+ def table_name_prefix; end
+ def table_name_prefix?; end
+ def table_name_suffix; end
+ def table_name_suffix?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/nested_attributes.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/nested_attributes.rbi
new file mode 100644
index 0000000..6bbad79
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/nested_attributes.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::NestedAttributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::NestedAttributes`.
+
+
+module ActiveRecord::NestedAttributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def nested_attributes_options; end
+ def nested_attributes_options=(value); end
+ def nested_attributes_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def nested_attributes_options; end
+ def nested_attributes_options?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/normalization.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/normalization.rbi
new file mode 100644
index 0000000..24b3404
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/normalization.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Normalization`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Normalization`.
+
+
+module ActiveRecord::Normalization
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def normalized_attributes; end
+ def normalized_attributes=(value); end
+ def normalized_attributes?; end
+ end
+
+ module GeneratedInstanceMethods
+ def normalized_attributes; end
+ def normalized_attributes=(value); end
+ def normalized_attributes?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/readonly_attributes.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/readonly_attributes.rbi
new file mode 100644
index 0000000..c6477f5
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/readonly_attributes.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::ReadonlyAttributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::ReadonlyAttributes`.
+
+
+module ActiveRecord::ReadonlyAttributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _attr_readonly; end
+ def _attr_readonly=(value); end
+ def _attr_readonly?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/reflection.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/reflection.rbi
new file mode 100644
index 0000000..8328dd4
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/reflection.rbi
@@ -0,0 +1,38 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Reflection`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Reflection`.
+
+
+module ActiveRecord::Reflection
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _reflections; end
+ def _reflections=(value); end
+ def _reflections?; end
+ def aggregate_reflections; end
+ def aggregate_reflections=(value); end
+ def aggregate_reflections?; end
+ def automatic_scope_inversing; end
+ def automatic_scope_inversing=(value); end
+ def automatic_scope_inversing?; end
+ def automatically_invert_plural_associations; end
+ def automatically_invert_plural_associations=(value); end
+ def automatically_invert_plural_associations?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _reflections; end
+ def _reflections?; end
+ def aggregate_reflections; end
+ def aggregate_reflections?; end
+ def automatic_scope_inversing; end
+ def automatic_scope_inversing?; end
+ def automatically_invert_plural_associations; end
+ def automatically_invert_plural_associations?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/scoping.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/scoping.rbi
new file mode 100644
index 0000000..229070b
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/scoping.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Scoping`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Scoping`.
+
+
+module ActiveRecord::Scoping
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_scope_override; end
+ def default_scope_override=(value); end
+ def default_scopes; end
+ def default_scopes=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def default_scope_override; end
+ def default_scopes; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/scoping/default.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/scoping/default.rbi
new file mode 100644
index 0000000..28518b0
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/scoping/default.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Scoping::Default`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Scoping::Default`.
+
+
+module ActiveRecord::Scoping::Default
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_scope_override; end
+ def default_scope_override=(value); end
+ def default_scopes; end
+ def default_scopes=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def default_scope_override; end
+ def default_scopes; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/secure_password.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/secure_password.rbi
new file mode 100644
index 0000000..6c06f86
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/secure_password.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::SecurePassword`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::SecurePassword`.
+
+
+module ActiveRecord::SecurePassword
+ mixes_in_class_methods ::ActiveModel::SecurePassword::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/serialization.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/serialization.rbi
new file mode 100644
index 0000000..59b5278
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/serialization.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Serialization`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Serialization`.
+
+
+module ActiveRecord::Serialization
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def include_root_in_json; end
+ def include_root_in_json=(value); end
+ def include_root_in_json?; end
+ end
+
+ module GeneratedInstanceMethods
+ def include_root_in_json; end
+ def include_root_in_json?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/signed_id.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/signed_id.rbi
new file mode 100644
index 0000000..0db888f
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/signed_id.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::SignedId`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::SignedId`.
+
+
+module ActiveRecord::SignedId
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def signed_id_verifier_secret; end
+ def signed_id_verifier_secret=(value); end
+ def signed_id_verifier_secret?; end
+ end
+
+ module GeneratedInstanceMethods
+ def signed_id_verifier_secret; end
+ def signed_id_verifier_secret?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/timestamp.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/timestamp.rbi
new file mode 100644
index 0000000..31ee319
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/timestamp.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Timestamp`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Timestamp`.
+
+
+module ActiveRecord::Timestamp
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def record_timestamps; end
+ def record_timestamps=(value); end
+ def record_timestamps?; end
+ end
+
+ module GeneratedInstanceMethods
+ def record_timestamps; end
+ def record_timestamps=(value); end
+ def record_timestamps?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/token_for.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/token_for.rbi
new file mode 100644
index 0000000..4e1eec6
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_record/token_for.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::TokenFor`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::TokenFor`.
+
+
+module ActiveRecord::TokenFor
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def generated_token_verifier; end
+ def generated_token_verifier=(value); end
+ def token_definitions; end
+ def token_definitions=(value); end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/analyze_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/analyze_job.rbi
new file mode 100644
index 0000000..7b48068
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/analyze_job.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::AnalyzeJob`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::AnalyzeJob`.
+
+
+class ActiveStorage::AnalyzeJob
+ class << self
+ sig do
+ params(
+ blob: T.untyped,
+ block: T.nilable(T.proc.params(job: ActiveStorage::AnalyzeJob).void)
+ ).returns(T.any(ActiveStorage::AnalyzeJob, FalseClass))
+ end
+ def perform_later(blob, &block); end
+
+ sig { params(blob: T.untyped).returns(T.untyped) }
+ def perform_now(blob); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/attachment.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/attachment.rbi
new file mode 100644
index 0000000..dfc975b
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/attachment.rbi
@@ -0,0 +1,847 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::Attachment`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::Attachment`.
+
+
+class ActiveStorage::Attachment
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Attachment).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::ActiveStorage::Attachment).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::ActiveStorage::Attachment)) }
+ def fifth; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::ActiveStorage::Attachment)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::ActiveStorage::Attachment])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::ActiveStorage::Attachment).void
+ ).returns(T.nilable(::ActiveStorage::Attachment))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::ActiveStorage::Attachment)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::ActiveStorage::Attachment) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::ActiveStorage::Attachment).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::ActiveStorage::Attachment])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::ActiveStorage::Attachment]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::ActiveStorage::Attachment]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::ActiveStorage::Attachment)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::ActiveStorage::Attachment) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::ActiveStorage::Attachment) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::Attachment)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::Attachment]) }
+ def first(limit = nil); end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def first!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Attachment)) }
+ def forty_two; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Attachment)) }
+ def fourth; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::Attachment)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::Attachment]) }
+ def last(limit = nil); end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Attachment).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Attachment).void)
+ ).returns(::ActiveStorage::Attachment)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Attachment).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Attachment).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::ActiveStorage::Attachment)) }
+ def second; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def second!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Attachment)) }
+ def second_to_last; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def second_to_last!; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::ActiveStorage::Attachment).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::Attachment)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::Attachment]) }
+ def take(limit = nil); end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def take!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Attachment)) }
+ def third; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def third!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Attachment)) }
+ def third_to_last; end
+
+ sig { returns(::ActiveStorage::Attachment) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { returns(T.untyped) }
+ def blob; end
+
+ sig { params(value: T.untyped).void }
+ def blob=(value); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_blob!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def record; end
+
+ sig { params(value: T.untyped).void }
+ def record=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_blob; end
+
+ sig { returns(T.untyped) }
+ def reload_record; end
+
+ sig { void }
+ def reset_blob; end
+
+ sig { void }
+ def reset_record; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_all_variant_records(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_all_variant_records(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::Attachment } }
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Attachment } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Attachment } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::Attachment } }
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Attachment, T::Enumerable[T.any(::ActiveStorage::Attachment, T::Enumerable[::ActiveStorage::Attachment])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Attachment, T::Enumerable[T.any(::ActiveStorage::Attachment, T::Enumerable[::ActiveStorage::Attachment])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Attachment, T::Enumerable[T.any(::ActiveStorage::Attachment, T::Enumerable[::ActiveStorage::Attachment])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Attachment, T::Enumerable[T.any(::ActiveStorage::Attachment, T::Enumerable[::ActiveStorage::Attachment])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Attachment, T::Enumerable[T.any(::ActiveStorage::Attachment, T::Enumerable[::ActiveStorage::Attachment])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::ActiveStorage::Attachment, T::Enumerable[T.any(::ActiveStorage::Attachment, T::Enumerable[::ActiveStorage::Attachment])])
+ ).returns(T::Array[::ActiveStorage::Attachment])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def target; end
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::Attachment } }
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::Attachment]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Attachment } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Attachment } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/blob.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/blob.rbi
new file mode 100644
index 0000000..dc5a451
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/blob.rbi
@@ -0,0 +1,972 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::Blob`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::Blob`.
+
+
+class ActiveStorage::Blob
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+ include GeneratedSecureTokenMethods
+ include GeneratedStoredAttributesMethods
+
+ sig { returns(ActiveStorage::Attached::One) }
+ def preview_image; end
+
+ sig { params(attachable: T.untyped).returns(T.untyped) }
+ def preview_image=(attachable); end
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Blob).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig { params(column_name: NilClass, block: T.proc.params(object: ::ActiveStorage::Blob).void).returns(Integer) }
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::ActiveStorage::Blob)) }
+ def fifth; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::ActiveStorage::Blob)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::ActiveStorage::Blob])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::ActiveStorage::Blob).void
+ ).returns(T.nilable(::ActiveStorage::Blob))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::ActiveStorage::Blob)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::ActiveStorage::Blob) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::ActiveStorage::Blob).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::ActiveStorage::Blob])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::ActiveStorage::Blob]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::ActiveStorage::Blob]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::ActiveStorage::Blob)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::ActiveStorage::Blob) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::ActiveStorage::Blob) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::Blob)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::Blob]) }
+ def first(limit = nil); end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def first!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Blob)) }
+ def forty_two; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Blob)) }
+ def fourth; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::Blob)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::Blob]) }
+ def last(limit = nil); end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Blob).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::Blob).void)
+ ).returns(::ActiveStorage::Blob)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Blob).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::Blob).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::ActiveStorage::Blob)) }
+ def second; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def second!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Blob)) }
+ def second_to_last; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def second_to_last!; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::ActiveStorage::Blob).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::Blob)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::Blob]) }
+ def take(limit = nil); end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def take!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Blob)) }
+ def third; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def third!; end
+
+ sig { returns(T.nilable(::ActiveStorage::Blob)) }
+ def third_to_last; end
+
+ sig { returns(::ActiveStorage::Blob) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { returns(T::Array[T.untyped]) }
+ def attachment_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def attachment_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `ActiveStorage::Blob` class because it declared `has_many :attachments`.
+ # 🔗 [Rails guide for `has_many` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def attachments; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def attachments=(value); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_preview_image_attachment(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_preview_image_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_preview_image_attachment(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_preview_image_attachment!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_preview_image_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_preview_image_blob!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def preview_image_attachment; end
+
+ sig { params(value: T.untyped).void }
+ def preview_image_attachment=(value); end
+
+ sig { returns(T.untyped) }
+ def preview_image_blob; end
+
+ sig { params(value: T.untyped).void }
+ def preview_image_blob=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_preview_image_attachment; end
+
+ sig { returns(T.untyped) }
+ def reload_preview_image_blob; end
+
+ sig { void }
+ def reset_preview_image_attachment; end
+
+ sig { void }
+ def reset_preview_image_blob; end
+
+ sig { returns(T::Array[T.untyped]) }
+ def variant_record_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def variant_record_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `ActiveStorage::Blob` class because it declared `has_many :variant_records`.
+ # 🔗 [Rails guide for `has_many` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def variant_records; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def variant_records=(value); end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unattached(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_attached_preview_image(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unattached(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_attached_preview_image(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedSecureTokenMethods
+ sig { returns(T::Boolean) }
+ def regenerate_key; end
+ end
+
+ module GeneratedStoredAttributesMethods
+ sig { returns(T.untyped) }
+ def analyzed; end
+
+ sig { params(value: T.untyped).returns(T.untyped) }
+ def analyzed=(value); end
+
+ sig { returns(T.untyped) }
+ def analyzed_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def analyzed_change; end
+
+ sig { returns(T::Boolean) }
+ def analyzed_changed?; end
+
+ sig { returns(T.untyped) }
+ def analyzed_was; end
+
+ sig { returns(T.untyped) }
+ def composed; end
+
+ sig { params(value: T.untyped).returns(T.untyped) }
+ def composed=(value); end
+
+ sig { returns(T.untyped) }
+ def composed_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def composed_change; end
+
+ sig { returns(T::Boolean) }
+ def composed_changed?; end
+
+ sig { returns(T.untyped) }
+ def composed_was; end
+
+ sig { returns(T.untyped) }
+ def identified; end
+
+ sig { params(value: T.untyped).returns(T.untyped) }
+ def identified=(value); end
+
+ sig { returns(T.untyped) }
+ def identified_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def identified_change; end
+
+ sig { returns(T::Boolean) }
+ def identified_changed?; end
+
+ sig { returns(T.untyped) }
+ def identified_was; end
+
+ sig { returns(T.untyped) }
+ def saved_change_to_analyzed; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_analyzed?; end
+
+ sig { returns(T.untyped) }
+ def saved_change_to_composed; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_composed?; end
+
+ sig { returns(T.untyped) }
+ def saved_change_to_identified; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_identified?; end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::Blob } }
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Blob } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Blob } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::Blob } }
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Blob, T::Enumerable[T.any(::ActiveStorage::Blob, T::Enumerable[::ActiveStorage::Blob])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Blob, T::Enumerable[T.any(::ActiveStorage::Blob, T::Enumerable[::ActiveStorage::Blob])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Blob, T::Enumerable[T.any(::ActiveStorage::Blob, T::Enumerable[::ActiveStorage::Blob])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Blob, T::Enumerable[T.any(::ActiveStorage::Blob, T::Enumerable[::ActiveStorage::Blob])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::Blob, T::Enumerable[T.any(::ActiveStorage::Blob, T::Enumerable[::ActiveStorage::Blob])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::ActiveStorage::Blob, T::Enumerable[T.any(::ActiveStorage::Blob, T::Enumerable[::ActiveStorage::Blob])])
+ ).returns(T::Array[::ActiveStorage::Blob])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def target; end
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::Blob } }
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::Blob]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Blob } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActiveStorage::Blob } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/current.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/current.rbi
new file mode 100644
index 0000000..be334c3
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/current.rbi
@@ -0,0 +1,26 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::Current`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::Current`.
+
+
+class ActiveStorage::Current
+ include GeneratedAttributeMethods
+
+ class << self
+ sig { returns(T.untyped) }
+ def url_options; end
+
+ sig { params(value: T.untyped).returns(T.untyped) }
+ def url_options=(value); end
+ end
+
+ module GeneratedAttributeMethods
+ sig { returns(T.untyped) }
+ def url_options; end
+
+ sig { params(value: T.untyped).returns(T.untyped) }
+ def url_options=(value); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/mirror_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/mirror_job.rbi
new file mode 100644
index 0000000..bf0cac6
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/mirror_job.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::MirrorJob`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::MirrorJob`.
+
+
+class ActiveStorage::MirrorJob
+ class << self
+ sig do
+ params(
+ key: T.untyped,
+ checksum: T.untyped,
+ block: T.nilable(T.proc.params(job: ActiveStorage::MirrorJob).void)
+ ).returns(T.any(ActiveStorage::MirrorJob, FalseClass))
+ end
+ def perform_later(key, checksum:, &block); end
+
+ sig { params(key: T.untyped, checksum: T.untyped).returns(T.untyped) }
+ def perform_now(key, checksum:); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/preview_image_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/preview_image_job.rbi
new file mode 100644
index 0000000..59d6f46
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/preview_image_job.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::PreviewImageJob`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::PreviewImageJob`.
+
+
+class ActiveStorage::PreviewImageJob
+ class << self
+ sig do
+ params(
+ blob: T.untyped,
+ variations: T.untyped,
+ block: T.nilable(T.proc.params(job: ActiveStorage::PreviewImageJob).void)
+ ).returns(T.any(ActiveStorage::PreviewImageJob, FalseClass))
+ end
+ def perform_later(blob, variations, &block); end
+
+ sig { params(blob: T.untyped, variations: T.untyped).returns(T.untyped) }
+ def perform_now(blob, variations); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/purge_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/purge_job.rbi
new file mode 100644
index 0000000..bbbc635
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/purge_job.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::PurgeJob`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::PurgeJob`.
+
+
+class ActiveStorage::PurgeJob
+ class << self
+ sig do
+ params(
+ blob: T.untyped,
+ block: T.nilable(T.proc.params(job: ActiveStorage::PurgeJob).void)
+ ).returns(T.any(ActiveStorage::PurgeJob, FalseClass))
+ end
+ def perform_later(blob, &block); end
+
+ sig { params(blob: T.untyped).returns(T.untyped) }
+ def perform_now(blob); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/reflection/active_record_extensions.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/reflection/active_record_extensions.rbi
new file mode 100644
index 0000000..7e6fe68
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/reflection/active_record_extensions.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::Reflection::ActiveRecordExtensions`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::Reflection::ActiveRecordExtensions`.
+
+
+module ActiveStorage::Reflection::ActiveRecordExtensions
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attachment_reflections; end
+ def attachment_reflections=(value); end
+ def attachment_reflections?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attachment_reflections; end
+ def attachment_reflections?; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/streaming.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/streaming.rbi
new file mode 100644
index 0000000..d4a390a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/streaming.rbi
@@ -0,0 +1,11 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::Streaming`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::Streaming`.
+
+
+module ActiveStorage::Streaming
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+ mixes_in_class_methods ::ActionController::Live::ClassMethods
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/transform_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/transform_job.rbi
new file mode 100644
index 0000000..e796264
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/transform_job.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::TransformJob`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::TransformJob`.
+
+
+class ActiveStorage::TransformJob
+ class << self
+ sig do
+ params(
+ blob: T.untyped,
+ transformations: T.untyped,
+ block: T.nilable(T.proc.params(job: ActiveStorage::TransformJob).void)
+ ).returns(T.any(ActiveStorage::TransformJob, FalseClass))
+ end
+ def perform_later(blob, transformations, &block); end
+
+ sig { params(blob: T.untyped, transformations: T.untyped).returns(T.untyped) }
+ def perform_now(blob, transformations); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/variant_record.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/variant_record.rbi
new file mode 100644
index 0000000..03fab77
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_storage/variant_record.rbi
@@ -0,0 +1,883 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::VariantRecord`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::VariantRecord`.
+
+
+class ActiveStorage::VariantRecord
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ sig { returns(ActiveStorage::Attached::One) }
+ def image; end
+
+ sig { params(attachable: T.untyped).returns(T.untyped) }
+ def image=(attachable); end
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::VariantRecord).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::ActiveStorage::VariantRecord).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def fifth; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::ActiveStorage::VariantRecord])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::ActiveStorage::VariantRecord).void
+ ).returns(T.nilable(::ActiveStorage::VariantRecord))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::ActiveStorage::VariantRecord) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::ActiveStorage::VariantRecord).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::ActiveStorage::VariantRecord])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::ActiveStorage::VariantRecord]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::ActiveStorage::VariantRecord]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::ActiveStorage::VariantRecord) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::ActiveStorage::VariantRecord) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def first(limit = nil); end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def first!; end
+
+ sig { returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def forty_two; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def fourth; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def last(limit = nil); end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::VariantRecord).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ActiveStorage::VariantRecord).void)
+ ).returns(::ActiveStorage::VariantRecord)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::VariantRecord).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ActiveStorage::VariantRecord).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def second; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def second!; end
+
+ sig { returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def second_to_last; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def second_to_last!; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::ActiveStorage::VariantRecord).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ sig { params(limit: Integer).returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def take(limit = nil); end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def take!; end
+
+ sig { returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def third; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def third!; end
+
+ sig { returns(T.nilable(::ActiveStorage::VariantRecord)) }
+ def third_to_last; end
+
+ sig { returns(::ActiveStorage::VariantRecord) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { returns(T.untyped) }
+ def blob; end
+
+ sig { params(value: T.untyped).void }
+ def blob=(value); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_image_attachment(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_image_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_blob!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_image_attachment(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_image_attachment!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_image_blob(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_image_blob!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def image_attachment; end
+
+ sig { params(value: T.untyped).void }
+ def image_attachment=(value); end
+
+ sig { returns(T.untyped) }
+ def image_blob; end
+
+ sig { params(value: T.untyped).void }
+ def image_blob=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_blob; end
+
+ sig { returns(T.untyped) }
+ def reload_image_attachment; end
+
+ sig { returns(T.untyped) }
+ def reload_image_blob; end
+
+ sig { void }
+ def reset_blob; end
+
+ sig { void }
+ def reset_image_attachment; end
+
+ sig { void }
+ def reset_image_blob; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_attached_image(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_attached_image(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::VariantRecord } }
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActiveStorage::VariantRecord } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ActiveStorage::VariantRecord } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::VariantRecord } }
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::VariantRecord, T::Enumerable[T.any(::ActiveStorage::VariantRecord, T::Enumerable[::ActiveStorage::VariantRecord])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::VariantRecord, T::Enumerable[T.any(::ActiveStorage::VariantRecord, T::Enumerable[::ActiveStorage::VariantRecord])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::VariantRecord, T::Enumerable[T.any(::ActiveStorage::VariantRecord, T::Enumerable[::ActiveStorage::VariantRecord])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::VariantRecord, T::Enumerable[T.any(::ActiveStorage::VariantRecord, T::Enumerable[::ActiveStorage::VariantRecord])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::ActiveStorage::VariantRecord, T::Enumerable[T.any(::ActiveStorage::VariantRecord, T::Enumerable[::ActiveStorage::VariantRecord])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::ActiveStorage::VariantRecord, T::Enumerable[T.any(::ActiveStorage::VariantRecord, T::Enumerable[::ActiveStorage::VariantRecord])])
+ ).returns(T::Array[::ActiveStorage::VariantRecord])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def target; end
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::ActiveStorage::VariantRecord } }
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ActiveStorage::VariantRecord]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActiveStorage::VariantRecord } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::ActiveStorage::VariantRecord } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/actionable_error.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/actionable_error.rbi
new file mode 100644
index 0000000..64b88fa
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/actionable_error.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::ActionableError`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::ActionableError`.
+
+
+module ActiveSupport::ActionableError
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ 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
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/callbacks.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/callbacks.rbi
new file mode 100644
index 0000000..15ee6be
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/callbacks.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::Callbacks`.
+
+
+module ActiveSupport::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/rescuable.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/rescuable.rbi
new file mode 100644
index 0000000..cf65f82
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/rescuable.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::Rescuable`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::Rescuable`.
+
+
+module ActiveSupport::Rescuable
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ 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
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/testing/file_fixtures.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/testing/file_fixtures.rbi
new file mode 100644
index 0000000..ba004cf
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/active_support/testing/file_fixtures.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::Testing::FileFixtures`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::Testing::FileFixtures`.
+
+
+module ActiveSupport::Testing::FileFixtures
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ 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
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/application_controller.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/application_controller.rbi
new file mode 100644
index 0000000..09ab7d6
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/application_controller.rbi
@@ -0,0 +1,11 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ApplicationController`.
+# Please instead update this file by running `bin/tapioca dsl ApplicationController`.
+
+
+class ApplicationController
+ include GeneratedUrlHelpersModule
+ include GeneratedPathHelpersModule
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/application_mailer.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/application_mailer.rbi
new file mode 100644
index 0000000..fcb7718
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/application_mailer.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ApplicationMailer`.
+# Please instead update this file by running `bin/tapioca dsl ApplicationMailer`.
+
+
+class ApplicationMailer
+ include GeneratedUrlHelpersModule
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/client_authentication/account.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/client_authentication/account.rbi
new file mode 100644
index 0000000..ceb5e6c
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/client_authentication/account.rbi
@@ -0,0 +1,1264 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ClientAuthentication::Account`.
+# Please instead update this file by running `bin/tapioca dsl ClientAuthentication::Account`.
+
+
+class ClientAuthentication::Account
+ include GeneratedAttributeMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ClientAuthentication::Account).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::ClientAuthentication::Account).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::ClientAuthentication::Account)) }
+ def fifth; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::ClientAuthentication::Account)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::ClientAuthentication::Account])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::ClientAuthentication::Account).void
+ ).returns(T.nilable(::ClientAuthentication::Account))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::ClientAuthentication::Account)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::ClientAuthentication::Account) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::ClientAuthentication::Account).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::ClientAuthentication::Account])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::ClientAuthentication::Account]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::ClientAuthentication::Account]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::ClientAuthentication::Account)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::ClientAuthentication::Account) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::ClientAuthentication::Account) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ClientAuthentication::Account)) }
+ sig { params(limit: Integer).returns(T::Array[::ClientAuthentication::Account]) }
+ def first(limit = nil); end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def first!; end
+
+ sig { returns(T.nilable(::ClientAuthentication::Account)) }
+ def forty_two; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::ClientAuthentication::Account)) }
+ def fourth; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ClientAuthentication::Account)) }
+ sig { params(limit: Integer).returns(T::Array[::ClientAuthentication::Account]) }
+ def last(limit = nil); end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ClientAuthentication::Account).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::ClientAuthentication::Account).void)
+ ).returns(::ClientAuthentication::Account)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ClientAuthentication::Account).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::ClientAuthentication::Account).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::ClientAuthentication::Account)) }
+ def second; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def second!; end
+
+ sig { returns(T.nilable(::ClientAuthentication::Account)) }
+ def second_to_last; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def second_to_last!; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::ClientAuthentication::Account).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::ClientAuthentication::Account)) }
+ sig { params(limit: Integer).returns(T::Array[::ClientAuthentication::Account]) }
+ def take(limit = nil); end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def take!; end
+
+ sig { returns(T.nilable(::ClientAuthentication::Account)) }
+ def third; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def third!; end
+
+ sig { returns(T.nilable(::ClientAuthentication::Account)) }
+ def third_to_last; end
+
+ sig { returns(::ClientAuthentication::Account) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedAttributeMethods
+ sig { returns(T.nilable(::String)) }
+ def account_id; end
+
+ sig { params(value: T.nilable(::String)).returns(T.nilable(::String)) }
+ def account_id=(value); end
+
+ sig { returns(T::Boolean) }
+ def account_id?; end
+
+ sig { returns(T.nilable(::String)) }
+ def account_id_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def account_id_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def account_id_came_from_user?; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def account_id_change; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def account_id_change_to_be_saved; end
+
+ sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
+ def account_id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def account_id_in_database; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def account_id_previous_change; end
+
+ sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
+ def account_id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def account_id_previously_was; end
+
+ sig { returns(T.nilable(::String)) }
+ def account_id_was; end
+
+ sig { void }
+ def account_id_will_change!; end
+
+ sig { returns(T.nilable(::String)) }
+ def address; end
+
+ sig { params(value: T.nilable(::String)).returns(T.nilable(::String)) }
+ def address=(value); end
+
+ sig { returns(T::Boolean) }
+ def address?; end
+
+ sig { returns(T.nilable(::String)) }
+ def address_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def address_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def address_came_from_user?; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def address_change; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def address_change_to_be_saved; end
+
+ sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
+ def address_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def address_in_database; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def address_previous_change; end
+
+ sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
+ def address_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def address_previously_was; end
+
+ sig { returns(T.nilable(::String)) }
+ def address_was; end
+
+ sig { void }
+ def address_will_change!; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def chain_id; end
+
+ sig { params(value: T.nilable(::Integer)).returns(T.nilable(::Integer)) }
+ def chain_id=(value); end
+
+ sig { returns(T::Boolean) }
+ def chain_id?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def chain_id_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def chain_id_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def chain_id_came_from_user?; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def chain_id_change; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def chain_id_change_to_be_saved; end
+
+ sig { params(from: T.nilable(::Integer), to: T.nilable(::Integer)).returns(T::Boolean) }
+ def chain_id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def chain_id_in_database; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def chain_id_previous_change; end
+
+ sig { params(from: T.nilable(::Integer), to: T.nilable(::Integer)).returns(T::Boolean) }
+ def chain_id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def chain_id_previously_was; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def chain_id_was; end
+
+ sig { void }
+ def chain_id_will_change!; end
+
+ sig { returns(::ActiveSupport::TimeWithZone) }
+ def created_at; end
+
+ sig { params(value: ::ActiveSupport::TimeWithZone).returns(::ActiveSupport::TimeWithZone) }
+ def created_at=(value); end
+
+ sig { returns(T::Boolean) }
+ def created_at?; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def created_at_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def created_at_came_from_user?; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_change; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_change_to_be_saved; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def created_at_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_in_database; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_previous_change; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def created_at_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_previously_was; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_was; end
+
+ sig { void }
+ def created_at_will_change!; end
+
+ sig { returns(::Integer) }
+ def id; end
+
+ sig { params(value: ::Integer).returns(::Integer) }
+ def id=(value); end
+
+ sig { returns(T::Boolean) }
+ def id?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def id_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def id_came_from_user?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_change; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_change_to_be_saved; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_in_database; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_previous_change; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_previously_was; end
+
+ sig { returns(::Integer) }
+ def id_value; end
+
+ sig { params(value: ::Integer).returns(::Integer) }
+ def id_value=(value); end
+
+ sig { returns(T::Boolean) }
+ def id_value?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def id_value_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def id_value_came_from_user?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_change; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_change_to_be_saved; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_value_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_in_database; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_previous_change; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_value_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_previously_was; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_was; end
+
+ sig { void }
+ def id_value_will_change!; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_was; end
+
+ sig { void }
+ def id_will_change!; end
+
+ sig { void }
+ def restore_account_id!; end
+
+ sig { void }
+ def restore_address!; end
+
+ sig { void }
+ def restore_chain_id!; end
+
+ sig { void }
+ def restore_created_at!; end
+
+ sig { void }
+ def restore_id!; end
+
+ sig { void }
+ def restore_id_value!; end
+
+ sig { void }
+ def restore_string!; end
+
+ sig { void }
+ def restore_updated_at!; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def saved_change_to_account_id; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_account_id?; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def saved_change_to_address; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_address?; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def saved_change_to_chain_id; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_chain_id?; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def saved_change_to_created_at; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_created_at?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def saved_change_to_id; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_id?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def saved_change_to_id_value; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_id_value?; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def saved_change_to_string; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_string?; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def saved_change_to_updated_at; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_updated_at?; end
+
+ sig { returns(T.nilable(::String)) }
+ def string; end
+
+ sig { params(value: T.nilable(::String)).returns(T.nilable(::String)) }
+ def string=(value); end
+
+ sig { returns(T::Boolean) }
+ def string?; end
+
+ sig { returns(T.nilable(::String)) }
+ def string_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def string_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def string_came_from_user?; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def string_change; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def string_change_to_be_saved; end
+
+ sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
+ def string_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def string_in_database; end
+
+ sig { returns(T.nilable([T.nilable(::String), T.nilable(::String)])) }
+ def string_previous_change; end
+
+ sig { params(from: T.nilable(::String), to: T.nilable(::String)).returns(T::Boolean) }
+ def string_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def string_previously_was; end
+
+ sig { returns(T.nilable(::String)) }
+ def string_was; end
+
+ sig { void }
+ def string_will_change!; end
+
+ sig { returns(::ActiveSupport::TimeWithZone) }
+ def updated_at; end
+
+ sig { params(value: ::ActiveSupport::TimeWithZone).returns(::ActiveSupport::TimeWithZone) }
+ def updated_at=(value); end
+
+ sig { returns(T::Boolean) }
+ def updated_at?; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def updated_at_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def updated_at_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def updated_at_came_from_user?; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def updated_at_change; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def updated_at_change_to_be_saved; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def updated_at_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def updated_at_in_database; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def updated_at_previous_change; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def updated_at_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def updated_at_previously_was; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def updated_at_was; end
+
+ sig { void }
+ def updated_at_will_change!; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_account_id?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_address?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_chain_id?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_created_at?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_id?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_id_value?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_string?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_updated_at?; end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ClientAuthentication::Account } }
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ClientAuthentication::Account } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::ClientAuthentication::Account } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::ClientAuthentication::Account } }
+
+ sig do
+ params(
+ records: T.any(::ClientAuthentication::Account, T::Enumerable[T.any(::ClientAuthentication::Account, T::Enumerable[::ClientAuthentication::Account])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::ClientAuthentication::Account, T::Enumerable[T.any(::ClientAuthentication::Account, T::Enumerable[::ClientAuthentication::Account])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::ClientAuthentication::Account, T::Enumerable[T.any(::ClientAuthentication::Account, T::Enumerable[::ClientAuthentication::Account])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::ClientAuthentication::Account, T::Enumerable[T.any(::ClientAuthentication::Account, T::Enumerable[::ClientAuthentication::Account])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::ClientAuthentication::Account, T::Enumerable[T.any(::ClientAuthentication::Account, T::Enumerable[::ClientAuthentication::Account])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::ClientAuthentication::Account, T::Enumerable[T.any(::ClientAuthentication::Account, T::Enumerable[::ClientAuthentication::Account])])
+ ).returns(T::Array[::ClientAuthentication::Account])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def target; end
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::ClientAuthentication::Account } }
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def to_a; end
+
+ sig { returns(T::Array[::ClientAuthentication::Account]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::ClientAuthentication::Account } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::ClientAuthentication::Account } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/generated_path_helpers_module.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/generated_path_helpers_module.rbi
new file mode 100644
index 0000000..ba89ba4
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/generated_path_helpers_module.rbi
@@ -0,0 +1,104 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `GeneratedPathHelpersModule`.
+# Please instead update this file by running `bin/tapioca dsl GeneratedPathHelpersModule`.
+
+
+module GeneratedPathHelpersModule
+ include ::ActionDispatch::Routing::UrlFor
+ include ::ActionDispatch::Routing::PolymorphicRoutes
+
+ sig { params(args: T.untyped).returns(String) }
+ def new_rails_conductor_inbound_email_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def new_rails_conductor_inbound_email_source_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_blob_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_blob_representation_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_blob_representation_proxy_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_incinerate_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_reroute_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_sources_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_emails_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_direct_uploads_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_disk_service_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_health_check_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_notes_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_properties_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_routes_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mailers_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mailgun_inbound_emails_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mandrill_inbound_emails_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mandrill_inbound_health_check_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_postmark_inbound_emails_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_relay_inbound_emails_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_representation_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_sendgrid_inbound_emails_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_service_blob_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_service_blob_proxy_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_storage_proxy_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_storage_redirect_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def ruby_event_store_browser_app_path(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def update_rails_disk_service_path(*args); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/generated_url_helpers_module.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/generated_url_helpers_module.rbi
new file mode 100644
index 0000000..8ce78c1
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/generated_url_helpers_module.rbi
@@ -0,0 +1,104 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `GeneratedUrlHelpersModule`.
+# Please instead update this file by running `bin/tapioca dsl GeneratedUrlHelpersModule`.
+
+
+module GeneratedUrlHelpersModule
+ include ::ActionDispatch::Routing::UrlFor
+ include ::ActionDispatch::Routing::PolymorphicRoutes
+
+ sig { params(args: T.untyped).returns(String) }
+ def new_rails_conductor_inbound_email_source_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def new_rails_conductor_inbound_email_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_blob_representation_proxy_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_blob_representation_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_blob_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_incinerate_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_reroute_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_sources_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_email_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_conductor_inbound_emails_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_direct_uploads_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_disk_service_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_health_check_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_notes_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_properties_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_routes_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_info_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mailers_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mailgun_inbound_emails_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mandrill_inbound_emails_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_mandrill_inbound_health_check_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_postmark_inbound_emails_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_relay_inbound_emails_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_representation_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_sendgrid_inbound_emails_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_service_blob_proxy_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_service_blob_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_storage_proxy_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def rails_storage_redirect_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def ruby_event_store_browser_app_url(*args); end
+
+ sig { params(args: T.untyped).returns(String) }
+ def update_rails_disk_service_url(*args); end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/rails/conductor/base_controller.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/rails/conductor/base_controller.rbi
new file mode 100644
index 0000000..25c6812
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/rails/conductor/base_controller.rbi
@@ -0,0 +1,11 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `Rails::Conductor::BaseController`.
+# Please instead update this file by running `bin/tapioca dsl Rails::Conductor::BaseController`.
+
+
+class Rails::Conductor::BaseController
+ include GeneratedUrlHelpersModule
+ include GeneratedPathHelpersModule
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/event.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/event.rbi
new file mode 100644
index 0000000..a7a99d5
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/event.rbi
@@ -0,0 +1,1274 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `RubyEventStore::ActiveRecord::Event`.
+# Please instead update this file by running `bin/tapioca dsl RubyEventStore::ActiveRecord::Event`.
+
+
+class RubyEventStore::ActiveRecord::Event
+ include GeneratedAttributeMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::Event).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def fifth; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::RubyEventStore::ActiveRecord::Event])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void
+ ).returns(T.nilable(::RubyEventStore::ActiveRecord::Event))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::RubyEventStore::ActiveRecord::Event) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::RubyEventStore::ActiveRecord::Event])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::RubyEventStore::ActiveRecord::Event]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::RubyEventStore::ActiveRecord::Event]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::RubyEventStore::ActiveRecord::Event) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::RubyEventStore::ActiveRecord::Event) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ sig { params(limit: Integer).returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def first(limit = nil); end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def first!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def forty_two; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def fourth; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ sig { params(limit: Integer).returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def last(limit = nil); end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::Event).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).void)
+ ).returns(::RubyEventStore::ActiveRecord::Event)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::Event).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::Event).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def second; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def second!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def second_to_last; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def second_to_last!; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::Event).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ sig { params(limit: Integer).returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def take(limit = nil); end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def take!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def third; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def third!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def third_to_last; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::Event) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedAttributeMethods
+ sig { returns(::ActiveSupport::TimeWithZone) }
+ def created_at; end
+
+ sig { params(value: ::ActiveSupport::TimeWithZone).returns(::ActiveSupport::TimeWithZone) }
+ def created_at=(value); end
+
+ sig { returns(T::Boolean) }
+ def created_at?; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def created_at_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def created_at_came_from_user?; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_change; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_change_to_be_saved; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def created_at_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_in_database; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_previous_change; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def created_at_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_previously_was; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_was; end
+
+ sig { void }
+ def created_at_will_change!; end
+
+ sig { returns(T.untyped) }
+ def data; end
+
+ sig { params(value: T.untyped).returns(T.untyped) }
+ def data=(value); end
+
+ sig { returns(T::Boolean) }
+ def data?; end
+
+ sig { returns(T.untyped) }
+ def data_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def data_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def data_came_from_user?; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def data_change; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def data_change_to_be_saved; end
+
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
+ def data_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.untyped) }
+ def data_in_database; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def data_previous_change; end
+
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
+ def data_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.untyped) }
+ def data_previously_was; end
+
+ sig { returns(T.untyped) }
+ def data_was; end
+
+ sig { void }
+ def data_will_change!; end
+
+ sig { returns(::String) }
+ def event_id; end
+
+ sig { params(value: ::String).returns(::String) }
+ def event_id=(value); end
+
+ sig { returns(T::Boolean) }
+ def event_id?; end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def event_id_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def event_id_came_from_user?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_id_change; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_id_change_to_be_saved; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def event_id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_in_database; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_id_previous_change; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def event_id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_previously_was; end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_was; end
+
+ sig { void }
+ def event_id_will_change!; end
+
+ sig { returns(::String) }
+ def event_type; end
+
+ sig { params(value: ::String).returns(::String) }
+ def event_type=(value); end
+
+ sig { returns(T::Boolean) }
+ def event_type?; end
+
+ sig { returns(T.nilable(::String)) }
+ def event_type_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def event_type_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def event_type_came_from_user?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_type_change; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_type_change_to_be_saved; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def event_type_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def event_type_in_database; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_type_previous_change; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def event_type_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def event_type_previously_was; end
+
+ sig { returns(T.nilable(::String)) }
+ def event_type_was; end
+
+ sig { void }
+ def event_type_will_change!; end
+
+ sig { returns(::Integer) }
+ def id; end
+
+ sig { params(value: ::Integer).returns(::Integer) }
+ def id=(value); end
+
+ sig { returns(T::Boolean) }
+ def id?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def id_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def id_came_from_user?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_change; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_change_to_be_saved; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_in_database; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_previous_change; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_previously_was; end
+
+ sig { returns(::Integer) }
+ def id_value; end
+
+ sig { params(value: ::Integer).returns(::Integer) }
+ def id_value=(value); end
+
+ sig { returns(T::Boolean) }
+ def id_value?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def id_value_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def id_value_came_from_user?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_change; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_change_to_be_saved; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_value_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_in_database; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_previous_change; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_value_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_previously_was; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_was; end
+
+ sig { void }
+ def id_value_will_change!; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_was; end
+
+ sig { void }
+ def id_will_change!; end
+
+ sig { returns(T.untyped) }
+ def metadata; end
+
+ sig { params(value: T.untyped).returns(T.untyped) }
+ def metadata=(value); end
+
+ sig { returns(T::Boolean) }
+ def metadata?; end
+
+ sig { returns(T.untyped) }
+ def metadata_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def metadata_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def metadata_came_from_user?; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def metadata_change; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def metadata_change_to_be_saved; end
+
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
+ def metadata_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.untyped) }
+ def metadata_in_database; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def metadata_previous_change; end
+
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
+ def metadata_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.untyped) }
+ def metadata_previously_was; end
+
+ sig { returns(T.untyped) }
+ def metadata_was; end
+
+ sig { void }
+ def metadata_will_change!; end
+
+ sig { void }
+ def restore_created_at!; end
+
+ sig { void }
+ def restore_data!; end
+
+ sig { void }
+ def restore_event_id!; end
+
+ sig { void }
+ def restore_event_type!; end
+
+ sig { void }
+ def restore_id!; end
+
+ sig { void }
+ def restore_id_value!; end
+
+ sig { void }
+ def restore_metadata!; end
+
+ sig { void }
+ def restore_valid_at!; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def saved_change_to_created_at; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_created_at?; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def saved_change_to_data; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_data?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def saved_change_to_event_id; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_event_id?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def saved_change_to_event_type; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_event_type?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def saved_change_to_id; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_id?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def saved_change_to_id_value; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_id_value?; end
+
+ sig { returns(T.nilable([T.untyped, T.untyped])) }
+ def saved_change_to_metadata; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_metadata?; end
+
+ sig { returns(T.nilable([T.nilable(::ActiveSupport::TimeWithZone), T.nilable(::ActiveSupport::TimeWithZone)])) }
+ def saved_change_to_valid_at; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_valid_at?; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def valid_at; end
+
+ sig { params(value: T.nilable(::ActiveSupport::TimeWithZone)).returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def valid_at=(value); end
+
+ sig { returns(T::Boolean) }
+ def valid_at?; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def valid_at_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def valid_at_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def valid_at_came_from_user?; end
+
+ sig { returns(T.nilable([T.nilable(::ActiveSupport::TimeWithZone), T.nilable(::ActiveSupport::TimeWithZone)])) }
+ def valid_at_change; end
+
+ sig { returns(T.nilable([T.nilable(::ActiveSupport::TimeWithZone), T.nilable(::ActiveSupport::TimeWithZone)])) }
+ def valid_at_change_to_be_saved; end
+
+ sig do
+ params(
+ from: T.nilable(::ActiveSupport::TimeWithZone),
+ to: T.nilable(::ActiveSupport::TimeWithZone)
+ ).returns(T::Boolean)
+ end
+ def valid_at_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def valid_at_in_database; end
+
+ sig { returns(T.nilable([T.nilable(::ActiveSupport::TimeWithZone), T.nilable(::ActiveSupport::TimeWithZone)])) }
+ def valid_at_previous_change; end
+
+ sig do
+ params(
+ from: T.nilable(::ActiveSupport::TimeWithZone),
+ to: T.nilable(::ActiveSupport::TimeWithZone)
+ ).returns(T::Boolean)
+ end
+ def valid_at_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def valid_at_previously_was; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def valid_at_was; end
+
+ sig { void }
+ def valid_at_will_change!; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_created_at?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_data?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_event_id?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_event_type?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_id?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_id_value?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_metadata?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_valid_at?; end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::Event } }
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def to_a; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::Event } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::Event } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::Event } }
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[::RubyEventStore::ActiveRecord::Event])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[::RubyEventStore::ActiveRecord::Event])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[::RubyEventStore::ActiveRecord::Event])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[::RubyEventStore::ActiveRecord::Event])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[::RubyEventStore::ActiveRecord::Event])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::Event, T::Enumerable[::RubyEventStore::ActiveRecord::Event])])
+ ).returns(T::Array[::RubyEventStore::ActiveRecord::Event])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def target; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def to_a; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::Event } }
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def to_a; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::Event]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::Event } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::Event } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/event_in_stream.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/event_in_stream.rbi
new file mode 100644
index 0000000..3d29e8d
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/event_in_stream.rbi
@@ -0,0 +1,1179 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `RubyEventStore::ActiveRecord::EventInStream`.
+# Please instead update this file by running `bin/tapioca dsl RubyEventStore::ActiveRecord::EventInStream`.
+
+
+class RubyEventStore::ActiveRecord::EventInStream
+ include GeneratedAssociationMethods
+ include GeneratedAttributeMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::EventInStream).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def fifth; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::RubyEventStore::ActiveRecord::EventInStream])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void
+ ).returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::RubyEventStore::ActiveRecord::EventInStream])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::RubyEventStore::ActiveRecord::EventInStream]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::RubyEventStore::ActiveRecord::EventInStream]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig do
+ params(
+ signed_id: T.untyped,
+ purpose: T.untyped
+ ).returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream))
+ end
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ sig { params(limit: Integer).returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def first(limit = nil); end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def first!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def forty_two; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def fourth; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ sig { params(limit: Integer).returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def last(limit = nil); end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::EventInStream).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).void)
+ ).returns(::RubyEventStore::ActiveRecord::EventInStream)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::EventInStream).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::RubyEventStore::ActiveRecord::EventInStream).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def second; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def second!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def second_to_last; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def second_to_last!; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::RubyEventStore::ActiveRecord::EventInStream).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ sig { params(limit: Integer).returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def take(limit = nil); end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def take!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def third; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def third!; end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::EventInStream)) }
+ def third_to_last; end
+
+ sig { returns(::RubyEventStore::ActiveRecord::EventInStream) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(::RubyEventStore::ActiveRecord::Event) }
+ def build_event(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(::RubyEventStore::ActiveRecord::Event) }
+ def create_event(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(::RubyEventStore::ActiveRecord::Event) }
+ def create_event!(*args, &blk); end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def event; end
+
+ sig { params(value: T.nilable(::RubyEventStore::ActiveRecord::Event)).void }
+ def event=(value); end
+
+ sig { returns(T.nilable(::RubyEventStore::ActiveRecord::Event)) }
+ def reload_event; end
+
+ sig { void }
+ def reset_event; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedAttributeMethods
+ sig { returns(::ActiveSupport::TimeWithZone) }
+ def created_at; end
+
+ sig { params(value: ::ActiveSupport::TimeWithZone).returns(::ActiveSupport::TimeWithZone) }
+ def created_at=(value); end
+
+ sig { returns(T::Boolean) }
+ def created_at?; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def created_at_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def created_at_came_from_user?; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_change; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_change_to_be_saved; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def created_at_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_in_database; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def created_at_previous_change; end
+
+ sig { params(from: ::ActiveSupport::TimeWithZone, to: ::ActiveSupport::TimeWithZone).returns(T::Boolean) }
+ def created_at_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_previously_was; end
+
+ sig { returns(T.nilable(::ActiveSupport::TimeWithZone)) }
+ def created_at_was; end
+
+ sig { void }
+ def created_at_will_change!; end
+
+ sig { returns(::String) }
+ def event_id; end
+
+ sig { params(value: ::String).returns(::String) }
+ def event_id=(value); end
+
+ sig { returns(T::Boolean) }
+ def event_id?; end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def event_id_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def event_id_came_from_user?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_id_change; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_id_change_to_be_saved; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def event_id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_in_database; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def event_id_previous_change; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def event_id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_previously_was; end
+
+ sig { returns(T.nilable(::String)) }
+ def event_id_was; end
+
+ sig { void }
+ def event_id_will_change!; end
+
+ sig { returns(::Integer) }
+ def id; end
+
+ sig { params(value: ::Integer).returns(::Integer) }
+ def id=(value); end
+
+ sig { returns(T::Boolean) }
+ def id?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def id_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def id_came_from_user?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_change; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_change_to_be_saved; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_in_database; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_previous_change; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_previously_was; end
+
+ sig { returns(::Integer) }
+ def id_value; end
+
+ sig { params(value: ::Integer).returns(::Integer) }
+ def id_value=(value); end
+
+ sig { returns(T::Boolean) }
+ def id_value?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def id_value_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def id_value_came_from_user?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_change; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_change_to_be_saved; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_value_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_in_database; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def id_value_previous_change; end
+
+ sig { params(from: ::Integer, to: ::Integer).returns(T::Boolean) }
+ def id_value_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_previously_was; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_value_was; end
+
+ sig { void }
+ def id_value_will_change!; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def id_was; end
+
+ sig { void }
+ def id_will_change!; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def position; end
+
+ sig { params(value: T.nilable(::Integer)).returns(T.nilable(::Integer)) }
+ def position=(value); end
+
+ sig { returns(T::Boolean) }
+ def position?; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def position_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def position_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def position_came_from_user?; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def position_change; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def position_change_to_be_saved; end
+
+ sig { params(from: T.nilable(::Integer), to: T.nilable(::Integer)).returns(T::Boolean) }
+ def position_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def position_in_database; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def position_previous_change; end
+
+ sig { params(from: T.nilable(::Integer), to: T.nilable(::Integer)).returns(T::Boolean) }
+ def position_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::Integer)) }
+ def position_previously_was; end
+
+ sig { returns(T.nilable(::Integer)) }
+ def position_was; end
+
+ sig { void }
+ def position_will_change!; end
+
+ sig { void }
+ def restore_created_at!; end
+
+ sig { void }
+ def restore_event_id!; end
+
+ sig { void }
+ def restore_id!; end
+
+ sig { void }
+ def restore_id_value!; end
+
+ sig { void }
+ def restore_position!; end
+
+ sig { void }
+ def restore_stream!; end
+
+ sig { returns(T.nilable([::ActiveSupport::TimeWithZone, ::ActiveSupport::TimeWithZone])) }
+ def saved_change_to_created_at; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_created_at?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def saved_change_to_event_id; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_event_id?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def saved_change_to_id; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_id?; end
+
+ sig { returns(T.nilable([::Integer, ::Integer])) }
+ def saved_change_to_id_value; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_id_value?; end
+
+ sig { returns(T.nilable([T.nilable(::Integer), T.nilable(::Integer)])) }
+ def saved_change_to_position; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_position?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def saved_change_to_stream; end
+
+ sig { returns(T::Boolean) }
+ def saved_change_to_stream?; end
+
+ sig { returns(::String) }
+ def stream; end
+
+ sig { params(value: ::String).returns(::String) }
+ def stream=(value); end
+
+ sig { returns(T::Boolean) }
+ def stream?; end
+
+ sig { returns(T.nilable(::String)) }
+ def stream_before_last_save; end
+
+ sig { returns(T.untyped) }
+ def stream_before_type_cast; end
+
+ sig { returns(T::Boolean) }
+ def stream_came_from_user?; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def stream_change; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def stream_change_to_be_saved; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def stream_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def stream_in_database; end
+
+ sig { returns(T.nilable([::String, ::String])) }
+ def stream_previous_change; end
+
+ sig { params(from: ::String, to: ::String).returns(T::Boolean) }
+ def stream_previously_changed?(from: T.unsafe(nil), to: T.unsafe(nil)); end
+
+ sig { returns(T.nilable(::String)) }
+ def stream_previously_was; end
+
+ sig { returns(T.nilable(::String)) }
+ def stream_was; end
+
+ sig { void }
+ def stream_will_change!; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_created_at?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_event_id?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_id?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_id_value?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_position?; end
+
+ sig { returns(T::Boolean) }
+ def will_save_change_to_stream?; end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::EventInStream } }
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def to_a; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::EventInStream } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::EventInStream } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::EventInStream } }
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[::RubyEventStore::ActiveRecord::EventInStream])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[::RubyEventStore::ActiveRecord::EventInStream])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[::RubyEventStore::ActiveRecord::EventInStream])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[::RubyEventStore::ActiveRecord::EventInStream])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[::RubyEventStore::ActiveRecord::EventInStream])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[T.any(::RubyEventStore::ActiveRecord::EventInStream, T::Enumerable[::RubyEventStore::ActiveRecord::EventInStream])])
+ ).returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def target; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def to_a; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::EventInStream } }
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def to_a; end
+
+ sig { returns(T::Array[::RubyEventStore::ActiveRecord::EventInStream]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::EventInStream } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::RubyEventStore::ActiveRecord::EventInStream } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/rails_migration_generator.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/rails_migration_generator.rbi
new file mode 100644
index 0000000..1cf79d0
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/ruby_event_store/active_record/rails_migration_generator.rbi
@@ -0,0 +1,11 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `RubyEventStore::ActiveRecord::RailsMigrationGenerator`.
+# Please instead update this file by running `bin/tapioca dsl RubyEventStore::ActiveRecord::RailsMigrationGenerator`.
+
+
+class RubyEventStore::ActiveRecord::RailsMigrationGenerator
+ sig { returns(::String) }
+ def data_type; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_cache/entry.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_cache/entry.rbi
new file mode 100644
index 0000000..a44ab3b
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_cache/entry.rbi
@@ -0,0 +1,802 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidCache::Entry`.
+# Please instead update this file by running `bin/tapioca dsl SolidCache::Entry`.
+
+
+class SolidCache::Entry
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidCache::Entry).returns(T.untyped))).returns(T::Boolean) }
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig { params(column_name: NilClass, block: T.proc.params(object: ::SolidCache::Entry).void).returns(Integer) }
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidCache::Entry)) }
+ def fifth; end
+
+ sig { returns(::SolidCache::Entry) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidCache::Entry)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidCache::Entry])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidCache::Entry).void
+ ).returns(T.nilable(::SolidCache::Entry))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidCache::Entry)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidCache::Entry) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidCache::Entry).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidCache::Entry])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidCache::Entry]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidCache::Entry]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidCache::Entry)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidCache::Entry) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidCache::Entry) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidCache::Entry)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidCache::Entry]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidCache::Entry) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidCache::Entry)) }
+ def forty_two; end
+
+ sig { returns(::SolidCache::Entry) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidCache::Entry)) }
+ def fourth; end
+
+ sig { returns(::SolidCache::Entry) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidCache::Entry)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidCache::Entry]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidCache::Entry) }
+ def last!; end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidCache::Entry).returns(T.untyped))).returns(T::Boolean) }
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidCache::Entry).void)
+ ).returns(::SolidCache::Entry)
+ end
+ def new(attributes = nil, &block); end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidCache::Entry).returns(T.untyped))).returns(T::Boolean) }
+ def none?(&block); end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidCache::Entry).returns(T.untyped))).returns(T::Boolean) }
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidCache::Entry)) }
+ def second; end
+
+ sig { returns(::SolidCache::Entry) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidCache::Entry)) }
+ def second_to_last; end
+
+ sig { returns(::SolidCache::Entry) }
+ def second_to_last!; end
+
+ sig { returns(::SolidCache::Entry) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidCache::Entry).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidCache::Entry)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidCache::Entry]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidCache::Entry) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidCache::Entry)) }
+ def third; end
+
+ sig { returns(::SolidCache::Entry) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidCache::Entry)) }
+ def third_to_last; end
+
+ sig { returns(::SolidCache::Entry) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_key_hash_range(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def largest_byte_sizes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def up_to_byte_size(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_key_hash_range(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def largest_byte_sizes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def up_to_byte_size(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidCache::Entry } }
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidCache::Entry } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidCache::Entry } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidCache::Entry } }
+
+ sig do
+ params(
+ records: T.any(::SolidCache::Entry, T::Enumerable[T.any(::SolidCache::Entry, T::Enumerable[::SolidCache::Entry])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidCache::Entry, T::Enumerable[T.any(::SolidCache::Entry, T::Enumerable[::SolidCache::Entry])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidCache::Entry, T::Enumerable[T.any(::SolidCache::Entry, T::Enumerable[::SolidCache::Entry])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidCache::Entry, T::Enumerable[T.any(::SolidCache::Entry, T::Enumerable[::SolidCache::Entry])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidCache::Entry, T::Enumerable[T.any(::SolidCache::Entry, T::Enumerable[::SolidCache::Entry])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidCache::Entry, T::Enumerable[T.any(::SolidCache::Entry, T::Enumerable[::SolidCache::Entry])])
+ ).returns(T::Array[::SolidCache::Entry])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidCache::Entry } }
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidCache::Entry]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidCache::Entry } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidCache::Entry } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_cache/expiry_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_cache/expiry_job.rbi
new file mode 100644
index 0000000..baac8de
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_cache/expiry_job.rbi
@@ -0,0 +1,33 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidCache::ExpiryJob`.
+# Please instead update this file by running `bin/tapioca dsl SolidCache::ExpiryJob`.
+
+
+class SolidCache::ExpiryJob
+ class << self
+ sig do
+ params(
+ count: T.untyped,
+ shard: T.untyped,
+ max_age: T.untyped,
+ max_entries: T.untyped,
+ max_size: T.untyped,
+ block: T.nilable(T.proc.params(job: SolidCache::ExpiryJob).void)
+ ).returns(T.any(SolidCache::ExpiryJob, FalseClass))
+ end
+ def perform_later(count, shard: T.unsafe(nil), max_age: T.unsafe(nil), max_entries: T.unsafe(nil), max_size: T.unsafe(nil), &block); end
+
+ sig do
+ params(
+ count: T.untyped,
+ shard: T.untyped,
+ max_age: T.untyped,
+ max_entries: T.untyped,
+ max_size: T.untyped
+ ).returns(T.untyped)
+ end
+ def perform_now(count, shard: T.unsafe(nil), max_age: T.unsafe(nil), max_entries: T.unsafe(nil), max_size: T.unsafe(nil)); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/blocked_execution.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/blocked_execution.rbi
new file mode 100644
index 0000000..7869a20
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/blocked_execution.rbi
@@ -0,0 +1,862 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::BlockedExecution`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::BlockedExecution`.
+
+
+class SolidQueue::BlockedExecution
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::BlockedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::SolidQueue::BlockedExecution).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::BlockedExecution])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::BlockedExecution).void
+ ).returns(T.nilable(::SolidQueue::BlockedExecution))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::BlockedExecution) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::BlockedExecution).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::BlockedExecution])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::BlockedExecution]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::BlockedExecution]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::BlockedExecution) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::BlockedExecution) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::BlockedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::BlockedExecution).void)
+ ).returns(::SolidQueue::BlockedExecution)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::BlockedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::BlockedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def second; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::BlockedExecution).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def third; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::BlockedExecution)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::BlockedExecution) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_semaphore(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_semaphore(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_semaphore!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def job; end
+
+ sig { params(value: T.untyped).void }
+ def job=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_job; end
+
+ sig { returns(T.untyped) }
+ def reload_semaphore; end
+
+ sig { void }
+ def reset_job; end
+
+ sig { void }
+ def reset_semaphore; end
+
+ sig { returns(T.untyped) }
+ def semaphore; end
+
+ sig { params(value: T.untyped).void }
+ def semaphore=(value); end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def expired(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def expired(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::BlockedExecution } }
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::BlockedExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::BlockedExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::BlockedExecution } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::BlockedExecution, T::Enumerable[T.any(::SolidQueue::BlockedExecution, T::Enumerable[::SolidQueue::BlockedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::BlockedExecution, T::Enumerable[T.any(::SolidQueue::BlockedExecution, T::Enumerable[::SolidQueue::BlockedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::BlockedExecution, T::Enumerable[T.any(::SolidQueue::BlockedExecution, T::Enumerable[::SolidQueue::BlockedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::BlockedExecution, T::Enumerable[T.any(::SolidQueue::BlockedExecution, T::Enumerable[::SolidQueue::BlockedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::BlockedExecution, T::Enumerable[T.any(::SolidQueue::BlockedExecution, T::Enumerable[::SolidQueue::BlockedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::BlockedExecution, T::Enumerable[T.any(::SolidQueue::BlockedExecution, T::Enumerable[::SolidQueue::BlockedExecution])])
+ ).returns(T::Array[::SolidQueue::BlockedExecution])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::BlockedExecution } }
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::BlockedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::BlockedExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::BlockedExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/claimed_execution.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/claimed_execution.rbi
new file mode 100644
index 0000000..98e08ea
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/claimed_execution.rbi
@@ -0,0 +1,862 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::ClaimedExecution`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::ClaimedExecution`.
+
+
+class SolidQueue::ClaimedExecution
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ClaimedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::SolidQueue::ClaimedExecution).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::ClaimedExecution])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::ClaimedExecution).void
+ ).returns(T.nilable(::SolidQueue::ClaimedExecution))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::ClaimedExecution) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::ClaimedExecution).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::ClaimedExecution])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::ClaimedExecution]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::ClaimedExecution]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::ClaimedExecution) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::ClaimedExecution) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ClaimedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ClaimedExecution).void)
+ ).returns(::SolidQueue::ClaimedExecution)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ClaimedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ClaimedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def second; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::ClaimedExecution).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def third; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::ClaimedExecution)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::ClaimedExecution) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_process(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_process(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_process!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def job; end
+
+ sig { params(value: T.untyped).void }
+ def job=(value); end
+
+ sig { returns(T.untyped) }
+ def process; end
+
+ sig { params(value: T.untyped).void }
+ def process=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_job; end
+
+ sig { returns(T.untyped) }
+ def reload_process; end
+
+ sig { void }
+ def reset_job; end
+
+ sig { void }
+ def reset_process; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def orphaned(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def orphaned(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ClaimedExecution } }
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::ClaimedExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::ClaimedExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ClaimedExecution } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ClaimedExecution, T::Enumerable[T.any(::SolidQueue::ClaimedExecution, T::Enumerable[::SolidQueue::ClaimedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ClaimedExecution, T::Enumerable[T.any(::SolidQueue::ClaimedExecution, T::Enumerable[::SolidQueue::ClaimedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ClaimedExecution, T::Enumerable[T.any(::SolidQueue::ClaimedExecution, T::Enumerable[::SolidQueue::ClaimedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ClaimedExecution, T::Enumerable[T.any(::SolidQueue::ClaimedExecution, T::Enumerable[::SolidQueue::ClaimedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ClaimedExecution, T::Enumerable[T.any(::SolidQueue::ClaimedExecution, T::Enumerable[::SolidQueue::ClaimedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::ClaimedExecution, T::Enumerable[T.any(::SolidQueue::ClaimedExecution, T::Enumerable[::SolidQueue::ClaimedExecution])])
+ ).returns(T::Array[::SolidQueue::ClaimedExecution])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ClaimedExecution } }
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ClaimedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::ClaimedExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::ClaimedExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/execution/job_attributes.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/execution/job_attributes.rbi
new file mode 100644
index 0000000..ad5f384
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/execution/job_attributes.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::Execution::JobAttributes`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::Execution::JobAttributes`.
+
+
+module SolidQueue::Execution::JobAttributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def assumable_attributes_from_job; end
+ def assumable_attributes_from_job=(value); end
+ def assumable_attributes_from_job?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/failed_execution.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/failed_execution.rbi
new file mode 100644
index 0000000..29b4259
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/failed_execution.rbi
@@ -0,0 +1,835 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::FailedExecution`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::FailedExecution`.
+
+
+class SolidQueue::FailedExecution
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::FailedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::SolidQueue::FailedExecution).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::FailedExecution])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::FailedExecution).void
+ ).returns(T.nilable(::SolidQueue::FailedExecution))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::FailedExecution) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::FailedExecution).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::FailedExecution])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::FailedExecution]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::FailedExecution]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::FailedExecution) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::FailedExecution) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::FailedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::FailedExecution]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::FailedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::FailedExecution]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::FailedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::FailedExecution).void)
+ ).returns(::SolidQueue::FailedExecution)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::FailedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::FailedExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def second; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::FailedExecution).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::FailedExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::FailedExecution]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def third; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::FailedExecution)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::FailedExecution) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def job; end
+
+ sig { params(value: T.untyped).void }
+ def job=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_job; end
+
+ sig { void }
+ def reset_job; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::FailedExecution } }
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::FailedExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::FailedExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::FailedExecution } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::FailedExecution, T::Enumerable[T.any(::SolidQueue::FailedExecution, T::Enumerable[::SolidQueue::FailedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::FailedExecution, T::Enumerable[T.any(::SolidQueue::FailedExecution, T::Enumerable[::SolidQueue::FailedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::FailedExecution, T::Enumerable[T.any(::SolidQueue::FailedExecution, T::Enumerable[::SolidQueue::FailedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::FailedExecution, T::Enumerable[T.any(::SolidQueue::FailedExecution, T::Enumerable[::SolidQueue::FailedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::FailedExecution, T::Enumerable[T.any(::SolidQueue::FailedExecution, T::Enumerable[::SolidQueue::FailedExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::FailedExecution, T::Enumerable[T.any(::SolidQueue::FailedExecution, T::Enumerable[::SolidQueue::FailedExecution])])
+ ).returns(T::Array[::SolidQueue::FailedExecution])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::FailedExecution } }
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::FailedExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::FailedExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::FailedExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/job.rbi
new file mode 100644
index 0000000..7b5e9f5
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/job.rbi
@@ -0,0 +1,937 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::Job`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::Job`.
+
+
+class SolidQueue::Job
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Job).returns(T.untyped))).returns(T::Boolean) }
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig { params(column_name: NilClass, block: T.proc.params(object: ::SolidQueue::Job).void).returns(Integer) }
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::Job)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::Job) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::Job)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::Job])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::Job).void
+ ).returns(T.nilable(::SolidQueue::Job))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::Job)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::Job) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::Job).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::Job])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::Job]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::Job]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::Job)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::Job) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::Job) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Job)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Job]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::Job) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::Job)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::Job) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::Job)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::Job) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Job)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Job]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::Job) }
+ def last!; end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Job).returns(T.untyped))).returns(T::Boolean) }
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Job).void)
+ ).returns(::SolidQueue::Job)
+ end
+ def new(attributes = nil, &block); end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Job).returns(T.untyped))).returns(T::Boolean) }
+ def none?(&block); end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Job).returns(T.untyped))).returns(T::Boolean) }
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::Job)) }
+ def second; end
+
+ sig { returns(::SolidQueue::Job) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::Job)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::Job) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::Job) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::Job).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Job)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Job]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::Job) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::Job)) }
+ def third; end
+
+ sig { returns(::SolidQueue::Job) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::Job)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::Job) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { returns(T.untyped) }
+ def blocked_execution; end
+
+ sig { params(value: T.untyped).void }
+ def blocked_execution=(value); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_blocked_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_claimed_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_failed_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_ready_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_recurring_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_scheduled_execution(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def claimed_execution; end
+
+ sig { params(value: T.untyped).void }
+ def claimed_execution=(value); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_blocked_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_blocked_execution!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_claimed_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_claimed_execution!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_failed_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_failed_execution!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_ready_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_ready_execution!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_recurring_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_recurring_execution!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_scheduled_execution(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_scheduled_execution!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def failed_execution; end
+
+ sig { params(value: T.untyped).void }
+ def failed_execution=(value); end
+
+ sig { returns(T.untyped) }
+ def ready_execution; end
+
+ sig { params(value: T.untyped).void }
+ def ready_execution=(value); end
+
+ sig { returns(T.untyped) }
+ def recurring_execution; end
+
+ sig { params(value: T.untyped).void }
+ def recurring_execution=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_blocked_execution; end
+
+ sig { returns(T.untyped) }
+ def reload_claimed_execution; end
+
+ sig { returns(T.untyped) }
+ def reload_failed_execution; end
+
+ sig { returns(T.untyped) }
+ def reload_ready_execution; end
+
+ sig { returns(T.untyped) }
+ def reload_recurring_execution; end
+
+ sig { returns(T.untyped) }
+ def reload_scheduled_execution; end
+
+ sig { void }
+ def reset_blocked_execution; end
+
+ sig { void }
+ def reset_claimed_execution; end
+
+ sig { void }
+ def reset_failed_execution; end
+
+ sig { void }
+ def reset_ready_execution; end
+
+ sig { void }
+ def reset_recurring_execution; end
+
+ sig { void }
+ def reset_scheduled_execution; end
+
+ sig { returns(T.untyped) }
+ def scheduled_execution; end
+
+ sig { params(value: T.untyped).void }
+ def scheduled_execution=(value); end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def clearable(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def failed(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def finished(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def scheduled(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def clearable(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def failed(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def finished(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def scheduled(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Job } }
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Job } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Job } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Job } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Job, T::Enumerable[T.any(::SolidQueue::Job, T::Enumerable[::SolidQueue::Job])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Job, T::Enumerable[T.any(::SolidQueue::Job, T::Enumerable[::SolidQueue::Job])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Job, T::Enumerable[T.any(::SolidQueue::Job, T::Enumerable[::SolidQueue::Job])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Job, T::Enumerable[T.any(::SolidQueue::Job, T::Enumerable[::SolidQueue::Job])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Job, T::Enumerable[T.any(::SolidQueue::Job, T::Enumerable[::SolidQueue::Job])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::Job, T::Enumerable[T.any(::SolidQueue::Job, T::Enumerable[::SolidQueue::Job])])
+ ).returns(T::Array[::SolidQueue::Job])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Job } }
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Job]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Job } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Job } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/pause.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/pause.rbi
new file mode 100644
index 0000000..e86d074
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/pause.rbi
@@ -0,0 +1,784 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::Pause`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::Pause`.
+
+
+class SolidQueue::Pause
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Pause).returns(T.untyped))).returns(T::Boolean) }
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig { params(column_name: NilClass, block: T.proc.params(object: ::SolidQueue::Pause).void).returns(Integer) }
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::Pause)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::Pause)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::Pause])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::Pause).void
+ ).returns(T.nilable(::SolidQueue::Pause))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::Pause)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::Pause) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::Pause).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::Pause])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::Pause]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::Pause]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::Pause)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::Pause) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::Pause) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Pause)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Pause]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::Pause) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::Pause)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::Pause)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Pause)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Pause]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::Pause) }
+ def last!; end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Pause).returns(T.untyped))).returns(T::Boolean) }
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Pause).void)
+ ).returns(::SolidQueue::Pause)
+ end
+ def new(attributes = nil, &block); end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Pause).returns(T.untyped))).returns(T::Boolean) }
+ def none?(&block); end
+
+ sig { params(block: T.nilable(T.proc.params(record: ::SolidQueue::Pause).returns(T.untyped))).returns(T::Boolean) }
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::Pause)) }
+ def second; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::Pause)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::Pause).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Pause)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Pause]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::Pause) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::Pause)) }
+ def third; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::Pause)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::Pause) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Pause } }
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Pause } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Pause } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Pause } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Pause, T::Enumerable[T.any(::SolidQueue::Pause, T::Enumerable[::SolidQueue::Pause])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Pause, T::Enumerable[T.any(::SolidQueue::Pause, T::Enumerable[::SolidQueue::Pause])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Pause, T::Enumerable[T.any(::SolidQueue::Pause, T::Enumerable[::SolidQueue::Pause])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Pause, T::Enumerable[T.any(::SolidQueue::Pause, T::Enumerable[::SolidQueue::Pause])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Pause, T::Enumerable[T.any(::SolidQueue::Pause, T::Enumerable[::SolidQueue::Pause])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::Pause, T::Enumerable[T.any(::SolidQueue::Pause, T::Enumerable[::SolidQueue::Pause])])
+ ).returns(T::Array[::SolidQueue::Pause])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Pause } }
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Pause]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Pause } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Pause } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/process.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/process.rbi
new file mode 100644
index 0000000..f2db64f
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/process.rbi
@@ -0,0 +1,858 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::Process`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::Process`.
+
+
+class SolidQueue::Process
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Process).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig { params(column_name: NilClass, block: T.proc.params(object: ::SolidQueue::Process).void).returns(Integer) }
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::Process)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::Process) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::Process)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::Process])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::Process).void
+ ).returns(T.nilable(::SolidQueue::Process))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::Process)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::Process) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::Process).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::Process])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::Process]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::Process]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::Process)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::Process) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::Process) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Process)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Process]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::Process) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::Process)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::Process) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::Process)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::Process) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Process)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Process]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::Process) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Process).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Process).void)
+ ).returns(::SolidQueue::Process)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Process).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Process).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::Process)) }
+ def second; end
+
+ sig { returns(::SolidQueue::Process) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::Process)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::Process) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::Process) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::Process).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Process)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Process]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::Process) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::Process)) }
+ def third; end
+
+ sig { returns(::SolidQueue::Process) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::Process)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::Process) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_supervisor(*args, &blk); end
+
+ sig { returns(T::Array[T.untyped]) }
+ def claimed_execution_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def claimed_execution_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `SolidQueue::Process` class because it declared `has_many :claimed_executions`.
+ # 🔗 [Rails guide for `has_many` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def claimed_executions; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def claimed_executions=(value); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_supervisor(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_supervisor!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def reload_supervisor; end
+
+ sig { void }
+ def reset_supervisor; end
+
+ sig { returns(T::Array[T.untyped]) }
+ def supervisee_ids; end
+
+ sig { params(ids: T::Array[T.untyped]).returns(T::Array[T.untyped]) }
+ def supervisee_ids=(ids); end
+
+ # This method is created by ActiveRecord on the `SolidQueue::Process` class because it declared `has_many :supervisees`.
+ # 🔗 [Rails guide for `has_many` association](https://guides.rubyonrails.org/association_basics.html#the-has-many-association)
+ sig { returns(ActiveRecord::Associations::CollectionProxy) }
+ def supervisees; end
+
+ sig { params(value: T::Enumerable[T.untyped]).void }
+ def supervisees=(value); end
+
+ sig { returns(T.untyped) }
+ def supervisor; end
+
+ sig { params(value: T.untyped).void }
+ def supervisor=(value); end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def prunable(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def prunable(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Process } }
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Process } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Process } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Process } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Process, T::Enumerable[T.any(::SolidQueue::Process, T::Enumerable[::SolidQueue::Process])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Process, T::Enumerable[T.any(::SolidQueue::Process, T::Enumerable[::SolidQueue::Process])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Process, T::Enumerable[T.any(::SolidQueue::Process, T::Enumerable[::SolidQueue::Process])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Process, T::Enumerable[T.any(::SolidQueue::Process, T::Enumerable[::SolidQueue::Process])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Process, T::Enumerable[T.any(::SolidQueue::Process, T::Enumerable[::SolidQueue::Process])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::Process, T::Enumerable[T.any(::SolidQueue::Process, T::Enumerable[::SolidQueue::Process])])
+ ).returns(T::Array[::SolidQueue::Process])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Process } }
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Process]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Process } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Process } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/processes/callbacks.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/processes/callbacks.rbi
new file mode 100644
index 0000000..99f23a5
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/processes/callbacks.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::Processes::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::Processes::Callbacks`.
+
+
+module SolidQueue::Processes::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/ready_execution.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/ready_execution.rbi
new file mode 100644
index 0000000..321ef7e
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/ready_execution.rbi
@@ -0,0 +1,841 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::ReadyExecution`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::ReadyExecution`.
+
+
+class SolidQueue::ReadyExecution
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ReadyExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::SolidQueue::ReadyExecution).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::ReadyExecution])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::ReadyExecution).void
+ ).returns(T.nilable(::SolidQueue::ReadyExecution))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::ReadyExecution) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::ReadyExecution).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::ReadyExecution])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::ReadyExecution]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::ReadyExecution]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::ReadyExecution) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::ReadyExecution) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ReadyExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ReadyExecution).void)
+ ).returns(::SolidQueue::ReadyExecution)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ReadyExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ReadyExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def second; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::ReadyExecution).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def third; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::ReadyExecution)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::ReadyExecution) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def job; end
+
+ sig { params(value: T.untyped).void }
+ def job=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_job; end
+
+ sig { void }
+ def reset_job; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def queued_as(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def queued_as(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ReadyExecution } }
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::ReadyExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::ReadyExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ReadyExecution } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ReadyExecution, T::Enumerable[T.any(::SolidQueue::ReadyExecution, T::Enumerable[::SolidQueue::ReadyExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ReadyExecution, T::Enumerable[T.any(::SolidQueue::ReadyExecution, T::Enumerable[::SolidQueue::ReadyExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ReadyExecution, T::Enumerable[T.any(::SolidQueue::ReadyExecution, T::Enumerable[::SolidQueue::ReadyExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ReadyExecution, T::Enumerable[T.any(::SolidQueue::ReadyExecution, T::Enumerable[::SolidQueue::ReadyExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ReadyExecution, T::Enumerable[T.any(::SolidQueue::ReadyExecution, T::Enumerable[::SolidQueue::ReadyExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::ReadyExecution, T::Enumerable[T.any(::SolidQueue::ReadyExecution, T::Enumerable[::SolidQueue::ReadyExecution])])
+ ).returns(T::Array[::SolidQueue::ReadyExecution])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ReadyExecution } }
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ReadyExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::ReadyExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::ReadyExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_execution.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_execution.rbi
new file mode 100644
index 0000000..76dab20
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_execution.rbi
@@ -0,0 +1,841 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::RecurringExecution`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::RecurringExecution`.
+
+
+class SolidQueue::RecurringExecution
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::SolidQueue::RecurringExecution).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::RecurringExecution])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::RecurringExecution).void
+ ).returns(T.nilable(::SolidQueue::RecurringExecution))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::RecurringExecution) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::RecurringExecution).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::RecurringExecution])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::RecurringExecution]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::RecurringExecution]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::RecurringExecution) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::RecurringExecution) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringExecution).void)
+ ).returns(::SolidQueue::RecurringExecution)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def second; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::RecurringExecution).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def third; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringExecution)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::RecurringExecution) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def job; end
+
+ sig { params(value: T.untyped).void }
+ def job=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_job; end
+
+ sig { void }
+ def reset_job; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def clearable(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def clearable(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::RecurringExecution } }
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::RecurringExecution } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringExecution, T::Enumerable[T.any(::SolidQueue::RecurringExecution, T::Enumerable[::SolidQueue::RecurringExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringExecution, T::Enumerable[T.any(::SolidQueue::RecurringExecution, T::Enumerable[::SolidQueue::RecurringExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringExecution, T::Enumerable[T.any(::SolidQueue::RecurringExecution, T::Enumerable[::SolidQueue::RecurringExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringExecution, T::Enumerable[T.any(::SolidQueue::RecurringExecution, T::Enumerable[::SolidQueue::RecurringExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringExecution, T::Enumerable[T.any(::SolidQueue::RecurringExecution, T::Enumerable[::SolidQueue::RecurringExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::RecurringExecution, T::Enumerable[T.any(::SolidQueue::RecurringExecution, T::Enumerable[::SolidQueue::RecurringExecution])])
+ ).returns(T::Array[::SolidQueue::RecurringExecution])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::RecurringExecution } }
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_job.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_job.rbi
new file mode 100644
index 0000000..ac07142
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_job.rbi
@@ -0,0 +1,21 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::RecurringJob`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::RecurringJob`.
+
+
+class SolidQueue::RecurringJob
+ class << self
+ sig do
+ params(
+ command: T.untyped,
+ block: T.nilable(T.proc.params(job: SolidQueue::RecurringJob).void)
+ ).returns(T.any(SolidQueue::RecurringJob, FalseClass))
+ end
+ def perform_later(command, &block); end
+
+ sig { params(command: T.untyped).returns(T.untyped) }
+ def perform_now(command); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_task.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_task.rbi
new file mode 100644
index 0000000..08c3860
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/recurring_task.rbi
@@ -0,0 +1,811 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::RecurringTask`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::RecurringTask`.
+
+
+class SolidQueue::RecurringTask
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringTask).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::SolidQueue::RecurringTask).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::RecurringTask])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::RecurringTask).void
+ ).returns(T.nilable(::SolidQueue::RecurringTask))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::RecurringTask) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::RecurringTask).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::RecurringTask])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::RecurringTask]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::RecurringTask]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::RecurringTask) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::RecurringTask) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::RecurringTask)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::RecurringTask]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::RecurringTask)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::RecurringTask]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringTask).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::RecurringTask).void)
+ ).returns(::SolidQueue::RecurringTask)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringTask).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::RecurringTask).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def second; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::RecurringTask).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::RecurringTask)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::RecurringTask]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def third; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::RecurringTask)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::RecurringTask) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def static(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def static(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::RecurringTask } }
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringTask } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringTask } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::RecurringTask } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringTask, T::Enumerable[T.any(::SolidQueue::RecurringTask, T::Enumerable[::SolidQueue::RecurringTask])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringTask, T::Enumerable[T.any(::SolidQueue::RecurringTask, T::Enumerable[::SolidQueue::RecurringTask])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringTask, T::Enumerable[T.any(::SolidQueue::RecurringTask, T::Enumerable[::SolidQueue::RecurringTask])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringTask, T::Enumerable[T.any(::SolidQueue::RecurringTask, T::Enumerable[::SolidQueue::RecurringTask])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::RecurringTask, T::Enumerable[T.any(::SolidQueue::RecurringTask, T::Enumerable[::SolidQueue::RecurringTask])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::RecurringTask, T::Enumerable[T.any(::SolidQueue::RecurringTask, T::Enumerable[::SolidQueue::RecurringTask])])
+ ).returns(T::Array[::SolidQueue::RecurringTask])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::RecurringTask } }
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::RecurringTask]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringTask } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::RecurringTask } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/scheduled_execution.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/scheduled_execution.rbi
new file mode 100644
index 0000000..175b25f
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/scheduled_execution.rbi
@@ -0,0 +1,847 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::ScheduledExecution`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::ScheduledExecution`.
+
+
+class SolidQueue::ScheduledExecution
+ include GeneratedAssociationMethods
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ScheduledExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig do
+ params(
+ column_name: NilClass,
+ block: T.proc.params(object: ::SolidQueue::ScheduledExecution).void
+ ).returns(Integer)
+ end
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::ScheduledExecution])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::ScheduledExecution).void
+ ).returns(T.nilable(::SolidQueue::ScheduledExecution))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::ScheduledExecution) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::ScheduledExecution).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::ScheduledExecution])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::ScheduledExecution]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::ScheduledExecution]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::ScheduledExecution) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::ScheduledExecution) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ScheduledExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::ScheduledExecution).void)
+ ).returns(::SolidQueue::ScheduledExecution)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ScheduledExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::ScheduledExecution).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def second; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::ScheduledExecution).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def third; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::ScheduledExecution)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::ScheduledExecution) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationMethods
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def build_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.untyped) }
+ def create_job!(*args, &blk); end
+
+ sig { returns(T.untyped) }
+ def job; end
+
+ sig { params(value: T.untyped).void }
+ def job=(value); end
+
+ sig { returns(T.untyped) }
+ def reload_job; end
+
+ sig { void }
+ def reset_job; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def due(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def next_batch(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def due(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def next_batch(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def ordered(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ScheduledExecution } }
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::ScheduledExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::ScheduledExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ScheduledExecution } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ScheduledExecution, T::Enumerable[T.any(::SolidQueue::ScheduledExecution, T::Enumerable[::SolidQueue::ScheduledExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ScheduledExecution, T::Enumerable[T.any(::SolidQueue::ScheduledExecution, T::Enumerable[::SolidQueue::ScheduledExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ScheduledExecution, T::Enumerable[T.any(::SolidQueue::ScheduledExecution, T::Enumerable[::SolidQueue::ScheduledExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ScheduledExecution, T::Enumerable[T.any(::SolidQueue::ScheduledExecution, T::Enumerable[::SolidQueue::ScheduledExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::ScheduledExecution, T::Enumerable[T.any(::SolidQueue::ScheduledExecution, T::Enumerable[::SolidQueue::ScheduledExecution])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::ScheduledExecution, T::Enumerable[T.any(::SolidQueue::ScheduledExecution, T::Enumerable[::SolidQueue::ScheduledExecution])])
+ ).returns(T::Array[::SolidQueue::ScheduledExecution])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::ScheduledExecution } }
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::ScheduledExecution]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::ScheduledExecution } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::ScheduledExecution } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/semaphore.rbi b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/semaphore.rbi
new file mode 100644
index 0000000..16842ad
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/dsl/solid_queue/semaphore.rbi
@@ -0,0 +1,812 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `SolidQueue::Semaphore`.
+# Please instead update this file by running `bin/tapioca dsl SolidQueue::Semaphore`.
+
+
+class SolidQueue::Semaphore
+ extend CommonRelationMethods
+ extend GeneratedRelationMethods
+
+ private
+
+ sig { returns(NilClass) }
+ def to_ary; end
+
+ module CommonRelationMethods
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Semaphore).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def any?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def average(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def build(attributes = nil, &block); end
+
+ sig { params(operation: Symbol, column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.nilable(T.any(String, Symbol))).returns(Integer) }
+ sig { params(column_name: NilClass, block: T.proc.params(object: ::SolidQueue::Semaphore).void).returns(Integer) }
+ def count(column_name = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def create(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def create!(attributes = nil, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def create_or_find_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def create_or_find_by!(attributes, &block); end
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def destroy_all; end
+
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
+ def exists?(conditions = :none); end
+
+ sig { returns(T.nilable(::SolidQueue::Semaphore)) }
+ def fifth; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def fifth!; end
+
+ sig do
+ params(
+ args: T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])
+ ).returns(::SolidQueue::Semaphore)
+ end
+ sig do
+ params(
+ args: T::Array[T.any(String, Symbol, ::ActiveSupport::Multibyte::Chars, T::Boolean, BigDecimal, Numeric, ::ActiveRecord::Type::Binary::Data, ::ActiveRecord::Type::Time::Value, Date, Time, ::ActiveSupport::Duration, T::Class[T.anything])]
+ ).returns(T::Enumerable[::SolidQueue::Semaphore])
+ end
+ sig do
+ params(
+ args: NilClass,
+ block: T.proc.params(object: ::SolidQueue::Semaphore).void
+ ).returns(T.nilable(::SolidQueue::Semaphore))
+ end
+ def find(args = nil, &block); end
+
+ sig { params(args: T.untyped).returns(T.nilable(::SolidQueue::Semaphore)) }
+ def find_by(*args); end
+
+ sig { params(args: T.untyped).returns(::SolidQueue::Semaphore) }
+ def find_by!(*args); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: ::SolidQueue::Semaphore).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[::SolidQueue::Semaphore])
+ end
+ def find_each(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ block: T.proc.params(object: T::Array[::SolidQueue::Semaphore]).void
+ ).void
+ end
+ sig do
+ params(
+ start: T.untyped,
+ finish: T.untyped,
+ batch_size: Integer,
+ error_on_ignore: T.untyped,
+ order: Symbol
+ ).returns(T::Enumerator[T::Enumerator[::SolidQueue::Semaphore]])
+ end
+ def find_in_batches(start: nil, finish: nil, batch_size: 1000, error_on_ignore: nil, order: :asc, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def find_or_create_by(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def find_or_create_by!(attributes, &block); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def find_or_initialize_by(attributes, &block); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(T.nilable(::SolidQueue::Semaphore)) }
+ def find_signed(signed_id, purpose: nil); end
+
+ sig { params(signed_id: T.untyped, purpose: T.untyped).returns(::SolidQueue::Semaphore) }
+ def find_signed!(signed_id, purpose: nil); end
+
+ sig { params(arg: T.untyped, args: T.untyped).returns(::SolidQueue::Semaphore) }
+ def find_sole_by(arg, *args); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Semaphore)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Semaphore]) }
+ def first(limit = nil); end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def first!; end
+
+ sig { returns(T.nilable(::SolidQueue::Semaphore)) }
+ def forty_two; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def forty_two!; end
+
+ sig { returns(T.nilable(::SolidQueue::Semaphore)) }
+ def fourth; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def fourth!; end
+
+ sig { returns(Array) }
+ def ids; end
+
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped,
+ block: T.proc.params(object: PrivateRelation).void
+ ).void
+ end
+ sig do
+ params(
+ of: Integer,
+ start: T.untyped,
+ finish: T.untyped,
+ load: T.untyped,
+ error_on_ignore: T.untyped,
+ order: Symbol,
+ use_ranges: T.untyped
+ ).returns(::ActiveRecord::Batches::BatchEnumerator)
+ end
+ def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, order: :asc, use_ranges: nil, &block); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def include?(record); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Semaphore)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Semaphore]) }
+ def last(limit = nil); end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def last!; end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Semaphore).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def many?(&block); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def maximum(column_name); end
+
+ sig { params(record: T.untyped).returns(T::Boolean) }
+ def member?(record); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ attributes: T.untyped,
+ block: T.nilable(T.proc.params(object: ::SolidQueue::Semaphore).void)
+ ).returns(::SolidQueue::Semaphore)
+ end
+ def new(attributes = nil, &block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Semaphore).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def none?(&block); end
+
+ sig do
+ params(
+ block: T.nilable(T.proc.params(record: ::SolidQueue::Semaphore).returns(T.untyped))
+ ).returns(T::Boolean)
+ end
+ def one?(&block); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pick(*column_names); end
+
+ sig { params(column_names: T.untyped).returns(T.untyped) }
+ def pluck(*column_names); end
+
+ sig { returns(T.nilable(::SolidQueue::Semaphore)) }
+ def second; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def second!; end
+
+ sig { returns(T.nilable(::SolidQueue::Semaphore)) }
+ def second_to_last; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def second_to_last!; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def sole; end
+
+ sig { params(initial_value_or_column: T.untyped).returns(T.any(Integer, Float, BigDecimal)) }
+ sig do
+ type_parameters(:U)
+ .params(
+ initial_value_or_column: T.nilable(T.type_parameter(:U)),
+ block: T.proc.params(object: ::SolidQueue::Semaphore).returns(T.type_parameter(:U))
+ ).returns(T.type_parameter(:U))
+ end
+ def sum(initial_value_or_column = nil, &block); end
+
+ sig { params(limit: NilClass).returns(T.nilable(::SolidQueue::Semaphore)) }
+ sig { params(limit: Integer).returns(T::Array[::SolidQueue::Semaphore]) }
+ def take(limit = nil); end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def take!; end
+
+ sig { returns(T.nilable(::SolidQueue::Semaphore)) }
+ def third; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def third!; end
+
+ sig { returns(T.nilable(::SolidQueue::Semaphore)) }
+ def third_to_last; end
+
+ sig { returns(::SolidQueue::Semaphore) }
+ def third_to_last!; end
+ end
+
+ module GeneratedAssociationRelationMethods
+ sig { returns(PrivateAssociationRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def available(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateAssociationRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def expired(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateAssociationRelation) }
+ def without(*args, &blk); end
+ end
+
+ module GeneratedRelationMethods
+ sig { returns(PrivateRelation) }
+ def all; end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def and(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def annotate(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def available(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def create_with(*args, &blk); end
+
+ sig { params(value: T::Boolean).returns(PrivateRelation) }
+ def distinct(value = true); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def eager_load(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def except(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def excluding(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def expired(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def extending(*args, &blk); end
+
+ sig { params(association: Symbol).returns(T::Array[T.untyped]) }
+ def extract_associated(association); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def from(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationGroupChain) }
+ def group(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def having(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def in_order_of(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def includes(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def invert_where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def left_outer_joins(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def limit(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def lock(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def merge(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def none(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def null_relation?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def offset(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def only(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def optimizer_hints(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def or(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def preload(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def readonly(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def references(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def regroup(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reorder(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reselect(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def reverse_order(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def rewhere(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def select(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def strict_loading(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def structurally_compatible?(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def uniq!(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def unscope(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelationWhereChain) }
+ def where(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def with_recursive(*args, &blk); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(PrivateRelation) }
+ def without(*args, &blk); end
+ end
+
+ class PrivateAssociationRelation < ::ActiveRecord::AssociationRelation
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Semaphore } }
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def to_ary; end
+ end
+
+ class PrivateAssociationRelationGroupChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Semaphore } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateAssociationRelationWhereChain < PrivateAssociationRelation
+ Elem = type_member { { fixed: ::SolidQueue::Semaphore } }
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateAssociationRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateAssociationRelation) }
+ def not(opts, *rest); end
+ end
+
+ class PrivateCollectionProxy < ::ActiveRecord::Associations::CollectionProxy
+ include CommonRelationMethods
+ include GeneratedAssociationRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Semaphore } }
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Semaphore, T::Enumerable[T.any(::SolidQueue::Semaphore, T::Enumerable[::SolidQueue::Semaphore])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def <<(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Semaphore, T::Enumerable[T.any(::SolidQueue::Semaphore, T::Enumerable[::SolidQueue::Semaphore])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def append(*records); end
+
+ sig { returns(PrivateCollectionProxy) }
+ def clear; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Semaphore, T::Enumerable[T.any(::SolidQueue::Semaphore, T::Enumerable[::SolidQueue::Semaphore])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def concat(*records); end
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def load_target; end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Semaphore, T::Enumerable[T.any(::SolidQueue::Semaphore, T::Enumerable[::SolidQueue::Semaphore])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def prepend(*records); end
+
+ sig do
+ params(
+ records: T.any(::SolidQueue::Semaphore, T::Enumerable[T.any(::SolidQueue::Semaphore, T::Enumerable[::SolidQueue::Semaphore])])
+ ).returns(PrivateCollectionProxy)
+ end
+ def push(*records); end
+
+ sig do
+ params(
+ other_array: T.any(::SolidQueue::Semaphore, T::Enumerable[T.any(::SolidQueue::Semaphore, T::Enumerable[::SolidQueue::Semaphore])])
+ ).returns(T::Array[::SolidQueue::Semaphore])
+ end
+ def replace(other_array); end
+
+ sig { returns(PrivateAssociationRelation) }
+ def scope; end
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def target; end
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def to_ary; end
+ end
+
+ class PrivateRelation < ::ActiveRecord::Relation
+ include CommonRelationMethods
+ include GeneratedRelationMethods
+
+ Elem = type_member { { fixed: ::SolidQueue::Semaphore } }
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def to_a; end
+
+ sig { returns(T::Array[::SolidQueue::Semaphore]) }
+ def to_ary; end
+ end
+
+ class PrivateRelationGroupChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Semaphore } }
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) }
+ def average(column_name); end
+
+ sig do
+ params(
+ operation: Symbol,
+ column_name: T.any(String, Symbol)
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def calculate(operation, column_name); end
+
+ sig { params(column_name: T.untyped).returns(T::Hash[T.untyped, Integer]) }
+ def count(column_name = nil); end
+
+ sig { params(args: T.untyped, blk: T.untyped).returns(T.self_type) }
+ def having(*args, &blk); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def maximum(column_name); end
+
+ sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) }
+ def minimum(column_name); end
+
+ sig do
+ params(
+ column_name: T.nilable(T.any(String, Symbol)),
+ block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))
+ ).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)])
+ end
+ def sum(column_name = nil, &block); end
+ end
+
+ class PrivateRelationWhereChain < PrivateRelation
+ Elem = type_member { { fixed: ::SolidQueue::Semaphore } }
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def associated(*args); end
+
+ sig { params(args: T.untyped).returns(PrivateRelation) }
+ def missing(*args); end
+
+ sig { params(opts: T.untyped, rest: T.untyped).returns(PrivateRelation) }
+ def not(opts, *rest); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/gems/.gitattributes b/apps/govquests-api/rails_app/sorbet/rbi/gems/.gitattributes
new file mode 100644
index 0000000..d9bb82a
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/gems/.gitattributes
@@ -0,0 +1 @@
+**/*.rbi linguist-generated=true
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/gems/actioncable@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi b/apps/govquests-api/rails_app/sorbet/rbi/gems/actioncable@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
new file mode 100644
index 0000000..065d77d
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/gems/actioncable@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
@@ -0,0 +1,9 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actioncable` gem.
+# Please instead update this file by running `bin/tapioca gem actioncable`.
+
+
+# THIS IS AN EMPTY RBI FILE.
+# see https://github.com/Shopify/tapioca#manually-requiring-parts-of-a-gem
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/gems/actionmailbox@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi b/apps/govquests-api/rails_app/sorbet/rbi/gems/actionmailbox@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
new file mode 100644
index 0000000..d4ce309
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/gems/actionmailbox@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
@@ -0,0 +1,1919 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actionmailbox` gem.
+# Please instead update this file by running `bin/tapioca gem actionmailbox`.
+
+
+# :markup: markdown
+# :include: ../README.md
+#
+# source://actionmailbox//lib/action_mailbox/gem_version.rb#3
+module ActionMailbox
+ extend ::ActiveSupport::Autoload
+
+ # source://actionmailbox//lib/action_mailbox.rb#22
+ def incinerate; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#22
+ def incinerate=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#23
+ def incinerate_after; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#23
+ def incinerate_after=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#20
+ def ingress; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#20
+ def ingress=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#21
+ def logger; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#21
+ def logger=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#24
+ def queues; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#24
+ def queues=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#25
+ def storage_service; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#25
+ def storage_service=(val); end
+
+ class << self
+ # source://actionmailbox//lib/action_mailbox/deprecator.rb#4
+ def deprecator; end
+
+ # Returns the currently loaded version of Action Mailbox as a +Gem::Version+.
+ #
+ # source://actionmailbox//lib/action_mailbox/gem_version.rb#5
+ def gem_version; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#22
+ def incinerate; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#22
+ def incinerate=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#23
+ def incinerate_after; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#23
+ def incinerate_after=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#20
+ def ingress; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#20
+ def ingress=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#21
+ def logger; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#21
+ def logger=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#24
+ def queues; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#24
+ def queues=(val); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/engine.rb#413
+ def railtie_helpers_paths; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/engine.rb#396
+ def railtie_namespace; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/engine.rb#417
+ def railtie_routes_url_helpers(include_path_helpers = T.unsafe(nil)); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#25
+ def storage_service; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#25
+ def storage_service=(val); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/engine.rb#402
+ def table_name_prefix; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/engine.rb#409
+ def use_relative_model_naming?; end
+
+ # Returns the currently loaded version of Action Mailbox as a +Gem::Version+.
+ #
+ # source://actionmailbox//lib/action_mailbox/version.rb#7
+ def version; end
+ end
+end
+
+# = Action Mailbox \Base
+#
+# The base class for all application mailboxes. Not intended to be inherited from directly. Inherit from
+# +ApplicationMailbox+ instead, as that's where the app-specific routing is configured. This routing
+# is specified in the following ways:
+#
+# class ApplicationMailbox < ActionMailbox::Base
+# # Any of the recipients of the mail (whether to, cc, bcc) are matched against the regexp.
+# routing /^replies@/i => :replies
+#
+# # Any of the recipients of the mail (whether to, cc, bcc) needs to be an exact match for the string.
+# routing "help@example.com" => :help
+#
+# # Any callable (proc, lambda, etc) object is passed the inbound_email record and is a match if true.
+# routing ->(inbound_email) { inbound_email.mail.to.size > 2 } => :multiple_recipients
+#
+# # Any object responding to #match? is called with the inbound_email record as an argument. Match if true.
+# routing CustomAddress.new => :custom
+#
+# # Any inbound_email that has not been already matched will be sent to the BackstopMailbox.
+# routing :all => :backstop
+# end
+#
+# Application mailboxes need to override the #process method, which is invoked by the framework after
+# callbacks have been run. The callbacks available are: +before_processing+, +after_processing+, and
+# +around_processing+. The primary use case is to ensure that certain preconditions to processing are fulfilled
+# using +before_processing+ callbacks.
+#
+# If a precondition fails to be met, you can halt the processing using the +#bounced!+ method,
+# which will silently prevent any further processing, but not actually send out any bounce notice. You
+# can also pair this behavior with the invocation of an Action Mailer class responsible for sending out
+# an actual bounce email. This is done using the #bounce_with method, which takes the mail object returned
+# by an Action Mailer method, like so:
+#
+# class ForwardsMailbox < ApplicationMailbox
+# before_processing :ensure_sender_is_a_user
+#
+# private
+# def ensure_sender_is_a_user
+# unless User.exist?(email_address: mail.from)
+# bounce_with UserRequiredMailer.missing(inbound_email)
+# end
+# end
+# end
+#
+# During the processing of the inbound email, the status will be tracked. Before processing begins,
+# the email will normally have the +pending+ status. Once processing begins, just before callbacks
+# and the #process method is called, the status is changed to +processing+. If processing is allowed to
+# complete, the status is changed to +delivered+. If a bounce is triggered, then +bounced+. If an unhandled
+# exception is bubbled up, then +failed+.
+#
+# Exceptions can be handled at the class level using the familiar
+# ActiveSupport::Rescuable approach:
+#
+# class ForwardsMailbox < ApplicationMailbox
+# rescue_from(ApplicationSpecificVerificationError) { bounced! }
+# end
+#
+# source://actionmailbox//lib/action_mailbox/base.rb#66
+class ActionMailbox::Base
+ include ::ActiveSupport::Rescuable
+ include ::ActionMailbox::Routing
+ include ::ActiveSupport::Callbacks
+ include ::ActionMailbox::Callbacks
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionMailbox::Routing::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::ActiveSupport::DescendantsTracker
+ extend ::ActionMailbox::Callbacks::ClassMethods
+
+ # @return [Base] a new instance of Base
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#79
+ def initialize(inbound_email); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#69
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#923
+ def _process_callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#911
+ def _run_process_callbacks(&block); end
+
+ # Immediately sends the given +message+ and changes the inbound email's status to +:bounced+.
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#111
+ def bounce_now_with(message); end
+
+ # Enqueues the given +message+ for delivery and changes the inbound email's status to +:bounced+.
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#105
+ def bounce_with(message); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#71
+ def bounced!(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#71
+ def delivered!(*_arg0, **_arg1, &_arg2); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#100
+ def finished_processing?; end
+
+ # Returns the value of attribute inbound_email.
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#70
+ def inbound_email; end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#73
+ def logger(&_arg0); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#71
+ def mail(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#83
+ def perform_processing; end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#96
+ def process; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router=(val); end
+
+ private
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#117
+ def instrumentation_payload; end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#124
+ def track_status_of_inbound_email; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#915
+ def _process_callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#919
+ def _process_callbacks=(value); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#75
+ def receive(inbound_email); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def rescue_handlers=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router=(val); end
+ end
+end
+
+class ActionMailbox::BaseController < ::ActionController::Base
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def authenticate_by_password; end
+ def ensure_configured; end
+ def ingress_name; end
+ def password; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+# = Action Mailbox \Callbacks
+#
+# Defines the callbacks related to processing.
+#
+# source://actionmailbox//lib/action_mailbox/callbacks.rb#9
+module ActionMailbox::Callbacks
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+ mixes_in_class_methods ::ActionMailbox::Callbacks::ClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/callbacks.rb#0
+module ActionMailbox::Callbacks::ClassMethods
+ # source://actionmailbox//lib/action_mailbox/callbacks.rb#27
+ def after_processing(*methods, &block); end
+
+ # source://actionmailbox//lib/action_mailbox/callbacks.rb#31
+ def around_processing(*methods, &block); end
+
+ # source://actionmailbox//lib/action_mailbox/callbacks.rb#23
+ def before_processing(*methods, &block); end
+end
+
+# source://actionmailbox//lib/action_mailbox/callbacks.rb#13
+ActionMailbox::Callbacks::TERMINATOR = T.let(T.unsafe(nil), Proc)
+
+# source://actionmailbox//lib/action_mailbox/engine.rb#12
+class ActionMailbox::Engine < ::Rails::Engine
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+ end
+end
+
+class ActionMailbox::InboundEmail < ::ActionMailbox::Record
+ include ::ActionMailbox::InboundEmail::GeneratedAttributeMethods
+ include ::ActionMailbox::InboundEmail::GeneratedAssociationMethods
+ include ::ActionMailbox::InboundEmail::Routable
+ include ::ActionMailbox::InboundEmail::MessageId
+ include ::ActionMailbox::InboundEmail::Incineratable
+ extend ::ActionMailbox::InboundEmail::MessageId::ClassMethods
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/autosave_association.rb#162
+ def autosave_associated_records_for_raw_email_attachment(*args); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/autosave_association.rb#162
+ def autosave_associated_records_for_raw_email_blob(*args); end
+
+ def instrumentation_payload; end
+ def mail; end
+ def processed?; end
+ def source; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _reflections; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _reflections=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _validators; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _validators=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def attachment_reflections; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def attachment_reflections=(new_value); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def bounced(*args, **_arg1); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def defined_enums; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def defined_enums=(new_value); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def delivered(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def failed(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def not_bounced(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def not_delivered(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def not_failed(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def not_pending(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def not_processing(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def pending(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def processing(*args, **_arg1); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/enum.rb#250
+ def statuses; end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/scoping/named.rb#174
+ def with_attached_raw_email(*args, **_arg1); end
+ end
+end
+
+module ActionMailbox::InboundEmail::GeneratedAssociationMethods
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#32
+ def build_raw_email_attachment(*args, &block); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#32
+ def build_raw_email_blob(*args, &block); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#36
+ def create_raw_email_attachment(*args, &block); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#40
+ def create_raw_email_attachment!(*args, &block); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#36
+ def create_raw_email_blob(*args, &block); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#40
+ def create_raw_email_blob!(*args, &block); end
+
+ # source://activestorage/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_storage/attached/model.rb#113
+ def raw_email; end
+
+ # source://activestorage/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_storage/attached/model.rb#118
+ def raw_email=(attachable); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/association.rb#104
+ def raw_email_attachment; end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/association.rb#112
+ def raw_email_attachment=(value); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/association.rb#104
+ def raw_email_blob; end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/association.rb#112
+ def raw_email_blob=(value); end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#19
+ def reload_raw_email_attachment; end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#19
+ def reload_raw_email_blob; end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#23
+ def reset_raw_email_attachment; end
+
+ # source://activerecord/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_record/associations/builder/singular_association.rb#23
+ def reset_raw_email_blob; end
+end
+
+module ActionMailbox::InboundEmail::GeneratedAttributeMethods; end
+
+module ActionMailbox::InboundEmail::Incineratable
+ extend ::ActiveSupport::Concern
+
+ def incinerate; end
+ def incinerate_later; end
+end
+
+class ActionMailbox::InboundEmail::Incineratable::Incineration
+ def initialize(inbound_email); end
+
+ def run; end
+
+ private
+
+ def due?; end
+ def processed?; end
+end
+
+module ActionMailbox::InboundEmail::MessageId
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailbox::InboundEmail::MessageId::ClassMethods
+end
+
+module ActionMailbox::InboundEmail::MessageId::ClassMethods
+ def create_and_extract_message_id!(source, **options); end
+
+ private
+
+ def create_and_upload_raw_email!(source); end
+ def extract_message_id(source); end
+ def generate_missing_message_id(message_checksum); end
+end
+
+module ActionMailbox::InboundEmail::Routable
+ extend ::ActiveSupport::Concern
+
+ def route; end
+ def route_later; end
+end
+
+class ActionMailbox::IncinerationJob < ::ActiveJob::Base
+ def perform(inbound_email); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def queue_name; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def queue_name=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def rescue_handlers=(new_value); end
+
+ def schedule(inbound_email); end
+ end
+end
+
+module ActionMailbox::Ingresses; end
+module ActionMailbox::Ingresses::Mailgun; end
+
+class ActionMailbox::Ingresses::Mailgun::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def authenticate; end
+ def authenticated?; end
+ def key; end
+ def mail; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+class ActionMailbox::Ingresses::Mailgun::InboundEmailsController::Authenticator
+ def initialize(key:, timestamp:, token:, signature:); end
+
+ def authenticated?; end
+ def key; end
+ def signature; end
+ def timestamp; end
+ def token; end
+
+ private
+
+ def expected_signature; end
+ def recent?; end
+ def signed?; end
+end
+
+module ActionMailbox::Ingresses::Mandrill; end
+
+class ActionMailbox::Ingresses::Mandrill::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+ def health_check; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def authenticate; end
+ def authenticated?; end
+ def events; end
+ def key; end
+ def raw_emails; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+class ActionMailbox::Ingresses::Mandrill::InboundEmailsController::Authenticator
+ def initialize(request, key); end
+
+ def authenticated?; end
+ def key; end
+ def request; end
+
+ private
+
+ def expected_signature; end
+ def given_signature; end
+ def message; end
+end
+
+module ActionMailbox::Ingresses::Postmark; end
+
+class ActionMailbox::Ingresses::Postmark::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def mail; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+module ActionMailbox::Ingresses::Relay; end
+
+class ActionMailbox::Ingresses::Relay::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def require_valid_rfc822_message; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+module ActionMailbox::Ingresses::Sendgrid; end
+
+class ActionMailbox::Ingresses::Sendgrid::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def envelope; end
+ def mail; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+class ActionMailbox::Record < ::ActiveRecord::Base
+ include ::ActionMailbox::Record::GeneratedAttributeMethods
+ include ::ActionMailbox::Record::GeneratedAssociationMethods
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _validators; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _validators=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def defined_enums; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def defined_enums=(new_value); end
+ end
+end
+
+module ActionMailbox::Record::GeneratedAssociationMethods; end
+module ActionMailbox::Record::GeneratedAttributeMethods; end
+
+# = Action Mailbox \Router
+#
+# Encapsulates the routes that live on the ApplicationMailbox and performs the actual routing when
+# an inbound_email is received.
+#
+# source://actionmailbox//lib/action_mailbox/router.rb#8
+class ActionMailbox::Router
+ # @return [Router] a new instance of Router
+ #
+ # source://actionmailbox//lib/action_mailbox/router.rb#11
+ def initialize; end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#21
+ def add_route(address, to:); end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#15
+ def add_routes(routes); end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#35
+ def mailbox_for(inbound_email); end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#25
+ def route(inbound_email); end
+
+ private
+
+ # Returns the value of attribute routes.
+ #
+ # source://actionmailbox//lib/action_mailbox/router.rb#40
+ def routes; end
+end
+
+# source://actionmailbox//lib/action_mailbox/router/route.rb#7
+class ActionMailbox::Router::Route
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#10
+ def initialize(address, to:); end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#8
+ def address; end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#31
+ def mailbox_class; end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#8
+ def mailbox_name; end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#16
+ def match?(inbound_email); end
+
+ private
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#36
+ def ensure_valid_address; end
+end
+
+# source://actionmailbox//lib/action_mailbox/router.rb#9
+class ActionMailbox::Router::RoutingError < ::StandardError; end
+
+# See ActionMailbox::Base for how to specify routing.
+#
+# source://actionmailbox//lib/action_mailbox/routing.rb#5
+module ActionMailbox::Routing
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailbox::Routing::ClassMethods
+end
+
+# source://actionmailbox//lib/action_mailbox/routing.rb#0
+module ActionMailbox::Routing::ClassMethods
+ # source://actionmailbox//lib/action_mailbox/routing.rb#21
+ def mailbox_for(inbound_email); end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#17
+ def route(inbound_email); end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#13
+ def routing(routes); end
+end
+
+class ActionMailbox::RoutingJob < ::ActiveJob::Base
+ def perform(inbound_email); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def queue_name; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def queue_name=(new_value); end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/test_case.rb#7
+class ActionMailbox::TestCase < ::ActiveSupport::TestCase
+ include ::ActionMailbox::TestHelper
+end
+
+# source://actionmailbox//lib/action_mailbox/test_helper.rb#6
+module ActionMailbox::TestHelper
+ # Create an InboundEmail record using an eml fixture in the format of message/rfc822
+ # referenced with +fixture_name+ located in +test/fixtures/files/fixture_name+.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#9
+ def create_inbound_email_from_fixture(fixture_name, status: T.unsafe(nil)); end
+
+ # Creates an InboundEmail by specifying through options or a block.
+ #
+ # ==== Options
+ #
+ # * :status - The +status+ to set for the created InboundEmail.
+ # For possible statuses, see its documentation.
+ #
+ # ==== Creating a simple email
+ #
+ # When you only need to set basic fields like +from+, +to+, +subject+, and
+ # +body+, you can pass them directly as options.
+ #
+ # create_inbound_email_from_mail(from: "david@loudthinking.com", subject: "Hello!")
+ #
+ # ==== Creating a multi-part email
+ #
+ # When you need to create a more intricate email, like a multi-part email
+ # that contains both a plaintext version and an HTML version, you can pass a
+ # block.
+ #
+ # create_inbound_email_from_mail do
+ # to "David Heinemeier Hansson "
+ # from "Bilbo Baggins "
+ # subject "Come down to the Shire!"
+ #
+ # text_part do
+ # body "Please join us for a party at Bag End"
+ # end
+ #
+ # html_part do
+ # body "
Please join us for a party at Bag End
"
+ # end
+ # end
+ #
+ # As with +Mail.new+, you can also use a block parameter to define the parts
+ # of the message:
+ #
+ # create_inbound_email_from_mail do |mail|
+ # mail.to "David Heinemeier Hansson "
+ # mail.from "Bilbo Baggins "
+ # mail.subject "Come down to the Shire!"
+ #
+ # mail.text_part do |part|
+ # part.body "Please join us for a party at Bag End"
+ # end
+ #
+ # mail.html_part do |part|
+ # part.body "
Please join us for a party at Bag End
"
+ # end
+ # end
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#63
+ def create_inbound_email_from_mail(status: T.unsafe(nil), **mail_options, &block); end
+
+ # Create an InboundEmail using the raw rfc822 +source+ as text.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#72
+ def create_inbound_email_from_source(source, status: T.unsafe(nil)); end
+
+ # Create an InboundEmail from fixture using the same arguments as create_inbound_email_from_fixture
+ # and immediately route it to processing.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#79
+ def receive_inbound_email_from_fixture(*args); end
+
+ # Create an InboundEmail using the same options or block as
+ # create_inbound_email_from_mail, then immediately route it for processing.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#85
+ def receive_inbound_email_from_mail(**kwargs, &block); end
+
+ # Create an InboundEmail using the same arguments as create_inbound_email_from_source and immediately route it
+ # to processing.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#91
+ def receive_inbound_email_from_source(*args); end
+end
+
+# source://actionmailbox//lib/action_mailbox/gem_version.rb#9
+module ActionMailbox::VERSION; end
+
+# source://actionmailbox//lib/action_mailbox/gem_version.rb#10
+ActionMailbox::VERSION::MAJOR = T.let(T.unsafe(nil), Integer)
+
+# source://actionmailbox//lib/action_mailbox/gem_version.rb#11
+ActionMailbox::VERSION::MINOR = T.let(T.unsafe(nil), Integer)
+
+# source://actionmailbox//lib/action_mailbox/gem_version.rb#13
+ActionMailbox::VERSION::PRE = T.let(T.unsafe(nil), String)
+
+# source://actionmailbox//lib/action_mailbox/gem_version.rb#15
+ActionMailbox::VERSION::STRING = T.let(T.unsafe(nil), String)
+
+# source://actionmailbox//lib/action_mailbox/gem_version.rb#12
+ActionMailbox::VERSION::TINY = T.let(T.unsafe(nil), Integer)
+
+# source://actionmailbox//lib/action_mailbox/mail_ext/address_equality.rb#3
+module Mail
+ class << self
+ # source://mail/2.8.1/lib/mail/mail.rb#163
+ def all(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#183
+ def connection(&block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#98
+ def defaults(&block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#174
+ def delete_all(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#131
+ def deliver(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#103
+ def delivery_method; end
+
+ # source://mail/2.8.1/lib/mail.rb#35
+ def eager_autoload!; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#139
+ def find(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#145
+ def find_and_delete(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#151
+ def first(*args, &block); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/from_source.rb#4
+ def from_source(source); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#233
+ def inform_interceptors(mail); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#227
+ def inform_observers(mail); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#157
+ def last(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#50
+ def new(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#243
+ def random_tag; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#168
+ def read(filename); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#179
+ def read_from_string(mail_as_string); end
+
+ # source://mail/2.8.1/lib/mail.rb#23
+ def register_autoload(name, path); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#215
+ def register_interceptor(interceptor); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#196
+ def register_observer(observer); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#108
+ def retriever_method; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#252
+ def something_random; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#256
+ def uniq; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#223
+ def unregister_interceptor(interceptor); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#204
+ def unregister_observer(observer); end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/mail_ext/address_equality.rb#4
+class Mail::Address
+ # source://mail/2.8.1/lib/mail/elements/address.rb#25
+ def initialize(value = T.unsafe(nil)); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/address_equality.rb#5
+ def ==(other_address); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#65
+ def address(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#79
+ def address=(value); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#132
+ def comments; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#173
+ def decoded; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#87
+ def display_name(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#99
+ def display_name=(str); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#118
+ def domain(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#169
+ def encoded; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#47
+ def format(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#177
+ def group; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#164
+ def inspect; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#108
+ def local(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#147
+ def name; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#36
+ def raw; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#156
+ def to_s; end
+
+ private
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#237
+ def format_comments; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#254
+ def get_comments; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#218
+ def get_display_name; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#250
+ def get_domain; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#246
+ def get_local; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#227
+ def get_name; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#183
+ def parse(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#198
+ def strip_all_comments(string); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#207
+ def strip_domain_comments(value); end
+
+ class << self
+ # source://actionmailbox//lib/action_mailbox/mail_ext/address_wrapping.rb#5
+ def wrap(address); end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#4
+class Mail::Message
+ # source://mail/2.8.1/lib/mail/message.rb#107
+ def initialize(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#334
+ def <=>(other); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#373
+ def ==(other); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1334
+ def [](name); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1316
+ def []=(name, value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1558
+ def action; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1472
+ def add_charset; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1487
+ def add_content_transfer_encoding; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1465
+ def add_content_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1448
+ def add_date(date_val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1757
+ def add_file(values); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1438
+ def add_message_id(msg_id_val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1458
+ def add_mime_version(ver_val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1701
+ def add_part(part); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1927
+ def all_parts; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1918
+ def attachment; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1913
+ def attachment?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1626
+ def attachments; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#500
+ def bcc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#512
+ def bcc=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#21
+ def bcc_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1306
+ def bcc_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1251
+ def body(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1237
+ def body=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1260
+ def body_encoding(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1268
+ def body_encoding=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1554
+ def bounced?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1583
+ def boundary; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#541
+ def cc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#553
+ def cc=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#17
+ def cc_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1300
+ def cc_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1497
+ def charset; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1506
+ def charset=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#557
+ def comments(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#561
+ def comments=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#565
+ def content_description(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#569
+ def content_description=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#573
+ def content_disposition(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#577
+ def content_disposition=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#581
+ def content_id(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#585
+ def content_id=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#589
+ def content_location(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#593
+ def content_location=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#597
+ def content_transfer_encoding(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#601
+ def content_transfer_encoding=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#605
+ def content_type(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#609
+ def content_type=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1523
+ def content_type_parameters; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1773
+ def convert_to_multipart; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#613
+ def date(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#617
+ def date=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1907
+ def decode_body; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1886
+ def decoded; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1204
+ def default(sym, val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#250
+ def deliver; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#267
+ def deliver!; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#199
+ def delivery_handler; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#199
+ def delivery_handler=(_arg0); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#274
+ def delivery_method(method = T.unsafe(nil), settings = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1543
+ def delivery_status_part; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1538
+ def delivery_status_report?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1282
+ def destinations; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1570
+ def diagnostic_code; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1803
+ def encoded; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#418
+ def envelope_date; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#414
+ def envelope_from; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1566
+ def error_status; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#471
+ def errors; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1923
+ def filename; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1562
+ def final_recipient; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1931
+ def find_first_mime_type(mt); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#658
+ def from(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#670
+ def from=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#5
+ def from_address; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1288
+ def from_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1630
+ def has_attachments?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1423
+ def has_charset?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1428
+ def has_content_transfer_encoding?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1418
+ def has_content_type?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1408
+ def has_date?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1402
+ def has_message_id?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1414
+ def has_mime_version?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#443
+ def header(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#428
+ def header=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1396
+ def header_fields; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#448
+ def headers(hash = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1635
+ def html_part(&block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1655
+ def html_part=(msg); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#674
+ def in_reply_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#678
+ def in_reply_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#240
+ def inform_interceptors; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#236
+ def inform_observers; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1873
+ def inspect; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1877
+ def inspect_structure; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1960
+ def is_marked_for_delete?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#682
+ def keywords(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#686
+ def keywords=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1513
+ def main_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1947
+ def mark_for_delete=(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#703
+ def message_id(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#712
+ def message_id=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1377
+ def method_missing(name, *args, &block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1492
+ def mime_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#729
+ def mime_version(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#739
+ def mime_version=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1528
+ def multipart?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1533
+ def multipart_report?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1722
+ def part(params = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1588
+ def parts; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#223
+ def perform_deliveries; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#223
+ def perform_deliveries=(_arg0); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#230
+ def raise_delivery_errors; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#230
+ def raise_delivery_errors=(_arg0); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#410
+ def raw_envelope; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#397
+ def raw_source; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1899
+ def read; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1791
+ def ready_to_send!; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#743
+ def received(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#751
+ def received=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/recipients.rb#5
+ def recipients; end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#9
+ def recipients_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#755
+ def references(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#759
+ def references=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1574
+ def remote_mta; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#282
+ def reply(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#788
+ def reply_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#800
+ def reply_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#829
+ def resent_bcc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#841
+ def resent_bcc=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#870
+ def resent_cc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#882
+ def resent_cc=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#886
+ def resent_date(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#890
+ def resent_date=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#919
+ def resent_from(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#931
+ def resent_from=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#935
+ def resent_message_id(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#939
+ def resent_message_id=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#958
+ def resent_sender(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#968
+ def resent_sender=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#997
+ def resent_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1009
+ def resent_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1578
+ def retryable?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1014
+ def return_path(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1019
+ def return_path=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1037
+ def sender(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1047
+ def sender=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#402
+ def set_envelope(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1939
+ def skip_deletion; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1067
+ def smtp_envelope_from(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1081
+ def smtp_envelope_from=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1100
+ def smtp_envelope_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1117
+ def smtp_envelope_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1518
+ def sub_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1142
+ def subject(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1152
+ def subject=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1964
+ def text?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1644
+ def text_part(&block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1679
+ def text_part=(msg); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1181
+ def to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1193
+ def to=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#13
+ def to_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1294
+ def to_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1869
+ def to_s; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1823
+ def to_yaml(opts = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#621
+ def transport_encoding(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#629
+ def transport_encoding=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1811
+ def without_attachments!; end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#29
+ def x_forwarded_to_addresses; end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#25
+ def x_original_to_addresses; end
+
+ private
+
+ # source://mail/2.8.1/lib/mail/message.rb#2067
+ def add_boundary; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2032
+ def add_encoding_to_body; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2062
+ def add_multipart_alternate_header; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2079
+ def add_multipart_mixed_header; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2048
+ def add_required_fields; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2056
+ def add_required_message_fields; end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#34
+ def address_list(obj); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2025
+ def allowed_encodings; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1990
+ def body_lazy(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2152
+ def decode_body_as_text; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2142
+ def do_delivery; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2124
+ def find_attachment; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2038
+ def identify_and_set_transfer_encoding; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2086
+ def init_with_hash(hash); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2116
+ def init_with_string(string); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#384
+ def initialize_copy(original); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1979
+ def parse_message; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2005
+ def process_body_raw; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1985
+ def raw_source=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2021
+ def separate_parts; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2013
+ def set_envelope_header; end
+
+ class << self
+ # source://mail/2.8.1/lib/mail/message.rb#232
+ def default_charset; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#233
+ def default_charset=(charset); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1865
+ def from_hash(hash); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1843
+ def from_yaml(str); end
+ end
+end
+
+module Rails
+ class << self
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#44
+ def app_class; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#44
+ def app_class=(_arg0); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#45
+ def application; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#43
+ def application=(_arg0); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#126
+ def autoloaders; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#56
+ def backtrace_cleaner; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#44
+ def cache; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#44
+ def cache=(_arg0); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#52
+ def configuration; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/deprecator.rb#4
+ def deprecator; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#75
+ def env; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#82
+ def env=(environment); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#93
+ def error; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/gem_version.rb#5
+ def gem_version; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#106
+ def groups(*groups); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#49
+ def initialize!(*_arg0, **_arg1, &_arg2); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#49
+ def initialized?(*_arg0, **_arg1, &_arg2); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#44
+ def logger; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#44
+ def logger=(_arg0); end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#122
+ def public_path; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails.rb#65
+ def root; end
+
+ # source://railties/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/rails/version.rb#7
+ def version; end
+ end
+end
+
+module Rails::Conductor; end
+module Rails::Conductor::ActionMailbox; end
+module Rails::Conductor::ActionMailbox::InboundEmails; end
+
+class Rails::Conductor::ActionMailbox::InboundEmails::SourcesController < ::Rails::Conductor::BaseController
+ def create; end
+ def new; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+class Rails::Conductor::ActionMailbox::InboundEmailsController < ::Rails::Conductor::BaseController
+ def create; end
+ def index; end
+ def new; end
+ def show; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def create_inbound_email(mail); end
+ def mail_params; end
+ def new_mail; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+class Rails::Conductor::ActionMailbox::IncineratesController < ::Rails::Conductor::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+class Rails::Conductor::ActionMailbox::ReroutesController < ::Rails::Conductor::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def reroute(inbound_email); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
+
+class Rails::Conductor::BaseController < ::ActionController::Base
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def ensure_development_env; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _layout; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _layout=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _layout_conditions; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _layout_conditions=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+ end
+end
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/gems/actionmailer@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi b/apps/govquests-api/rails_app/sorbet/rbi/gems/actionmailer@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
new file mode 100644
index 0000000..7caef0d
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/gems/actionmailer@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
@@ -0,0 +1,2668 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actionmailer` gem.
+# Please instead update this file by running `bin/tapioca gem actionmailer`.
+
+
+# :include: ../README.rdoc
+#
+# source://actionmailer//lib/action_mailer/gem_version.rb#3
+module ActionMailer
+ extend ::ActiveSupport::Autoload
+
+ class << self
+ # source://actionmailer//lib/action_mailer/deprecator.rb#4
+ def deprecator; end
+
+ # source://actionmailer//lib/action_mailer.rb#61
+ def eager_load!; end
+
+ # Returns the currently loaded version of Action Mailer as a +Gem::Version+.
+ #
+ # source://actionmailer//lib/action_mailer/gem_version.rb#5
+ def gem_version; end
+
+ # Returns the currently loaded version of Action Mailer as a
+ # +Gem::Version+.
+ #
+ # source://actionmailer//lib/action_mailer/version.rb#8
+ def version; end
+ end
+end
+
+# = Action Mailer \Base
+#
+# Action Mailer allows you to send email from your application using a mailer model and views.
+#
+# == Mailer Models
+#
+# To use Action Mailer, you need to create a mailer model.
+#
+# $ bin/rails generate mailer Notifier
+#
+# The generated model inherits from ApplicationMailer which in turn
+# inherits from +ActionMailer::Base+. A mailer model defines methods
+# used to generate an email message. In these methods, you can set up variables to be used in
+# the mailer views, options on the mail itself such as the :from address, and attachments.
+#
+# class ApplicationMailer < ActionMailer::Base
+# default from: 'from@example.com'
+# layout 'mailer'
+# end
+#
+# class NotifierMailer < ApplicationMailer
+# default from: 'no-reply@example.com',
+# return_path: 'system@example.com'
+#
+# def welcome(recipient)
+# @account = recipient
+# mail(to: recipient.email_address_with_name,
+# bcc: ["bcc@example.com", "Order Watcher "])
+# end
+# end
+#
+# Within the mailer method, you have access to the following methods:
+#
+# * attachments[]= - Allows you to add attachments to your email in an intuitive
+# manner; attachments['filename.png'] = File.read('path/to/filename.png')
+#
+# * attachments.inline[]= - Allows you to add an inline attachment to your email
+# in the same manner as attachments[]=
+#
+# * headers[]= - Allows you to specify any header field in your email such
+# as headers['X-No-Spam'] = 'True'. Note that declaring a header multiple times
+# will add many fields of the same name. Read #headers doc for more information.
+#
+# * headers(hash) - Allows you to specify multiple headers in your email such
+# as headers({'X-No-Spam' => 'True', 'In-Reply-To' => '1234@message.id'})
+#
+# * mail - Allows you to specify email to be sent.
+#
+# The hash passed to the mail method allows you to specify any header that a +Mail::Message+
+# will accept (any valid email header including optional fields).
+#
+# The +mail+ method, if not passed a block, will inspect your views and send all the views with
+# the same name as the method, so the above action would send the +welcome.text.erb+ view
+# file as well as the +welcome.html.erb+ view file in a +multipart/alternative+ email.
+#
+# If you want to explicitly render only certain templates, pass a block:
+#
+# mail(to: user.email) do |format|
+# format.text
+# format.html
+# end
+#
+# The block syntax is also useful in providing information specific to a part:
+#
+# mail(to: user.email) do |format|
+# format.html
+# end
+#
+# Or even to render a special view:
+#
+# mail(to: user.email) do |format|
+# format.text
+# format.html { render "some_other_template" }
+# end
+#
+# == Mailer views
+#
+# Like Action Controller, each mailer class has a corresponding view directory in which each
+# method of the class looks for a template with its name.
+#
+# To define a template to be used with a mailer, create an .erb file with the same
+# name as the method in your mailer model. For example, in the mailer defined above, the template at
+# app/views/notifier_mailer/welcome.text.erb would be used to generate the email.
+#
+# Variables defined in the methods of your mailer model are accessible as instance variables in their
+# corresponding view.
+#
+# Emails by default are sent in plain text, so a sample view for our model example might look like this:
+#
+# Hi <%= @account.name %>,
+# Thanks for joining our service! Please check back often.
+#
+# You can even use Action View helpers in these views. For example:
+#
+# You got a new note!
+# <%= truncate(@note.body, length: 25) %>
+#
+# If you need to access the subject, from, or the recipients in the view, you can do that through message object:
+#
+# You got a new note from <%= message.from %>!
+# <%= truncate(@note.body, length: 25) %>
+#
+#
+# == Generating URLs
+#
+# URLs can be generated in mailer views using url_for or named routes. Unlike controllers from
+# Action Pack, the mailer instance doesn't have any context about the incoming request, so you'll need
+# to provide all of the details needed to generate a URL.
+#
+# When using url_for you'll need to provide the :host, :controller, and :action:
+#
+# <%= url_for(host: "example.com", controller: "welcome", action: "greeting") %>
+#
+# When using named routes you only need to supply the :host:
+#
+# <%= users_url(host: "example.com") %>
+#
+# You should use the named_route_url style (which generates absolute URLs) and avoid using the
+# named_route_path style (which generates relative URLs), since clients reading the mail will
+# have no concept of a current URL from which to determine a relative path.
+#
+# It is also possible to set a default host that will be used in all mailers by setting the :host
+# option as a configuration option in config/application.rb:
+#
+# config.action_mailer.default_url_options = { host: "example.com" }
+#
+# You can also define a default_url_options method on individual mailers to override these
+# default settings per-mailer.
+#
+# By default when config.force_ssl is +true+, URLs generated for hosts will use the HTTPS protocol.
+#
+# == Sending mail
+#
+# Once a mailer action and template are defined, you can deliver your message or defer its creation and
+# delivery for later:
+#
+# NotifierMailer.welcome(User.first).deliver_now # sends the email
+# mail = NotifierMailer.welcome(User.first) # => an ActionMailer::MessageDelivery object
+# mail.deliver_now # generates and sends the email now
+#
+# The ActionMailer::MessageDelivery class is a wrapper around a delegate that will call
+# your method to generate the mail. If you want direct access to the delegator, or +Mail::Message+,
+# you can call the message method on the ActionMailer::MessageDelivery object.
+#
+# NotifierMailer.welcome(User.first).message # => a Mail::Message object
+#
+# Action Mailer is nicely integrated with Active Job so you can generate and send emails in the background
+# (example: outside of the request-response cycle, so the user doesn't have to wait on it):
+#
+# NotifierMailer.welcome(User.first).deliver_later # enqueue the email sending to Active Job
+#
+# Note that deliver_later will execute your method from the background job.
+#
+# You never instantiate your mailer class. Rather, you just call the method you defined on the class itself.
+# All instance methods are expected to return a message object to be sent.
+#
+# == Multipart Emails
+#
+# Multipart messages can also be used implicitly because Action Mailer will automatically detect and use
+# multipart templates, where each template is named after the name of the action, followed by the content
+# type. Each such detected template will be added to the message, as a separate part.
+#
+# For example, if the following templates exist:
+# * signup_notification.text.erb
+# * signup_notification.html.erb
+# * signup_notification.xml.builder
+# * signup_notification.yml.erb
+#
+# Each would be rendered and added as a separate part to the message, with the corresponding content
+# type. The content type for the entire message is automatically set to multipart/alternative,
+# which indicates that the email contains multiple different representations of the same email
+# body. The same instance variables defined in the action are passed to all email templates.
+#
+# Implicit template rendering is not performed if any attachments or parts have been added to the email.
+# This means that you'll have to manually add each part to the email and set the content type of the email
+# to multipart/alternative.
+#
+# == Attachments
+#
+# Sending attachment in emails is easy:
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments['free_book.pdf'] = File.read('path/to/file.pdf')
+# mail(to: recipient, subject: "New account information")
+# end
+# end
+#
+# Which will (if it had both a welcome.text.erb and welcome.html.erb
+# template in the view directory), send a complete multipart/mixed email with two parts,
+# the first part being a multipart/alternative with the text and HTML email parts inside,
+# and the second being a application/pdf with a Base64 encoded copy of the file.pdf book
+# with the filename +free_book.pdf+.
+#
+# If you need to send attachments with no content, you need to create an empty view for it,
+# or add an empty body parameter like this:
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments['free_book.pdf'] = File.read('path/to/file.pdf')
+# mail(to: recipient, subject: "New account information", body: "")
+# end
+# end
+#
+# You can also send attachments with HTML template, in this case you need to add body, attachments,
+# and custom content type like this:
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments["free_book.pdf"] = File.read("path/to/file.pdf")
+# mail(to: recipient,
+# subject: "New account information",
+# content_type: "text/html",
+# body: "Hello there")
+# end
+# end
+#
+# == Inline Attachments
+#
+# You can also specify that a file should be displayed inline with other HTML. This is useful
+# if you want to display a corporate logo or a photo.
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments.inline['photo.png'] = File.read('path/to/photo.png')
+# mail(to: recipient, subject: "Here is what we look like")
+# end
+# end
+#
+# And then to reference the image in the view, you create a welcome.html.erb file and
+# make a call to +image_tag+ passing in the attachment you want to display and then call
+# +url+ on the attachment to get the relative content id path for the image source:
+#
+#
Please Don't Cringe
+#
+# <%= image_tag attachments['photo.png'].url -%>
+#
+# As we are using Action View's +image_tag+ method, you can pass in any other options you want:
+#
+#
Please Don't Cringe
+#
+# <%= image_tag attachments['photo.png'].url, alt: 'Our Photo', class: 'photo' -%>
+#
+# == Observing and Intercepting Mails
+#
+# Action Mailer provides hooks into the Mail observer and interceptor methods. These allow you to
+# register classes that are called during the mail delivery life cycle.
+#
+# An observer class must implement the :delivered_email(message) method which will be
+# called once for every email sent after the email has been sent.
+#
+# An interceptor class must implement the :delivering_email(message) method which will be
+# called before the email is sent, allowing you to make modifications to the email before it hits
+# the delivery agents. Your class should make any needed modifications directly to the passed
+# in +Mail::Message+ instance.
+#
+# == Default \Hash
+#
+# Action Mailer provides some intelligent defaults for your emails, these are usually specified in a
+# default method inside the class definition:
+#
+# class NotifierMailer < ApplicationMailer
+# default sender: 'system@example.com'
+# end
+#
+# You can pass in any header value that a +Mail::Message+ accepts. Out of the box,
+# +ActionMailer::Base+ sets the following:
+#
+# * mime_version: "1.0"
+# * charset: "UTF-8"
+# * content_type: "text/plain"
+# * parts_order: [ "text/plain", "text/enriched", "text/html" ]
+#
+# parts_order and charset are not actually valid +Mail::Message+ header fields,
+# but Action Mailer translates them appropriately and sets the correct values.
+#
+# As you can pass in any header, you need to either quote the header as a string, or pass it in as
+# an underscored symbol, so the following will work:
+#
+# class NotifierMailer < ApplicationMailer
+# default 'Content-Transfer-Encoding' => '7bit',
+# content_description: 'This is a description'
+# end
+#
+# Finally, Action Mailer also supports passing Proc and Lambda objects into the default hash,
+# so you can define methods that evaluate as the message is being generated:
+#
+# class NotifierMailer < ApplicationMailer
+# default 'X-Special-Header' => Proc.new { my_method }, to: -> { @inviter.email_address }
+#
+# private
+# def my_method
+# 'some complex call'
+# end
+# end
+#
+# Note that the proc/lambda is evaluated right at the start of the mail message generation, so if you
+# set something in the default hash using a proc, and then set the same thing inside of your
+# mailer method, it will get overwritten by the mailer method.
+#
+# It is also possible to set these default options that will be used in all mailers through
+# the default_options= configuration in config/application.rb:
+#
+# config.action_mailer.default_options = { from: "no-reply@example.org" }
+#
+# == \Callbacks
+#
+# You can specify callbacks using before_action and after_action for configuring your messages,
+# and using before_deliver and after_deliver for wrapping the delivery process.
+# For example, when you want to add default inline attachments and log delivery for all messages
+# sent out by a certain mailer class:
+#
+# class NotifierMailer < ApplicationMailer
+# before_action :add_inline_attachment!
+# after_deliver :log_delivery
+#
+# def welcome
+# mail
+# end
+#
+# private
+# def add_inline_attachment!
+# attachments.inline["footer.jpg"] = File.read('/path/to/filename.jpg')
+# end
+#
+# def log_delivery
+# Rails.logger.info "Sent email with message id '#{message.message_id}' at #{Time.current}."
+# end
+# end
+#
+# Action callbacks in Action Mailer are implemented using
+# AbstractController::Callbacks, so you can define and configure
+# callbacks in the same manner that you would use callbacks in classes that
+# inherit from ActionController::Base.
+#
+# Note that unless you have a specific reason to do so, you should prefer
+# using before_action rather than after_action in your
+# Action Mailer classes so that headers are parsed properly.
+#
+# == Rescuing Errors
+#
+# +rescue+ blocks inside of a mailer method cannot rescue errors that occur
+# outside of rendering -- for example, record deserialization errors in a
+# background job, or errors from a third-party mail delivery service.
+#
+# To rescue errors that occur during any part of the mailing process, use
+# {rescue_from}[rdoc-ref:ActiveSupport::Rescuable::ClassMethods#rescue_from]:
+#
+# class NotifierMailer < ApplicationMailer
+# rescue_from ActiveJob::DeserializationError do
+# # ...
+# end
+#
+# rescue_from "SomeThirdPartyService::ApiError" do
+# # ...
+# end
+#
+# def notify(recipient)
+# mail(to: recipient, subject: "Notification")
+# end
+# end
+#
+# == Previewing emails
+#
+# You can preview your email templates visually by adding a mailer preview file to the
+# ActionMailer::Base.preview_paths. Since most emails do something interesting
+# with database data, you'll need to write some scenarios to load messages with fake data:
+#
+# class NotifierMailerPreview < ActionMailer::Preview
+# def welcome
+# NotifierMailer.welcome(User.first)
+# end
+# end
+#
+# Methods must return a +Mail::Message+ object which can be generated by calling the mailer
+# method without the additional deliver_now / deliver_later. The location of the
+# mailer preview directories can be configured using the preview_paths option which has a default
+# of test/mailers/previews:
+#
+# config.action_mailer.preview_paths << "#{Rails.root}/lib/mailer_previews"
+#
+# An overview of all previews is accessible at http://localhost:3000/rails/mailers
+# on a running development server instance.
+#
+# Previews can also be intercepted in a similar manner as deliveries can be by registering
+# a preview interceptor that has a previewing_email method:
+#
+# class CssInlineStyler
+# def self.previewing_email(message)
+# # inline CSS styles
+# end
+# end
+#
+# config.action_mailer.preview_interceptors :css_inline_styler
+#
+# Note that interceptors need to be registered both with register_interceptor
+# and register_preview_interceptor if they should operate on both sending and
+# previewing emails.
+#
+# == Configuration options
+#
+# These options are specified on the class level, like
+# ActionMailer::Base.raise_delivery_errors = true
+#
+# * default_options - You can pass this in at a class level as well as within the class itself as
+# per the above section.
+#
+# * logger - the logger is used for generating information on the mailing run if available.
+# Can be set to +nil+ for no logging. Compatible with both Ruby's own +Logger+ and Log4r loggers.
+#
+# * smtp_settings - Allows detailed configuration for :smtp delivery method:
+# * :address - Allows you to use a remote mail server. Just change it from its default
+# "localhost" setting.
+# * :port - On the off chance that your mail server doesn't run on port 25, you can change it.
+# * :domain - If you need to specify a HELO domain, you can do it here.
+# * :user_name - If your mail server requires authentication, set the username in this setting.
+# * :password - If your mail server requires authentication, set the password in this setting.
+# * :authentication - If your mail server requires authentication, you need to specify the
+# authentication type here.
+# This is a symbol and one of :plain (will send the password Base64 encoded), :login (will
+# send the password Base64 encoded) or :cram_md5 (combines a Challenge/Response mechanism to exchange
+# information and a cryptographic Message Digest 5 algorithm to hash important information)
+# * :enable_starttls - Use STARTTLS when connecting to your SMTP server and fail if unsupported. Defaults
+# to false. Requires at least version 2.7 of the Mail gem.
+# * :enable_starttls_auto - Detects if STARTTLS is enabled in your SMTP server and starts
+# to use it. Defaults to true.
+# * :openssl_verify_mode - When using TLS, you can set how OpenSSL checks the certificate. This is
+# really useful if you need to validate a self-signed and/or a wildcard certificate. You can use the name
+# of an OpenSSL verify constant ('none' or 'peer') or directly the constant
+# (+OpenSSL::SSL::VERIFY_NONE+ or +OpenSSL::SSL::VERIFY_PEER+).
+# * :ssl/:tls Enables the SMTP connection to use SMTP/TLS (SMTPS: SMTP over direct TLS connection)
+# * :open_timeout Number of seconds to wait while attempting to open a connection.
+# * :read_timeout Number of seconds to wait until timing-out a read(2) call.
+#
+# * sendmail_settings - Allows you to override options for the :sendmail delivery method.
+# * :location - The location of the sendmail executable. Defaults to /usr/sbin/sendmail.
+# * :arguments - The command line arguments. Defaults to %w[ -i ] with -f sender@address
+# added automatically before the message is sent.
+#
+# * file_settings - Allows you to override options for the :file delivery method.
+# * :location - The directory into which emails will be written. Defaults to the application
+# tmp/mails.
+#
+# * raise_delivery_errors - Whether or not errors should be raised if the email fails to be delivered.
+#
+# * delivery_method - Defines a delivery method. Possible values are :smtp (default),
+# :sendmail, :test, and :file. Or you may provide a custom delivery method
+# object e.g. +MyOwnDeliveryMethodClass+. See the Mail gem documentation on the interface you need to
+# implement for a custom delivery agent.
+#
+# * perform_deliveries - Determines whether emails are actually sent from Action Mailer when you
+# call .deliver on an email message or on an Action Mailer method. This is on by default but can
+# be turned off to aid in functional testing.
+#
+# * deliveries - Keeps an array of all the emails sent out through the Action Mailer with
+# delivery_method :test. Most useful for unit and functional testing.
+#
+# * delivery_job - The job class used with deliver_later. Mailers can set this to use a
+# custom delivery job. Defaults to +ActionMailer::MailDeliveryJob+.
+#
+# * deliver_later_queue_name - The queue name used by deliver_later with the default
+# delivery_job. Mailers can set this to use a custom queue name.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionmailer//lib/action_mailer/base.rb#476
+class ActionMailer::Base < ::AbstractController::Base
+ include ::ActionMailer::Callbacks
+ include ::ActiveSupport::Callbacks
+ include ::ActionMailer::DeliveryMethods
+ include ::ActionMailer::QueuedDelivery
+ include ::ActiveSupport::Rescuable
+ include ::ActionMailer::Rescuable
+ include ::ActionMailer::Parameterized
+ include ::ActionMailer::Previews
+ include ::ActionMailer::FormBuilder
+ include ::ActionView::ViewPaths
+ include ::AbstractController::Rendering
+ include ::AbstractController::Logger
+ include ::ActiveSupport::Benchmarkable
+ include ::AbstractController::Helpers
+ include ::AbstractController::Translation
+ include ::AbstractController::AssetPaths
+ include ::AbstractController::Callbacks
+ include ::AbstractController::Caching::Fragments
+ include ::AbstractController::Caching::ConfigMethods
+ include ::AbstractController::Caching
+ include ::ActionView::Rendering
+ include ::ActionView::Layouts
+ extend ::ActionMailer::Callbacks::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::ActionMailer::DeliveryMethods::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionMailer::Rescuable::ClassMethods
+ extend ::ActionMailer::Parameterized::ClassMethods
+ extend ::ActionMailer::Previews::ClassMethods
+ extend ::ActionMailer::FormBuilder::ClassMethods
+ extend ::ActionView::ViewPaths::ClassMethods
+ extend ::AbstractController::Helpers::Resolution
+ extend ::AbstractController::Helpers::ClassMethods
+ extend ::AbstractController::Callbacks::ClassMethods
+ extend ::AbstractController::Caching::Fragments::ClassMethods
+ extend ::AbstractController::Caching::ClassMethods
+ extend ::AbstractController::Caching::ConfigMethods
+ extend ::ActionView::Rendering::ClassMethods
+ extend ::ActionView::Layouts::ClassMethods
+
+ # @return [Base] a new instance of Base
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#643
+ def initialize; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#69
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#923
+ def _deliver_callbacks; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/helpers.rb#13
+ def _helper_methods; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/helpers.rb#13
+ def _helper_methods=(_arg0); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/helpers.rb#13
+ def _helper_methods?; end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#212
+ def _layout_conditions; end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#212
+ def _layout_conditions?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#923
+ def _process_action_callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#911
+ def _run_deliver_callbacks(&block); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#911
+ def _run_process_action_callbacks(&block); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies=(_arg0); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def asset_host; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def asset_host=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def assets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def assets_dir=(value); end
+
+ # Allows you to add attachments to an email, like so:
+ #
+ # mail.attachments['filename.jpg'] = File.read('/path/to/filename.jpg')
+ #
+ # If you do this, then Mail will take the file name and work out the mime type.
+ # It will also set the +Content-Type+, +Content-Disposition+, and +Content-Transfer-Encoding+,
+ # and encode the contents of the attachment in Base64.
+ #
+ # You can also specify overrides if you want by passing a hash instead of a string:
+ #
+ # mail.attachments['filename.jpg'] = {mime_type: 'application/gzip',
+ # content: File.read('/path/to/filename.jpg')}
+ #
+ # If you want to use encoding other than Base64 then you will need to pass encoding
+ # type along with the pre-encoded content as Mail doesn't know how to decode the
+ # data:
+ #
+ # file_content = SpecialEncode(File.read('/path/to/filename.jpg'))
+ # mail.attachments['filename.jpg'] = {mime_type: 'application/gzip',
+ # content: file_content }
+ #
+ # You can also search for specific attachments:
+ #
+ # # By Filename
+ # mail.attachments['filename.jpg'] # => Mail::Part object or nil
+ #
+ # # or by index
+ # mail.attachments[0] # => Mail::Part (first attachment)
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#760
+ def attachments; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_asset_host_protocol; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_asset_host_protocol=(value); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#502
+ def default_params; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#502
+ def default_params=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#502
+ def default_params?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_static_extension; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_static_extension=(value); end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#9
+ def deliver_later_queue_name; end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#9
+ def deliver_later_queue_name=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#9
+ def deliver_later_queue_name?; end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#8
+ def delivery_job; end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#8
+ def delivery_job=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#8
+ def delivery_job?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#19
+ def delivery_method; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#19
+ def delivery_method=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#19
+ def delivery_method?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_methods; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_methods=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_methods?; end
+
+ # Returns an email in the format "Name ".
+ #
+ # If the name is a blank string, it returns just the address.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#684
+ def email_address_with_name(address, name); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def enable_fragment_cache_logging=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def file_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def file_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def file_settings?; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys=(_arg0); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys?; end
+
+ # Allows you to pass random and unusual headers to the new +Mail::Message+
+ # object which will add them to itself.
+ #
+ # headers['X-Special-Domain-Specific-Header'] = "SecretValue"
+ #
+ # You can also pass a hash into headers of header field names and values,
+ # which will then be set on the +Mail::Message+ object:
+ #
+ # headers 'X-Special-Domain-Specific-Header' => "SecretValue",
+ # 'In-Reply-To' => incoming.message_id
+ #
+ # The resulting +Mail::Message+ will have the following in its header:
+ #
+ # X-Special-Domain-Specific-Header: SecretValue
+ #
+ # Note about replacing already defined headers:
+ #
+ # * +subject+
+ # * +sender+
+ # * +from+
+ # * +to+
+ # * +cc+
+ # * +bcc+
+ # * +reply-to+
+ # * +orig-date+
+ # * +message-id+
+ # * +references+
+ #
+ # Fields can only appear once in email headers while other fields such as
+ # X-Anything can appear multiple times.
+ #
+ # If you want to replace any header which already exists, first set it to
+ # +nil+ in order to reset the value otherwise another field will be added
+ # for the same header.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#722
+ def headers(args = T.unsafe(nil)); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def javascripts_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def javascripts_dir=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def logger; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def logger=(value); end
+
+ # The main method that creates the message and renders the email templates. There are
+ # two ways to call this method, with a block, or without a block.
+ #
+ # It accepts a headers hash. This hash allows you to specify
+ # the most used headers in an email message, these are:
+ #
+ # * +:subject+ - The subject of the message, if this is omitted, Action Mailer will
+ # ask the \Rails I18n class for a translated +:subject+ in the scope of
+ # [mailer_scope, action_name] or if this is missing, will translate the
+ # humanized version of the +action_name+
+ # * +:to+ - Who the message is destined for, can be a string of addresses, or an array
+ # of addresses.
+ # * +:from+ - Who the message is from
+ # * +:cc+ - Who you would like to Carbon-Copy on this email, can be a string of addresses,
+ # or an array of addresses.
+ # * +:bcc+ - Who you would like to Blind-Carbon-Copy on this email, can be a string of
+ # addresses, or an array of addresses.
+ # * +:reply_to+ - Who to set the +Reply-To+ header of the email to.
+ # * +:date+ - The date to say the email was sent on.
+ #
+ # You can set default values for any of the above headers (except +:date+)
+ # by using the ::default class method:
+ #
+ # class Notifier < ActionMailer::Base
+ # default from: 'no-reply@test.lindsaar.net',
+ # bcc: 'email_logger@test.lindsaar.net',
+ # reply_to: 'bounces@test.lindsaar.net'
+ # end
+ #
+ # If you need other headers not listed above, you can either pass them in
+ # as part of the headers hash or use the headers['name'] = value
+ # method.
+ #
+ # When a +:return_path+ is specified as header, that value will be used as
+ # the 'envelope from' address for the Mail message. Setting this is useful
+ # when you want delivery notifications sent to a different address than the
+ # one in +:from+. Mail will actually use the +:return_path+ in preference
+ # to the +:sender+ in preference to the +:from+ field for the 'envelope
+ # from' value.
+ #
+ # If you do not pass a block to the +mail+ method, it will find all
+ # templates in the view paths using by default the mailer name and the
+ # method name that it is being called from, it will then create parts for
+ # each of these templates intelligently, making educated guesses on correct
+ # content type and sequence, and return a fully prepared +Mail::Message+
+ # ready to call :deliver on to send.
+ #
+ # For example:
+ #
+ # class Notifier < ActionMailer::Base
+ # default from: 'no-reply@test.lindsaar.net'
+ #
+ # def welcome
+ # mail(to: 'mikel@test.lindsaar.net')
+ # end
+ # end
+ #
+ # Will look for all templates at "app/views/notifier" with name "welcome".
+ # If no welcome template exists, it will raise an ActionView::MissingTemplate error.
+ #
+ # However, those can be customized:
+ #
+ # mail(template_path: 'notifications', template_name: 'another')
+ #
+ # And now it will look for all templates at "app/views/notifications" with name "another".
+ #
+ # If you do pass a block, you can render specific templates of your choice:
+ #
+ # mail(to: 'mikel@test.lindsaar.net') do |format|
+ # format.text
+ # format.html
+ # end
+ #
+ # You can even render plain text directly without using a template:
+ #
+ # mail(to: 'mikel@test.lindsaar.net') do |format|
+ # format.text { render plain: "Hello Mikel!" }
+ # format.html { render html: "
Hello Mikel!
".html_safe }
+ # end
+ #
+ # Which will render a +multipart/alternative+ email with +text/plain+ and
+ # +text/html+ parts.
+ #
+ # The block syntax also allows you to customize the part headers if desired:
+ #
+ # mail(to: 'mikel@test.lindsaar.net') do |format|
+ # format.html
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#869
+ def mail(headers = T.unsafe(nil), &block); end
+
+ # Returns the name of the mailer object.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#677
+ def mailer_name; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def message; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def message=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#95
+ def params; end
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#93
+ def params=(_arg0); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def perform_caching; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def perform_caching=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#16
+ def perform_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#16
+ def perform_deliveries=(val); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#25
+ def preview_interceptors; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#14
+ def preview_paths; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#649
+ def process(method_name, *args, **_arg2); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def raise_delivery_errors; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def raise_delivery_errors=(val); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions=(val); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def relative_url_root; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def relative_url_root=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def sendmail_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def sendmail_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def sendmail_settings?; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#22
+ def show_previews; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def smtp_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def smtp_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def smtp_settings?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def stylesheets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def stylesheets_dir=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def test_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def test_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def test_settings?; end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1070
+ def _protected_ivars; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#946
+ def apply_defaults(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#966
+ def assign_headers_to_message(message, headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#972
+ def collect_responses(headers, &block); end
+
+ # @yield [collector]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#982
+ def collect_responses_from_block(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#996
+ def collect_responses_from_templates(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#989
+ def collect_responses_from_text(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#956
+ def compute_default(value); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1039
+ def create_parts_from_responses(m, responses); end
+
+ # Translates the +subject+ using \Rails I18n class under [mailer_scope, action_name] scope.
+ # If it does not find a translation for the +subject+ under the specified scope it will default to a
+ # humanized version of the action_name.
+ # If the subject has interpolations, you can pass them through the +interpolations+ parameter.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#936
+ def default_i18n_subject(interpolations = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1009
+ def each_template(paths, name, &block); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1052
+ def insert_part(container, response, charset); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1066
+ def instrument_name; end
+
+ # This and #instrument_name is for caching instrument
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#1059
+ def instrument_payload(key); end
+
+ # Used by #mail to set the content type of the message.
+ #
+ # It will use the given +user_content_type+, or multipart if the mail
+ # message has any attachments. If the attachments are inline, the content
+ # type will be "multipart/related", otherwise "multipart/mixed".
+ #
+ # If there is no content type passed in via headers, and there are no
+ # attachments, or the message is multipart, then the default content type is
+ # used.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#914
+ def set_content_type(m, user_content_type, class_default); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1018
+ def wrap_inline_attachments(message); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _default_form_builder; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _default_form_builder=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/form_builder.rb#18
+ def _default_form_builder?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#915
+ def _deliver_callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#919
+ def _deliver_callbacks=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _helper_methods; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _helper_methods=(new_value); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/helpers.rb#13
+ def _helper_methods?; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/helpers.rb#17
+ def _helpers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _layout; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _layout=(new_value); end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#211
+ def _layout?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _layout_conditions; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _layout_conditions=(new_value); end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#212
+ def _layout_conditions?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#915
+ def _process_action_callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#919
+ def _process_action_callbacks=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _view_cache_dependencies; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _view_cache_dependencies=(new_value); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def asset_host; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def asset_host=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def assets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def assets_dir=(value); end
+
+ # Returns the name of the current mailer. This method is also being used as a path for a view lookup.
+ # If this is an anonymous mailer, this method will return +anonymous+ instead.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#570
+ def controller_path; end
+
+ # Sets the defaults through app configuration:
+ #
+ # config.action_mailer.default(from: "no-reply@example.org")
+ #
+ # Aliased by ::default_options=
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#582
+ def default(value = T.unsafe(nil)); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_asset_host_protocol; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_asset_host_protocol=(value); end
+
+ # Sets the defaults through app configuration:
+ #
+ # config.action_mailer.default(from: "no-reply@example.org")
+ #
+ # Aliased by ::default_options=
+ # Allows to set defaults through app configuration:
+ #
+ # config.action_mailer.default_options = { from: "no-reply@example.org" }
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#582
+ def default_options=(value = T.unsafe(nil)); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def default_params; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def default_params=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#502
+ def default_params?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_static_extension; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_static_extension=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def deliver_later_queue_name; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def deliver_later_queue_name=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#9
+ def deliver_later_queue_name?; end
+
+ # Wraps an email delivery inside of ActiveSupport::Notifications instrumentation.
+ #
+ # This method is actually called by the +Mail::Message+ object itself
+ # through a callback when you call :deliver on the +Mail::Message+,
+ # calling +deliver_mail+ directly and passing a +Mail::Message+ will do
+ # nothing except tell the logger you sent the email.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#597
+ def deliver_mail(mail); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def delivery_job; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def delivery_job=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/queued_delivery.rb#8
+ def delivery_job?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def delivery_method; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def delivery_method=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#19
+ def delivery_method?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def delivery_methods; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def delivery_methods=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_methods?; end
+
+ # Returns an email in the format "Name ".
+ #
+ # If the name is a blank string, it returns just the address.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#607
+ def email_address_with_name(address, name); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def enable_fragment_cache_logging=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def file_settings; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def file_settings=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def file_settings?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def fragment_cache_keys; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def fragment_cache_keys=(new_value); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def javascripts_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def javascripts_dir=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def logger; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def logger=(value); end
+
+ # Returns the name of the current mailer. This method is also being used as a path for a view lookup.
+ # If this is an anonymous mailer, this method will return +anonymous+ instead.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#570
+ def mailer_name; end
+
+ # Allows to set the name of current mailer.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#574
+ def mailer_name=(_arg0); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def perform_caching; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def perform_caching=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#16
+ def perform_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#16
+ def perform_deliveries=(val); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#25
+ def preview_interceptors; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#25
+ def preview_interceptors=(val); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#14
+ def preview_paths; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#14
+ def preview_paths=(val); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def raise_delivery_errors; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def raise_delivery_errors=(val); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions; end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions=(val); end
+
+ # Register an Interceptor which will be called before mail is sent.
+ # Either a class, string, or symbol can be passed in as the Interceptor.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#547
+ def register_interceptor(interceptor); end
+
+ # Register one or more Interceptors which will be called before mail is sent.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#521
+ def register_interceptors(*interceptors); end
+
+ # Register an Observer which will be notified when mail is delivered.
+ # Either a class, string, or symbol can be passed in as the Observer.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#533
+ def register_observer(observer); end
+
+ # Register one or more Observers which will be notified when mail is delivered.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#511
+ def register_observers(*observers); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def relative_url_root; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def relative_url_root=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def rescue_handlers=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def sendmail_settings; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def sendmail_settings=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def sendmail_settings?; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#22
+ def show_previews; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#22
+ def show_previews=(val); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def smtp_settings; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def smtp_settings=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def smtp_settings?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def stylesheets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def stylesheets_dir=(value); end
+
+ # Emails do not support relative path links.
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#942
+ def supports_path?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def test_settings; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def test_settings=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#52
+ def test_settings?; end
+
+ # Unregister a previously registered Interceptor.
+ # Either a class, string, or symbol can be passed in as the Interceptor.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#554
+ def unregister_interceptor(interceptor); end
+
+ # Unregister one or more previously registered Interceptors.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#526
+ def unregister_interceptors(*interceptors); end
+
+ # Unregister a previously registered Observer.
+ # Either a class, string, or symbol can be passed in as the Observer.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#540
+ def unregister_observer(observer); end
+
+ # Unregister one or more previously registered Observers.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#516
+ def unregister_observers(*observers); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/base.rb#628
+ def method_missing(method_name, *_arg1, **_arg2, &_arg3); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#558
+ def observer_class_for(value); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#636
+ def respond_to_missing?(method, include_all = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#615
+ def set_payload_for_mail(payload, mail); end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#0
+module ActionMailer::Base::HelperMethods
+ include ::ActionMailer::MailHelper
+ include ::ActionText::ContentHelper
+ include ::ActionText::TagHelper
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching/fragments.rb#34
+ def combined_fragment_cache_key(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/abstract_controller/caching.rb#45
+ def view_cache_dependencies(*_arg0, **_arg1, &_arg2); end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#768
+class ActionMailer::Base::LateAttachmentsProxy < ::SimpleDelegator
+ # source://actionmailer//lib/action_mailer/base.rb#770
+ def []=(_name, _content); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#769
+ def inline; end
+
+ private
+
+ # @raise [RuntimeError]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#773
+ def _raise_error; end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#663
+class ActionMailer::Base::NullMail
+ # source://actionmailer//lib/action_mailer/base.rb#664
+ def body; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#665
+ def header; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#671
+ def method_missing(*_arg0, **_arg1, &_arg2); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#667
+ def respond_to?(string, include_all = T.unsafe(nil)); end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#498
+ActionMailer::Base::PROTECTED_IVARS = T.let(T.unsafe(nil), Array)
+
+# source://actionmailer//lib/action_mailer/callbacks.rb#4
+module ActionMailer::Callbacks
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionMailer::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/callbacks.rb#12
+module ActionMailer::Callbacks::ClassMethods
+ # Defines a callback that will get called right after the
+ # message's delivery method is finished.
+ #
+ # source://actionmailer//lib/action_mailer/callbacks.rb#21
+ def after_deliver(*filters, &blk); end
+
+ # Defines a callback that will get called around the message's deliver method.
+ #
+ # source://actionmailer//lib/action_mailer/callbacks.rb#26
+ def around_deliver(*filters, &blk); end
+
+ # Defines a callback that will get called right before the
+ # message is sent to the delivery method.
+ #
+ # source://actionmailer//lib/action_mailer/callbacks.rb#15
+ def before_deliver(*filters, &blk); end
+end
+
+# source://actionmailer//lib/action_mailer/collector.rb#8
+class ActionMailer::Collector
+ include ::AbstractController::Collector
+
+ # @return [Collector] a new instance of Collector
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#12
+ def initialize(context, &block); end
+
+ # @raise [ArgumentError]
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#18
+ def all(*args, &block); end
+
+ # @raise [ArgumentError]
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#18
+ def any(*args, &block); end
+
+ # source://actionmailer//lib/action_mailer/collector.rb#25
+ def custom(mime, options = T.unsafe(nil)); end
+
+ # Returns the value of attribute responses.
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#10
+ def responses; end
+end
+
+# = Action Mailer \DeliveryMethods
+#
+# This module handles everything related to mail delivery, from registering
+# new delivery methods to configuring the mail object to be sent.
+#
+# source://actionmailer//lib/action_mailer/delivery_methods.rb#10
+module ActionMailer::DeliveryMethods
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionMailer::DeliveryMethods::ClassMethods
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#79
+ def wrap_delivery_behavior!(*args); end
+
+ module GeneratedClassMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+
+ module GeneratedInstanceMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+end
+
+# Helpers for creating and wrapping delivery behavior, used by DeliveryMethods.
+#
+# source://actionmailer//lib/action_mailer/delivery_methods.rb#41
+module ActionMailer::DeliveryMethods::ClassMethods
+ # Adds a new delivery method through the given class using the given
+ # symbol as alias and the default options supplied.
+ #
+ # add_delivery_method :sendmail, Mail::Sendmail,
+ # location: '/usr/sbin/sendmail',
+ # arguments: %w[ -i ]
+ #
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def add_delivery_method(symbol, klass, default_options = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#43
+ def deliveries(&_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#43
+ def deliveries=(arg); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#57
+ def wrap_delivery_behavior(mail, method = T.unsafe(nil), options = T.unsafe(nil)); end
+end
+
+# = Action Mailer Form Builder
+#
+# Override the default form builder for all views rendered by this
+# mailer and any of its descendants. Accepts a subclass of
+# ActionView::Helpers::FormBuilder.
+#
+# While emails typically will not include forms, this can be used
+# by views that are shared between controllers and mailers.
+#
+# For more information, see +ActionController::FormBuilder+.
+#
+# source://actionmailer//lib/action_mailer/form_builder.rb#14
+module ActionMailer::FormBuilder
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionMailer::FormBuilder::ClassMethods
+
+ # Default form builder for the mailer
+ #
+ # source://actionmailer//lib/action_mailer/form_builder.rb#33
+ def default_form_builder; end
+
+ module GeneratedClassMethods
+ def _default_form_builder; end
+ def _default_form_builder=(value); end
+ def _default_form_builder?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
+
+# source://actionmailer//lib/action_mailer/form_builder.rb#21
+module ActionMailer::FormBuilder::ClassMethods
+ # Set the form builder to be used as the default for all forms
+ # in the views rendered by this mailer and its subclasses.
+ #
+ # ==== Parameters
+ # * builder - Default form builder, an instance of ActionView::Helpers::FormBuilder
+ #
+ # source://actionmailer//lib/action_mailer/form_builder.rb#27
+ def default_form_builder(builder); end
+end
+
+# = Action Mailer \InlinePreviewInterceptor
+#
+# Implements a mailer preview interceptor that converts image tag src attributes
+# that use inline cid: style URLs to data: style URLs so that they are visible
+# when previewing an HTML email in a web browser.
+#
+# This interceptor is enabled by default. To disable it, delete it from the
+# ActionMailer::Base.preview_interceptors array:
+#
+# ActionMailer::Base.preview_interceptors.delete(ActionMailer::InlinePreviewInterceptor)
+#
+# source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#17
+class ActionMailer::InlinePreviewInterceptor
+ include ::Base64
+
+ # @return [InlinePreviewInterceptor] a new instance of InlinePreviewInterceptor
+ #
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#26
+ def initialize(message); end
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#30
+ def transform!; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#51
+ def data_url(part); end
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#55
+ def find_part(cid); end
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#47
+ def html_part; end
+
+ # Returns the value of attribute message.
+ #
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#45
+ def message; end
+
+ class << self
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#22
+ def previewing_email(message); end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#18
+ActionMailer::InlinePreviewInterceptor::PATTERN = T.let(T.unsafe(nil), Regexp)
+
+# = Action Mailer \LogSubscriber
+#
+# Implements the ActiveSupport::LogSubscriber for logging notifications when
+# email is delivered or received.
+#
+# source://actionmailer//lib/action_mailer/log_subscriber.rb#10
+class ActionMailer::LogSubscriber < ::ActiveSupport::LogSubscriber
+ # An email was delivered.
+ #
+ # source://actionmailer//lib/action_mailer/log_subscriber.rb#12
+ def deliver(event); end
+
+ # Use the logger configured for ActionMailer::Base.
+ #
+ # source://actionmailer//lib/action_mailer/log_subscriber.rb#38
+ def logger; end
+
+ # An email was generated.
+ #
+ # source://actionmailer//lib/action_mailer/log_subscriber.rb#28
+ def process(event); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def log_levels; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def log_levels=(new_value); end
+ end
+end
+
+# = Action Mailer \MailDeliveryJob
+#
+# The +ActionMailer::MailDeliveryJob+ class is used when you
+# want to send emails outside of the request-response cycle. It supports
+# sending either parameterized or normal mail.
+#
+# Exceptions are rescued and handled by the mailer class.
+#
+# source://actionmailer//lib/action_mailer/mail_delivery_job.rb#13
+class ActionMailer::MailDeliveryJob < ::ActiveJob::Base
+ # source://actionmailer//lib/action_mailer/mail_delivery_job.rb#21
+ def perform(mailer, mail_method, delivery_method, args:, kwargs: T.unsafe(nil), params: T.unsafe(nil)); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/mail_delivery_job.rb#40
+ def handle_exception_with_mailer_class(exception); end
+
+ # "Deserialize" the mailer class name by hand in case another argument
+ # (like a Global ID reference) raised DeserializationError.
+ #
+ # source://actionmailer//lib/action_mailer/mail_delivery_job.rb#34
+ def mailer_class; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def queue_name; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def queue_name=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def rescue_handlers=(new_value); end
+ end
+end
+
+# = Action Mailer \MailHelper
+#
+# Provides helper methods for ActionMailer::Base that can be used for easily
+# formatting messages, accessing mailer or message instances, and the
+# attachments list.
+#
+# source://actionmailer//lib/action_mailer/mail_helper.rb#9
+module ActionMailer::MailHelper
+ # Access the message attachments list.
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#45
+ def attachments; end
+
+ # Take the text and format it, indented two spaces for each line, and
+ # wrapped at 72 columns:
+ #
+ # text = <<-TEXT
+ # This is
+ # the paragraph.
+ #
+ # * item1 * item2
+ # TEXT
+ #
+ # block_format text
+ # # => " This is the paragraph.\n\n * item1\n * item2\n"
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#22
+ def block_format(text); end
+
+ # Returns +text+ wrapped at +len+ columns and indented +indent+ spaces.
+ # By default column length +len+ equals 72 characters and indent
+ # +indent+ equal two spaces.
+ #
+ # my_text = 'Here is a sample text with more than 40 characters'
+ #
+ # format_paragraph(my_text, 25, 4)
+ # # => " Here is a sample text with\n more than 40 characters"
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#57
+ def format_paragraph(text, len = T.unsafe(nil), indent = T.unsafe(nil)); end
+
+ # Access the mailer instance.
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#35
+ def mailer; end
+
+ # Access the message instance.
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#40
+ def message; end
+end
+
+# = Action Mailer \MessageDelivery
+#
+# The +ActionMailer::MessageDelivery+ class is used by
+# ActionMailer::Base when creating a new mailer.
+# MessageDelivery is a wrapper (+Delegator+ subclass) around a lazy
+# created +Mail::Message+. You can get direct access to the
+# +Mail::Message+, deliver the email or schedule the email to be sent
+# through Active Job.
+#
+# Notifier.welcome(User.first) # an ActionMailer::MessageDelivery object
+# Notifier.welcome(User.first).deliver_now # sends the email
+# Notifier.welcome(User.first).deliver_later # enqueue email delivery as a job through Active Job
+# Notifier.welcome(User.first).message # a Mail::Message object
+#
+# source://actionmailer//lib/action_mailer/message_delivery.rb#19
+class ActionMailer::MessageDelivery
+ # @return [MessageDelivery] a new instance of MessageDelivery
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#20
+ def initialize(mailer_class, action, *args, **_arg3); end
+
+ # Method calls are delegated to the Mail::Message that's ready to deliver.
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#31
+ def __getobj__; end
+
+ # Unused except for delegator internals (dup, marshalling).
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#36
+ def __setobj__(mail_message); end
+
+ # Enqueues the email to be delivered through Active Job. When the
+ # job runs it will send the email using +deliver_now+.
+ #
+ # Notifier.welcome(User.first).deliver_later
+ # Notifier.welcome(User.first).deliver_later(wait: 1.hour)
+ # Notifier.welcome(User.first).deliver_later(wait_until: 10.hours.from_now)
+ # Notifier.welcome(User.first).deliver_later(priority: 10)
+ #
+ # Options:
+ #
+ # * :wait - Enqueue the email to be delivered with a delay.
+ # * :wait_until - Enqueue the email to be delivered at (after) a specific date / time.
+ # * :queue - Enqueue the email on the specified queue.
+ # * :priority - Enqueues the email with the specified priority
+ #
+ # By default, the email will be enqueued using ActionMailer::MailDeliveryJob on
+ # the default queue. Mailer classes can customize the queue name used for the default
+ # job by assigning a +deliver_later_queue_name+ class variable, or provide a custom job
+ # by assigning a +delivery_job+. When a custom job is used, it controls the queue name.
+ #
+ # class AccountRegistrationMailer < ApplicationMailer
+ # self.delivery_job = RegistrationDeliveryJob
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#102
+ def deliver_later(options = T.unsafe(nil)); end
+
+ # Enqueues the email to be delivered through Active Job. When the
+ # job runs it will send the email using +deliver_now!+. That means
+ # that the message will be sent bypassing checking +perform_deliveries+
+ # and +raise_delivery_errors+, so use with caution.
+ #
+ # Notifier.welcome(User.first).deliver_later!
+ # Notifier.welcome(User.first).deliver_later!(wait: 1.hour)
+ # Notifier.welcome(User.first).deliver_later!(wait_until: 10.hours.from_now)
+ # Notifier.welcome(User.first).deliver_later!(priority: 10)
+ #
+ # Options:
+ #
+ # * :wait - Enqueue the email to be delivered with a delay
+ # * :wait_until - Enqueue the email to be delivered at (after) a specific date / time
+ # * :queue - Enqueue the email on the specified queue
+ # * :priority - Enqueues the email with the specified priority
+ #
+ # By default, the email will be enqueued using ActionMailer::MailDeliveryJob on
+ # the default queue. Mailer classes can customize the queue name used for the default
+ # job by assigning a +deliver_later_queue_name+ class variable, or provide a custom job
+ # by assigning a +delivery_job+. When a custom job is used, it controls the queue name.
+ #
+ # class AccountRegistrationMailer < ApplicationMailer
+ # self.delivery_job = RegistrationDeliveryJob
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#75
+ def deliver_later!(options = T.unsafe(nil)); end
+
+ # Delivers an email:
+ #
+ # Notifier.welcome(User.first).deliver_now
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#123
+ def deliver_now; end
+
+ # Delivers an email without checking +perform_deliveries+ and +raise_delivery_errors+,
+ # so use with caution.
+ #
+ # Notifier.welcome(User.first).deliver_now!
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#111
+ def deliver_now!; end
+
+ # Returns the resulting Mail::Message
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#41
+ def message; end
+
+ # Was the delegate loaded, causing the mailer action to be processed?
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#46
+ def processed?; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#140
+ def enqueue_delivery(delivery_method, options = T.unsafe(nil)); end
+
+ # Returns the processed Mailer instance. We keep this instance
+ # on hand so we can run callbacks and delegate exception handling to it.
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#134
+ def processed_mailer; end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#7
+class ActionMailer::NonInferrableMailerError < ::StandardError
+ # @return [NonInferrableMailerError] a new instance of NonInferrableMailerError
+ #
+ # source://actionmailer//lib/action_mailer/test_case.rb#8
+ def initialize(name); end
+end
+
+# = Action Mailer \Parameterized
+#
+# Provides the option to parameterize mailers in order to share instance variable
+# setup, processing, and common headers.
+#
+# Consider this example that does not use parameterization:
+#
+# class InvitationsMailer < ApplicationMailer
+# def account_invitation(inviter, invitee)
+# @account = inviter.account
+# @inviter = inviter
+# @invitee = invitee
+#
+# subject = "#{@inviter.name} invited you to their Basecamp (#{@account.name})"
+#
+# mail \
+# subject: subject,
+# to: invitee.email_address,
+# from: common_address(inviter),
+# reply_to: inviter.email_address_with_name
+# end
+#
+# def project_invitation(project, inviter, invitee)
+# @account = inviter.account
+# @project = project
+# @inviter = inviter
+# @invitee = invitee
+# @summarizer = ProjectInvitationSummarizer.new(@project.bucket)
+#
+# subject = "#{@inviter.name.familiar} added you to a project in Basecamp (#{@account.name})"
+#
+# mail \
+# subject: subject,
+# to: invitee.email_address,
+# from: common_address(inviter),
+# reply_to: inviter.email_address_with_name
+# end
+#
+# def bulk_project_invitation(projects, inviter, invitee)
+# @account = inviter.account
+# @projects = projects.sort_by(&:name)
+# @inviter = inviter
+# @invitee = invitee
+#
+# subject = "#{@inviter.name.familiar} added you to some new stuff in Basecamp (#{@account.name})"
+#
+# mail \
+# subject: subject,
+# to: invitee.email_address,
+# from: common_address(inviter),
+# reply_to: inviter.email_address_with_name
+# end
+# end
+#
+# InvitationsMailer.account_invitation(person_a, person_b).deliver_later
+#
+# Using parameterized mailers, this can be rewritten as:
+#
+# class InvitationsMailer < ApplicationMailer
+# before_action { @inviter, @invitee = params[:inviter], params[:invitee] }
+# before_action { @account = params[:inviter].account }
+#
+# default to: -> { @invitee.email_address },
+# from: -> { common_address(@inviter) },
+# reply_to: -> { @inviter.email_address_with_name }
+#
+# def account_invitation
+# mail subject: "#{@inviter.name} invited you to their Basecamp (#{@account.name})"
+# end
+#
+# def project_invitation
+# @project = params[:project]
+# @summarizer = ProjectInvitationSummarizer.new(@project.bucket)
+#
+# mail subject: "#{@inviter.name.familiar} added you to a project in Basecamp (#{@account.name})"
+# end
+#
+# def bulk_project_invitation
+# @projects = params[:projects].sort_by(&:name)
+#
+# mail subject: "#{@inviter.name.familiar} added you to some new stuff in Basecamp (#{@account.name})"
+# end
+# end
+#
+# InvitationsMailer.with(inviter: person_a, invitee: person_b).account_invitation.deliver_later
+#
+# source://actionmailer//lib/action_mailer/parameterized.rb#89
+module ActionMailer::Parameterized
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailer::Parameterized::ClassMethods
+end
+
+# source://actionmailer//lib/action_mailer/parameterized.rb#100
+module ActionMailer::Parameterized::ClassMethods
+ # Provide the parameters to the mailer in order to use them in the instance methods and callbacks.
+ #
+ # InvitationsMailer.with(inviter: person_a, invitee: person_b).account_invitation.deliver_later
+ #
+ # See Parameterized documentation for full example.
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#106
+ def with(params); end
+end
+
+# source://actionmailer//lib/action_mailer/parameterized.rb#111
+class ActionMailer::Parameterized::Mailer
+ # @return [Mailer] a new instance of Mailer
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#112
+ def initialize(mailer, params); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#117
+ def method_missing(method_name, *_arg1, **_arg2, &_arg3); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#125
+ def respond_to_missing?(method, include_all = T.unsafe(nil)); end
+end
+
+# source://actionmailer//lib/action_mailer/parameterized.rb#130
+class ActionMailer::Parameterized::MessageDelivery < ::ActionMailer::MessageDelivery
+ # @return [MessageDelivery] a new instance of MessageDelivery
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#131
+ def initialize(mailer_class, action, params, *_arg3, **_arg4, &_arg5); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#144
+ def enqueue_delivery(delivery_method, options = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#137
+ def processed_mailer; end
+end
+
+# source://actionmailer//lib/action_mailer/preview.rb#69
+class ActionMailer::Preview
+ extend ::ActiveSupport::DescendantsTracker
+
+ # @return [Preview] a new instance of Preview
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#74
+ def initialize(params = T.unsafe(nil)); end
+
+ # Returns the value of attribute params.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#72
+ def params; end
+
+ class << self
+ # Returns all mailer preview classes.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#80
+ def all; end
+
+ # Returns the mail object for the given email name. The registered preview
+ # interceptors will be informed so that they can transform the message
+ # as they would if the mail was actually being delivered.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#88
+ def call(email, params = T.unsafe(nil)); end
+
+ # Returns +true+ if the email exists.
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#101
+ def email_exists?(email); end
+
+ # Returns all of the available email previews.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#96
+ def emails; end
+
+ # Returns +true+ if the preview exists.
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#106
+ def exists?(preview); end
+
+ # Find a mailer preview by its underscored class name.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#111
+ def find(preview); end
+
+ # Returns the underscored name of the mailer preview without the suffix.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#116
+ def preview_name; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/preview.rb#135
+ def inform_preview_interceptors(message); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#121
+ def load_previews; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#127
+ def preview_paths; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#131
+ def show_previews; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/preview.rb#6
+module ActionMailer::Previews
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailer::Previews::ClassMethods
+end
+
+# source://actionmailer//lib/action_mailer/preview.rb#28
+module ActionMailer::Previews::ClassMethods
+ # Register an Interceptor which will be called before mail is previewed.
+ # Either a class or a string can be passed in as the Interceptor. If a
+ # string is passed in it will be constantized.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#42
+ def register_preview_interceptor(interceptor); end
+
+ # Register one or more Interceptors which will be called before mail is previewed.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#30
+ def register_preview_interceptors(*interceptors); end
+
+ # Unregister a previously registered Interceptor.
+ # Either a class or a string can be passed in as the Interceptor. If a
+ # string is passed in it will be constantized.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#53
+ def unregister_preview_interceptor(interceptor); end
+
+ # Unregister one or more previously registered Interceptors.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#35
+ def unregister_preview_interceptors(*interceptors); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/preview.rb#58
+ def interceptor_class_for(interceptor); end
+end
+
+# source://actionmailer//lib/action_mailer/queued_delivery.rb#4
+module ActionMailer::QueuedDelivery
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def deliver_later_queue_name; end
+ def deliver_later_queue_name=(value); end
+ def deliver_later_queue_name?; end
+ def delivery_job; end
+ def delivery_job=(value); end
+ def delivery_job?; end
+ end
+
+ module GeneratedInstanceMethods
+ def deliver_later_queue_name; end
+ def deliver_later_queue_name=(value); end
+ def deliver_later_queue_name?; end
+ def delivery_job; end
+ def delivery_job=(value); end
+ def delivery_job?; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/railtie.rb#9
+class ActionMailer::Railtie < ::Rails::Railtie; end
+
+# = Action Mailer \Rescuable
+#
+# Provides
+# {rescue_from}[rdoc-ref:ActiveSupport::Rescuable::ClassMethods#rescue_from]
+# for mailers. Wraps mailer action processing, mail job processing, and mail
+# delivery to handle configured errors.
+#
+# source://actionmailer//lib/action_mailer/rescuable.rb#10
+module ActionMailer::Rescuable
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Rescuable
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods ::ActionMailer::Rescuable::ClassMethods
+
+ # source://actionmailer//lib/action_mailer/rescuable.rb#20
+ def handle_exceptions; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/rescuable.rb#27
+ def process(*_arg0, **_arg1, &_arg2); 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://actionmailer//lib/action_mailer/rescuable.rb#0
+module ActionMailer::Rescuable::ClassMethods
+ # source://actionmailer//lib/action_mailer/rescuable.rb#15
+ def handle_exception(exception); end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#15
+class ActionMailer::TestCase < ::ActiveSupport::TestCase
+ include ::ActiveSupport::Testing::ConstantLookup
+ include ::ActiveJob::TestHelper
+ include ::ActionMailer::TestHelper
+ include ::Rails::Dom::Testing::Assertions::SelectorAssertions
+ include ::Rails::Dom::Testing::Assertions::DomAssertions
+ include ::ActionMailer::TestCase::Behavior
+ extend ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ extend ::ActionMailer::TestCase::Behavior::ClassMethods
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class?; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _mailer_class; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _mailer_class=(new_value); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class?; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#32
+module ActionMailer::TestCase::Behavior
+ include ::ActiveSupport::Testing::Assertions
+ include ::ActiveJob::TestHelper
+ include ::ActionMailer::TestHelper
+ include ::Rails::Dom::Testing::Assertions::SelectorAssertions
+ include ::Rails::Dom::Testing::Assertions::DomAssertions
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Testing::ConstantLookup
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ mixes_in_class_methods ::ActionMailer::TestCase::Behavior::ClassMethods
+
+ # Reads the fixture file for the given mailer.
+ #
+ # This is useful when testing mailers by being able to write the body of
+ # an email inside a fixture. See the testing guide for a concrete example:
+ # https://guides.rubyonrails.org/testing.html#revenge-of-the-fixtures
+ #
+ # source://actionmailer//lib/action_mailer/test_case.rb#82
+ def read_fixture(action); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#115
+ def charset; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#119
+ def encode(subject); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#87
+ def initialize_test_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#104
+ def restore_delivery_method; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#94
+ def restore_test_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#99
+ def set_delivery_method(method); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#109
+ def set_expected_mail; end
+
+ module GeneratedClassMethods
+ def _mailer_class; end
+ def _mailer_class=(value); end
+ def _mailer_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _mailer_class; end
+ def _mailer_class=(value); end
+ def _mailer_class?; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#48
+module ActionMailer::TestCase::Behavior::ClassMethods
+ # @raise [NonInferrableMailerError]
+ #
+ # source://actionmailer//lib/action_mailer/test_case.rb#68
+ def determine_default_mailer(name); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#60
+ def mailer_class; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#49
+ def tests(mailer); end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#16
+module ActionMailer::TestCase::ClearTestDeliveries
+ extend ::ActiveSupport::Concern
+
+ private
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#25
+ def clear_test_deliveries; end
+end
+
+# Provides helper methods for testing Action Mailer, including #assert_emails
+# and #assert_no_emails.
+#
+# source://actionmailer//lib/action_mailer/test_helper.rb#9
+module ActionMailer::TestHelper
+ include ::ActiveSupport::Testing::Assertions
+ include ::ActiveJob::TestHelper
+
+ # Asserts that the number of emails sent matches the given number.
+ #
+ # def test_emails
+ # assert_emails 0
+ # ContactMailer.welcome.deliver_now
+ # assert_emails 1
+ # ContactMailer.welcome.deliver_now
+ # assert_emails 2
+ # end
+ #
+ # If a block is passed, that block should cause the specified number of
+ # emails to be sent.
+ #
+ # def test_emails_again
+ # assert_emails 1 do
+ # ContactMailer.welcome.deliver_now
+ # end
+ #
+ # assert_emails 2 do
+ # ContactMailer.welcome.deliver_now
+ # ContactMailer.welcome.deliver_later
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#35
+ def assert_emails(number, &block); end
+
+ # Asserts that a specific email has been enqueued, optionally
+ # matching arguments and/or params.
+ #
+ # def test_email
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome
+ # end
+ #
+ # def test_email_with_parameters
+ # ContactMailer.with(greeting: "Hello").welcome.deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome, args: { greeting: "Hello" }
+ # end
+ #
+ # def test_email_with_arguments
+ # ContactMailer.welcome("Hello", "Goodbye").deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome, args: ["Hello", "Goodbye"]
+ # end
+ #
+ # def test_email_with_named_arguments
+ # ContactMailer.welcome(greeting: "Hello", farewell: "Goodbye").deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome, args: [{ greeting: "Hello", farewell: "Goodbye" }]
+ # end
+ #
+ # def test_email_with_parameters_and_arguments
+ # ContactMailer.with(greeting: "Hello").welcome("Cheers", "Goodbye").deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome, params: { greeting: "Hello" }, args: ["Cheers", "Goodbye"]
+ # end
+ #
+ # def test_email_with_parameters_and_named_arguments
+ # ContactMailer.with(greeting: "Hello").welcome(farewell: "Goodbye").deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome, params: { greeting: "Hello" }, args: [{farewell: "Goodbye"}]
+ # end
+ #
+ # def test_email_with_parameterized_mailer
+ # ContactMailer.with(greeting: "Hello").welcome.deliver_later
+ # assert_enqueued_email_with ContactMailer.with(greeting: "Hello"), :welcome
+ # end
+ #
+ # def test_email_with_matchers
+ # ContactMailer.with(greeting: "Hello").welcome("Cheers", "Goodbye").deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome,
+ # params: ->(params) { /hello/i.match?(params[:greeting]) },
+ # args: ->(args) { /cheers/i.match?(args[0]) }
+ # end
+ #
+ # If a block is passed, that block should cause the specified email
+ # to be enqueued.
+ #
+ # def test_email_in_block
+ # assert_enqueued_email_with ContactMailer, :welcome do
+ # ContactMailer.welcome.deliver_later
+ # end
+ # end
+ #
+ # If +args+ is provided as a Hash, a parameterized email is matched.
+ #
+ # def test_parameterized_email
+ # assert_enqueued_email_with ContactMailer, :welcome,
+ # args: {email: 'user@example.com'} do
+ # ContactMailer.with(email: 'user@example.com').welcome.deliver_later
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#157
+ def assert_enqueued_email_with(mailer, method, params: T.unsafe(nil), args: T.unsafe(nil), queue: T.unsafe(nil), &block); end
+
+ # Asserts that the number of emails enqueued for later delivery matches
+ # the given number.
+ #
+ # def test_emails
+ # assert_enqueued_emails 0
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_emails 1
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_emails 2
+ # end
+ #
+ # If a block is passed, that block should cause the specified number of
+ # emails to be enqueued.
+ #
+ # def test_emails_again
+ # assert_enqueued_emails 1 do
+ # ContactMailer.welcome.deliver_later
+ # end
+ #
+ # assert_enqueued_emails 2 do
+ # ContactMailer.welcome.deliver_later
+ # ContactMailer.welcome.deliver_later
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#91
+ def assert_enqueued_emails(number, &block); end
+
+ # Asserts that no emails have been sent.
+ #
+ # def test_emails
+ # assert_no_emails
+ # ContactMailer.welcome.deliver_now
+ # assert_emails 1
+ # end
+ #
+ # If a block is passed, that block should not cause any emails to be sent.
+ #
+ # def test_emails_again
+ # assert_no_emails do
+ # # No emails should be sent from this block
+ # end
+ # end
+ #
+ # Note: This assertion is simply a shortcut for:
+ #
+ # assert_emails 0, &block
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#63
+ def assert_no_emails(&block); end
+
+ # Asserts that no emails are enqueued for later delivery.
+ #
+ # def test_no_emails
+ # assert_no_enqueued_emails
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_emails 1
+ # end
+ #
+ # If a block is provided, it should not cause any emails to be enqueued.
+ #
+ # def test_no_emails
+ # assert_no_enqueued_emails do
+ # # No emails should be enqueued from this block
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#191
+ def assert_no_enqueued_emails(&block); end
+
+ # Returns any emails that are sent in the block.
+ #
+ # def test_emails
+ # emails = capture_emails do
+ # ContactMailer.welcome.deliver_now
+ # end
+ # assert_equal "Hi there", emails.first.subject
+ #
+ # emails = capture_emails do
+ # ContactMailer.welcome.deliver_now
+ # ContactMailer.welcome.deliver_later
+ # end
+ # assert_equal "Hi there", emails.first.subject
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#249
+ def capture_emails(&block); end
+
+ # Delivers all enqueued emails. If a block is given, delivers all of the emails
+ # that were enqueued throughout the duration of the block. If a block is
+ # not given, delivers all the enqueued emails up to this point in the test.
+ #
+ # def test_deliver_enqueued_emails
+ # deliver_enqueued_emails do
+ # ContactMailer.welcome.deliver_later
+ # end
+ #
+ # assert_emails 1
+ # end
+ #
+ # def test_deliver_enqueued_emails_without_block
+ # ContactMailer.welcome.deliver_later
+ #
+ # deliver_enqueued_emails
+ #
+ # assert_emails 1
+ # end
+ #
+ # If the +:queue+ option is specified,
+ # then only the emails(s) enqueued to a specific queue will be performed.
+ #
+ # def test_deliver_enqueued_emails_with_queue
+ # deliver_enqueued_emails queue: :external_mailers do
+ # CustomerMailer.deliver_later_queue_name = :external_mailers
+ # CustomerMailer.welcome.deliver_later # will be performed
+ # EmployeeMailer.deliver_later_queue_name = :internal_mailers
+ # EmployeeMailer.welcome.deliver_later # will not be performed
+ # end
+ #
+ # assert_emails 1
+ # end
+ #
+ # If the +:at+ option is specified, then only delivers emails enqueued to deliver
+ # immediately or before the given time.
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#231
+ def deliver_enqueued_emails(queue: T.unsafe(nil), at: T.unsafe(nil), &block); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/test_helper.rb#258
+ def delivery_job_filter(job); end
+end
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#9
+module ActionMailer::VERSION; end
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#10
+ActionMailer::VERSION::MAJOR = T.let(T.unsafe(nil), Integer)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#11
+ActionMailer::VERSION::MINOR = T.let(T.unsafe(nil), Integer)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#13
+ActionMailer::VERSION::PRE = T.let(T.unsafe(nil), String)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#15
+ActionMailer::VERSION::STRING = T.let(T.unsafe(nil), String)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#12
+ActionMailer::VERSION::TINY = T.let(T.unsafe(nil), Integer)
diff --git a/apps/govquests-api/rails_app/sorbet/rbi/gems/actionpack@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi b/apps/govquests-api/rails_app/sorbet/rbi/gems/actionpack@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
new file mode 100644
index 0000000..e776a63
--- /dev/null
+++ b/apps/govquests-api/rails_app/sorbet/rbi/gems/actionpack@8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9.rbi
@@ -0,0 +1,20770 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actionpack` gem.
+# Please instead update this file by running `bin/tapioca gem actionpack`.
+
+
+# :markup: markdown
+#
+# source://actionpack//lib/abstract_controller/deprecator.rb#5
+module AbstractController
+ extend ::ActiveSupport::Autoload
+
+ class << self
+ # source://actionpack//lib/abstract_controller/deprecator.rb#6
+ def deprecator; end
+
+ # source://actionpack//lib/abstract_controller.rb#27
+ def eager_load!; end
+ end
+end
+
+# Raised when a non-existing controller action is triggered.
+#
+# source://actionpack//lib/abstract_controller/base.rb#13
+class AbstractController::ActionNotFound < ::StandardError
+ include ::DidYouMean::Correctable
+
+ # @return [ActionNotFound] a new instance of ActionNotFound
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#16
+ def initialize(message = T.unsafe(nil), controller = T.unsafe(nil), action = T.unsafe(nil)); end
+
+ # source://actionpack//lib/abstract_controller/base.rb#14
+ def action; end
+
+ # source://actionpack//lib/abstract_controller/base.rb#14
+ def controller; end
+
+ # source://actionpack//lib/abstract_controller/base.rb#25
+ def corrections; end
+end
+
+# source://actionpack//lib/abstract_controller/asset_paths.rb#6
+module AbstractController::AssetPaths
+ extend ::ActiveSupport::Concern
+end
+
+# # Abstract Controller Base
+#
+# AbstractController::Base is a low-level API. Nobody should be using it
+# directly, and subclasses (like ActionController::Base) are expected to provide
+# their own `render` method, since rendering means different things depending on
+# the context.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/abstract_controller/base.rb#37
+class AbstractController::Base
+ include ::ActiveSupport::Configurable
+ extend ::ActiveSupport::Configurable::ClassMethods
+ extend ::ActiveSupport::DescendantsTracker
+
+ # Delegates to the class's ::action_methods.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#172
+ def action_methods; end
+
+ # Returns the name of the action this controller is processing.
+ #
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def action_name; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def action_name=(_arg0); end
+
+ # Returns true if a method for the action is available and can be dispatched,
+ # false otherwise.
+ #
+ # Notice that `action_methods.include?("foo")` may return false and
+ # `available_action?("foo")` returns true because this method considers actions
+ # that are also available through other means, for example, implicit render
+ # ones.
+ #
+ # #### Parameters
+ # * `action_name` - The name of an action to be tested
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#187
+ def available_action?(action_name); end
+
+ # Delegates to the class's ::controller_path.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#167
+ def controller_path; end
+
+ # Returns the formats that can be processed by the controller.
+ #
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def formats; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def formats=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/base.rb#204
+ def inspect; end
+
+ # Tests if a response body is set. Used to determine if the `process_action`
+ # callback needs to be terminated in AbstractController::Callbacks.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#193
+ def performed?; end
+
+ # Calls the action going through the entire Action Dispatch stack.
+ #
+ # The actual method that is called is determined by calling #method_for_action.
+ # If no method can handle the action, then an AbstractController::ActionNotFound
+ # error is raised.
+ #
+ # #### Returns
+ # * `self`
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#154
+ def process(action, *_arg1, **_arg2, &_arg3); end
+
+ # Returns the body of the HTTP response sent by the controller.
+ #
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def response_body; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def response_body=(_arg0); end
+
+ # Actually call the method associated with the action. Override this method if
+ # you wish to change how action methods are called, not to add additional
+ # behavior around it. For example, you would override #send_action if you want
+ # to inject arguments into the method.
+ def send_action(*_arg0); end
+
+ private
+
+ # Takes an action name and returns the name of the method that will handle the
+ # action.
+ #
+ # It checks if the action name is valid and returns false otherwise.
+ #
+ # See method_for_action for more information.
+ #
+ # #### Parameters
+ # * `action_name` - An action name to find a method name for
+ #
+ #
+ # #### Returns
+ # * `string` - The name of the method that handles the action
+ # * false - No valid method name could be found.
+ #
+ # Raise `AbstractController::ActionNotFound`.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#258
+ def _find_action_name(action_name); end
+
+ # If the action name was not found, but a method called "action_missing" was
+ # found, #method_for_action will return "_handle_action_missing". This method
+ # calls #action_missing with the current action name.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#238
+ def _handle_action_missing(*args); end
+
+ # Checks if the action name is valid and returns false otherwise.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#295
+ def _valid_action_name?(action_name); end
+
+ # Returns true if the name can be considered an action because it has a method
+ # defined in the controller.
+ #
+ # #### Parameters
+ # * `name` - The name of an action to be tested
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#215
+ def action_method?(name); end
+
+ # Takes an action name and returns the name of the method that will handle the
+ # action. In normal cases, this method returns the same name as it receives. By
+ # default, if #method_for_action receives a name that is not an action, it will
+ # look for an #action_missing method and return "_handle_action_missing" if one
+ # is found.
+ #
+ # Subclasses may override this method to add additional conditions that should
+ # be considered an action. For instance, an HTTP controller with a template
+ # matching the action name is considered to exist.
+ #
+ # If you override this method to handle additional cases, you may also provide a
+ # method (like `_handle_method_missing`) to handle the case.
+ #
+ # If none of these conditions are true, and `method_for_action` returns `nil`,
+ # an `AbstractController::ActionNotFound` exception will be raised.
+ #
+ # #### Parameters
+ # * `action_name` - An action name to find a method name for
+ #
+ #
+ # #### Returns
+ # * `string` - The name of the method that handles the action
+ # * `nil` - No method name could be found.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#286
+ def method_for_action(action_name); end
+
+ # Call the action. Override this in a subclass to modify the behavior around
+ # processing an action. This, and not #process, is the intended way to override
+ # action dispatching.
+ #
+ # Notice that the first argument is the method to be dispatched which is **not**
+ # necessarily the same as the action name.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#225
+ def process_action(*_arg0, **_arg1, &_arg2); end
+
+ class << self
+ # Returns the value of attribute abstract.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#54
+ def abstract; end
+
+ # Define a controller as abstract. See internal_methods for more details.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#58
+ def abstract!; end
+
+ # Returns the value of attribute abstract.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#54
+ def abstract?; end
+
+ # A list of method names that should be considered actions. This includes all
+ # public instance methods on a controller, less any internal methods (see
+ # internal_methods), adding back in any methods that are internal, but still
+ # exist on the class itself.
+ #
+ # #### Returns
+ # * `Set` - A set of all methods that should be considered actions.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#97
+ def action_methods; end
+
+ # action_methods are cached and there is sometimes a need to refresh them.
+ # ::clear_action_methods! allows you to do that, so next time you run
+ # action_methods, they will be recalculated.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#112
+ def clear_action_methods!; end
+
+ # Returns the full controller name, underscored, without the ending Controller.
+ #
+ # class MyApp::MyPostsController < AbstractController::Base
+ #
+ # end
+ #
+ # MyApp::MyPostsController.controller_path # => "my_app/my_posts"
+ #
+ # #### Returns
+ # * `String`
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#127
+ def controller_path; end
+
+ # source://actionpack//lib/abstract_controller/base.rb#137
+ def eager_load!; end
+
+ # source://actionpack//lib/abstract_controller/base.rb#62
+ def inherited(klass); end
+
+ # A list of all internal methods for a controller. This finds the first abstract
+ # superclass of a controller, and gets a list of all public instance methods on
+ # that abstract class. Public instance methods of a controller would normally be
+ # considered action methods, so methods declared on abstract classes are being
+ # removed. (ActionController::Metal and ActionController::Base are defined as
+ # abstract)
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#77
+ def internal_methods; end
+
+ # Refresh the cached action_methods when a new action_method is added.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#132
+ def method_added(name); end
+
+ # Returns true if the given controller is capable of rendering a path. A
+ # subclass of `AbstractController::Base` may return false. An Email controller
+ # for example does not support paths, only full URLs.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#200
+ def supports_path?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/caching.rb#6
+module AbstractController::Caching
+ include ::AbstractController::Caching::ConfigMethods
+ extend ::ActiveSupport::Concern
+ extend ::ActiveSupport::Autoload
+ include GeneratedInstanceMethods
+ include ::AbstractController::Caching::Fragments
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ConfigMethods
+
+ # source://actionpack//lib/abstract_controller/caching.rb#54
+ def view_cache_dependencies; end
+
+ private
+
+ # Convenience accessor.
+ #
+ # source://actionpack//lib/abstract_controller/caching.rb#60
+ def cache(key, options = T.unsafe(nil), &block); end
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/caching.rb#48
+module AbstractController::Caching::ClassMethods
+ # source://actionpack//lib/abstract_controller/caching.rb#49
+ def view_cache_dependency(&dependency); end
+end
+
+# source://actionpack//lib/abstract_controller/caching.rb#14
+module AbstractController::Caching::ConfigMethods
+ # source://actionpack//lib/abstract_controller/caching.rb#15
+ def cache_store; end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#19
+ def cache_store=(store); end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/caching.rb#24
+ def cache_configured?; end
+end
+
+# # Abstract Controller Caching Fragments
+#
+# Fragment caching is used for caching various blocks within views without
+# caching the entire action as a whole. This is useful when certain elements of
+# an action change frequently or depend on complicated state while other parts
+# rarely change or can be shared amongst multiple parties. The caching is done
+# using the `cache` helper available in the Action View. See
+# ActionView::Helpers::CacheHelper for more information.
+#
+# While it's strongly recommended that you use key-based cache expiration (see
+# links in CacheHelper for more information), it is also possible to manually
+# expire caches. For example:
+#
+# expire_fragment('name_of_cache')
+#
+# source://actionpack//lib/abstract_controller/caching/fragments.rb#21
+module AbstractController::Caching::Fragments
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+
+ # Given a key (as described in `expire_fragment`), returns a key array suitable
+ # for use in reading, writing, or expiring a cached fragment. All keys begin
+ # with `:views`, followed by `ENV["RAILS_CACHE_ID"]` or
+ # `ENV["RAILS_APP_VERSION"]` if set, followed by any controller-wide key prefix
+ # values, ending with the specified `key` value.
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#68
+ def combined_fragment_cache_key(key); end
+
+ # Removes fragments from the cache.
+ #
+ # `key` can take one of three forms:
+ #
+ # * String - This would normally take the form of a path, like
+ # `pages/45/notes`.
+ # * Hash - Treated as an implicit call to `url_for`, like `{ controller:
+ # 'pages', action: 'notes', id: 45}`
+ # * Regexp - Will remove any fragment that matches, so `%r{pages/\d*/notes}`
+ # might remove all notes. Make sure you don't use anchors in the regex (`^`
+ # or `$`) because the actual filename matched looks like
+ # `./cache/filename/path.cache`. Note: Regexp expiration is only supported
+ # on caches that can iterate over all keys (unlike memcached).
+ #
+ #
+ # `options` is passed through to the cache store's `delete` method (or
+ # `delete_matched`, for Regexp keys).
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#131
+ def expire_fragment(key, options = T.unsafe(nil)); end
+
+ # Check if a cached fragment from the location signified by `key` exists (see
+ # `expire_fragment` for acceptable formats).
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#105
+ def fragment_exist?(key, options = T.unsafe(nil)); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#144
+ def instrument_fragment_cache(name, key, &block); end
+
+ # Reads a cached fragment from the location signified by `key` (see
+ # `expire_fragment` for acceptable formats).
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#93
+ def read_fragment(key, options = T.unsafe(nil)); end
+
+ # Writes `content` to the location signified by `key` (see `expire_fragment` for
+ # acceptable formats).
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#80
+ def write_fragment(key, content, options = T.unsafe(nil)); end
+
+ module GeneratedClassMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/caching/fragments.rb#38
+module AbstractController::Caching::Fragments::ClassMethods
+ # Allows you to specify controller-wide key prefixes for cache fragments. Pass
+ # either a constant `value`, or a block which computes a value each time a cache
+ # key is generated.
+ #
+ # For example, you may want to prefix all fragment cache keys with a global
+ # version identifier, so you can easily invalidate all caches.
+ #
+ # class ApplicationController
+ # fragment_cache_key "v1"
+ # end
+ #
+ # When it's time to invalidate all fragments, simply change the string constant.
+ # Or, progressively roll out the cache invalidation using a computed value:
+ #
+ # class ApplicationController
+ # fragment_cache_key do
+ # @account.id.odd? ? "v1" : "v2"
+ # end
+ # end
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#58
+ def fragment_cache_key(value = T.unsafe(nil), &key); end
+end
+
+# # Abstract Controller Callbacks
+#
+# Abstract Controller provides hooks during the life cycle of a controller
+# action. Callbacks allow you to trigger logic during this cycle. Available
+# callbacks are:
+#
+# * `after_action`
+# * `append_after_action`
+# * `append_around_action`
+# * `append_before_action`
+# * `around_action`
+# * `before_action`
+# * `prepend_after_action`
+# * `prepend_around_action`
+# * `prepend_before_action`
+# * `skip_after_action`
+# * `skip_around_action`
+# * `skip_before_action`
+#
+# source://actionpack//lib/abstract_controller/callbacks.rb#24
+module AbstractController::Callbacks
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+
+ private
+
+ # Override `AbstractController::Base#process_action` to run the `process_action`
+ # callbacks around the normal behavior.
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#259
+ def process_action(*_arg0, **_arg1, &_arg2); end
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/callbacks.rb#39
+class AbstractController::Callbacks::ActionFilter
+ # @return [ActionFilter] a new instance of ActionFilter
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#40
+ def initialize(filters, conditional_key, actions); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#46
+ def after(controller); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#46
+ def around(controller); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#46
+ def before(controller); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#46
+ def match?(controller); end
+end
+
+# source://actionpack//lib/abstract_controller/callbacks.rb#74
+module AbstractController::Callbacks::ClassMethods
+ # Take callback names and an optional callback proc, normalize them, then call
+ # the block with each callback. This allows us to abstract the normalization
+ # across several methods that use it.
+ #
+ # #### Parameters
+ # * `callbacks` - An array of callbacks, with an optional options hash as the
+ # last parameter.
+ # * `block` - A proc that should be added to the callbacks.
+ #
+ #
+ # #### Block Parameters
+ # * `name` - The callback to be added.
+ # * `options` - A hash of options to be used when adding the callback.
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#120
+ def _insert_callbacks(callbacks, block = T.unsafe(nil)); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#98
+ def _normalize_callback_option(options, from, to); end
+
+ # If `:only` or `:except` are used, convert the options into the `:if` and
+ # `:unless` options of ActiveSupport::Callbacks.
+ #
+ # The basic idea is that `:only => :index` gets converted to `:if => proc {|c|
+ # c.action_name == "index" }`.
+ #
+ # Note that `:only` has priority over `:if` in case they are used together.
+ #
+ # only: :index, if: -> { true } # the :if option will be ignored.
+ #
+ # Note that `:if` has priority over `:except` in case they are used together.
+ #
+ # except: :index, if: -> { true } # the :except option will be ignored.
+ #
+ # #### Options
+ # * `only` - The callback should be run only for this action.
+ # * `except` - The callback should be run for all actions except this action.
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#93
+ def _normalize_callback_options(options); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#231
+ def after_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#231
+ def append_after_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#231
+ def append_around_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#231
+ def append_before_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#231
+ def around_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#231
+ def before_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#237
+ def prepend_after_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#237
+ def prepend_around_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#237
+ def prepend_before_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#245
+ def skip_after_action(*names); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#245
+ def skip_around_action(*names); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#245
+ def skip_before_action(*names); end
+end
+
+# source://actionpack//lib/abstract_controller/collector.rb#8
+module AbstractController::Collector
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def atom(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def bmp(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def css(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def csv(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def gif(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def gzip(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def html(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def ics(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def jpeg(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def js(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def json(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def m4a(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def mp3(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def mp4(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def mpeg(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def multipart_form(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def ogg(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def otf(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def pdf(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def png(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def rss(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def svg(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def text(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def tiff(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def ttf(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def url_encoded_form(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def vcf(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def vtt(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def webm(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def webp(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def woff(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def woff2(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def xml(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def yaml(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#12
+ def zip(*_arg0, **_arg1, &_arg2); end
+
+ private
+
+ # source://actionpack//lib/abstract_controller/collector.rb#27
+ def method_missing(symbol, *_arg1, **_arg2, &_arg3); end
+
+ class << self
+ # source://actionpack//lib/abstract_controller/collector.rb#9
+ def generate_method_for_mime(mime); end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#11
+class AbstractController::DoubleRenderError < ::AbstractController::Error
+ # @return [DoubleRenderError] a new instance of DoubleRenderError
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#14
+ def initialize(message = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#12
+AbstractController::DoubleRenderError::DEFAULT_MESSAGE = T.let(T.unsafe(nil), String)
+
+# source://actionpack//lib/abstract_controller/error.rb#6
+class AbstractController::Error < ::StandardError; end
+
+# source://actionpack//lib/abstract_controller/helpers.rb#9
+module AbstractController::Helpers
+ extend ::ActiveSupport::Concern
+ extend ::AbstractController::Helpers::Resolution
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#28
+ def _helpers; end
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/helpers.rb#64
+module AbstractController::Helpers::ClassMethods
+ include ::AbstractController::Helpers::Resolution
+
+ # Sets the attribute _helpers
+ #
+ # @param value the value to set the attribute _helpers to.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#76
+ def _helpers=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#216
+ def _helpers_for_modification; end
+
+ # Clears up all existing helpers in this class, only keeping the helper with the
+ # same name as this class.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#207
+ def clear_helpers; end
+
+ # Includes the given modules in the template class.
+ #
+ # Modules can be specified in different ways. All of the following calls include
+ # `FooHelper`:
+ #
+ # # Module, recommended.
+ # helper FooHelper
+ #
+ # # String/symbol without the "helper" suffix, camel or snake case.
+ # helper "Foo"
+ # helper :Foo
+ # helper "foo"
+ # helper :foo
+ #
+ # The last two assume that `"foo".camelize` returns "Foo".
+ #
+ # When strings or symbols are passed, the method finds the actual module object
+ # using String#constantize. Therefore, if the module has not been yet loaded, it
+ # has to be autoloadable, which is normally the case.
+ #
+ # Namespaces are supported. The following calls include `Foo::BarHelper`:
+ #
+ # # Module, recommended.
+ # helper Foo::BarHelper
+ #
+ # # String/symbol without the "helper" suffix, camel or snake case.
+ # helper "Foo::Bar"
+ # helper :"Foo::Bar"
+ # helper "foo/bar"
+ # helper :"foo/bar"
+ #
+ # The last two assume that `"foo/bar".camelize` returns "Foo::Bar".
+ #
+ # The method accepts a block too. If present, the block is evaluated in the
+ # context of the controller helper module. This simple call makes the `wadus`
+ # method available in templates of the enclosing controller:
+ #
+ # helper do
+ # def wadus
+ # "wadus"
+ # end
+ # end
+ #
+ # Furthermore, all the above styles can be mixed together:
+ #
+ # helper FooHelper, "woo", "bar/baz" do
+ # def wadus
+ # "wadus"
+ # end
+ # end
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#196
+ def helper(*args, &block); end
+
+ # Declare a controller method as a helper. For example, the following
+ # makes the `current_user` and `logged_in?` controller methods available
+ # to the view:
+ # class ApplicationController < ActionController::Base
+ # helper_method :current_user, :logged_in?
+ #
+ # private
+ # def current_user
+ # @current_user ||= User.find_by(id: session[:user])
+ # end
+ #
+ # def logged_in?
+ # current_user != nil
+ # end
+ # end
+ #
+ # In a view:
+ # <% if logged_in? -%>Welcome, <%= current_user.name %><% end -%>
+ #
+ # #### Parameters
+ # * `method[, method]` - A name or names of a method on the controller to be
+ # made available on the view.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#126
+ def helper_method(*methods); end
+
+ # When a class is inherited, wrap its helper module in a new module. This
+ # ensures that the parent class's module can be changed independently of the
+ # child class's.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#68
+ def inherited(klass); end
+
+ private
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#235
+ def default_helper_module!; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#224
+ def define_helpers_module(klass, helpers = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/abstract_controller/helpers.rb#32
+module AbstractController::Helpers::Resolution
+ # source://actionpack//lib/abstract_controller/helpers.rb#48
+ def all_helpers_from_path(path); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#57
+ def helper_modules_from_paths(paths); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#33
+ def modules_for_helpers(modules_or_helper_prefixes); end
+end
+
+# source://actionpack//lib/abstract_controller/logger.rb#8
+module AbstractController::Logger
+ extend ::ActiveSupport::Concern
+ include ::ActiveSupport::Benchmarkable
+end
+
+# source://actionpack//lib/abstract_controller/railties/routes_helpers.rb#8
+module AbstractController::Railties; end
+
+# source://actionpack//lib/abstract_controller/railties/routes_helpers.rb#9
+module AbstractController::Railties::RoutesHelpers
+ class << self
+ # source://actionpack//lib/abstract_controller/railties/routes_helpers.rb#10
+ def with(routes, include_path_helpers = T.unsafe(nil)); end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#19
+module AbstractController::Rendering
+ extend ::ActiveSupport::Concern
+ include ::ActionView::ViewPaths
+
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+
+ # Normalizes arguments and options, and then delegates to render_to_body and
+ # sticks the result in `self.response_body`.
+ #
+ # Supported options depend on the underlying `render_to_body` implementation.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#27
+ def render(*args, &block); end
+
+ # Performs the actual template rendering.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#51
+ def render_to_body(options = T.unsafe(nil)); end
+
+ # Similar to #render, but only returns the rendered template as a string,
+ # instead of setting `self.response_body`.
+ #
+ # If a component extends the semantics of `response_body` (as ActionController
+ # extends it to be anything that responds to the method each), this method needs
+ # to be overridden in order to still return a string.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#45
+ def render_to_string(*args, &block); end
+
+ # Returns `Content-Type` of rendered content.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#55
+ def rendered_format; end
+
+ # This method should return a hash with assigns. You can overwrite this
+ # configuration per controller.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#63
+ def view_assigns; end
+
+ private
+
+ # Normalize args by converting `render "foo"` to `render action: "foo"` and
+ # `render "foo/bar"` to `render file: "foo/bar"`.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#74
+ def _normalize_args(action = T.unsafe(nil), options = T.unsafe(nil)); end
+
+ # Normalize options.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#89
+ def _normalize_options(options); end
+
+ # Normalize args and options.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#115
+ def _normalize_render(*args, &block); end
+
+ # Process the rendered format.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#99
+ def _process_format(format); end
+
+ # Process extra options.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#94
+ def _process_options(options); end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#102
+ def _process_variant(options); end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#122
+ def _protected_ivars; end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#105
+ def _set_html_content_type; end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#111
+ def _set_rendered_content_type(format); end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#108
+ def _set_vary_header; end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#59
+AbstractController::Rendering::DEFAULT_PROTECTED_INSTANCE_VARIABLES = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/abstract_controller/translation.rb#8
+module AbstractController::Translation
+ # Delegates to `I18n.localize`.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#37
+ def l(object, **options); end
+
+ # Delegates to `I18n.localize`.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#37
+ def localize(object, **options); end
+
+ # Delegates to `I18n.translate`.
+ #
+ # When the given key starts with a period, it will be scoped by the current
+ # controller and action. So if you call `translate(".foo")` from
+ # `PeopleController#index`, it will convert the call to
+ # `I18n.translate("people.index.foo")`. This makes it less repetitive to
+ # translate many keys within the same controller / action and gives you a simple
+ # framework for scoping them consistently.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#17
+ def t(key, **options); end
+
+ # Delegates to `I18n.translate`.
+ #
+ # When the given key starts with a period, it will be scoped by the current
+ # controller and action. So if you call `translate(".foo")` from
+ # `PeopleController#index`, it will convert the call to
+ # `I18n.translate("people.index.foo")`. This makes it less repetitive to
+ # translate many keys within the same controller / action and gives you a simple
+ # framework for scoping them consistently.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#17
+ def translate(key, **options); end
+end
+
+# # URL For
+#
+# Includes `url_for` into the host class (e.g. an abstract controller or
+# mailer). The class has to provide a `RouteSet` by implementing the `_routes`
+# methods. Otherwise, an exception will be raised.
+#
+# Note that this module is completely decoupled from HTTP - the only requirement
+# is a valid `_routes` implementation.
+#
+# source://actionpack//lib/abstract_controller/url_for.rb#14
+module AbstractController::UrlFor
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionDispatch::Routing::UrlFor
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+
+ # source://actionpack//lib/abstract_controller/url_for.rb#18
+ def _routes; end
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/url_for.rb#23
+module AbstractController::UrlFor::ClassMethods
+ # source://actionpack//lib/abstract_controller/url_for.rb#24
+ def _routes; end
+
+ # source://actionpack//lib/abstract_controller/url_for.rb#28
+ def action_methods; end
+end
+
+# # Action Controller
+#
+# Action Controller is a module of Action Pack.
+#
+# Action Controller provides a base controller class that can be subclassed to
+# implement filters and actions to handle requests. The result of an action is
+# typically content generated from views.
+#
+# source://actionpack//lib/action_controller/deprecator.rb#5
+module ActionController
+ extend ::ActiveSupport::Autoload
+
+ class << self
+ # See Renderers.add
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#9
+ def add_renderer(key, &block); end
+
+ # source://actionpack//lib/action_controller/deprecator.rb#6
+ def deprecator; end
+
+ # See Renderers.remove
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#14
+ def remove_renderer(key); end
+ end
+end
+
+# # Action Controller API
+#
+# API Controller is a lightweight version of ActionController::Base, created for
+# applications that don't require all functionalities that a complete Rails
+# controller provides, allowing you to create controllers with just the features
+# that you need for API only applications.
+#
+# An API Controller is different from a normal controller in the sense that by
+# default it doesn't include a number of features that are usually required by
+# browser access only: layouts and templates rendering, flash, assets, and so
+# on. This makes the entire controller stack thinner, suitable for API
+# applications. It doesn't mean you won't have such features if you need them:
+# they're all available for you to include in your application, they're just not
+# part of the default API controller stack.
+#
+# Normally, `ApplicationController` is the only controller that inherits from
+# `ActionController::API`. All other controllers in turn inherit from
+# `ApplicationController`.
+#
+# A sample controller could look like this:
+#
+# class PostsController < ApplicationController
+# def index
+# posts = Post.all
+# render json: posts
+# end
+# end
+#
+# Request, response, and parameters objects all work the exact same way as
+# ActionController::Base.
+#
+# ## Renders
+#
+# The default API Controller stack includes all renderers, which means you can
+# use `render :json` and siblings freely in your controllers. Keep in mind that
+# templates are not going to be rendered, so you need to ensure your controller
+# is calling either `render` or `redirect_to` in all actions, otherwise it will
+# return `204 No Content`.
+#
+# def show
+# post = Post.find(params[:id])
+# render json: post
+# end
+#
+# ## Redirects
+#
+# Redirects are used to move from one action to another. You can use the
+# `redirect_to` method in your controllers in the same way as in
+# ActionController::Base. For example:
+#
+# def create
+# redirect_to root_url and return if not_authorized?
+# # do stuff here
+# end
+#
+# ## Adding New Behavior
+#
+# In some scenarios you may want to add back some functionality provided by
+# ActionController::Base that is not present by default in
+# `ActionController::API`, for instance `MimeResponds`. This module gives you
+# the `respond_to` method. Adding it is quite simple, you just need to include
+# the module in a specific controller or in `ApplicationController` in case you
+# want it available in your entire application:
+#
+# class ApplicationController < ActionController::API
+# include ActionController::MimeResponds
+# end
+#
+# class PostsController < ApplicationController
+# def index
+# posts = Post.all
+#
+# respond_to do |format|
+# format.json { render json: posts }
+# format.xml { render xml: posts }
+# end
+# end
+# end
+#
+# Make sure to check the modules included in ActionController::Base if you want
+# to use any other functionality that is not provided by `ActionController::API`
+# out of the box.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/action_controller/api.rb#92
+class ActionController::API < ::ActionController::Metal
+ include ::ActionView::ViewPaths
+ include ::AbstractController::Rendering
+ include ::ActionDispatch::Routing::PolymorphicRoutes
+ include ::ActionDispatch::Routing::UrlFor
+ include ::AbstractController::UrlFor
+ include ::ActionController::UrlFor
+ include ::AbstractController::Logger
+ include ::ActiveSupport::Benchmarkable
+ include ::ActionController::Redirecting
+ include ::ActionController::ApiRendering
+ include ::ActionController::Rendering
+ include ::ActionController::Renderers
+ include ::ActionController::Renderers::All
+ include ::ActionController::Head
+ include ::ActionController::ConditionalGet
+ include ::ActionController::BasicImplicitRender
+ include ::ActionController::StrongParameters
+ include ::ActionController::RateLimiting
+ include ::ActionController::Caching
+ include ::AbstractController::Caching::Fragments
+ include ::AbstractController::Caching::ConfigMethods
+ include ::AbstractController::Caching
+ include ::ActionController::DataStreaming
+ include ::ActionController::DefaultHeaders
+ include ::ActionController::Logging
+ include ::ActiveSupport::Callbacks
+ include ::AbstractController::Callbacks
+ include ::ActiveSupport::Rescuable
+ include ::ActionController::Rescue
+ include ::ActionController::Instrumentation
+ include ::ActionController::ParamsWrapper
+ extend ::ActionView::ViewPaths::ClassMethods
+ extend ::AbstractController::UrlFor::ClassMethods
+ extend ::ActionController::Rendering::ClassMethods
+ extend ::ActionController::Renderers::ClassMethods
+ extend ::ActionController::ConditionalGet::ClassMethods
+ extend ::ActionController::RateLimiting::ClassMethods
+ extend ::AbstractController::Caching::Fragments::ClassMethods
+ extend ::AbstractController::Caching::ClassMethods
+ extend ::AbstractController::Caching::ConfigMethods
+ extend ::ActionController::DefaultHeaders::ClassMethods
+ extend ::ActionController::Logging::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::AbstractController::Callbacks::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionController::Instrumentation::ClassMethods
+ extend ::ActionController::ParamsWrapper::ClassMethods
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#69
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#923
+ def _process_action_callbacks; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#911
+ def _run_process_action_callbacks(&block); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies; end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies?; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_static_extension; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_static_extension=(value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options=(_arg0); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def enable_fragment_cache_logging=(value); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers?; end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys; end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def logger; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def logger=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def perform_caching; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def perform_caching=(value); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions; end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions=(val); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#915
+ def _process_action_callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#919
+ def _process_action_callbacks=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _renderers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _renderers=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _view_cache_dependencies; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _view_cache_dependencies=(new_value); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _wrapper_options; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _wrapper_options=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_static_extension; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_static_extension=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def default_url_options; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def default_url_options=(new_value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def enable_fragment_cache_logging=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def etaggers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def etaggers=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def fragment_cache_keys; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def fragment_cache_keys=(new_value); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def logger; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def logger=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def perform_caching; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def perform_caching=(value); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions; end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions=(val); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def rescue_handlers=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ # Shortcut helper that returns all the ActionController::API modules except the
+ # ones passed as arguments:
+ #
+ # class MyAPIBaseController < ActionController::Metal
+ # ActionController::API.without_modules(:UrlFor).each do |left|
+ # include left
+ # end
+ # end
+ #
+ # This gives better control over what you want to exclude and makes it easier to
+ # create an API controller class, instead of listing the modules required
+ # manually.
+ #
+ # source://actionpack//lib/action_controller/api.rb#107
+ def without_modules(*modules); end
+ end
+end
+
+# source://actionpack//lib/action_controller/api.rb#115
+ActionController::API::MODULES = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#6
+class ActionController::ActionControllerError < ::StandardError; end
+
+# source://actionpack//lib/action_controller/metal/allow_browser.rb#6
+module ActionController::AllowBrowser
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::AllowBrowser::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#53
+ def allow_browser(versions:, block:); end
+end
+
+# source://actionpack//lib/action_controller/metal/allow_browser.rb#63
+class ActionController::AllowBrowser::BrowserBlocker
+ # @return [BrowserBlocker] a new instance of BrowserBlocker
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#70
+ def initialize(request, versions:); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#74
+ def blocked?; end
+
+ # Returns the value of attribute request.
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#68
+ def request; end
+
+ # Returns the value of attribute versions.
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#68
+ def versions; end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#95
+ def bot?; end
+
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#111
+ def expanded_versions; end
+
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#107
+ def minimum_browser_version_for_browser; end
+
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#115
+ def normalized_browser_name; end
+
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#79
+ def parsed_user_agent; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#87
+ def unsupported_browser?; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#83
+ def user_agent_version_reported?; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#99
+ def version_below_minimum_required?; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#91
+ def version_guarded_browser?; end
+end
+
+# source://actionpack//lib/action_controller/metal/allow_browser.rb#64
+ActionController::AllowBrowser::BrowserBlocker::SETS = T.let(T.unsafe(nil), Hash)
+
+# source://actionpack//lib/action_controller/metal/allow_browser.rb#9
+module ActionController::AllowBrowser::ClassMethods
+ # Specify the browser versions that will be allowed to access all actions (or
+ # some, as limited by `only:` or `except:`). Only browsers matched in the hash
+ # or named set passed to `versions:` will be blocked if they're below the
+ # versions specified. This means that all other browsers, as well as agents that
+ # aren't reporting a user-agent header, will be allowed access.
+ #
+ # A browser that's blocked will by default be served the file in
+ # public/406-unsupported-browser.html with a HTTP status code of "406 Not
+ # Acceptable".
+ #
+ # In addition to specifically named browser versions, you can also pass
+ # `:modern` as the set to restrict support to browsers natively supporting webp
+ # images, web push, badges, import maps, CSS nesting, and CSS :has. This
+ # includes Safari 17.2+, Chrome 120+, Firefox 121+, Opera 106+.
+ #
+ # You can use https://caniuse.com to check for browser versions supporting the
+ # features you use.
+ #
+ # You can use `ActiveSupport::Notifications` to subscribe to events of browsers
+ # being blocked using the `browser_block.action_controller` event name.
+ #
+ # Examples:
+ #
+ # class ApplicationController < ActionController::Base
+ # # Allow only browsers natively supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has
+ # allow_browser versions: :modern
+ # end
+ #
+ # class ApplicationController < ActionController::Base
+ # # All versions of Chrome and Opera will be allowed, but no versions of "internet explorer" (ie). Safari needs to be 16.4+ and Firefox 121+.
+ # allow_browser versions: { safari: 16.4, firefox: 121, ie: false }
+ # end
+ #
+ # class MessagesController < ApplicationController
+ # # In addition to the browsers blocked by ApplicationController, also block Opera below 104 and Chrome below 119 for the show action.
+ # allow_browser versions: { opera: 104, chrome: 119 }, only: :show
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/allow_browser.rb#47
+ def allow_browser(versions:, block: T.unsafe(nil), **options); end
+end
+
+# source://actionpack//lib/action_controller/api/api_rendering.rb#6
+module ActionController::ApiRendering
+ extend ::ActiveSupport::Concern
+ include ::ActionController::Rendering
+
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+
+ # source://actionpack//lib/action_controller/api/api_rendering.rb#13
+ def render_to_body(options = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#9
+class ActionController::BadRequest < ::ActionController::ActionControllerError
+ # @return [BadRequest] a new instance of BadRequest
+ #
+ # source://actionpack//lib/action_controller/metal/exceptions.rb#10
+ def initialize(msg = T.unsafe(nil)); end
+end
+
+# # Action Controller Base
+#
+# Action Controllers are the core of a web request in Rails. They are made up of
+# one or more actions that are executed on request and then either it renders a
+# template or redirects to another action. An action is defined as a public
+# method on the controller, which will automatically be made accessible to the
+# web-server through Rails Routes.
+#
+# By default, only the ApplicationController in a Rails application inherits
+# from `ActionController::Base`. All other controllers inherit from
+# ApplicationController. This gives you one class to configure things such as
+# request forgery protection and filtering of sensitive request parameters.
+#
+# A sample controller could look like this:
+#
+# class PostsController < ApplicationController
+# def index
+# @posts = Post.all
+# end
+#
+# def create
+# @post = Post.create params[:post]
+# redirect_to posts_path
+# end
+# end
+#
+# Actions, by default, render a template in the `app/views` directory
+# corresponding to the name of the controller and action after executing code in
+# the action. For example, the `index` action of the PostsController would
+# render the template `app/views/posts/index.html.erb` by default after
+# populating the `@posts` instance variable.
+#
+# Unlike index, the create action will not render a template. After performing
+# its main purpose (creating a new post), it initiates a redirect instead. This
+# redirect works by returning an external `302 Moved` HTTP response that takes
+# the user to the index action.
+#
+# These two methods represent the two basic action archetypes used in Action
+# Controllers: Get-and-show and do-and-redirect. Most actions are variations on
+# these themes.
+#
+# ## Requests
+#
+# For every request, the router determines the value of the `controller` and
+# `action` keys. These determine which controller and action are called. The
+# remaining request parameters, the session (if one is available), and the full
+# request with all the HTTP headers are made available to the action through
+# accessor methods. Then the action is performed.
+#
+# The full request object is available via the request accessor and is primarily
+# used to query for HTTP headers:
+#
+# def server_ip
+# location = request.env["REMOTE_ADDR"]
+# render plain: "This server hosted at #{location}"
+# end
+#
+# ## Parameters
+#
+# All request parameters, whether they come from a query string in the URL or
+# form data submitted through a POST request are available through the `params`
+# method which returns a hash. For example, an action that was performed through
+# `/posts?category=All&limit=5` will include `{ "category" => "All", "limit" =>
+# "5" }` in `params`.
+#
+# It's also possible to construct multi-dimensional parameter hashes by
+# specifying keys using brackets, such as:
+#
+#
+#
+#
+# A request coming from a form holding these inputs will include `{ "post" => {
+# "name" => "david", "address" => "hyacintvej" } }`. If the address input had
+# been named `post[address][street]`, the `params` would have included `{ "post"
+# => { "address" => { "street" => "hyacintvej" } } }`. There's no limit to the
+# depth of the nesting.
+#
+# ## Sessions
+#
+# Sessions allow you to store objects in between requests. This is useful for
+# objects that are not yet ready to be persisted, such as a Signup object
+# constructed in a multi-paged process, or objects that don't change much and
+# are needed all the time, such as a User object for a system that requires
+# login. The session should not be used, however, as a cache for objects where
+# it's likely they could be changed unknowingly. It's usually too much work to
+# keep it all synchronized -- something databases already excel at.
+#
+# You can place objects in the session by using the `session` method, which
+# accesses a hash:
+#
+# session[:person] = Person.authenticate(user_name, password)
+#
+# You can retrieve it again through the same hash:
+#
+# "Hello #{session[:person]}"
+#
+# For removing objects from the session, you can either assign a single key to
+# `nil`:
+#
+# # removes :person from session
+# session[:person] = nil
+#
+# or you can remove the entire session with `reset_session`.
+#
+# By default, sessions are stored in an encrypted browser cookie (see
+# ActionDispatch::Session::CookieStore). Thus the user will not be able to read
+# or edit the session data. However, the user can keep a copy of the cookie even
+# after it has expired, so you should avoid storing sensitive information in
+# cookie-based sessions.
+#
+# ## Responses
+#
+# Each action results in a response, which holds the headers and document to be
+# sent to the user's browser. The actual response object is generated
+# automatically through the use of renders and redirects and requires no user
+# intervention.
+#
+# ## Renders
+#
+# Action Controller sends content to the user by using one of five rendering
+# methods. The most versatile and common is the rendering of a template.
+# Included in the Action Pack is the Action View, which enables rendering of ERB
+# templates. It's automatically configured. The controller passes objects to the
+# view by assigning instance variables:
+#
+# def show
+# @post = Post.find(params[:id])
+# end
+#
+# Which are then automatically available to the view:
+#
+# Title: <%= @post.title %>
+#
+# You don't have to rely on the automated rendering. For example, actions that
+# could result in the rendering of different templates will use the manual
+# rendering methods:
+#
+# def search
+# @results = Search.find(params[:query])
+# case @results.count
+# when 0 then render action: "no_results"
+# when 1 then render action: "show"
+# when 2..10 then render action: "show_many"
+# end
+# end
+#
+# Read more about writing ERB and Builder templates in ActionView::Base.
+#
+# ## Redirects
+#
+# Redirects are used to move from one action to another. For example, after a
+# `create` action, which stores a blog entry to the database, we might like to
+# show the user the new entry. Because we're following good DRY principles
+# (Don't Repeat Yourself), we're going to reuse (and redirect to) a `show`
+# action that we'll assume has already been created. The code might look like
+# this:
+#
+# def create
+# @entry = Entry.new(params[:entry])
+# if @entry.save
+# # The entry was saved correctly, redirect to show
+# redirect_to action: 'show', id: @entry.id
+# else
+# # things didn't go so well, do something else
+# end
+# end
+#
+# In this case, after saving our new entry to the database, the user is
+# redirected to the `show` method, which is then executed. Note that this is an
+# external HTTP-level redirection which will cause the browser to make a second
+# request (a GET to the show action), and not some internal re-routing which
+# calls both "create" and then "show" within one request.
+#
+# Learn more about `redirect_to` and what options you have in
+# ActionController::Redirecting.
+#
+# ## Calling multiple redirects or renders
+#
+# An action may perform only a single render or a single redirect. Attempting to
+# do either again will result in a DoubleRenderError:
+#
+# def do_something
+# redirect_to action: "elsewhere"
+# render action: "overthere" # raises DoubleRenderError
+# end
+#
+# If you need to redirect on the condition of something, then be sure to add
+# "return" to halt execution.
+#
+# def do_something
+# if monkeys.nil?
+# redirect_to(action: "elsewhere")
+# return
+# end
+# render action: "overthere" # won't be called if monkeys is nil
+# end
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/action_controller/base.rb#207
+class ActionController::Base < ::ActionController::Metal
+ include ::ActionView::ViewPaths
+ include ::AbstractController::Rendering
+ include ::AbstractController::Translation
+ include ::AbstractController::AssetPaths
+ include ::AbstractController::Helpers
+ include ::ActionController::Helpers
+ include ::ActionDispatch::Routing::PolymorphicRoutes
+ include ::ActionDispatch::Routing::UrlFor
+ include ::AbstractController::UrlFor
+ include ::ActionController::UrlFor
+ include ::AbstractController::Logger
+ include ::ActiveSupport::Benchmarkable
+ include ::ActionController::Redirecting
+ include ::ActionView::Rendering
+ include ::ActionView::Layouts
+ include ::ActionController::Rendering
+ include ::ActionController::Renderers
+ include ::ActionController::Renderers::All
+ include ::ActionController::Head
+ include ::ActionController::ConditionalGet
+ include ::ActionController::EtagWithTemplateDigest
+ include ::ActionController::EtagWithFlash
+ include ::ActionController::Caching
+ include ::AbstractController::Caching::Fragments
+ include ::AbstractController::Caching::ConfigMethods
+ include ::AbstractController::Caching
+ include ::ActionController::MimeResponds
+ include ::ActionController::BasicImplicitRender
+ include ::ActionController::ImplicitRender
+ include ::ActionController::StrongParameters
+ include ::ActionController::ParameterEncoding
+ include ::ActionController::Cookies
+ include ::ActionController::Flash
+ include ::ActionController::FormBuilder
+ include ::ActiveSupport::Callbacks
+ include ::AbstractController::Callbacks
+ include ::ActionController::RequestForgeryProtection
+ include ::ActionController::ContentSecurityPolicy
+ include ::ActionController::PermissionsPolicy
+ include ::ActionController::RateLimiting
+ include ::ActionController::AllowBrowser
+ include ::ActionController::Streaming
+ include ::ActionController::DataStreaming
+ include ::ActionController::HttpAuthentication::Basic::ControllerMethods
+ include ::ActionController::HttpAuthentication::Digest::ControllerMethods
+ include ::ActionController::HttpAuthentication::Token::ControllerMethods
+ include ::ActionController::DefaultHeaders
+ include ::ActionController::Logging
+ include ::ActiveSupport::Rescuable
+ include ::ActionController::Rescue
+ include ::ActionController::Instrumentation
+ include ::ActionController::ParamsWrapper
+ extend ::ActionView::ViewPaths::ClassMethods
+ extend ::AbstractController::Helpers::Resolution
+ extend ::AbstractController::Helpers::ClassMethods
+ extend ::ActionController::Helpers::ClassMethods
+ extend ::AbstractController::UrlFor::ClassMethods
+ extend ::ActionView::Rendering::ClassMethods
+ extend ::ActionView::Layouts::ClassMethods
+ extend ::ActionController::Rendering::ClassMethods
+ extend ::ActionController::Renderers::ClassMethods
+ extend ::ActionController::ConditionalGet::ClassMethods
+ extend ::AbstractController::Caching::Fragments::ClassMethods
+ extend ::AbstractController::Caching::ClassMethods
+ extend ::AbstractController::Caching::ConfigMethods
+ extend ::ActionController::ParameterEncoding::ClassMethods
+ extend ::ActionController::Flash::ClassMethods
+ extend ::ActionController::FormBuilder::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::AbstractController::Callbacks::ClassMethods
+ extend ::ActionController::RequestForgeryProtection::ClassMethods
+ extend ::ActionController::ContentSecurityPolicy::ClassMethods
+ extend ::ActionController::PermissionsPolicy::ClassMethods
+ extend ::ActionController::RateLimiting::ClassMethods
+ extend ::ActionController::AllowBrowser::ClassMethods
+ extend ::ActionController::HttpAuthentication::Basic::ControllerMethods::ClassMethods
+ extend ::ActionController::DefaultHeaders::ClassMethods
+ extend ::ActionController::Logging::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionController::Instrumentation::ClassMethods
+ extend ::ActionController::ParamsWrapper::ClassMethods
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#69
+ def __callbacks; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#13
+ def _helper_methods; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#13
+ def _helper_methods=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#13
+ def _helper_methods?; end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#212
+ def _layout_conditions; end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#212
+ def _layout_conditions?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#923
+ def _process_action_callbacks; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#911
+ def _run_process_action_callbacks(&block); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies; end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies?; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#38
+ def alert; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def allow_forgery_protection; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def allow_forgery_protection=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def asset_host; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def asset_host=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def assets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def assets_dir=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def csrf_token_storage_strategy; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def csrf_token_storage_strategy=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_asset_host_protocol; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_asset_host_protocol=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_static_extension; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_static_extension=(value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options=(_arg0); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def enable_fragment_cache_logging=(value); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#31
+ def etag_with_template_digest; end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#31
+ def etag_with_template_digest=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#31
+ def etag_with_template_digest?; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers?; end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#12
+ def flash(*_arg0, **_arg1, &_arg2); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def forgery_protection_origin_check; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def forgery_protection_origin_check=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def forgery_protection_strategy; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def forgery_protection_strategy=(value); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys; end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys?; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#70
+ def helpers_path; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#70
+ def helpers_path=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#70
+ def helpers_path?; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#71
+ def include_all_helpers; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#71
+ def include_all_helpers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#71
+ def include_all_helpers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def javascripts_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def javascripts_dir=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def log_warning_on_csrf_failure; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def log_warning_on_csrf_failure=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def logger; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def logger=(value); end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#38
+ def notice; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def per_form_csrf_tokens; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def per_form_csrf_tokens=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def perform_caching; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def perform_caching=(value); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions; end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions=(val); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def relative_url_root; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def relative_url_root=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def request_forgery_protection_token; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def request_forgery_protection_token=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def stylesheets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def stylesheets_dir=(value); end
+
+ private
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ # source://actionpack//lib/action_controller/base.rb#324
+ def _protected_ivars; end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def __callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def __callbacks=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _default_form_builder; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _default_form_builder=(new_value); end
+
+ # source://actionpack//lib/action_controller/form_builder.rb#35
+ def _default_form_builder?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _flash_types; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _flash_types=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#10
+ def _flash_types?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _helper_methods; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _helper_methods=(new_value); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#13
+ def _helper_methods?; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#17
+ def _helpers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _layout; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _layout=(new_value); end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#211
+ def _layout?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _layout_conditions; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _layout_conditions=(new_value); end
+
+ # source://actionview/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/action_view/layouts.rb#212
+ def _layout_conditions?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#915
+ def _process_action_callbacks; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/callbacks.rb#919
+ def _process_action_callbacks=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _renderers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _renderers=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#33
+ def _renderers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _view_cache_dependencies; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _view_cache_dependencies=(new_value); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#44
+ def _view_cache_dependencies?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def _wrapper_options; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def _wrapper_options=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def allow_forgery_protection; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def allow_forgery_protection=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def asset_host; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def asset_host=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def assets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def assets_dir=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def csrf_token_storage_strategy; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def csrf_token_storage_strategy=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_asset_host_protocol; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_asset_host_protocol=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def default_static_extension; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def default_static_extension=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def default_url_options; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def default_url_options=(new_value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#100
+ def default_url_options?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def enable_fragment_cache_logging=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def etag_with_template_digest; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def etag_with_template_digest=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#31
+ def etag_with_template_digest?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def etaggers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def etaggers=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#15
+ def etaggers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def forgery_protection_origin_check; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def forgery_protection_origin_check=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def forgery_protection_strategy; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def forgery_protection_strategy=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def fragment_cache_keys; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def fragment_cache_keys=(new_value); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#26
+ def fragment_cache_keys?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def helpers_path; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def helpers_path=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#70
+ def helpers_path?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def include_all_helpers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def include_all_helpers=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#71
+ def include_all_helpers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def javascripts_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def javascripts_dir=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def log_warning_on_csrf_failure; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def log_warning_on_csrf_failure=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def logger; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def logger=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def per_form_csrf_tokens; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def per_form_csrf_tokens=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def perform_caching; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def perform_caching=(value); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions; end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#36
+ def raise_on_missing_callback_actions=(val); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#17
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def relative_url_root; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def relative_url_root=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def request_forgery_protection_token; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def request_forgery_protection_token=(value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def rescue_handlers; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def rescue_handlers=(new_value); end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/rescuable.rb#15
+ def rescue_handlers?; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#115
+ def stylesheets_dir; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/configurable.rb#116
+ def stylesheets_dir=(value); end
+
+ # Shortcut helper that returns all the modules included in
+ # ActionController::Base except the ones passed as arguments:
+ #
+ # class MyBaseController < ActionController::Metal
+ # ActionController::Base.without_modules(:ParamsWrapper, :Streaming).each do |left|
+ # include left
+ # end
+ # end
+ #
+ # This gives better control over what you want to exclude and makes it easier to
+ # create a bare controller class, instead of listing the modules required
+ # manually.
+ #
+ # source://actionpack//lib/action_controller/base.rb#222
+ def without_modules(*modules); end
+ end
+end
+
+# source://actionpack//lib/action_controller/base.rb#0
+module ActionController::Base::HelperMethods
+ include ::ActionText::ContentHelper
+ include ::ActionText::TagHelper
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#41
+ def alert(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#34
+ def combined_fragment_cache_key(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#13
+ def content_security_policy?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#14
+ def content_security_policy_nonce(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/cookies.rb#10
+ def cookies(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#102
+ def form_authenticity_token(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#41
+ def notice(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#103
+ def protect_against_forgery?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#45
+ def view_cache_dependencies(*_arg0, **_arg1, &_arg2); end
+end
+
+# source://actionpack//lib/action_controller/base.rb#230
+ActionController::Base::MODULES = T.let(T.unsafe(nil), Array)
+
+# Define some internal variables that should not be propagated to the view.
+#
+# source://actionpack//lib/action_controller/base.rb#318
+ActionController::Base::PROTECTED_IVARS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/basic_implicit_render.rb#6
+module ActionController::BasicImplicitRender
+ # source://actionpack//lib/action_controller/metal/basic_implicit_render.rb#13
+ def default_render; end
+
+ # source://actionpack//lib/action_controller/metal/basic_implicit_render.rb#7
+ def send_action(method, *args); end
+end
+
+# # Action Controller Caching
+#
+# Caching is a cheap way of speeding up slow applications by keeping the result
+# of calculations, renderings, and database calls around for subsequent
+# requests.
+#
+# You can read more about each approach by clicking the modules below.
+#
+# Note: To turn off all caching provided by Action Controller, set
+# config.action_controller.perform_caching = false
+#
+# ## Caching stores
+#
+# All the caching stores from ActiveSupport::Cache are available to be used as
+# backends for Action Controller caching.
+#
+# Configuration examples (FileStore is the default):
+#
+# config.action_controller.cache_store = :memory_store
+# config.action_controller.cache_store = :file_store, '/path/to/cache/directory'
+# config.action_controller.cache_store = :mem_cache_store, 'localhost'
+# config.action_controller.cache_store = :mem_cache_store, Memcached::Rails.new('localhost:11211')
+# config.action_controller.cache_store = MyOwnStore.new('parameter')
+#
+# source://actionpack//lib/action_controller/caching.rb#29
+module ActionController::Caching
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::AbstractController::Caching::Fragments
+ include ::AbstractController::Caching
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ConfigMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/caching.rb#45
+ def instrument_name; end
+
+ # source://actionpack//lib/action_controller/caching.rb#37
+ def instrument_payload(key); end
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/conditional_get.rb#9
+module ActionController::ConditionalGet
+ include ::ActionController::Head
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+
+ # Sets the `Cache-Control` header, overwriting existing directives. This method
+ # will also ensure an HTTP `Date` header for client compatibility.
+ #
+ # Defaults to issuing the `private` directive, so that intermediate caches must
+ # not cache the response.
+ #
+ # #### Options
+ #
+ # `:public`
+ # : If true, replaces the default `private` directive with the `public`
+ # directive.
+ #
+ # `:must_revalidate`
+ # : If true, adds the `must-revalidate` directive.
+ #
+ # `:stale_while_revalidate`
+ # : Sets the value of the `stale-while-revalidate` directive.
+ #
+ # `:stale_if_error`
+ # : Sets the value of the `stale-if-error` directive.
+ #
+ # `:immutable`
+ # : If true, adds the `immutable` directive.
+ #
+ #
+ # Any additional key-value pairs are concatenated as directives. For a list of
+ # supported `Cache-Control` directives, see the [article on
+ # MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control).
+ #
+ # #### Examples
+ #
+ # expires_in 10.minutes
+ # # => Cache-Control: max-age=600, private
+ #
+ # expires_in 10.minutes, public: true
+ # # => Cache-Control: max-age=600, public
+ #
+ # expires_in 10.minutes, public: true, must_revalidate: true
+ # # => Cache-Control: max-age=600, public, must-revalidate
+ #
+ # expires_in 1.hour, stale_while_revalidate: 60.seconds
+ # # => Cache-Control: max-age=3600, private, stale-while-revalidate=60
+ #
+ # expires_in 1.hour, stale_if_error: 5.minutes
+ # # => Cache-Control: max-age=3600, private, stale-if-error=300
+ #
+ # expires_in 1.hour, public: true, "s-maxage": 3.hours, "no-transform": true
+ # # => Cache-Control: max-age=3600, public, s-maxage=10800, no-transform=true
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#290
+ def expires_in(seconds, options = T.unsafe(nil)); end
+
+ # Sets an HTTP 1.1 `Cache-Control` header of `no-cache`. This means the resource
+ # will be marked as stale, so clients must always revalidate.
+ # Intermediate/browser caches may still store the asset.
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#309
+ def expires_now; end
+
+ # Sets the `etag`, `last_modified`, or both on the response, and renders a `304
+ # Not Modified` response if the request is already fresh.
+ #
+ # #### Options
+ #
+ # `:etag`
+ # : Sets a "weak" ETag validator on the response. See the `:weak_etag` option.
+ #
+ # `:weak_etag`
+ # : Sets a "weak" ETag validator on the response. Requests that specify an
+ # `If-None-Match` header may receive a `304 Not Modified` response if the
+ # ETag matches exactly.
+ #
+ # : A weak ETag indicates semantic equivalence, not byte-for-byte equality, so
+ # they're good for caching HTML pages in browser caches. They can't be used
+ # for responses that must be byte-identical, like serving `Range` requests
+ # within a PDF file.
+ #
+ # `:strong_etag`
+ # : Sets a "strong" ETag validator on the response. Requests that specify an
+ # `If-None-Match` header may receive a `304 Not Modified` response if the
+ # ETag matches exactly.
+ #
+ # : A strong ETag implies exact equality -- the response must match byte for
+ # byte. This is necessary for serving `Range` requests within a large video
+ # or PDF file, for example, or for compatibility with some CDNs that don't
+ # support weak ETags.
+ #
+ # `:last_modified`
+ # : Sets a "weak" last-update validator on the response. Subsequent requests
+ # that specify an `If-Modified-Since` header may receive a `304 Not
+ # Modified` response if `last_modified` <= `If-Modified-Since`.
+ #
+ # `:public`
+ # : By default the `Cache-Control` header is private. Set this option to
+ # `true` if you want your application to be cacheable by other devices, such
+ # as proxy caches.
+ #
+ # `:cache_control`
+ # : When given, will overwrite an existing `Cache-Control` header. For a list
+ # of `Cache-Control` directives, see the [article on
+ # MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control).
+ #
+ # `:template`
+ # : By default, the template digest for the current controller/action is
+ # included in ETags. If the action renders a different template, you can
+ # include its digest instead. If the action doesn't render a template at
+ # all, you can pass `template: false` to skip any attempt to check for a
+ # template digest.
+ #
+ #
+ # #### Examples
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ # fresh_when(etag: @article, last_modified: @article.updated_at, public: true)
+ # end
+ #
+ # This will send a `304 Not Modified` response if the request specifies a
+ # matching ETag and `If-Modified-Since` header. Otherwise, it will render the
+ # `show` template.
+ #
+ # You can also just pass a record:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ # fresh_when(@article)
+ # end
+ #
+ # `etag` will be set to the record, and `last_modified` will be set to the
+ # record's `updated_at`.
+ #
+ # You can also pass an object that responds to `maximum`, such as a collection
+ # of records:
+ #
+ # def index
+ # @articles = Article.all
+ # fresh_when(@articles)
+ # end
+ #
+ # In this case, `etag` will be set to the collection, and `last_modified` will
+ # be set to `maximum(:updated_at)` (the timestamp of the most recently updated
+ # record).
+ #
+ # When passing a record or a collection, you can still specify other options,
+ # such as `:public` and `:cache_control`:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ # fresh_when(@article, public: true, cache_control: { no_cache: true })
+ # end
+ #
+ # The above will set `Cache-Control: public, no-cache` in the response.
+ #
+ # When rendering a different template than the controller/action's default
+ # template, you can indicate which digest to include in the ETag:
+ #
+ # before_action { fresh_when @article, template: "widgets/show" }
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#137
+ def fresh_when(object = T.unsafe(nil), etag: T.unsafe(nil), weak_etag: T.unsafe(nil), strong_etag: T.unsafe(nil), last_modified: T.unsafe(nil), public: T.unsafe(nil), cache_control: T.unsafe(nil), template: T.unsafe(nil)); end
+
+ # Cache or yield the block. The cache is supposed to never expire.
+ #
+ # You can use this method when you have an HTTP response that never changes, and
+ # the browser and proxies should cache it indefinitely.
+ #
+ # * `public`: By default, HTTP responses are private, cached only on the
+ # user's web browser. To allow proxies to cache the response, set `true` to
+ # indicate that they can serve the cached response to all users.
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#321
+ def http_cache_forever(public: T.unsafe(nil)); end
+
+ # Sets an HTTP 1.1 `Cache-Control` header of `no-store`. This means the resource
+ # may not be stored in any cache.
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#331
+ def no_store; end
+
+ # Sets the `etag` and/or `last_modified` on the response and checks them against
+ # the request. If the request doesn't match the provided options, it is
+ # considered stale, and the response should be rendered from scratch. Otherwise,
+ # it is fresh, and a `304 Not Modified` is sent.
+ #
+ # #### Options
+ #
+ # See #fresh_when for supported options.
+ #
+ # #### Examples
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ #
+ # if stale?(etag: @article, last_modified: @article.updated_at)
+ # @statistics = @article.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # You can also just pass a record:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ #
+ # if stale?(@article)
+ # @statistics = @article.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # `etag` will be set to the record, and `last_modified` will be set to the
+ # record's `updated_at`.
+ #
+ # You can also pass an object that responds to `maximum`, such as a collection
+ # of records:
+ #
+ # def index
+ # @articles = Article.all
+ #
+ # if stale?(@articles)
+ # @statistics = @articles.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # In this case, `etag` will be set to the collection, and `last_modified` will
+ # be set to `maximum(:updated_at)` (the timestamp of the most recently updated
+ # record).
+ #
+ # When passing a record or a collection, you can still specify other options,
+ # such as `:public` and `:cache_control`:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ #
+ # if stale?(@article, public: true, cache_control: { no_cache: true })
+ # @statistics = @articles.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # The above will set `Cache-Control: public, no-cache` in the response.
+ #
+ # When rendering a different template than the controller/action's default
+ # template, you can indicate which digest to include in the ETag:
+ #
+ # def show
+ # super if stale?(@article, template: "widgets/show")
+ # end
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#236
+ def stale?(object = T.unsafe(nil), **freshness_kwargs); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#336
+ def combine_etags(validator, options); end
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/conditional_get.rb#18
+module ActionController::ConditionalGet::ClassMethods
+ # Allows you to consider additional controller-wide information when generating
+ # an ETag. For example, if you serve pages tailored depending on who's logged in
+ # at the moment, you may want to add the current user id to be part of the ETag
+ # to prevent unauthorized displaying of cached pages.
+ #
+ # class InvoicesController < ApplicationController
+ # etag { current_user&.id }
+ #
+ # def show
+ # # Etag will differ even for the same invoice when it's viewed by a different current_user
+ # @invoice = Invoice.find(params[:id])
+ # fresh_when etag: @invoice
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#33
+ def etag(&etagger); end
+end
+
+# source://actionpack//lib/action_controller/metal/content_security_policy.rb#6
+module ActionController::ContentSecurityPolicy
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::AbstractController::Helpers
+ include ::ActiveSupport::Callbacks
+ include ::AbstractController::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActionController::ContentSecurityPolicy::ClassMethods
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#74
+ def content_security_policy?; end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#78
+ def content_security_policy_nonce; end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#82
+ def current_content_security_policy; end
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/content_security_policy.rb#17
+module ActionController::ContentSecurityPolicy::ClassMethods
+ # Overrides parts of the globally configured `Content-Security-Policy` header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy do |policy|
+ # policy.base_uri "https://www.example.com"
+ # end
+ # end
+ #
+ # Options can be passed similar to `before_action`. For example, pass `only:
+ # :index` to override the header on the index action only:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy(only: :index) do |policy|
+ # policy.default_src :self, :https
+ # end
+ # end
+ #
+ # Pass `false` to remove the `Content-Security-Policy` header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy false, only: :index
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#40
+ def content_security_policy(enabled = T.unsafe(nil), **options, &block); end
+
+ # Overrides the globally configured `Content-Security-Policy-Report-Only`
+ # header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy_report_only only: :index
+ # end
+ #
+ # Pass `false` to remove the `Content-Security-Policy-Report-Only` header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy_report_only false, only: :index
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#66
+ def content_security_policy_report_only(report_only = T.unsafe(nil), **options); end
+end
+
+# source://actionpack//lib/action_controller/metal/cookies.rb#6
+module ActionController::Cookies
+ extend ::ActiveSupport::Concern
+
+ private
+
+ # The cookies for the current request. See ActionDispatch::Cookies for more
+ # information.
+ #
+ # source://actionpack//lib/action_controller/metal/cookies.rb#16
+ def cookies; end
+end
+
+# # Action Controller Data Streaming
+#
+# Methods for sending arbitrary data and for streaming files to the browser,
+# instead of rendering.
+#
+# source://actionpack//lib/action_controller/metal/data_streaming.rb#13
+module ActionController::DataStreaming
+ extend ::ActiveSupport::Concern
+ include ::ActionController::Rendering
+
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+
+ private
+
+ # Sends the given binary data to the browser. This method is similar to `render
+ # plain: data`, but also allows you to specify whether the browser should
+ # display the response as a file attachment (i.e. in a download dialog) or as
+ # inline data. You may also set the content type, the file name, and other
+ # things.
+ #
+ # Options:
+ # * `:filename` - suggests a filename for the browser to use.
+ # * `:type` - specifies an HTTP content type. Defaults to
+ # `application/octet-stream`. You can specify either a string or a symbol
+ # for a registered type with `Mime::Type.register`, for example `:json`. If
+ # omitted, type will be inferred from the file extension specified in
+ # `:filename`. If no content type is registered for the extension, the
+ # default type `application/octet-stream` will be used.
+ # * `:disposition` - specifies whether the file will be shown inline or
+ # downloaded. Valid values are `"inline"` and `"attachment"` (default).
+ # * `:status` - specifies the status code to send with the response. Defaults
+ # to 200.
+ #
+ #
+ # Generic data download:
+ #
+ # send_data buffer
+ #
+ # Download a dynamically-generated tarball:
+ #
+ # send_data generate_tgz('dir'), filename: 'dir.tgz'
+ #
+ # Display an image Active Record in the browser:
+ #
+ # send_data image.data, type: image.content_type, disposition: 'inline'
+ #
+ # See `send_file` for more information on HTTP `Content-*` headers and caching.
+ #
+ # source://actionpack//lib/action_controller/metal/data_streaming.rb#120
+ def send_data(data, options = T.unsafe(nil)); end
+
+ # Sends the file. This uses a server-appropriate method (such as `X-Sendfile`)
+ # via the `Rack::Sendfile` middleware. The header to use is set via
+ # `config.action_dispatch.x_sendfile_header`. Your server can also configure
+ # this for you by setting the `X-Sendfile-Type` header.
+ #
+ # Be careful to sanitize the path parameter if it is coming from a web page.
+ # `send_file(params[:path])` allows a malicious user to download any file on
+ # your server.
+ #
+ # Options:
+ # * `:filename` - suggests a filename for the browser to use. Defaults to
+ # `File.basename(path)`.
+ # * `:type` - specifies an HTTP content type. You can specify either a string
+ # or a symbol for a registered type with `Mime::Type.register`, for example
+ # `:json`. If omitted, the type will be inferred from the file extension
+ # specified in `:filename`. If no content type is registered for the
+ # extension, the default type `application/octet-stream` will be used.
+ # * `:disposition` - specifies whether the file will be shown inline or
+ # downloaded. Valid values are `"inline"` and `"attachment"` (default).
+ # * `:status` - specifies the status code to send with the response. Defaults
+ # to 200.
+ # * `:url_based_filename` - set to `true` if you want the browser to guess the
+ # filename from the URL, which is necessary for i18n filenames on certain
+ # browsers (setting `:filename` overrides this option).
+ #
+ #
+ # The default `Content-Type` and `Content-Disposition` headers are set to
+ # download arbitrary binary files in as many browsers as possible. IE versions
+ # 4, 5, 5.5, and 6 are all known to have a variety of quirks (especially when
+ # downloading over SSL).
+ #
+ # Simple download:
+ #
+ # send_file '/path/to.zip'
+ #
+ # Show a JPEG in the browser:
+ #
+ # send_file '/path/to.jpeg', type: 'image/jpeg', disposition: 'inline'
+ #
+ # Show a 404 page in the browser:
+ #
+ # send_file '/path/to/404.html', type: 'text/html; charset=utf-8', disposition: 'inline', status: 404
+ #
+ # You can use other `Content-*` HTTP headers to provide additional information
+ # to the client. See MDN for a [list of HTTP
+ # headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers).
+ #
+ # Also be aware that the document may be cached by proxies and browsers. The
+ # `Pragma` and `Cache-Control` headers declare how the file may be cached by
+ # intermediaries. They default to require clients to validate with the server
+ # before releasing cached responses. See https://www.mnot.net/cache_docs/ for an
+ # overview of web caching and [RFC
+ # 9111](https://www.rfc-editor.org/rfc/rfc9111.html#name-cache-control) for the
+ # `Cache-Control` header spec.
+ #
+ # @raise [MissingFile]
+ #
+ # source://actionpack//lib/action_controller/metal/data_streaming.rb#76
+ def send_file(path, options = T.unsafe(nil)); end
+
+ # @raise [ArgumentError]
+ #
+ # source://actionpack//lib/action_controller/metal/data_streaming.rb#125
+ def send_file_headers!(options); end
+end
+
+# source://actionpack//lib/action_controller/metal/data_streaming.rb#19
+ActionController::DataStreaming::DEFAULT_SEND_FILE_DISPOSITION = T.let(T.unsafe(nil), String)
+
+# source://actionpack//lib/action_controller/metal/data_streaming.rb#18
+ActionController::DataStreaming::DEFAULT_SEND_FILE_TYPE = T.let(T.unsafe(nil), String)
+
+# # Action Controller Default Headers
+#
+# Allows configuring default headers that will be automatically merged into each
+# response.
+#
+# source://actionpack//lib/action_controller/metal/default_headers.rb#10
+module ActionController::DefaultHeaders
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::DefaultHeaders::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/default_headers.rb#13
+module ActionController::DefaultHeaders::ClassMethods
+ # source://actionpack//lib/action_controller/metal/default_headers.rb#14
+ def make_response!(request); end
+end
+
+# # Action Controller Etag With Flash
+#
+# When you're using the flash, it's generally used as a conditional on the view.
+# This means the content of the view depends on the flash. Which in turn means
+# that the ETag for a response should be computed with the content of the flash
+# in mind. This does that by including the content of the flash as a component
+# in the ETag that's generated for a response.
+#
+# source://actionpack//lib/action_controller/metal/etag_with_flash.rb#13
+module ActionController::EtagWithFlash
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionController::ConditionalGet
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
+
+# # Action Controller Etag With Template Digest
+#
+# When our views change, they should bubble up into HTTP cache freshness and
+# bust browser caches. So the template digest for the current action is
+# automatically included in the ETag.
+#
+# Enabled by default for apps that use Action View. Disable by setting
+#
+# config.action_controller.etag_with_template_digest = false
+#
+# Override the template to digest by passing `:template` to `fresh_when` and
+# `stale?` calls. For example:
+#
+# # We're going to render widgets/show, not posts/show
+# fresh_when @post, template: 'widgets/show'
+#
+# # We're not going to render a template, so omit it from the ETag.
+# fresh_when @post, template: false
+#
+# source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#25
+module ActionController::EtagWithTemplateDigest
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionController::ConditionalGet
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#39
+ def determine_template_etag(options); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#55
+ def lookup_and_digest_template(template); end
+
+ # Pick the template digest to include in the ETag. If the `:template` option is
+ # present, use the named template. If `:template` is `nil` or absent, use the
+ # default controller/action template. If `:template` is false, omit the template
+ # digest from the ETag.
+ #
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#49
+ def pick_template_for_etag(options); end
+
+ module GeneratedClassMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
+
+# Raised from `expect!` when an expected parameter is missing or is of an
+# incompatible type.
+#
+# params = ActionController::Parameters.new(a: {})
+# params.expect!(:a)
+# # => ActionController::ExpectedParameterMissing: param is missing or the value is empty or invalid: a
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#50
+class ActionController::ExpectedParameterMissing < ::ActionController::ParameterMissing; end
+
+# source://actionpack//lib/action_controller/metal/flash.rb#6
+module ActionController::Flash
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::Flash::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#53
+ def redirect_to(options = T.unsafe(nil), response_options_and_flash = T.unsafe(nil)); end
+
+ module GeneratedClassMethods
+ def _flash_types; end
+ def _flash_types=(value); end
+ def _flash_types?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
+
+# source://actionpack//lib/action_controller/metal/flash.rb#16
+module ActionController::Flash::ClassMethods
+ # source://actionpack//lib/action_controller/metal/flash.rb#47
+ def action_methods; end
+
+ # Creates new flash types. You can pass as many types as you want to create
+ # flash types other than the default `alert` and `notice` in your controllers
+ # and views. For instance:
+ #
+ # # in application_controller.rb
+ # class ApplicationController < ActionController::Base
+ # add_flash_types :warning
+ # end
+ #
+ # # in your controller
+ # redirect_to user_path(@user), warning: "Incomplete profile"
+ #
+ # # in your view
+ # <%= warning %>
+ #
+ # This method will automatically define a new method for each of the given
+ # names, and it will be available in your views.
+ #
+ # source://actionpack//lib/action_controller/metal/flash.rb#34
+ def add_flash_types(*types); end
+end
+
+# # Action Controller Form Builder
+#
+# Override the default form builder for all views rendered by this controller
+# and any of its descendants. Accepts a subclass of
+# ActionView::Helpers::FormBuilder.
+#
+# For example, given a form builder:
+#
+# class AdminFormBuilder < ActionView::Helpers::FormBuilder
+# def special_field(name)
+# end
+# end
+#
+# The controller specifies a form builder as its default:
+#
+# class AdminAreaController < ApplicationController
+# default_form_builder AdminFormBuilder
+# end
+#
+# Then in the view any form using `form_for` will be an instance of the
+# specified form builder:
+#
+# <%= form_for(@instance) do |builder| %>
+# <%= builder.special_field(:name) %>
+# <% end %>
+#
+# source://actionpack//lib/action_controller/form_builder.rb#31
+module ActionController::FormBuilder
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::FormBuilder::ClassMethods
+
+ # Default form builder for the controller
+ #
+ # source://actionpack//lib/action_controller/form_builder.rb#51
+ def default_form_builder; end
+
+ module GeneratedClassMethods
+ def _default_form_builder; end
+ def _default_form_builder=(value); end
+ def _default_form_builder?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
+
+# source://actionpack//lib/action_controller/form_builder.rb#38
+module ActionController::FormBuilder::ClassMethods
+ # Set the form builder to be used as the default for all forms in the views
+ # rendered by this controller and its subclasses.
+ #
+ # #### Parameters
+ # * `builder` - Default form builder, an instance of
+ # ActionView::Helpers::FormBuilder
+ #
+ # source://actionpack//lib/action_controller/form_builder.rb#45
+ def default_form_builder(builder); end
+end
+
+# source://actionpack//lib/action_controller/metal/head.rb#6
+module ActionController::Head
+ # Returns a response that has no content (merely headers). The options argument
+ # is interpreted to be a hash of header names and values. This allows you to
+ # easily return a response that consists only of significant headers:
+ #
+ # head :created, location: person_path(@person)
+ #
+ # head :created, location: @person
+ #
+ # It can also be used to return exceptional conditions:
+ #
+ # return head(:method_not_allowed) unless request.post?
+ # return head(:bad_request) unless valid_request?
+ # render
+ #
+ # See `Rack::Utils::SYMBOL_TO_STATUS_CODE` for a full list of valid `status`
+ # symbols.
+ #
+ # source://actionpack//lib/action_controller/metal/head.rb#23
+ def head(status, options = T.unsafe(nil)); end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/head.rb#56
+ def include_content?(status); end
+end
+
+# # Action Controller Helpers
+#
+# The Rails framework provides a large number of helpers for working with
+# assets, dates, forms, numbers and model objects, to name a few. These helpers
+# are available to all templates by default.
+#
+# In addition to using the standard template helpers provided, creating custom
+# helpers to extract complicated logic or reusable functionality is strongly
+# encouraged. By default, each controller will include all helpers. These
+# helpers are only accessible on the controller through `#helpers`
+#
+# In previous versions of Rails the controller will include a helper which
+# matches the name of the controller, e.g., `MyController` will automatically
+# include `MyHelper`. You can revert to the old behavior with the following:
+#
+# # config/application.rb
+# class Application < Rails::Application
+# config.action_controller.include_all_helpers = false
+# end
+#
+# Additional helpers can be specified using the `helper` class method in
+# ActionController::Base or any controller which inherits from it.
+#
+# The `to_s` method from the Time class can be wrapped in a helper method to
+# display a custom message if a Time object is blank:
+#
+# module FormattedTimeHelper
+# def format_time(time, format=:long, blank_message=" ")
+# time.blank? ? blank_message : time.to_fs(format)
+# end
+# end
+#
+# FormattedTimeHelper can now be included in a controller, using the `helper`
+# class method:
+#
+# class EventsController < ActionController::Base
+# helper FormattedTimeHelper
+# def index
+# @events = Event.all
+# end
+# end
+#
+# Then, in any view rendered by `EventsController`, the `format_time` method can
+# be called:
+#
+# <% @events.each do |event| -%>
+#
+# <% end -%>
+#
+# Finally, assuming we have two event instances, one which has a time and one
+# which does not, the output might look like this:
+#
+# 23 Aug 11:30 | Carolina Railhawks Soccer Match
+# N/A | Carolina Railhawks Training Workshop
+#
+# source://actionpack//lib/action_controller/metal/helpers.rb#63
+module ActionController::Helpers
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::AbstractController::Helpers
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActionController::Helpers::ClassMethods
+
+ # Provides a proxy to access helper methods from outside the view.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#125
+ def helpers; end
+
+ class << self
+ # Returns the value of attribute helpers_path.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#66
+ def helpers_path; end
+
+ # Sets the attribute helpers_path
+ #
+ # @param value the value to set the attribute helpers_path to.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#66
+ def helpers_path=(_arg0); end
+ end
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/helpers.rb#74
+module ActionController::Helpers::ClassMethods
+ # Declares helper accessors for controller attributes. For example, the
+ # following adds new `name` and `name=` instance methods to a controller and
+ # makes them available to the view:
+ # attr_accessor :name
+ # helper_attr :name
+ #
+ # #### Parameters
+ # * `attrs` - Names of attributes to be converted into helpers.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#84
+ def helper_attr(*attrs); end
+
+ # Provides a proxy to access helper methods from outside the view.
+ #
+ # Note that the proxy is rendered under a different view context. This may cause
+ # incorrect behavior with capture methods. Consider using
+ # [helper](rdoc-ref:AbstractController::Helpers::ClassMethods#helper) instead
+ # when using `capture`.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#94
+ def helpers; end
+
+ # Override modules_for_helpers to accept `:all` as argument, which loads all
+ # helpers in helpers_path.
+ #
+ # #### Parameters
+ # * `args` - A list of helpers
+ #
+ #
+ # #### Returns
+ # * `array` - A normalized list of modules for the list of helpers provided.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#112
+ def modules_for_helpers(args); end
+
+ private
+
+ # Extract helper names from files in `app/helpers/***/**_helper.rb`
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#119
+ def all_application_helpers; end
+end
+
+# HTTP Basic, Digest, and Token authentication.
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#11
+module ActionController::HttpAuthentication; end
+
+# # HTTP Basic authentication
+#
+# ### Simple Basic example
+#
+# class PostsController < ApplicationController
+# http_basic_authenticate_with name: "dhh", password: "secret", except: :index
+#
+# def index
+# render plain: "Everyone can see me!"
+# end
+#
+# def edit
+# render plain: "I'm only accessible if you know the password"
+# end
+# end
+#
+# ### Advanced Basic example
+#
+# Here is a more advanced Basic example where only Atom feeds and the XML API
+# are protected by HTTP authentication. The regular HTML interface is protected
+# by a session approach:
+#
+# class ApplicationController < ActionController::Base
+# before_action :set_account, :authenticate
+#
+# private
+# def set_account
+# @account = Account.find_by(url_name: request.subdomains.first)
+# end
+#
+# def authenticate
+# case request.format
+# when Mime[:xml], Mime[:atom]
+# if user = authenticate_with_http_basic { |u, p| @account.users.authenticate(u, p) }
+# @current_user = user
+# else
+# request_http_basic_authentication
+# end
+# else
+# if session_authenticated?
+# @current_user = @account.users.find(session[:authenticated][:user_id])
+# else
+# redirect_to(login_url) and return false
+# end
+# end
+# end
+# end
+#
+# In your integration tests, you can do something like this:
+#
+# def test_access_granted_from_xml
+# authorization = ActionController::HttpAuthentication::Basic.encode_credentials(users(:dhh).name, users(:dhh).password)
+#
+# get "/notes/1.xml", headers: { 'HTTP_AUTHORIZATION' => authorization }
+#
+# assert_equal 200, status
+# end
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#69
+module ActionController::HttpAuthentication::Basic
+ extend ::ActionController::HttpAuthentication::Basic
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#130
+ def auth_param(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#126
+ def auth_scheme(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#108
+ def authenticate(request, &login_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#138
+ def authentication_request(controller, realm, message); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#122
+ def decode_credentials(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#134
+ def encode_credentials(user_name, password); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#114
+ def has_basic_credentials?(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#118
+ def user_name_and_password(request); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#72
+module ActionController::HttpAuthentication::Basic::ControllerMethods
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::HttpAuthentication::Basic::ControllerMethods::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#95
+ def authenticate_or_request_with_http_basic(realm = T.unsafe(nil), message = T.unsafe(nil), &login_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#99
+ def authenticate_with_http_basic(&login_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#86
+ def http_basic_authenticate_or_request_with(name:, password:, realm: T.unsafe(nil), message: T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#103
+ def request_http_basic_authentication(realm = T.unsafe(nil), message = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#75
+module ActionController::HttpAuthentication::Basic::ControllerMethods::ClassMethods
+ # Enables HTTP Basic authentication.
+ #
+ # See ActionController::HttpAuthentication::Basic for example usage.
+ #
+ # @raise [ArgumentError]
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#79
+ def http_basic_authenticate_with(name:, password:, realm: T.unsafe(nil), **options); end
+end
+
+# # HTTP Digest authentication
+#
+# ### Simple Digest example
+#
+# require "openssl"
+# class PostsController < ApplicationController
+# REALM = "SuperSecret"
+# USERS = {"dhh" => "secret", #plain text password
+# "dap" => OpenSSL::Digest::MD5.hexdigest(["dap",REALM,"secret"].join(":"))} #ha1 digest password
+#
+# before_action :authenticate, except: [:index]
+#
+# def index
+# render plain: "Everyone can see me!"
+# end
+#
+# def edit
+# render plain: "I'm only accessible if you know the password"
+# end
+#
+# private
+# def authenticate
+# authenticate_or_request_with_http_digest(REALM) do |username|
+# USERS[username]
+# end
+# end
+# end
+#
+# ### Notes
+#
+# The `authenticate_or_request_with_http_digest` block must return the user's
+# password or the ha1 digest hash so the framework can appropriately hash to
+# check the user's credentials. Returning `nil` will cause authentication to
+# fail.
+#
+# Storing the ha1 hash: MD5(username:realm:password), is better than storing a
+# plain password. If the password file or database is compromised, the attacker
+# would be able to use the ha1 hash to authenticate as the user at this `realm`,
+# but would not have the user's password to try using at other sites.
+#
+# In rare instances, web servers or front proxies strip authorization headers
+# before they reach your application. You can debug this situation by logging
+# all environment variables, and check for HTTP_AUTHORIZATION, amongst others.
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#189
+module ActionController::HttpAuthentication::Digest
+ extend ::ActionController::HttpAuthentication::Digest
+
+ # Returns true on a valid response, false otherwise.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#215
+ def authenticate(request, realm, &password_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#274
+ def authentication_header(controller, realm); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#281
+ def authentication_request(controller, realm, message = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#267
+ def decode_credentials(header); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#263
+ def decode_credentials_header(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#258
+ def encode_credentials(http_method, credentials, password, password_is_ha1); end
+
+ # Returns the expected response for a request of `http_method` to `uri` with the
+ # decoded `credentials` and the expected `password` Optional parameter
+ # `password_is_ha1` is set to `true` by default, since best practice is to store
+ # ha1 digest instead of a plain-text password.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#248
+ def expected_response(http_method, uri, credentials, password, password_is_ha1 = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#254
+ def ha1(credentials, password); end
+
+ # Uses an MD5 digest based on time to generate a value to be used only once.
+ #
+ # A server-specified data string which should be uniquely generated each time a
+ # 401 response is made. It is recommended that this string be base64 or
+ # hexadecimal data. Specifically, since the string is passed in the header lines
+ # as a quoted string, the double-quote character is not allowed.
+ #
+ # The contents of the nonce are implementation dependent. The quality of the
+ # implementation depends on a good choice. A nonce might, for example, be
+ # constructed as the base 64 encoding of
+ #
+ # time-stamp H(time-stamp ":" ETag ":" private-key)
+ #
+ # where time-stamp is a server-generated time or other non-repeating value, ETag
+ # is the value of the HTTP ETag header associated with the requested entity, and
+ # private-key is data known only to the server. With a nonce of this form a
+ # server would recalculate the hash portion after receiving the client
+ # authentication header and reject the request if it did not match the nonce
+ # from that header or if the time-stamp value is not recent enough. In this way
+ # the server can limit the time of the nonce's validity. The inclusion of the
+ # ETag prevents a replay request for an updated version of the resource. (Note:
+ # including the IP address of the client in the nonce would appear to offer the
+ # server the ability to limit the reuse of the nonce to the same client that
+ # originally got it. However, that would break proxy farms, where requests from
+ # a single user often go through different proxies in the farm. Also, IP address
+ # spoofing is not that hard.)
+ #
+ # An implementation might choose not to accept a previously used nonce or a
+ # previously used digest, in order to protect against a replay attack. Or, an
+ # implementation might choose to use one-time nonces or digests for POST, PUT,
+ # or PATCH requests, and a time-stamp for GET requests. For more details on the
+ # issues involved see Section 4 of this document.
+ #
+ # The nonce is opaque to the client. Composed of Time, and hash of Time with
+ # secret key from the Rails session secret generated upon creation of project.
+ # Ensures the time cannot be modified by client.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#330
+ def nonce(secret_key, time = T.unsafe(nil)); end
+
+ # Opaque based on digest of secret key
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#348
+ def opaque(secret_key); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#288
+ def secret_token(request); end
+
+ # Returns false unless the request credentials response value matches the
+ # expected value. First try the password as a ha1 digest password. If this
+ # fails, then try it as a plain text password.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#222
+ def validate_digest_response(request, realm, &password_procedure); end
+
+ # Might want a shorter timeout depending on whether the request is a PATCH, PUT,
+ # or POST, and if the client is a browser or web service. Can be much shorter if
+ # the Stale directive is implemented. This would allow a user to use new nonce
+ # without prompting the user again for their username and password.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#341
+ def validate_nonce(secret_key, request, value, seconds_to_timeout = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#192
+module ActionController::HttpAuthentication::Digest::ControllerMethods
+ # Authenticate using an HTTP Digest, or otherwise render an HTTP header
+ # requesting the client to send a Digest.
+ #
+ # See ActionController::HttpAuthentication::Digest for example usage.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#197
+ def authenticate_or_request_with_http_digest(realm = T.unsafe(nil), message = T.unsafe(nil), &password_procedure); end
+
+ # Authenticate using an HTTP Digest. Returns true if authentication is
+ # successful, false otherwise.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#203
+ def authenticate_with_http_digest(realm = T.unsafe(nil), &password_procedure); end
+
+ # Render an HTTP header requesting the client to send a Digest for
+ # authentication.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#209
+ def request_http_digest_authentication(realm = T.unsafe(nil), message = T.unsafe(nil)); end
+end
+
+# # HTTP Token authentication
+#
+# ### Simple Token example
+#
+# class PostsController < ApplicationController
+# TOKEN = "secret"
+#
+# before_action :authenticate, except: [ :index ]
+#
+# def index
+# render plain: "Everyone can see me!"
+# end
+#
+# def edit
+# render plain: "I'm only accessible if you know the password"
+# end
+#
+# private
+# def authenticate
+# authenticate_or_request_with_http_token do |token, options|
+# # Compare the tokens in a time-constant manner, to mitigate
+# # timing attacks.
+# ActiveSupport::SecurityUtils.secure_compare(token, TOKEN)
+# end
+# end
+# end
+#
+# Here is a more advanced Token example where only Atom feeds and the XML API
+# are protected by HTTP token authentication. The regular HTML interface is
+# protected by a session approach:
+#
+# class ApplicationController < ActionController::Base
+# before_action :set_account, :authenticate
+#
+# private
+# def set_account
+# @account = Account.find_by(url_name: request.subdomains.first)
+# end
+#
+# def authenticate
+# case request.format
+# when Mime[:xml], Mime[:atom]
+# if user = authenticate_with_http_token { |t, o| @account.users.authenticate(t, o) }
+# @current_user = user
+# else
+# request_http_token_authentication
+# end
+# else
+# if session_authenticated?
+# @current_user = @account.users.find(session[:authenticated][:user_id])
+# else
+# redirect_to(login_url) and return false
+# end
+# end
+# end
+# end
+#
+# In your integration tests, you can do something like this:
+#
+# def test_access_granted_from_xml
+# authorization = ActionController::HttpAuthentication::Token.encode_credentials(users(:dhh).token)
+#
+# get "/notes/1.xml", headers: { 'HTTP_AUTHORIZATION' => authorization }
+#
+# assert_equal 200, status
+# end
+#
+# On shared hosts, Apache sometimes doesn't pass authentication headers to FCGI
+# instances. If your environment matches this description and you cannot
+# authenticate, try this rule in your Apache setup:
+#
+# RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#425
+module ActionController::HttpAuthentication::Token
+ extend ::ActionController::HttpAuthentication::Token
+
+ # If token Authorization header is present, call the login procedure with the
+ # present token and options.
+ #
+ # Returns the return value of `login_procedure` if a token is found. Returns
+ # `nil` if no token is found.
+ #
+ # #### Parameters
+ #
+ # * `controller` - ActionController::Base instance for the current request.
+ # * `login_procedure` - Proc to call if a token is present. The Proc should
+ # take two arguments:
+ #
+ # authenticate(controller) { |token, options| ... }
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#472
+ def authenticate(controller, &login_procedure); end
+
+ # Sets a WWW-Authenticate header to let the client know a token is desired.
+ #
+ # Returns nothing.
+ #
+ # #### Parameters
+ #
+ # * `controller` - ActionController::Base instance for the outgoing response.
+ # * `realm` - String realm to use in the header.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#558
+ def authentication_request(controller, realm, message = T.unsafe(nil)); end
+
+ # Encodes the given token and options into an Authorization header value.
+ #
+ # Returns String.
+ #
+ # #### Parameters
+ #
+ # * `token` - String token.
+ # * `options` - Optional Hash of the options.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#542
+ def encode_credentials(token, options = T.unsafe(nil)); end
+
+ # Takes `raw_params` and turns it into an array of parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#507
+ def params_array_from(raw_params); end
+
+ # This method takes an authorization body and splits up the key-value pairs by
+ # the standardized `:`, `;`, or `\t` delimiters defined in
+ # `AUTHN_PAIR_DELIMITERS`.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#522
+ def raw_params(auth); end
+
+ # This removes the `"` characters wrapping the value.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#512
+ def rewrite_param_values(array_params); end
+
+ # Parses the token and options out of the token Authorization header. The value
+ # for the Authorization header is expected to have the prefix `"Token"` or
+ # `"Bearer"`. If the header looks like this:
+ #
+ # Authorization: Token token="abc", nonce="def"
+ #
+ # Then the returned token is `"abc"`, and the options are `{nonce: "def"}`.
+ #
+ # Returns an `Array` of `[String, Hash]` if a token is present. Returns `nil` if
+ # no token is found.
+ #
+ # #### Parameters
+ #
+ # * `request` - ActionDispatch::Request instance with the current headers.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#494
+ def token_and_options(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#502
+ def token_params_from(auth); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#428
+ActionController::HttpAuthentication::Token::AUTHN_PAIR_DELIMITERS = T.let(T.unsafe(nil), Regexp)
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#431
+module ActionController::HttpAuthentication::Token::ControllerMethods
+ # Authenticate using an HTTP Bearer token, or otherwise render an HTTP header
+ # requesting the client to send a Bearer token. For the authentication to be
+ # considered successful, `login_procedure` must not return a false value.
+ # Typically, the authenticated user is returned.
+ #
+ # See ActionController::HttpAuthentication::Token for example usage.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#438
+ def authenticate_or_request_with_http_token(realm = T.unsafe(nil), message = T.unsafe(nil), &login_procedure); end
+
+ # Authenticate using an HTTP Bearer token. Returns the return value of
+ # `login_procedure` if a token is found. Returns `nil` if no token is found.
+ #
+ # See ActionController::HttpAuthentication::Token for example usage.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#446
+ def authenticate_with_http_token(&login_procedure); end
+
+ # Render an HTTP header requesting the client to send a Bearer token for
+ # authentication.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#452
+ def request_http_token_authentication(realm = T.unsafe(nil), message = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#426
+ActionController::HttpAuthentication::Token::TOKEN_KEY = T.let(T.unsafe(nil), String)
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#427
+ActionController::HttpAuthentication::Token::TOKEN_REGEX = T.let(T.unsafe(nil), Regexp)
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#516
+ActionController::HttpAuthentication::Token::WHITESPACED_AUTHN_PAIR_DELIMITERS = T.let(T.unsafe(nil), Regexp)
+
+# # Action Controller Implicit Render
+#
+# Handles implicit rendering for a controller action that does not explicitly
+# respond with `render`, `respond_to`, `redirect`, or `head`.
+#
+# For API controllers, the implicit response is always `204 No Content`.
+#
+# For all other controllers, we use these heuristics to decide whether to render
+# a template, raise an error for a missing template, or respond with `204 No
+# Content`:
+#
+# First, if we DO find a template, it's rendered. Template lookup accounts for
+# the action name, locales, format, variant, template handlers, and more (see
+# `render` for details).
+#
+# Second, if we DON'T find a template but the controller action does have
+# templates for other formats, variants, etc., then we trust that you meant to
+# provide a template for this response, too, and we raise
+# ActionController::UnknownFormat with an explanation.
+#
+# Third, if we DON'T find a template AND the request is a page load in a web
+# browser (technically, a non-XHR GET request for an HTML response) where you
+# reasonably expect to have rendered a template, then we raise
+# ActionController::MissingExactTemplate with an explanation.
+#
+# Finally, if we DON'T find a template AND the request isn't a browser page
+# load, then we implicitly respond with `204 No Content`.
+#
+# source://actionpack//lib/action_controller/metal/implicit_render.rb#33
+module ActionController::ImplicitRender
+ include ::ActionController::BasicImplicitRender
+
+ # source://actionpack//lib/action_controller/metal/implicit_render.rb#37
+ def default_render; end
+
+ # source://actionpack//lib/action_controller/metal/implicit_render.rb#56
+ def method_for_action(action_name); end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/implicit_render.rb#63
+ def interactive_browser_request?; end
+end
+
+# # Action Controller Instrumentation
+#
+# Adds instrumentation to several ends in ActionController::Base. It also
+# provides some hooks related with process_action. This allows an ORM like
+# Active Record and/or DataMapper to plug in ActionController and show related
+# information.
+#
+# Check ActiveRecord::Railties::ControllerRuntime for an example.
+#
+# source://actionpack//lib/action_controller/metal/instrumentation.rb#16
+module ActionController::Instrumentation
+ extend ::ActiveSupport::Concern
+ include ::ActiveSupport::Benchmarkable
+ include ::AbstractController::Logger
+
+ mixes_in_class_methods ::ActionController::Instrumentation::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#23
+ def initialize(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#49
+ def redirect_to(*_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#28
+ def render(*_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#43
+ def send_data(data, options = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#36
+ def send_file(path, options = T.unsafe(nil)); end
+
+ def view_runtime; end
+ def view_runtime=(_arg0); end
+
+ private
+
+ # Every time after an action is processed, this method is invoked with the
+ # payload, so you can add more information.
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#105
+ def append_info_to_payload(payload); end
+
+ # A hook which allows you to clean up any time, wrongly taken into account in
+ # views, like database querying time.
+ #
+ # def cleanup_view_runtime
+ # super - time_taken_in_something_expensive
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#99
+ def cleanup_view_runtime; end
+
+ # A hook invoked every time a before callback is halted.
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#89
+ def halted_callback_hook(filter, _); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#59
+ def process_action(*_arg0); end
+end
+
+# source://actionpack//lib/action_controller/metal/instrumentation.rb#109
+module ActionController::Instrumentation::ClassMethods
+ # A hook which allows other frameworks to log what happened during controller
+ # process action. This method should return an array with the messages to be
+ # added.
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#113
+ def log_process_action(payload); end
+end
+
+# source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#10
+class ActionController::InvalidAuthenticityToken < ::ActionController::ActionControllerError; end
+
+# source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#13
+class ActionController::InvalidCrossOriginRequest < ::ActionController::ActionControllerError; end
+
+# Raised when initializing Parameters with keys that aren't strings or symbols.
+#
+# ActionController::Parameters.new(123 => 456)
+# # => ActionController::InvalidParameterKey: all keys must be Strings or Symbols, got: Integer
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#85
+class ActionController::InvalidParameterKey < ::ArgumentError; end
+
+# # Action Controller Live
+#
+# Mix this module into your controller, and all actions in that controller will
+# be able to stream data to the client as it's written.
+#
+# class MyController < ActionController::Base
+# include ActionController::Live
+#
+# def stream
+# response.headers['Content-Type'] = 'text/event-stream'
+# 100.times {
+# response.stream.write "hello world\n"
+# sleep 1
+# }
+# ensure
+# response.stream.close
+# end
+# end
+#
+# There are a few caveats with this module. You **cannot** write headers after
+# the response has been committed (Response#committed? will return truthy).
+# Calling `write` or `close` on the response stream will cause the response
+# object to be committed. Make sure all headers are set before calling write or
+# close on your stream.
+#
+# You **must** call close on your stream when you're finished, otherwise the
+# socket may be left open forever.
+#
+# The final caveat is that your actions are executed in a separate thread than
+# the main thread. Make sure your actions are thread safe, and this shouldn't be
+# a problem (don't share state across threads, etc).
+#
+# Note that Rails includes `Rack::ETag` by default, which will buffer your
+# response. As a result, streaming responses may not work properly with Rack
+# 2.2.x, and you may need to implement workarounds in your application. You can
+# either set the `ETag` or `Last-Modified` response headers or remove
+# `Rack::ETag` from the middleware stack to address this issue.
+#
+# Here's an example of how you can set the `Last-Modified` header if your Rack
+# version is 2.2.x:
+#
+# def stream
+# response.headers["Content-Type"] = "text/event-stream"
+# response.headers["Last-Modified"] = Time.now.httpdate # Add this line if your Rack version is 2.2.x
+# ...
+# end
+#
+# source://actionpack//lib/action_controller/metal/live.rb#56
+module ActionController::Live
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::Live::ClassMethods
+
+ # source://actionpack//lib/action_controller/test_case.rb#28
+ def new_controller_thread; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#276
+ def process(name); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#326
+ def response_body=(body); end
+
+ # Sends a stream to the browser, which is helpful when you're generating exports
+ # or other running data where you don't want the entire file buffered in memory
+ # first. Similar to send_data, but where the data is generated live.
+ #
+ # Options:
+ # * `:filename` - suggests a filename for the browser to use.
+ # * `:type` - specifies an HTTP content type. You can specify either a string
+ # or a symbol for a registered type with `Mime::Type.register`, for example
+ # :json. If omitted, type will be inferred from the file extension specified
+ # in `:filename`. If no content type is registered for the extension, the
+ # default type 'application/octet-stream' will be used.
+ # * `:disposition` - specifies whether the file will be shown inline or
+ # downloaded. Valid values are 'inline' and 'attachment' (default).
+ #
+ #
+ # Example of generating a csv export:
+ #
+ # send_stream(filename: "subscribers.csv") do |stream|
+ # stream.write "email_address,updated_at\n"
+ #
+ # @subscribers.find_each do |subscriber|
+ # stream.write "#{subscriber.email_address},#{subscriber.updated_at}\n"
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#355
+ def send_stream(filename:, disposition: T.unsafe(nil), type: T.unsafe(nil)); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#389
+ def log_error(exception); end
+
+ # Spawn a new thread to serve up the controller in. This is to get around the
+ # fact that Rack isn't based around IOs and we need to use a thread to stream
+ # data from the response bodies. Nobody should call this method except in Rails
+ # internals. Seriously!
+ # Disable controller / rendering threads in tests. User tests can access the
+ # database on the main thread, so they could open a txn, then the controller
+ # thread will open a new connection and try to access data that's only visible
+ # to the main thread's txn. This is the problem in #23483.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#377
+ def original_new_controller_thread; end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/live.rb#385
+ def live_thread_pool_executor; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#151
+class ActionController::Live::Buffer < ::ActionDispatch::Response::Buffer
+ include ::MonitorMixin
+
+ # @return [Buffer] a new instance of Buffer
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#166
+ def initialize(response); end
+
+ # Inform the producer/writing thread that the client has disconnected; the
+ # reading thread is no longer interested in anything that's being written.
+ #
+ # See also #close.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#220
+ def abort; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#239
+ def call_on_error; end
+
+ # Write a 'close' event to the buffer; the producer/writing thread uses this to
+ # notify us that it's finished supplying content.
+ #
+ # See also #abort.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#208
+ def close; end
+
+ # Is the client still connected and waiting for content?
+ #
+ # The result of calling `write` when this is `false` is determined by
+ # `ignore_disconnect`.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#231
+ def connected?; end
+
+ # Ignore that the client has disconnected.
+ #
+ # If this value is `true`, calling `write` after the client disconnects will
+ # result in the written content being silently discarded. If this value is
+ # `false` (the default), a ClientDisconnected exception will be raised.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#164
+ def ignore_disconnect; end
+
+ # Ignore that the client has disconnected.
+ #
+ # If this value is `true`, calling `write` after the client disconnects will
+ # result in the written content being silently discarded. If this value is
+ # `false` (the default), a ClientDisconnected exception will be raised.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#164
+ def ignore_disconnect=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#235
+ def on_error(&block); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#180
+ def write(string); end
+
+ # Same as `write` but automatically include a newline at the end of the string.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#200
+ def writeln(string); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#255
+ def build_queue(queue_size); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#244
+ def each_chunk(&block); end
+
+ class << self
+ # Returns the value of attribute queue_size.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#155
+ def queue_size; end
+
+ # Sets the attribute queue_size
+ #
+ # @param value the value to set the attribute queue_size to.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#155
+ def queue_size=(_arg0); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#59
+module ActionController::Live::ClassMethods
+ # source://actionpack//lib/action_controller/metal/live.rb#60
+ def make_response!(request); end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#148
+class ActionController::Live::ClientDisconnected < ::RuntimeError; end
+
+# source://actionpack//lib/action_controller/metal/live.rb#260
+class ActionController::Live::Response < ::ActionDispatch::Response
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#262
+ def before_committed; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#269
+ def build_buffer(response, body); end
+end
+
+# # Action Controller Live Server Sent Events
+#
+# This class provides the ability to write an SSE (Server Sent Event) to an IO
+# stream. The class is initialized with a stream and can be used to either write
+# a JSON string or an object which can be converted to JSON.
+#
+# Writing an object will convert it into standard SSE format with whatever
+# options you have configured. You may choose to set the following options:
+#
+# `:event`
+# : If specified, an event with this name will be dispatched on the browser.
+#
+# `:retry`
+# : The reconnection time in milliseconds used when attempting to send the event.
+#
+# `:id`
+# : If the connection dies while sending an SSE to the browser, then the
+# server will receive a `Last-Event-ID` header with value equal to `id`.
+#
+# After setting an option in the constructor of the SSE object, all future SSEs
+# sent across the stream will use those options unless overridden.
+#
+# Example Usage:
+#
+# class MyController < ActionController::Base
+# include ActionController::Live
+#
+# def index
+# response.headers['Content-Type'] = 'text/event-stream'
+# sse = SSE.new(response.stream, retry: 300, event: "event-name")
+# sse.write({ name: 'John'})
+# sse.write({ name: 'John'}, id: 10)
+# sse.write({ name: 'John'}, id: 10, event: "other-event")
+# sse.write({ name: 'John'}, id: 10, event: "other-event", retry: 500)
+# ensure
+# sse.close
+# end
+# end
+#
+# Note: SSEs are not currently supported by IE. However, they are supported by
+# Chrome, Firefox, Opera, and Safari.
+#
+# source://actionpack//lib/action_controller/metal/live.rb#112
+class ActionController::Live::SSE
+ # @return [SSE] a new instance of SSE
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#115
+ def initialize(stream, options = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#120
+ def close; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#124
+ def write(object, options = T.unsafe(nil)); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#134
+ def perform_write(json, options); end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#113
+ActionController::Live::SSE::PERMITTED_OPTIONS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/test_case.rb#176
+class ActionController::LiveTestResponse < ::ActionController::Live::Response
+ # Was there a server-side error?
+ #
+ # source://rack/3.1.7/lib/rack/response.rb#187
+ def error?; end
+
+ # Was the URL not found?
+ #
+ # source://rack/3.1.7/lib/rack/response.rb#197
+ def missing?; end
+
+ # Was the response successful?
+ #
+ # source://rack/3.1.7/lib/rack/response.rb#184
+ def success?; end
+end
+
+# source://actionpack//lib/action_controller/log_subscriber.rb#6
+class ActionController::LogSubscriber < ::ActiveSupport::LogSubscriber
+ # source://actionpack//lib/action_controller/log_subscriber.rb#80
+ def exist_fragment?(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#80
+ def expire_fragment(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#47
+ def halted_callback(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#90
+ def logger; end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#26
+ def process_action(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#80
+ def read_fragment(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#57
+ def redirect_to(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#62
+ def send_data(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#52
+ def send_file(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#9
+ def start_processing(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#67
+ def unpermitted_parameters(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#80
+ def write_fragment(event); end
+
+ class << self
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def log_levels; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def log_levels=(new_value); end
+ end
+end
+
+# source://actionpack//lib/action_controller/log_subscriber.rb#7
+ActionController::LogSubscriber::INTERNAL_PARAMS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/logging.rb#6
+module ActionController::Logging
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::Logging::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/logging.rb#9
+module ActionController::Logging::ClassMethods
+ # Set a different log level per request.
+ #
+ # # Use the debug log level if a particular cookie is set.
+ # class ApplicationController < ActionController::Base
+ # log_at :debug, if: -> { cookies[:debug] }
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/logging.rb#17
+ def log_at(level, **options); end
+end
+
+# # Action Controller Metal
+#
+# `ActionController::Metal` is the simplest possible controller, providing a
+# valid Rack interface without the additional niceties provided by
+# ActionController::Base.
+#
+# A sample metal controller might look like this:
+#
+# class HelloController < ActionController::Metal
+# def index
+# self.response_body = "Hello World!"
+# end
+# end
+#
+# And then to route requests to your metal controller, you would add something
+# like this to `config/routes.rb`:
+#
+# get 'hello', to: HelloController.action(:index)
+#
+# The ::action method returns a valid Rack application for the Rails router to
+# dispatch to.
+#
+# ## Rendering Helpers
+#
+# By default, `ActionController::Metal` provides no utilities for rendering
+# views, partials, or other responses aside from some low-level setters such
+# as #response_body=, #content_type=, and #status=. To add the render helpers
+# you're used to having in a normal controller, you can do the following:
+#
+# class HelloController < ActionController::Metal
+# include AbstractController::Rendering
+# include ActionView::Layouts
+# append_view_path "#{Rails.root}/app/views"
+#
+# def index
+# render "hello/index"
+# end
+# end
+#
+# ## Redirection Helpers
+#
+# To add redirection helpers to your metal controller, do the following:
+#
+# class HelloController < ActionController::Metal
+# include ActionController::Redirecting
+# include Rails.application.routes.url_helpers
+#
+# def index
+# redirect_to root_url
+# end
+# end
+#
+# ## Other Helpers
+#
+# You can refer to the modules included in ActionController::Base to see other
+# features you can bring into your metal controller.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/action_controller/metal.rb#121
+class ActionController::Metal < ::AbstractController::Base
+ include ::ActionController::Testing::Functional
+
+ # @return [Metal] a new instance of Metal
+ #
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def initialize; end
+
+ # Delegates to ActionDispatch::Response#content_type
+ #
+ # source://actionpack//lib/action_controller/metal.rb#204
+ def content_type(*_arg0, **_arg1, &_arg2); end
+
+ # Delegates to ActionDispatch::Response#content_type=
+ #
+ # source://actionpack//lib/action_controller/metal.rb#192
+ def content_type=(arg); end
+
+ # Delegates to the class's ::controller_name.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#156
+ def controller_name; end
+
+ # source://actionpack//lib/action_controller/metal.rb#249
+ def dispatch(name, request, response); end
+
+ # Delegates to ActionDispatch::Response#headers.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#180
+ def headers(*_arg0, **_arg1, &_arg2); end
+
+ # Delegates to ActionDispatch::Response#location
+ #
+ # source://actionpack//lib/action_controller/metal.rb#200
+ def location(*_arg0, **_arg1, &_arg2); end
+
+ # Delegates to ActionDispatch::Response#location=
+ #
+ # source://actionpack//lib/action_controller/metal.rb#188
+ def location=(arg); end
+
+ # Delegates to ActionDispatch::Response#media_type
+ #
+ # source://actionpack//lib/action_controller/metal.rb#208
+ def media_type(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#288
+ def middleware_stack; end
+
+ # source://actionpack//lib/action_controller/metal.rb#288
+ def middleware_stack=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal.rb#288
+ def middleware_stack?; end
+
+ # source://actionpack//lib/action_controller/metal.rb#219
+ def params; end
+
+ # source://actionpack//lib/action_controller/metal.rb#223
+ def params=(val); end
+
+ # Tests if render or redirect has already happened.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal.rb#245
+ def performed?; end
+
+ # :attr_reader: request
+ #
+ # The ActionDispatch::Request instance for the current request.
+ #
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def request; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def request=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal.rb#284
+ def reset_session; end
+
+ # :attr_reader: response
+ #
+ # The ActionDispatch::Response instance for the current response.
+ #
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/core_ext/module/attr_internal.rb#44
+ def response; end
+
+ # Assign the response and mark it as committed. No further processing will
+ # occur.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#268
+ def response=(response); end
+
+ # source://actionpack//lib/action_controller/metal.rb#234
+ def response_body=(body); end
+
+ # Delegates to ActionDispatch::Response#status
+ #
+ # source://actionpack//lib/action_controller/metal.rb#196
+ def response_code(*_arg0, **_arg1, &_arg2); end
+
+ # The ActionDispatch::Request::Session instance for the current request.
+ # See further details in the
+ # [Active Controller Session guide](https://guides.rubyonrails.org/action_controller_overview.html#session).
+ #
+ # source://actionpack//lib/action_controller/metal.rb#176
+ def session(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#275
+ def set_request!(request); end
+
+ # source://actionpack//lib/action_controller/metal.rb#257
+ def set_response!(response); end
+
+ # Delegates to ActionDispatch::Response#status
+ #
+ # source://actionpack//lib/action_controller/metal.rb#196
+ def status(*_arg0, **_arg1, &_arg2); end
+
+ # Delegates to ActionDispatch::Response#status=
+ #
+ # source://actionpack//lib/action_controller/metal.rb#184
+ def status=(arg); end
+
+ # source://actionpack//lib/action_controller/metal.rb#280
+ def to_a; end
+
+ # Basic `url_for` that can be overridden for more robust functionality.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#230
+ def url_for(string); end
+
+ class << self
+ # Returns a Rack endpoint for the given action name.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#315
+ def action(name); end
+
+ # source://actionpack//lib/action_controller/metal.rb#140
+ def action_encoding_template(action); end
+
+ # Returns the last part of the controller's name, underscored, without the
+ # ending `Controller`. For instance, `PostsController` returns `posts`.
+ # Namespaces are left out, so `Admin::PostsController` returns `posts` as well.
+ #
+ # #### Returns
+ # * `string`
+ #
+ # source://actionpack//lib/action_controller/metal.rb#130
+ def controller_name; end
+
+ # Direct dispatch to the controller. Instantiates the controller, then executes
+ # the action named `name`.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#331
+ def dispatch(name, req, res); end
+
+ # source://actionpack//lib/action_controller/metal.rb#134
+ def make_response!(request); end
+
+ # The middleware stack used by this controller.
+ #
+ # By default uses a variation of ActionDispatch::MiddlewareStack which allows
+ # for the following syntax:
+ #
+ # class PostsController < ApplicationController
+ # use AuthenticationMiddleware, except: [:index, :show]
+ # end
+ #
+ # Read more about [Rails middleware stack]
+ # (https://guides.rubyonrails.org/rails_on_rack.html#action-dispatcher-middleware-stack)
+ # in the guides.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#310
+ def middleware; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#12
+ def middleware_stack; end
+
+ # source://activesupport/8.0.0.beta1-15ddce90583bdf169ae69449b42db10be9f714c9/lib/active_support/class_attribute.rb#15
+ def middleware_stack=(new_value); end
+
+ # source://actionpack//lib/action_controller/metal.rb#288
+ def middleware_stack?; end
+
+ # Pushes the given Rack middleware and its arguments to the bottom of the
+ # middleware stack.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#293
+ def use(*_arg0, **_arg1, &_arg2); end
+
+ private
+
+ # @private
+ #
+ # source://actionpack//lib/action_controller/metal.rb#146
+ def inherited(subclass); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#52
+class ActionController::MethodNotAllowed < ::ActionController::ActionControllerError
+ # @return [MethodNotAllowed] a new instance of MethodNotAllowed
+ #
+ # source://actionpack//lib/action_controller/metal/exceptions.rb#53
+ def initialize(*allowed_methods); end
+end
+
+# # Action Controller MiddlewareStack
+#
+# Extend ActionDispatch middleware stack to make it aware of options allowing
+# the following syntax in controllers:
+#
+# class PostsController < ApplicationController
+# use AuthenticationMiddleware, except: [:index, :show]
+# end
+#
+# source://actionpack//lib/action_controller/metal.rb#18
+class ActionController::MiddlewareStack < ::ActionDispatch::MiddlewareStack
+ # source://actionpack//lib/action_controller/metal.rb#31
+ def build(action, app = T.unsafe(nil), &block); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal.rb#44
+ def build_middleware(klass, args, block); end
+end
+
+# source://actionpack//lib/action_controller/metal.rb#41
+ActionController::MiddlewareStack::EXCLUDE = T.let(T.unsafe(nil), Proc)
+
+# source://actionpack//lib/action_controller/metal.rb#40
+ActionController::MiddlewareStack::INCLUDE = T.let(T.unsafe(nil), Proc)
+
+# source://actionpack//lib/action_controller/metal.rb#19
+class ActionController::MiddlewareStack::Middleware < ::ActionDispatch::MiddlewareStack::Middleware
+ # @return [Middleware] a new instance of Middleware
+ #
+ # source://actionpack//lib/action_controller/metal.rb#20
+ def initialize(klass, args, actions, strategy, block); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal.rb#26
+ def valid?(action); end
+end
+
+# source://actionpack//lib/action_controller/metal.rb#42
+ActionController::MiddlewareStack::NULL = T.let(T.unsafe(nil), Proc)
+
+# source://actionpack//lib/action_controller/metal/mime_responds.rb#8
+module ActionController::MimeResponds
+ # Without web-service support, an action which collects the data for displaying
+ # a list of people might look something like this:
+ #
+ # def index
+ # @people = Person.all
+ # end
+ #
+ # That action implicitly responds to all formats, but formats can also be
+ # explicitly enumerated:
+ #
+ # def index
+ # @people = Person.all
+ # respond_to :html, :js
+ # end
+ #
+ # Here's the same action, with web-service support baked in:
+ #
+ # def index
+ # @people = Person.all
+ #
+ # respond_to do |format|
+ # format.html
+ # format.js
+ # format.xml { render xml: @people }
+ # end
+ # end
+ #
+ # What that says is, "if the client wants HTML or JS in response to this action,
+ # just respond as we would have before, but if the client wants XML, return them
+ # the list of people in XML format." (Rails determines the desired response
+ # format from the HTTP Accept header submitted by the client.)
+ #
+ # Supposing you have an action that adds a new person, optionally creating their
+ # company (by name) if it does not already exist, without web-services, it might
+ # look like this:
+ #
+ # def create
+ # @company = Company.find_or_create_by(name: params[:company][:name])
+ # @person = @company.people.create(params[:person])
+ #
+ # redirect_to(person_list_url)
+ # end
+ #
+ # Here's the same action, with web-service support baked in:
+ #
+ # def create
+ # company = params[:person].delete(:company)
+ # @company = Company.find_or_create_by(name: company[:name])
+ # @person = @company.people.create(params[:person])
+ #
+ # respond_to do |format|
+ # format.html { redirect_to(person_list_url) }
+ # format.js
+ # format.xml { render xml: @person.to_xml(include: @company) }
+ # end
+ # end
+ #
+ # If the client wants HTML, we just redirect them back to the person list. If
+ # they want JavaScript, then it is an Ajax request and we render the JavaScript
+ # template associated with this action. Lastly, if the client wants XML, we
+ # render the created person as XML, but with a twist: we also include the
+ # person's company in the rendered XML, so you get something like this:
+ #
+ #
+ # ...
+ # ...
+ #
+ # ...
+ # ...
+ # ...
+ #
+ #
+ #
+ # Note, however, the extra bit at the top of that action:
+ #
+ # company = params[:person].delete(:company)
+ # @company = Company.find_or_create_by(name: company[:name])
+ #
+ # This is because the incoming XML document (if a web-service request is in
+ # process) can only contain a single root-node. So, we have to rearrange things
+ # so that the request looks like this (url-encoded):
+ #
+ # person[name]=...&person[company][name]=...&...
+ #
+ # And, like this (xml-encoded):
+ #
+ #
+ # ...
+ #
+ # ...
+ #
+ #
+ #
+ # In other words, we make the request so that it operates on a single entity's
+ # person. Then, in the action, we extract the company data from the request,
+ # find or create the company, and then create the new person with the remaining
+ # data.
+ #
+ # Note that you can define your own XML parameter parser which would allow you
+ # to describe multiple entities in a single request (i.e., by wrapping them all
+ # in a single root node), but if you just go with the flow and accept Rails'
+ # defaults, life will be much easier.
+ #
+ # If you need to use a MIME type which isn't supported by default, you can
+ # register your own handlers in `config/initializers/mime_types.rb` as follows.
+ #
+ # Mime::Type.register "image/jpeg", :jpg
+ #
+ # `respond_to` also allows you to specify a common block for different formats
+ # by using `any`:
+ #
+ # def index
+ # @people = Person.all
+ #
+ # respond_to do |format|
+ # format.html
+ # format.any(:xml, :json) { render request.format.to_sym => @people }
+ # end
+ # end
+ #
+ # In the example above, if the format is xml, it will render:
+ #
+ # render xml: @people
+ #
+ # Or if the format is json:
+ #
+ # render json: @people
+ #
+ # `any` can also be used with no arguments, in which case it will be used for
+ # any format requested by the user:
+ #
+ # respond_to do |format|
+ # format.html
+ # format.any { redirect_to support_path }
+ # end
+ #
+ # Formats can have different variants.
+ #
+ # The request variant is a specialization of the request format, like `:tablet`,
+ # `:phone`, or `:desktop`.
+ #
+ # We often want to render different html/json/xml templates for phones, tablets,
+ # and desktop browsers. Variants make it easy.
+ #
+ # You can set the variant in a `before_action`:
+ #
+ # request.variant = :tablet if /iPad/.match?(request.user_agent)
+ #
+ # Respond to variants in the action just like you respond to formats:
+ #
+ # respond_to do |format|
+ # format.html do |variant|
+ # variant.tablet # renders app/views/projects/show.html+tablet.erb
+ # variant.phone { extra_setup; render ... }
+ # variant.none { special_setup } # executed only if there is no variant set
+ # end
+ # end
+ #
+ # Provide separate templates for each format and variant:
+ #
+ # app/views/projects/show.html.erb
+ # app/views/projects/show.html+tablet.erb
+ # app/views/projects/show.html+phone.erb
+ #
+ # When you're not sharing any code within the format, you can simplify defining
+ # variants using the inline syntax:
+ #
+ # respond_to do |format|
+ # format.js { render "trash" }
+ # format.html.phone { redirect_to progress_path }
+ # format.html.none { render "trash" }
+ # end
+ #
+ # Variants also support common `any`/`all` block that formats have.
+ #
+ # It works for both inline:
+ #
+ # respond_to do |format|
+ # format.html.any { render html: "any" }
+ # format.html.phone { render html: "phone" }
+ # end
+ #
+ # and block syntax:
+ #
+ # respond_to do |format|
+ # format.html do |variant|
+ # variant.any(:tablet, :phablet){ render html: "any" }
+ # variant.phone { render html: "phone" }
+ # end
+ # end
+ #
+ # You can also set an array of variants:
+ #
+ # request.variant = [:tablet, :phone]
+ #
+ # This will work similarly to formats and MIME types negotiation. If there is no
+ # `:tablet` variant declared, the `:phone` variant will be used:
+ #
+ # respond_to do |format|
+ # format.html.none
+ # format.html.phone # this gets rendered
+ # end
+ #
+ # @raise [ArgumentError]
+ # @yield [collector]
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#211
+ def respond_to(*mimes); end
+end
+
+# A container for responses available from the current controller for requests
+# for different mime-types sent to a particular action.
+#
+# The public controller methods `respond_to` may be called with a block that is
+# used to define responses to different mime-types, e.g. for `respond_to` :
+#
+# respond_to do |format|
+# format.html
+# format.xml { render xml: @people }
+# end
+#
+# In this usage, the argument passed to the block (`format` above) is an
+# instance of the ActionController::MimeResponds::Collector class. This object
+# serves as a container in which available responses can be stored by calling
+# any of the dynamically generated, mime-type-specific methods such as `html`,
+# `xml` etc on the Collector. Each response is represented by a corresponding
+# block if present.
+#
+# A subsequent call to #negotiate_format(request) will enable the Collector to
+# determine which specific mime-type it should respond with for the current
+# request, with this response then being accessible by calling #response.
+#
+# source://actionpack//lib/action_controller/metal/mime_responds.rb#251
+class ActionController::MimeResponds::Collector
+ include ::AbstractController::Collector
+
+ # @return [Collector] a new instance of Collector
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#255
+ def initialize(mimes, variant = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#262
+ def all(*args, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#262
+ def any(*args, &block); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#280
+ def any_response?; end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#271
+ def custom(mime_type, &block); end
+
+ # Returns the value of attribute format.
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#253
+ def format; end
+
+ # Sets the attribute format
+ #
+ # @param value the value to set the attribute format to.
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#253
+ def format=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#297
+ def negotiate_format(request); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#284
+ def response; end
+end
+
+# source://actionpack//lib/action_controller/metal/mime_responds.rb#301
+class ActionController::MimeResponds::Collector::VariantCollector
+ # @return [VariantCollector] a new instance of VariantCollector
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#302
+ def initialize(variant = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#307
+ def all(*args, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#307
+ def any(*args, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#318
+ def method_missing(name, *_arg1, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#322
+ def variant; end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#331
+ def variant_key; end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#96
+class ActionController::MissingExactTemplate < ::ActionController::UnknownFormat
+ # @return [MissingExactTemplate] a new instance of MissingExactTemplate
+ #
+ # source://actionpack//lib/action_controller/metal/exceptions.rb#99
+ def initialize(message, controller, action_name); end
+
+ # Returns the value of attribute action_name.
+ #
+ # source://actionpack//lib/action_controller/metal/exceptions.rb#97
+ def action_name; end
+
+ # Returns the value of attribute controller.
+ #
+ # source://actionpack//lib/action_controller/metal/exceptions.rb#97
+ def controller; end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#61
+class ActionController::MissingFile < ::ActionController::ActionControllerError; end
+
+# See `Responder#api_behavior`
+#
+# source://actionpack//lib/action_controller/metal/renderers.rb#19
+class ActionController::MissingRenderer < ::LoadError
+ # @return [MissingRenderer] a new instance of MissingRenderer
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#20
+ def initialize(format); end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#58
+class ActionController::NotImplemented < ::ActionController::MethodNotAllowed; end
+
+# Specify binary encoding for parameters for a given action.
+#
+# source://actionpack//lib/action_controller/metal/parameter_encoding.rb#7
+module ActionController::ParameterEncoding
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::ParameterEncoding::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/parameter_encoding.rb#10
+module ActionController::ParameterEncoding::ClassMethods
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#20
+ def action_encoding_template(action); end
+
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#11
+ def inherited(klass); end
+
+ # Specify the encoding for a parameter on an action. If not specified the
+ # default is UTF-8.
+ #
+ # You can specify a binary (ASCII_8BIT) parameter with:
+ #
+ # class RepositoryController < ActionController::Base
+ # # This specifies that file_path is not UTF-8 and is instead ASCII_8BIT
+ # param_encoding :show, :file_path, Encoding::ASCII_8BIT
+ #
+ # def show
+ # @repo = Repository.find_by_filesystem_path params[:file_path]
+ #
+ # # params[:repo_name] remains UTF-8 encoded
+ # @repo_name = params[:repo_name]
+ # end
+ #
+ # def index
+ # @repositories = Repository.all
+ # end
+ # end
+ #
+ # The file_path parameter on the show action would be encoded as ASCII-8BIT, but
+ # all other arguments will remain UTF-8 encoded. This is useful in the case
+ # where an application must handle data but encoding of the data is unknown,
+ # like file system data.
+ #
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#79
+ def param_encoding(action, param, encoding); end
+
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#16
+ def setup_param_encode; end
+
+ # Specify that a given action's parameters should all be encoded as ASCII-8BIT
+ # (it "skips" the encoding default of UTF-8).
+ #
+ # For example, a controller would use it like this:
+ #
+ # class RepositoryController < ActionController::Base
+ # skip_parameter_encoding :show
+ #
+ # def show
+ # @repo = Repository.find_by_filesystem_path params[:file_path]
+ #
+ # # `repo_name` is guaranteed to be UTF-8, but was ASCII-8BIT, so
+ # # tag it as such
+ # @repo_name = params[:repo_name].force_encoding 'UTF-8'
+ # end
+ #
+ # def index
+ # @repositories = Repository.all
+ # end
+ # end
+ #
+ # The show action in the above controller would have all parameter values
+ # encoded as ASCII-8BIT. This is useful in the case where an application must
+ # handle data but encoding of the data is unknown, like file system data.
+ #
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#50
+ def skip_parameter_encoding(action); end
+end
+
+# Raised when a required parameter is missing.
+#
+# params = ActionController::Parameters.new(a: {})
+# params.fetch(:b)
+# # => ActionController::ParameterMissing: param is missing or the value is empty or invalid: b
+# params.require(:a)
+# # => ActionController::ParameterMissing: param is missing or the value is empty or invalid: a
+# params.expect(a: [])
+# # => ActionController::ParameterMissing: param is missing or the value is empty or invalid: a
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#26
+class ActionController::ParameterMissing < ::KeyError
+ # @return [ParameterMissing] a new instance of ParameterMissing
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#29
+ def initialize(param, keys = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#38
+ def corrections; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#27
+ def keys; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#27
+ def param; end
+end
+
+# # Action Controller Parameters
+#
+# Allows you to choose which attributes should be permitted for mass updating
+# and thus prevent accidentally exposing that which shouldn't be exposed.
+#
+# Provides methods for filtering and requiring params:
+#
+# * `expect` to safely permit and require parameters in one step.
+# * `permit` to filter params for mass assignment.
+# * `require` to require a parameter or raise an error.
+#
+# params = ActionController::Parameters.new({
+# person: {
+# name: "Francesco",
+# age: 22,
+# role: "admin"
+# }
+# })
+#
+# permitted = params.expect(person: [:name, :age])
+# permitted # => #"Francesco", "age"=>22} permitted: true>
+#
+# Person.first.update!(permitted)
+# # => #
+#
+# Paramaters provides two options that control the top-level behavior of new
+# instances:
+#
+# * `permit_all_parameters` - If it's `true`, all the parameters will be
+# permitted by default. The default is `false`.
+# * `action_on_unpermitted_parameters` - Controls behavior when parameters
+# that are not explicitly permitted are found. The default value is `:log`
+# in test and development environments, `false` otherwise. The values can
+# be:
+# * `false` to take no action.
+# * `:log` to emit an `ActiveSupport::Notifications.instrument` event on
+# the `unpermitted_parameters.action_controller` topic and log at the
+# DEBUG level.
+# * `:raise` to raise an ActionController::UnpermittedParameters
+# exception.
+#
+# Examples:
+#
+# params = ActionController::Parameters.new
+# params.permitted? # => false
+#
+# ActionController::Parameters.permit_all_parameters = true
+#
+# params = ActionController::Parameters.new
+# params.permitted? # => true
+#
+# params = ActionController::Parameters.new(a: "123", b: "456")
+# params.permit(:c)
+# # => #
+#
+# ActionController::Parameters.action_on_unpermitted_parameters = :raise
+#
+# params = ActionController::Parameters.new(a: "123", b: "456")
+# params.permit(:c)
+# # => ActionController::UnpermittedParameters: found unpermitted keys: a, b
+#
+# Please note that these options *are not thread-safe*. In a multi-threaded
+# environment they should only be set once at boot-time and never mutated at
+# runtime.
+#
+# You can fetch values of `ActionController::Parameters` using either `:key` or
+# `"key"`.
+#
+# params = ActionController::Parameters.new(key: "value")
+# params[:key] # => "value"
+# params["key"] # => "value"
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#159
+class ActionController::Parameters
+ include ::ActiveSupport::DeepMergeable
+
+ # Returns a new `ActionController::Parameters` instance. Also, sets the
+ # `permitted` attribute to the default value of
+ # `ActionController::Parameters.permit_all_parameters`.
+ #
+ # class Person < ActiveRecord::Base
+ # end
+ #
+ # params = ActionController::Parameters.new(name: "Francesco")
+ # params.permitted? # => false
+ # Person.new(params) # => ActiveModel::ForbiddenAttributesError
+ #
+ # ActionController::Parameters.permit_all_parameters = true
+ #
+ # params = ActionController::Parameters.new(name: "Francesco")
+ # params.permitted? # => true
+ # Person.new(params) # => #
+ #
+ # @return [Parameters] a new instance of Parameters
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#300
+ def initialize(parameters = T.unsafe(nil), logging_context = T.unsafe(nil)); end
+
+ # Returns true if another `Parameters` object contains the same content and
+ # permitted flag.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#314
+ def ==(other); end
+
+ # Returns a parameter for the given `key`. If not found, returns `nil`.
+ #
+ # params = ActionController::Parameters.new(person: { name: "Francesco" })
+ # params[:person] # => #"Francesco"} permitted: false>
+ # params[:none] # => nil
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#810
+ def [](key); end
+
+ # Assigns a value to a given `key`. The given key may still get filtered out
+ # when #permit is called.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#816
+ def []=(key, value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#262
+ def always_permitted_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#262
+ def always_permitted_parameters=(val); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def as_json(*_arg0, **_arg1, &_arg2); end
+
+ # Returns a new `ActionController::Parameters` instance with `nil` values
+ # removed.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#987
+ def compact; end
+
+ # Removes all `nil` values in place and returns `self`, or `nil` if no changes
+ # were made.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#993
+ def compact!; end
+
+ # Returns a new `ActionController::Parameters` instance without the blank
+ # values. Uses Object#blank? for determining if a value is blank.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#999
+ def compact_blank; end
+
+ # Removes all blank values in place and returns self. Uses Object#blank? for
+ # determining if a value is blank.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1005
+ def compact_blank!; end
+
+ # Attribute that keeps track of converted arrays, if any, to avoid double
+ # looping in the common use case permit + mass-assignment. Defined in a method
+ # to instantiate it only if needed.
+ #
+ # Testing membership still loops, but it's going to be faster than our own loop
+ # that converts values. Also, we are not going to build a new array object per
+ # fetch.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#448
+ def converted_arrays; end
+
+ # Returns a duplicate `ActionController::Parameters` instance with the same
+ # permitted parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1105
+ def deep_dup; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1040
+ def deep_merge?(other_hash); end
+
+ # Returns a new `ActionController::Parameters` instance with the results of
+ # running `block` once for every key. This includes the keys from the root hash
+ # and from all nested hashes and arrays. The values are unchanged.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#937
+ def deep_transform_keys(&block); end
+
+ # Returns the same `ActionController::Parameters` instance with changed keys.
+ # This includes the keys from the root hash and from all nested hashes and
+ # arrays. The values are unchanged.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#946
+ def deep_transform_keys!(&block); end
+
+ # Deletes a key-value pair from `Parameters` and returns the value. If `key` is
+ # not found, returns `nil` (or, with optional code block, yields `key` and
+ # returns the result). This method is similar to #extract!, which returns the
+ # corresponding `ActionController::Parameters` object.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#955
+ def delete(key, &block); end
+
+ # Removes items that the block evaluates to true and returns self.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#979
+ def delete_if(&block); end
+
+ # Extracts the nested parameter from the given `keys` by calling `dig` at each
+ # step. Returns `nil` if any intermediate step is `nil`.
+ #
+ # params = ActionController::Parameters.new(foo: { bar: { baz: 1 } })
+ # params.dig(:foo, :bar, :baz) # => 1
+ # params.dig(:foo, :zot, :xyz) # => nil
+ #
+ # params2 = ActionController::Parameters.new(foo: [10, 11, 12])
+ # params2.dig(:foo, 1) # => 11
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#854
+ def dig(*keys); end
+
+ # Convert all hashes in values into parameters, then yield each pair in the same
+ # way as `Hash#each_pair`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#415
+ def each(&block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def each_key(*_arg0, **_arg1, &_arg2); end
+
+ # Convert all hashes in values into parameters, then yield each pair in the same
+ # way as `Hash#each_pair`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#415
+ def each_pair(&block); end
+
+ # Convert all hashes in values into parameters, then yield each value in the
+ # same way as `Hash#each_value`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#427
+ def each_value(&block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def empty?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1099
+ def encode_with(coder); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#322
+ def eql?(other); end
+
+ # Returns a new `ActionController::Parameters` instance that filters out the
+ # given `keys`.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.except(:a, :b) # => #3} permitted: false>
+ # params.except(:d) # => #1, "b"=>2, "c"=>3} permitted: false>
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#882
+ def except(*keys); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def exclude?(*_arg0, **_arg1, &_arg2); end
+
+ # `expect` is the preferred way to require and permit parameters.
+ # It is safer than the previous recommendation to call `permit` and `require`
+ # in sequence, which could allow user triggered 500 errors.
+ #
+ # `expect` is more strict with types to avoid a number of potential pitfalls
+ # that may be encountered with the `.require.permit` pattern.
+ #
+ # For example:
+ #
+ # params = ActionController::Parameters.new(comment: { text: "hello" })
+ # params.expect(comment: [:text])
+ # # => #
+ #
+ # params = ActionController::Parameters.new(comment: [{ text: "hello" }, { text: "world" }])
+ # params.expect(comment: [:text])
+ # # => ActionController::ParameterMissing: param is missing or the value is empty or invalid: comment
+ #
+ # In order to permit an array of parameters, the array must be defined
+ # explicitly. Use double array brackets, an array inside an array, to
+ # declare that an array of parameters is expected.
+ #
+ # params = ActionController::Parameters.new(comments: [{ text: "hello" }, { text: "world" }])
+ # params.expect(comments: [[:text]])
+ # # => [# "hello" } permitted: true>,
+ # # # "world" } permitted: true>]
+ #
+ # params = ActionController::Parameters.new(comments: { text: "hello" })
+ # params.expect(comments: [[:text]])
+ # # => ActionController::ParameterMissing: param is missing or the value is empty or invalid: comments
+ #
+ # `expect` is intended to protect against array tampering.
+ #
+ # params = ActionController::Parameters.new(user: "hack")
+ # # The previous way of requiring and permitting parameters will error
+ # params.require(:user).permit(:name, pets: [:name]) # wrong
+ # # => NoMethodError: undefined method `permit' for an instance of String
+ #
+ # # similarly with nested parameters
+ # params = ActionController::Parameters.new(user: { name: "Martin", pets: { name: "hack" } })
+ # user_params = params.require(:user).permit(:name, pets: [:name]) # wrong
+ # # user_params[:pets] is expected to be an array but is a hash
+ #
+ # `expect` solves this by being more strict with types.
+ #
+ # params = ActionController::Parameters.new(user: "hack")
+ # params.expect(user: [ :name, pets: [[:name]] ])
+ # # => ActionController::ParameterMissing: param is missing or the value is empty or invalid: user
+ #
+ # # with nested parameters
+ # params = ActionController::Parameters.new(user: { name: "Martin", pets: { name: "hack" } })
+ # user_params = params.expect(user: [:name, pets: [[:name]] ])
+ # user_params[:pets] # => nil
+ #
+ # As the examples show, `expect` requires the `:user` key, and any root keys
+ # similar to the `.require.permit` pattern. If multiple root keys are
+ # expected, they will all be required.
+ #
+ # params = ActionController::Parameters.new(name: "Martin", pies: [{ type: "dessert", flavor: "pumpkin"}])
+ # name, pies = params.expect(:name, pies: [[:type, :flavor]])
+ # name # => "Martin"
+ # pies # => [#"dessert", "flavor"=>"pumpkin"} permitted: true>]
+ #
+ # When called with a hash with multiple keys, `expect` will permit the
+ # parameters and require the keys in the order they are given in the hash,
+ # returning an array of the permitted parameters.
+ #
+ # params = ActionController::Parameters.new(subject: { name: "Martin" }, object: { pie: "pumpkin" })
+ # subject, object = params.expect(subject: [:name], object: [:pie])
+ # subject # => #"Martin"} permitted: true>
+ # object # => #"pumpkin"} permitted: true>
+ #
+ # Besides being more strict about array vs hash params, `expect` uses permit
+ # internally, so it will behave similarly.
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # name: "Francesco",
+ # age: 22,
+ # pets: [{
+ # name: "Purplish",
+ # category: "dogs"
+ # }]
+ # }
+ # })
+ #
+ # permitted = params.expect(person: [ :name, { pets: [[:name]] } ])
+ # permitted.permitted? # => true
+ # permitted[:name] # => "Francesco"
+ # permitted[:age] # => nil
+ # permitted[:pets][0][:name] # => "Purplish"
+ # permitted[:pets][0][:category] # => nil
+ #
+ # An array of permitted scalars may be expected with the following:
+ #
+ # params = ActionController::Parameters.new(tags: ["rails", "parameters"])
+ # permitted = params.expect(tags: [])
+ # permitted.permitted? # => true
+ # permitted.is_a?(Array) # => true
+ # permitted.size # => 2
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#785
+ def expect(*filters); end
+
+ # Same as `expect`, but raises an `ActionController::ExpectedParameterMissing`
+ # instead of `ActionController::ParameterMissing`. Unlike `expect` which
+ # will render a 400 response, `expect!` will raise an exception that is
+ # not handled. This is intended for debugging invalid params for an
+ # internal API where incorrectly formatted params would indicate a bug
+ # in a client library that should be fixed.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#799
+ def expect!(*filters); end
+
+ # Removes and returns the key/value pairs matching the given keys.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.extract!(:a, :b) # => #1, "b"=>2} permitted: false>
+ # params # => #3} permitted: false>
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#892
+ def extract!(*keys); end
+
+ # Returns parameter value for the given `key` separated by `delimiter`.
+ #
+ # params = ActionController::Parameters.new(id: "1_123", tags: "ruby,rails")
+ # params.extract_value(:id) # => ["1", "123"]
+ # params.extract_value(:tags, delimiter: ",") # => ["ruby", "rails"]
+ # params.extract_value(:non_existent_key) # => nil
+ #
+ # Note that if the given `key`'s value contains blank elements, then the
+ # returned array will include empty strings.
+ #
+ # params = ActionController::Parameters.new(tags: "ruby,rails,,web")
+ # params.extract_value(:tags, delimiter: ",") # => ["ruby", "rails", "", "web"]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1123
+ def extract_value(key, delimiter: T.unsafe(nil)); end
+
+ # Returns a parameter for the given `key`. If the `key` can't be found, there
+ # are several options: With no other arguments, it will raise an
+ # ActionController::ParameterMissing error; if a second argument is given, then
+ # that is returned (converted to an instance of `ActionController::Parameters`
+ # if possible); if a block is given, then that will be run and its result
+ # returned.
+ #
+ # params = ActionController::Parameters.new(person: { name: "Francesco" })
+ # params.fetch(:person) # => #"Francesco"} permitted: false>
+ # params.fetch(:none) # => ActionController::ParameterMissing: param is missing or the value is empty or invalid: none
+ # params.fetch(:none, {}) # => #
+ # params.fetch(:none, "Francesco") # => "Francesco"
+ # params.fetch(:none) { "Francesco" } # => "Francesco"
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#833
+ def fetch(key, *args); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def has_key?(*_arg0, **_arg1, &_arg2); end
+
+ # Returns true if the given value is present for some key in the parameters.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1010
+ def has_value?(value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#328
+ def hash; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def include?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1081
+ def init_with(coder); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1068
+ def inspect; end
+
+ # Equivalent to Hash#keep_if, but returns `nil` if no changes were made.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#966
+ def keep_if(&block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def key?(*_arg0, **_arg1, &_arg2); end
+
+ # :method: to_s
+ #
+ # :call-seq:
+ # to_s()
+ #
+ # Returns the content of the parameters as a string.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def keys(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def member?(*_arg0, **_arg1, &_arg2); end
+
+ # Returns a new `ActionController::Parameters` instance with all keys from
+ # `other_hash` merged into current hash.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1024
+ def merge(other_hash); end
+
+ # :call-seq: merge!(other_hash)
+ #
+ # Returns the current `ActionController::Parameters` instance with `other_hash`
+ # merged into current hash.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1035
+ def merge!(other_hash, &block); end
+
+ # Returns a new `ActionController::Parameters` instance that includes only the
+ # given `filters` and sets the `permitted` attribute for the object to `true`.
+ # This is useful for limiting which attributes should be allowed for mass
+ # updating.
+ #
+ # params = ActionController::Parameters.new(name: "Francesco", age: 22, role: "admin")
+ # permitted = params.permit(:name, :age)
+ # permitted.permitted? # => true
+ # permitted.has_key?(:name) # => true
+ # permitted.has_key?(:age) # => true
+ # permitted.has_key?(:role) # => false
+ #
+ # Only permitted scalars pass the filter. For example, given
+ #
+ # params.permit(:name)
+ #
+ # `:name` passes if it is a key of `params` whose associated value is of type
+ # `String`, `Symbol`, `NilClass`, `Numeric`, `TrueClass`, `FalseClass`, `Date`,
+ # `Time`, `DateTime`, `StringIO`, `IO`, ActionDispatch::Http::UploadedFile or
+ # `Rack::Test::UploadedFile`. Otherwise, the key `:name` is filtered out.
+ #
+ # You may declare that the parameter should be an array of permitted scalars by
+ # mapping it to an empty array:
+ #
+ # params = ActionController::Parameters.new(tags: ["rails", "parameters"])
+ # params.permit(tags: [])
+ #
+ # Sometimes it is not possible or convenient to declare the valid keys of a hash
+ # parameter or its internal structure. Just map to an empty hash:
+ #
+ # params.permit(preferences: {})
+ #
+ # Be careful because this opens the door to arbitrary input. In this case,
+ # `permit` ensures values in the returned structure are permitted scalars and
+ # filters out anything else.
+ #
+ # You can also use `permit` on nested parameters:
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # name: "Francesco",
+ # age: 22,
+ # pets: [{
+ # name: "Purplish",
+ # category: "dogs"
+ # }]
+ # }
+ # })
+ #
+ # permitted = params.permit(person: [ :name, { pets: :name } ])
+ # permitted.permitted? # => true
+ # permitted[:person][:name] # => "Francesco"
+ # permitted[:person][:age] # => nil
+ # permitted[:person][:pets][0][:name] # => "Purplish"
+ # permitted[:person][:pets][0][:category] # => nil
+ #
+ # This has the added benefit of rejecting user-modified inputs that send a
+ # string when a hash is expected.
+ #
+ # When followed by `require`, you can both filter and require parameters
+ # following the typical pattern of a Rails form. The `expect` method was
+ # made specifically for this use case and is the recommended way to require
+ # and permit parameters.
+ #
+ # permitted = params.expect(person: [:name, :age])
+ #
+ # When using `permit` and `require` separately, pay careful attention to the
+ # order of the method calls.
+ #
+ # params = ActionController::Parameters.new(person: { name: "Martin", age: 40, role: "admin" })
+ # permitted = params.permit(person: [:name, :age]).require(:person) # correct
+ #
+ # When require is used first, it is possible for users of your application to
+ # trigger a NoMethodError when the user, for example, sends a string for :person.
+ #
+ # params = ActionController::Parameters.new(person: "tampered")
+ # permitted = params.require(:person).permit(:name, :age) # not recommended
+ # # => NoMethodError: undefined method `permit' for an instance of String
+ #
+ # Note that if you use `permit` in a key that points to a hash, it won't allow
+ # all the hash. You also need to specify which attributes inside the hash should
+ # be permitted.
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # contact: {
+ # email: "none@test.com",
+ # phone: "555-1234"
+ # }
+ # }
+ # })
+ #
+ # params.permit(person: :contact).require(:person)
+ # # => #
+ #
+ # params.permit(person: { contact: :phone }).require(:person)
+ # # => ##"555-1234"} permitted: true>} permitted: true>
+ #
+ # params.permit(person: { contact: [ :email, :phone ] }).require(:person)
+ # # => ##"none@test.com", "phone"=>"555-1234"} permitted: true>} permitted: true>
+ #
+ # If your parameters specify multiple parameters indexed by a number, you can
+ # permit each set of parameters under the numeric key to be the same using the
+ # same syntax as permitting a single item.
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # '0': {
+ # email: "none@test.com",
+ # phone: "555-1234"
+ # },
+ # '1': {
+ # email: "nothing@test.com",
+ # phone: "555-6789"
+ # },
+ # }
+ # })
+ # params.permit(person: [:email]).to_h
+ # # => {"person"=>{"0"=>{"email"=>"none@test.com"}, "1"=>{"email"=>"nothing@test.com"}}}
+ #
+ # If you want to specify what keys you want from each numeric key, you can
+ # instead specify each one individually
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # '0': {
+ # email: "none@test.com",
+ # phone: "555-1234"
+ # },
+ # '1': {
+ # email: "nothing@test.com",
+ # phone: "555-6789"
+ # },
+ # }
+ # })
+ # params.permit(person: { '0': [:email], '1': [:phone]}).to_h
+ # # => {"person"=>{"0"=>{"email"=>"none@test.com"}, "1"=>{"phone"=>"555-6789"}}}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#681
+ def permit(*filters); end
+
+ # Sets the `permitted` attribute to `true`. This can be used to pass mass
+ # assignment. Returns `self`.
+ #
+ # class Person < ActiveRecord::Base
+ # end
+ #
+ # params = ActionController::Parameters.new(name: "Francesco")
+ # params.permitted? # => false
+ # Person.new(params) # => ActiveModel::ForbiddenAttributesError
+ # params.permit!
+ # params.permitted? # => true
+ # Person.new(params) # => #
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#474
+ def permit!; end
+
+ # Returns `true` if the parameter is permitted, `false` otherwise.
+ #
+ # params = ActionController::Parameters.new
+ # params.permitted? # => false
+ # params.permit!
+ # params.permitted? # => true
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#458
+ def permitted?; end
+
+ # Returns a new `ActionController::Parameters` instance with items that the
+ # block evaluates to true removed.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#974
+ def reject(&block); end
+
+ # Removes items that the block evaluates to true and returns self.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#979
+ def reject!(&block); end
+
+ # This method accepts both a single key and an array of keys.
+ #
+ # When passed a single key, if it exists and its associated value is either
+ # present or the singleton `false`, returns said value:
+ #
+ # ActionController::Parameters.new(person: { name: "Francesco" }).require(:person)
+ # # => #"Francesco"} permitted: false>
+ #
+ # Otherwise raises ActionController::ParameterMissing:
+ #
+ # ActionController::Parameters.new.require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # ActionController::Parameters.new(person: nil).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # ActionController::Parameters.new(person: "\t").require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # ActionController::Parameters.new(person: {}).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # When given an array of keys, the method tries to require each one of them in
+ # order. If it succeeds, an array with the respective return values is returned:
+ #
+ # params = ActionController::Parameters.new(user: { ... }, profile: { ... })
+ # user_params, profile_params = params.require([:user, :profile])
+ #
+ # Otherwise, the method re-raises the first exception found:
+ #
+ # params = ActionController::Parameters.new(user: {}, profile: {})
+ # user_params, profile_params = params.require([:user, :profile])
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: user
+ #
+ # This method is not recommended for fetching terminal values because it does
+ # not permit the values. For example, this can cause problems:
+ #
+ # # CAREFUL
+ # params = ActionController::Parameters.new(person: { name: "Finn" })
+ # name = params.require(:person).require(:name) # CAREFUL
+ #
+ # It is recommended to use `expect` instead:
+ #
+ # def person_params
+ # # params.expect(person: :name).require(:name)
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#532
+ def require(key); end
+
+ # This method accepts both a single key and an array of keys.
+ #
+ # When passed a single key, if it exists and its associated value is either
+ # present or the singleton `false`, returns said value:
+ #
+ # ActionController::Parameters.new(person: { name: "Francesco" }).require(:person)
+ # # => #"Francesco"} permitted: false>
+ #
+ # Otherwise raises ActionController::ParameterMissing:
+ #
+ # ActionController::Parameters.new.require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # ActionController::Parameters.new(person: nil).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # ActionController::Parameters.new(person: "\t").require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # ActionController::Parameters.new(person: {}).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: person
+ #
+ # When given an array of keys, the method tries to require each one of them in
+ # order. If it succeeds, an array with the respective return values is returned:
+ #
+ # params = ActionController::Parameters.new(user: { ... }, profile: { ... })
+ # user_params, profile_params = params.require([:user, :profile])
+ #
+ # Otherwise, the method re-raises the first exception found:
+ #
+ # params = ActionController::Parameters.new(user: {}, profile: {})
+ # user_params, profile_params = params.require([:user, :profile])
+ # # ActionController::ParameterMissing: param is missing or the value is empty or invalid: user
+ #
+ # This method is not recommended for fetching terminal values because it does
+ # not permit the values. For example, this can cause problems:
+ #
+ # # CAREFUL
+ # params = ActionController::Parameters.new(person: { name: "Finn" })
+ # name = params.require(:person).require(:name) # CAREFUL
+ #
+ # It is recommended to use `expect` instead:
+ #
+ # def person_params
+ # # params.expect(person: :name).require(:name)
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#532
+ def required(key); end
+
+ # Returns a new `ActionController::Parameters` instance with all keys from
+ # current hash merged into `other_hash`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1046
+ def reverse_merge(other_hash); end
+
+ # Returns the current `ActionController::Parameters` instance with current hash
+ # merged into `other_hash`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1055
+ def reverse_merge!(other_hash); end
+
+ # Returns a new `ActionController::Parameters` instance with only items that the
+ # block evaluates to true.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#961
+ def select(&block); end
+
+ # Equivalent to Hash#keep_if, but returns `nil` if no changes were made.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#966
+ def select!(&block); end
+
+ # Returns a new `ActionController::Parameters` instance that includes only the
+ # given `keys`. If the given `keys` don't exist, returns an empty hash.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.slice(:a, :b) # => #1, "b"=>2} permitted: false>
+ # params.slice(:d) # => #
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#865
+ def slice(*keys); end
+
+ # Returns the current `ActionController::Parameters` instance which contains
+ # only the given `keys`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#871
+ def slice!(*keys); end
+
+ # This is required by ActiveModel attribute assignment, so that user can pass
+ # `Parameters` to a mass assignment methods in a model. It should not matter as
+ # we are using `HashWithIndifferentAccess` internally.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1064
+ def stringify_keys; end
+
+ # Returns a safe ActiveSupport::HashWithIndifferentAccess representation of the
+ # parameters with all unpermitted keys removed.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_h
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name)
+ # safe_params.to_h # => {"name"=>"Senjougahara Hitagi"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#344
+ def to_h(&block); end
+
+ # Returns a safe `Hash` representation of the parameters with all unpermitted
+ # keys removed.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_hash
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name)
+ # safe_params.to_hash # => {"name"=>"Senjougahara Hitagi"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#364
+ def to_hash; end
+
+ # Returns a string representation of the receiver suitable for use as a URL
+ # query string:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # params.to_query
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.to_query
+ # # => "name=David&nationality=Danish"
+ #
+ # An optional namespace can be passed to enclose key names:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.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.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#394
+ def to_param(*args); end
+
+ # Returns a string representation of the receiver suitable for use as a URL
+ # query string:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # params.to_query
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.to_query
+ # # => "name=David&nationality=Danish"
+ #
+ # An optional namespace can be passed to enclose key names:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.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.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#394
+ def to_query(*args); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#249
+ def to_s(*_arg0, **_arg1, &_arg2); end
+
+ # Returns an unsafe, unfiltered ActiveSupport::HashWithIndifferentAccess
+ # representation of the parameters.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_unsafe_h
+ # # => {"name"=>"Senjougahara Hitagi", "oddity" => "Heavy stone crab"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#408
+ def to_unsafe_h; end
+
+ # Returns an unsafe, unfiltered ActiveSupport::HashWithIndifferentAccess
+ # representation of the parameters.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_unsafe_h
+ # # => {"name"=>"Senjougahara Hitagi", "oddity" => "Heavy stone crab"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#408
+ def to_unsafe_hash; end
+
+ # Returns a new `ActionController::Parameters` instance with the results of
+ # running `block` once for every key. The values are unchanged.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#919
+ def transform_keys(&block); end
+
+ # Performs keys transformation and returns the altered
+ # `ActionController::Parameters` instance.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#928
+ def transform_keys!(&block); end
+
+ # Returns a new `ActionController::Parameters` instance with the results of
+ # running `block` once for every value. The keys are unchanged.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.transform_values { |x| x * 2 }
+ # # => #2, "b"=>4, "c"=>6} permitted: false>
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#902
+ def transform_values; end
+
+ # Performs values transformation and returns the altered
+ # `ActionController::Parameters` instance.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#911
+ def transform_values!; end
+
+ # Returns true if the given value is present for some key in the parameters.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1010
+ def value?(value); end
+
+ # Returns a new array of the values of the parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#437
+ def values; end
+
+ # Returns values that were assigned to the given `keys`. Note that all the
+ # `Hash` objects will be converted to `ActionController::Parameters`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1018
+ def values_at(*keys); end
+
+ # Returns a new `ActionController::Parameters` instance with all keys from
+ # current hash merged into `other_hash`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1046
+ def with_defaults(other_hash); end
+
+ # Returns the current `ActionController::Parameters` instance with current hash
+ # merged into `other_hash`.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1055
+ def with_defaults!(other_hash); end
+
+ # Returns a new `ActionController::Parameters` instance that filters out the
+ # given `keys`.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.except(:a, :b) # => #3} permitted: false>
+ # params.except(:d) # => #1, "b"=>2, "c"=>3} permitted: false>
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#882
+ def without(*keys); end
+
+ protected
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1136
+ def each_nested_attribute; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1132
+ def nested_attributes?; end
+
+ # Returns the value of attribute parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1128
+ def parameters; end
+
+ # Filters self and optionally checks for unpermitted keys
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1143
+ def permit_filters(filters, on_unpermitted: T.unsafe(nil), explicit_arrays: T.unsafe(nil)); end
+
+ # Sets the attribute permitted
+ #
+ # @param value the value to set the attribute permitted to.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1130
+ def permitted=(_arg0); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1205
+ def _deep_transform_keys_in_object(object, &block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1224
+ def _deep_transform_keys_in_object!(object, &block); end
+
+ # When an array is expected, you must specify an array explicitly
+ # using the following format:
+ #
+ # params.expect(comments: [[:flavor]])
+ #
+ # Which will match only the following array formats:
+ #
+ # { pies: [{ flavor: "rhubarb" }, { flavor: "apple" }] }
+ # { pies: { "0" => { flavor: "key lime" }, "1" => { flavor: "mince" } } }
+ #
+ # When using `permit`, arrays are specified the same way as hashes:
+ #
+ # params.expect(pies: [:flavor])
+ #
+ # In this case, `permit` would also allow matching with a hash (or vice versa):
+ #
+ # { pies: { flavor: "cherry" } }
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1269
+ def array_filter?(filter); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1185
+ def convert_hashes_to_parameters(key, value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1169
+ def convert_parameters_to_hashes(value, using, &block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1191
+ def convert_value_to_parameters(value); end
+
+ # Called when an explicit array filter is encountered.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1274
+ def each_array_element(object, filter, &block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1365
+ def hash_filter(params, filter, on_unpermitted: T.unsafe(nil), explicit_arrays: T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1450
+ def initialize_copy(source); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1163
+ def new_instance_with_inherited_permitted_status(hash); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1359
+ def non_scalar?(value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1433
+ def permit_any_in_array(array); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1416
+ def permit_any_in_parameters(params); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1395
+ def permit_array_of_hashes(value, filter, on_unpermitted:, explicit_arrays:); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1391
+ def permit_array_of_scalars(value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1401
+ def permit_hash(value, filter, on_unpermitted:, explicit_arrays:); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1411
+ def permit_hash_or_array(value, filter, on_unpermitted:, explicit_arrays:); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1377
+ def permit_value(value, filter, on_unpermitted:, explicit_arrays:); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1330
+ def permitted_scalar?(value); end
+
+ # Adds existing keys to the params if their values are scalar.
+ #
+ # For example:
+ #
+ # puts self.keys #=> ["zipcode(90210i)"]
+ # params = {}
+ #
+ # permitted_scalar_filter(params, "zipcode")
+ #
+ # puts params.keys # => ["zipcode"]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1344
+ def permitted_scalar_filter(params, permitted_key); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1245
+ def specify_numeric_keys?(filter); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1299
+ def unpermitted_keys(params); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1285
+ def unpermitted_parameters!(params, on_unpermitted: T.unsafe(nil)); end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#164
+ def action_on_unpermitted_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#164
+ def action_on_unpermitted_parameters=(val); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#265
+ def allow_deprecated_parameters_hash_equality; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#272
+ def allow_deprecated_parameters_hash_equality=(value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#262
+ def always_permitted_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#262
+ def always_permitted_parameters=(val); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1072
+ def hook_into_yaml_loading; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#279
+ def nested_attribute?(key, value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#162
+ def permit_all_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#162
+ def permit_all_parameters=(val); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#1363
+ActionController::Parameters::EMPTY_ARRAY = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#1364
+ActionController::Parameters::EMPTY_HASH = T.let(T.unsafe(nil), Hash)
+
+# --- Filtering ----------------------------------------------------------
+#
+# This is a list of permitted scalar types that includes the ones supported in
+# XML and JSON requests.
+#
+# This list is in particular used to filter ordinary requests, String goes as
+# first element to quickly short-circuit the common case.
+#
+# If you modify this collection please update the one in the #permit doc as
+# well.
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#1314
+ActionController::Parameters::PERMITTED_SCALAR_TYPES = T.let(T.unsafe(nil), Array)
+
+# # Action Controller Params Wrapper
+#
+# Wraps the parameters hash into a nested hash. This will allow clients to
+# submit requests without having to specify any root elements.
+#
+# This functionality is enabled by default for JSON, and can be customized by
+# setting the format array:
+#
+# class ApplicationController < ActionController::Base
+# wrap_parameters format: [:json, :xml]
+# end
+#
+# You could also turn it on per controller:
+#
+# class UsersController < ApplicationController
+# wrap_parameters format: [:json, :xml, :url_encoded_form, :multipart_form]
+# end
+#
+# If you enable `ParamsWrapper` for `:json` format, instead of having to send
+# JSON parameters like this:
+#
+# {"user": {"name": "Konata"}}
+#
+# You can send parameters like this:
+#
+# {"name": "Konata"}
+#
+# And it will be wrapped into a nested hash with the key name matching the
+# controller's name. For example, if you're posting to `UsersController`, your
+# new `params` hash will look like this:
+#
+# {"name" => "Konata", "user" => {"name" => "Konata"}}
+#
+# You can also specify the key in which the parameters should be wrapped to, and
+# also the list of attributes it should wrap by using either `:include` or
+# `:exclude` options like this:
+#
+# class UsersController < ApplicationController
+# wrap_parameters :person, include: [:username, :password]
+# end
+#
+# On Active Record models with no `:include` or `:exclude` option set, it will
+# only wrap the parameters returned by the class method `attribute_names`.
+#
+# If you're going to pass the parameters to an `ActiveModel` object (such as
+# `User.new(params[:user])`), you might consider passing the model class to the
+# method instead. The `ParamsWrapper` will actually try to determine the list of
+# attribute names from the model and only wrap those attributes:
+#
+# class UsersController < ApplicationController
+# wrap_parameters Person
+# end
+#
+# You still could pass `:include` and `:exclude` to set the list of attributes
+# you want to wrap.
+#
+# By default, if you don't specify the key in which the parameters would be
+# wrapped to, `ParamsWrapper` will actually try to determine if there's a model
+# related to it or not. This controller, for example:
+#
+# class Admin::UsersController < ApplicationController
+# end
+#
+# will try to check if `Admin::User` or `User` model exists, and use it to
+# determine the wrapper key respectively. If both models don't exist, it will
+# then fall back to use `user` as the key.
+#
+# To disable this functionality for a controller:
+#
+# class UsersController < ApplicationController
+# wrap_parameters false
+# end
+#
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#83
+module ActionController::ParamsWrapper
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ParamsWrapper::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#277
+ def _extract_parameters(parameters); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#299
+ def _perform_parameter_wrapping; end
+
+ # Returns the list of parameters which will be selected for wrapped.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#273
+ def _wrap_parameters(parameters); end
+
+ # Checks if we should perform parameters wrapping.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#289
+ def _wrapper_enabled?; end
+
+ # Returns the list of enabled formats.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#268
+ def _wrapper_formats; end
+
+ # Returns the wrapper key which will be used to store wrapped parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#263
+ def _wrapper_key; end
+
+ # Performs parameters wrapping upon the request. Called automatically by the
+ # metal call stack.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#257
+ def process_action(*_arg0); end
+
+ module GeneratedClassMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#188
+module ActionController::ParamsWrapper::ClassMethods
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#189
+ def _set_wrapper_options(options); end
+
+ # Sets the default wrapper key or model which will be used to determine wrapper
+ # key and attribute names. Called automatically when the module is inherited.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#244
+ def inherited(klass); end
+
+ # Sets the name of the wrapper key, or the model which `ParamsWrapper` would use
+ # to determine the attribute names from.
+ #
+ # #### Examples
+ # wrap_parameters format: :xml
+ # # enables the parameter wrapper for XML format
+ #
+ # wrap_parameters :person
+ # # wraps parameters into +params[:person]+ hash
+ #
+ # wrap_parameters Person
+ # # wraps parameters by determining the wrapper key from Person class
+ # # (+person+, in this case) and the list of attribute names
+ #
+ # wrap_parameters include: [:username, :title]
+ # # wraps only +:username+ and +:title+ attributes from parameters.
+ #
+ # wrap_parameters false
+ # # disables parameters wrapping for this controller altogether.
+ #
+ # #### Options
+ # * `:format` - The list of formats in which the parameters wrapper will be
+ # enabled.
+ # * `:include` - The list of attribute names which parameters wrapper will
+ # wrap into a nested hash.
+ # * `:exclude` - The list of attribute names which parameters wrapper will
+ # exclude from a nested hash.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#221
+ def wrap_parameters(name_or_model_or_options, options = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#86
+ActionController::ParamsWrapper::EXCLUDE_PARAMETERS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#88
+class ActionController::ParamsWrapper::Options < ::Struct
+ # @return [Options] a new instance of Options
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#97
+ def initialize(name, format, include, exclude, klass, model); end
+
+ # Returns the value of attribute include
+ #
+ # @return [Object] the current value of include
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#108
+ def include; end
+
+ # Returns the value of attribute model
+ #
+ # @return [Object] the current value of model
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#104
+ def model; end
+
+ # Returns the value of attribute name
+ #
+ # @return [Object] the current value of name
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#141
+ def name; end
+
+ private
+
+ # Determine the wrapper model from the controller's name. By convention, this
+ # could be done by trying to find the defined model that has the same singular
+ # name as the controller. For example, `UsersController` will try to find if the
+ # `User` model exists.
+ #
+ # This method also does namespace lookup. Foo::Bar::UsersController will try to
+ # find Foo::Bar::User, Foo::User and finally User.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#165
+ def _default_wrap_model; end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#89
+ def from_hash(hash); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/permissions_policy.rb#6
+module ActionController::PermissionsPolicy
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::PermissionsPolicy::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/permissions_policy.rb#9
+module ActionController::PermissionsPolicy::ClassMethods
+ # Overrides parts of the globally configured `Feature-Policy` header:
+ #
+ # class PagesController < ApplicationController
+ # permissions_policy do |policy|
+ # policy.geolocation "https://example.com"
+ # end
+ # end
+ #
+ # Options can be passed similar to `before_action`. For example, pass `only:
+ # :index` to override the header on the index action only:
+ #
+ # class PagesController < ApplicationController
+ # permissions_policy(only: :index) do |policy|
+ # policy.camera :self
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/permissions_policy.rb#27
+ def permissions_policy(**options, &block); end
+end
+
+# source://actionpack//lib/action_controller/railtie.rb#13
+class ActionController::Railtie < ::Rails::Railtie; end
+
+# source://actionpack//lib/action_controller/railties/helpers.rb#6
+module ActionController::Railties; end
+
+# source://actionpack//lib/action_controller/railties/helpers.rb#7
+module ActionController::Railties::Helpers
+ # source://actionpack//lib/action_controller/railties/helpers.rb#8
+ def inherited(klass); end
+end
+
+# source://actionpack//lib/action_controller/metal/rate_limiting.rb#6
+module ActionController::RateLimiting
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::RateLimiting::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/rate_limiting.rb#61
+ def rate_limiting(to:, within:, by:, with:, store:, name:); end
+end
+
+# source://actionpack//lib/action_controller/metal/rate_limiting.rb#9
+module ActionController::RateLimiting::ClassMethods
+ # Applies a rate limit to all actions or those specified by the normal
+ # `before_action` filters with `only:` and `except:`.
+ #
+ # The maximum number of requests allowed is specified `to:` and constrained to
+ # the window of time given by `within:`.
+ #
+ # Rate limits are by default unique to the ip address making the request, but
+ # you can provide your own identity function by passing a callable in the `by:`
+ # parameter. It's evaluated within the context of the controller processing the
+ # request.
+ #
+ # Requests that exceed the rate limit are refused with a `429 Too Many Requests`
+ # response. You can specialize this by passing a callable in the `with:`
+ # parameter. It's evaluated within the context of the controller processing the
+ # request.
+ #
+ # Rate limiting relies on a backing `ActiveSupport::Cache` store and defaults to
+ # `config.action_controller.cache_store`, which itself defaults to the global
+ # `config.cache_store`. If you don't want to store rate limits in the same
+ # datastore as your general caches, you can pass a custom store in the `store`
+ # parameter.
+ #
+ # If you want to use multiple rate limits per controller, you need to give each of
+ # them and explicit name via the `name:` option.
+ #
+ # Examples:
+ #
+ # class SessionsController < ApplicationController
+ # rate_limit to: 10, within: 3.minutes, only: :create
+ # end
+ #
+ # class SignupsController < ApplicationController
+ # rate_limit to: 1000, within: 10.seconds,
+ # by: -> { request.domain }, with: -> { redirect_to busy_controller_url, alert: "Too many signups on domain!" }, only: :new
+ # end
+ #
+ # class APIController < ApplicationController
+ # RATE_LIMIT_STORE = ActiveSupport::Cache::RedisCacheStore.new(url: ENV["REDIS_URL"])
+ # rate_limit to: 10, within: 3.minutes, store: RATE_LIMIT_STORE
+ # end
+ #
+ # class SessionsController < ApplicationController
+ # rate_limit to: 3, within: 2.seconds, name: "short-term"
+ # rate_limit to: 10, within: 5.minutes, name: "long-term"
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/rate_limiting.rb#55
+ def rate_limit(to:, within:, by: T.unsafe(nil), with: T.unsafe(nil), store: T.unsafe(nil), name: T.unsafe(nil), **options); end
+end
+
+# source://actionpack//lib/action_controller/metal/redirecting.rb#6
+module ActionController::Redirecting
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Benchmarkable
+ include ::AbstractController::Logger
+ include ::ActionDispatch::Routing::UrlFor
+ include ::AbstractController::UrlFor
+ include ::ActionController::UrlFor
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#158
+ def _compute_redirect_to_location(request, options); end
+
+ # Soft deprecated alias for #redirect_back_or_to where the `fallback_location`
+ # location is supplied as a keyword argument instead of the first positional
+ # argument.
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#121
+ def redirect_back(fallback_location:, allow_other_host: T.unsafe(nil), **args); end
+
+ # Redirects the browser to the page that issued the request (the referrer) if
+ # possible, otherwise redirects to the provided default fallback location.
+ #
+ # The referrer information is pulled from the HTTP `Referer` (sic) header on the
+ # request. This is an optional header and its presence on the request is subject
+ # to browser security settings and user preferences. If the request is missing
+ # this header, the `fallback_location` will be used.
+ #
+ # redirect_back_or_to({ action: "show", id: 5 })
+ # redirect_back_or_to @post
+ # redirect_back_or_to "http://www.rubyonrails.org"
+ # redirect_back_or_to "/images/screenshot.jpg"
+ # redirect_back_or_to posts_url
+ # redirect_back_or_to proc { edit_post_url(@post) }
+ # redirect_back_or_to '/', allow_other_host: false
+ #
+ # #### Options
+ # * `:allow_other_host` - Allow or disallow redirection to the host that is
+ # different to the current host, defaults to true.
+ #
+ #
+ # All other options that can be passed to #redirect_to are accepted as options,
+ # and the behavior is identical.
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#148
+ def redirect_back_or_to(fallback_location, allow_other_host: T.unsafe(nil), **options); end
+
+ # Redirects the browser to the target specified in `options`. This parameter can
+ # be any one of:
+ #
+ # * `Hash` - The URL will be generated by calling url_for with the `options`.
+ # * `Record` - The URL will be generated by calling url_for with the
+ # `options`, which will reference a named URL for that record.
+ # * `String` starting with `protocol://` (like `http://`) or a protocol
+ # relative reference (like `//`) - Is passed straight through as the target
+ # for redirection.
+ # * `String` not containing a protocol - The current protocol and host is
+ # prepended to the string.
+ # * `Proc` - A block that will be executed in the controller's context. Should
+ # return any option accepted by `redirect_to`.
+ #
+ #
+ # ### Examples
+ #
+ # redirect_to action: "show", id: 5
+ # redirect_to @post
+ # redirect_to "http://www.rubyonrails.org"
+ # redirect_to "/images/screenshot.jpg"
+ # redirect_to posts_url
+ # redirect_to proc { edit_post_url(@post) }
+ #
+ # The redirection happens as a `302 Found` header unless otherwise specified
+ # using the `:status` option:
+ #
+ # redirect_to post_url(@post), status: :found
+ # redirect_to action: 'atom', status: :moved_permanently
+ # redirect_to post_url(@post), status: 301
+ # redirect_to action: 'atom', status: 302
+ #
+ # The status code can either be a standard [HTTP Status
+ # code](https://www.iana.org/assignments/http-status-codes) as an integer, or a
+ # symbol representing the downcased, underscored and symbolized description.
+ # Note that the status code must be a 3xx HTTP code, or redirection will not
+ # occur.
+ #
+ # If you are using XHR requests other than GET or POST and redirecting after the
+ # request then some browsers will follow the redirect using the original request
+ # method. This may lead to undesirable behavior such as a double DELETE. To work
+ # around this you can return a `303 See Other` status code which will be
+ # followed using a GET request.
+ #
+ # redirect_to posts_url, status: :see_other
+ # redirect_to action: 'index', status: 303
+ #
+ # It is also possible to assign a flash message as part of the redirection.
+ # There are two special accessors for the commonly used flash names `alert` and
+ # `notice` as well as a general purpose `flash` bucket.
+ #
+ # redirect_to post_url(@post), alert: "Watch it, mister!"
+ # redirect_to post_url(@post), status: :found, notice: "Pay attention to the road"
+ # redirect_to post_url(@post), status: 301, flash: { updated_post_id: @post.id }
+ # redirect_to({ action: 'atom' }, alert: "Something serious happened")
+ #
+ # Statements after `redirect_to` in our controller get executed, so
+ # `redirect_to` doesn't stop the execution of the function. To terminate the
+ # execution of the function immediately after the `redirect_to`, use return.
+ #
+ # redirect_to post_url(@post) and return
+ #
+ # ### Open Redirect protection
+ #
+ # By default, Rails protects against redirecting to external hosts for your
+ # app's safety, so called open redirects. Note: this was a new default in Rails
+ # 7.0, after upgrading opt-in by uncommenting the line with
+ # `raise_on_open_redirects` in
+ # `config/initializers/new_framework_defaults_7_0.rb`
+ #
+ # Here #redirect_to automatically validates the potentially-unsafe URL:
+ #
+ # redirect_to params[:redirect_url]
+ #
+ # Raises UnsafeRedirectError in the case of an unsafe redirect.
+ #
+ # To allow any external redirects pass `allow_other_host: true`, though using a
+ # user-provided param in that case is unsafe.
+ #
+ # redirect_to "https://rubyonrails.org", allow_other_host: true
+ #
+ # See #url_from for more information on what an internal and safe URL is, or how
+ # to fall back to an alternate redirect URL in the unsafe case.
+ #
+ # @raise [ActionControllerError]
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#103
+ def redirect_to(options = T.unsafe(nil), response_options = T.unsafe(nil)); end
+
+ # Verifies the passed `location` is an internal URL that's safe to redirect to
+ # and returns it, or nil if not. Useful to wrap a params provided redirect URL
+ # and fall back to an alternate URL to redirect to:
+ #
+ # redirect_to url_from(params[:redirect_url]) || root_url
+ #
+ # The `location` is considered internal, and safe, if it's on the same host as
+ # `request.host`:
+ #
+ # # If request.host is example.com:
+ # url_from("https://example.com/profile") # => "https://example.com/profile"
+ # url_from("http://example.com/profile") # => "http://example.com/profile"
+ # url_from("http://evil.com/profile") # => nil
+ #
+ # Subdomains are considered part of the host:
+ #
+ # # If request.host is on https://example.com or https://app.example.com, you'd get:
+ # url_from("https://dev.example.com/profile") # => nil
+ #
+ # NOTE: there's a similarity with
+ # [url_for](rdoc-ref:ActionDispatch::Routing::UrlFor#url_for), which generates
+ # an internal URL from various options from within the app, e.g.
+ # `url_for(@post)`. However, #url_from is meant to take an external parameter to
+ # verify as in `url_from(params[:redirect_url])`.
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#202
+ def url_from(location); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#208
+ def _allow_other_host; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#222
+ def _enforce_open_redirect_protection(location, allow_other_host:); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#241
+ def _ensure_url_is_http_header_safe(url); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#212
+ def _extract_redirect_to_status(options, response_options); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#230
+ def _url_host_allowed?(url); end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#158
+ def _compute_redirect_to_location(request, options); end
+ end
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/redirecting.rb#14
+ActionController::Redirecting::ILLEGAL_HEADER_VALUE_REGEX = T.let(T.unsafe(nil), Regexp)
+
+# source://actionpack//lib/action_controller/metal/redirecting.rb#12
+class ActionController::Redirecting::UnsafeRedirectError < ::StandardError; end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#16
+class ActionController::RenderError < ::ActionController::ActionControllerError; end
+
+# # Action Controller Renderer
+#
+# ActionController::Renderer allows you to render arbitrary templates without
+# being inside a controller action.
+#
+# You can get a renderer instance by calling `renderer` on a controller class:
+#
+# ApplicationController.renderer
+# PostsController.renderer
+#
+# and render a template by calling the #render method:
+#
+# ApplicationController.renderer.render template: "posts/show", assigns: { post: Post.first }
+# PostsController.renderer.render :show, assigns: { post: Post.first }
+#
+# As a shortcut, you can also call `render` directly on the controller class
+# itself:
+#
+# ApplicationController.render template: "posts/show", assigns: { post: Post.first }
+# PostsController.render :show, assigns: { post: Post.first }
+#
+# source://actionpack//lib/action_controller/renderer.rb#27
+class ActionController::Renderer
+ # Initializes a new Renderer.
+ #
+ # #### Parameters
+ #
+ # * `controller` - The controller class to instantiate for rendering.
+ # * `env` - The Rack env to use for mocking a request when rendering. Entries
+ # can be typical Rack env keys and values, or they can be any of the
+ # following, which will be converted appropriately:
+ # * `:http_host` - The HTTP host for the incoming request. Converts to
+ # Rack's `HTTP_HOST`.
+ # * `:https` - Boolean indicating whether the incoming request uses HTTPS.
+ # Converts to Rack's `HTTPS`.
+ # * `:method` - The HTTP method for the incoming request,
+ # case-insensitive. Converts to Rack's `REQUEST_METHOD`.
+ # * `:script_name` - The portion of the incoming request's URL path that
+ # corresponds to the application. Converts to Rack's `SCRIPT_NAME`.
+ # * `:input` - The input stream. Converts to Rack's `rack.input`.
+ #
+ # * `defaults` - Default values for the Rack env. Entries are specified in the
+ # same format as `env`. `env` will be merged on top of these values.
+ # `defaults` will be retained when calling #new on a renderer instance.
+ #
+ #
+ # If no `http_host` is specified, the env HTTP host will be derived from the
+ # routes' `default_url_options`. In this case, the `https` boolean and the
+ # `script_name` will also be derived from `default_url_options` if they were not
+ # specified. Additionally, the `https` boolean will fall back to
+ # `Rails.application.config.force_ssl` if `default_url_options` does not specify
+ # a `protocol`.
+ #
+ # @return [Renderer] a new instance of Renderer
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#111
+ def initialize(controller, env, defaults); end
+
+ # Returns the value of attribute controller.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#28
+ def controller; end
+
+ # source://actionpack//lib/action_controller/renderer.rb#122
+ def defaults; end
+
+ # Creates a new renderer using the same controller, but with a new Rack env.
+ #
+ # ApplicationController.renderer.new(method: "post")
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#72
+ def new(env = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/renderer.rb#151
+ def normalize_env(env, &_arg1); end
+
+ # Renders a template to a string, just like
+ # ActionController::Rendering#render_to_string.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#129
+ def render(*args); end
+
+ # Renders a template to a string, just like
+ # ActionController::Rendering#render_to_string.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#129
+ def render_to_string(*args); end
+
+ # Creates a new renderer using the same controller, but with the given defaults
+ # merged on top of the previous defaults.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#78
+ def with_defaults(defaults); end
+
+ private
+
+ # source://actionpack//lib/action_controller/renderer.rb#153
+ def env_for_request; end
+
+ class << self
+ # Creates a new renderer using the given controller class. See ::new.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#64
+ def for(controller, env = T.unsafe(nil), defaults = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/renderer.rb#35
+ def normalize_env(env); end
+ end
+end
+
+# source://actionpack//lib/action_controller/renderer.rb#30
+ActionController::Renderer::DEFAULTS = T.let(T.unsafe(nil), Hash)
+
+# source://actionpack//lib/action_controller/renderer.rb#149
+ActionController::Renderer::DEFAULT_ENV = T.let(T.unsafe(nil), Hash)
+
+# source://actionpack//lib/action_controller/renderer.rb#141
+ActionController::Renderer::RACK_KEY_TRANSLATION = T.let(T.unsafe(nil), Hash)
+
+# source://actionpack//lib/action_controller/metal/renderers.rb#25
+module ActionController::Renderers
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::Renderers::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#145
+ def _render_to_body_with_renderer(options); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#172
+ def _render_with_renderer_js(js, options); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#156
+ def _render_with_renderer_json(json, options); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#177
+ def _render_with_renderer_xml(xml, options); end
+
+ # Called by `render` in AbstractController::Rendering which sets the return
+ # value as the `response_body`.
+ #
+ # If no renderer is found, `super` returns control to
+ # `ActionView::Rendering.render_to_body`, if present.
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#141
+ def render_to_body(options); end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/renderers.rb#91
+ def _render_with_renderer_method_name(key); end
+
+ # Adds a new renderer to call within controller actions. A renderer is invoked
+ # by passing its name as an option to AbstractController::Rendering#render. To
+ # create a renderer pass it a name and a block. The block takes two arguments,
+ # the first is the value paired with its key and the second is the remaining
+ # hash of options passed to `render`.
+ #
+ # Create a csv renderer:
+ #
+ # ActionController::Renderers.add :csv do |obj, options|
+ # filename = options[:filename] || 'data'
+ # str = obj.respond_to?(:to_csv) ? obj.to_csv : obj.to_s
+ # send_data str, type: Mime[:csv],
+ # disposition: "attachment; filename=#{filename}.csv"
+ # end
+ #
+ # Note that we used [Mime](:csv) for the csv mime type as it comes with Rails.
+ # For a custom renderer, you'll need to register a mime type with
+ # `Mime::Type.register`.
+ #
+ # To use the csv renderer in a controller action:
+ #
+ # def show
+ # @csvable = Csvable.find(params[:id])
+ # respond_to do |format|
+ # format.html
+ # format.csv { render csv: @csvable, filename: @csvable.name }
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#75
+ def add(key, &block); end
+
+ # This method is the opposite of add method.
+ #
+ # To remove a csv renderer:
+ #
+ # ActionController::Renderers.remove(:csv)
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#85
+ def remove(key); end
+ end
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
+
+# Used in ActionController::Base and ActionController::API to include all
+# renderers by default.
+#
+# source://actionpack//lib/action_controller/metal/renderers.rb#38
+module ActionController::Renderers::All
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionController::Renderers
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::Renderers::ClassMethods
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/renderers.rb#95
+module ActionController::Renderers::ClassMethods
+ # Adds, by name, a renderer or renderers to the `_renderers` available to call
+ # within controller actions.
+ #
+ # It is useful when rendering from an ActionController::Metal controller or
+ # otherwise to add an available renderer proc to a specific controller.
+ #
+ # Both ActionController::Base and ActionController::API include
+ # ActionController::Renderers::All, making all renderers available in the
+ # controller. See Renderers::RENDERERS and Renderers.add.
+ #
+ # Since ActionController::Metal controllers cannot render, the controller must
+ # include AbstractController::Rendering, ActionController::Rendering, and
+ # ActionController::Renderers, and have at least one renderer.
+ #
+ # Rather than including ActionController::Renderers::All and including all
+ # renderers, you may specify which renderers to include by passing the renderer
+ # name or names to `use_renderers`. For example, a controller that includes only
+ # the `:json` renderer (`_render_with_renderer_json`) might look like:
+ #
+ # class MetalRenderingController < ActionController::Metal
+ # include AbstractController::Rendering
+ # include ActionController::Rendering
+ # include ActionController::Renderers
+ #
+ # use_renderers :json
+ #
+ # def show
+ # render json: record
+ # end
+ # end
+ #
+ # You must specify a `use_renderer`, else the `controller.renderer` and
+ # `controller._renderers` will be `nil`, and the action will fail.
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#129
+ def use_renderer(*args); end
+
+ # Adds, by name, a renderer or renderers to the `_renderers` available to call
+ # within controller actions.
+ #
+ # It is useful when rendering from an ActionController::Metal controller or
+ # otherwise to add an available renderer proc to a specific controller.
+ #
+ # Both ActionController::Base and ActionController::API include
+ # ActionController::Renderers::All, making all renderers available in the
+ # controller. See Renderers::RENDERERS and Renderers.add.
+ #
+ # Since ActionController::Metal controllers cannot render, the controller must
+ # include AbstractController::Rendering, ActionController::Rendering, and
+ # ActionController::Renderers, and have at least one renderer.
+ #
+ # Rather than including ActionController::Renderers::All and including all
+ # renderers, you may specify which renderers to include by passing the renderer
+ # name or names to `use_renderers`. For example, a controller that includes only
+ # the `:json` renderer (`_render_with_renderer_json`) might look like:
+ #
+ # class MetalRenderingController < ActionController::Metal
+ # include AbstractController::Rendering
+ # include ActionController::Rendering
+ # include ActionController::Renderers
+ #
+ # use_renderers :json
+ #
+ # def show
+ # render json: record
+ # end
+ # end
+ #
+ # You must specify a `use_renderer`, else the `controller.renderer` and
+ # `controller._renderers` will be `nil`, and the action will fail.
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#129
+ def use_renderers(*args); end
+end
+
+# A Set containing renderer names that correspond to available renderer procs.
+# Default values are `:json`, `:js`, `:xml`.
+#
+# source://actionpack//lib/action_controller/metal/renderers.rb#30
+ActionController::Renderers::RENDERERS = T.let(T.unsafe(nil), Set)
+
+# source://actionpack//lib/action_controller/metal/rendering.rb#6
+module ActionController::Rendering
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+
+ # Renders a template and assigns the result to `self.response_body`.
+ #
+ # If no rendering mode option is specified, the template will be derived from
+ # the first argument.
+ #
+ # render "posts/show"
+ # # => renders app/views/posts/show.html.erb
+ #
+ # # In a PostsController action...
+ # render :show
+ # # => renders app/views/posts/show.html.erb
+ #
+ # If the first argument responds to `render_in`, the template will be rendered
+ # by calling `render_in` with the current view context.
+ #
+ # class Greeting
+ # def render_in(view_context)
+ # view_context.render html: "
Hello, World
"
+ # end
+ #
+ # def format
+ # :html
+ # end
+ # end
+ #
+ # render(Greeting.new)
+ # # => "
"
+ #
+ # #### Rendering Mode
+ #
+ # `:partial`
+ # : See ActionView::PartialRenderer for details.
+ #
+ # render partial: "posts/form", locals: { post: Post.new }
+ # # => renders app/views/posts/_form.html.erb
+ #
+ # `:file`
+ # : Renders the contents of a file. This option should **not** be used with
+ # unsanitized user input.
+ #
+ # render file: "/path/to/some/file"
+ # # => renders /path/to/some/file
+ #
+ # `:inline`
+ # : Renders an ERB template string.
+ #
+ # @name = "World"
+ # render inline: "
Hello, <%= @name %>!
"
+ # # => renders "
Hello, World!
"
+ #
+ # `:body`
+ # : Renders the provided text, and sets the content type as `text/plain`.
+ #
+ # render body: "Hello, World!"
+ # # => renders "Hello, World!"
+ #
+ # `:plain`
+ # : Renders the provided text, and sets the content type as `text/plain`.
+ #
+ # render plain: "Hello, World!"
+ # # => renders "Hello, World!"
+ #
+ # `:html`
+ # : Renders the provided HTML string, and sets the content type as
+ # `text/html`. If the string is not `html_safe?`, performs HTML escaping on
+ # the string before rendering.
+ #
+ # render html: "
Hello, World!
".html_safe
+ # # => renders "
Hello, World!
"
+ #
+ # render html: "
Hello, World!
"
+ # # => renders "<h1>Hello, World!</h1>"
+ #
+ # `:json`
+ # : Renders the provided object as JSON, and sets the content type as
+ # `application/json`. If the object is not a string, it will be converted to
+ # JSON by calling `to_json`.
+ #
+ # render json: { hello: "world" }
+ # # => renders "{\"hello\":\"world\"}"
+ #
+ # `:renderable`
+ # : Renders the provided object by calling `render_in` with the current view
+ # context. The response format is determined by calling `format` on the
+ # renderable if it responds to `format`, falling back to `text/html` by
+ # default.
+ #
+ # render renderable: Greeting.new
+ # # => renders "
Hello, World
"
+ #
+ #
+ # By default, when a rendering mode is specified, no layout template is
+ # rendered.
+ #
+ # #### Options
+ #
+ # `:assigns`
+ # : Hash of instance variable assignments for the template.
+ #
+ # render inline: "
Hello, <%= @name %>!
", assigns: { name: "World" }
+ # # => renders "
Hello, World!
"
+ #
+ # `:locals`
+ # : Hash of local variable assignments for the template.
+ #
+ # render inline: "
Hello, <%= name %>!
", locals: { name: "World" }
+ # # => renders "
Hello, World!
"
+ #
+ # `:layout`
+ # : The layout template to render. Can also be `false` or `true` to disable or
+ # (re)enable the default layout template.
+ #
+ # render "posts/show", layout: "holiday"
+ # # => renders app/views/posts/show.html.erb with the app/views/layouts/holiday.html.erb layout
+ #
+ # render "posts/show", layout: false
+ # # => renders app/views/posts/show.html.erb with no layout
+ #
+ # render inline: "
Hello, World!
", layout: true
+ # # => renders "
Hello, World!
" with the default layout
+ #
+ # `:status`
+ # : The HTTP status code to send with the response. Can be specified as a
+ # number or as the status name in Symbol form. Defaults to 200.
+ #
+ # render "posts/new", status: 422
+ # # => renders app/views/posts/new.html.erb with HTTP status code 422
+ #
+ # render "posts/new", status: :unprocessable_entity
+ # # => renders app/views/posts/new.html.erb with HTTP status code 422
+ #
+ # --
+ # Check for double render errors and set the content_type after rendering.
+ #
+ # @raise [::AbstractController::DoubleRenderError]
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#165
+ def render(*args); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#185
+ def render_to_body(options = T.unsafe(nil)); end
+
+ # Similar to #render, but only returns the rendered template as a string,
+ # instead of setting `self.response_body`.
+ # --
+ # Override render_to_string because body can now be set to a Rack body.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#174
+ def render_to_string(*_arg0); end
+
+ private
+
+ # Normalize both text and status options.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#227
+ def _normalize_options(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#241
+ def _normalize_text(options); end
+
+ # Process controller specific options, as status, content-type and location.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#250
+ def _process_options(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#196
+ def _process_variant(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#202
+ def _render_in_priorities(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#210
+ def _set_html_content_type; end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#214
+ def _set_rendered_content_type(format); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#220
+ def _set_vary_header; end
+
+ # Before processing, set the request formats in current controller formats.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#191
+ def process_action(*_arg0); end
+end
+
+# source://actionpack//lib/action_controller/metal/rendering.rb#11
+module ActionController::Rendering::ClassMethods
+ # source://actionpack//lib/action_controller/metal/rendering.rb#23
+ def inherited(klass); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#13
+ def render(*_arg0, **_arg1, &_arg2); end
+
+ # Returns a renderer instance (inherited from ActionController::Renderer) for
+ # the controller.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#17
+ def renderer; end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#19
+ def setup_renderer!; end
+end
+
+# source://actionpack//lib/action_controller/metal/rendering.rb#9
+ActionController::Rendering::RENDER_FORMATS_IN_PRIORITY = T.let(T.unsafe(nil), Array)
+
+# # Action Controller Request Forgery Protection
+#
+# Controller actions are protected from Cross-Site Request Forgery (CSRF)
+# attacks by including a token in the rendered HTML for your application. This
+# token is stored as a random string in the session, to which an attacker does
+# not have access. When a request reaches your application, Rails verifies the
+# received token with the token in the session. All requests are checked except
+# GET requests as these should be idempotent. Keep in mind that all
+# session-oriented requests are CSRF protected by default, including JavaScript
+# and HTML requests.
+#
+# Since HTML and JavaScript requests are typically made from the browser, we
+# need to ensure to verify request authenticity for the web browser. We can use
+# session-oriented authentication for these types of requests, by using the
+# `protect_from_forgery` method in our controllers.
+#
+# GET requests are not protected since they don't have side effects like writing
+# to the database and don't leak sensitive information. JavaScript requests are
+# an exception: a third-party site can use a