# typed: true

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


# source://erubi//lib/erubi.rb#3
module Erubi
  private

  def h(_arg0); end

  class << self
    def h(_arg0); end
  end
end

# source://erubi//lib/erubi.rb#51
class Erubi::Engine
  # Initialize a new Erubi::Engine.  Options:
  # +:bufval+ :: The value to use for the buffer variable, as a string (default <tt>'::String.new'</tt>).
  # +:bufvar+ :: The variable name to use for the buffer variable, as a string.
  # +:chain_appends+ :: Whether to chain <tt><<</t> calls to the buffer variable. Offers better
  #                     performance, but can cause issues when the buffer variable is reassigned during
  #                     template rendering (default +false+).
  # +:ensure+ :: Wrap the template in a begin/ensure block restoring the previous value of bufvar.
  # +:escapefunc+ :: The function to use for escaping, as a string (default: <tt>'::Erubi.h'</tt>).
  # +:escape+ :: Whether to make <tt><%=</tt> escape by default, and <tt><%==</tt> not escape by default.
  # +:escape_html+ :: Same as +:escape+, with lower priority.
  # +:filename+ :: The filename for the template.
  #              the resulting source code.  Note this may cause problems if you are wrapping the resulting
  #              source code in other code, because the magic comment only has an effect at the beginning of
  #              the file, and having the magic comment later in the file can trigger warnings.
  # +:freeze_template_literals+ :: Whether to suffix all literal strings for template code with <tt>.freeze</tt>
  #                                (default: +true+ on Ruby 2.1+, +false+ on Ruby 2.0 and older).
  #                                Can be set to +false+ on Ruby 2.3+ when frozen string literals are enabled
  #                                in order to improve performance.
  # +:literal_prefix+ :: The prefix to output when using escaped tag delimiters (default <tt>'<%'</tt>).
  # +:literal_postfix+ :: The postfix to output when using escaped tag delimiters (default <tt>'%>'</tt>).
  # +:outvar+ :: Same as +:bufvar+, with lower priority.
  # +:postamble+ :: The postamble for the template, by default returns the resulting source code.
  # +:preamble+ :: The preamble for the template, by default initializes the buffer variable.
  # +:regexp+ :: The regexp to use for scanning.
  # +:src+ :: The initial value to use for the source code, an empty string by default.
  # +:trim+ :: Whether to trim leading and trailing whitespace, true by default.
  #
  # @return [Engine] a new instance of Engine
  #
  # source://erubi//lib/erubi.rb#91
  def initialize(input, properties = T.unsafe(nil)); end

  # The variable name used for the buffer variable.
  #
  # source://erubi//lib/erubi.rb#62
  def bufvar; end

  # The filename of the template, if one was given.
  #
  # source://erubi//lib/erubi.rb#59
  def filename; end

  # The frozen ruby source code generated from the template, which can be evaled.
  #
  # source://erubi//lib/erubi.rb#56
  def src; end

  private

  # :nocov:
  #
  # source://erubi//lib/erubi.rb#209
  def _dup_string_if_frozen(string); end

  # Add ruby code to the template
  #
  # source://erubi//lib/erubi.rb#232
  def add_code(code); end

  # Add the given ruby expression result to the template,
  # escaping it based on the indicator given and escape flag.
  #
  # source://erubi//lib/erubi.rb#241
  def add_expression(indicator, code); end

  # Add the result of Ruby expression to the template
  #
  # source://erubi//lib/erubi.rb#250
  def add_expression_result(code); end

  # Add the escaped result of Ruby expression to the template
  #
  # source://erubi//lib/erubi.rb#255
  def add_expression_result_escaped(code); end

  # Add the given postamble to the src.  Can be overridden in subclasses
  # to make additional changes to src that depend on the current state.
  #
  # source://erubi//lib/erubi.rb#261
  def add_postamble(postamble); end

  # Add raw text to the template.  Modifies argument if argument is mutable as a memory optimization.
  # Must be called with a string, cannot be called with nil (Rails's subclass depends on it).
  #
  # source://erubi//lib/erubi.rb#222
  def add_text(text); end

  # Raise an exception, as the base engine class does not support handling other indicators.
  #
  # @raise [ArgumentError]
  #
  # source://erubi//lib/erubi.rb#267
  def handle(indicator, code, tailch, rspace, lspace); end

  # Make sure that any current expression has been terminated.
  # The default is to terminate all expressions, but when
  # the chain_appends option is used, expressions may not be
  # terminated.
  #
  # source://erubi//lib/erubi.rb#295
  def terminate_expression; end

  # Make sure the buffer variable is the target of the next append
  # before yielding to the block. Mark that the buffer is the target
  # of the next append after the block executes.
  #
  # This method should only be called if the block will result in
  # code where << will append to the bufvar.
  #
  # source://erubi//lib/erubi.rb#277
  def with_buffer; end
end

# The default regular expression used for scanning.
#
# source://erubi//lib/erubi.rb#53
Erubi::Engine::DEFAULT_REGEXP = T.let(T.unsafe(nil), Regexp)

# source://erubi//lib/erubi.rb#17
Erubi::FREEZE_TEMPLATE_LITERALS = T.let(T.unsafe(nil), TrueClass)

# source://erubi//lib/erubi.rb#15
Erubi::MATCH_METHOD = T.let(T.unsafe(nil), Symbol)

# source://erubi//lib/erubi.rb#8
Erubi::RANGE_FIRST = T.let(T.unsafe(nil), Integer)

# source://erubi//lib/erubi.rb#9
Erubi::RANGE_LAST = T.let(T.unsafe(nil), Integer)

# source://erubi//lib/erubi.rb#16
Erubi::SKIP_DEFINED_FOR_INSTANCE_VARIABLE = T.let(T.unsafe(nil), TrueClass)

# source://erubi//lib/erubi.rb#4
Erubi::VERSION = T.let(T.unsafe(nil), String)
