{-| 
This module defines the 'Command' type and related types/functions for BiDi commands referenced by the API functions in "WebDriverPreCore.BiDi.API" 

"WebDriverPreCore.BiDi.API" contains functions that generate the payload for each BiDi command and is the main interface for users of this package to interact with BiDi.

An example of using these modules to implement a basic BiDi client can be found in the [test repository](https://github.com/pyrethrum/webdriver/tree/main/webdriver-precore/test#readme) for this package.
-}

module WebDriverPreCore.BiDi.Protocol
  ( 
    -- * Command
    Command (..),
    CommandMethod (..),
    KnownCommand (..),
    OffSpecCommand (..),
     -- ** Constructors
    {-| The following constructors are partially applied in "WebDriverPreCore.BiDi.API" to generate specific named command functions. 
        Although these functions form the basis of every command in the "WebDriverPreCore.BiDi.API", it would be unusual to need to use these directly.
    -}
    mkCommand,
    emptyCommand,
    -- ** Fallback Constructors
    {-| The following constructors are provided to modify or create new commands that are not directly supported by the "WebDriverPreCore.BiDi.API".
        These constructors provide a means by which users can work around defects in this package or defects in driver implementation as well as handling driver specific extensions to the BiDi protocol. 
    -}
    mkOffSpecCommand,
    extendCommand,
    extendLoosenCommand,
    extendCoerceCommand,
    loosenCommand,
    coerceCommand,
    -- ** Command Method Utilities
    knownCommandToText,
    toCommandText,
    -- * Browser
    module WebDriverPreCore.BiDi.Browser,
    -- * Browsing Context
    module WebDriverPreCore.BiDi.BrowsingContext,
    -- * Capabilities
    module WebDriverPreCore.BiDi.Capabilities,
    -- * Event
    module WebDriverPreCore.BiDi.Event,
    -- * Emulation
    module WebDriverPreCore.BiDi.Emulation,
    -- * Input
    module WebDriverPreCore.BiDi.Input,
    -- * Log
    module WebDriverPreCore.BiDi.Log,
    -- * Script
    module WebDriverPreCore.BiDi.Script,
    -- * Session
    module WebDriverPreCore.BiDi.Session,
    -- * Storage
    module WebDriverPreCore.BiDi.Storage,
    -- * Web Extensions
    module WebDriverPreCore.BiDi.WebExtensions,
    -- * Network
    module WebDriverPreCore.BiDi.Network,
    -- * Core Types
    module WebDriverPreCore.BiDi.CoreTypes,
    -- * Error
    module WebDriverPreCore.Error,
  )
where

import WebDriverPreCore.BiDi.Browser
import WebDriverPreCore.BiDi.BrowsingContext
import WebDriverPreCore.BiDi.Capabilities
import WebDriverPreCore.BiDi.Command
import WebDriverPreCore.BiDi.CoreTypes
import WebDriverPreCore.BiDi.Emulation
import WebDriverPreCore.Error
import WebDriverPreCore.BiDi.Event
import WebDriverPreCore.BiDi.Input
import WebDriverPreCore.BiDi.Log
import WebDriverPreCore.BiDi.Network
import WebDriverPreCore.BiDi.Script
import WebDriverPreCore.BiDi.Session
import WebDriverPreCore.BiDi.Storage
import WebDriverPreCore.BiDi.WebExtensions