# typed: true

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

# The Base64 module provides for the encoding (#encode64, #strict_encode64,
# #urlsafe_encode64) and decoding (#decode64, #strict_decode64,
# #urlsafe_decode64) of binary data using a Base64 representation.
#
# == Example
#
# A simple encoding and decoding.
#
#     require "base64"
#
#     enc   = Base64.encode64('Send reinforcements')
#                         # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n"
#     plain = Base64.decode64(enc)
#                         # -> "Send reinforcements"
#
# The purpose of using base64 to encode data is that it translates any
# binary data into purely printable characters.
module Base64
  private

  # Returns the Base64-decoded version of +str+.
  # This method complies with RFC 2045.
  # Characters outside the base alphabet are ignored.
  #
  #   require 'base64'
  #   str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
  #         'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
  #         'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
  #   puts Base64.decode64(str)
  #
  # <i>Generates:</i>
  #
  #    This is line one
  #    This is line two
  #    This is line three
  #    And so on...
  #
  # source://base64//base64.rb#58
  def decode64(str); end

  # Returns the Base64-encoded version of +bin+.
  # This method complies with RFC 2045.
  # Line feeds are added to every 60 encoded characters.
  #
  #    require 'base64'
  #    Base64.encode64("Now is the time for all good coders\nto learn Ruby")
  #
  # <i>Generates:</i>
  #
  #    Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
  #    UnVieQ==
  #
  # source://base64//base64.rb#38
  def encode64(bin); end

  # Returns the Base64-decoded version of +str+.
  # This method complies with RFC 4648.
  # ArgumentError is raised if +str+ is incorrectly padded or contains
  # non-alphabet characters.  Note that CR or LF are also rejected.
  #
  # source://base64//base64.rb#73
  def strict_decode64(str); end

  # Returns the Base64-encoded version of +bin+.
  # This method complies with RFC 4648.
  # No line feeds are added.
  #
  # source://base64//base64.rb#65
  def strict_encode64(bin); end

  # Returns the Base64-decoded version of +str+.
  # This method complies with ``Base 64 Encoding with URL and Filename Safe
  # Alphabet'' in RFC 4648.
  # The alphabet uses '-' instead of '+' and '_' instead of '/'.
  #
  # The padding character is optional.
  # This method accepts both correctly-padded and unpadded input.
  # Note that it still rejects incorrectly-padded input.
  #
  # source://base64//base64.rb#98
  def urlsafe_decode64(str); end

  # Returns the Base64-encoded version of +bin+.
  # This method complies with ``Base 64 Encoding with URL and Filename Safe
  # Alphabet'' in RFC 4648.
  # The alphabet uses '-' instead of '+' and '_' instead of '/'.
  # Note that the result can still contain '='.
  # You can remove the padding by setting +padding+ as false.
  #
  # source://base64//base64.rb#83
  def urlsafe_encode64(bin, padding: T.unsafe(nil)); end

  class << self
    # Returns the Base64-decoded version of +str+.
    # This method complies with RFC 2045.
    # Characters outside the base alphabet are ignored.
    #
    #   require 'base64'
    #   str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
    #         'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
    #         'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
    #   puts Base64.decode64(str)
    #
    # <i>Generates:</i>
    #
    #    This is line one
    #    This is line two
    #    This is line three
    #    And so on...
    #
    # source://base64//base64.rb#58
    def decode64(str); end

    # Returns the Base64-encoded version of +bin+.
    # This method complies with RFC 2045.
    # Line feeds are added to every 60 encoded characters.
    #
    #    require 'base64'
    #    Base64.encode64("Now is the time for all good coders\nto learn Ruby")
    #
    # <i>Generates:</i>
    #
    #    Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
    #    UnVieQ==
    #
    # source://base64//base64.rb#38
    def encode64(bin); end

    # Returns the Base64-decoded version of +str+.
    # This method complies with RFC 4648.
    # ArgumentError is raised if +str+ is incorrectly padded or contains
    # non-alphabet characters.  Note that CR or LF are also rejected.
    #
    # source://base64//base64.rb#73
    def strict_decode64(str); end

    # Returns the Base64-encoded version of +bin+.
    # This method complies with RFC 4648.
    # No line feeds are added.
    #
    # source://base64//base64.rb#65
    def strict_encode64(bin); end

    # Returns the Base64-decoded version of +str+.
    # This method complies with ``Base 64 Encoding with URL and Filename Safe
    # Alphabet'' in RFC 4648.
    # The alphabet uses '-' instead of '+' and '_' instead of '/'.
    #
    # The padding character is optional.
    # This method accepts both correctly-padded and unpadded input.
    # Note that it still rejects incorrectly-padded input.
    #
    # source://base64//base64.rb#98
    def urlsafe_decode64(str); end

    # Returns the Base64-encoded version of +bin+.
    # This method complies with ``Base 64 Encoding with URL and Filename Safe
    # Alphabet'' in RFC 4648.
    # The alphabet uses '-' instead of '+' and '_' instead of '/'.
    # Note that the result can still contain '='.
    # You can remove the padding by setting +padding+ as false.
    #
    # source://base64//base64.rb#83
    def urlsafe_encode64(bin, padding: T.unsafe(nil)); end
  end
end
