# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# This file is automatically generated. DO NOT EDIT!
# Regenerate with: bazel run //rb/lib/selenium/webdriver:bidi-generate

module Selenium
  module WebDriver
    class BiDi
      module Protocol
        class Session < ::Selenium::WebDriver::BiDi::Protocol::Domain
          USER_PROMPT_HANDLER_TYPE: Hash[Symbol, String]

          class CapabilitiesRequest < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader always_match: untyped
            attr_reader first_match: untyped
            def self.new: (?always_match: ::Selenium::WebDriver::BiDi::Protocol::Session::CapabilityRequest, ?first_match: Array[::Selenium::WebDriver::BiDi::Protocol::Session::CapabilityRequest]) -> instance
          end

          class CapabilityRequest < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader accept_insecure_certs: untyped
            attr_reader browser_name: untyped
            attr_reader browser_version: untyped
            attr_reader platform_name: untyped
            attr_reader proxy: untyped
            attr_reader unhandled_prompt_behavior: untyped
            attr_reader extensions: Hash[String, untyped]
            def self.new: (?accept_insecure_certs: bool, ?browser_name: String, ?browser_version: String, ?platform_name: String, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::ProxyConfiguration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler, ?extensions: untyped) -> instance
          end

          class ProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Union
          end

          class AutodetectProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader proxy_type: String
            attr_reader extensions: Hash[String, untyped]
            def self.new: (?proxy_type: String, ?extensions: untyped) -> instance
          end

          class DirectProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader proxy_type: String
            attr_reader extensions: Hash[String, untyped]
            def self.new: (?proxy_type: String, ?extensions: untyped) -> instance
          end

          class ManualProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader proxy_type: String
            attr_reader http_proxy: untyped
            attr_reader ssl_proxy: untyped
            attr_reader socks_proxy: String
            attr_reader socks_version: Integer
            attr_reader no_proxy: untyped
            attr_reader extensions: Hash[String, untyped]
            def self.new: (?proxy_type: String, ?http_proxy: String, ?ssl_proxy: String, socks_proxy: String, socks_version: Integer, ?no_proxy: Array[String], ?extensions: untyped) -> instance
          end

          class SocksProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader socks_proxy: String
            attr_reader socks_version: Integer
            def self.new: (socks_proxy: String, socks_version: Integer) -> instance
          end

          class PacProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader proxy_type: String
            attr_reader proxy_autoconfig_url: String
            attr_reader extensions: Hash[String, untyped]
            def self.new: (?proxy_type: String, proxy_autoconfig_url: String, ?extensions: untyped) -> instance
          end

          class SystemProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader proxy_type: String
            attr_reader extensions: Hash[String, untyped]
            def self.new: (?proxy_type: String, ?extensions: untyped) -> instance
          end

          class UserPromptHandler < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader alert: untyped
            attr_reader before_unload: untyped
            attr_reader confirm: untyped
            attr_reader default: untyped
            attr_reader file: untyped
            attr_reader prompt: untyped
            def self.new: (?alert: Symbol, ?before_unload: Symbol, ?confirm: Symbol, ?default: Symbol, ?file: Symbol, ?prompt: Symbol) -> instance
          end

          class SubscribeParameters < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader events: Array[String]
            attr_reader contexts: untyped
            attr_reader user_contexts: untyped
            def self.new: (events: Array[String], ?contexts: Array[String], ?user_contexts: Array[String]) -> instance
          end

          class UnsubscribeByIDRequest < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader subscriptions: Array[String]
            def self.new: (subscriptions: Array[String]) -> instance
          end

          class UnsubscribeByAttributesRequest < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader events: Array[String]
            def self.new: (events: Array[String]) -> instance
          end

          class StatusResult < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader ready: bool
            attr_reader message: String
            def self.new: (ready: bool, message: String) -> instance
          end

          class NewParameters < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader capabilities: ::Selenium::WebDriver::BiDi::Protocol::Session::CapabilitiesRequest
            def self.new: (capabilities: ::Selenium::WebDriver::BiDi::Protocol::Session::CapabilitiesRequest) -> instance
          end

          class NewResult < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader session_id: String
            attr_reader capabilities: ::Selenium::WebDriver::BiDi::Protocol::Session::NewResult::Capabilities
            def self.new: (session_id: String, capabilities: ::Selenium::WebDriver::BiDi::Protocol::Session::NewResult::Capabilities) -> instance

            class Capabilities < ::Selenium::WebDriver::BiDi::Serialization::Record
              attr_reader accept_insecure_certs: bool
              attr_reader browser_name: String
              attr_reader browser_version: String
              attr_reader platform_name: String
              attr_reader set_window_rect: bool
              attr_reader user_agent: String
              attr_reader proxy: untyped
              attr_reader unhandled_prompt_behavior: untyped
              attr_reader web_socket_url: untyped
              attr_reader extensions: Hash[String, untyped]
              def self.new: (accept_insecure_certs: bool, browser_name: String, browser_version: String, platform_name: String, set_window_rect: bool, user_agent: String, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::ProxyConfiguration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler, ?web_socket_url: String, ?extensions: untyped) -> instance
            end
          end

          class SubscribeResult < ::Selenium::WebDriver::BiDi::Serialization::Record
            attr_reader subscription: String
            def self.new: (subscription: String) -> instance
          end

          class UnsubscribeParameters < ::Selenium::WebDriver::BiDi::Serialization::Union
          end

          def end_: () -> untyped
          def new: (capabilities: ::Selenium::WebDriver::BiDi::Protocol::Session::CapabilitiesRequest) -> ::Selenium::WebDriver::BiDi::Protocol::Session::NewResult
          def status: () -> ::Selenium::WebDriver::BiDi::Protocol::Session::StatusResult
          def subscribe: (events: Array[String], ?contexts: Array[String], ?user_contexts: Array[String]) -> ::Selenium::WebDriver::BiDi::Protocol::Session::SubscribeResult
          def unsubscribe: (?events: Array[String], ?subscriptions: Array[String]) -> untyped
        end
      end
    end
  end
end
