-- | Combined http request stuff
module Calamity.HTTP (
  invoke,
  module Calamity.HTTP.AuditLog,
  module Calamity.HTTP.Channel,
  module Calamity.HTTP.Emoji,
  module Calamity.HTTP.Guild,
  module Calamity.HTTP.Invite,
  module Calamity.HTTP.Interaction,
  module Calamity.HTTP.MiscRoutes,
  module Calamity.HTTP.User,
  module Calamity.HTTP.Reason,
  module Calamity.HTTP.Webhook,
  module Calamity.HTTP.Internal.Types,
  RatelimitEff (..),
  TokenEff (..),

  -- * HTTP
  -- $httpDocs
) where

import Calamity.HTTP.AuditLog
import Calamity.HTTP.Channel
import Calamity.HTTP.Emoji
import Calamity.HTTP.Guild
import Calamity.HTTP.Interaction
import Calamity.HTTP.Internal.Ratelimit (RatelimitEff (..))
import Calamity.HTTP.Internal.Request (invoke)
import Calamity.HTTP.Internal.Types (RestError)
import Calamity.HTTP.Invite
import Calamity.HTTP.MiscRoutes
import Calamity.HTTP.Reason
import Calamity.HTTP.User
import Calamity.HTTP.Webhook
import Calamity.Types.TokenEff (TokenEff (..))

{- $httpDocs

 This module contains all the http related things


 ==== Registered Metrics

     1. Gauge: @"inflight_requests" [route]@

         Keeps track of how many requests are currently in-flight, the @route@
         parameter will be the route that is currently active.

     2. Counter: @"total_requests" [route]@

         Incremented on every request, the @route@ parameter is the route that
         the request was made on.


 ==== Examples

 Editing a message:

 @
 'invoke' $ 'EditMessage' someChannel someMessage ('Just' "new content") 'Nothing'
 @
-}