module WEBrick
  module HTTPServlet
    class HTTPServletError < StandardError
    end

    class AbstractServlet
      @server: HTTPServer

      interface _Config
        def []: (Symbol) -> untyped
      end

      @config: _Config

      @logger: Log

      @options: untyped # Array[untyped] causes RBS::InstanceVariableTypeError

      def self.get_instance: (HTTPServer server, *untyped options) -> instance

      def initialize: (HTTPServer server, *untyped options) -> void

      def service: (HTTPRequest req, HTTPResponse res) -> void

      def do_GET: (HTTPRequest req, HTTPResponse res) -> bot

      def do_HEAD: (HTTPRequest req, HTTPResponse res) -> bot

      def do_OPTIONS: (HTTPRequest req, HTTPResponse res) -> void

      private

      def redirect_to_directory_uri: (HTTPRequest req, HTTPResponse res) -> void
    end
  end
end
