-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Access to the GitHub API, v3.
--   
--   The GitHub API provides programmatic access to the full GitHub Web
--   site, from Issues to Gists to repos down to the underlying git data
--   like references and trees. This library wraps all of that, exposing a
--   basic but Haskell-friendly set of functions and data structures.
--   
--   For supported endpoints see <a>GitHub</a> module.
--   
--   <pre>
--   import qualified GitHub as GH
--   
--   main :: IO ()
--   main = do
--       possibleUser &lt;- GH.github' GH.userInfoForR "phadej"
--       print possibleUser
--   </pre>
--   
--   For more of an overview please see the README:
--   <a>https://github.com/haskell-github/github/blob/master/README.md</a>
@package github
@version 0.29


-- | This module may change between minor releases. Do not rely on its
--   contents.
module GitHub.Internal.Prelude

-- | A type that can be converted from JSON, with the possibility of
--   failure.
--   
--   In many cases, you can get the compiler to generate parsing code for
--   you (see below). To begin, let's cover writing an instance by hand.
--   
--   There are various reasons a conversion could fail. For example, an
--   <a>Object</a> could be missing a required key, an <a>Array</a> could
--   be of the wrong size, or a value could be of an incompatible type.
--   
--   The basic ways to signal a failed conversion are as follows:
--   
--   <ul>
--   <li><a>fail</a> yields a custom error message: it is the recommended
--   way of reporting a failure;</li>
--   <li><a>empty</a> (or <a>mzero</a>) is uninformative: use it when the
--   error is meant to be caught by some <tt>(<a>&lt;|&gt;</a>)</tt>;</li>
--   <li><a>typeMismatch</a> can be used to report a failure when the
--   encountered value is not of the expected JSON type; <a>unexpected</a>
--   is an appropriate alternative when more than one type may be expected,
--   or to keep the expected type implicit.</li>
--   </ul>
--   
--   <a>prependFailure</a> (or <a>modifyFailure</a>) add more information
--   to a parser's error messages.
--   
--   An example type and instance using <a>typeMismatch</a> and
--   <a>prependFailure</a>:
--   
--   <pre>
--   -- Allow ourselves to write <a>Text</a> literals.
--   {-# LANGUAGE OverloadedStrings #-}
--   
--   data Coord = Coord { x :: Double, y :: Double }
--   
--   instance <a>FromJSON</a> Coord where
--       <a>parseJSON</a> (<a>Object</a> v) = Coord
--           <a>&lt;$&gt;</a> v <a>.:</a> "x"
--           <a>&lt;*&gt;</a> v <a>.:</a> "y"
--   
--       -- We do not expect a non-<a>Object</a> value here.
--       -- We could use <a>empty</a> to fail, but <a>typeMismatch</a>
--       -- gives a much more informative error message.
--       <a>parseJSON</a> invalid    =
--           <a>prependFailure</a> "parsing Coord failed, "
--               (<a>typeMismatch</a> "Object" invalid)
--   </pre>
--   
--   For this common case of only being concerned with a single type of
--   JSON value, the functions <a>withObject</a>, <a>withScientific</a>,
--   etc. are provided. Their use is to be preferred when possible, since
--   they are more terse. Using <a>withObject</a>, we can rewrite the above
--   instance (assuming the same language extension and data type) as:
--   
--   <pre>
--   instance <a>FromJSON</a> Coord where
--       <a>parseJSON</a> = <a>withObject</a> "Coord" $ \v -&gt; Coord
--           <a>&lt;$&gt;</a> v <a>.:</a> "x"
--           <a>&lt;*&gt;</a> v <a>.:</a> "y"
--   </pre>
--   
--   Instead of manually writing your <a>FromJSON</a> instance, there are
--   two options to do it automatically:
--   
--   <ul>
--   <li><a>Data.Aeson.TH</a> provides Template Haskell functions which
--   will derive an instance at compile time. The generated instance is
--   optimized for your type so it will probably be more efficient than the
--   following option.</li>
--   <li>The compiler can provide a default generic implementation for
--   <a>parseJSON</a>.</li>
--   </ul>
--   
--   To use the second, simply add a <tt>deriving <a>Generic</a></tt>
--   clause to your datatype and declare a <a>FromJSON</a> instance for
--   your datatype without giving a definition for <a>parseJSON</a>.
--   
--   For example, the previous example can be simplified to just:
--   
--   <pre>
--   {-# LANGUAGE DeriveGeneric #-}
--   
--   import <a>GHC.Generics</a>
--   
--   data Coord = Coord { x :: Double, y :: Double } deriving <a>Generic</a>
--   
--   instance <a>FromJSON</a> Coord
--   </pre>
--   
--   or using the <a>DerivingVia extension</a>
--   
--   <pre>
--   deriving via <a>Generically</a> Coord instance <a>FromJSON</a> Coord
--   </pre>
--   
--   The default implementation will be equivalent to <tt>parseJSON =
--   <a>genericParseJSON</a> <a>defaultOptions</a></tt>; if you need
--   different options, you can customize the generic decoding by defining:
--   
--   <pre>
--   customOptions = <a>defaultOptions</a>
--                   { <a>fieldLabelModifier</a> = <a>map</a> <a>toUpper</a>
--                   }
--   
--   instance <a>FromJSON</a> Coord where
--       <a>parseJSON</a> = <a>genericParseJSON</a> customOptions
--   </pre>
class () => FromJSON a
parseJSON :: FromJSON a => Value -> Parser a
parseJSONList :: FromJSON a => Value -> Parser [a]

-- | A type that can be converted to JSON.
--   
--   Instances in general <i>must</i> specify <a>toJSON</a> and
--   <i>should</i> (but don't need to) specify <a>toEncoding</a>.
--   
--   An example type and instance:
--   
--   <pre>
--   -- Allow ourselves to write <a>Text</a> literals.
--   {-# LANGUAGE OverloadedStrings #-}
--   
--   data Coord = Coord { x :: Double, y :: Double }
--   
--   instance <a>ToJSON</a> Coord where
--     <a>toJSON</a> (Coord x y) = <a>object</a> ["x" <a>.=</a> x, "y" <a>.=</a> y]
--   
--     <a>toEncoding</a> (Coord x y) = <tt>pairs</tt> ("x" <a>.=</a> x <a>&lt;&gt;</a> "y" <a>.=</a> y)
--   </pre>
--   
--   Instead of manually writing your <a>ToJSON</a> instance, there are two
--   options to do it automatically:
--   
--   <ul>
--   <li><a>Data.Aeson.TH</a> provides Template Haskell functions which
--   will derive an instance at compile time. The generated instance is
--   optimized for your type so it will probably be more efficient than the
--   following option.</li>
--   <li>The compiler can provide a default generic implementation for
--   <a>toJSON</a>.</li>
--   </ul>
--   
--   To use the second, simply add a <tt>deriving <a>Generic</a></tt>
--   clause to your datatype and declare a <a>ToJSON</a> instance. If you
--   require nothing other than <a>defaultOptions</a>, it is sufficient to
--   write (and this is the only alternative where the default
--   <a>toJSON</a> implementation is sufficient):
--   
--   <pre>
--   {-# LANGUAGE DeriveGeneric #-}
--   
--   import <a>GHC.Generics</a>
--   
--   data Coord = Coord { x :: Double, y :: Double } deriving <a>Generic</a>
--   
--   instance <a>ToJSON</a> Coord where
--       <a>toEncoding</a> = <a>genericToEncoding</a> <a>defaultOptions</a>
--   </pre>
--   
--   or more conveniently using the <a>DerivingVia extension</a>
--   
--   <pre>
--   deriving via <a>Generically</a> Coord instance <a>ToJSON</a> Coord
--   </pre>
--   
--   If on the other hand you wish to customize the generic decoding, you
--   have to implement both methods:
--   
--   <pre>
--   customOptions = <a>defaultOptions</a>
--                   { <a>fieldLabelModifier</a> = <a>map</a> <a>toUpper</a>
--                   }
--   
--   instance <a>ToJSON</a> Coord where
--       <a>toJSON</a>     = <a>genericToJSON</a> customOptions
--       <a>toEncoding</a> = <a>genericToEncoding</a> customOptions
--   </pre>
--   
--   Previous versions of this library only had the <a>toJSON</a> method.
--   Adding <a>toEncoding</a> had two reasons:
--   
--   <ol>
--   <li><a>toEncoding</a> is more efficient for the common case that the
--   output of <a>toJSON</a> is directly serialized to a
--   <tt>ByteString</tt>. Further, expressing either method in terms of the
--   other would be non-optimal.</li>
--   <li>The choice of defaults allows a smooth transition for existing
--   users: Existing instances that do not define <a>toEncoding</a> still
--   compile and have the correct semantics. This is ensured by making the
--   default implementation of <a>toEncoding</a> use <a>toJSON</a>. This
--   produces correct results, but since it performs an intermediate
--   conversion to a <a>Value</a>, it will be less efficient than directly
--   emitting an <a>Encoding</a>. (this also means that specifying nothing
--   more than <tt>instance ToJSON Coord</tt> would be sufficient as a
--   generically decoding instance, but there probably exists no good
--   reason to not specify <a>toEncoding</a> in new instances.)</li>
--   </ol>
class () => ToJSON a

-- | Convert a Haskell value to a JSON-friendly intermediate type.
toJSON :: ToJSON a => a -> Value

-- | Encode a Haskell value as JSON.
--   
--   The default implementation of this method creates an intermediate
--   <a>Value</a> using <a>toJSON</a>. This provides source-level
--   compatibility for people upgrading from older versions of this
--   library, but obviously offers no performance advantage.
--   
--   To benefit from direct encoding, you <i>must</i> provide an
--   implementation for this method. The easiest way to do so is by having
--   your types implement <a>Generic</a> using the <tt>DeriveGeneric</tt>
--   extension, and then have GHC generate a method body as follows.
--   
--   <pre>
--   instance <a>ToJSON</a> Coord where
--       <a>toEncoding</a> = <a>genericToEncoding</a> <a>defaultOptions</a>
--   </pre>
toEncoding :: ToJSON a => a -> Encoding
toJSONList :: ToJSON a => [a] -> Value
toEncodingList :: ToJSON a => [a] -> Encoding

-- | A JSON "object" (key/value map).
type Object = KeyMap Value

-- | <a>String</a> is an alias for a list of characters.
--   
--   String constants in Haskell are values of type <a>String</a>. That
--   means if you write a string literal like <tt>"hello world"</tt>, it
--   will have the type <tt>[Char]</tt>, which is the same as
--   <tt>String</tt>.
--   
--   <b>Note:</b> You can ask the compiler to automatically infer different
--   types with the <tt>-XOverloadedStrings</tt> language extension, for
--   example <tt>"hello world" :: Text</tt>. See <a>IsString</a> for more
--   information.
--   
--   Because <tt>String</tt> is just a list of characters, you can use
--   normal list functions to do basic string manipulation. See
--   <a>Data.List</a> for operations on lists.
--   
--   <h3><b>Performance considerations</b></h3>
--   
--   <tt>[Char]</tt> is a relatively memory-inefficient type. It is a
--   linked list of boxed word-size characters, internally it looks
--   something like:
--   
--   <pre>
--   ╭─────┬───┬──╮  ╭─────┬───┬──╮  ╭─────┬───┬──╮  ╭────╮
--   │ (:) │   │ ─┼─&gt;│ (:) │   │ ─┼─&gt;│ (:) │   │ ─┼─&gt;│ [] │
--   ╰─────┴─┼─┴──╯  ╰─────┴─┼─┴──╯  ╰─────┴─┼─┴──╯  ╰────╯
--           v               v               v
--          'a'             'b'             'c'
--   </pre>
--   
--   The <tt>String</tt> "abc" will use <tt>5*3+1 = 16</tt> (in general
--   <tt>5n+1</tt>) words of space in memory.
--   
--   Furthermore, operations like <a>(++)</a> (string concatenation) are
--   <tt>O(n)</tt> (in the left argument).
--   
--   For historical reasons, the <tt>base</tt> library uses <tt>String</tt>
--   in a lot of places for the conceptual simplicity, but library code
--   dealing with user-data should use the <a>text</a> package for Unicode
--   text, or the the <a>bytestring</a> package for binary data.
type String = [Char]

-- | A JSON value represented as a Haskell value.
data () => Value
Object :: !Object -> Value
Array :: !Array -> Value
String :: !Text -> Value
Number :: !Scientific -> Value
Bool :: !Bool -> Value
Null :: Value
data () => Bool
False :: Bool
True :: Bool

-- | A map from keys to values. A map cannot contain duplicate keys; each
--   key can map to at most one value.
data () => HashMap k v

-- | A space efficient, packed, unboxed Unicode text type.
data () => Text

-- | Representable types of kind <tt>*</tt>. This class is derivable in GHC
--   with the <tt>DeriveGeneric</tt> flag on.
--   
--   A <a>Generic</a> instance must satisfy the following laws:
--   
--   <pre>
--   <a>from</a> . <a>to</a> ≡ <a>id</a>
--   <a>to</a> . <a>from</a> ≡ <a>id</a>
--   </pre>
class () => Generic a

-- | The <a>Maybe</a> type encapsulates an optional value. A value of type
--   <tt><a>Maybe</a> a</tt> either contains a value of type <tt>a</tt>
--   (represented as <tt><a>Just</a> a</tt>), or it is empty (represented
--   as <a>Nothing</a>). Using <a>Maybe</a> is a good way to deal with
--   errors or exceptional cases without resorting to drastic measures such
--   as <a>error</a>.
--   
--   The <a>Maybe</a> type is also a monad. It is a simple kind of error
--   monad, where all errors are represented by <a>Nothing</a>. A richer
--   error monad can be built using the <a>Either</a> type.
data () => Maybe a
Nothing :: Maybe a
Just :: a -> Maybe a

-- | This is the simplest representation of UTC. It consists of the day
--   number, and a time offset from midnight. Note that if a day has a leap
--   second added to it, it will have 86401 seconds.
data () => UTCTime

-- | The <a>Either</a> type represents values with two possibilities: a
--   value of type <tt><a>Either</a> a b</tt> is either <tt><a>Left</a>
--   a</tt> or <tt><a>Right</a> b</tt>.
--   
--   The <a>Either</a> type is sometimes used to represent a value which is
--   either correct or an error; by convention, the <a>Left</a> constructor
--   is used to hold an error value and the <a>Right</a> constructor is
--   used to hold a correct value (mnemonic: "right" also means "correct").
--   
--   <h4><b>Examples</b></h4>
--   
--   The type <tt><a>Either</a> <a>String</a> <a>Int</a></tt> is the type
--   of values which can be either a <a>String</a> or an <a>Int</a>. The
--   <a>Left</a> constructor can be used only on <a>String</a>s, and the
--   <a>Right</a> constructor can be used only on <a>Int</a>s:
--   
--   <pre>
--   &gt;&gt;&gt; let s = Left "foo" :: Either String Int
--   
--   &gt;&gt;&gt; s
--   Left "foo"
--   
--   &gt;&gt;&gt; let n = Right 3 :: Either String Int
--   
--   &gt;&gt;&gt; n
--   Right 3
--   
--   &gt;&gt;&gt; :type s
--   s :: Either String Int
--   
--   &gt;&gt;&gt; :type n
--   n :: Either String Int
--   </pre>
--   
--   The <a>fmap</a> from our <a>Functor</a> instance will ignore
--   <a>Left</a> values, but will apply the supplied function to values
--   contained in a <a>Right</a>:
--   
--   <pre>
--   &gt;&gt;&gt; let s = Left "foo" :: Either String Int
--   
--   &gt;&gt;&gt; let n = Right 3 :: Either String Int
--   
--   &gt;&gt;&gt; fmap (*2) s
--   Left "foo"
--   
--   &gt;&gt;&gt; fmap (*2) n
--   Right 6
--   </pre>
--   
--   The <a>Monad</a> instance for <a>Either</a> allows us to chain
--   together multiple actions which may fail, and fail overall if any of
--   the individual steps failed. First we'll write a function that can
--   either parse an <a>Int</a> from a <a>Char</a>, or fail.
--   
--   <pre>
--   &gt;&gt;&gt; import Data.Char ( digitToInt, isDigit )
--   
--   &gt;&gt;&gt; :{
--       let parseEither :: Char -&gt; Either String Int
--           parseEither c
--             | isDigit c = Right (digitToInt c)
--             | otherwise = Left "parse error"
--   
--   &gt;&gt;&gt; :}
--   </pre>
--   
--   The following should work, since both <tt>'1'</tt> and <tt>'2'</tt>
--   can be parsed as <a>Int</a>s.
--   
--   <pre>
--   &gt;&gt;&gt; :{
--       let parseMultiple :: Either String Int
--           parseMultiple = do
--             x &lt;- parseEither '1'
--             y &lt;- parseEither '2'
--             return (x + y)
--   
--   &gt;&gt;&gt; :}
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseMultiple
--   Right 3
--   </pre>
--   
--   But the following should fail overall, since the first operation where
--   we attempt to parse <tt>'m'</tt> as an <a>Int</a> will fail:
--   
--   <pre>
--   &gt;&gt;&gt; :{
--       let parseMultiple :: Either String Int
--           parseMultiple = do
--             x &lt;- parseEither 'm'
--             y &lt;- parseEither '2'
--             return (x + y)
--   
--   &gt;&gt;&gt; :}
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseMultiple
--   Left "parse error"
--   </pre>
data () => Either a b
Left :: a -> Either a b
Right :: b -> Either a b

-- | The <a>Eq</a> class defines equality (<a>==</a>) and inequality
--   (<a>/=</a>). All the basic datatypes exported by the <a>Prelude</a>
--   are instances of <a>Eq</a>, and <a>Eq</a> may be derived for any
--   datatype whose constituents are also instances of <a>Eq</a>.
--   
--   The Haskell Report defines no laws for <a>Eq</a>. However, instances
--   are encouraged to follow these properties:
--   
--   <ul>
--   <li><i><b>Reflexivity</b></i> <tt>x == x</tt> = <a>True</a></li>
--   <li><i><b>Symmetry</b></i> <tt>x == y</tt> = <tt>y == x</tt></li>
--   <li><i><b>Transitivity</b></i> if <tt>x == y &amp;&amp; y == z</tt> =
--   <a>True</a>, then <tt>x == z</tt> = <a>True</a></li>
--   <li><i><b>Extensionality</b></i> if <tt>x == y</tt> = <a>True</a> and
--   <tt>f</tt> is a function whose return type is an instance of
--   <a>Eq</a>, then <tt>f x == f y</tt> = <a>True</a></li>
--   <li><i><b>Negation</b></i> <tt>x /= y</tt> = <tt>not (x ==
--   y)</tt></li>
--   </ul>
--   
--   Minimal complete definition: either <a>==</a> or <a>/=</a>.
class () => Eq a
(==) :: Eq a => a -> a -> Bool
(/=) :: Eq a => a -> a -> Bool
infix 4 ==
infix 4 /=

-- | Arbitrary precision integers. In contrast with fixed-size integral
--   types such as <a>Int</a>, the <a>Integer</a> type represents the
--   entire infinite range of integers.
--   
--   Integers are stored in a kind of sign-magnitude form, hence do not
--   expect two's complement form when using bit operations.
--   
--   If the value is small (fit into an <a>Int</a>), <a>IS</a> constructor
--   is used. Otherwise <a>Integer</a> and <a>IN</a> constructors are used
--   to store a <a>BigNat</a> representing respectively the positive or the
--   negative value magnitude.
--   
--   Invariant: <a>Integer</a> and <a>IN</a> are used iff value doesn't fit
--   in <a>IS</a>
data () => Integer

-- | Parsing of <a>String</a>s, producing values.
--   
--   Derived instances of <a>Read</a> make the following assumptions, which
--   derived instances of <a>Show</a> obey:
--   
--   <ul>
--   <li>If the constructor is defined to be an infix operator, then the
--   derived <a>Read</a> instance will parse only infix applications of the
--   constructor (not the prefix form).</li>
--   <li>Associativity is not used to reduce the occurrence of parentheses,
--   although precedence may be.</li>
--   <li>If the constructor is defined using record syntax, the derived
--   <a>Read</a> will parse only the record-syntax form, and furthermore,
--   the fields must be given in the same order as the original
--   declaration.</li>
--   <li>The derived <a>Read</a> instance allows arbitrary Haskell
--   whitespace between tokens of the input string. Extra parentheses are
--   also allowed.</li>
--   </ul>
--   
--   For example, given the declarations
--   
--   <pre>
--   infixr 5 :^:
--   data Tree a =  Leaf a  |  Tree a :^: Tree a
--   </pre>
--   
--   the derived instance of <a>Read</a> in Haskell 2010 is equivalent to
--   
--   <pre>
--   instance (Read a) =&gt; Read (Tree a) where
--   
--           readsPrec d r =  readParen (d &gt; app_prec)
--                            (\r -&gt; [(Leaf m,t) |
--                                    ("Leaf",s) &lt;- lex r,
--                                    (m,t) &lt;- readsPrec (app_prec+1) s]) r
--   
--                         ++ readParen (d &gt; up_prec)
--                            (\r -&gt; [(u:^:v,w) |
--                                    (u,s) &lt;- readsPrec (up_prec+1) r,
--                                    (":^:",t) &lt;- lex s,
--                                    (v,w) &lt;- readsPrec (up_prec+1) t]) r
--   
--             where app_prec = 10
--                   up_prec = 5
--   </pre>
--   
--   Note that right-associativity of <tt>:^:</tt> is unused.
--   
--   The derived instance in GHC is equivalent to
--   
--   <pre>
--   instance (Read a) =&gt; Read (Tree a) where
--   
--           readPrec = parens $ (prec app_prec $ do
--                                    Ident "Leaf" &lt;- lexP
--                                    m &lt;- step readPrec
--                                    return (Leaf m))
--   
--                        +++ (prec up_prec $ do
--                                    u &lt;- step readPrec
--                                    Symbol ":^:" &lt;- lexP
--                                    v &lt;- step readPrec
--                                    return (u :^: v))
--   
--             where app_prec = 10
--                   up_prec = 5
--   
--           readListPrec = readListPrecDefault
--   </pre>
--   
--   Why do both <a>readsPrec</a> and <a>readPrec</a> exist, and why does
--   GHC opt to implement <a>readPrec</a> in derived <a>Read</a> instances
--   instead of <a>readsPrec</a>? The reason is that <a>readsPrec</a> is
--   based on the <a>ReadS</a> type, and although <a>ReadS</a> is mentioned
--   in the Haskell 2010 Report, it is not a very efficient parser data
--   structure.
--   
--   <a>readPrec</a>, on the other hand, is based on a much more efficient
--   <a>ReadPrec</a> datatype (a.k.a "new-style parsers"), but its
--   definition relies on the use of the <tt>RankNTypes</tt> language
--   extension. Therefore, <a>readPrec</a> (and its cousin,
--   <a>readListPrec</a>) are marked as GHC-only. Nevertheless, it is
--   recommended to use <a>readPrec</a> instead of <a>readsPrec</a>
--   whenever possible for the efficiency improvements it brings.
--   
--   As mentioned above, derived <a>Read</a> instances in GHC will
--   implement <a>readPrec</a> instead of <a>readsPrec</a>. The default
--   implementations of <a>readsPrec</a> (and its cousin, <a>readList</a>)
--   will simply use <a>readPrec</a> under the hood. If you are writing a
--   <a>Read</a> instance by hand, it is recommended to write it like so:
--   
--   <pre>
--   instance <a>Read</a> T where
--     <a>readPrec</a>     = ...
--     <a>readListPrec</a> = <a>readListPrecDefault</a>
--   </pre>
class () => Read a

-- | attempts to parse a value from the front of the string, returning a
--   list of (parsed value, remaining string) pairs. If there is no
--   successful parse, the returned list is empty.
--   
--   Derived instances of <a>Read</a> and <a>Show</a> satisfy the
--   following:
--   
--   <ul>
--   <li><tt>(x,"")</tt> is an element of <tt>(<a>readsPrec</a> d
--   (<a>showsPrec</a> d x ""))</tt>.</li>
--   </ul>
--   
--   That is, <a>readsPrec</a> parses the string produced by
--   <a>showsPrec</a>, and delivers the value that <a>showsPrec</a> started
--   with.
readsPrec :: Read a => Int -> ReadS a

-- | The method <a>readList</a> is provided to allow the programmer to give
--   a specialised way of parsing lists of values. For example, this is
--   used by the predefined <a>Read</a> instance of the <a>Char</a> type,
--   where values of type <a>String</a> should be are expected to use
--   double quotes, rather than square brackets.
readList :: Read a => ReadS [a]

-- | The class of types that can be converted to a hash value.
--   
--   Minimal implementation: <a>hashWithSalt</a>.
--   
--   <i>Note:</i> the hash is not guaranteed to be stable across library
--   versions, operating systems or architectures. For stable hashing use
--   named hashes: SHA256, CRC32 etc.
--   
--   If you are looking for <a>Hashable</a> instance in <tt>time</tt>
--   package, check <a>time-compat</a>
class Eq a => Hashable a

-- | Return a hash value for the argument, using the given salt.
--   
--   The general contract of <a>hashWithSalt</a> is:
--   
--   <ul>
--   <li>If two values are equal according to the <a>==</a> method, then
--   applying the <a>hashWithSalt</a> method on each of the two values
--   <i>must</i> produce the same integer result if the same salt is used
--   in each case.</li>
--   <li>It is <i>not</i> required that if two values are unequal according
--   to the <a>==</a> method, then applying the <a>hashWithSalt</a> method
--   on each of the two values must produce distinct integer results.
--   However, the programmer should be aware that producing distinct
--   integer results for unequal values may improve the performance of
--   hashing-based data structures.</li>
--   <li>This method can be used to compute different hash values for the
--   same input by providing a different salt in each application of the
--   method. This implies that any instance that defines
--   <a>hashWithSalt</a> <i>must</i> make use of the salt in its
--   implementation.</li>
--   <li><a>hashWithSalt</a> may return negative <a>Int</a> values.</li>
--   </ul>
hashWithSalt :: Hashable a => Int -> a -> Int

-- | Like <a>hashWithSalt</a>, but no salt is used. The default
--   implementation uses <a>hashWithSalt</a> with some default salt.
--   Instances might want to implement this method to provide a more
--   efficient implementation than the default implementation.
hash :: Hashable a => a -> Int
infixl 0 `hashWithSalt`

-- | The <a>Ord</a> class is used for totally ordered datatypes.
--   
--   Instances of <a>Ord</a> can be derived for any user-defined datatype
--   whose constituent types are in <a>Ord</a>. The declared order of the
--   constructors in the data declaration determines the ordering in
--   derived <a>Ord</a> instances. The <a>Ordering</a> datatype allows a
--   single comparison to determine the precise ordering of two objects.
--   
--   <a>Ord</a>, as defined by the Haskell report, implements a total order
--   and has the following properties:
--   
--   <ul>
--   <li><i><b>Comparability</b></i> <tt>x &lt;= y || y &lt;= x</tt> =
--   <a>True</a></li>
--   <li><i><b>Transitivity</b></i> if <tt>x &lt;= y &amp;&amp; y &lt;=
--   z</tt> = <a>True</a>, then <tt>x &lt;= z</tt> = <a>True</a></li>
--   <li><i><b>Reflexivity</b></i> <tt>x &lt;= x</tt> = <a>True</a></li>
--   <li><i><b>Antisymmetry</b></i> if <tt>x &lt;= y &amp;&amp; y &lt;=
--   x</tt> = <a>True</a>, then <tt>x == y</tt> = <a>True</a></li>
--   </ul>
--   
--   The following operator interactions are expected to hold:
--   
--   <ol>
--   <li><tt>x &gt;= y</tt> = <tt>y &lt;= x</tt></li>
--   <li><tt>x &lt; y</tt> = <tt>x &lt;= y &amp;&amp; x /= y</tt></li>
--   <li><tt>x &gt; y</tt> = <tt>y &lt; x</tt></li>
--   <li><tt>x &lt; y</tt> = <tt>compare x y == LT</tt></li>
--   <li><tt>x &gt; y</tt> = <tt>compare x y == GT</tt></li>
--   <li><tt>x == y</tt> = <tt>compare x y == EQ</tt></li>
--   <li><tt>min x y == if x &lt;= y then x else y</tt> = <a>True</a></li>
--   <li><tt>max x y == if x &gt;= y then x else y</tt> = <a>True</a></li>
--   </ol>
--   
--   Note that (7.) and (8.) do <i>not</i> require <a>min</a> and
--   <a>max</a> to return either of their arguments. The result is merely
--   required to <i>equal</i> one of the arguments in terms of <a>(==)</a>.
--   
--   Minimal complete definition: either <a>compare</a> or <a>&lt;=</a>.
--   Using <a>compare</a> can be more efficient for complex types.
class Eq a => Ord a
compare :: Ord a => a -> a -> Ordering
(<) :: Ord a => a -> a -> Bool
(<=) :: Ord a => a -> a -> Bool
(>) :: Ord a => a -> a -> Bool
(>=) :: Ord a => a -> a -> Bool
max :: Ord a => a -> a -> a
min :: Ord a => a -> a -> a
infix 4 >=
infix 4 <
infix 4 <=
infix 4 >

-- | The character type <a>Char</a> is an enumeration whose values
--   represent Unicode (or equivalently ISO/IEC 10646) code points (i.e.
--   characters, see <a>http://www.unicode.org/</a> for details). This set
--   extends the ISO 8859-1 (Latin-1) character set (the first 256
--   characters), which is itself an extension of the ASCII character set
--   (the first 128 characters). A character literal in Haskell has type
--   <a>Char</a>.
--   
--   To convert a <a>Char</a> to or from the corresponding <a>Int</a> value
--   defined by Unicode, use <a>toEnum</a> and <a>fromEnum</a> from the
--   <a>Enum</a> class respectively (or equivalently <a>ord</a> and
--   <a>chr</a>).
data () => Char

-- | A fixed-precision integer type with at least the range <tt>[-2^29 ..
--   2^29-1]</tt>. The exact range for a given implementation can be
--   determined by using <a>minBound</a> and <a>maxBound</a> from the
--   <a>Bounded</a> class.
data () => Int

-- | Conversion of values to readable <a>String</a>s.
--   
--   Derived instances of <a>Show</a> have the following properties, which
--   are compatible with derived instances of <a>Read</a>:
--   
--   <ul>
--   <li>The result of <a>show</a> is a syntactically correct Haskell
--   expression containing only constants, given the fixity declarations in
--   force at the point where the type is declared. It contains only the
--   constructor names defined in the data type, parentheses, and spaces.
--   When labelled constructor fields are used, braces, commas, field
--   names, and equal signs are also used.</li>
--   <li>If the constructor is defined to be an infix operator, then
--   <a>showsPrec</a> will produce infix applications of the
--   constructor.</li>
--   <li>the representation will be enclosed in parentheses if the
--   precedence of the top-level constructor in <tt>x</tt> is less than
--   <tt>d</tt> (associativity is ignored). Thus, if <tt>d</tt> is
--   <tt>0</tt> then the result is never surrounded in parentheses; if
--   <tt>d</tt> is <tt>11</tt> it is always surrounded in parentheses,
--   unless it is an atomic expression.</li>
--   <li>If the constructor is defined using record syntax, then
--   <a>show</a> will produce the record-syntax form, with the fields given
--   in the same order as the original declaration.</li>
--   </ul>
--   
--   For example, given the declarations
--   
--   <pre>
--   infixr 5 :^:
--   data Tree a =  Leaf a  |  Tree a :^: Tree a
--   </pre>
--   
--   the derived instance of <a>Show</a> is equivalent to
--   
--   <pre>
--   instance (Show a) =&gt; Show (Tree a) where
--   
--          showsPrec d (Leaf m) = showParen (d &gt; app_prec) $
--               showString "Leaf " . showsPrec (app_prec+1) m
--            where app_prec = 10
--   
--          showsPrec d (u :^: v) = showParen (d &gt; up_prec) $
--               showsPrec (up_prec+1) u .
--               showString " :^: "      .
--               showsPrec (up_prec+1) v
--            where up_prec = 5
--   </pre>
--   
--   Note that right-associativity of <tt>:^:</tt> is ignored. For example,
--   
--   <ul>
--   <li><tt><a>show</a> (Leaf 1 :^: Leaf 2 :^: Leaf 3)</tt> produces the
--   string <tt>"Leaf 1 :^: (Leaf 2 :^: Leaf 3)"</tt>.</li>
--   </ul>
class () => Show a

-- | Convert a value to a readable <a>String</a>.
--   
--   <a>showsPrec</a> should satisfy the law
--   
--   <pre>
--   showsPrec d x r ++ s  ==  showsPrec d x (r ++ s)
--   </pre>
--   
--   Derived instances of <a>Read</a> and <a>Show</a> satisfy the
--   following:
--   
--   <ul>
--   <li><tt>(x,"")</tt> is an element of <tt>(<a>readsPrec</a> d
--   (<a>showsPrec</a> d x ""))</tt>.</li>
--   </ul>
--   
--   That is, <a>readsPrec</a> parses the string produced by
--   <a>showsPrec</a>, and delivers the value that <a>showsPrec</a> started
--   with.
showsPrec :: Show a => Int -> a -> ShowS

-- | A specialised variant of <a>showsPrec</a>, using precedence context
--   zero, and returning an ordinary <a>String</a>.
show :: Show a => a -> String

-- | The method <a>showList</a> is provided to allow the programmer to give
--   a specialised way of showing lists of values. For example, this is
--   used by the predefined <a>Show</a> instance of the <a>Char</a> type,
--   where values of type <a>String</a> should be shown in double quotes,
--   rather than between square brackets.
showList :: Show a => [a] -> ShowS

-- | The Foldable class represents data structures that can be reduced to a
--   summary value one element at a time. Strict left-associative folds are
--   a good fit for space-efficient reduction, while lazy right-associative
--   folds are a good fit for corecursive iteration, or for folds that
--   short-circuit after processing an initial subsequence of the
--   structure's elements.
--   
--   Instances can be derived automatically by enabling the
--   <tt>DeriveFoldable</tt> extension. For example, a derived instance for
--   a binary tree might be:
--   
--   <pre>
--   {-# LANGUAGE DeriveFoldable #-}
--   data Tree a = Empty
--               | Leaf a
--               | Node (Tree a) a (Tree a)
--       deriving Foldable
--   </pre>
--   
--   A more detailed description can be found in the <b>Overview</b>
--   section of <a>Data.Foldable#overview</a>.
--   
--   For the class laws see the <b>Laws</b> section of
--   <a>Data.Foldable#laws</a>.
class () => Foldable (t :: Type -> Type)

-- | Map each element of the structure into a monoid, and combine the
--   results with <tt>(<a>&lt;&gt;</a>)</tt>. This fold is
--   right-associative and lazy in the accumulator. For strict
--   left-associative folds consider <a>foldMap'</a> instead.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; foldMap Sum [1, 3, 5]
--   Sum {getSum = 9}
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldMap Product [1, 3, 5]
--   Product {getProduct = 15}
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldMap (replicate 3) [1, 2, 3]
--   [1,1,1,2,2,2,3,3,3]
--   </pre>
--   
--   When a Monoid's <tt>(<a>&lt;&gt;</a>)</tt> is lazy in its second
--   argument, <a>foldMap</a> can return a result even from an unbounded
--   structure. For example, lazy accumulation enables
--   <a>Data.ByteString.Builder</a> to efficiently serialise large data
--   structures and produce the output incrementally:
--   
--   <pre>
--   &gt;&gt;&gt; import qualified Data.ByteString.Lazy as L
--   
--   &gt;&gt;&gt; import qualified Data.ByteString.Builder as B
--   
--   &gt;&gt;&gt; let bld :: Int -&gt; B.Builder; bld i = B.intDec i &lt;&gt; B.word8 0x20
--   
--   &gt;&gt;&gt; let lbs = B.toLazyByteString $ foldMap bld [0..]
--   
--   &gt;&gt;&gt; L.take 64 lbs
--   "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24"
--   </pre>
foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m

-- | Right-associative fold of a structure, lazy in the accumulator.
--   
--   In the case of lists, <a>foldr</a>, when applied to a binary operator,
--   a starting value (typically the right-identity of the operator), and a
--   list, reduces the list using the binary operator, from right to left:
--   
--   <pre>
--   foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)
--   </pre>
--   
--   Note that since the head of the resulting expression is produced by an
--   application of the operator to the first element of the list, given an
--   operator lazy in its right argument, <a>foldr</a> can produce a
--   terminating expression from an unbounded list.
--   
--   For a general <a>Foldable</a> structure this should be semantically
--   identical to,
--   
--   <pre>
--   foldr f z = <a>foldr</a> f z . <a>toList</a>
--   </pre>
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; foldr (||) False [False, True, False]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr (||) False []
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr (\c acc -&gt; acc ++ [c]) "foo" ['a', 'b', 'c', 'd']
--   "foodcba"
--   </pre>
--   
--   <h5>Infinite structures</h5>
--   
--   ⚠️ Applying <a>foldr</a> to infinite structures usually doesn't
--   terminate.
--   
--   It may still terminate under one of the following conditions:
--   
--   <ul>
--   <li>the folding function is short-circuiting</li>
--   <li>the folding function is lazy on its second argument</li>
--   </ul>
--   
--   <h6>Short-circuiting</h6>
--   
--   <tt>(<a>||</a>)</tt> short-circuits on <a>True</a> values, so the
--   following terminates because there is a <a>True</a> value finitely far
--   from the left side:
--   
--   <pre>
--   &gt;&gt;&gt; foldr (||) False (True : repeat False)
--   True
--   </pre>
--   
--   But the following doesn't terminate:
--   
--   <pre>
--   &gt;&gt;&gt; foldr (||) False (repeat False ++ [True])
--   * Hangs forever *
--   </pre>
--   
--   <h6>Laziness in the second argument</h6>
--   
--   Applying <a>foldr</a> to infinite structures terminates when the
--   operator is lazy in its second argument (the initial accumulator is
--   never used in this case, and so could be left <a>undefined</a>, but
--   <tt>[]</tt> is more clear):
--   
--   <pre>
--   &gt;&gt;&gt; take 5 $ foldr (\i acc -&gt; i : fmap (+3) acc) [] (repeat 1)
--   [1,4,7,10,13]
--   </pre>
foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b

-- | Left-associative fold of a structure, lazy in the accumulator. This is
--   rarely what you want, but can work well for structures with efficient
--   right-to-left sequencing and an operator that is lazy in its left
--   argument.
--   
--   In the case of lists, <a>foldl</a>, when applied to a binary operator,
--   a starting value (typically the left-identity of the operator), and a
--   list, reduces the list using the binary operator, from left to right:
--   
--   <pre>
--   foldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn
--   </pre>
--   
--   Note that to produce the outermost application of the operator the
--   entire input list must be traversed. Like all left-associative folds,
--   <a>foldl</a> will diverge if given an infinite list.
--   
--   If you want an efficient strict left-fold, you probably want to use
--   <a>foldl'</a> instead of <a>foldl</a>. The reason for this is that the
--   latter does not force the <i>inner</i> results (e.g. <tt>z `f` x1</tt>
--   in the above example) before applying them to the operator (e.g. to
--   <tt>(`f` x2)</tt>). This results in a thunk chain <i>O(n)</i> elements
--   long, which then must be evaluated from the outside-in.
--   
--   For a general <a>Foldable</a> structure this should be semantically
--   identical to:
--   
--   <pre>
--   foldl f z = <a>foldl</a> f z . <a>toList</a>
--   </pre>
--   
--   <h4><b>Examples</b></h4>
--   
--   The first example is a strict fold, which in practice is best
--   performed with <a>foldl'</a>.
--   
--   <pre>
--   &gt;&gt;&gt; foldl (+) 42 [1,2,3,4]
--   52
--   </pre>
--   
--   Though the result below is lazy, the input is reversed before
--   prepending it to the initial accumulator, so corecursion begins only
--   after traversing the entire input string.
--   
--   <pre>
--   &gt;&gt;&gt; foldl (\acc c -&gt; c : acc) "abcd" "efgh"
--   "hgfeabcd"
--   </pre>
--   
--   A left fold of a structure that is infinite on the right cannot
--   terminate, even when for any finite input the fold just returns the
--   initial accumulator:
--   
--   <pre>
--   &gt;&gt;&gt; foldl (\a _ -&gt; a) 0 $ repeat 1
--   * Hangs forever *
--   </pre>
--   
--   WARNING: When it comes to lists, you always want to use either
--   <a>foldl'</a> or <a>foldr</a> instead.
foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b

-- | A variant of <a>foldr</a> that has no base case, and thus may only be
--   applied to non-empty structures.
--   
--   This function is non-total and will raise a runtime exception if the
--   structure happens to be empty.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; foldr1 (+) [1..4]
--   10
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr1 (+) []
--   Exception: Prelude.foldr1: empty list
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr1 (+) Nothing
--   *** Exception: foldr1: empty structure
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr1 (-) [1..4]
--   -2
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr1 (&amp;&amp;) [True, False, True, True]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr1 (||) [False, False, True, True]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldr1 (+) [1..]
--   * Hangs forever *
--   </pre>
foldr1 :: Foldable t => (a -> a -> a) -> t a -> a

-- | A variant of <a>foldl</a> that has no base case, and thus may only be
--   applied to non-empty structures.
--   
--   This function is non-total and will raise a runtime exception if the
--   structure happens to be empty.
--   
--   <pre>
--   <a>foldl1</a> f = <a>foldl1</a> f . <a>toList</a>
--   </pre>
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; foldl1 (+) [1..4]
--   10
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldl1 (+) []
--   *** Exception: Prelude.foldl1: empty list
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldl1 (+) Nothing
--   *** Exception: foldl1: empty structure
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldl1 (-) [1..4]
--   -8
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldl1 (&amp;&amp;) [True, False, True, True]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldl1 (||) [False, False, True, True]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; foldl1 (+) [1..]
--   * Hangs forever *
--   </pre>
foldl1 :: Foldable t => (a -> a -> a) -> t a -> a

-- | List of elements of a structure, from left to right. If the entire
--   list is intended to be reduced via a fold, just fold the structure
--   directly bypassing the list.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; toList Nothing
--   []
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; toList (Just 42)
--   [42]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; toList (Left "foo")
--   []
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; toList (Node (Leaf 5) 17 (Node Empty 12 (Leaf 8)))
--   [5,17,12,8]
--   </pre>
--   
--   For lists, <a>toList</a> is the identity:
--   
--   <pre>
--   &gt;&gt;&gt; toList [1, 2, 3]
--   [1,2,3]
--   </pre>
toList :: Foldable t => t a -> [a]

-- | Test whether the structure is empty. The default implementation is
--   Left-associative and lazy in both the initial element and the
--   accumulator. Thus optimised for structures where the first element can
--   be accessed in constant time. Structures where this is not the case
--   should have a non-default implementation.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; null []
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; null [1]
--   False
--   </pre>
--   
--   <a>null</a> is expected to terminate even for infinite structures. The
--   default implementation terminates provided the structure is bounded on
--   the left (there is a leftmost element).
--   
--   <pre>
--   &gt;&gt;&gt; null [1..]
--   False
--   </pre>
null :: Foldable t => t a -> Bool

-- | Returns the size/length of a finite structure as an <a>Int</a>. The
--   default implementation just counts elements starting with the
--   leftmost. Instances for structures that can compute the element count
--   faster than via element-by-element counting, should provide a
--   specialised implementation.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; length []
--   0
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; length ['a', 'b', 'c']
--   3
--   
--   &gt;&gt;&gt; length [1..]
--   * Hangs forever *
--   </pre>
length :: Foldable t => t a -> Int

-- | Does the element occur in the structure?
--   
--   Note: <a>elem</a> is often used in infix form.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; 3 `elem` []
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; 3 `elem` [1,2]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; 3 `elem` [1,2,3,4,5]
--   True
--   </pre>
--   
--   For infinite structures, the default implementation of <a>elem</a>
--   terminates if the sought-after value exists at a finite distance from
--   the left side of the structure:
--   
--   <pre>
--   &gt;&gt;&gt; 3 `elem` [1..]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; 3 `elem` ([4..] ++ [3])
--   * Hangs forever *
--   </pre>
elem :: (Foldable t, Eq a) => a -> t a -> Bool

-- | The largest element of a non-empty structure.
--   
--   This function is non-total and will raise a runtime exception if the
--   structure happens to be empty. A structure that supports random access
--   and maintains its elements in order should provide a specialised
--   implementation to return the maximum in faster than linear time.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; maximum [1..10]
--   10
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; maximum []
--   *** Exception: Prelude.maximum: empty list
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; maximum Nothing
--   *** Exception: maximum: empty structure
--   </pre>
--   
--   WARNING: This function is partial for possibly-empty structures like
--   lists.
maximum :: (Foldable t, Ord a) => t a -> a

-- | The least element of a non-empty structure.
--   
--   This function is non-total and will raise a runtime exception if the
--   structure happens to be empty. A structure that supports random access
--   and maintains its elements in order should provide a specialised
--   implementation to return the minimum in faster than linear time.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; minimum [1..10]
--   1
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; minimum []
--   *** Exception: Prelude.minimum: empty list
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; minimum Nothing
--   *** Exception: minimum: empty structure
--   </pre>
--   
--   WARNING: This function is partial for possibly-empty structures like
--   lists.
minimum :: (Foldable t, Ord a) => t a -> a

-- | The <a>sum</a> function computes the sum of the numbers of a
--   structure.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; sum []
--   0
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sum [42]
--   42
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sum [1..10]
--   55
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sum [4.1, 2.0, 1.7]
--   7.8
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sum [1..]
--   * Hangs forever *
--   </pre>
sum :: (Foldable t, Num a) => t a -> a

-- | The <a>product</a> function computes the product of the numbers of a
--   structure.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; product []
--   1
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; product [42]
--   42
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; product [1..10]
--   3628800
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; product [4.1, 2.0, 1.7]
--   13.939999999999998
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; product [1..]
--   * Hangs forever *
--   </pre>
product :: (Foldable t, Num a) => t a -> a
infix 4 `elem`

-- | Double-precision floating point numbers. It is desirable that this
--   type be at least equal in range and precision to the IEEE
--   double-precision type.
data () => Double

-- | Single-precision floating point numbers. It is desirable that this
--   type be at least equal in range and precision to the IEEE
--   single-precision type.
data () => Float

-- | A <a>Word</a> is an unsigned integral type, with the same size as
--   <a>Int</a>.
data () => Word
data () => Ordering
LT :: Ordering
EQ :: Ordering
GT :: Ordering

-- | Lifted, homogeneous equality. By lifted, we mean that it can be bogus
--   (deferred type error). By homogeneous, the two types <tt>a</tt> and
--   <tt>b</tt> must have the same kinds.
class a ~# b => (a :: k) ~ (b :: k)
infix 4 ~

-- | A value of type <tt><a>IO</a> a</tt> is a computation which, when
--   performed, does some I/O before returning a value of type <tt>a</tt>.
--   
--   There is really only one way to "perform" an I/O action: bind it to
--   <tt>Main.main</tt> in your program. When your program is run, the I/O
--   will be performed. It isn't possible to perform I/O from an arbitrary
--   function, unless that function is itself in the <a>IO</a> monad and
--   called at some point, directly or indirectly, from <tt>Main.main</tt>.
--   
--   <a>IO</a> is a monad, so <a>IO</a> actions can be combined using
--   either the do-notation or the <a>&gt;&gt;</a> and <a>&gt;&gt;=</a>
--   operations from the <a>Monad</a> class.
data () => IO a

-- | The class of monoids (types with an associative binary operation that
--   has an identity). Instances should satisfy the following:
--   
--   <ul>
--   <li><i>Right identity</i> <tt>x <a>&lt;&gt;</a> <a>mempty</a> =
--   x</tt></li>
--   <li><i>Left identity</i> <tt><a>mempty</a> <a>&lt;&gt;</a> x =
--   x</tt></li>
--   <li><i>Associativity</i> <tt>x <a>&lt;&gt;</a> (y <a>&lt;&gt;</a> z) =
--   (x <a>&lt;&gt;</a> y) <a>&lt;&gt;</a> z</tt> (<a>Semigroup</a>
--   law)</li>
--   <li><i>Concatenation</i> <tt><a>mconcat</a> = <a>foldr</a>
--   (<a>&lt;&gt;</a>) <a>mempty</a></tt></li>
--   </ul>
--   
--   You can alternatively define <a>mconcat</a> instead of <a>mempty</a>,
--   in which case the laws are:
--   
--   <ul>
--   <li><i>Unit</i> <tt><a>mconcat</a> (<a>pure</a> x) = x</tt></li>
--   <li><i>Multiplication</i> <tt><a>mconcat</a> (<a>join</a> xss) =
--   <a>mconcat</a> (<a>fmap</a> <a>mconcat</a> xss)</tt></li>
--   <li><i>Subclass</i> <tt><a>mconcat</a> (<tt>toList</tt> xs) =
--   <a>sconcat</a> xs</tt></li>
--   </ul>
--   
--   The method names refer to the monoid of lists under concatenation, but
--   there are many other instances.
--   
--   Some types can be viewed as a monoid in more than one way, e.g. both
--   addition and multiplication on numbers. In such cases we often define
--   <tt>newtype</tt>s and make those instances of <a>Monoid</a>, e.g.
--   <a>Sum</a> and <a>Product</a>.
--   
--   <b>NOTE</b>: <a>Semigroup</a> is a superclass of <a>Monoid</a> since
--   <i>base-4.11.0.0</i>.
class Semigroup a => Monoid a

-- | Identity of <a>mappend</a>
--   
--   <h4><b>Examples</b></h4>
--   
--   <pre>
--   &gt;&gt;&gt; "Hello world" &lt;&gt; mempty
--   "Hello world"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; mempty &lt;&gt; [1, 2, 3]
--   [1,2,3]
--   </pre>
mempty :: Monoid a => a

-- | An associative operation
--   
--   <b>NOTE</b>: This method is redundant and has the default
--   implementation <tt><a>mappend</a> = (<a>&lt;&gt;</a>)</tt> since
--   <i>base-4.11.0.0</i>. Should it be implemented manually, since
--   <a>mappend</a> is a synonym for (<a>&lt;&gt;</a>), it is expected that
--   the two functions are defined the same way. In a future GHC release
--   <a>mappend</a> will be removed from <a>Monoid</a>.
mappend :: Monoid a => a -> a -> a

-- | Fold a list using the monoid.
--   
--   For most types, the default definition for <a>mconcat</a> will be
--   used, but the function is included in the class definition so that an
--   optimized version can be provided for specific types.
--   
--   <pre>
--   &gt;&gt;&gt; mconcat ["Hello", " ", "Haskell", "!"]
--   "Hello Haskell!"
--   </pre>
mconcat :: Monoid a => [a] -> a

-- | The class of semigroups (types with an associative binary operation).
--   
--   Instances should satisfy the following:
--   
--   <ul>
--   <li><i>Associativity</i> <tt>x <a>&lt;&gt;</a> (y <a>&lt;&gt;</a> z) =
--   (x <a>&lt;&gt;</a> y) <a>&lt;&gt;</a> z</tt></li>
--   </ul>
--   
--   You can alternatively define <a>sconcat</a> instead of
--   (<a>&lt;&gt;</a>), in which case the laws are:
--   
--   <ul>
--   <li><i>Unit</i> <tt><a>sconcat</a> (<a>pure</a> x) = x</tt></li>
--   <li><i>Multiplication</i> <tt><a>sconcat</a> (<a>join</a> xss) =
--   <a>sconcat</a> (<a>fmap</a> <a>sconcat</a> xss)</tt></li>
--   </ul>
class () => Semigroup a

-- | An associative operation.
--   
--   <h4><b>Examples</b></h4>
--   
--   <pre>
--   &gt;&gt;&gt; [1,2,3] &lt;&gt; [4,5,6]
--   [1,2,3,4,5,6]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; Just [1, 2, 3] &lt;&gt; Just [4, 5, 6]
--   Just [1,2,3,4,5,6]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; putStr "Hello, " &lt;&gt; putStrLn "World!"
--   Hello, World!
--   </pre>
(<>) :: Semigroup a => a -> a -> a

-- | Reduce a non-empty list with <a>&lt;&gt;</a>
--   
--   The default definition should be sufficient, but this can be
--   overridden for efficiency.
--   
--   <h4><b>Examples</b></h4>
--   
--   For the following examples, we will assume that we have:
--   
--   <pre>
--   &gt;&gt;&gt; import Data.List.NonEmpty (NonEmpty (..))
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sconcat $ "Hello" :| [" ", "Haskell", "!"]
--   "Hello Haskell!"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sconcat $ Just [1, 2, 3] :| [Nothing, Just [4, 5, 6]]
--   Just [1,2,3,4,5,6]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sconcat $ Left 1 :| [Right 2, Left 3, Right 4]
--   Right 2
--   </pre>
sconcat :: Semigroup a => NonEmpty a -> a

-- | Repeat a value <tt>n</tt> times.
--   
--   The default definition will raise an exception for a multiplier that
--   is <tt>&lt;= 0</tt>. This may be overridden with an implementation
--   that is total. For monoids it is preferred to use
--   <tt>stimesMonoid</tt>.
--   
--   By making this a member of the class, idempotent semigroups and
--   monoids can upgrade this to execute in &lt;math&gt; by picking
--   <tt>stimes = <a>stimesIdempotent</a></tt> or <tt>stimes =
--   <a>stimesIdempotentMonoid</a></tt> respectively.
--   
--   <h4><b>Examples</b></h4>
--   
--   <pre>
--   &gt;&gt;&gt; stimes 4 [1]
--   [1,1,1,1]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; stimes 5 (putStr "hi!")
--   hi!hi!hi!hi!hi!
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; stimes 3 (Right ":)")
--   Right ":)"
--   </pre>
stimes :: (Semigroup a, Integral b) => b -> a -> a
infixr 6 <>

-- | A functor with application, providing operations to
--   
--   <ul>
--   <li>embed pure expressions (<a>pure</a>), and</li>
--   <li>sequence computations and combine their results (<a>&lt;*&gt;</a>
--   and <a>liftA2</a>).</li>
--   </ul>
--   
--   A minimal complete definition must include implementations of
--   <a>pure</a> and of either <a>&lt;*&gt;</a> or <a>liftA2</a>. If it
--   defines both, then they must behave the same as their default
--   definitions:
--   
--   <pre>
--   (<a>&lt;*&gt;</a>) = <a>liftA2</a> <a>id</a>
--   </pre>
--   
--   <pre>
--   <a>liftA2</a> f x y = f <a>&lt;$&gt;</a> x <a>&lt;*&gt;</a> y
--   </pre>
--   
--   Further, any definition must satisfy the following:
--   
--   <ul>
--   <li><i>Identity</i> <pre><a>pure</a> <a>id</a> <a>&lt;*&gt;</a> v =
--   v</pre></li>
--   <li><i>Composition</i> <pre><a>pure</a> (.) <a>&lt;*&gt;</a> u
--   <a>&lt;*&gt;</a> v <a>&lt;*&gt;</a> w = u <a>&lt;*&gt;</a> (v
--   <a>&lt;*&gt;</a> w)</pre></li>
--   <li><i>Homomorphism</i> <pre><a>pure</a> f <a>&lt;*&gt;</a>
--   <a>pure</a> x = <a>pure</a> (f x)</pre></li>
--   <li><i>Interchange</i> <pre>u <a>&lt;*&gt;</a> <a>pure</a> y =
--   <a>pure</a> (<a>$</a> y) <a>&lt;*&gt;</a> u</pre></li>
--   </ul>
--   
--   The other methods have the following default definitions, which may be
--   overridden with equivalent specialized implementations:
--   
--   <ul>
--   <li><pre>u <a>*&gt;</a> v = (<a>id</a> <a>&lt;$</a> u)
--   <a>&lt;*&gt;</a> v</pre></li>
--   <li><pre>u <a>&lt;*</a> v = <a>liftA2</a> <a>const</a> u v</pre></li>
--   </ul>
--   
--   As a consequence of these laws, the <a>Functor</a> instance for
--   <tt>f</tt> will satisfy
--   
--   <ul>
--   <li><pre><a>fmap</a> f x = <a>pure</a> f <a>&lt;*&gt;</a> x</pre></li>
--   </ul>
--   
--   It may be useful to note that supposing
--   
--   <pre>
--   forall x y. p (q x y) = f x . g y
--   </pre>
--   
--   it follows from the above that
--   
--   <pre>
--   <a>liftA2</a> p (<a>liftA2</a> q u v) = <a>liftA2</a> f u . <a>liftA2</a> g v
--   </pre>
--   
--   If <tt>f</tt> is also a <a>Monad</a>, it should satisfy
--   
--   <ul>
--   <li><pre><a>pure</a> = <a>return</a></pre></li>
--   <li><pre>m1 <a>&lt;*&gt;</a> m2 = m1 <a>&gt;&gt;=</a> (\x1 -&gt; m2
--   <a>&gt;&gt;=</a> (\x2 -&gt; <a>return</a> (x1 x2)))</pre></li>
--   <li><pre>(<a>*&gt;</a>) = (<a>&gt;&gt;</a>)</pre></li>
--   </ul>
--   
--   (which implies that <a>pure</a> and <a>&lt;*&gt;</a> satisfy the
--   applicative functor laws).
class Functor f => Applicative (f :: Type -> Type)

-- | Lift a value.
pure :: Applicative f => a -> f a

-- | Sequential application.
--   
--   A few functors support an implementation of <a>&lt;*&gt;</a> that is
--   more efficient than the default one.
--   
--   <h4><b>Example</b></h4>
--   
--   Used in combination with <tt>(<tt>&lt;$&gt;</tt>)</tt>,
--   <tt>(<a>&lt;*&gt;</a>)</tt> can be used to build a record.
--   
--   <pre>
--   &gt;&gt;&gt; data MyState = MyState {arg1 :: Foo, arg2 :: Bar, arg3 :: Baz}
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; produceFoo :: Applicative f =&gt; f Foo
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; produceBar :: Applicative f =&gt; f Bar
--   
--   &gt;&gt;&gt; produceBaz :: Applicative f =&gt; f Baz
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; mkState :: Applicative f =&gt; f MyState
--   
--   &gt;&gt;&gt; mkState = MyState &lt;$&gt; produceFoo &lt;*&gt; produceBar &lt;*&gt; produceBaz
--   </pre>
(<*>) :: Applicative f => f (a -> b) -> f a -> f b

-- | Lift a binary function to actions.
--   
--   Some functors support an implementation of <a>liftA2</a> that is more
--   efficient than the default one. In particular, if <a>fmap</a> is an
--   expensive operation, it is likely better to use <a>liftA2</a> than to
--   <a>fmap</a> over the structure and then use <a>&lt;*&gt;</a>.
--   
--   This became a typeclass method in 4.10.0.0. Prior to that, it was a
--   function defined in terms of <a>&lt;*&gt;</a> and <a>fmap</a>.
--   
--   <h4><b>Example</b></h4>
--   
--   <pre>
--   &gt;&gt;&gt; liftA2 (,) (Just 3) (Just 5)
--   Just (3,5)
--   </pre>
liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c

-- | Sequence actions, discarding the value of the first argument.
--   
--   <h4><b>Examples</b></h4>
--   
--   If used in conjunction with the Applicative instance for <a>Maybe</a>,
--   you can chain Maybe computations, with a possible "early return" in
--   case of <a>Nothing</a>.
--   
--   <pre>
--   &gt;&gt;&gt; Just 2 *&gt; Just 3
--   Just 3
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; Nothing *&gt; Just 3
--   Nothing
--   </pre>
--   
--   Of course a more interesting use case would be to have effectful
--   computations instead of just returning pure values.
--   
--   <pre>
--   &gt;&gt;&gt; import Data.Char
--   
--   &gt;&gt;&gt; import Text.ParserCombinators.ReadP
--   
--   &gt;&gt;&gt; let p = string "my name is " *&gt; munch1 isAlpha &lt;* eof
--   
--   &gt;&gt;&gt; readP_to_S p "my name is Simon"
--   [("Simon","")]
--   </pre>
(*>) :: Applicative f => f a -> f b -> f b

-- | Sequence actions, discarding the value of the second argument.
(<*) :: Applicative f => f a -> f b -> f a
infixl 4 <*>
infixl 4 *>
infixl 4 <*

-- | A type <tt>f</tt> is a Functor if it provides a function <tt>fmap</tt>
--   which, given any types <tt>a</tt> and <tt>b</tt> lets you apply any
--   function from <tt>(a -&gt; b)</tt> to turn an <tt>f a</tt> into an
--   <tt>f b</tt>, preserving the structure of <tt>f</tt>. Furthermore
--   <tt>f</tt> needs to adhere to the following:
--   
--   <ul>
--   <li><i>Identity</i> <tt><a>fmap</a> <a>id</a> == <a>id</a></tt></li>
--   <li><i>Composition</i> <tt><a>fmap</a> (f . g) == <a>fmap</a> f .
--   <a>fmap</a> g</tt></li>
--   </ul>
--   
--   Note, that the second law follows from the free theorem of the type
--   <a>fmap</a> and the first law, so you need only check that the former
--   condition holds. See
--   <a>https://www.schoolofhaskell.com/user/edwardk/snippets/fmap</a> or
--   <a>https://github.com/quchen/articles/blob/master/second_functor_law.md</a>
--   for an explanation.
class () => Functor (f :: Type -> Type)

-- | <a>fmap</a> is used to apply a function of type <tt>(a -&gt; b)</tt>
--   to a value of type <tt>f a</tt>, where f is a functor, to produce a
--   value of type <tt>f b</tt>. Note that for any type constructor with
--   more than one parameter (e.g., <tt>Either</tt>), only the last type
--   parameter can be modified with <a>fmap</a> (e.g., <tt>b</tt> in
--   `Either a b`).
--   
--   Some type constructors with two parameters or more have a
--   <tt><a>Bifunctor</a></tt> instance that allows both the last and the
--   penultimate parameters to be mapped over.
--   
--   <h4><b>Examples</b></h4>
--   
--   Convert from a <tt><a>Maybe</a> Int</tt> to a <tt>Maybe String</tt>
--   using <a>show</a>:
--   
--   <pre>
--   &gt;&gt;&gt; fmap show Nothing
--   Nothing
--   
--   &gt;&gt;&gt; fmap show (Just 3)
--   Just "3"
--   </pre>
--   
--   Convert from an <tt><a>Either</a> Int Int</tt> to an <tt>Either Int
--   String</tt> using <a>show</a>:
--   
--   <pre>
--   &gt;&gt;&gt; fmap show (Left 17)
--   Left 17
--   
--   &gt;&gt;&gt; fmap show (Right 17)
--   Right "17"
--   </pre>
--   
--   Double each element of a list:
--   
--   <pre>
--   &gt;&gt;&gt; fmap (*2) [1,2,3]
--   [2,4,6]
--   </pre>
--   
--   Apply <a>even</a> to the second element of a pair:
--   
--   <pre>
--   &gt;&gt;&gt; fmap even (2,2)
--   (2,True)
--   </pre>
--   
--   It may seem surprising that the function is only applied to the last
--   element of the tuple compared to the list example above which applies
--   it to every element in the list. To understand, remember that tuples
--   are type constructors with multiple type parameters: a tuple of 3
--   elements <tt>(a,b,c)</tt> can also be written <tt>(,,) a b c</tt> and
--   its <tt>Functor</tt> instance is defined for <tt>Functor ((,,) a
--   b)</tt> (i.e., only the third parameter is free to be mapped over with
--   <tt>fmap</tt>).
--   
--   It explains why <tt>fmap</tt> can be used with tuples containing
--   values of different types as in the following example:
--   
--   <pre>
--   &gt;&gt;&gt; fmap even ("hello", 1.0, 4)
--   ("hello",1.0,True)
--   </pre>
fmap :: Functor f => (a -> b) -> f a -> f b

-- | Replace all locations in the input with the same value. The default
--   definition is <tt><a>fmap</a> . <a>const</a></tt>, but this may be
--   overridden with a more efficient version.
--   
--   <h4><b>Examples</b></h4>
--   
--   Perform a computation with <a>Maybe</a> and replace the result with a
--   constant value if it is <a>Just</a>:
--   
--   <pre>
--   &gt;&gt;&gt; 'a' &lt;$ Just 2
--   Just 'a'
--   
--   &gt;&gt;&gt; 'a' &lt;$ Nothing
--   Nothing
--   </pre>
(<$) :: Functor f => a -> f b -> f a
infixl 4 <$

-- | The <a>Monad</a> class defines the basic operations over a
--   <i>monad</i>, a concept from a branch of mathematics known as
--   <i>category theory</i>. From the perspective of a Haskell programmer,
--   however, it is best to think of a monad as an <i>abstract datatype</i>
--   of actions. Haskell's <tt>do</tt> expressions provide a convenient
--   syntax for writing monadic expressions.
--   
--   Instances of <a>Monad</a> should satisfy the following:
--   
--   <ul>
--   <li><i>Left identity</i> <tt><a>return</a> a <a>&gt;&gt;=</a> k = k
--   a</tt></li>
--   <li><i>Right identity</i> <tt>m <a>&gt;&gt;=</a> <a>return</a> =
--   m</tt></li>
--   <li><i>Associativity</i> <tt>m <a>&gt;&gt;=</a> (\x -&gt; k x
--   <a>&gt;&gt;=</a> h) = (m <a>&gt;&gt;=</a> k) <a>&gt;&gt;=</a>
--   h</tt></li>
--   </ul>
--   
--   Furthermore, the <a>Monad</a> and <a>Applicative</a> operations should
--   relate as follows:
--   
--   <ul>
--   <li><pre><a>pure</a> = <a>return</a></pre></li>
--   <li><pre>m1 <a>&lt;*&gt;</a> m2 = m1 <a>&gt;&gt;=</a> (\x1 -&gt; m2
--   <a>&gt;&gt;=</a> (\x2 -&gt; <a>return</a> (x1 x2)))</pre></li>
--   </ul>
--   
--   The above laws imply:
--   
--   <ul>
--   <li><pre><a>fmap</a> f xs = xs <a>&gt;&gt;=</a> <a>return</a> .
--   f</pre></li>
--   <li><pre>(<a>&gt;&gt;</a>) = (<a>*&gt;</a>)</pre></li>
--   </ul>
--   
--   and that <a>pure</a> and (<a>&lt;*&gt;</a>) satisfy the applicative
--   functor laws.
--   
--   The instances of <a>Monad</a> for lists, <a>Maybe</a> and <a>IO</a>
--   defined in the <a>Prelude</a> satisfy these laws.
class Applicative m => Monad (m :: Type -> Type)

-- | Sequentially compose two actions, passing any value produced by the
--   first as an argument to the second.
--   
--   '<tt>as <a>&gt;&gt;=</a> bs</tt>' can be understood as the <tt>do</tt>
--   expression
--   
--   <pre>
--   do a &lt;- as
--      bs a
--   </pre>
(>>=) :: Monad m => m a -> (a -> m b) -> m b

-- | Sequentially compose two actions, discarding any value produced by the
--   first, like sequencing operators (such as the semicolon) in imperative
--   languages.
--   
--   '<tt>as <a>&gt;&gt;</a> bs</tt>' can be understood as the <tt>do</tt>
--   expression
--   
--   <pre>
--   do as
--      bs
--   </pre>
(>>) :: Monad m => m a -> m b -> m b

-- | Inject a value into the monadic type.
return :: Monad m => a -> m a
infixl 1 >>=
infixl 1 >>

-- | When a value is bound in <tt>do</tt>-notation, the pattern on the left
--   hand side of <tt>&lt;-</tt> might not match. In this case, this class
--   provides a function to recover.
--   
--   A <a>Monad</a> without a <a>MonadFail</a> instance may only be used in
--   conjunction with pattern that always match, such as newtypes, tuples,
--   data types with only a single data constructor, and irrefutable
--   patterns (<tt>~pat</tt>).
--   
--   Instances of <a>MonadFail</a> should satisfy the following law:
--   <tt>fail s</tt> should be a left zero for <a>&gt;&gt;=</a>,
--   
--   <pre>
--   fail s &gt;&gt;= f  =  fail s
--   </pre>
--   
--   If your <a>Monad</a> is also <a>MonadPlus</a>, a popular definition is
--   
--   <pre>
--   fail _ = mzero
--   </pre>
--   
--   <tt>fail s</tt> should be an action that runs in the monad itself, not
--   an exception (except in instances of <tt>MonadIO</tt>). In particular,
--   <tt>fail</tt> should not be implemented in terms of <tt>error</tt>.
class Monad m => MonadFail (m :: Type -> Type)
fail :: MonadFail m => String -> m a

-- | The <a>Data</a> class comprehends a fundamental primitive
--   <a>gfoldl</a> for folding over constructor applications, say terms.
--   This primitive can be instantiated in several ways to map over the
--   immediate subterms of a term; see the <tt>gmap</tt> combinators later
--   in this class. Indeed, a generic programmer does not necessarily need
--   to use the ingenious gfoldl primitive but rather the intuitive
--   <tt>gmap</tt> combinators. The <a>gfoldl</a> primitive is completed by
--   means to query top-level constructors, to turn constructor
--   representations into proper terms, and to list all possible datatype
--   constructors. This completion allows us to serve generic programming
--   scenarios like read, show, equality, term generation.
--   
--   The combinators <a>gmapT</a>, <a>gmapQ</a>, <a>gmapM</a>, etc are all
--   provided with default definitions in terms of <a>gfoldl</a>, leaving
--   open the opportunity to provide datatype-specific definitions. (The
--   inclusion of the <tt>gmap</tt> combinators as members of class
--   <a>Data</a> allows the programmer or the compiler to derive
--   specialised, and maybe more efficient code per datatype. <i>Note</i>:
--   <a>gfoldl</a> is more higher-order than the <tt>gmap</tt> combinators.
--   This is subject to ongoing benchmarking experiments. It might turn out
--   that the <tt>gmap</tt> combinators will be moved out of the class
--   <a>Data</a>.)
--   
--   Conceptually, the definition of the <tt>gmap</tt> combinators in terms
--   of the primitive <a>gfoldl</a> requires the identification of the
--   <a>gfoldl</a> function arguments. Technically, we also need to
--   identify the type constructor <tt>c</tt> for the construction of the
--   result type from the folded term type.
--   
--   In the definition of <tt>gmapQ</tt><i>x</i> combinators, we use
--   phantom type constructors for the <tt>c</tt> in the type of
--   <a>gfoldl</a> because the result type of a query does not involve the
--   (polymorphic) type of the term argument. In the definition of
--   <a>gmapQl</a> we simply use the plain constant type constructor
--   because <a>gfoldl</a> is left-associative anyway and so it is readily
--   suited to fold a left-associative binary operation over the immediate
--   subterms. In the definition of gmapQr, extra effort is needed. We use
--   a higher-order accumulation trick to mediate between left-associative
--   constructor application vs. right-associative binary operation (e.g.,
--   <tt>(:)</tt>). When the query is meant to compute a value of type
--   <tt>r</tt>, then the result type within generic folding is <tt>r -&gt;
--   r</tt>. So the result of folding is a function to which we finally
--   pass the right unit.
--   
--   With the <tt>-XDeriveDataTypeable</tt> option, GHC can generate
--   instances of the <a>Data</a> class automatically. For example, given
--   the declaration
--   
--   <pre>
--   data T a b = C1 a b | C2 deriving (Typeable, Data)
--   </pre>
--   
--   GHC will generate an instance that is equivalent to
--   
--   <pre>
--   instance (Data a, Data b) =&gt; Data (T a b) where
--       gfoldl k z (C1 a b) = z C1 `k` a `k` b
--       gfoldl k z C2       = z C2
--   
--       gunfold k z c = case constrIndex c of
--                           1 -&gt; k (k (z C1))
--                           2 -&gt; z C2
--   
--       toConstr (C1 _ _) = con_C1
--       toConstr C2       = con_C2
--   
--       dataTypeOf _ = ty_T
--   
--   con_C1 = mkConstr ty_T "C1" [] Prefix
--   con_C2 = mkConstr ty_T "C2" [] Prefix
--   ty_T   = mkDataType "Module.T" [con_C1, con_C2]
--   </pre>
--   
--   This is suitable for datatypes that are exported transparently.
class Typeable a => Data a

-- | <a>IsString</a> is used in combination with the
--   <tt>-XOverloadedStrings</tt> language extension to convert the
--   literals to different string types.
--   
--   For example, if you use the <a>text</a> package, you can say
--   
--   <pre>
--   {-# LANGUAGE OverloadedStrings  #-}
--   
--   myText = "hello world" :: Text
--   </pre>
--   
--   Internally, the extension will convert this to the equivalent of
--   
--   <pre>
--   myText = fromString @Text ("hello world" :: String)
--   </pre>
--   
--   <b>Note:</b> You can use <tt>fromString</tt> in normal code as well,
--   but the usual performance/memory efficiency problems with
--   <a>String</a> apply.
class () => IsString a
fromString :: IsString a => String -> a

-- | Integral numbers, supporting integer division.
--   
--   The Haskell Report defines no laws for <a>Integral</a>. However,
--   <a>Integral</a> instances are customarily expected to define a
--   Euclidean domain and have the following properties for the
--   <a>div</a>/<a>mod</a> and <a>quot</a>/<a>rem</a> pairs, given suitable
--   Euclidean functions <tt>f</tt> and <tt>g</tt>:
--   
--   <ul>
--   <li><tt>x</tt> = <tt>y * quot x y + rem x y</tt> with <tt>rem x y</tt>
--   = <tt>fromInteger 0</tt> or <tt>g (rem x y)</tt> &lt; <tt>g
--   y</tt></li>
--   <li><tt>x</tt> = <tt>y * div x y + mod x y</tt> with <tt>mod x y</tt>
--   = <tt>fromInteger 0</tt> or <tt>f (mod x y)</tt> &lt; <tt>f
--   y</tt></li>
--   </ul>
--   
--   An example of a suitable Euclidean function, for <a>Integer</a>'s
--   instance, is <a>abs</a>.
--   
--   In addition, <a>toInteger</a> should be total, and <a>fromInteger</a>
--   should be a left inverse for it, i.e. <tt>fromInteger (toInteger i) =
--   i</tt>.
class (Real a, Enum a) => Integral a

-- | integer division truncated toward zero
--   
--   WARNING: This function is partial (because it throws when 0 is passed
--   as the divisor) for all the integer types in <tt>base</tt>.
quot :: Integral a => a -> a -> a

-- | integer remainder, satisfying
--   
--   <pre>
--   (x `quot` y)*y + (x `rem` y) == x
--   </pre>
--   
--   WARNING: This function is partial (because it throws when 0 is passed
--   as the divisor) for all the integer types in <tt>base</tt>.
rem :: Integral a => a -> a -> a

-- | integer division truncated toward negative infinity
--   
--   WARNING: This function is partial (because it throws when 0 is passed
--   as the divisor) for all the integer types in <tt>base</tt>.
div :: Integral a => a -> a -> a

-- | integer modulus, satisfying
--   
--   <pre>
--   (x `div` y)*y + (x `mod` y) == x
--   </pre>
--   
--   WARNING: This function is partial (because it throws when 0 is passed
--   as the divisor) for all the integer types in <tt>base</tt>.
mod :: Integral a => a -> a -> a

-- | simultaneous <a>quot</a> and <a>rem</a>
--   
--   WARNING: This function is partial (because it throws when 0 is passed
--   as the divisor) for all the integer types in <tt>base</tt>.
quotRem :: Integral a => a -> a -> (a, a)

-- | simultaneous <a>div</a> and <a>mod</a>
--   
--   WARNING: This function is partial (because it throws when 0 is passed
--   as the divisor) for all the integer types in <tt>base</tt>.
divMod :: Integral a => a -> a -> (a, a)

-- | conversion to <a>Integer</a>
toInteger :: Integral a => a -> Integer
infixl 7 `quot`
infixl 7 `rem`
infixl 7 `div`
infixl 7 `mod`

-- | Arbitrary-precision rational numbers, represented as a ratio of two
--   <a>Integer</a> values. A rational number may be constructed using the
--   <a>%</a> operator.
type Rational = Ratio Integer

-- | The Haskell 2010 type for exceptions in the <a>IO</a> monad. Any I/O
--   operation may raise an <a>IOException</a> instead of returning a
--   result. For a more general type of exception, including also those
--   that arise in pure code, see <a>Exception</a>.
--   
--   In Haskell 2010, this is an opaque type.
type IOError = IOException

-- | The <a>Bounded</a> class is used to name the upper and lower limits of
--   a type. <a>Ord</a> is not a superclass of <a>Bounded</a> since types
--   that are not totally ordered may also have upper and lower bounds.
--   
--   The <a>Bounded</a> class may be derived for any enumeration type;
--   <a>minBound</a> is the first constructor listed in the <tt>data</tt>
--   declaration and <a>maxBound</a> is the last. <a>Bounded</a> may also
--   be derived for single-constructor datatypes whose constituent types
--   are in <a>Bounded</a>.
class () => Bounded a
minBound :: Bounded a => a
maxBound :: Bounded a => a

-- | Class <a>Enum</a> defines operations on sequentially ordered types.
--   
--   The <tt>enumFrom</tt>... methods are used in Haskell's translation of
--   arithmetic sequences.
--   
--   Instances of <a>Enum</a> may be derived for any enumeration type
--   (types whose constructors have no fields). The nullary constructors
--   are assumed to be numbered left-to-right by <a>fromEnum</a> from
--   <tt>0</tt> through <tt>n-1</tt>. See Chapter 10 of the <i>Haskell
--   Report</i> for more details.
--   
--   For any type that is an instance of class <a>Bounded</a> as well as
--   <a>Enum</a>, the following should hold:
--   
--   <ul>
--   <li>The calls <tt><a>succ</a> <a>maxBound</a></tt> and <tt><a>pred</a>
--   <a>minBound</a></tt> should result in a runtime error.</li>
--   <li><a>fromEnum</a> and <a>toEnum</a> should give a runtime error if
--   the result value is not representable in the result type. For example,
--   <tt><a>toEnum</a> 7 :: <a>Bool</a></tt> is an error.</li>
--   <li><a>enumFrom</a> and <a>enumFromThen</a> should be defined with an
--   implicit bound, thus:</li>
--   </ul>
--   
--   <pre>
--   enumFrom     x   = enumFromTo     x maxBound
--   enumFromThen x y = enumFromThenTo x y bound
--     where
--       bound | fromEnum y &gt;= fromEnum x = maxBound
--             | otherwise                = minBound
--   </pre>
class () => Enum a

-- | the successor of a value. For numeric types, <a>succ</a> adds 1.
succ :: Enum a => a -> a

-- | the predecessor of a value. For numeric types, <a>pred</a> subtracts
--   1.
pred :: Enum a => a -> a

-- | Convert from an <a>Int</a>.
toEnum :: Enum a => Int -> a

-- | Convert to an <a>Int</a>. It is implementation-dependent what
--   <a>fromEnum</a> returns when applied to a value that is too large to
--   fit in an <a>Int</a>.
fromEnum :: Enum a => a -> Int

-- | Used in Haskell's translation of <tt>[n..]</tt> with <tt>[n..] =
--   enumFrom n</tt>, a possible implementation being <tt>enumFrom n = n :
--   enumFrom (succ n)</tt>. For example:
--   
--   <ul>
--   <li><pre>enumFrom 4 :: [Integer] = [4,5,6,7,...]</pre></li>
--   <li><pre>enumFrom 6 :: [Int] = [6,7,8,9,...,maxBound ::
--   Int]</pre></li>
--   </ul>
enumFrom :: Enum a => a -> [a]

-- | Used in Haskell's translation of <tt>[n,n'..]</tt> with <tt>[n,n'..] =
--   enumFromThen n n'</tt>, a possible implementation being
--   <tt>enumFromThen n n' = n : n' : worker (f x) (f x n')</tt>,
--   <tt>worker s v = v : worker s (s v)</tt>, <tt>x = fromEnum n' -
--   fromEnum n</tt> and <tt>f n y | n &gt; 0 = f (n - 1) (succ y) | n &lt;
--   0 = f (n + 1) (pred y) | otherwise = y</tt> For example:
--   
--   <ul>
--   <li><pre>enumFromThen 4 6 :: [Integer] = [4,6,8,10...]</pre></li>
--   <li><pre>enumFromThen 6 2 :: [Int] = [6,2,-2,-6,...,minBound ::
--   Int]</pre></li>
--   </ul>
enumFromThen :: Enum a => a -> a -> [a]

-- | Used in Haskell's translation of <tt>[n..m]</tt> with <tt>[n..m] =
--   enumFromTo n m</tt>, a possible implementation being <tt>enumFromTo n
--   m | n &lt;= m = n : enumFromTo (succ n) m | otherwise = []</tt>. For
--   example:
--   
--   <ul>
--   <li><pre>enumFromTo 6 10 :: [Int] = [6,7,8,9,10]</pre></li>
--   <li><pre>enumFromTo 42 1 :: [Integer] = []</pre></li>
--   </ul>
enumFromTo :: Enum a => a -> a -> [a]

-- | Used in Haskell's translation of <tt>[n,n'..m]</tt> with <tt>[n,n'..m]
--   = enumFromThenTo n n' m</tt>, a possible implementation being
--   <tt>enumFromThenTo n n' m = worker (f x) (c x) n m</tt>, <tt>x =
--   fromEnum n' - fromEnum n</tt>, <tt>c x = bool (&gt;=) (<a>(x</a>
--   0)</tt> <tt>f n y | n &gt; 0 = f (n - 1) (succ y) | n &lt; 0 = f (n +
--   1) (pred y) | otherwise = y</tt> and <tt>worker s c v m | c v m = v :
--   worker s c (s v) m | otherwise = []</tt> For example:
--   
--   <ul>
--   <li><pre>enumFromThenTo 4 2 -6 :: [Integer] =
--   [4,2,0,-2,-4,-6]</pre></li>
--   <li><pre>enumFromThenTo 6 8 2 :: [Int] = []</pre></li>
--   </ul>
enumFromThenTo :: Enum a => a -> a -> a -> [a]

-- | Trigonometric and hyperbolic functions and related functions.
--   
--   The Haskell Report defines no laws for <a>Floating</a>. However,
--   <tt>(<a>+</a>)</tt>, <tt>(<a>*</a>)</tt> and <a>exp</a> are
--   customarily expected to define an exponential field and have the
--   following properties:
--   
--   <ul>
--   <li><tt>exp (a + b)</tt> = <tt>exp a * exp b</tt></li>
--   <li><tt>exp (fromInteger 0)</tt> = <tt>fromInteger 1</tt></li>
--   </ul>
class Fractional a => Floating a
pi :: Floating a => a
exp :: Floating a => a -> a
log :: Floating a => a -> a
sqrt :: Floating a => a -> a
(**) :: Floating a => a -> a -> a
logBase :: Floating a => a -> a -> a
sin :: Floating a => a -> a
cos :: Floating a => a -> a
tan :: Floating a => a -> a
asin :: Floating a => a -> a
acos :: Floating a => a -> a
atan :: Floating a => a -> a
sinh :: Floating a => a -> a
cosh :: Floating a => a -> a
tanh :: Floating a => a -> a
asinh :: Floating a => a -> a
acosh :: Floating a => a -> a
atanh :: Floating a => a -> a
infixr 8 **

-- | Fractional numbers, supporting real division.
--   
--   The Haskell Report defines no laws for <a>Fractional</a>. However,
--   <tt>(<a>+</a>)</tt> and <tt>(<a>*</a>)</tt> are customarily expected
--   to define a division ring and have the following properties:
--   
--   <ul>
--   <li><i><b><a>recip</a> gives the multiplicative inverse</b></i> <tt>x
--   * recip x</tt> = <tt>recip x * x</tt> = <tt>fromInteger 1</tt></li>
--   <li><i><b>Totality of <a>toRational</a></b></i> <a>toRational</a> is
--   total</li>
--   <li><i><b>Coherence with <a>toRational</a></b></i> if the type also
--   implements <a>Real</a>, then <a>fromRational</a> is a left inverse for
--   <a>toRational</a>, i.e. <tt>fromRational (toRational i) = i</tt></li>
--   </ul>
--   
--   Note that it <i>isn't</i> customarily expected that a type instance of
--   <a>Fractional</a> implement a field. However, all instances in
--   <tt>base</tt> do.
class Num a => Fractional a

-- | Fractional division.
(/) :: Fractional a => a -> a -> a

-- | Reciprocal fraction.
recip :: Fractional a => a -> a

-- | Conversion from a <a>Rational</a> (that is <tt><a>Ratio</a>
--   <a>Integer</a></tt>). A floating literal stands for an application of
--   <a>fromRational</a> to a value of type <a>Rational</a>, so such
--   literals have type <tt>(<a>Fractional</a> a) =&gt; a</tt>.
fromRational :: Fractional a => Rational -> a
infixl 7 /

-- | Basic numeric class.
--   
--   The Haskell Report defines no laws for <a>Num</a>. However,
--   <tt>(<a>+</a>)</tt> and <tt>(<a>*</a>)</tt> are customarily expected
--   to define a ring and have the following properties:
--   
--   <ul>
--   <li><i><b>Associativity of <tt>(<a>+</a>)</tt></b></i> <tt>(x + y) +
--   z</tt> = <tt>x + (y + z)</tt></li>
--   <li><i><b>Commutativity of <tt>(<a>+</a>)</tt></b></i> <tt>x + y</tt>
--   = <tt>y + x</tt></li>
--   <li><i><b><tt><a>fromInteger</a> 0</tt> is the additive
--   identity</b></i> <tt>x + fromInteger 0</tt> = <tt>x</tt></li>
--   <li><i><b><a>negate</a> gives the additive inverse</b></i> <tt>x +
--   negate x</tt> = <tt>fromInteger 0</tt></li>
--   <li><i><b>Associativity of <tt>(<a>*</a>)</tt></b></i> <tt>(x * y) *
--   z</tt> = <tt>x * (y * z)</tt></li>
--   <li><i><b><tt><a>fromInteger</a> 1</tt> is the multiplicative
--   identity</b></i> <tt>x * fromInteger 1</tt> = <tt>x</tt> and
--   <tt>fromInteger 1 * x</tt> = <tt>x</tt></li>
--   <li><i><b>Distributivity of <tt>(<a>*</a>)</tt> with respect to
--   <tt>(<a>+</a>)</tt></b></i> <tt>a * (b + c)</tt> = <tt>(a * b) + (a *
--   c)</tt> and <tt>(b + c) * a</tt> = <tt>(b * a) + (c * a)</tt></li>
--   <li><i><b>Coherence with <tt>toInteger</tt></b></i> if the type also
--   implements <a>Integral</a>, then <a>fromInteger</a> is a left inverse
--   for <a>toInteger</a>, i.e. <tt>fromInteger (toInteger i) ==
--   i</tt></li>
--   </ul>
--   
--   Note that it <i>isn't</i> customarily expected that a type instance of
--   both <a>Num</a> and <a>Ord</a> implement an ordered ring. Indeed, in
--   <tt>base</tt> only <a>Integer</a> and <a>Rational</a> do.
class () => Num a
(+) :: Num a => a -> a -> a
(-) :: Num a => a -> a -> a
(*) :: Num a => a -> a -> a

-- | Unary negation.
negate :: Num a => a -> a

-- | Absolute value.
abs :: Num a => a -> a

-- | Sign of a number. The functions <a>abs</a> and <a>signum</a> should
--   satisfy the law:
--   
--   <pre>
--   abs x * signum x == x
--   </pre>
--   
--   For real numbers, the <a>signum</a> is either <tt>-1</tt> (negative),
--   <tt>0</tt> (zero) or <tt>1</tt> (positive).
signum :: Num a => a -> a

-- | Conversion from an <a>Integer</a>. An integer literal represents the
--   application of the function <a>fromInteger</a> to the appropriate
--   value of type <a>Integer</a>, so such literals have type
--   <tt>(<a>Num</a> a) =&gt; a</tt>.
fromInteger :: Num a => Integer -> a
infixl 6 -
infixl 6 +
infixl 7 *

-- | Real numbers.
--   
--   The Haskell report defines no laws for <a>Real</a>, however
--   <a>Real</a> instances are customarily expected to adhere to the
--   following law:
--   
--   <ul>
--   <li><i><b>Coherence with <a>fromRational</a></b></i> if the type also
--   implements <a>Fractional</a>, then <a>fromRational</a> is a left
--   inverse for <a>toRational</a>, i.e. <tt>fromRational (toRational i) =
--   i</tt></li>
--   </ul>
class (Num a, Ord a) => Real a

-- | the rational equivalent of its real argument with full precision
toRational :: Real a => a -> Rational

-- | Efficient, machine-independent access to the components of a
--   floating-point number.
class (RealFrac a, Floating a) => RealFloat a

-- | a constant function, returning the radix of the representation (often
--   <tt>2</tt>)
floatRadix :: RealFloat a => a -> Integer

-- | a constant function, returning the number of digits of
--   <a>floatRadix</a> in the significand
floatDigits :: RealFloat a => a -> Int

-- | a constant function, returning the lowest and highest values the
--   exponent may assume
floatRange :: RealFloat a => a -> (Int, Int)

-- | The function <a>decodeFloat</a> applied to a real floating-point
--   number returns the significand expressed as an <a>Integer</a> and an
--   appropriately scaled exponent (an <a>Int</a>). If
--   <tt><a>decodeFloat</a> x</tt> yields <tt>(m,n)</tt>, then <tt>x</tt>
--   is equal in value to <tt>m*b^^n</tt>, where <tt>b</tt> is the
--   floating-point radix, and furthermore, either <tt>m</tt> and
--   <tt>n</tt> are both zero or else <tt>b^(d-1) &lt;= <a>abs</a> m &lt;
--   b^d</tt>, where <tt>d</tt> is the value of <tt><a>floatDigits</a>
--   x</tt>. In particular, <tt><a>decodeFloat</a> 0 = (0,0)</tt>. If the
--   type contains a negative zero, also <tt><a>decodeFloat</a> (-0.0) =
--   (0,0)</tt>. <i>The result of</i> <tt><a>decodeFloat</a> x</tt> <i>is
--   unspecified if either of</i> <tt><a>isNaN</a> x</tt> <i>or</i>
--   <tt><a>isInfinite</a> x</tt> <i>is</i> <a>True</a>.
decodeFloat :: RealFloat a => a -> (Integer, Int)

-- | <a>encodeFloat</a> performs the inverse of <a>decodeFloat</a> in the
--   sense that for finite <tt>x</tt> with the exception of <tt>-0.0</tt>,
--   <tt><a>uncurry</a> <a>encodeFloat</a> (<a>decodeFloat</a> x) = x</tt>.
--   <tt><a>encodeFloat</a> m n</tt> is one of the two closest
--   representable floating-point numbers to <tt>m*b^^n</tt> (or
--   <tt>±Infinity</tt> if overflow occurs); usually the closer, but if
--   <tt>m</tt> contains too many bits, the result may be rounded in the
--   wrong direction.
encodeFloat :: RealFloat a => Integer -> Int -> a

-- | <a>exponent</a> corresponds to the second component of
--   <a>decodeFloat</a>. <tt><a>exponent</a> 0 = 0</tt> and for finite
--   nonzero <tt>x</tt>, <tt><a>exponent</a> x = snd (<a>decodeFloat</a> x)
--   + <a>floatDigits</a> x</tt>. If <tt>x</tt> is a finite floating-point
--   number, it is equal in value to <tt><a>significand</a> x * b ^^
--   <a>exponent</a> x</tt>, where <tt>b</tt> is the floating-point radix.
--   The behaviour is unspecified on infinite or <tt>NaN</tt> values.
exponent :: RealFloat a => a -> Int

-- | The first component of <a>decodeFloat</a>, scaled to lie in the open
--   interval (<tt>-1</tt>,<tt>1</tt>), either <tt>0.0</tt> or of absolute
--   value <tt>&gt;= 1/b</tt>, where <tt>b</tt> is the floating-point
--   radix. The behaviour is unspecified on infinite or <tt>NaN</tt>
--   values.
significand :: RealFloat a => a -> a

-- | multiplies a floating-point number by an integer power of the radix
scaleFloat :: RealFloat a => Int -> a -> a

-- | <a>True</a> if the argument is an IEEE "not-a-number" (NaN) value
isNaN :: RealFloat a => a -> Bool

-- | <a>True</a> if the argument is an IEEE infinity or negative infinity
isInfinite :: RealFloat a => a -> Bool

-- | <a>True</a> if the argument is too small to be represented in
--   normalized format
isDenormalized :: RealFloat a => a -> Bool

-- | <a>True</a> if the argument is an IEEE negative zero
isNegativeZero :: RealFloat a => a -> Bool

-- | <a>True</a> if the argument is an IEEE floating point number
isIEEE :: RealFloat a => a -> Bool

-- | a version of arctangent taking two real floating-point arguments. For
--   real floating <tt>x</tt> and <tt>y</tt>, <tt><a>atan2</a> y x</tt>
--   computes the angle (from the positive x-axis) of the vector from the
--   origin to the point <tt>(x,y)</tt>. <tt><a>atan2</a> y x</tt> returns
--   a value in the range [<tt>-pi</tt>, <tt>pi</tt>]. It follows the
--   Common Lisp semantics for the origin when signed zeroes are supported.
--   <tt><a>atan2</a> y 1</tt>, with <tt>y</tt> in a type that is
--   <a>RealFloat</a>, should return the same value as <tt><a>atan</a>
--   y</tt>. A default definition of <a>atan2</a> is provided, but
--   implementors can provide a more accurate implementation.
atan2 :: RealFloat a => a -> a -> a

-- | Extracting components of fractions.
class (Real a, Fractional a) => RealFrac a

-- | The function <a>properFraction</a> takes a real fractional number
--   <tt>x</tt> and returns a pair <tt>(n,f)</tt> such that <tt>x =
--   n+f</tt>, and:
--   
--   <ul>
--   <li><tt>n</tt> is an integral number with the same sign as <tt>x</tt>;
--   and</li>
--   <li><tt>f</tt> is a fraction with the same type and sign as
--   <tt>x</tt>, and with absolute value less than <tt>1</tt>.</li>
--   </ul>
--   
--   The default definitions of the <a>ceiling</a>, <a>floor</a>,
--   <a>truncate</a> and <a>round</a> functions are in terms of
--   <a>properFraction</a>.
properFraction :: (RealFrac a, Integral b) => a -> (b, a)

-- | <tt><a>truncate</a> x</tt> returns the integer nearest <tt>x</tt>
--   between zero and <tt>x</tt>
truncate :: (RealFrac a, Integral b) => a -> b

-- | <tt><a>round</a> x</tt> returns the nearest integer to <tt>x</tt>; the
--   even integer if <tt>x</tt> is equidistant between two integers
round :: (RealFrac a, Integral b) => a -> b

-- | <tt><a>ceiling</a> x</tt> returns the least integer not less than
--   <tt>x</tt>
ceiling :: (RealFrac a, Integral b) => a -> b

-- | <tt><a>floor</a> x</tt> returns the greatest integer not greater than
--   <tt>x</tt>
floor :: (RealFrac a, Integral b) => a -> b

-- | The class <a>Typeable</a> allows a concrete representation of a type
--   to be calculated.
class () => Typeable (a :: k)

-- | Functors representing data structures that can be transformed to
--   structures of the <i>same shape</i> by performing an
--   <a>Applicative</a> (or, therefore, <a>Monad</a>) action on each
--   element from left to right.
--   
--   A more detailed description of what <i>same shape</i> means, the
--   various methods, how traversals are constructed, and example advanced
--   use-cases can be found in the <b>Overview</b> section of
--   <a>Data.Traversable#overview</a>.
--   
--   For the class laws see the <b>Laws</b> section of
--   <a>Data.Traversable#laws</a>.
class (Functor t, Foldable t) => Traversable (t :: Type -> Type)

-- | Map each element of a structure to an action, evaluate these actions
--   from left to right, and collect the results. For a version that
--   ignores the results see <a>traverse_</a>.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   In the first two examples we show each evaluated action mapping to the
--   output structure.
--   
--   <pre>
--   &gt;&gt;&gt; traverse Just [1,2,3,4]
--   Just [1,2,3,4]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; traverse id [Right 1, Right 2, Right 3, Right 4]
--   Right [1,2,3,4]
--   </pre>
--   
--   In the next examples, we show that <a>Nothing</a> and <a>Left</a>
--   values short circuit the created structure.
--   
--   <pre>
--   &gt;&gt;&gt; traverse (const Nothing) [1,2,3,4]
--   Nothing
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; traverse (\x -&gt; if odd x then Just x else Nothing)  [1,2,3,4]
--   Nothing
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; traverse id [Right 1, Right 2, Right 3, Right 4, Left 0]
--   Left 0
--   </pre>
traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)

-- | Evaluate each action in the structure from left to right, and collect
--   the results. For a version that ignores the results see
--   <a>sequenceA_</a>.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   For the first two examples we show sequenceA fully evaluating a a
--   structure and collecting the results.
--   
--   <pre>
--   &gt;&gt;&gt; sequenceA [Just 1, Just 2, Just 3]
--   Just [1,2,3]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sequenceA [Right 1, Right 2, Right 3]
--   Right [1,2,3]
--   </pre>
--   
--   The next two example show <a>Nothing</a> and <a>Just</a> will short
--   circuit the resulting structure if present in the input. For more
--   context, check the <a>Traversable</a> instances for <a>Either</a> and
--   <a>Maybe</a>.
--   
--   <pre>
--   &gt;&gt;&gt; sequenceA [Just 1, Just 2, Just 3, Nothing]
--   Nothing
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sequenceA [Right 1, Right 2, Right 3, Left 4]
--   Left 4
--   </pre>
sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)

-- | Map each element of a structure to a monadic action, evaluate these
--   actions from left to right, and collect the results. For a version
--   that ignores the results see <a>mapM_</a>.
--   
--   <h4><b>Examples</b></h4>
--   
--   <a>mapM</a> is literally a <a>traverse</a> with a type signature
--   restricted to <a>Monad</a>. Its implementation may be more efficient
--   due to additional power of <a>Monad</a>.
mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)

-- | Evaluate each monadic action in the structure from left to right, and
--   collect the results. For a version that ignores the results see
--   <a>sequence_</a>.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   The first two examples are instances where the input and and output of
--   <a>sequence</a> are isomorphic.
--   
--   <pre>
--   &gt;&gt;&gt; sequence $ Right [1,2,3,4]
--   [Right 1,Right 2,Right 3,Right 4]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sequence $ [Right 1,Right 2,Right 3,Right 4]
--   Right [1,2,3,4]
--   </pre>
--   
--   The following examples demonstrate short circuit behavior for
--   <a>sequence</a>.
--   
--   <pre>
--   &gt;&gt;&gt; sequence $ Left [1,2,3,4]
--   Left [1,2,3,4]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; sequence $ [Left 0, Right 1,Right 2,Right 3,Right 4]
--   Left 0
--   </pre>
sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)

-- | The <tt>shows</tt> functions return a function that prepends the
--   output <a>String</a> to an existing <a>String</a>. This allows
--   constant-time concatenation of results using function composition.
type ShowS = String -> String

-- | A parser for a type <tt>a</tt>, represented as a function that takes a
--   <a>String</a> and returns a list of possible parses as
--   <tt>(a,<a>String</a>)</tt> pairs.
--   
--   Note that this kind of backtracking parser is very inefficient;
--   reading a large structure may be quite slow (cf <a>ReadP</a>).
type ReadS a = String -> [(a, String)]

-- | File and directory names are values of type <a>String</a>, whose
--   precise meaning is operating system dependent. Files can be opened,
--   yielding a handle which can then be used to operate on the contents of
--   that file.
type FilePath = String

-- | The <a>Binary</a> class provides <a>put</a> and <a>get</a>, methods to
--   encode and decode a Haskell value to a lazy <a>ByteString</a>. It
--   mirrors the <a>Read</a> and <a>Show</a> classes for textual
--   representation of Haskell types, and is suitable for serialising
--   Haskell values to disk, over the network.
--   
--   For decoding and generating simple external binary formats (e.g. C
--   structures), Binary may be used, but in general is not suitable for
--   complex protocols. Instead use the <a>PutM</a> and <a>Get</a>
--   primitives directly.
--   
--   Instances of Binary should satisfy the following property:
--   
--   <pre>
--   decode . encode == id
--   </pre>
--   
--   That is, the <a>get</a> and <a>put</a> methods should be the inverse
--   of each other. A range of instances are provided for basic Haskell
--   types.
class () => Binary t

-- | A class of types that can be fully evaluated.
class () => NFData a

-- | <a>rnf</a> should reduce its argument to normal form (that is, fully
--   evaluate all sub-components), and then return <tt>()</tt>.
--   
--   <h3><a>Generic</a> <a>NFData</a> deriving</h3>
--   
--   Starting with GHC 7.2, you can automatically derive instances for
--   types possessing a <a>Generic</a> instance.
--   
--   Note: <a>Generic1</a> can be auto-derived starting with GHC 7.4
--   
--   <pre>
--   {-# LANGUAGE DeriveGeneric #-}
--   
--   import GHC.Generics (Generic, Generic1)
--   import Control.DeepSeq
--   
--   data Foo a = Foo a String
--                deriving (Eq, Generic, Generic1)
--   
--   instance NFData a =&gt; NFData (Foo a)
--   instance NFData1 Foo
--   
--   data Colour = Red | Green | Blue
--                 deriving Generic
--   
--   instance NFData Colour
--   </pre>
--   
--   Starting with GHC 7.10, the example above can be written more
--   concisely by enabling the new <tt>DeriveAnyClass</tt> extension:
--   
--   <pre>
--   {-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
--   
--   import GHC.Generics (Generic)
--   import Control.DeepSeq
--   
--   data Foo a = Foo a String
--                deriving (Eq, Generic, Generic1, NFData, NFData1)
--   
--   data Colour = Red | Green | Blue
--                 deriving (Generic, NFData)
--   </pre>
--   
--   <h3>Compatibility with previous <tt>deepseq</tt> versions</h3>
--   
--   Prior to version 1.4.0.0, the default implementation of the <a>rnf</a>
--   method was defined as
--   
--   <pre>
--   <a>rnf</a> a = <a>seq</a> a ()
--   </pre>
--   
--   However, starting with <tt>deepseq-1.4.0.0</tt>, the default
--   implementation is based on <tt>DefaultSignatures</tt> allowing for
--   more accurate auto-derived <a>NFData</a> instances. If you need the
--   previously used exact default <a>rnf</a> method implementation
--   semantics, use
--   
--   <pre>
--   instance NFData Colour where rnf x = seq x ()
--   </pre>
--   
--   or alternatively
--   
--   <pre>
--   instance NFData Colour where rnf = rwhnf
--   </pre>
--   
--   or
--   
--   <pre>
--   {-# LANGUAGE BangPatterns #-}
--   instance NFData Colour where rnf !_ = ()
--   </pre>
rnf :: NFData a => a -> ()

-- | Boxed vectors, supporting efficient slicing.
data () => Vector a

-- | &lt;math&gt;. <a>lookup</a> <tt>key assocs</tt> looks up a key in an
--   association list. For the result to be <a>Nothing</a>, the list must
--   be finite.
--   
--   <pre>
--   &gt;&gt;&gt; lookup 2 []
--   Nothing
--   
--   &gt;&gt;&gt; lookup 2 [(1, "first")]
--   Nothing
--   
--   &gt;&gt;&gt; lookup 2 [(1, "first"), (2, "second"), (3, "third")]
--   Just "second"
--   </pre>
lookup :: Eq a => a -> [(a, b)] -> Maybe b

-- | &lt;math&gt;. <a>map</a> <tt>f xs</tt> is the list obtained by
--   applying <tt>f</tt> to each element of <tt>xs</tt>, i.e.,
--   
--   <pre>
--   map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn]
--   map f [x1, x2, ...] == [f x1, f x2, ...]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; map (+1) [1, 2, 3]
--   [2,3,4]
--   </pre>
map :: (a -> b) -> [a] -> [b]

-- | &lt;math&gt;. <a>filter</a>, applied to a predicate and a list,
--   returns the list of those elements that satisfy the predicate; i.e.,
--   
--   <pre>
--   filter p xs = [ x | x &lt;- xs, p x]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; filter odd [1, 2, 3]
--   [1,3]
--   </pre>
filter :: (a -> Bool) -> [a] -> [a]

-- | The empty object.
emptyObject :: Value

-- | Create a <a>Value</a> from a list of name/value <a>Pair</a>s. If
--   duplicate keys arise, later keys and their associated values win.
object :: [Pair] -> Value

-- | Fail parsing due to a type mismatch, with a descriptive message.
--   
--   The following wrappers should generally be preferred:
--   <a>withObject</a>, <a>withArray</a>, <a>withText</a>, <a>withBool</a>.
--   
--   <h4>Error message example</h4>
--   
--   <pre>
--   typeMismatch "Object" (String "oops")
--   -- Error: "expected Object, but encountered String"
--   </pre>
typeMismatch :: String -> Value -> Parser a

-- | <tt><a>withObject</a> name f value</tt> applies <tt>f</tt> to the
--   <a>Object</a> when <tt>value</tt> is an <a>Object</a> and fails
--   otherwise.
--   
--   <h4>Error message example</h4>
--   
--   <pre>
--   withObject "MyType" f (String "oops")
--   -- Error: "parsing MyType failed, expected Object, but encountered String"
--   </pre>
withObject :: String -> (Object -> Parser a) -> Value -> Parser a

-- | <tt><a>withText</a> name f value</tt> applies <tt>f</tt> to the
--   <a>Text</a> when <tt>value</tt> is a <a>String</a> and fails
--   otherwise.
--   
--   <h4>Error message example</h4>
--   
--   <pre>
--   withText "MyType" f Null
--   -- Error: "parsing MyType failed, expected String, but encountered Null"
--   </pre>
withText :: String -> (Text -> Parser a) -> Value -> Parser a

-- | Retrieve the value associated with the given key of an <a>Object</a>.
--   The result is <tt>empty</tt> if the key is not present or the value
--   cannot be converted to the desired type.
--   
--   This accessor is appropriate if the key and value <i>must</i> be
--   present in an object for it to be valid. If the key and value are
--   optional, use <a>.:?</a> instead.
(.:) :: FromJSON a => Object -> Key -> Parser a

-- | Retrieve the value associated with the given key of an <a>Object</a>.
--   The result is <a>Nothing</a> if the key is not present or if its value
--   is <a>Null</a>, or <tt>empty</tt> if the value cannot be converted to
--   the desired type.
--   
--   This accessor is most useful if the key and value can be absent from
--   an object without affecting its validity. If the key and value are
--   mandatory, use <a>.:</a> instead.
(.:?) :: FromJSON a => Object -> Key -> Parser (Maybe a)

-- | Helper for use in combination with <a>.:?</a> to provide default
--   values for optional JSON object fields.
--   
--   This combinator is most useful if the key and value can be absent from
--   an object without affecting its validity and we know a default value
--   to assign in that case. If the key and value are mandatory, use
--   <a>.:</a> instead.
--   
--   Example usage:
--   
--   <pre>
--   v1 &lt;- o <a>.:?</a> "opt_field_with_dfl" .!= "default_val"
--   v2 &lt;- o <a>.:</a>  "mandatory_field"
--   v3 &lt;- o <a>.:?</a> "opt_field2"
--   </pre>
(.!=) :: Parser (Maybe a) -> a -> Parser a
(.=) :: (KeyValue kv, ToJSON v) => Key -> v -> kv
infixr 8 .=

-- | Efficiently serialize a JSON value as a lazy <a>ByteString</a>.
--   
--   This is implemented in terms of the <a>ToJSON</a> class's
--   <a>toEncoding</a> method.
encode :: ToJSON a => a -> ByteString

-- | Append two lists, i.e.,
--   
--   <pre>
--   [x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn]
--   [x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]
--   </pre>
--   
--   If the first list is not finite, the result is the first list.
--   
--   WARNING: This function takes linear time in the number of elements of
--   the first list.
(++) :: [a] -> [a] -> [a]
infixr 5 ++

-- | Identity function.
--   
--   <pre>
--   id x = x
--   </pre>
id :: a -> a

-- | Function composition.
(.) :: (b -> c) -> (a -> b) -> a -> c
infixr 9 .

-- | <tt>const x y</tt> always evaluates to <tt>x</tt>, ignoring its second
--   argument.
--   
--   <pre>
--   &gt;&gt;&gt; const 42 "hello"
--   42
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; map (const 42) [0..3]
--   [42,42,42,42]
--   </pre>
const :: a -> b -> a

-- | An associative binary operation
(<|>) :: Alternative f => f a -> f a -> f a
infixl 3 <|>

-- | An infix synonym for <a>fmap</a>.
--   
--   The name of this operator is an allusion to <a>$</a>. Note the
--   similarities between their types:
--   
--   <pre>
--    ($)  ::              (a -&gt; b) -&gt;   a -&gt;   b
--   (&lt;$&gt;) :: Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
--   </pre>
--   
--   Whereas <a>$</a> is function application, <a>&lt;$&gt;</a> is function
--   application lifted over a <a>Functor</a>.
--   
--   <h4><b>Examples</b></h4>
--   
--   Convert from a <tt><a>Maybe</a> <a>Int</a></tt> to a <tt><a>Maybe</a>
--   <a>String</a></tt> using <a>show</a>:
--   
--   <pre>
--   &gt;&gt;&gt; show &lt;$&gt; Nothing
--   Nothing
--   
--   &gt;&gt;&gt; show &lt;$&gt; Just 3
--   Just "3"
--   </pre>
--   
--   Convert from an <tt><a>Either</a> <a>Int</a> <a>Int</a></tt> to an
--   <tt><a>Either</a> <a>Int</a></tt> <a>String</a> using <a>show</a>:
--   
--   <pre>
--   &gt;&gt;&gt; show &lt;$&gt; Left 17
--   Left 17
--   
--   &gt;&gt;&gt; show &lt;$&gt; Right 17
--   Right "17"
--   </pre>
--   
--   Double each element of a list:
--   
--   <pre>
--   &gt;&gt;&gt; (*2) &lt;$&gt; [1,2,3]
--   [2,4,6]
--   </pre>
--   
--   Apply <a>even</a> to the second element of a pair:
--   
--   <pre>
--   &gt;&gt;&gt; even &lt;$&gt; (2,2)
--   (2,True)
--   </pre>
(<$>) :: Functor f => (a -> b) -> f a -> f b
infixl 4 <$>

-- | Application operator. This operator is redundant, since ordinary
--   application <tt>(f x)</tt> means the same as <tt>(f <a>$</a> x)</tt>.
--   However, <a>$</a> has low, right-associative binding precedence, so it
--   sometimes allows parentheses to be omitted; for example:
--   
--   <pre>
--   f $ g $ h x  =  f (g (h x))
--   </pre>
--   
--   It is also useful in higher-order situations, such as <tt><a>map</a>
--   (<a>$</a> 0) xs</tt>, or <tt><a>zipWith</a> (<a>$</a>) fs xs</tt>.
--   
--   Note that <tt>(<a>$</a>)</tt> is representation-polymorphic in its
--   result type, so that <tt>foo <a>$</a> True</tt> where <tt>foo :: Bool
--   -&gt; Int#</tt> is well-typed.
($) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
infixr 0 $

-- | <a>otherwise</a> is defined as the value <a>True</a>. It helps to make
--   guards more readable. eg.
--   
--   <pre>
--   f x | x &lt; 0     = ...
--       | otherwise = ...
--   </pre>
otherwise :: Bool

-- | The value of <tt><a>seq</a> a b</tt> is bottom if <tt>a</tt> is
--   bottom, and otherwise equal to <tt>b</tt>. In other words, it
--   evaluates the first argument <tt>a</tt> to weak head normal form
--   (WHNF). <a>seq</a> is usually introduced to improve performance by
--   avoiding unneeded laziness.
--   
--   A note on evaluation order: the expression <tt><a>seq</a> a b</tt>
--   does <i>not</i> guarantee that <tt>a</tt> will be evaluated before
--   <tt>b</tt>. The only guarantee given by <a>seq</a> is that the both
--   <tt>a</tt> and <tt>b</tt> will be evaluated before <a>seq</a> returns
--   a value. In particular, this means that <tt>b</tt> may be evaluated
--   before <tt>a</tt>. If you need to guarantee a specific order of
--   evaluation, you must use the function <tt>pseq</tt> from the
--   "parallel" package.
seq :: forall {r :: RuntimeRep} a (b :: TYPE r). a -> b -> b
infixr 0 `seq`

-- | <a>error</a> stops execution and displays an error message.
error :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => [Char] -> a

-- | &lt;math&gt;. <a>zipWith</a> generalises <a>zip</a> by zipping with
--   the function given as the first argument, instead of a tupling
--   function.
--   
--   <pre>
--   zipWith (,) xs ys == zip xs ys
--   zipWith f [x1,x2,x3..] [y1,y2,y3..] == [f x1 y1, f x2 y2, f x3 y3..]
--   </pre>
--   
--   For example, <tt><a>zipWith</a> (+)</tt> is applied to two lists to
--   produce the list of corresponding sums:
--   
--   <pre>
--   &gt;&gt;&gt; zipWith (+) [1, 2, 3] [4, 5, 6]
--   [5,7,9]
--   </pre>
--   
--   <a>zipWith</a> is right-lazy:
--   
--   <pre>
--   &gt;&gt;&gt; let f = undefined
--   
--   &gt;&gt;&gt; zipWith f [] undefined
--   []
--   </pre>
--   
--   <a>zipWith</a> is capable of list fusion, but it is restricted to its
--   first list argument and its resulting list.
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
even :: Integral a => a -> Bool

-- | Extract the first component of a pair.
fst :: (a, b) -> a

-- | <a>uncurry</a> converts a curried function to a function on pairs.
--   
--   <h4><b>Examples</b></h4>
--   
--   <pre>
--   &gt;&gt;&gt; uncurry (+) (1,2)
--   3
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; uncurry ($) (show, 1)
--   "1"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; map (uncurry max) [(1,2), (3,4), (6,8)]
--   [2,4,8]
--   </pre>
uncurry :: (a -> b -> c) -> (a, b) -> c

-- | &lt;math&gt;. Extract the first element of a list, which must be
--   non-empty.
--   
--   <pre>
--   &gt;&gt;&gt; head [1, 2, 3]
--   1
--   
--   &gt;&gt;&gt; head [1..]
--   1
--   
--   &gt;&gt;&gt; head []
--   *** Exception: Prelude.head: empty list
--   </pre>
--   
--   WARNING: This function is partial. You can use case-matching,
--   <a>uncons</a> or <a>listToMaybe</a> instead.
head :: HasCallStack => [a] -> a

-- | The computation <a>writeFile</a> <tt>file str</tt> function writes the
--   string <tt>str</tt>, to the file <tt>file</tt>.
writeFile :: FilePath -> String -> IO ()

-- | Read a line from the standard input device (same as <a>hGetLine</a>
--   <a>stdin</a>).
getLine :: IO String

-- | The same as <a>putStr</a>, but adds a newline character.
putStrLn :: String -> IO ()

-- | <a>cycle</a> ties a finite list into a circular one, or equivalently,
--   the infinite repetition of the original list. It is the identity on
--   infinite lists.
--   
--   <pre>
--   &gt;&gt;&gt; cycle []
--   *** Exception: Prelude.cycle: empty list
--   
--   &gt;&gt;&gt; cycle [42]
--   [42,42,42,42,42,42,42,42,42,42...
--   
--   &gt;&gt;&gt; cycle [2, 5, 7]
--   [2,5,7,2,5,7,2,5,7,2,5,7...
--   </pre>
cycle :: HasCallStack => [a] -> [a]

-- | The concatenation of all the elements of a container of lists.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; concat (Just [1, 2, 3])
--   [1,2,3]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; concat (Left 42)
--   []
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; concat [[1, 2, 3], [4, 5], [6], []]
--   [1,2,3,4,5,6]
--   </pre>
concat :: Foldable t => t [a] -> [a]

-- | &lt;math&gt;. <a>zip</a> takes two lists and returns a list of
--   corresponding pairs.
--   
--   <pre>
--   &gt;&gt;&gt; zip [1, 2] ['a', 'b']
--   [(1,'a'),(2,'b')]
--   </pre>
--   
--   If one input list is shorter than the other, excess elements of the
--   longer list are discarded, even if one of the lists is infinite:
--   
--   <pre>
--   &gt;&gt;&gt; zip [1] ['a', 'b']
--   [(1,'a')]
--   
--   &gt;&gt;&gt; zip [1, 2] ['a']
--   [(1,'a')]
--   
--   &gt;&gt;&gt; zip [] [1..]
--   []
--   
--   &gt;&gt;&gt; zip [1..] []
--   []
--   </pre>
--   
--   <a>zip</a> is right-lazy:
--   
--   <pre>
--   &gt;&gt;&gt; zip [] undefined
--   []
--   
--   &gt;&gt;&gt; zip undefined []
--   *** Exception: Prelude.undefined
--   ...
--   </pre>
--   
--   <a>zip</a> is capable of list fusion, but it is restricted to its
--   first list argument and its resulting list.
zip :: [a] -> [b] -> [(a, b)]

-- | The <a>print</a> function outputs a value of any printable type to the
--   standard output device. Printable types are those that are instances
--   of class <a>Show</a>; <a>print</a> converts values to strings for
--   output using the <a>show</a> operation and adds a newline.
--   
--   For example, a program to print the first 20 integers and their powers
--   of 2 could be written as:
--   
--   <pre>
--   main = print ([(n, 2^n) | n &lt;- [0..19]])
--   </pre>
print :: Show a => a -> IO ()

-- | General coercion from <a>Integral</a> types.
--   
--   WARNING: This function performs silent truncation if the result type
--   is not at least as big as the argument's type.
fromIntegral :: (Integral a, Num b) => a -> b

-- | General coercion to <a>Fractional</a> types.
--   
--   WARNING: This function goes through the <a>Rational</a> type, which
--   does not have values for <tt>NaN</tt> for example. This means it does
--   not round-trip.
--   
--   For <a>Double</a> it also behaves differently with or without -O0:
--   
--   <pre>
--   Prelude&gt; realToFrac nan -- With -O0
--   -Infinity
--   Prelude&gt; realToFrac nan
--   NaN
--   </pre>
realToFrac :: (Real a, Fractional b) => a -> b

-- | raise a number to a non-negative integral power
(^) :: (Num a, Integral b) => a -> b -> a
infixr 8 ^

-- | Boolean "and", lazy in the second argument
(&&) :: Bool -> Bool -> Bool
infixr 3 &&

-- | Boolean "or", lazy in the second argument
(||) :: Bool -> Bool -> Bool
infixr 2 ||

-- | Boolean "not"
not :: Bool -> Bool

-- | A variant of <a>error</a> that does not produce a stack trace.
errorWithoutStackTrace :: forall (r :: RuntimeRep) (a :: TYPE r). [Char] -> a

-- | A special case of <a>error</a>. It is expected that compilers will
--   recognize this and insert error messages which are more appropriate to
--   the context in which <a>undefined</a> appears.
undefined :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => a

-- | Same as <a>&gt;&gt;=</a>, but with the arguments interchanged.
(=<<) :: Monad m => (a -> m b) -> m a -> m b
infixr 1 =<<

-- | <tt><a>flip</a> f</tt> takes its (first) two arguments in the reverse
--   order of <tt>f</tt>.
--   
--   <pre>
--   &gt;&gt;&gt; flip (++) "hello" "world"
--   "worldhello"
--   </pre>
flip :: (a -> b -> c) -> b -> a -> c

-- | Strict (call-by-value) application operator. It takes a function and
--   an argument, evaluates the argument to weak head normal form (WHNF),
--   then calls the function with that value.
($!) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
infixr 0 $!

-- | <tt><a>until</a> p f</tt> yields the result of applying <tt>f</tt>
--   until <tt>p</tt> holds.
until :: (a -> Bool) -> (a -> a) -> a -> a

-- | <a>asTypeOf</a> is a type-restricted version of <a>const</a>. It is
--   usually used as an infix operator, and its typing forces its first
--   argument (which is usually overloaded) to have the same type as the
--   second.
asTypeOf :: a -> a -> a

-- | the same as <tt><a>flip</a> (<a>-</a>)</tt>.
--   
--   Because <tt>-</tt> is treated specially in the Haskell grammar,
--   <tt>(-</tt> <i>e</i><tt>)</tt> is not a section, but an application of
--   prefix negation. However, <tt>(<a>subtract</a></tt>
--   <i>exp</i><tt>)</tt> is equivalent to the disallowed section.
subtract :: Num a => a -> a -> a

-- | The <a>maybe</a> function takes a default value, a function, and a
--   <a>Maybe</a> value. If the <a>Maybe</a> value is <a>Nothing</a>, the
--   function returns the default value. Otherwise, it applies the function
--   to the value inside the <a>Just</a> and returns the result.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; maybe False odd (Just 3)
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; maybe False odd Nothing
--   False
--   </pre>
--   
--   Read an integer from a string using <a>readMaybe</a>. If we succeed,
--   return twice the integer; that is, apply <tt>(*2)</tt> to it. If
--   instead we fail to parse an integer, return <tt>0</tt> by default:
--   
--   <pre>
--   &gt;&gt;&gt; import Text.Read ( readMaybe )
--   
--   &gt;&gt;&gt; maybe 0 (*2) (readMaybe "5")
--   10
--   
--   &gt;&gt;&gt; maybe 0 (*2) (readMaybe "")
--   0
--   </pre>
--   
--   Apply <a>show</a> to a <tt>Maybe Int</tt>. If we have <tt>Just n</tt>,
--   we want to show the underlying <a>Int</a> <tt>n</tt>. But if we have
--   <a>Nothing</a>, we return the empty string instead of (for example)
--   "Nothing":
--   
--   <pre>
--   &gt;&gt;&gt; maybe "" show (Just 5)
--   "5"
--   
--   &gt;&gt;&gt; maybe "" show Nothing
--   ""
--   </pre>
maybe :: b -> (a -> b) -> Maybe a -> b

-- | The <a>catMaybes</a> function takes a list of <a>Maybe</a>s and
--   returns a list of all the <a>Just</a> values.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; catMaybes [Just 1, Nothing, Just 3]
--   [1,3]
--   </pre>
--   
--   When constructing a list of <a>Maybe</a> values, <a>catMaybes</a> can
--   be used to return all of the "success" results (if the list is the
--   result of a <a>map</a>, then <a>mapMaybe</a> would be more
--   appropriate):
--   
--   <pre>
--   &gt;&gt;&gt; import Text.Read ( readMaybe )
--   
--   &gt;&gt;&gt; [readMaybe x :: Maybe Int | x &lt;- ["1", "Foo", "3"] ]
--   [Just 1,Nothing,Just 3]
--   
--   &gt;&gt;&gt; catMaybes $ [readMaybe x :: Maybe Int | x &lt;- ["1", "Foo", "3"] ]
--   [1,3]
--   </pre>
catMaybes :: [Maybe a] -> [a]

-- | &lt;math&gt;. Extract the elements after the head of a list, which
--   must be non-empty.
--   
--   <pre>
--   &gt;&gt;&gt; tail [1, 2, 3]
--   [2,3]
--   
--   &gt;&gt;&gt; tail [1]
--   []
--   
--   &gt;&gt;&gt; tail []
--   *** Exception: Prelude.tail: empty list
--   </pre>
--   
--   WARNING: This function is partial. You can use case-matching or
--   <a>uncons</a> instead.
tail :: HasCallStack => [a] -> [a]

-- | &lt;math&gt;. Extract the last element of a list, which must be finite
--   and non-empty.
--   
--   <pre>
--   &gt;&gt;&gt; last [1, 2, 3]
--   3
--   
--   &gt;&gt;&gt; last [1..]
--   * Hangs forever *
--   
--   &gt;&gt;&gt; last []
--   *** Exception: Prelude.last: empty list
--   </pre>
--   
--   WARNING: This function is partial. You can use <a>reverse</a> with
--   case-matching, <a>uncons</a> or <a>listToMaybe</a> instead.
last :: HasCallStack => [a] -> a

-- | &lt;math&gt;. Return all the elements of a list except the last one.
--   The list must be non-empty.
--   
--   <pre>
--   &gt;&gt;&gt; init [1, 2, 3]
--   [1,2]
--   
--   &gt;&gt;&gt; init [1]
--   []
--   
--   &gt;&gt;&gt; init []
--   *** Exception: Prelude.init: empty list
--   </pre>
--   
--   WARNING: This function is partial. You can use <a>reverse</a> with
--   case-matching or <a>uncons</a> instead.
init :: HasCallStack => [a] -> [a]

-- | &lt;math&gt;. <a>scanl</a> is similar to <a>foldl</a>, but returns a
--   list of successive reduced values from the left:
--   
--   <pre>
--   scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
--   </pre>
--   
--   Note that
--   
--   <pre>
--   last (scanl f z xs) == foldl f z xs
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; scanl (+) 0 [1..4]
--   [0,1,3,6,10]
--   
--   &gt;&gt;&gt; scanl (+) 42 []
--   [42]
--   
--   &gt;&gt;&gt; scanl (-) 100 [1..4]
--   [100,99,97,94,90]
--   
--   &gt;&gt;&gt; scanl (\reversedString nextChar -&gt; nextChar : reversedString) "foo" ['a', 'b', 'c', 'd']
--   ["foo","afoo","bafoo","cbafoo","dcbafoo"]
--   
--   &gt;&gt;&gt; scanl (+) 0 [1..]
--   * Hangs forever *
--   </pre>
scanl :: (b -> a -> b) -> b -> [a] -> [b]

-- | &lt;math&gt;. <a>scanl1</a> is a variant of <a>scanl</a> that has no
--   starting value argument:
--   
--   <pre>
--   scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; scanl1 (+) [1..4]
--   [1,3,6,10]
--   
--   &gt;&gt;&gt; scanl1 (+) []
--   []
--   
--   &gt;&gt;&gt; scanl1 (-) [1..4]
--   [1,-1,-4,-8]
--   
--   &gt;&gt;&gt; scanl1 (&amp;&amp;) [True, False, True, True]
--   [True,False,False,False]
--   
--   &gt;&gt;&gt; scanl1 (||) [False, False, True, True]
--   [False,False,True,True]
--   
--   &gt;&gt;&gt; scanl1 (+) [1..]
--   * Hangs forever *
--   </pre>
scanl1 :: (a -> a -> a) -> [a] -> [a]

-- | &lt;math&gt;. <a>scanr</a> is the right-to-left dual of <a>scanl</a>.
--   Note that the order of parameters on the accumulating function are
--   reversed compared to <a>scanl</a>. Also note that
--   
--   <pre>
--   head (scanr f z xs) == foldr f z xs.
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; scanr (+) 0 [1..4]
--   [10,9,7,4,0]
--   
--   &gt;&gt;&gt; scanr (+) 42 []
--   [42]
--   
--   &gt;&gt;&gt; scanr (-) 100 [1..4]
--   [98,-97,99,-96,100]
--   
--   &gt;&gt;&gt; scanr (\nextChar reversedString -&gt; nextChar : reversedString) "foo" ['a', 'b', 'c', 'd']
--   ["abcdfoo","bcdfoo","cdfoo","dfoo","foo"]
--   
--   &gt;&gt;&gt; force $ scanr (+) 0 [1..]
--   *** Exception: stack overflow
--   </pre>
scanr :: (a -> b -> b) -> b -> [a] -> [b]

-- | &lt;math&gt;. <a>scanr1</a> is a variant of <a>scanr</a> that has no
--   starting value argument.
--   
--   <pre>
--   &gt;&gt;&gt; scanr1 (+) [1..4]
--   [10,9,7,4]
--   
--   &gt;&gt;&gt; scanr1 (+) []
--   []
--   
--   &gt;&gt;&gt; scanr1 (-) [1..4]
--   [-2,3,-1,4]
--   
--   &gt;&gt;&gt; scanr1 (&amp;&amp;) [True, False, True, True]
--   [False,False,True,True]
--   
--   &gt;&gt;&gt; scanr1 (||) [True, True, False, False]
--   [True,True,False,False]
--   
--   &gt;&gt;&gt; force $ scanr1 (+) [1..]
--   *** Exception: stack overflow
--   </pre>
scanr1 :: (a -> a -> a) -> [a] -> [a]

-- | <a>iterate</a> <tt>f x</tt> returns an infinite list of repeated
--   applications of <tt>f</tt> to <tt>x</tt>:
--   
--   <pre>
--   iterate f x == [x, f x, f (f x), ...]
--   </pre>
--   
--   Note that <a>iterate</a> is lazy, potentially leading to thunk
--   build-up if the consumer doesn't force each iterate. See
--   <a>iterate'</a> for a strict variant of this function.
--   
--   <pre>
--   &gt;&gt;&gt; take 10 $ iterate not True
--   [True,False,True,False...
--   
--   &gt;&gt;&gt; take 10 $ iterate (+3) 42
--   [42,45,48,51,54,57,60,63...
--   </pre>
iterate :: (a -> a) -> a -> [a]

-- | <a>repeat</a> <tt>x</tt> is an infinite list, with <tt>x</tt> the
--   value of every element.
--   
--   <pre>
--   &gt;&gt;&gt; repeat 17
--   [17,17,17,17,17,17,17,17,17...
--   </pre>
repeat :: a -> [a]

-- | <a>replicate</a> <tt>n x</tt> is a list of length <tt>n</tt> with
--   <tt>x</tt> the value of every element. It is an instance of the more
--   general <a>genericReplicate</a>, in which <tt>n</tt> may be of any
--   integral type.
--   
--   <pre>
--   &gt;&gt;&gt; replicate 0 True
--   []
--   
--   &gt;&gt;&gt; replicate (-1) True
--   []
--   
--   &gt;&gt;&gt; replicate 4 True
--   [True,True,True,True]
--   </pre>
replicate :: Int -> a -> [a]

-- | <a>takeWhile</a>, applied to a predicate <tt>p</tt> and a list
--   <tt>xs</tt>, returns the longest prefix (possibly empty) of
--   <tt>xs</tt> of elements that satisfy <tt>p</tt>.
--   
--   <pre>
--   &gt;&gt;&gt; takeWhile (&lt; 3) [1,2,3,4,1,2,3,4]
--   [1,2]
--   
--   &gt;&gt;&gt; takeWhile (&lt; 9) [1,2,3]
--   [1,2,3]
--   
--   &gt;&gt;&gt; takeWhile (&lt; 0) [1,2,3]
--   []
--   </pre>
takeWhile :: (a -> Bool) -> [a] -> [a]

-- | <a>dropWhile</a> <tt>p xs</tt> returns the suffix remaining after
--   <a>takeWhile</a> <tt>p xs</tt>.
--   
--   <pre>
--   &gt;&gt;&gt; dropWhile (&lt; 3) [1,2,3,4,5,1,2,3]
--   [3,4,5,1,2,3]
--   
--   &gt;&gt;&gt; dropWhile (&lt; 9) [1,2,3]
--   []
--   
--   &gt;&gt;&gt; dropWhile (&lt; 0) [1,2,3]
--   [1,2,3]
--   </pre>
dropWhile :: (a -> Bool) -> [a] -> [a]

-- | <a>take</a> <tt>n</tt>, applied to a list <tt>xs</tt>, returns the
--   prefix of <tt>xs</tt> of length <tt>n</tt>, or <tt>xs</tt> itself if
--   <tt>n &gt;= <a>length</a> xs</tt>.
--   
--   <pre>
--   &gt;&gt;&gt; take 5 "Hello World!"
--   "Hello"
--   
--   &gt;&gt;&gt; take 3 [1,2,3,4,5]
--   [1,2,3]
--   
--   &gt;&gt;&gt; take 3 [1,2]
--   [1,2]
--   
--   &gt;&gt;&gt; take 3 []
--   []
--   
--   &gt;&gt;&gt; take (-1) [1,2]
--   []
--   
--   &gt;&gt;&gt; take 0 [1,2]
--   []
--   </pre>
--   
--   It is an instance of the more general <a>genericTake</a>, in which
--   <tt>n</tt> may be of any integral type.
take :: Int -> [a] -> [a]

-- | <a>drop</a> <tt>n xs</tt> returns the suffix of <tt>xs</tt> after the
--   first <tt>n</tt> elements, or <tt>[]</tt> if <tt>n &gt;= <a>length</a>
--   xs</tt>.
--   
--   <pre>
--   &gt;&gt;&gt; drop 6 "Hello World!"
--   "World!"
--   
--   &gt;&gt;&gt; drop 3 [1,2,3,4,5]
--   [4,5]
--   
--   &gt;&gt;&gt; drop 3 [1,2]
--   []
--   
--   &gt;&gt;&gt; drop 3 []
--   []
--   
--   &gt;&gt;&gt; drop (-1) [1,2]
--   [1,2]
--   
--   &gt;&gt;&gt; drop 0 [1,2]
--   [1,2]
--   </pre>
--   
--   It is an instance of the more general <a>genericDrop</a>, in which
--   <tt>n</tt> may be of any integral type.
drop :: Int -> [a] -> [a]

-- | <a>splitAt</a> <tt>n xs</tt> returns a tuple where first element is
--   <tt>xs</tt> prefix of length <tt>n</tt> and second element is the
--   remainder of the list:
--   
--   <pre>
--   &gt;&gt;&gt; splitAt 6 "Hello World!"
--   ("Hello ","World!")
--   
--   &gt;&gt;&gt; splitAt 3 [1,2,3,4,5]
--   ([1,2,3],[4,5])
--   
--   &gt;&gt;&gt; splitAt 1 [1,2,3]
--   ([1],[2,3])
--   
--   &gt;&gt;&gt; splitAt 3 [1,2,3]
--   ([1,2,3],[])
--   
--   &gt;&gt;&gt; splitAt 4 [1,2,3]
--   ([1,2,3],[])
--   
--   &gt;&gt;&gt; splitAt 0 [1,2,3]
--   ([],[1,2,3])
--   
--   &gt;&gt;&gt; splitAt (-1) [1,2,3]
--   ([],[1,2,3])
--   </pre>
--   
--   It is equivalent to <tt>(<a>take</a> n xs, <a>drop</a> n xs)</tt> when
--   <tt>n</tt> is not <tt>_|_</tt> (<tt>splitAt _|_ xs = _|_</tt>).
--   <a>splitAt</a> is an instance of the more general
--   <a>genericSplitAt</a>, in which <tt>n</tt> may be of any integral
--   type.
splitAt :: Int -> [a] -> ([a], [a])

-- | <a>span</a>, applied to a predicate <tt>p</tt> and a list <tt>xs</tt>,
--   returns a tuple where first element is longest prefix (possibly empty)
--   of <tt>xs</tt> of elements that satisfy <tt>p</tt> and second element
--   is the remainder of the list:
--   
--   <pre>
--   &gt;&gt;&gt; span (&lt; 3) [1,2,3,4,1,2,3,4]
--   ([1,2],[3,4,1,2,3,4])
--   
--   &gt;&gt;&gt; span (&lt; 9) [1,2,3]
--   ([1,2,3],[])
--   
--   &gt;&gt;&gt; span (&lt; 0) [1,2,3]
--   ([],[1,2,3])
--   </pre>
--   
--   <a>span</a> <tt>p xs</tt> is equivalent to <tt>(<a>takeWhile</a> p xs,
--   <a>dropWhile</a> p xs)</tt>
span :: (a -> Bool) -> [a] -> ([a], [a])

-- | <a>break</a>, applied to a predicate <tt>p</tt> and a list
--   <tt>xs</tt>, returns a tuple where first element is longest prefix
--   (possibly empty) of <tt>xs</tt> of elements that <i>do not satisfy</i>
--   <tt>p</tt> and second element is the remainder of the list:
--   
--   <pre>
--   &gt;&gt;&gt; break (&gt; 3) [1,2,3,4,1,2,3,4]
--   ([1,2,3],[4,1,2,3,4])
--   
--   &gt;&gt;&gt; break (&lt; 9) [1,2,3]
--   ([],[1,2,3])
--   
--   &gt;&gt;&gt; break (&gt; 9) [1,2,3]
--   ([1,2,3],[])
--   </pre>
--   
--   <a>break</a> <tt>p</tt> is equivalent to <tt><a>span</a> (<a>not</a> .
--   p)</tt>.
break :: (a -> Bool) -> [a] -> ([a], [a])

-- | <a>reverse</a> <tt>xs</tt> returns the elements of <tt>xs</tt> in
--   reverse order. <tt>xs</tt> must be finite.
--   
--   <pre>
--   &gt;&gt;&gt; reverse []
--   []
--   
--   &gt;&gt;&gt; reverse [42]
--   [42]
--   
--   &gt;&gt;&gt; reverse [2,5,7]
--   [7,5,2]
--   
--   &gt;&gt;&gt; reverse [1..]
--   * Hangs forever *
--   </pre>
reverse :: [a] -> [a]

-- | <a>and</a> returns the conjunction of a container of Bools. For the
--   result to be <a>True</a>, the container must be finite; <a>False</a>,
--   however, results from a <a>False</a> value finitely far from the left
--   end.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; and []
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; and [True]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; and [False]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; and [True, True, False]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; and (False : repeat True) -- Infinite list [False,True,True,True,...
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; and (repeat True)
--   * Hangs forever *
--   </pre>
and :: Foldable t => t Bool -> Bool

-- | <a>or</a> returns the disjunction of a container of Bools. For the
--   result to be <a>False</a>, the container must be finite; <a>True</a>,
--   however, results from a <a>True</a> value finitely far from the left
--   end.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; or []
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; or [True]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; or [False]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; or [True, True, False]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; or (True : repeat False) -- Infinite list [True,False,False,False,...
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; or (repeat False)
--   * Hangs forever *
--   </pre>
or :: Foldable t => t Bool -> Bool

-- | Determines whether any element of the structure satisfies the
--   predicate.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; any (&gt; 3) []
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; any (&gt; 3) [1,2]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; any (&gt; 3) [1,2,3,4,5]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; any (&gt; 3) [1..]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; any (&gt; 3) [0, -1..]
--   * Hangs forever *
--   </pre>
any :: Foldable t => (a -> Bool) -> t a -> Bool

-- | Determines whether all elements of the structure satisfy the
--   predicate.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; all (&gt; 3) []
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; all (&gt; 3) [1,2]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; all (&gt; 3) [1,2,3,4,5]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; all (&gt; 3) [1..]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; all (&gt; 3) [4..]
--   * Hangs forever *
--   </pre>
all :: Foldable t => (a -> Bool) -> t a -> Bool

-- | <a>notElem</a> is the negation of <a>elem</a>.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; 3 `notElem` []
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; 3 `notElem` [1,2]
--   True
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; 3 `notElem` [1,2,3,4,5]
--   False
--   </pre>
--   
--   For infinite structures, <a>notElem</a> terminates if the value exists
--   at a finite distance from the left side of the structure:
--   
--   <pre>
--   &gt;&gt;&gt; 3 `notElem` [1..]
--   False
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; 3 `notElem` ([4..] ++ [3])
--   * Hangs forever *
--   </pre>
notElem :: (Foldable t, Eq a) => a -> t a -> Bool
infix 4 `notElem`

-- | Map a function over all the elements of a container and concatenate
--   the resulting lists.
--   
--   <h4><b>Examples</b></h4>
--   
--   Basic usage:
--   
--   <pre>
--   &gt;&gt;&gt; concatMap (take 3) [[1..], [10..], [100..], [1000..]]
--   [1,2,3,10,11,12,100,101,102,1000,1001,1002]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; concatMap (take 3) (Just [1..])
--   [1,2,3]
--   </pre>
concatMap :: Foldable t => (a -> [b]) -> t a -> [b]

-- | List index (subscript) operator, starting from 0. It is an instance of
--   the more general <a>genericIndex</a>, which takes an index of any
--   integral type.
--   
--   <pre>
--   &gt;&gt;&gt; ['a', 'b', 'c'] !! 0
--   'a'
--   
--   &gt;&gt;&gt; ['a', 'b', 'c'] !! 2
--   'c'
--   
--   &gt;&gt;&gt; ['a', 'b', 'c'] !! 3
--   *** Exception: Prelude.!!: index too large
--   
--   &gt;&gt;&gt; ['a', 'b', 'c'] !! (-1)
--   *** Exception: Prelude.!!: negative index
--   </pre>
--   
--   WARNING: This function is partial. You can use <a>atMay</a> instead.
(!!) :: HasCallStack => [a] -> Int -> a
infixl 9 !!

-- | <a>zip3</a> takes three lists and returns a list of triples, analogous
--   to <a>zip</a>. It is capable of list fusion, but it is restricted to
--   its first list argument and its resulting list.
zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]

-- | The <a>zipWith3</a> function takes a function which combines three
--   elements, as well as three lists and returns a list of the function
--   applied to corresponding elements, analogous to <a>zipWith</a>. It is
--   capable of list fusion, but it is restricted to its first list
--   argument and its resulting list.
--   
--   <pre>
--   zipWith3 (,,) xs ys zs == zip3 xs ys zs
--   zipWith3 f [x1,x2,x3..] [y1,y2,y3..] [z1,z2,z3..] == [f x1 y1 z1, f x2 y2 z2, f x3 y3 z3..]
--   </pre>
zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]

-- | <a>unzip</a> transforms a list of pairs into a list of first
--   components and a list of second components.
--   
--   <pre>
--   &gt;&gt;&gt; unzip []
--   ([],[])
--   
--   &gt;&gt;&gt; unzip [(1, 'a'), (2, 'b')]
--   ([1,2],"ab")
--   </pre>
unzip :: [(a, b)] -> ([a], [b])

-- | The <a>unzip3</a> function takes a list of triples and returns three
--   lists, analogous to <a>unzip</a>.
--   
--   <pre>
--   &gt;&gt;&gt; unzip3 []
--   ([],[],[])
--   
--   &gt;&gt;&gt; unzip3 [(1, 'a', True), (2, 'b', False)]
--   ([1,2],"ab",[True,False])
--   </pre>
unzip3 :: [(a, b, c)] -> ([a], [b], [c])

-- | equivalent to <a>showsPrec</a> with a precedence of 0.
shows :: Show a => a -> ShowS

-- | utility function converting a <a>Char</a> to a show function that
--   simply prepends the character unchanged.
showChar :: Char -> ShowS

-- | utility function converting a <a>String</a> to a show function that
--   simply prepends the string unchanged.
showString :: String -> ShowS

-- | utility function that surrounds the inner show function with
--   parentheses when the <a>Bool</a> parameter is <a>True</a>.
showParen :: Bool -> ShowS -> ShowS
odd :: Integral a => a -> Bool

-- | raise a number to an integral power
(^^) :: (Fractional a, Integral b) => a -> b -> a
infixr 8 ^^

-- | <tt><a>gcd</a> x y</tt> is the non-negative factor of both <tt>x</tt>
--   and <tt>y</tt> of which every common factor of <tt>x</tt> and
--   <tt>y</tt> is also a factor; for example <tt><a>gcd</a> 4 2 = 2</tt>,
--   <tt><a>gcd</a> (-4) 6 = 2</tt>, <tt><a>gcd</a> 0 4</tt> = <tt>4</tt>.
--   <tt><a>gcd</a> 0 0</tt> = <tt>0</tt>. (That is, the common divisor
--   that is "greatest" in the divisibility preordering.)
--   
--   Note: Since for signed fixed-width integer types, <tt><a>abs</a>
--   <a>minBound</a> &lt; 0</tt>, the result may be negative if one of the
--   arguments is <tt><a>minBound</a></tt> (and necessarily is if the other
--   is <tt>0</tt> or <tt><a>minBound</a></tt>) for such types.
gcd :: Integral a => a -> a -> a

-- | <tt><a>lcm</a> x y</tt> is the smallest positive integer that both
--   <tt>x</tt> and <tt>y</tt> divide.
lcm :: Integral a => a -> a -> a

-- | Extract the second component of a pair.
snd :: (a, b) -> b

-- | <a>curry</a> converts an uncurried function to a curried function.
--   
--   <h4><b>Examples</b></h4>
--   
--   <pre>
--   &gt;&gt;&gt; curry fst 1 2
--   1
--   </pre>
curry :: ((a, b) -> c) -> a -> b -> c

-- | Flipped version of <a>&lt;$&gt;</a>.
--   
--   <pre>
--   (<a>&lt;&amp;&gt;</a>) = <a>flip</a> <a>fmap</a>
--   </pre>
--   
--   <h4><b>Examples</b></h4>
--   
--   Apply <tt>(+1)</tt> to a list, a <a>Just</a> and a <a>Right</a>:
--   
--   <pre>
--   &gt;&gt;&gt; Just 2 &lt;&amp;&gt; (+1)
--   Just 3
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; [1,2,3] &lt;&amp;&gt; (+1)
--   [2,3,4]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; Right 3 &lt;&amp;&gt; (+1)
--   Right 4
--   </pre>
(<&>) :: Functor f => f a -> (a -> b) -> f b
infixl 1 <&>

-- | The <a>lex</a> function reads a single lexeme from the input,
--   discarding initial white space, and returning the characters that
--   constitute the lexeme. If the input string contains only white space,
--   <a>lex</a> returns a single successful `lexeme' consisting of the
--   empty string. (Thus <tt><a>lex</a> "" = [("","")]</tt>.) If there is
--   no legal lexeme at the beginning of the input string, <a>lex</a> fails
--   (i.e. returns <tt>[]</tt>).
--   
--   This lexer is not completely faithful to the Haskell lexical syntax in
--   the following respects:
--   
--   <ul>
--   <li>Qualified names are not handled properly</li>
--   <li>Octal and hexadecimal numerics are not recognized as a single
--   token</li>
--   <li>Comments are not treated properly</li>
--   </ul>
lex :: ReadS String

-- | <tt><a>readParen</a> <a>True</a> p</tt> parses what <tt>p</tt> parses,
--   but surrounded with parentheses.
--   
--   <tt><a>readParen</a> <a>False</a> p</tt> parses what <tt>p</tt>
--   parses, but optionally surrounded with parentheses.
readParen :: Bool -> ReadS a -> ReadS a

-- | Case analysis for the <a>Either</a> type. If the value is
--   <tt><a>Left</a> a</tt>, apply the first function to <tt>a</tt>; if it
--   is <tt><a>Right</a> b</tt>, apply the second function to <tt>b</tt>.
--   
--   <h4><b>Examples</b></h4>
--   
--   We create two values of type <tt><a>Either</a> <a>String</a>
--   <a>Int</a></tt>, one using the <a>Left</a> constructor and another
--   using the <a>Right</a> constructor. Then we apply "either" the
--   <a>length</a> function (if we have a <a>String</a>) or the "times-two"
--   function (if we have an <a>Int</a>):
--   
--   <pre>
--   &gt;&gt;&gt; let s = Left "foo" :: Either String Int
--   
--   &gt;&gt;&gt; let n = Right 3 :: Either String Int
--   
--   &gt;&gt;&gt; either length (*2) s
--   3
--   
--   &gt;&gt;&gt; either length (*2) n
--   6
--   </pre>
either :: (a -> c) -> (b -> c) -> Either a b -> c

-- | equivalent to <a>readsPrec</a> with a precedence of 0.
reads :: Read a => ReadS a

-- | The <a>read</a> function reads input from a string, which must be
--   completely consumed by the input process. <a>read</a> fails with an
--   <a>error</a> if the parse is unsuccessful, and it is therefore
--   discouraged from being used in real applications. Use <a>readMaybe</a>
--   or <a>readEither</a> for safe alternatives.
--   
--   <pre>
--   &gt;&gt;&gt; read "123" :: Int
--   123
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; read "hello" :: Int
--   *** Exception: Prelude.read: no parse
--   </pre>
read :: Read a => String -> a

-- | Map each element of a structure to a monadic action, evaluate these
--   actions from left to right, and ignore the results. For a version that
--   doesn't ignore the results see <a>mapM</a>.
--   
--   <a>mapM_</a> is just like <a>traverse_</a>, but specialised to monadic
--   actions.
mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()

-- | Evaluate each monadic action in the structure from left to right, and
--   ignore the results. For a version that doesn't ignore the results see
--   <a>sequence</a>.
--   
--   <a>sequence_</a> is just like <a>sequenceA_</a>, but specialised to
--   monadic actions.
sequence_ :: (Foldable t, Monad m) => t (m a) -> m ()

-- | <a>intercalate</a> <tt>xs xss</tt> is equivalent to <tt>(<a>concat</a>
--   (<a>intersperse</a> xs xss))</tt>. It inserts the list <tt>xs</tt> in
--   between the lists in <tt>xss</tt> and concatenates the result.
--   
--   <pre>
--   &gt;&gt;&gt; intercalate ", " ["Lorem", "ipsum", "dolor"]
--   "Lorem, ipsum, dolor"
--   </pre>
intercalate :: [a] -> [[a]] -> [a]

-- | Splits the argument into a list of <i>lines</i> stripped of their
--   terminating <tt>\n</tt> characters. The <tt>\n</tt> terminator is
--   optional in a final non-empty line of the argument string.
--   
--   For example:
--   
--   <pre>
--   &gt;&gt;&gt; lines ""           -- empty input contains no lines
--   []
--   
--   &gt;&gt;&gt; lines "\n"         -- single empty line
--   [""]
--   
--   &gt;&gt;&gt; lines "one"        -- single unterminated line
--   ["one"]
--   
--   &gt;&gt;&gt; lines "one\n"      -- single non-empty line
--   ["one"]
--   
--   &gt;&gt;&gt; lines "one\n\n"    -- second line is empty
--   ["one",""]
--   
--   &gt;&gt;&gt; lines "one\ntwo"   -- second line is unterminated
--   ["one","two"]
--   
--   &gt;&gt;&gt; lines "one\ntwo\n" -- two non-empty lines
--   ["one","two"]
--   </pre>
--   
--   When the argument string is empty, or ends in a <tt>\n</tt> character,
--   it can be recovered by passing the result of <a>lines</a> to the
--   <a>unlines</a> function. Otherwise, <a>unlines</a> appends the missing
--   terminating <tt>\n</tt>. This makes <tt>unlines . lines</tt>
--   <i>idempotent</i>:
--   
--   <pre>
--   (unlines . lines) . (unlines . lines) = (unlines . lines)
--   </pre>
lines :: String -> [String]

-- | Appends a <tt>\n</tt> character to each input string, then
--   concatenates the results. Equivalent to <tt><tt>foldMap</tt> (s -&gt;
--   s <a>++</a> "\n")</tt>.
--   
--   <pre>
--   &gt;&gt;&gt; unlines ["Hello", "World", "!"]
--   "Hello\nWorld\n!\n"
--   </pre>
--   
--   Note that <tt><a>unlines</a> <a>.</a> <a>lines</a> <a>/=</a>
--   <a>id</a></tt> when the input is not <tt>\n</tt>-terminated:
--   
--   <pre>
--   &gt;&gt;&gt; unlines . lines $ "foo\nbar"
--   "foo\nbar\n"
--   </pre>
unlines :: [String] -> String

-- | <a>words</a> breaks a string up into a list of words, which were
--   delimited by white space (as defined by <a>isSpace</a>). This function
--   trims any white spaces at the beginning and at the end.
--   
--   <pre>
--   &gt;&gt;&gt; words "Lorem ipsum\ndolor"
--   ["Lorem","ipsum","dolor"]
--   
--   &gt;&gt;&gt; words " foo bar "
--   ["foo","bar"]
--   </pre>
words :: String -> [String]

-- | <a>unwords</a> joins words with separating spaces (U+0020 SPACE).
--   
--   <pre>
--   &gt;&gt;&gt; unwords ["Lorem", "ipsum", "dolor"]
--   "Lorem ipsum dolor"
--   </pre>
--   
--   <a>unwords</a> is neither left nor right inverse of <a>words</a>:
--   
--   <pre>
--   &gt;&gt;&gt; words (unwords [" "])
--   []
--   
--   &gt;&gt;&gt; unwords (words "foo\nbar")
--   "foo bar"
--   </pre>
unwords :: [String] -> String

-- | Construct an <a>IOException</a> value with a string describing the
--   error. The <tt>fail</tt> method of the <a>IO</a> instance of the
--   <a>Monad</a> class raises a <a>userError</a>, thus:
--   
--   <pre>
--   instance Monad IO where
--     ...
--     fail s = ioError (userError s)
--   </pre>
userError :: String -> IOError

-- | Raise an <a>IOException</a> in the <a>IO</a> monad.
ioError :: IOError -> IO a

-- | Write a character to the standard output device (same as
--   <a>hPutChar</a> <a>stdout</a>).
putChar :: Char -> IO ()

-- | Write a string to the standard output device (same as <a>hPutStr</a>
--   <a>stdout</a>).
putStr :: String -> IO ()

-- | Read a character from the standard input device (same as
--   <a>hGetChar</a> <a>stdin</a>).
getChar :: IO Char

-- | The <a>getContents</a> operation returns all user input as a single
--   string, which is read lazily as it is needed (same as
--   <a>hGetContents</a> <a>stdin</a>).
getContents :: IO String

-- | The <a>interact</a> function takes a function of type
--   <tt>String-&gt;String</tt> as its argument. The entire input from the
--   standard input device is passed to this function as its argument, and
--   the resulting string is output on the standard output device.
interact :: (String -> String) -> IO ()

-- | The <a>readFile</a> function reads a file and returns the contents of
--   the file as a string. The file is read lazily, on demand, as with
--   <a>getContents</a>.
readFile :: FilePath -> IO String

-- | The computation <a>appendFile</a> <tt>file str</tt> function appends
--   the string <tt>str</tt>, to the file <tt>file</tt>.
--   
--   Note that <a>writeFile</a> and <a>appendFile</a> write a literal
--   string to a file. To write a value of any printable type, as with
--   <a>print</a>, use the <a>show</a> function to convert the value to a
--   string first.
--   
--   <pre>
--   main = appendFile "squares" (show [(x,x*x) | x &lt;- [0,0.1..2]])
--   </pre>
appendFile :: FilePath -> String -> IO ()

-- | The <a>readLn</a> function combines <a>getLine</a> and <a>readIO</a>.
readLn :: Read a => IO a

-- | The <a>readIO</a> function is similar to <a>read</a> except that it
--   signals parse failure to the <a>IO</a> monad instead of terminating
--   the program.
readIO :: Read a => String -> IO a

-- | <i>O(n)</i> Convert a <a>String</a> into a <a>Text</a>. Performs
--   replacement on invalid scalar values, so <tt><a>unpack</a> .
--   <a>pack</a></tt> is not <a>id</a>:
--   
--   <pre>
--   &gt;&gt;&gt; Data.Text.unpack (pack "\55555")
--   "\65533"
--   </pre>
pack :: String -> Text

-- | <i>O(n)</i> Convert a <a>Text</a> into a <a>String</a>.
unpack :: Text -> String

-- | <a>GHC.Generics</a>-based <a>rnf</a> implementation
--   
--   This provides a generic <a>rnf</a> implementation for one type at a
--   time. If the type of the value <a>genericRnf</a> is asked to reduce to
--   NF contains values of other types, those types have to provide
--   <a>NFData</a> instances. This also means that recursive types can only
--   be used with <a>genericRnf</a> if a <a>NFData</a> instance has been
--   defined as well (see examples below).
--   
--   The typical usage for <a>genericRnf</a> is for reducing boilerplate
--   code when defining <a>NFData</a> instances for ordinary algebraic
--   datatypes. See the code below for some simple usage examples:
--   
--   <pre>
--   {-# LANGUAGE DeriveGeneric #-}
--   
--   import Control.DeepSeq
--   import Control.DeepSeq.Generics (genericRnf)
--   import GHC.Generics
--   
--   -- simple record
--   data Foo = Foo AccountId Name Address
--            deriving Generic
--   
--   type Address      = [String]
--   type Name         = String
--   newtype AccountId = AccountId Int
--   
--   instance NFData AccountId
--   instance NFData Foo where rnf = genericRnf
--   
--   -- recursive list-like type
--   data N = Z | S N deriving Generic
--   
--   instance NFData N where rnf = genericRnf
--   
--   -- parametric &amp; recursive type
--   data Bar a = Bar0 | Bar1 a | Bar2 (Bar a)
--              deriving Generic
--   
--   instance NFData a =&gt; NFData (Bar a) where rnf = genericRnf
--   </pre>
--   
--   <b>NOTE</b>: The <a>GNFData</a> type-class showing up in the
--   type-signature is used internally and not exported.
genericRnf :: (Generic a, GNFData (Rep a)) => a -> ()

-- | Formats a time in ISO 8601, with up to 12 second decimals.
--   
--   This is the <a>formatTime</a> format <tt>%FT%T%Q</tt> ==
--   <tt>%%Y-%m-%dT%%H:%M:%S%Q</tt>.
formatISO8601 :: UTCTime -> String


-- | Verification of incomming webhook payloads, as described at
--   <a>https://developer.github.com/webhooks/securing/</a>
module GitHub.Data.Webhooks.Validate

-- | Validates a given payload against a given HMAC hexdigest using a given
--   secret. Returns <a>True</a> iff the given hash is non-empty and it's a
--   valid signature of the payload.
isValidPayload :: Text -> Maybe Text -> ByteString -> Bool

module GitHub.Data.URL

-- | Data representing URLs in responses.
--   
--   <i>N.B.</i> syntactical validity is not verified.
newtype URL
URL :: Text -> URL
getUrl :: URL -> Text
instance Data.Data.Data GitHub.Data.URL.URL
instance GHC.Generics.Generic GitHub.Data.URL.URL
instance GHC.Show.Show GitHub.Data.URL.URL
instance GHC.Classes.Ord GitHub.Data.URL.URL
instance GHC.Classes.Eq GitHub.Data.URL.URL
instance Control.DeepSeq.NFData GitHub.Data.URL.URL
instance Data.Binary.Class.Binary GitHub.Data.URL.URL
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.URL.URL
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.URL.URL

module GitHub.Data.RateLimit
data Limits
Limits :: !Int -> !Int -> !SystemTime -> Limits
[limitsMax] :: Limits -> !Int
[limitsRemaining] :: Limits -> !Int
[limitsReset] :: Limits -> !SystemTime
data RateLimit
RateLimit :: Limits -> Limits -> Limits -> RateLimit
[rateLimitCore] :: RateLimit -> Limits
[rateLimitSearch] :: RateLimit -> Limits
[rateLimitGraphQL] :: RateLimit -> Limits

limitsFromHttpResponse :: Response a -> Maybe Limits
instance GHC.Generics.Generic GitHub.Data.RateLimit.Limits
instance GHC.Classes.Ord GitHub.Data.RateLimit.Limits
instance GHC.Classes.Eq GitHub.Data.RateLimit.Limits
instance GHC.Show.Show GitHub.Data.RateLimit.Limits
instance GHC.Generics.Generic GitHub.Data.RateLimit.RateLimit
instance GHC.Classes.Ord GitHub.Data.RateLimit.RateLimit
instance GHC.Classes.Eq GitHub.Data.RateLimit.RateLimit
instance GHC.Show.Show GitHub.Data.RateLimit.RateLimit
instance Control.DeepSeq.NFData GitHub.Data.RateLimit.RateLimit
instance Data.Binary.Class.Binary GitHub.Data.RateLimit.RateLimit
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.RateLimit.RateLimit
instance Control.DeepSeq.NFData GitHub.Data.RateLimit.Limits
instance Data.Binary.Class.Binary GitHub.Data.RateLimit.Limits
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.RateLimit.Limits

module GitHub.Data.Name
newtype Name entity
N :: Text -> Name entity

-- | Smart constructor for <a>Name</a>
mkName :: proxy entity -> Text -> Name entity
untagName :: Name entity -> Text
instance Data.Data.Data entity => Data.Data.Data (GitHub.Data.Name.Name entity)
instance GHC.Generics.Generic (GitHub.Data.Name.Name entity)
instance GHC.Show.Show (GitHub.Data.Name.Name entity)
instance GHC.Classes.Ord (GitHub.Data.Name.Name entity)
instance GHC.Classes.Eq (GitHub.Data.Name.Name entity)
instance Data.Hashable.Class.Hashable (GitHub.Data.Name.Name entity)
instance Data.Binary.Class.Binary (GitHub.Data.Name.Name entity)
instance Control.DeepSeq.NFData (GitHub.Data.Name.Name entity)
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Name.Name entity)
instance Data.Aeson.Types.ToJSON.ToJSON (GitHub.Data.Name.Name entity)
instance Data.String.IsString (GitHub.Data.Name.Name entity)
instance Data.Aeson.Types.ToJSON.ToJSONKey (GitHub.Data.Name.Name entity)
instance Data.Aeson.Types.FromJSON.FromJSONKey (GitHub.Data.Name.Name entity)

module GitHub.Data.Id

-- | Numeric identifier.
newtype Id entity
Id :: Int -> Id entity

-- | Smart constructor for <a>Id</a>.
mkId :: proxy entity -> Int -> Id entity
untagId :: Id entity -> Int
instance Data.Data.Data entity => Data.Data.Data (GitHub.Data.Id.Id entity)
instance GHC.Generics.Generic (GitHub.Data.Id.Id entity)
instance GHC.Show.Show (GitHub.Data.Id.Id entity)
instance GHC.Classes.Ord (GitHub.Data.Id.Id entity)
instance GHC.Classes.Eq (GitHub.Data.Id.Id entity)
instance Data.Hashable.Class.Hashable (GitHub.Data.Id.Id entity)
instance Data.Binary.Class.Binary (GitHub.Data.Id.Id entity)
instance Control.DeepSeq.NFData (GitHub.Data.Id.Id entity)
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Id.Id entity)
instance Data.Aeson.Types.ToJSON.ToJSON (GitHub.Data.Id.Id entity)

module GitHub.Data.Webhooks
data RepoWebhook
RepoWebhook :: !URL -> !URL -> !Id RepoWebhook -> !Text -> !Bool -> !Vector RepoWebhookEvent -> !Map Text Text -> !RepoWebhookResponse -> !UTCTime -> !UTCTime -> RepoWebhook
[repoWebhookUrl] :: RepoWebhook -> !URL
[repoWebhookTestUrl] :: RepoWebhook -> !URL
[repoWebhookId] :: RepoWebhook -> !Id RepoWebhook
[repoWebhookName] :: RepoWebhook -> !Text
[repoWebhookActive] :: RepoWebhook -> !Bool
[repoWebhookEvents] :: RepoWebhook -> !Vector RepoWebhookEvent
[repoWebhookConfig] :: RepoWebhook -> !Map Text Text
[repoWebhookLastResponse] :: RepoWebhook -> !RepoWebhookResponse
[repoWebhookUpdatedAt] :: RepoWebhook -> !UTCTime
[repoWebhookCreatedAt] :: RepoWebhook -> !UTCTime

-- | See <a>https://developer.github.com/webhooks/#events</a>.
data RepoWebhookEvent
WebhookWildcardEvent :: RepoWebhookEvent
WebhookCheckRunEvent :: RepoWebhookEvent
WebhookCheckSuiteEvent :: RepoWebhookEvent
WebhookCodeScanningAlert :: RepoWebhookEvent
WebhookCommitCommentEvent :: RepoWebhookEvent
WebhookContentReferenceEvent :: RepoWebhookEvent
WebhookCreateEvent :: RepoWebhookEvent
WebhookDeleteEvent :: RepoWebhookEvent
WebhookDeployKeyEvent :: RepoWebhookEvent
WebhookDeploymentEvent :: RepoWebhookEvent
WebhookDeploymentStatusEvent :: RepoWebhookEvent
WebhookDiscussion :: RepoWebhookEvent
WebhookDiscussionComment :: RepoWebhookEvent
WebhookDownloadEvent :: RepoWebhookEvent
WebhookFollowEvent :: RepoWebhookEvent
WebhookForkEvent :: RepoWebhookEvent
WebhookGistEvent :: RepoWebhookEvent
WebhookGitHubAppAuthorizationEvent :: RepoWebhookEvent
WebhookGollumEvent :: RepoWebhookEvent
WebhookInstallationEvent :: RepoWebhookEvent
WebhookInstallationRepositoriesEvent :: RepoWebhookEvent
WebhookIssueCommentEvent :: RepoWebhookEvent
WebhookIssuesEvent :: RepoWebhookEvent
WebhookLabelEvent :: RepoWebhookEvent
WebhookMarketplacePurchaseEvent :: RepoWebhookEvent
WebhookMemberEvent :: RepoWebhookEvent
WebhookMembershipEvent :: RepoWebhookEvent
WebhookMetaEvent :: RepoWebhookEvent
WebhookMilestoneEvent :: RepoWebhookEvent
WebhookOrgBlockEvent :: RepoWebhookEvent
WebhookOrganizationEvent :: RepoWebhookEvent
WebhookPackage :: RepoWebhookEvent
WebhookPageBuildEvent :: RepoWebhookEvent
WebhookPingEvent :: RepoWebhookEvent
WebhookProjectCardEvent :: RepoWebhookEvent
WebhookProjectColumnEvent :: RepoWebhookEvent
WebhookProjectEvent :: RepoWebhookEvent
WebhookPublicEvent :: RepoWebhookEvent
WebhookPullRequestEvent :: RepoWebhookEvent
WebhookPullRequestReviewCommentEvent :: RepoWebhookEvent
WebhookPullRequestReviewEvent :: RepoWebhookEvent
WebhookPushEvent :: RepoWebhookEvent
WebhookRegistryPackageEvent :: RepoWebhookEvent
WebhookReleaseEvent :: RepoWebhookEvent
WebhookRepositoryDispatch :: RepoWebhookEvent
WebhookRepositoryEvent :: RepoWebhookEvent
WebhookRepositoryImportEvent :: RepoWebhookEvent
WebhookRepositoryVulnerabilityAlertEvent :: RepoWebhookEvent
WebhookSecretScanningAlert :: RepoWebhookEvent
WebhookSecurityAdvisoryEvent :: RepoWebhookEvent
WebhookSponsorship :: RepoWebhookEvent
WebhookStarEvent :: RepoWebhookEvent
WebhookStatusEvent :: RepoWebhookEvent
WebhookTeamAddEvent :: RepoWebhookEvent
WebhookTeamEvent :: RepoWebhookEvent
WebhookWatchEvent :: RepoWebhookEvent
WebhookWorkflowDispatch :: RepoWebhookEvent
WebhookWorkflowRun :: RepoWebhookEvent
data RepoWebhookResponse
RepoWebhookResponse :: !Maybe Int -> !Maybe Text -> !Maybe Text -> RepoWebhookResponse
[repoWebhookResponseCode] :: RepoWebhookResponse -> !Maybe Int
[repoWebhookResponseStatus] :: RepoWebhookResponse -> !Maybe Text
[repoWebhookResponseMessage] :: RepoWebhookResponse -> !Maybe Text
data PingEvent
PingEvent :: !Text -> !RepoWebhook -> !Id RepoWebhook -> PingEvent
[pingEventZen] :: PingEvent -> !Text
[pingEventHook] :: PingEvent -> !RepoWebhook
[pingEventHookId] :: PingEvent -> !Id RepoWebhook
data NewRepoWebhook
NewRepoWebhook :: !Text -> !Map Text Text -> !Maybe (Vector RepoWebhookEvent) -> !Maybe Bool -> NewRepoWebhook
[newRepoWebhookName] :: NewRepoWebhook -> !Text
[newRepoWebhookConfig] :: NewRepoWebhook -> !Map Text Text
[newRepoWebhookEvents] :: NewRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
[newRepoWebhookActive] :: NewRepoWebhook -> !Maybe Bool
data EditRepoWebhook
EditRepoWebhook :: !Maybe (Map Text Text) -> !Maybe (Vector RepoWebhookEvent) -> !Maybe (Vector RepoWebhookEvent) -> !Maybe (Vector RepoWebhookEvent) -> !Maybe Bool -> EditRepoWebhook
[editRepoWebhookConfig] :: EditRepoWebhook -> !Maybe (Map Text Text)
[editRepoWebhookEvents] :: EditRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
[editRepoWebhookAddEvents] :: EditRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
[editRepoWebhookRemoveEvents] :: EditRepoWebhook -> !Maybe (Vector RepoWebhookEvent)
[editRepoWebhookActive] :: EditRepoWebhook -> !Maybe Bool
instance GHC.Generics.Generic GitHub.Data.Webhooks.RepoWebhookEvent
instance GHC.Classes.Ord GitHub.Data.Webhooks.RepoWebhookEvent
instance GHC.Classes.Eq GitHub.Data.Webhooks.RepoWebhookEvent
instance Data.Data.Data GitHub.Data.Webhooks.RepoWebhookEvent
instance GHC.Show.Show GitHub.Data.Webhooks.RepoWebhookEvent
instance GHC.Generics.Generic GitHub.Data.Webhooks.RepoWebhookResponse
instance GHC.Classes.Ord GitHub.Data.Webhooks.RepoWebhookResponse
instance GHC.Classes.Eq GitHub.Data.Webhooks.RepoWebhookResponse
instance Data.Data.Data GitHub.Data.Webhooks.RepoWebhookResponse
instance GHC.Show.Show GitHub.Data.Webhooks.RepoWebhookResponse
instance GHC.Generics.Generic GitHub.Data.Webhooks.RepoWebhook
instance GHC.Classes.Ord GitHub.Data.Webhooks.RepoWebhook
instance GHC.Classes.Eq GitHub.Data.Webhooks.RepoWebhook
instance Data.Data.Data GitHub.Data.Webhooks.RepoWebhook
instance GHC.Show.Show GitHub.Data.Webhooks.RepoWebhook
instance GHC.Generics.Generic GitHub.Data.Webhooks.PingEvent
instance GHC.Classes.Ord GitHub.Data.Webhooks.PingEvent
instance GHC.Classes.Eq GitHub.Data.Webhooks.PingEvent
instance Data.Data.Data GitHub.Data.Webhooks.PingEvent
instance GHC.Show.Show GitHub.Data.Webhooks.PingEvent
instance GHC.Generics.Generic GitHub.Data.Webhooks.NewRepoWebhook
instance Data.Data.Data GitHub.Data.Webhooks.NewRepoWebhook
instance GHC.Show.Show GitHub.Data.Webhooks.NewRepoWebhook
instance GHC.Classes.Ord GitHub.Data.Webhooks.NewRepoWebhook
instance GHC.Classes.Eq GitHub.Data.Webhooks.NewRepoWebhook
instance GHC.Generics.Generic GitHub.Data.Webhooks.EditRepoWebhook
instance Data.Data.Data GitHub.Data.Webhooks.EditRepoWebhook
instance GHC.Show.Show GitHub.Data.Webhooks.EditRepoWebhook
instance GHC.Classes.Ord GitHub.Data.Webhooks.EditRepoWebhook
instance GHC.Classes.Eq GitHub.Data.Webhooks.EditRepoWebhook
instance Control.DeepSeq.NFData GitHub.Data.Webhooks.EditRepoWebhook
instance Data.Binary.Class.Binary GitHub.Data.Webhooks.EditRepoWebhook
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Webhooks.EditRepoWebhook
instance Control.DeepSeq.NFData GitHub.Data.Webhooks.NewRepoWebhook
instance Data.Binary.Class.Binary GitHub.Data.Webhooks.NewRepoWebhook
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Webhooks.NewRepoWebhook
instance Control.DeepSeq.NFData GitHub.Data.Webhooks.PingEvent
instance Data.Binary.Class.Binary GitHub.Data.Webhooks.PingEvent
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Webhooks.PingEvent
instance Control.DeepSeq.NFData GitHub.Data.Webhooks.RepoWebhook
instance Data.Binary.Class.Binary GitHub.Data.Webhooks.RepoWebhook
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Webhooks.RepoWebhook
instance Control.DeepSeq.NFData GitHub.Data.Webhooks.RepoWebhookResponse
instance Data.Binary.Class.Binary GitHub.Data.Webhooks.RepoWebhookResponse
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Webhooks.RepoWebhookResponse
instance Control.DeepSeq.NFData GitHub.Data.Webhooks.RepoWebhookEvent
instance Data.Binary.Class.Binary GitHub.Data.Webhooks.RepoWebhookEvent
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Webhooks.RepoWebhookEvent
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Webhooks.RepoWebhookEvent


module GitHub.Data.PublicSSHKeys
data PublicSSHKeyBasic
PublicSSHKeyBasic :: !Id PublicSSHKey -> !Text -> PublicSSHKeyBasic
[basicPublicSSHKeyId] :: PublicSSHKeyBasic -> !Id PublicSSHKey
[basicPublicSSHKeyKey] :: PublicSSHKeyBasic -> !Text
data PublicSSHKey
PublicSSHKey :: !Id PublicSSHKey -> !Text -> !URL -> !Text -> !Bool -> !Maybe UTCTime -> !Bool -> PublicSSHKey
[publicSSHKeyId] :: PublicSSHKey -> !Id PublicSSHKey
[publicSSHKeyKey] :: PublicSSHKey -> !Text
[publicSSHKeyUrl] :: PublicSSHKey -> !URL
[publicSSHKeyTitle] :: PublicSSHKey -> !Text
[publicSSHKeyVerified] :: PublicSSHKey -> !Bool
[publicSSHKeyCreatedAt] :: PublicSSHKey -> !Maybe UTCTime
[publicSSHKeyReadOnly] :: PublicSSHKey -> !Bool
data NewPublicSSHKey
NewPublicSSHKey :: !Text -> !Text -> NewPublicSSHKey
[newPublicSSHKeyKey] :: NewPublicSSHKey -> !Text
[newPublicSSHKeyTitle] :: NewPublicSSHKey -> !Text
instance GHC.Generics.Generic GitHub.Data.PublicSSHKeys.PublicSSHKey
instance GHC.Classes.Ord GitHub.Data.PublicSSHKeys.PublicSSHKey
instance GHC.Classes.Eq GitHub.Data.PublicSSHKeys.PublicSSHKey
instance Data.Data.Data GitHub.Data.PublicSSHKeys.PublicSSHKey
instance GHC.Show.Show GitHub.Data.PublicSSHKeys.PublicSSHKey
instance GHC.Generics.Generic GitHub.Data.PublicSSHKeys.PublicSSHKeyBasic
instance GHC.Classes.Ord GitHub.Data.PublicSSHKeys.PublicSSHKeyBasic
instance GHC.Classes.Eq GitHub.Data.PublicSSHKeys.PublicSSHKeyBasic
instance Data.Data.Data GitHub.Data.PublicSSHKeys.PublicSSHKeyBasic
instance GHC.Show.Show GitHub.Data.PublicSSHKeys.PublicSSHKeyBasic
instance GHC.Generics.Generic GitHub.Data.PublicSSHKeys.NewPublicSSHKey
instance GHC.Classes.Ord GitHub.Data.PublicSSHKeys.NewPublicSSHKey
instance GHC.Classes.Eq GitHub.Data.PublicSSHKeys.NewPublicSSHKey
instance Data.Data.Data GitHub.Data.PublicSSHKeys.NewPublicSSHKey
instance GHC.Show.Show GitHub.Data.PublicSSHKeys.NewPublicSSHKey
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.PublicSSHKeys.NewPublicSSHKey
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PublicSSHKeys.NewPublicSSHKey
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PublicSSHKeys.PublicSSHKeyBasic
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PublicSSHKeys.PublicSSHKey

module GitHub.Data.Email
data EmailVisibility
EmailVisibilityPrivate :: EmailVisibility
EmailVisibilityPublic :: EmailVisibility
data Email
Email :: !Text -> !Bool -> !Bool -> !Maybe EmailVisibility -> Email
[emailAddress] :: Email -> !Text
[emailVerified] :: Email -> !Bool
[emailPrimary] :: Email -> !Bool
[emailVisibility] :: Email -> !Maybe EmailVisibility
instance GHC.Generics.Generic GitHub.Data.Email.EmailVisibility
instance GHC.Classes.Ord GitHub.Data.Email.EmailVisibility
instance GHC.Classes.Eq GitHub.Data.Email.EmailVisibility
instance GHC.Enum.Bounded GitHub.Data.Email.EmailVisibility
instance GHC.Enum.Enum GitHub.Data.Email.EmailVisibility
instance Data.Data.Data GitHub.Data.Email.EmailVisibility
instance GHC.Show.Show GitHub.Data.Email.EmailVisibility
instance GHC.Generics.Generic GitHub.Data.Email.Email
instance GHC.Classes.Ord GitHub.Data.Email.Email
instance GHC.Classes.Eq GitHub.Data.Email.Email
instance Data.Data.Data GitHub.Data.Email.Email
instance GHC.Show.Show GitHub.Data.Email.Email
instance Control.DeepSeq.NFData GitHub.Data.Email.Email
instance Data.Binary.Class.Binary GitHub.Data.Email.Email
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Email.Email
instance Control.DeepSeq.NFData GitHub.Data.Email.EmailVisibility
instance Data.Binary.Class.Binary GitHub.Data.Email.EmailVisibility
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Email.EmailVisibility


module GitHub.Data.DeployKeys
data RepoDeployKey
RepoDeployKey :: !Id RepoDeployKey -> !Text -> !URL -> !Text -> !Bool -> !UTCTime -> !Bool -> RepoDeployKey
[repoDeployKeyId] :: RepoDeployKey -> !Id RepoDeployKey
[repoDeployKeyKey] :: RepoDeployKey -> !Text
[repoDeployKeyUrl] :: RepoDeployKey -> !URL
[repoDeployKeyTitle] :: RepoDeployKey -> !Text
[repoDeployKeyVerified] :: RepoDeployKey -> !Bool
[repoDeployKeyCreatedAt] :: RepoDeployKey -> !UTCTime
[repoDeployKeyReadOnly] :: RepoDeployKey -> !Bool
data NewRepoDeployKey
NewRepoDeployKey :: !Text -> !Text -> !Bool -> NewRepoDeployKey
[newRepoDeployKeyKey] :: NewRepoDeployKey -> !Text
[newRepoDeployKeyTitle] :: NewRepoDeployKey -> !Text
[newRepoDeployKeyReadOnly] :: NewRepoDeployKey -> !Bool
instance GHC.Generics.Generic GitHub.Data.DeployKeys.RepoDeployKey
instance GHC.Classes.Ord GitHub.Data.DeployKeys.RepoDeployKey
instance GHC.Classes.Eq GitHub.Data.DeployKeys.RepoDeployKey
instance Data.Data.Data GitHub.Data.DeployKeys.RepoDeployKey
instance GHC.Show.Show GitHub.Data.DeployKeys.RepoDeployKey
instance GHC.Generics.Generic GitHub.Data.DeployKeys.NewRepoDeployKey
instance GHC.Classes.Ord GitHub.Data.DeployKeys.NewRepoDeployKey
instance GHC.Classes.Eq GitHub.Data.DeployKeys.NewRepoDeployKey
instance Data.Data.Data GitHub.Data.DeployKeys.NewRepoDeployKey
instance GHC.Show.Show GitHub.Data.DeployKeys.NewRepoDeployKey
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.DeployKeys.NewRepoDeployKey
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.DeployKeys.NewRepoDeployKey
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.DeployKeys.RepoDeployKey

module GitHub.Data.Definitions

-- | Errors have been tagged according to their source, so you can more
--   easily dispatch and handle them.
data Error

-- | A HTTP error occurred. The actual caught error is included.
HTTPError :: !HttpException -> Error

-- | An error in the parser itself.
ParseError :: !Text -> Error

-- | The JSON is malformed or unexpected.
JsonError :: !Text -> Error

-- | Incorrect input.
UserError :: !Text -> Error

-- | Type of the repository owners.
data OwnerType
OwnerUser :: OwnerType
OwnerOrganization :: OwnerType
OwnerBot :: OwnerType
data SimpleUser
SimpleUser :: !Id User -> !Name User -> !URL -> !URL -> SimpleUser
[simpleUserId] :: SimpleUser -> !Id User
[simpleUserLogin] :: SimpleUser -> !Name User
[simpleUserAvatarUrl] :: SimpleUser -> !URL
[simpleUserUrl] :: SimpleUser -> !URL
data SimpleOrganization
SimpleOrganization :: !Id Organization -> !Name Organization -> !URL -> !URL -> SimpleOrganization
[simpleOrganizationId] :: SimpleOrganization -> !Id Organization
[simpleOrganizationLogin] :: SimpleOrganization -> !Name Organization
[simpleOrganizationUrl] :: SimpleOrganization -> !URL
[simpleOrganizationAvatarUrl] :: SimpleOrganization -> !URL

-- | Sometimes we don't know the type of the owner, e.g. in <tt>Repo</tt>
data SimpleOwner
SimpleOwner :: !Id Owner -> !Name Owner -> !URL -> !URL -> !OwnerType -> SimpleOwner
[simpleOwnerId] :: SimpleOwner -> !Id Owner
[simpleOwnerLogin] :: SimpleOwner -> !Name Owner
[simpleOwnerUrl] :: SimpleOwner -> !URL
[simpleOwnerAvatarUrl] :: SimpleOwner -> !URL
[simpleOwnerType] :: SimpleOwner -> !OwnerType
data User
User :: !Id User -> !Name User -> !Maybe Text -> !OwnerType -> !UTCTime -> !Int -> !URL -> !Int -> !Int -> !Maybe Bool -> !Maybe Text -> !Maybe Text -> !Int -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !URL -> !URL -> User
[userId] :: User -> !Id User
[userLogin] :: User -> !Name User
[userName] :: User -> !Maybe Text

-- | Should always be <a>OwnerUser</a> or <a>OwnerBot</a>
[userType] :: User -> !OwnerType
[userCreatedAt] :: User -> !UTCTime
[userPublicGists] :: User -> !Int
[userAvatarUrl] :: User -> !URL
[userFollowers] :: User -> !Int
[userFollowing] :: User -> !Int
[userHireable] :: User -> !Maybe Bool
[userBlog] :: User -> !Maybe Text
[userBio] :: User -> !Maybe Text
[userPublicRepos] :: User -> !Int
[userLocation] :: User -> !Maybe Text
[userCompany] :: User -> !Maybe Text
[userEmail] :: User -> !Maybe Text
[userUrl] :: User -> !URL
[userHtmlUrl] :: User -> !URL
data Organization
Organization :: !Id Organization -> !Name Organization -> !Maybe Text -> !OwnerType -> !Maybe Text -> !Maybe Text -> !Int -> !Maybe Text -> !URL -> !Int -> !URL -> !Maybe Text -> !Int -> !Int -> !URL -> !UTCTime -> Organization
[organizationId] :: Organization -> !Id Organization
[organizationLogin] :: Organization -> !Name Organization
[organizationName] :: Organization -> !Maybe Text

-- | Should always be <a>OwnerOrganization</a>
[organizationType] :: Organization -> !OwnerType
[organizationBlog] :: Organization -> !Maybe Text
[organizationLocation] :: Organization -> !Maybe Text
[organizationFollowers] :: Organization -> !Int
[organizationCompany] :: Organization -> !Maybe Text
[organizationAvatarUrl] :: Organization -> !URL
[organizationPublicGists] :: Organization -> !Int
[organizationHtmlUrl] :: Organization -> !URL
[organizationEmail] :: Organization -> !Maybe Text
[organizationFollowing] :: Organization -> !Int
[organizationPublicRepos] :: Organization -> !Int
[organizationUrl] :: Organization -> !URL
[organizationCreatedAt] :: Organization -> !UTCTime

-- | In practice you can't have concrete values of <a>Owner</a>.
newtype Owner
Owner :: Either User Organization -> Owner
fromOwner :: Owner -> Either User Organization
parseUser :: Object -> Parser User
parseOrganization :: Object -> Parser Organization

-- | Filter members returned in the list.
data OrgMemberFilter

-- | Members without two-factor authentication enabled. Available for
--   organization owners.
OrgMemberFilter2faDisabled :: OrgMemberFilter

-- | All members the authenticated user can see.
OrgMemberFilterAll :: OrgMemberFilter

-- | Filter members returned by their role.
data OrgMemberRole

-- | All members of the organization, regardless of role.
OrgMemberRoleAll :: OrgMemberRole

-- | Organization owners.
OrgMemberRoleAdmin :: OrgMemberRole

-- | Non-owner organization members.
OrgMemberRoleMember :: OrgMemberRole

-- | Request query string
type QueryString = [(ByteString, Maybe ByteString)]

-- | Count of elements
type Count = Int
newtype IssueNumber
IssueNumber :: Int -> IssueNumber
unIssueNumber :: IssueNumber -> Int
data IssueLabel
IssueLabel :: !Text -> !URL -> !Name IssueLabel -> !Maybe Text -> IssueLabel
[labelColor] :: IssueLabel -> !Text
[labelUrl] :: IssueLabel -> !URL
[labelName] :: IssueLabel -> !Name IssueLabel
[labelDesc] :: IssueLabel -> !Maybe Text
data NewIssueLabel
NewIssueLabel :: !Text -> !Name NewIssueLabel -> !Maybe Text -> NewIssueLabel
[newLabelColor] :: NewIssueLabel -> !Text
[newLabelName] :: NewIssueLabel -> !Name NewIssueLabel
[newLabelDesc] :: NewIssueLabel -> !Maybe Text
data UpdateIssueLabel
UpdateIssueLabel :: !Text -> !Name UpdateIssueLabel -> !Maybe Text -> UpdateIssueLabel
[updateLabelColor] :: UpdateIssueLabel -> !Text
[updateLabelName] :: UpdateIssueLabel -> !Name UpdateIssueLabel
[updateLabelDesc] :: UpdateIssueLabel -> !Maybe Text
instance GHC.Show.Show GitHub.Data.Definitions.Error
instance Data.Data.Data GitHub.Data.Definitions.OwnerType
instance GHC.Generics.Generic GitHub.Data.Definitions.OwnerType
instance GHC.Read.Read GitHub.Data.Definitions.OwnerType
instance GHC.Show.Show GitHub.Data.Definitions.OwnerType
instance GHC.Enum.Bounded GitHub.Data.Definitions.OwnerType
instance GHC.Enum.Enum GitHub.Data.Definitions.OwnerType
instance GHC.Classes.Ord GitHub.Data.Definitions.OwnerType
instance GHC.Classes.Eq GitHub.Data.Definitions.OwnerType
instance GHC.Generics.Generic GitHub.Data.Definitions.User
instance GHC.Classes.Ord GitHub.Data.Definitions.User
instance GHC.Classes.Eq GitHub.Data.Definitions.User
instance Data.Data.Data GitHub.Data.Definitions.User
instance GHC.Show.Show GitHub.Data.Definitions.User
instance GHC.Generics.Generic GitHub.Data.Definitions.SimpleUser
instance GHC.Classes.Ord GitHub.Data.Definitions.SimpleUser
instance GHC.Classes.Eq GitHub.Data.Definitions.SimpleUser
instance Data.Data.Data GitHub.Data.Definitions.SimpleUser
instance GHC.Show.Show GitHub.Data.Definitions.SimpleUser
instance GHC.Generics.Generic GitHub.Data.Definitions.Organization
instance GHC.Classes.Ord GitHub.Data.Definitions.Organization
instance GHC.Classes.Eq GitHub.Data.Definitions.Organization
instance Data.Data.Data GitHub.Data.Definitions.Organization
instance GHC.Show.Show GitHub.Data.Definitions.Organization
instance GHC.Generics.Generic GitHub.Data.Definitions.SimpleOrganization
instance GHC.Classes.Ord GitHub.Data.Definitions.SimpleOrganization
instance GHC.Classes.Eq GitHub.Data.Definitions.SimpleOrganization
instance Data.Data.Data GitHub.Data.Definitions.SimpleOrganization
instance GHC.Show.Show GitHub.Data.Definitions.SimpleOrganization
instance GHC.Generics.Generic GitHub.Data.Definitions.Owner
instance GHC.Classes.Ord GitHub.Data.Definitions.Owner
instance GHC.Classes.Eq GitHub.Data.Definitions.Owner
instance Data.Data.Data GitHub.Data.Definitions.Owner
instance GHC.Show.Show GitHub.Data.Definitions.Owner
instance GHC.Generics.Generic GitHub.Data.Definitions.SimpleOwner
instance GHC.Classes.Ord GitHub.Data.Definitions.SimpleOwner
instance GHC.Classes.Eq GitHub.Data.Definitions.SimpleOwner
instance Data.Data.Data GitHub.Data.Definitions.SimpleOwner
instance GHC.Show.Show GitHub.Data.Definitions.SimpleOwner
instance GHC.Generics.Generic GitHub.Data.Definitions.OrgMemberFilter
instance Data.Data.Data GitHub.Data.Definitions.OrgMemberFilter
instance GHC.Enum.Bounded GitHub.Data.Definitions.OrgMemberFilter
instance GHC.Enum.Enum GitHub.Data.Definitions.OrgMemberFilter
instance GHC.Classes.Ord GitHub.Data.Definitions.OrgMemberFilter
instance GHC.Classes.Eq GitHub.Data.Definitions.OrgMemberFilter
instance GHC.Show.Show GitHub.Data.Definitions.OrgMemberFilter
instance GHC.Generics.Generic GitHub.Data.Definitions.OrgMemberRole
instance Data.Data.Data GitHub.Data.Definitions.OrgMemberRole
instance GHC.Enum.Bounded GitHub.Data.Definitions.OrgMemberRole
instance GHC.Enum.Enum GitHub.Data.Definitions.OrgMemberRole
instance GHC.Classes.Ord GitHub.Data.Definitions.OrgMemberRole
instance GHC.Classes.Eq GitHub.Data.Definitions.OrgMemberRole
instance GHC.Show.Show GitHub.Data.Definitions.OrgMemberRole
instance Data.Data.Data GitHub.Data.Definitions.IssueNumber
instance GHC.Generics.Generic GitHub.Data.Definitions.IssueNumber
instance GHC.Show.Show GitHub.Data.Definitions.IssueNumber
instance GHC.Classes.Ord GitHub.Data.Definitions.IssueNumber
instance GHC.Classes.Eq GitHub.Data.Definitions.IssueNumber
instance GHC.Generics.Generic GitHub.Data.Definitions.IssueLabel
instance GHC.Classes.Ord GitHub.Data.Definitions.IssueLabel
instance GHC.Classes.Eq GitHub.Data.Definitions.IssueLabel
instance Data.Data.Data GitHub.Data.Definitions.IssueLabel
instance GHC.Show.Show GitHub.Data.Definitions.IssueLabel
instance GHC.Generics.Generic GitHub.Data.Definitions.NewIssueLabel
instance GHC.Classes.Ord GitHub.Data.Definitions.NewIssueLabel
instance GHC.Classes.Eq GitHub.Data.Definitions.NewIssueLabel
instance Data.Data.Data GitHub.Data.Definitions.NewIssueLabel
instance GHC.Show.Show GitHub.Data.Definitions.NewIssueLabel
instance GHC.Generics.Generic GitHub.Data.Definitions.UpdateIssueLabel
instance GHC.Classes.Ord GitHub.Data.Definitions.UpdateIssueLabel
instance GHC.Classes.Eq GitHub.Data.Definitions.UpdateIssueLabel
instance Data.Data.Data GitHub.Data.Definitions.UpdateIssueLabel
instance GHC.Show.Show GitHub.Data.Definitions.UpdateIssueLabel
instance Control.DeepSeq.NFData GitHub.Data.Definitions.UpdateIssueLabel
instance Data.Binary.Class.Binary GitHub.Data.Definitions.UpdateIssueLabel
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Definitions.UpdateIssueLabel
instance Control.DeepSeq.NFData GitHub.Data.Definitions.NewIssueLabel
instance Data.Binary.Class.Binary GitHub.Data.Definitions.NewIssueLabel
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Definitions.NewIssueLabel
instance Control.DeepSeq.NFData GitHub.Data.Definitions.IssueLabel
instance Data.Binary.Class.Binary GitHub.Data.Definitions.IssueLabel
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.IssueLabel
instance Data.Hashable.Class.Hashable GitHub.Data.Definitions.IssueNumber
instance Data.Binary.Class.Binary GitHub.Data.Definitions.IssueNumber
instance Control.DeepSeq.NFData GitHub.Data.Definitions.IssueNumber
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.IssueNumber
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Definitions.IssueNumber
instance Control.DeepSeq.NFData GitHub.Data.Definitions.SimpleOwner
instance Data.Binary.Class.Binary GitHub.Data.Definitions.SimpleOwner
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.SimpleOwner
instance Control.DeepSeq.NFData GitHub.Data.Definitions.Owner
instance Data.Binary.Class.Binary GitHub.Data.Definitions.Owner
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.Owner
instance Control.DeepSeq.NFData GitHub.Data.Definitions.SimpleOrganization
instance Data.Binary.Class.Binary GitHub.Data.Definitions.SimpleOrganization
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.SimpleOrganization
instance Control.DeepSeq.NFData GitHub.Data.Definitions.Organization
instance Data.Binary.Class.Binary GitHub.Data.Definitions.Organization
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.Organization
instance Control.DeepSeq.NFData GitHub.Data.Definitions.SimpleUser
instance Data.Binary.Class.Binary GitHub.Data.Definitions.SimpleUser
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.SimpleUser
instance Control.DeepSeq.NFData GitHub.Data.Definitions.User
instance Data.Binary.Class.Binary GitHub.Data.Definitions.User
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.User
instance Control.DeepSeq.NFData GitHub.Data.Definitions.OwnerType
instance Data.Binary.Class.Binary GitHub.Data.Definitions.OwnerType
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Definitions.OwnerType
instance GHC.Exception.Type.Exception GitHub.Data.Definitions.Error

module GitHub.Data.Reviews
data ReviewState
ReviewStatePending :: ReviewState
ReviewStateApproved :: ReviewState
ReviewStateDismissed :: ReviewState
ReviewStateCommented :: ReviewState
ReviewStateChangesRequested :: ReviewState
data Review
Review :: !Text -> !Text -> ReviewState -> !Maybe UTCTime -> !URL -> !Text -> !SimpleUser -> !Id Review -> Review
[reviewBody] :: Review -> !Text
[reviewCommitId] :: Review -> !Text
[reviewState] :: Review -> ReviewState
[reviewSubmittedAt] :: Review -> !Maybe UTCTime
[reviewPullRequestUrl] :: Review -> !URL
[reviewHtmlUrl] :: Review -> !Text
[reviewUser] :: Review -> !SimpleUser
[reviewId] :: Review -> !Id Review
data ReviewComment
ReviewComment :: !Id ReviewComment -> !SimpleUser -> !Text -> !URL -> !Id Review -> !Text -> !Text -> !Int -> !Int -> !Text -> !Text -> !UTCTime -> !UTCTime -> !URL -> !URL -> ReviewComment
[reviewCommentId] :: ReviewComment -> !Id ReviewComment
[reviewCommentUser] :: ReviewComment -> !SimpleUser
[reviewCommentBody] :: ReviewComment -> !Text
[reviewCommentUrl] :: ReviewComment -> !URL
[reviewCommentPullRequestReviewId] :: ReviewComment -> !Id Review
[reviewCommentDiffHunk] :: ReviewComment -> !Text
[reviewCommentPath] :: ReviewComment -> !Text
[reviewCommentPosition] :: ReviewComment -> !Int
[reviewCommentOriginalPosition] :: ReviewComment -> !Int
[reviewCommentCommitId] :: ReviewComment -> !Text
[reviewCommentOriginalCommitId] :: ReviewComment -> !Text
[reviewCommentCreatedAt] :: ReviewComment -> !UTCTime
[reviewCommentUpdatedAt] :: ReviewComment -> !UTCTime
[reviewCommentHtmlUrl] :: ReviewComment -> !URL
[reviewCommentPullRequestUrl] :: ReviewComment -> !URL
instance GHC.Generics.Generic GitHub.Data.Reviews.ReviewState
instance GHC.Classes.Ord GitHub.Data.Reviews.ReviewState
instance GHC.Classes.Eq GitHub.Data.Reviews.ReviewState
instance GHC.Enum.Bounded GitHub.Data.Reviews.ReviewState
instance GHC.Enum.Enum GitHub.Data.Reviews.ReviewState
instance GHC.Show.Show GitHub.Data.Reviews.ReviewState
instance GHC.Generics.Generic GitHub.Data.Reviews.Review
instance GHC.Show.Show GitHub.Data.Reviews.Review
instance GHC.Generics.Generic GitHub.Data.Reviews.ReviewComment
instance GHC.Show.Show GitHub.Data.Reviews.ReviewComment
instance Control.DeepSeq.NFData GitHub.Data.Reviews.ReviewComment
instance Data.Binary.Class.Binary GitHub.Data.Reviews.ReviewComment
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Reviews.ReviewComment
instance Control.DeepSeq.NFData GitHub.Data.Reviews.Review
instance Data.Binary.Class.Binary GitHub.Data.Reviews.Review
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Reviews.Review
instance Control.DeepSeq.NFData GitHub.Data.Reviews.ReviewState
instance Data.Binary.Class.Binary GitHub.Data.Reviews.ReviewState
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Reviews.ReviewState

module GitHub.Data.Request

-- | Most requests ask for <tt>JSON</tt>.
type Request = GenRequest 'MtJSON

-- | Github request data type.
--   
--   <ul>
--   <li><tt>rw</tt> describes whether authentication is required. It's
--   required for non-<tt>GET</tt> requests.</li>
--   <li><tt>mt</tt> describes the media type, i.e. how the response should
--   be interpreted.</li>
--   <li><tt>a</tt> is the result type</li>
--   </ul>
--   
--   <i>Note:</i> <a>Request</a> is not <a>Functor</a> on purpose.
data GenRequest (mt :: MediaType (*)) (rw :: RW) a
[Query] :: Paths -> QueryString -> GenRequest mt rw a
[PagedQuery] :: (a ~ t b, Foldable t, Semigroup a) => Paths -> QueryString -> FetchCount -> GenRequest mt rw a

-- | Command
[Command] :: CommandMethod -> Paths -> ByteString -> GenRequest mt 'RW a
query :: Paths -> QueryString -> Request mt a
pagedQuery :: FromJSON a => Paths -> QueryString -> FetchCount -> Request mt (Vector a)
command :: CommandMethod -> Paths -> ByteString -> Request 'RW a

-- | Type used as with <tt>DataKinds</tt> to tag whether requests need
--   authentication or aren't read-only.
data RW

-- | <i>Read-only</i>, doesn't necessarily requires authentication
RO :: RW

-- | <i>Read authenticated</i>
RA :: RW

-- | <i>Read-write</i>, requires authentication
RW :: RW

-- | Http method of requests with body.
data CommandMethod
Post :: CommandMethod
Patch :: CommandMethod
Put :: CommandMethod
Delete :: CommandMethod
toMethod :: CommandMethod -> Method

-- | <a>PagedQuery</a> returns just some results, using this data we can
--   specify how many pages we want to fetch.
data FetchCount
FetchAtLeast :: !Word -> FetchCount
FetchAll :: FetchCount
data MediaType a

-- | <pre>
--   application/vnd.github.v3+json
--   </pre>
MtJSON :: MediaType a

-- | <tt>application/vnd.github.v3.raw</tt>
--   <a>https://developer.github.com/v3/media/#raw-1</a>
MtRaw :: MediaType a

-- | <tt>application/vnd.github.v3.diff</tt>
--   <a>https://developer.github.com/v3/media/#diff</a>
MtDiff :: MediaType a

-- | <tt>application/vnd.github.v3.patch</tt>
--   <a>https://developer.github.com/v3/media/#patch</a>
MtPatch :: MediaType a

-- | <tt>application/vnd.github.v3.sha</tt>
--   <a>https://developer.github.com/v3/media/#sha</a>
MtSha :: MediaType a

-- | <tt>application/vnd.github.v3.star+json</tt>
--   <a>https://developer.github.com/v3/activity/starring/#alternative-response-with-star-creation-timestamps-1</a>
MtStar :: MediaType a

-- | 
--   <a>https://developer.github.com/v3/repos/contents/#get-archive-link</a>
MtRedirect :: MediaType a

-- | Parse status
MtStatus :: MediaType a

-- | Always succeeds
MtUnit :: MediaType a

-- | Some other (preview) type; this is an extension point.
MtPreview :: a -> MediaType a
type Paths = [Text]
class IsPathPart a
toPathPart :: IsPathPart a => a -> Text

-- | Request query string
type QueryString = [(ByteString, Maybe ByteString)]

-- | Count of elements
type Count = Int
instance GHC.Generics.Generic GitHub.Data.Request.CommandMethod
instance Data.Data.Data GitHub.Data.Request.CommandMethod
instance GHC.Enum.Bounded GitHub.Data.Request.CommandMethod
instance GHC.Enum.Enum GitHub.Data.Request.CommandMethod
instance GHC.Show.Show GitHub.Data.Request.CommandMethod
instance GHC.Read.Read GitHub.Data.Request.CommandMethod
instance GHC.Classes.Ord GitHub.Data.Request.CommandMethod
instance GHC.Classes.Eq GitHub.Data.Request.CommandMethod
instance GHC.Generics.Generic GitHub.Data.Request.FetchCount
instance GHC.Show.Show GitHub.Data.Request.FetchCount
instance GHC.Read.Read GitHub.Data.Request.FetchCount
instance GHC.Classes.Ord GitHub.Data.Request.FetchCount
instance GHC.Classes.Eq GitHub.Data.Request.FetchCount
instance GHC.Generics.Generic (GitHub.Data.Request.MediaType a)
instance Data.Data.Data a => Data.Data.Data (GitHub.Data.Request.MediaType a)
instance GHC.Show.Show a => GHC.Show.Show (GitHub.Data.Request.MediaType a)
instance GHC.Read.Read a => GHC.Read.Read (GitHub.Data.Request.MediaType a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (GitHub.Data.Request.MediaType a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (GitHub.Data.Request.MediaType a)
instance GHC.Generics.Generic GitHub.Data.Request.RW
instance Data.Data.Data GitHub.Data.Request.RW
instance GHC.Enum.Bounded GitHub.Data.Request.RW
instance GHC.Enum.Enum GitHub.Data.Request.RW
instance GHC.Show.Show GitHub.Data.Request.RW
instance GHC.Read.Read GitHub.Data.Request.RW
instance GHC.Classes.Ord GitHub.Data.Request.RW
instance GHC.Classes.Eq GitHub.Data.Request.RW
instance GHC.Classes.Eq (GitHub.Data.Request.GenRequest rw mt a)
instance GHC.Classes.Ord (GitHub.Data.Request.GenRequest rw mt a)
instance GHC.Show.Show (GitHub.Data.Request.GenRequest rw mt a)
instance Data.Hashable.Class.Hashable (GitHub.Data.Request.GenRequest rw mt a)
instance GHC.Num.Num GitHub.Data.Request.FetchCount
instance Data.Hashable.Class.Hashable GitHub.Data.Request.FetchCount
instance Data.Binary.Class.Binary GitHub.Data.Request.FetchCount
instance Control.DeepSeq.NFData GitHub.Data.Request.FetchCount
instance Data.Hashable.Class.Hashable GitHub.Data.Request.CommandMethod
instance GitHub.Data.Request.IsPathPart (GitHub.Data.Name.Name a)
instance GitHub.Data.Request.IsPathPart (GitHub.Data.Id.Id a)
instance GitHub.Data.Request.IsPathPart GitHub.Data.Definitions.IssueNumber


-- | This module also exports <tt><a>FromJSON</a> a =&gt; <a>FromJSON</a>
--   (<a>HashMap</a> <a>Language</a> a)</tt> orphan-ish instance for
--   <tt>aeson &lt; 1</tt>
module GitHub.Data.Repos
data Repo
Repo :: !Id Repo -> !Name Repo -> !SimpleOwner -> !Bool -> !URL -> !Maybe Text -> !Maybe Bool -> !URL -> !Maybe URL -> !Maybe URL -> !Maybe URL -> !URL -> !Maybe URL -> !Maybe Text -> !Maybe Language -> !Int -> !Int -> !Int -> !Maybe Int -> !Maybe Text -> !Int -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Bool -> !Bool -> !Maybe UTCTime -> !Maybe UTCTime -> !Maybe UTCTime -> !Maybe RepoPermissions -> Repo
[repoId] :: Repo -> !Id Repo
[repoName] :: Repo -> !Name Repo
[repoOwner] :: Repo -> !SimpleOwner
[repoPrivate] :: Repo -> !Bool
[repoHtmlUrl] :: Repo -> !URL
[repoDescription] :: Repo -> !Maybe Text
[repoFork] :: Repo -> !Maybe Bool
[repoUrl] :: Repo -> !URL
[repoGitUrl] :: Repo -> !Maybe URL
[repoSshUrl] :: Repo -> !Maybe URL
[repoCloneUrl] :: Repo -> !Maybe URL
[repoHooksUrl] :: Repo -> !URL
[repoSvnUrl] :: Repo -> !Maybe URL
[repoHomepage] :: Repo -> !Maybe Text
[repoLanguage] :: Repo -> !Maybe Language
[repoForksCount] :: Repo -> !Int
[repoStargazersCount] :: Repo -> !Int
[repoWatchersCount] :: Repo -> !Int
[repoSize] :: Repo -> !Maybe Int
[repoDefaultBranch] :: Repo -> !Maybe Text
[repoOpenIssuesCount] :: Repo -> !Int
[repoHasIssues] :: Repo -> !Maybe Bool
[repoHasProjects] :: Repo -> !Maybe Bool
[repoHasWiki] :: Repo -> !Maybe Bool
[repoHasPages] :: Repo -> !Maybe Bool
[repoHasDownloads] :: Repo -> !Maybe Bool
[repoArchived] :: Repo -> !Bool
[repoDisabled] :: Repo -> !Bool

-- | this is Nothing for new repositories
[repoPushedAt] :: Repo -> !Maybe UTCTime
[repoCreatedAt] :: Repo -> !Maybe UTCTime
[repoUpdatedAt] :: Repo -> !Maybe UTCTime

-- | Repository permissions as they relate to the authenticated user.
[repoPermissions] :: Repo -> !Maybe RepoPermissions
data CodeSearchRepo
CodeSearchRepo :: !Id Repo -> !Name Repo -> !SimpleOwner -> !Bool -> !URL -> !Maybe Text -> !Maybe Bool -> !URL -> !Maybe URL -> !Maybe URL -> !Maybe URL -> !URL -> !Maybe URL -> !Maybe Text -> !Maybe Language -> !Maybe Int -> !Maybe Text -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Bool -> !Bool -> !Maybe UTCTime -> !Maybe UTCTime -> !Maybe UTCTime -> !Maybe RepoPermissions -> CodeSearchRepo
[codeSearchRepoId] :: CodeSearchRepo -> !Id Repo
[codeSearchRepoName] :: CodeSearchRepo -> !Name Repo
[codeSearchRepoOwner] :: CodeSearchRepo -> !SimpleOwner
[codeSearchRepoPrivate] :: CodeSearchRepo -> !Bool
[codeSearchRepoHtmlUrl] :: CodeSearchRepo -> !URL
[codeSearchRepoDescription] :: CodeSearchRepo -> !Maybe Text
[codeSearchRepoFork] :: CodeSearchRepo -> !Maybe Bool
[codeSearchRepoUrl] :: CodeSearchRepo -> !URL
[codeSearchRepoGitUrl] :: CodeSearchRepo -> !Maybe URL
[codeSearchRepoSshUrl] :: CodeSearchRepo -> !Maybe URL
[codeSearchRepoCloneUrl] :: CodeSearchRepo -> !Maybe URL
[codeSearchRepoHooksUrl] :: CodeSearchRepo -> !URL
[codeSearchRepoSvnUrl] :: CodeSearchRepo -> !Maybe URL
[codeSearchRepoHomepage] :: CodeSearchRepo -> !Maybe Text
[codeSearchRepoLanguage] :: CodeSearchRepo -> !Maybe Language
[codeSearchRepoSize] :: CodeSearchRepo -> !Maybe Int
[codeSearchRepoDefaultBranch] :: CodeSearchRepo -> !Maybe Text
[codeSearchRepoHasIssues] :: CodeSearchRepo -> !Maybe Bool
[codeSearchRepoHasProjects] :: CodeSearchRepo -> !Maybe Bool
[codeSearchRepoHasWiki] :: CodeSearchRepo -> !Maybe Bool
[codeSearchRepoHasPages] :: CodeSearchRepo -> !Maybe Bool
[codeSearchRepoHasDownloads] :: CodeSearchRepo -> !Maybe Bool
[codeSearchRepoArchived] :: CodeSearchRepo -> !Bool
[codeSearchRepoDisabled] :: CodeSearchRepo -> !Bool

-- | this is Nothing for new repositories
[codeSearchRepoPushedAt] :: CodeSearchRepo -> !Maybe UTCTime
[codeSearchRepoCreatedAt] :: CodeSearchRepo -> !Maybe UTCTime
[codeSearchRepoUpdatedAt] :: CodeSearchRepo -> !Maybe UTCTime

-- | Repository permissions as they relate to the authenticated user.
[codeSearchRepoPermissions] :: CodeSearchRepo -> !Maybe RepoPermissions

-- | Repository permissions, as they relate to the authenticated user.
--   
--   Returned by for example <a>currentUserReposR</a>
data RepoPermissions
RepoPermissions :: !Bool -> !Bool -> !Bool -> RepoPermissions
[repoPermissionAdmin] :: RepoPermissions -> !Bool
[repoPermissionPush] :: RepoPermissions -> !Bool
[repoPermissionPull] :: RepoPermissions -> !Bool
data RepoRef
RepoRef :: !SimpleOwner -> !Name Repo -> RepoRef
[repoRefOwner] :: RepoRef -> !SimpleOwner
[repoRefRepo] :: RepoRef -> !Name Repo
data NewRepo
NewRepo :: !Name Repo -> !Maybe Text -> !Maybe Text -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Text -> !Maybe Text -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> NewRepo
[newRepoName] :: NewRepo -> !Name Repo
[newRepoDescription] :: NewRepo -> !Maybe Text
[newRepoHomepage] :: NewRepo -> !Maybe Text
[newRepoPrivate] :: NewRepo -> !Maybe Bool
[newRepoHasIssues] :: NewRepo -> !Maybe Bool
[newRepoHasProjects] :: NewRepo -> !Maybe Bool
[newRepoHasWiki] :: NewRepo -> !Maybe Bool
[newRepoAutoInit] :: NewRepo -> !Maybe Bool
[newRepoGitignoreTemplate] :: NewRepo -> !Maybe Text
[newRepoLicenseTemplate] :: NewRepo -> !Maybe Text
[newRepoAllowSquashMerge] :: NewRepo -> !Maybe Bool
[newRepoAllowMergeCommit] :: NewRepo -> !Maybe Bool
[newRepoAllowRebaseMerge] :: NewRepo -> !Maybe Bool
newRepo :: Name Repo -> NewRepo
data EditRepo
EditRepo :: !Maybe (Name Repo) -> !Maybe Text -> !Maybe Text -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Text -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> !Maybe Bool -> EditRepo
[editName] :: EditRepo -> !Maybe (Name Repo)
[editDescription] :: EditRepo -> !Maybe Text
[editHomepage] :: EditRepo -> !Maybe Text
[editPrivate] :: EditRepo -> !Maybe Bool
[editHasIssues] :: EditRepo -> !Maybe Bool
[editHasProjects] :: EditRepo -> !Maybe Bool
[editHasWiki] :: EditRepo -> !Maybe Bool
[editDefaultBranch] :: EditRepo -> !Maybe Text
[editAllowSquashMerge] :: EditRepo -> !Maybe Bool
[editAllowMergeCommit] :: EditRepo -> !Maybe Bool
[editAllowRebaseMerge] :: EditRepo -> !Maybe Bool
[editArchived] :: EditRepo -> !Maybe Bool

-- | Filter the list of the user's repos using any of these constructors.
data RepoPublicity

-- | All repos accessible to the user.
RepoPublicityAll :: RepoPublicity

-- | Only repos owned by the user.
RepoPublicityOwner :: RepoPublicity

-- | Only public repos.
RepoPublicityPublic :: RepoPublicity

-- | Only private repos.
RepoPublicityPrivate :: RepoPublicity

-- | Only repos to which the user is a member but not an owner.
RepoPublicityMember :: RepoPublicity

-- | The value is the number of bytes of code written in that language.
type Languages = HashMap Language Int

-- | A programming language.
newtype Language
Language :: Text -> Language
getLanguage :: Language -> Text
data Contributor

-- | An existing Github user, with their number of contributions, avatar
--   URL, login, URL, ID, and Gravatar ID.
KnownContributor :: !Int -> !URL -> !Name User -> !URL -> !Id User -> !Text -> Contributor

-- | An unknown Github user with their number of contributions and recorded
--   name.
AnonymousContributor :: !Int -> !Text -> Contributor
contributorToSimpleUser :: Contributor -> Maybe SimpleUser

-- | The permission of a collaborator on a repository. See
--   <a>https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level</a>
data CollaboratorPermission
CollaboratorPermissionAdmin :: CollaboratorPermission
CollaboratorPermissionWrite :: CollaboratorPermission
CollaboratorPermissionRead :: CollaboratorPermission
CollaboratorPermissionNone :: CollaboratorPermission

-- | A collaborator and its permission on a repository. See
--   <a>https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level</a>
data CollaboratorWithPermission
CollaboratorWithPermission :: SimpleUser -> CollaboratorPermission -> CollaboratorWithPermission
data ArchiveFormat

-- | ".tar.gz" format
ArchiveFormatTarball :: ArchiveFormat

-- | ".zip" format
ArchiveFormatZipball :: ArchiveFormat
instance GHC.Generics.Generic GitHub.Data.Repos.RepoPermissions
instance GHC.Classes.Ord GitHub.Data.Repos.RepoPermissions
instance GHC.Classes.Eq GitHub.Data.Repos.RepoPermissions
instance Data.Data.Data GitHub.Data.Repos.RepoPermissions
instance GHC.Show.Show GitHub.Data.Repos.RepoPermissions
instance GHC.Generics.Generic GitHub.Data.Repos.RepoPublicity
instance Data.Data.Data GitHub.Data.Repos.RepoPublicity
instance GHC.Enum.Bounded GitHub.Data.Repos.RepoPublicity
instance GHC.Enum.Enum GitHub.Data.Repos.RepoPublicity
instance GHC.Classes.Ord GitHub.Data.Repos.RepoPublicity
instance GHC.Classes.Eq GitHub.Data.Repos.RepoPublicity
instance GHC.Show.Show GitHub.Data.Repos.RepoPublicity
instance GHC.Generics.Generic GitHub.Data.Repos.Language
instance GHC.Classes.Ord GitHub.Data.Repos.Language
instance GHC.Classes.Eq GitHub.Data.Repos.Language
instance Data.Data.Data GitHub.Data.Repos.Language
instance GHC.Show.Show GitHub.Data.Repos.Language
instance GHC.Generics.Generic GitHub.Data.Repos.Repo
instance GHC.Classes.Ord GitHub.Data.Repos.Repo
instance GHC.Classes.Eq GitHub.Data.Repos.Repo
instance Data.Data.Data GitHub.Data.Repos.Repo
instance GHC.Show.Show GitHub.Data.Repos.Repo
instance GHC.Generics.Generic GitHub.Data.Repos.EditRepo
instance Data.Data.Data GitHub.Data.Repos.EditRepo
instance GHC.Show.Show GitHub.Data.Repos.EditRepo
instance GHC.Classes.Ord GitHub.Data.Repos.EditRepo
instance GHC.Classes.Eq GitHub.Data.Repos.EditRepo
instance GHC.Generics.Generic GitHub.Data.Repos.NewRepo
instance Data.Data.Data GitHub.Data.Repos.NewRepo
instance GHC.Show.Show GitHub.Data.Repos.NewRepo
instance GHC.Classes.Ord GitHub.Data.Repos.NewRepo
instance GHC.Classes.Eq GitHub.Data.Repos.NewRepo
instance GHC.Generics.Generic GitHub.Data.Repos.RepoRef
instance GHC.Classes.Ord GitHub.Data.Repos.RepoRef
instance GHC.Classes.Eq GitHub.Data.Repos.RepoRef
instance Data.Data.Data GitHub.Data.Repos.RepoRef
instance GHC.Show.Show GitHub.Data.Repos.RepoRef
instance GHC.Generics.Generic GitHub.Data.Repos.CodeSearchRepo
instance GHC.Classes.Ord GitHub.Data.Repos.CodeSearchRepo
instance GHC.Classes.Eq GitHub.Data.Repos.CodeSearchRepo
instance Data.Data.Data GitHub.Data.Repos.CodeSearchRepo
instance GHC.Show.Show GitHub.Data.Repos.CodeSearchRepo
instance GHC.Generics.Generic GitHub.Data.Repos.Contributor
instance GHC.Classes.Ord GitHub.Data.Repos.Contributor
instance GHC.Classes.Eq GitHub.Data.Repos.Contributor
instance Data.Data.Data GitHub.Data.Repos.Contributor
instance GHC.Show.Show GitHub.Data.Repos.Contributor
instance GHC.Generics.Generic GitHub.Data.Repos.CollaboratorPermission
instance GHC.Classes.Ord GitHub.Data.Repos.CollaboratorPermission
instance GHC.Classes.Eq GitHub.Data.Repos.CollaboratorPermission
instance GHC.Enum.Bounded GitHub.Data.Repos.CollaboratorPermission
instance GHC.Enum.Enum GitHub.Data.Repos.CollaboratorPermission
instance Data.Data.Data GitHub.Data.Repos.CollaboratorPermission
instance GHC.Show.Show GitHub.Data.Repos.CollaboratorPermission
instance GHC.Generics.Generic GitHub.Data.Repos.CollaboratorWithPermission
instance GHC.Classes.Ord GitHub.Data.Repos.CollaboratorWithPermission
instance GHC.Classes.Eq GitHub.Data.Repos.CollaboratorWithPermission
instance Data.Data.Data GitHub.Data.Repos.CollaboratorWithPermission
instance GHC.Show.Show GitHub.Data.Repos.CollaboratorWithPermission
instance GHC.Generics.Generic GitHub.Data.Repos.ArchiveFormat
instance Data.Data.Data GitHub.Data.Repos.ArchiveFormat
instance GHC.Enum.Bounded GitHub.Data.Repos.ArchiveFormat
instance GHC.Enum.Enum GitHub.Data.Repos.ArchiveFormat
instance GHC.Classes.Ord GitHub.Data.Repos.ArchiveFormat
instance GHC.Classes.Eq GitHub.Data.Repos.ArchiveFormat
instance GHC.Show.Show GitHub.Data.Repos.ArchiveFormat
instance GitHub.Data.Request.IsPathPart GitHub.Data.Repos.ArchiveFormat
instance Control.DeepSeq.NFData GitHub.Data.Repos.CollaboratorWithPermission
instance Data.Binary.Class.Binary GitHub.Data.Repos.CollaboratorWithPermission
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.CollaboratorWithPermission
instance Control.DeepSeq.NFData GitHub.Data.Repos.CollaboratorPermission
instance Data.Binary.Class.Binary GitHub.Data.Repos.CollaboratorPermission
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.CollaboratorPermission
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Repos.CollaboratorPermission
instance Control.DeepSeq.NFData GitHub.Data.Repos.Contributor
instance Data.Binary.Class.Binary GitHub.Data.Repos.Contributor
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.Contributor
instance Control.DeepSeq.NFData GitHub.Data.Repos.CodeSearchRepo
instance Data.Binary.Class.Binary GitHub.Data.Repos.CodeSearchRepo
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.CodeSearchRepo
instance Control.DeepSeq.NFData GitHub.Data.Repos.RepoRef
instance Data.Binary.Class.Binary GitHub.Data.Repos.RepoRef
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.RepoRef
instance Control.DeepSeq.NFData GitHub.Data.Repos.NewRepo
instance Data.Binary.Class.Binary GitHub.Data.Repos.NewRepo
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Repos.NewRepo
instance Control.DeepSeq.NFData GitHub.Data.Repos.EditRepo
instance Data.Binary.Class.Binary GitHub.Data.Repos.EditRepo
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Repos.EditRepo
instance Control.DeepSeq.NFData GitHub.Data.Repos.Repo
instance Data.Binary.Class.Binary GitHub.Data.Repos.Repo
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.Repo
instance Control.DeepSeq.NFData GitHub.Data.Repos.Language
instance Data.Binary.Class.Binary GitHub.Data.Repos.Language
instance Data.Hashable.Class.Hashable GitHub.Data.Repos.Language
instance Data.String.IsString GitHub.Data.Repos.Language
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.Language
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Repos.Language
instance Data.Aeson.Types.FromJSON.FromJSONKey GitHub.Data.Repos.Language
instance Control.DeepSeq.NFData GitHub.Data.Repos.RepoPermissions
instance Data.Binary.Class.Binary GitHub.Data.Repos.RepoPermissions
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Repos.RepoPermissions

module GitHub.Data.Teams
data Privacy
PrivacyClosed :: Privacy
PrivacySecret :: Privacy
data Permission
PermissionPull :: Permission
PermissionPush :: Permission
PermissionAdmin :: Permission
data AddTeamRepoPermission
AddTeamRepoPermission :: !Permission -> AddTeamRepoPermission
[addTeamRepoPermission] :: AddTeamRepoPermission -> !Permission
data SimpleTeam
SimpleTeam :: !Id Team -> !URL -> !Text -> !Name Team -> !Maybe Text -> !Privacy -> !Permission -> !URL -> !URL -> SimpleTeam
[simpleTeamId] :: SimpleTeam -> !Id Team
[simpleTeamUrl] :: SimpleTeam -> !URL
[simpleTeamName] :: SimpleTeam -> !Text
[simpleTeamSlug] :: SimpleTeam -> !Name Team
[simpleTeamDescription] :: SimpleTeam -> !Maybe Text
[simpleTeamPrivacy] :: SimpleTeam -> !Privacy
[simpleTeamPermission] :: SimpleTeam -> !Permission
[simpleTeamMembersUrl] :: SimpleTeam -> !URL
[simpleTeamRepositoriesUrl] :: SimpleTeam -> !URL
data Team
Team :: !Id Team -> !URL -> !Text -> !Name Team -> !Maybe Text -> !Privacy -> !Permission -> !URL -> !URL -> !Int -> !Int -> !SimpleOrganization -> Team
[teamId] :: Team -> !Id Team
[teamUrl] :: Team -> !URL
[teamName] :: Team -> !Text
[teamSlug] :: Team -> !Name Team
[teamDescription] :: Team -> !Maybe Text
[teamPrivacy] :: Team -> !Privacy
[teamPermission] :: Team -> !Permission
[teamMembersUrl] :: Team -> !URL
[teamRepositoriesUrl] :: Team -> !URL
[teamMembersCount] :: Team -> !Int
[teamReposCount] :: Team -> !Int
[teamOrganization] :: Team -> !SimpleOrganization
data CreateTeam
CreateTeam :: !Name Team -> !Maybe Text -> !Vector (Name Repo) -> !Privacy -> !Permission -> CreateTeam
[createTeamName] :: CreateTeam -> !Name Team
[createTeamDescription] :: CreateTeam -> !Maybe Text
[createTeamRepoNames] :: CreateTeam -> !Vector (Name Repo)
[createTeamPrivacy] :: CreateTeam -> !Privacy
[createTeamPermission] :: CreateTeam -> !Permission
data EditTeam
EditTeam :: !Name Team -> !Maybe Text -> !Maybe Privacy -> !Maybe Permission -> EditTeam
[editTeamName] :: EditTeam -> !Name Team
[editTeamDescription] :: EditTeam -> !Maybe Text
[editTeamPrivacy] :: EditTeam -> !Maybe Privacy
[editTeamPermission] :: EditTeam -> !Maybe Permission
data Role
RoleMaintainer :: Role
RoleMember :: Role
data ReqState
StatePending :: ReqState
StateActive :: ReqState
data TeamMembership
TeamMembership :: !URL -> !Role -> !ReqState -> TeamMembership
[teamMembershipUrl] :: TeamMembership -> !URL
[teamMembershipRole] :: TeamMembership -> !Role
[teamMembershipReqState] :: TeamMembership -> !ReqState
data CreateTeamMembership
CreateTeamMembership :: !Role -> CreateTeamMembership
[createTeamMembershipRole] :: CreateTeamMembership -> !Role

-- | Filters members returned by their role in the team.
data TeamMemberRole

-- | all members of the team.
TeamMemberRoleAll :: TeamMemberRole

-- | team maintainers
TeamMemberRoleMaintainer :: TeamMemberRole

-- | normal members of the team.
TeamMemberRoleMember :: TeamMemberRole
instance GHC.Generics.Generic GitHub.Data.Teams.Privacy
instance GHC.Classes.Ord GitHub.Data.Teams.Privacy
instance GHC.Classes.Eq GitHub.Data.Teams.Privacy
instance GHC.Enum.Bounded GitHub.Data.Teams.Privacy
instance GHC.Enum.Enum GitHub.Data.Teams.Privacy
instance Data.Data.Data GitHub.Data.Teams.Privacy
instance GHC.Show.Show GitHub.Data.Teams.Privacy
instance GHC.Generics.Generic GitHub.Data.Teams.Permission
instance GHC.Classes.Ord GitHub.Data.Teams.Permission
instance GHC.Classes.Eq GitHub.Data.Teams.Permission
instance GHC.Enum.Bounded GitHub.Data.Teams.Permission
instance GHC.Enum.Enum GitHub.Data.Teams.Permission
instance Data.Data.Data GitHub.Data.Teams.Permission
instance GHC.Show.Show GitHub.Data.Teams.Permission
instance GHC.Generics.Generic GitHub.Data.Teams.AddTeamRepoPermission
instance GHC.Classes.Ord GitHub.Data.Teams.AddTeamRepoPermission
instance GHC.Classes.Eq GitHub.Data.Teams.AddTeamRepoPermission
instance Data.Data.Data GitHub.Data.Teams.AddTeamRepoPermission
instance GHC.Show.Show GitHub.Data.Teams.AddTeamRepoPermission
instance GHC.Generics.Generic GitHub.Data.Teams.Team
instance GHC.Classes.Ord GitHub.Data.Teams.Team
instance GHC.Classes.Eq GitHub.Data.Teams.Team
instance Data.Data.Data GitHub.Data.Teams.Team
instance GHC.Show.Show GitHub.Data.Teams.Team
instance GHC.Generics.Generic GitHub.Data.Teams.SimpleTeam
instance GHC.Classes.Ord GitHub.Data.Teams.SimpleTeam
instance GHC.Classes.Eq GitHub.Data.Teams.SimpleTeam
instance Data.Data.Data GitHub.Data.Teams.SimpleTeam
instance GHC.Show.Show GitHub.Data.Teams.SimpleTeam
instance GHC.Generics.Generic GitHub.Data.Teams.CreateTeam
instance GHC.Classes.Ord GitHub.Data.Teams.CreateTeam
instance GHC.Classes.Eq GitHub.Data.Teams.CreateTeam
instance Data.Data.Data GitHub.Data.Teams.CreateTeam
instance GHC.Show.Show GitHub.Data.Teams.CreateTeam
instance GHC.Generics.Generic GitHub.Data.Teams.EditTeam
instance GHC.Classes.Ord GitHub.Data.Teams.EditTeam
instance GHC.Classes.Eq GitHub.Data.Teams.EditTeam
instance Data.Data.Data GitHub.Data.Teams.EditTeam
instance GHC.Show.Show GitHub.Data.Teams.EditTeam
instance GHC.Generics.Generic GitHub.Data.Teams.Role
instance GHC.Classes.Ord GitHub.Data.Teams.Role
instance GHC.Classes.Eq GitHub.Data.Teams.Role
instance Data.Data.Data GitHub.Data.Teams.Role
instance GHC.Show.Show GitHub.Data.Teams.Role
instance GHC.Generics.Generic GitHub.Data.Teams.ReqState
instance GHC.Classes.Ord GitHub.Data.Teams.ReqState
instance GHC.Classes.Eq GitHub.Data.Teams.ReqState
instance Data.Data.Data GitHub.Data.Teams.ReqState
instance GHC.Show.Show GitHub.Data.Teams.ReqState
instance GHC.Generics.Generic GitHub.Data.Teams.TeamMembership
instance GHC.Classes.Ord GitHub.Data.Teams.TeamMembership
instance GHC.Classes.Eq GitHub.Data.Teams.TeamMembership
instance Data.Data.Data GitHub.Data.Teams.TeamMembership
instance GHC.Show.Show GitHub.Data.Teams.TeamMembership
instance GHC.Generics.Generic GitHub.Data.Teams.CreateTeamMembership
instance GHC.Classes.Ord GitHub.Data.Teams.CreateTeamMembership
instance GHC.Classes.Eq GitHub.Data.Teams.CreateTeamMembership
instance Data.Data.Data GitHub.Data.Teams.CreateTeamMembership
instance GHC.Show.Show GitHub.Data.Teams.CreateTeamMembership
instance GHC.Generics.Generic GitHub.Data.Teams.TeamMemberRole
instance Data.Data.Data GitHub.Data.Teams.TeamMemberRole
instance GHC.Enum.Bounded GitHub.Data.Teams.TeamMemberRole
instance GHC.Enum.Enum GitHub.Data.Teams.TeamMemberRole
instance GHC.Classes.Ord GitHub.Data.Teams.TeamMemberRole
instance GHC.Classes.Eq GitHub.Data.Teams.TeamMemberRole
instance GHC.Show.Show GitHub.Data.Teams.TeamMemberRole
instance Control.DeepSeq.NFData GitHub.Data.Teams.CreateTeamMembership
instance Data.Binary.Class.Binary GitHub.Data.Teams.CreateTeamMembership
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.CreateTeamMembership
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.CreateTeamMembership
instance Control.DeepSeq.NFData GitHub.Data.Teams.TeamMembership
instance Data.Binary.Class.Binary GitHub.Data.Teams.TeamMembership
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.TeamMembership
instance Control.DeepSeq.NFData GitHub.Data.Teams.ReqState
instance Data.Binary.Class.Binary GitHub.Data.Teams.ReqState
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.ReqState
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.ReqState
instance Control.DeepSeq.NFData GitHub.Data.Teams.Role
instance Data.Binary.Class.Binary GitHub.Data.Teams.Role
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.Role
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.Role
instance Control.DeepSeq.NFData GitHub.Data.Teams.EditTeam
instance Data.Binary.Class.Binary GitHub.Data.Teams.EditTeam
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.EditTeam
instance Control.DeepSeq.NFData GitHub.Data.Teams.CreateTeam
instance Data.Binary.Class.Binary GitHub.Data.Teams.CreateTeam
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.CreateTeam
instance Control.DeepSeq.NFData GitHub.Data.Teams.SimpleTeam
instance Data.Binary.Class.Binary GitHub.Data.Teams.SimpleTeam
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.SimpleTeam
instance Control.DeepSeq.NFData GitHub.Data.Teams.Team
instance Data.Binary.Class.Binary GitHub.Data.Teams.Team
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.Team
instance Control.DeepSeq.NFData GitHub.Data.Teams.AddTeamRepoPermission
instance Data.Binary.Class.Binary GitHub.Data.Teams.AddTeamRepoPermission
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.AddTeamRepoPermission
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.AddTeamRepoPermission
instance Control.DeepSeq.NFData GitHub.Data.Teams.Permission
instance Data.Binary.Class.Binary GitHub.Data.Teams.Permission
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.Permission
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.Permission
instance Control.DeepSeq.NFData GitHub.Data.Teams.Privacy
instance Data.Binary.Class.Binary GitHub.Data.Teams.Privacy
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Teams.Privacy
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Teams.Privacy

module GitHub.Data.Search
data SearchResult' entities
SearchResult :: !Int -> !entities -> SearchResult' entities
[searchResultTotalCount] :: SearchResult' entities -> !Int
[searchResultResults] :: SearchResult' entities -> !entities
type SearchResult entity = SearchResult' (Vector entity)
data Code
Code :: !Text -> !Text -> !Text -> !URL -> !URL -> !URL -> !CodeSearchRepo -> Code
[codeName] :: Code -> !Text
[codePath] :: Code -> !Text
[codeSha] :: Code -> !Text
[codeUrl] :: Code -> !URL
[codeGitUrl] :: Code -> !URL
[codeHtmlUrl] :: Code -> !URL
[codeRepo] :: Code -> !CodeSearchRepo
instance GHC.Generics.Generic (GitHub.Data.Search.SearchResult' entities)
instance GHC.Classes.Ord entities => GHC.Classes.Ord (GitHub.Data.Search.SearchResult' entities)
instance GHC.Classes.Eq entities => GHC.Classes.Eq (GitHub.Data.Search.SearchResult' entities)
instance Data.Data.Data entities => Data.Data.Data (GitHub.Data.Search.SearchResult' entities)
instance GHC.Show.Show entities => GHC.Show.Show (GitHub.Data.Search.SearchResult' entities)
instance GHC.Generics.Generic GitHub.Data.Search.Code
instance GHC.Classes.Ord GitHub.Data.Search.Code
instance GHC.Classes.Eq GitHub.Data.Search.Code
instance Data.Data.Data GitHub.Data.Search.Code
instance GHC.Show.Show GitHub.Data.Search.Code
instance Control.DeepSeq.NFData GitHub.Data.Search.Code
instance Data.Binary.Class.Binary GitHub.Data.Search.Code
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Search.Code
instance Control.DeepSeq.NFData entities => Control.DeepSeq.NFData (GitHub.Data.Search.SearchResult' entities)
instance Data.Binary.Class.Binary entities => Data.Binary.Class.Binary (GitHub.Data.Search.SearchResult' entities)
instance (GHC.Base.Monoid entities, Data.Aeson.Types.FromJSON.FromJSON entities) => Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Search.SearchResult' entities)
instance GHC.Base.Semigroup res => GHC.Base.Semigroup (GitHub.Data.Search.SearchResult' res)
instance Data.Foldable.Foldable GitHub.Data.Search.SearchResult'

module GitHub.Data.Releases
data Release
Release :: !URL -> !URL -> !URL -> !URL -> !URL -> !URL -> !Id Release -> !Text -> !Text -> !Text -> !Text -> !Bool -> !Bool -> !UTCTime -> !Maybe UTCTime -> !SimpleUser -> !Vector ReleaseAsset -> Release
[releaseUrl] :: Release -> !URL
[releaseHtmlUrl] :: Release -> !URL
[releaseAssetsurl] :: Release -> !URL
[releaseUploadUrl] :: Release -> !URL
[releaseTarballUrl] :: Release -> !URL
[releaseZipballUrl] :: Release -> !URL
[releaseId] :: Release -> !Id Release
[releaseTagName] :: Release -> !Text
[releaseTargetCommitish] :: Release -> !Text
[releaseName] :: Release -> !Text
[releaseBody] :: Release -> !Text
[releaseDraft] :: Release -> !Bool
[releasePrerelease] :: Release -> !Bool
[releaseCreatedAt] :: Release -> !UTCTime
[releasePublishedAt] :: Release -> !Maybe UTCTime
[releaseAuthor] :: Release -> !SimpleUser
[releaseAssets] :: Release -> !Vector ReleaseAsset
data ReleaseAsset
ReleaseAsset :: !URL -> !Text -> !Id ReleaseAsset -> !Text -> !Maybe Text -> !Text -> !Text -> !Int -> !Int -> !UTCTime -> !UTCTime -> !SimpleUser -> ReleaseAsset
[releaseAssetUrl] :: ReleaseAsset -> !URL
[releaseAssetBrowserDownloadUrl] :: ReleaseAsset -> !Text
[releaseAssetId] :: ReleaseAsset -> !Id ReleaseAsset
[releaseAssetName] :: ReleaseAsset -> !Text
[releaseAssetLabel] :: ReleaseAsset -> !Maybe Text
[releaseAssetState] :: ReleaseAsset -> !Text
[releaseAssetContentType] :: ReleaseAsset -> !Text
[releaseAssetSize] :: ReleaseAsset -> !Int
[releaseAssetDownloadCount] :: ReleaseAsset -> !Int
[releaseAssetCreatedAt] :: ReleaseAsset -> !UTCTime
[releaseAssetUpdatedAt] :: ReleaseAsset -> !UTCTime
[releaseAssetUploader] :: ReleaseAsset -> !SimpleUser
instance GHC.Generics.Generic GitHub.Data.Releases.ReleaseAsset
instance GHC.Classes.Ord GitHub.Data.Releases.ReleaseAsset
instance GHC.Classes.Eq GitHub.Data.Releases.ReleaseAsset
instance Data.Data.Data GitHub.Data.Releases.ReleaseAsset
instance GHC.Show.Show GitHub.Data.Releases.ReleaseAsset
instance GHC.Generics.Generic GitHub.Data.Releases.Release
instance GHC.Classes.Ord GitHub.Data.Releases.Release
instance GHC.Classes.Eq GitHub.Data.Releases.Release
instance Data.Data.Data GitHub.Data.Releases.Release
instance GHC.Show.Show GitHub.Data.Releases.Release
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Releases.Release
instance Control.DeepSeq.NFData GitHub.Data.Releases.Release
instance Data.Binary.Class.Binary GitHub.Data.Releases.Release
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Releases.ReleaseAsset
instance Control.DeepSeq.NFData GitHub.Data.Releases.ReleaseAsset
instance Data.Binary.Class.Binary GitHub.Data.Releases.ReleaseAsset

module GitHub.Data.Milestone
data Milestone
Milestone :: !SimpleUser -> !Maybe UTCTime -> !Int -> !Id Milestone -> !Int -> !Maybe Text -> !Text -> !URL -> !UTCTime -> !Text -> Milestone
[milestoneCreator] :: Milestone -> !SimpleUser
[milestoneDueOn] :: Milestone -> !Maybe UTCTime
[milestoneOpenIssues] :: Milestone -> !Int
[milestoneNumber] :: Milestone -> !Id Milestone
[milestoneClosedIssues] :: Milestone -> !Int
[milestoneDescription] :: Milestone -> !Maybe Text
[milestoneTitle] :: Milestone -> !Text
[milestoneUrl] :: Milestone -> !URL
[milestoneCreatedAt] :: Milestone -> !UTCTime
[milestoneState] :: Milestone -> !Text
data NewMilestone
NewMilestone :: !Text -> !Text -> !Maybe Text -> !Maybe UTCTime -> NewMilestone
[newMilestoneTitle] :: NewMilestone -> !Text
[newMilestoneState] :: NewMilestone -> !Text
[newMilestoneDescription] :: NewMilestone -> !Maybe Text
[newMilestoneDueOn] :: NewMilestone -> !Maybe UTCTime
data UpdateMilestone
UpdateMilestone :: !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe UTCTime -> UpdateMilestone
[updateMilestoneTitle] :: UpdateMilestone -> !Maybe Text
[updateMilestoneState] :: UpdateMilestone -> !Maybe Text
[updateMilestoneDescription] :: UpdateMilestone -> !Maybe Text
[updateMilestoneDueOn] :: UpdateMilestone -> !Maybe UTCTime
instance GHC.Generics.Generic GitHub.Data.Milestone.Milestone
instance GHC.Classes.Ord GitHub.Data.Milestone.Milestone
instance GHC.Classes.Eq GitHub.Data.Milestone.Milestone
instance Data.Data.Data GitHub.Data.Milestone.Milestone
instance GHC.Show.Show GitHub.Data.Milestone.Milestone
instance GHC.Generics.Generic GitHub.Data.Milestone.NewMilestone
instance GHC.Classes.Ord GitHub.Data.Milestone.NewMilestone
instance GHC.Classes.Eq GitHub.Data.Milestone.NewMilestone
instance Data.Data.Data GitHub.Data.Milestone.NewMilestone
instance GHC.Show.Show GitHub.Data.Milestone.NewMilestone
instance GHC.Generics.Generic GitHub.Data.Milestone.UpdateMilestone
instance GHC.Classes.Ord GitHub.Data.Milestone.UpdateMilestone
instance GHC.Classes.Eq GitHub.Data.Milestone.UpdateMilestone
instance Data.Data.Data GitHub.Data.Milestone.UpdateMilestone
instance GHC.Show.Show GitHub.Data.Milestone.UpdateMilestone
instance Control.DeepSeq.NFData GitHub.Data.Milestone.UpdateMilestone
instance Data.Binary.Class.Binary GitHub.Data.Milestone.UpdateMilestone
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Milestone.UpdateMilestone
instance Control.DeepSeq.NFData GitHub.Data.Milestone.NewMilestone
instance Data.Binary.Class.Binary GitHub.Data.Milestone.NewMilestone
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Milestone.NewMilestone
instance Control.DeepSeq.NFData GitHub.Data.Milestone.Milestone
instance Data.Binary.Class.Binary GitHub.Data.Milestone.Milestone
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Milestone.Milestone


-- | Module with modifiers for pull requests' and issues' listings.
module GitHub.Data.Options
stateOpen :: HasState mod => mod
stateClosed :: HasState mod => mod
stateAll :: HasState mod => mod
sortAscending :: HasDirection mod => mod
sortDescending :: HasDirection mod => mod
sortByCreated :: HasCreatedUpdated mod => mod
sortByUpdated :: HasCreatedUpdated mod => mod

-- | See <a>https://developer.github.com/v3/pulls/#parameters</a>.
data PullRequestMod
prModToQueryString :: PullRequestMod -> QueryString
optionsBase :: Text -> PullRequestMod
optionsNoBase :: PullRequestMod
optionsHead :: Text -> PullRequestMod
optionsNoHead :: PullRequestMod
sortByPopularity :: PullRequestMod
sortByLongRunning :: PullRequestMod

-- | See
--   <a>https://docs.github.com/en/rest/reference/issues#list-issues-assigned-to-the-authenticated-user--parameters</a>.
data IssueMod
issueModToQueryString :: IssueMod -> QueryString
sortByComments :: HasComments mod => mod
optionsLabels :: (HasLabels mod, Foldable f) => f (Name IssueLabel) -> mod
optionsSince :: HasSince mod => UTCTime -> mod
optionsSinceAll :: HasSince mod => mod
optionsAssignedIssues :: IssueMod
optionsCreatedIssues :: IssueMod
optionsMentionedIssues :: IssueMod
optionsSubscribedIssues :: IssueMod
optionsAllIssues :: IssueMod

-- | See <a>https://developer.github.com/v3/issues/#parameters-1</a>.
data IssueRepoMod
issueRepoModToQueryString :: IssueRepoMod -> QueryString

-- | Issues created by a certain user.
optionsCreator :: Name User -> IssueRepoMod

-- | Issue mentioning the given user.
optionsMentioned :: Name User -> IssueRepoMod

-- | Don't care about milestones (default).
--   
--   <a>optionsAnyMilestone</a> means there should be some milestone, but
--   it can be any.
--   
--   See
--   <a>https://developer.github.com/v3/issues/#list-issues-for-a-repository</a>
optionsIrrelevantMilestone :: IssueRepoMod

-- | Issues that have a milestone.
optionsAnyMilestone :: IssueRepoMod

-- | Issues that have no milestone.
optionsNoMilestone :: IssueRepoMod

-- | Issues with the given milestone.
optionsMilestone :: Id Milestone -> IssueRepoMod

-- | Issues with or without assignee (default).
optionsIrrelevantAssignee :: IssueRepoMod

-- | Issues assigned to someone.
optionsAnyAssignee :: IssueRepoMod

-- | Issues assigned to nobody.
optionsNoAssignee :: IssueRepoMod

-- | Issues assigned to a specific user.
optionsAssignee :: Name User -> IssueRepoMod

-- | See
--   <a>https://docs.github.com/en/rest/actions/artifacts#list-artifacts-for-a-repository</a>.
data ArtifactMod
artifactModToQueryString :: ArtifactMod -> QueryString

-- | Filters artifacts by exact match on their name field.
optionsArtifactName :: Text -> ArtifactMod

-- | See
--   <a>https://docs.github.com/en/rest/actions/cache#list-github-actions-caches-for-a-repository</a>.
data CacheMod
cacheModToQueryString :: CacheMod -> QueryString
optionsRef :: Text -> CacheMod
optionsNoRef :: CacheMod
optionsKey :: Text -> CacheMod
optionsNoKey :: CacheMod
optionsDirectionAsc :: CacheMod
optionsDirectionDesc :: CacheMod
sortByCreatedAt :: CacheMod
sortByLastAccessedAt :: CacheMod
sortBySizeInBytes :: CacheMod

-- | See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#list-workflow-runs-for-a-repository</a>.
data WorkflowRunMod
workflowRunModToQueryString :: WorkflowRunMod -> QueryString
optionsWorkflowRunActor :: Text -> WorkflowRunMod
optionsWorkflowRunBranch :: Text -> WorkflowRunMod
optionsWorkflowRunEvent :: Text -> WorkflowRunMod
optionsWorkflowRunStatus :: Text -> WorkflowRunMod
optionsWorkflowRunCreated :: Text -> WorkflowRunMod
optionsWorkflowRunHeadSha :: Text -> WorkflowRunMod

-- | <a>Issue</a> or <a>PullRequest</a> state
data IssueState
StateOpen :: IssueState
StateClosed :: IssueState

-- | <a>Issue</a> state reason
data IssueStateReason
StateReasonCompleted :: IssueStateReason
StateReasonNotPlanned :: IssueStateReason
StateReasonReopened :: IssueStateReason

-- | <a>PullRequest</a> mergeable_state
data MergeableState
StateUnknown :: MergeableState
StateClean :: MergeableState
StateDirty :: MergeableState
StateUnstable :: MergeableState
StateBlocked :: MergeableState
StateBehind :: MergeableState
StateDraft :: MergeableState
class HasState mod
class HasDirection mod
class HasCreatedUpdated mod
class HasComments mod
class HasLabels mod
class HasSince mod
instance Data.Data.Data GitHub.Data.Options.IssueState
instance GHC.Generics.Generic GitHub.Data.Options.IssueState
instance GHC.Enum.Bounded GitHub.Data.Options.IssueState
instance GHC.Enum.Enum GitHub.Data.Options.IssueState
instance GHC.Show.Show GitHub.Data.Options.IssueState
instance GHC.Classes.Ord GitHub.Data.Options.IssueState
instance GHC.Classes.Eq GitHub.Data.Options.IssueState
instance Data.Data.Data GitHub.Data.Options.IssueStateReason
instance GHC.Generics.Generic GitHub.Data.Options.IssueStateReason
instance GHC.Enum.Bounded GitHub.Data.Options.IssueStateReason
instance GHC.Enum.Enum GitHub.Data.Options.IssueStateReason
instance GHC.Show.Show GitHub.Data.Options.IssueStateReason
instance GHC.Classes.Ord GitHub.Data.Options.IssueStateReason
instance GHC.Classes.Eq GitHub.Data.Options.IssueStateReason
instance Data.Data.Data GitHub.Data.Options.MergeableState
instance GHC.Generics.Generic GitHub.Data.Options.MergeableState
instance GHC.Enum.Bounded GitHub.Data.Options.MergeableState
instance GHC.Enum.Enum GitHub.Data.Options.MergeableState
instance GHC.Show.Show GitHub.Data.Options.MergeableState
instance GHC.Classes.Ord GitHub.Data.Options.MergeableState
instance GHC.Classes.Eq GitHub.Data.Options.MergeableState
instance Data.Data.Data GitHub.Data.Options.SortDirection
instance GHC.Generics.Generic GitHub.Data.Options.SortDirection
instance GHC.Enum.Bounded GitHub.Data.Options.SortDirection
instance GHC.Enum.Enum GitHub.Data.Options.SortDirection
instance GHC.Show.Show GitHub.Data.Options.SortDirection
instance GHC.Classes.Ord GitHub.Data.Options.SortDirection
instance GHC.Classes.Eq GitHub.Data.Options.SortDirection
instance Data.Data.Data GitHub.Data.Options.SortPR
instance GHC.Generics.Generic GitHub.Data.Options.SortPR
instance GHC.Enum.Bounded GitHub.Data.Options.SortPR
instance GHC.Enum.Enum GitHub.Data.Options.SortPR
instance GHC.Show.Show GitHub.Data.Options.SortPR
instance GHC.Classes.Ord GitHub.Data.Options.SortPR
instance GHC.Classes.Eq GitHub.Data.Options.SortPR
instance Data.Data.Data GitHub.Data.Options.IssueFilter
instance GHC.Generics.Generic GitHub.Data.Options.IssueFilter
instance GHC.Enum.Bounded GitHub.Data.Options.IssueFilter
instance GHC.Enum.Enum GitHub.Data.Options.IssueFilter
instance GHC.Show.Show GitHub.Data.Options.IssueFilter
instance GHC.Classes.Ord GitHub.Data.Options.IssueFilter
instance GHC.Classes.Eq GitHub.Data.Options.IssueFilter
instance Data.Data.Data GitHub.Data.Options.SortIssue
instance GHC.Generics.Generic GitHub.Data.Options.SortIssue
instance GHC.Enum.Bounded GitHub.Data.Options.SortIssue
instance GHC.Enum.Enum GitHub.Data.Options.SortIssue
instance GHC.Show.Show GitHub.Data.Options.SortIssue
instance GHC.Classes.Ord GitHub.Data.Options.SortIssue
instance GHC.Classes.Eq GitHub.Data.Options.SortIssue
instance Data.Data.Data a => Data.Data.Data (GitHub.Data.Options.FilterBy a)
instance GHC.Generics.Generic (GitHub.Data.Options.FilterBy a)
instance GHC.Show.Show a => GHC.Show.Show (GitHub.Data.Options.FilterBy a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (GitHub.Data.Options.FilterBy a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (GitHub.Data.Options.FilterBy a)
instance Data.Data.Data GitHub.Data.Options.SortCache
instance GHC.Generics.Generic GitHub.Data.Options.SortCache
instance GHC.Enum.Bounded GitHub.Data.Options.SortCache
instance GHC.Enum.Enum GitHub.Data.Options.SortCache
instance GHC.Show.Show GitHub.Data.Options.SortCache
instance GHC.Classes.Ord GitHub.Data.Options.SortCache
instance GHC.Classes.Eq GitHub.Data.Options.SortCache
instance Data.Data.Data GitHub.Data.Options.PullRequestOptions
instance GHC.Generics.Generic GitHub.Data.Options.PullRequestOptions
instance GHC.Show.Show GitHub.Data.Options.PullRequestOptions
instance GHC.Classes.Ord GitHub.Data.Options.PullRequestOptions
instance GHC.Classes.Eq GitHub.Data.Options.PullRequestOptions
instance Data.Data.Data GitHub.Data.Options.IssueOptions
instance GHC.Generics.Generic GitHub.Data.Options.IssueOptions
instance GHC.Show.Show GitHub.Data.Options.IssueOptions
instance GHC.Classes.Ord GitHub.Data.Options.IssueOptions
instance GHC.Classes.Eq GitHub.Data.Options.IssueOptions
instance Data.Data.Data GitHub.Data.Options.IssueRepoOptions
instance GHC.Generics.Generic GitHub.Data.Options.IssueRepoOptions
instance GHC.Show.Show GitHub.Data.Options.IssueRepoOptions
instance GHC.Classes.Ord GitHub.Data.Options.IssueRepoOptions
instance GHC.Classes.Eq GitHub.Data.Options.IssueRepoOptions
instance Data.Data.Data GitHub.Data.Options.ArtifactOptions
instance GHC.Generics.Generic GitHub.Data.Options.ArtifactOptions
instance GHC.Show.Show GitHub.Data.Options.ArtifactOptions
instance GHC.Classes.Ord GitHub.Data.Options.ArtifactOptions
instance GHC.Classes.Eq GitHub.Data.Options.ArtifactOptions
instance Data.Data.Data GitHub.Data.Options.CacheOptions
instance GHC.Generics.Generic GitHub.Data.Options.CacheOptions
instance GHC.Show.Show GitHub.Data.Options.CacheOptions
instance GHC.Classes.Ord GitHub.Data.Options.CacheOptions
instance GHC.Classes.Eq GitHub.Data.Options.CacheOptions
instance Data.Data.Data GitHub.Data.Options.WorkflowRunOptions
instance GHC.Generics.Generic GitHub.Data.Options.WorkflowRunOptions
instance GHC.Show.Show GitHub.Data.Options.WorkflowRunOptions
instance GHC.Classes.Ord GitHub.Data.Options.WorkflowRunOptions
instance GHC.Classes.Eq GitHub.Data.Options.WorkflowRunOptions
instance GHC.Base.Semigroup GitHub.Data.Options.WorkflowRunMod
instance GHC.Base.Monoid GitHub.Data.Options.WorkflowRunMod
instance GHC.Base.Semigroup GitHub.Data.Options.CacheMod
instance GHC.Base.Monoid GitHub.Data.Options.CacheMod
instance GHC.Base.Semigroup GitHub.Data.Options.ArtifactMod
instance GHC.Base.Monoid GitHub.Data.Options.ArtifactMod
instance GitHub.Data.Options.HasState GitHub.Data.Options.IssueRepoMod
instance GitHub.Data.Options.HasDirection GitHub.Data.Options.IssueRepoMod
instance GitHub.Data.Options.HasCreatedUpdated GitHub.Data.Options.IssueRepoMod
instance GitHub.Data.Options.HasComments GitHub.Data.Options.IssueRepoMod
instance GitHub.Data.Options.HasLabels GitHub.Data.Options.IssueRepoMod
instance GitHub.Data.Options.HasSince GitHub.Data.Options.IssueRepoMod
instance GHC.Base.Semigroup GitHub.Data.Options.IssueRepoMod
instance GHC.Base.Monoid GitHub.Data.Options.IssueRepoMod
instance GitHub.Data.Options.HasSince GitHub.Data.Options.IssueMod
instance GitHub.Data.Options.HasLabels GitHub.Data.Options.IssueMod
instance GitHub.Data.Options.HasComments GitHub.Data.Options.IssueMod
instance GitHub.Data.Options.HasState GitHub.Data.Options.IssueMod
instance GitHub.Data.Options.HasDirection GitHub.Data.Options.IssueMod
instance GitHub.Data.Options.HasCreatedUpdated GitHub.Data.Options.IssueMod
instance GHC.Base.Semigroup GitHub.Data.Options.IssueMod
instance GHC.Base.Monoid GitHub.Data.Options.IssueMod
instance GitHub.Data.Options.HasState GitHub.Data.Options.PullRequestMod
instance GitHub.Data.Options.HasDirection GitHub.Data.Options.PullRequestMod
instance GitHub.Data.Options.HasCreatedUpdated GitHub.Data.Options.PullRequestMod
instance GHC.Base.Semigroup GitHub.Data.Options.PullRequestMod
instance GHC.Base.Monoid GitHub.Data.Options.PullRequestMod
instance Control.DeepSeq.NFData GitHub.Data.Options.SortCache
instance Data.Binary.Class.Binary GitHub.Data.Options.SortCache
instance Control.DeepSeq.NFData GitHub.Data.Options.SortIssue
instance Data.Binary.Class.Binary GitHub.Data.Options.SortIssue
instance Control.DeepSeq.NFData GitHub.Data.Options.IssueFilter
instance Data.Binary.Class.Binary GitHub.Data.Options.IssueFilter
instance Control.DeepSeq.NFData GitHub.Data.Options.SortPR
instance Data.Binary.Class.Binary GitHub.Data.Options.SortPR
instance Control.DeepSeq.NFData GitHub.Data.Options.SortDirection
instance Data.Binary.Class.Binary GitHub.Data.Options.SortDirection
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Options.MergeableState
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Options.MergeableState
instance Control.DeepSeq.NFData GitHub.Data.Options.MergeableState
instance Data.Binary.Class.Binary GitHub.Data.Options.MergeableState
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Options.IssueStateReason
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Options.IssueStateReason
instance Control.DeepSeq.NFData GitHub.Data.Options.IssueStateReason
instance Data.Binary.Class.Binary GitHub.Data.Options.IssueStateReason
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Options.IssueState
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Options.IssueState
instance Control.DeepSeq.NFData GitHub.Data.Options.IssueState
instance Data.Binary.Class.Binary GitHub.Data.Options.IssueState

module GitHub.Data.PullRequests
data SimplePullRequest
SimplePullRequest :: !Maybe UTCTime -> !UTCTime -> !SimpleUser -> !URL -> !IssueState -> !IssueNumber -> !URL -> !UTCTime -> !Maybe Text -> Vector SimpleUser -> Vector SimpleUser -> Vector SimpleTeam -> !URL -> !URL -> !URL -> !PullRequestLinks -> !Maybe UTCTime -> !Text -> !Id PullRequest -> SimplePullRequest
[simplePullRequestClosedAt] :: SimplePullRequest -> !Maybe UTCTime
[simplePullRequestCreatedAt] :: SimplePullRequest -> !UTCTime
[simplePullRequestUser] :: SimplePullRequest -> !SimpleUser
[simplePullRequestPatchUrl] :: SimplePullRequest -> !URL
[simplePullRequestState] :: SimplePullRequest -> !IssueState
[simplePullRequestNumber] :: SimplePullRequest -> !IssueNumber
[simplePullRequestHtmlUrl] :: SimplePullRequest -> !URL
[simplePullRequestUpdatedAt] :: SimplePullRequest -> !UTCTime
[simplePullRequestBody] :: SimplePullRequest -> !Maybe Text
[simplePullRequestAssignees] :: SimplePullRequest -> Vector SimpleUser
[simplePullRequestRequestedReviewers] :: SimplePullRequest -> Vector SimpleUser
[simplePullRequestRequestedTeamReviewers] :: SimplePullRequest -> Vector SimpleTeam
[simplePullRequestIssueUrl] :: SimplePullRequest -> !URL
[simplePullRequestDiffUrl] :: SimplePullRequest -> !URL
[simplePullRequestUrl] :: SimplePullRequest -> !URL
[simplePullRequestLinks] :: SimplePullRequest -> !PullRequestLinks
[simplePullRequestMergedAt] :: SimplePullRequest -> !Maybe UTCTime
[simplePullRequestTitle] :: SimplePullRequest -> !Text
[simplePullRequestId] :: SimplePullRequest -> !Id PullRequest
data PullRequest
PullRequest :: !Maybe UTCTime -> !UTCTime -> !SimpleUser -> !URL -> !IssueState -> !IssueNumber -> !URL -> !UTCTime -> !Maybe Text -> Vector SimpleUser -> Vector SimpleUser -> Vector SimpleTeam -> !URL -> !URL -> !URL -> !PullRequestLinks -> !Maybe UTCTime -> !Text -> !Id PullRequest -> !Maybe SimpleUser -> !Int -> !PullRequestCommit -> !Count -> !Count -> !Count -> !Count -> !PullRequestCommit -> !Count -> !Bool -> !Maybe Bool -> !MergeableState -> PullRequest
[pullRequestClosedAt] :: PullRequest -> !Maybe UTCTime
[pullRequestCreatedAt] :: PullRequest -> !UTCTime
[pullRequestUser] :: PullRequest -> !SimpleUser
[pullRequestPatchUrl] :: PullRequest -> !URL
[pullRequestState] :: PullRequest -> !IssueState
[pullRequestNumber] :: PullRequest -> !IssueNumber
[pullRequestHtmlUrl] :: PullRequest -> !URL
[pullRequestUpdatedAt] :: PullRequest -> !UTCTime
[pullRequestBody] :: PullRequest -> !Maybe Text
[pullRequestAssignees] :: PullRequest -> Vector SimpleUser
[pullRequestRequestedReviewers] :: PullRequest -> Vector SimpleUser
[pullRequestRequestedTeamReviewers] :: PullRequest -> Vector SimpleTeam
[pullRequestIssueUrl] :: PullRequest -> !URL
[pullRequestDiffUrl] :: PullRequest -> !URL
[pullRequestUrl] :: PullRequest -> !URL
[pullRequestLinks] :: PullRequest -> !PullRequestLinks
[pullRequestMergedAt] :: PullRequest -> !Maybe UTCTime
[pullRequestTitle] :: PullRequest -> !Text
[pullRequestId] :: PullRequest -> !Id PullRequest
[pullRequestMergedBy] :: PullRequest -> !Maybe SimpleUser
[pullRequestChangedFiles] :: PullRequest -> !Int
[pullRequestHead] :: PullRequest -> !PullRequestCommit
[pullRequestComments] :: PullRequest -> !Count
[pullRequestDeletions] :: PullRequest -> !Count
[pullRequestAdditions] :: PullRequest -> !Count
[pullRequestReviewComments] :: PullRequest -> !Count
[pullRequestBase] :: PullRequest -> !PullRequestCommit
[pullRequestCommits] :: PullRequest -> !Count
[pullRequestMerged] :: PullRequest -> !Bool
[pullRequestMergeable] :: PullRequest -> !Maybe Bool
[pullRequestMergeableState] :: PullRequest -> !MergeableState
data EditPullRequest
EditPullRequest :: !Maybe Text -> !Maybe Text -> !Maybe IssueState -> !Maybe Text -> !Maybe Bool -> EditPullRequest
[editPullRequestTitle] :: EditPullRequest -> !Maybe Text
[editPullRequestBody] :: EditPullRequest -> !Maybe Text
[editPullRequestState] :: EditPullRequest -> !Maybe IssueState
[editPullRequestBase] :: EditPullRequest -> !Maybe Text
[editPullRequestMaintainerCanModify] :: EditPullRequest -> !Maybe Bool
data CreatePullRequest
CreatePullRequest :: !Text -> !Text -> !Text -> !Text -> CreatePullRequest
[createPullRequestTitle] :: CreatePullRequest -> !Text
[createPullRequestBody] :: CreatePullRequest -> !Text
[createPullRequestHead] :: CreatePullRequest -> !Text
[createPullRequestBase] :: CreatePullRequest -> !Text
CreatePullRequestIssue :: !Int -> !Text -> !Text -> CreatePullRequest
[createPullRequestIssueNum] :: CreatePullRequest -> !Int
[createPullRequestHead] :: CreatePullRequest -> !Text
[createPullRequestBase] :: CreatePullRequest -> !Text
data PullRequestLinks
PullRequestLinks :: !URL -> !URL -> !URL -> !URL -> PullRequestLinks
[pullRequestLinksReviewComments] :: PullRequestLinks -> !URL
[pullRequestLinksComments] :: PullRequestLinks -> !URL
[pullRequestLinksHtml] :: PullRequestLinks -> !URL
[pullRequestLinksSelf] :: PullRequestLinks -> !URL
data PullRequestCommit
PullRequestCommit :: !Text -> !Text -> !Text -> !SimpleUser -> !Maybe Repo -> PullRequestCommit
[pullRequestCommitLabel] :: PullRequestCommit -> !Text
[pullRequestCommitRef] :: PullRequestCommit -> !Text
[pullRequestCommitSha] :: PullRequestCommit -> !Text
[pullRequestCommitUser] :: PullRequestCommit -> !SimpleUser
[pullRequestCommitRepo] :: PullRequestCommit -> !Maybe Repo
data PullRequestEvent
PullRequestEvent :: !PullRequestEventType -> !Int -> !PullRequest -> !Repo -> !SimpleUser -> PullRequestEvent
[pullRequestEventAction] :: PullRequestEvent -> !PullRequestEventType
[pullRequestEventNumber] :: PullRequestEvent -> !Int
[pullRequestEventPullRequest] :: PullRequestEvent -> !PullRequest
[pullRequestRepository] :: PullRequestEvent -> !Repo
[pullRequestSender] :: PullRequestEvent -> !SimpleUser
data PullRequestEventType
PullRequestOpened :: PullRequestEventType
PullRequestClosed :: PullRequestEventType
PullRequestSynchronized :: PullRequestEventType
PullRequestReopened :: PullRequestEventType
PullRequestAssigned :: PullRequestEventType
PullRequestUnassigned :: PullRequestEventType
PullRequestLabeled :: PullRequestEventType
PullRequestUnlabeled :: PullRequestEventType
PullRequestReviewRequested :: PullRequestEventType
PullRequestReviewRequestRemoved :: PullRequestEventType
PullRequestEdited :: PullRequestEventType
data PullRequestReference
PullRequestReference :: !Maybe URL -> !Maybe URL -> !Maybe URL -> PullRequestReference
[pullRequestReferenceHtmlUrl] :: PullRequestReference -> !Maybe URL
[pullRequestReferencePatchUrl] :: PullRequestReference -> !Maybe URL
[pullRequestReferenceDiffUrl] :: PullRequestReference -> !Maybe URL

-- | Pull request merge results
data MergeResult
MergeSuccessful :: MergeResult
MergeCannotPerform :: MergeResult
MergeConflict :: MergeResult
instance GHC.Generics.Generic GitHub.Data.PullRequests.EditPullRequest
instance GHC.Show.Show GitHub.Data.PullRequests.EditPullRequest
instance GHC.Generics.Generic GitHub.Data.PullRequests.CreatePullRequest
instance GHC.Show.Show GitHub.Data.PullRequests.CreatePullRequest
instance GHC.Generics.Generic GitHub.Data.PullRequests.PullRequestLinks
instance GHC.Classes.Ord GitHub.Data.PullRequests.PullRequestLinks
instance GHC.Classes.Eq GitHub.Data.PullRequests.PullRequestLinks
instance Data.Data.Data GitHub.Data.PullRequests.PullRequestLinks
instance GHC.Show.Show GitHub.Data.PullRequests.PullRequestLinks
instance GHC.Generics.Generic GitHub.Data.PullRequests.PullRequestCommit
instance GHC.Classes.Ord GitHub.Data.PullRequests.PullRequestCommit
instance GHC.Classes.Eq GitHub.Data.PullRequests.PullRequestCommit
instance Data.Data.Data GitHub.Data.PullRequests.PullRequestCommit
instance GHC.Show.Show GitHub.Data.PullRequests.PullRequestCommit
instance GHC.Generics.Generic GitHub.Data.PullRequests.PullRequest
instance GHC.Classes.Ord GitHub.Data.PullRequests.PullRequest
instance GHC.Classes.Eq GitHub.Data.PullRequests.PullRequest
instance Data.Data.Data GitHub.Data.PullRequests.PullRequest
instance GHC.Show.Show GitHub.Data.PullRequests.PullRequest
instance GHC.Generics.Generic GitHub.Data.PullRequests.SimplePullRequest
instance GHC.Classes.Ord GitHub.Data.PullRequests.SimplePullRequest
instance GHC.Classes.Eq GitHub.Data.PullRequests.SimplePullRequest
instance Data.Data.Data GitHub.Data.PullRequests.SimplePullRequest
instance GHC.Show.Show GitHub.Data.PullRequests.SimplePullRequest
instance GHC.Generics.Generic GitHub.Data.PullRequests.PullRequestEventType
instance GHC.Classes.Ord GitHub.Data.PullRequests.PullRequestEventType
instance GHC.Classes.Eq GitHub.Data.PullRequests.PullRequestEventType
instance Data.Data.Data GitHub.Data.PullRequests.PullRequestEventType
instance GHC.Show.Show GitHub.Data.PullRequests.PullRequestEventType
instance GHC.Generics.Generic GitHub.Data.PullRequests.PullRequestEvent
instance GHC.Classes.Ord GitHub.Data.PullRequests.PullRequestEvent
instance GHC.Classes.Eq GitHub.Data.PullRequests.PullRequestEvent
instance Data.Data.Data GitHub.Data.PullRequests.PullRequestEvent
instance GHC.Show.Show GitHub.Data.PullRequests.PullRequestEvent
instance Data.Data.Data GitHub.Data.PullRequests.PullRequestReference
instance GHC.Generics.Generic GitHub.Data.PullRequests.PullRequestReference
instance GHC.Show.Show GitHub.Data.PullRequests.PullRequestReference
instance GHC.Classes.Ord GitHub.Data.PullRequests.PullRequestReference
instance GHC.Classes.Eq GitHub.Data.PullRequests.PullRequestReference
instance GHC.Generics.Generic GitHub.Data.PullRequests.MergeResult
instance GHC.Enum.Bounded GitHub.Data.PullRequests.MergeResult
instance GHC.Enum.Enum GitHub.Data.PullRequests.MergeResult
instance GHC.Show.Show GitHub.Data.PullRequests.MergeResult
instance GHC.Read.Read GitHub.Data.PullRequests.MergeResult
instance GHC.Classes.Ord GitHub.Data.PullRequests.MergeResult
instance GHC.Classes.Eq GitHub.Data.PullRequests.MergeResult
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PullRequests.PullRequestLinks
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.PullRequests.Href a)
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.PullRequestReference
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.PullRequestReference
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PullRequests.PullRequestReference
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.PullRequestEvent
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.PullRequestEvent
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PullRequests.PullRequestEvent
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.PullRequestEventType
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.PullRequestEventType
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PullRequests.PullRequestEventType
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.SimplePullRequest
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.SimplePullRequest
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PullRequests.SimplePullRequest
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.PullRequest
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.PullRequest
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PullRequests.PullRequest
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.PullRequestCommit
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.PullRequestCommit
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.PullRequests.PullRequestCommit
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.PullRequestLinks
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.PullRequestLinks
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.CreatePullRequest
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.CreatePullRequest
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.PullRequests.CreatePullRequest
instance Control.DeepSeq.NFData GitHub.Data.PullRequests.EditPullRequest
instance Data.Binary.Class.Binary GitHub.Data.PullRequests.EditPullRequest
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.PullRequests.EditPullRequest

module GitHub.Data.Issues
data Issue
Issue :: !Maybe UTCTime -> !UTCTime -> !URL -> !Maybe URL -> !Maybe SimpleUser -> !Vector IssueLabel -> !IssueNumber -> !Vector SimpleUser -> !SimpleUser -> !Text -> !Maybe PullRequestReference -> !URL -> !UTCTime -> !Maybe Text -> !IssueState -> !Id Issue -> !Int -> !Maybe Milestone -> !Maybe IssueStateReason -> Issue
[issueClosedAt] :: Issue -> !Maybe UTCTime
[issueUpdatedAt] :: Issue -> !UTCTime
[issueEventsUrl] :: Issue -> !URL
[issueHtmlUrl] :: Issue -> !Maybe URL
[issueClosedBy] :: Issue -> !Maybe SimpleUser
[issueLabels] :: Issue -> !Vector IssueLabel
[issueNumber] :: Issue -> !IssueNumber
[issueAssignees] :: Issue -> !Vector SimpleUser
[issueUser] :: Issue -> !SimpleUser
[issueTitle] :: Issue -> !Text
[issuePullRequest] :: Issue -> !Maybe PullRequestReference
[issueUrl] :: Issue -> !URL
[issueCreatedAt] :: Issue -> !UTCTime
[issueBody] :: Issue -> !Maybe Text
[issueState] :: Issue -> !IssueState
[issueId] :: Issue -> !Id Issue
[issueComments] :: Issue -> !Int
[issueMilestone] :: Issue -> !Maybe Milestone
[issueStateReason] :: Issue -> !Maybe IssueStateReason
data NewIssue
NewIssue :: !Text -> !Maybe Text -> !Vector (Name User) -> !Maybe (Id Milestone) -> !Maybe (Vector (Name IssueLabel)) -> NewIssue
[newIssueTitle] :: NewIssue -> !Text
[newIssueBody] :: NewIssue -> !Maybe Text
[newIssueAssignees] :: NewIssue -> !Vector (Name User)
[newIssueMilestone] :: NewIssue -> !Maybe (Id Milestone)
[newIssueLabels] :: NewIssue -> !Maybe (Vector (Name IssueLabel))
data EditIssue
EditIssue :: !Maybe Text -> !Maybe Text -> !Maybe (Vector (Name User)) -> !Maybe IssueState -> !Maybe (Id Milestone) -> !Maybe (Vector (Name IssueLabel)) -> EditIssue
[editIssueTitle] :: EditIssue -> !Maybe Text
[editIssueBody] :: EditIssue -> !Maybe Text
[editIssueAssignees] :: EditIssue -> !Maybe (Vector (Name User))
[editIssueState] :: EditIssue -> !Maybe IssueState
[editIssueMilestone] :: EditIssue -> !Maybe (Id Milestone)
[editIssueLabels] :: EditIssue -> !Maybe (Vector (Name IssueLabel))
data IssueComment
IssueComment :: !UTCTime -> !SimpleUser -> !URL -> !URL -> !UTCTime -> !Text -> !Int -> IssueComment
[issueCommentUpdatedAt] :: IssueComment -> !UTCTime
[issueCommentUser] :: IssueComment -> !SimpleUser
[issueCommentUrl] :: IssueComment -> !URL
[issueCommentHtmlUrl] :: IssueComment -> !URL
[issueCommentCreatedAt] :: IssueComment -> !UTCTime
[issueCommentBody] :: IssueComment -> !Text
[issueCommentId] :: IssueComment -> !Int

-- | See <a>https://developer.github.com/v3/issues/events/#events-1</a>
data EventType

-- | The actor was @mentioned in an issue body.
Mentioned :: EventType

-- | The actor subscribed to receive notifications for an issue.
Subscribed :: EventType

-- | The issue was unsubscribed from by the actor.
Unsubscribed :: EventType

-- | The issue was referenced from a commit message. The commit_id
--   attribute is the commit SHA1 of where that happened.
Referenced :: EventType

-- | The issue was merged by the actor. The commit_id attribute is the SHA1
--   of the HEAD commit that was merged.
Merged :: EventType

-- | The issue was assigned to the actor.
Assigned :: EventType

-- | The issue was closed by the actor. When the commit_id is present, it
--   identifies the commit that closed the issue using “closes / fixes #NN”
--   syntax.
Closed :: EventType

-- | The issue was reopened by the actor.
Reopened :: EventType

-- | The issue was unassigned to the actor
ActorUnassigned :: EventType

-- | A label was added to the issue.
Labeled :: EventType

-- | A label was removed from the issue.
Unlabeled :: EventType

-- | The issue was added to a milestone.
Milestoned :: EventType

-- | The issue was removed from a milestone.
Demilestoned :: EventType

-- | The issue title was changed.
Renamed :: EventType

-- | The issue was locked by the actor.
Locked :: EventType

-- | The issue was unlocked by the actor.
Unlocked :: EventType

-- | The pull request’s branch was deleted.
HeadRefDeleted :: EventType

-- | The pull request’s branch was restored.
HeadRefRestored :: EventType

-- | The actor requested review from the subject on this pull request.
ReviewRequested :: EventType

-- | The actor dismissed a review from the pull request.
ReviewDismissed :: EventType

-- | The actor removed the review request for the subject on this pull
--   request.
ReviewRequestRemoved :: EventType

-- | A user with write permissions marked an issue as a duplicate of
--   another issue or a pull request as a duplicate of another pull
--   request.
MarkedAsDuplicate :: EventType

-- | An issue that a user had previously marked as a duplicate of another
--   issue is no longer considered a duplicate, or a pull request that a
--   user had previously marked as a duplicate of another pull request is
--   no longer considered a duplicate.
UnmarkedAsDuplicate :: EventType

-- | The issue was added to a project board.
AddedToProject :: EventType

-- | The issue was moved between columns in a project board.
MovedColumnsInProject :: EventType

-- | The issue was removed from a project board.
RemovedFromProject :: EventType

-- | The issue was created by converting a note in a project board to an
--   issue.
ConvertedNoteToIssue :: EventType

-- | Issue event
data IssueEvent
IssueEvent :: !SimpleUser -> !EventType -> !Maybe Text -> !URL -> !UTCTime -> !Int -> !Maybe Issue -> !Maybe IssueLabel -> IssueEvent
[issueEventActor] :: IssueEvent -> !SimpleUser
[issueEventType] :: IssueEvent -> !EventType
[issueEventCommitId] :: IssueEvent -> !Maybe Text
[issueEventUrl] :: IssueEvent -> !URL
[issueEventCreatedAt] :: IssueEvent -> !UTCTime
[issueEventId] :: IssueEvent -> !Int
[issueEventIssue] :: IssueEvent -> !Maybe Issue
[issueEventLabel] :: IssueEvent -> !Maybe IssueLabel
instance GHC.Generics.Generic GitHub.Data.Issues.Issue
instance GHC.Classes.Ord GitHub.Data.Issues.Issue
instance GHC.Classes.Eq GitHub.Data.Issues.Issue
instance Data.Data.Data GitHub.Data.Issues.Issue
instance GHC.Show.Show GitHub.Data.Issues.Issue
instance GHC.Generics.Generic GitHub.Data.Issues.NewIssue
instance GHC.Classes.Ord GitHub.Data.Issues.NewIssue
instance GHC.Classes.Eq GitHub.Data.Issues.NewIssue
instance Data.Data.Data GitHub.Data.Issues.NewIssue
instance GHC.Show.Show GitHub.Data.Issues.NewIssue
instance GHC.Generics.Generic GitHub.Data.Issues.EditIssue
instance GHC.Classes.Ord GitHub.Data.Issues.EditIssue
instance GHC.Classes.Eq GitHub.Data.Issues.EditIssue
instance Data.Data.Data GitHub.Data.Issues.EditIssue
instance GHC.Show.Show GitHub.Data.Issues.EditIssue
instance GHC.Generics.Generic GitHub.Data.Issues.IssueComment
instance GHC.Classes.Ord GitHub.Data.Issues.IssueComment
instance GHC.Classes.Eq GitHub.Data.Issues.IssueComment
instance Data.Data.Data GitHub.Data.Issues.IssueComment
instance GHC.Show.Show GitHub.Data.Issues.IssueComment
instance GHC.Generics.Generic GitHub.Data.Issues.EventType
instance GHC.Classes.Ord GitHub.Data.Issues.EventType
instance GHC.Classes.Eq GitHub.Data.Issues.EventType
instance GHC.Enum.Bounded GitHub.Data.Issues.EventType
instance GHC.Enum.Enum GitHub.Data.Issues.EventType
instance Data.Data.Data GitHub.Data.Issues.EventType
instance GHC.Show.Show GitHub.Data.Issues.EventType
instance GHC.Generics.Generic GitHub.Data.Issues.IssueEvent
instance GHC.Classes.Ord GitHub.Data.Issues.IssueEvent
instance GHC.Classes.Eq GitHub.Data.Issues.IssueEvent
instance Data.Data.Data GitHub.Data.Issues.IssueEvent
instance GHC.Show.Show GitHub.Data.Issues.IssueEvent
instance Control.DeepSeq.NFData GitHub.Data.Issues.IssueEvent
instance Data.Binary.Class.Binary GitHub.Data.Issues.IssueEvent
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Issues.IssueEvent
instance Control.DeepSeq.NFData GitHub.Data.Issues.EventType
instance Data.Binary.Class.Binary GitHub.Data.Issues.EventType
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Issues.EventType
instance Control.DeepSeq.NFData GitHub.Data.Issues.IssueComment
instance Data.Binary.Class.Binary GitHub.Data.Issues.IssueComment
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Issues.IssueComment
instance Control.DeepSeq.NFData GitHub.Data.Issues.EditIssue
instance Data.Binary.Class.Binary GitHub.Data.Issues.EditIssue
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Issues.EditIssue
instance Control.DeepSeq.NFData GitHub.Data.Issues.NewIssue
instance Data.Binary.Class.Binary GitHub.Data.Issues.NewIssue
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Issues.NewIssue
instance Control.DeepSeq.NFData GitHub.Data.Issues.Issue
instance Data.Binary.Class.Binary GitHub.Data.Issues.Issue
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Issues.Issue

module GitHub.Data.Invitation
data Invitation
Invitation :: !Id Invitation -> !Maybe (Name User) -> !Maybe Text -> !InvitationRole -> !UTCTime -> !SimpleUser -> Invitation
[invitationId] :: Invitation -> !Id Invitation
[invitationLogin] :: Invitation -> !Maybe (Name User)
[invitationEmail] :: Invitation -> !Maybe Text
[invitationRole] :: Invitation -> !InvitationRole
[invitationCreatedAt] :: Invitation -> !UTCTime
[inviter] :: Invitation -> !SimpleUser
data InvitationRole
InvitationRoleDirectMember :: InvitationRole
InvitationRoleAdmin :: InvitationRole
InvitationRoleBillingManager :: InvitationRole
InvitationRoleHiringManager :: InvitationRole
InvitationRoleReinstate :: InvitationRole
data RepoInvitation
RepoInvitation :: !Id RepoInvitation -> !SimpleUser -> !SimpleUser -> !Repo -> !URL -> !UTCTime -> !Text -> !URL -> RepoInvitation
[repoInvitationId] :: RepoInvitation -> !Id RepoInvitation
[repoInvitationInvitee] :: RepoInvitation -> !SimpleUser
[repoInvitationInviter] :: RepoInvitation -> !SimpleUser
[repoInvitationRepo] :: RepoInvitation -> !Repo
[repoInvitationUrl] :: RepoInvitation -> !URL
[repoInvitationCreatedAt] :: RepoInvitation -> !UTCTime
[repoInvitationPermission] :: RepoInvitation -> !Text
[repoInvitationHtmlUrl] :: RepoInvitation -> !URL
instance Data.Data.Data GitHub.Data.Invitation.InvitationRole
instance GHC.Generics.Generic GitHub.Data.Invitation.InvitationRole
instance GHC.Enum.Bounded GitHub.Data.Invitation.InvitationRole
instance GHC.Enum.Enum GitHub.Data.Invitation.InvitationRole
instance GHC.Show.Show GitHub.Data.Invitation.InvitationRole
instance GHC.Classes.Ord GitHub.Data.Invitation.InvitationRole
instance GHC.Classes.Eq GitHub.Data.Invitation.InvitationRole
instance GHC.Generics.Generic GitHub.Data.Invitation.Invitation
instance GHC.Classes.Ord GitHub.Data.Invitation.Invitation
instance GHC.Classes.Eq GitHub.Data.Invitation.Invitation
instance Data.Data.Data GitHub.Data.Invitation.Invitation
instance GHC.Show.Show GitHub.Data.Invitation.Invitation
instance GHC.Generics.Generic GitHub.Data.Invitation.RepoInvitation
instance GHC.Classes.Ord GitHub.Data.Invitation.RepoInvitation
instance GHC.Classes.Eq GitHub.Data.Invitation.RepoInvitation
instance Data.Data.Data GitHub.Data.Invitation.RepoInvitation
instance GHC.Show.Show GitHub.Data.Invitation.RepoInvitation
instance Control.DeepSeq.NFData GitHub.Data.Invitation.RepoInvitation
instance Data.Binary.Class.Binary GitHub.Data.Invitation.RepoInvitation
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Invitation.RepoInvitation
instance Control.DeepSeq.NFData GitHub.Data.Invitation.Invitation
instance Data.Binary.Class.Binary GitHub.Data.Invitation.Invitation
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Invitation.Invitation
instance Control.DeepSeq.NFData GitHub.Data.Invitation.InvitationRole
instance Data.Binary.Class.Binary GitHub.Data.Invitation.InvitationRole
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Invitation.InvitationRole

module GitHub.Data.GitData

-- | The options for querying commits.
data CommitQueryOption
CommitQuerySha :: !Text -> CommitQueryOption
CommitQueryPath :: !Text -> CommitQueryOption
CommitQueryAuthor :: !Text -> CommitQueryOption
CommitQuerySince :: !UTCTime -> CommitQueryOption
CommitQueryUntil :: !UTCTime -> CommitQueryOption
data Stats
Stats :: !Int -> !Int -> !Int -> Stats
[statsAdditions] :: Stats -> !Int
[statsTotal] :: Stats -> !Int
[statsDeletions] :: Stats -> !Int
data Commit
Commit :: !Name Commit -> !Vector Tree -> !URL -> !GitCommit -> !Maybe SimpleUser -> !Maybe SimpleUser -> !Vector File -> !Maybe Stats -> Commit
[commitSha] :: Commit -> !Name Commit
[commitParents] :: Commit -> !Vector Tree
[commitUrl] :: Commit -> !URL
[commitGitCommit] :: Commit -> !GitCommit
[commitCommitter] :: Commit -> !Maybe SimpleUser
[commitAuthor] :: Commit -> !Maybe SimpleUser
[commitFiles] :: Commit -> !Vector File
[commitStats] :: Commit -> !Maybe Stats
data Tree
Tree :: !Name Tree -> !URL -> !Vector GitTree -> Tree
[treeSha] :: Tree -> !Name Tree
[treeUrl] :: Tree -> !URL
[treeGitTrees] :: Tree -> !Vector GitTree
data GitTree
GitTree :: !Text -> !Name GitTree -> !Maybe URL -> !Maybe Int -> !Text -> !Text -> GitTree
[gitTreeType] :: GitTree -> !Text
[gitTreeSha] :: GitTree -> !Name GitTree
[gitTreeUrl] :: GitTree -> !Maybe URL
[gitTreeSize] :: GitTree -> !Maybe Int
[gitTreePath] :: GitTree -> !Text
[gitTreeMode] :: GitTree -> !Text
data GitCommit
GitCommit :: !Text -> !URL -> !GitUser -> !GitUser -> !Tree -> !Maybe (Name GitCommit) -> !Vector Tree -> GitCommit
[gitCommitMessage] :: GitCommit -> !Text
[gitCommitUrl] :: GitCommit -> !URL
[gitCommitCommitter] :: GitCommit -> !GitUser
[gitCommitAuthor] :: GitCommit -> !GitUser
[gitCommitTree] :: GitCommit -> !Tree
[gitCommitSha] :: GitCommit -> !Maybe (Name GitCommit)
[gitCommitParents] :: GitCommit -> !Vector Tree
data Blob
Blob :: !URL -> !Text -> !Text -> !Name Blob -> !Int -> Blob
[blobUrl] :: Blob -> !URL
[blobEncoding] :: Blob -> !Text
[blobContent] :: Blob -> !Text
[blobSha] :: Blob -> !Name Blob
[blobSize] :: Blob -> !Int
data Tag
Tag :: !Text -> !URL -> !URL -> !BranchCommit -> Tag
[tagName] :: Tag -> !Text
[tagZipballUrl] :: Tag -> !URL
[tagTarballUrl] :: Tag -> !URL
[tagCommit] :: Tag -> !BranchCommit
data Branch
Branch :: !Text -> !BranchCommit -> Branch
[branchName] :: Branch -> !Text
[branchCommit] :: Branch -> !BranchCommit
data BranchCommit
BranchCommit :: !Text -> !URL -> BranchCommit
[branchCommitSha] :: BranchCommit -> !Text
[branchCommitUrl] :: BranchCommit -> !URL
data Diff
Diff :: !Text -> !Int -> !URL -> !URL -> !Commit -> !Vector Commit -> !Int -> !URL -> !Vector File -> !Int -> !URL -> !URL -> Diff
[diffStatus] :: Diff -> !Text
[diffBehindBy] :: Diff -> !Int
[diffPatchUrl] :: Diff -> !URL
[diffUrl] :: Diff -> !URL
[diffBaseCommit] :: Diff -> !Commit
[diffCommits] :: Diff -> !Vector Commit
[diffTotalCommits] :: Diff -> !Int
[diffHtmlUrl] :: Diff -> !URL
[diffFiles] :: Diff -> !Vector File
[diffAheadBy] :: Diff -> !Int
[diffDiffUrl] :: Diff -> !URL
[diffPermalinkUrl] :: Diff -> !URL
data NewGitReference
NewGitReference :: !Text -> !Text -> NewGitReference
[newGitReferenceRef] :: NewGitReference -> !Text
[newGitReferenceSha] :: NewGitReference -> !Text
data GitReference
GitReference :: !GitObject -> !URL -> !Name GitReference -> GitReference
[gitReferenceObject] :: GitReference -> !GitObject
[gitReferenceUrl] :: GitReference -> !URL
[gitReferenceRef] :: GitReference -> !Name GitReference
data GitObject
GitObject :: !Text -> !Text -> !URL -> GitObject
[gitObjectType] :: GitObject -> !Text
[gitObjectSha] :: GitObject -> !Text
[gitObjectUrl] :: GitObject -> !URL
data GitUser
GitUser :: !Text -> !Text -> !UTCTime -> GitUser
[gitUserName] :: GitUser -> !Text
[gitUserEmail] :: GitUser -> !Text
[gitUserDate] :: GitUser -> !UTCTime
data File
File :: !Maybe URL -> !Text -> !Maybe URL -> !Int -> !Maybe Text -> !Int -> !Maybe Text -> !Text -> !Int -> File
[fileBlobUrl] :: File -> !Maybe URL
[fileStatus] :: File -> !Text
[fileRawUrl] :: File -> !Maybe URL
[fileAdditions] :: File -> !Int
[fileSha] :: File -> !Maybe Text
[fileChanges] :: File -> !Int
[filePatch] :: File -> !Maybe Text
[fileFilename] :: File -> !Text
[fileDeletions] :: File -> !Int
instance Data.Data.Data GitHub.Data.GitData.CommitQueryOption
instance GHC.Generics.Generic GitHub.Data.GitData.CommitQueryOption
instance GHC.Classes.Ord GitHub.Data.GitData.CommitQueryOption
instance GHC.Classes.Eq GitHub.Data.GitData.CommitQueryOption
instance GHC.Show.Show GitHub.Data.GitData.CommitQueryOption
instance GHC.Generics.Generic GitHub.Data.GitData.Stats
instance GHC.Classes.Ord GitHub.Data.GitData.Stats
instance GHC.Classes.Eq GitHub.Data.GitData.Stats
instance Data.Data.Data GitHub.Data.GitData.Stats
instance GHC.Show.Show GitHub.Data.GitData.Stats
instance GHC.Generics.Generic GitHub.Data.GitData.GitTree
instance GHC.Classes.Ord GitHub.Data.GitData.GitTree
instance GHC.Classes.Eq GitHub.Data.GitData.GitTree
instance Data.Data.Data GitHub.Data.GitData.GitTree
instance GHC.Show.Show GitHub.Data.GitData.GitTree
instance GHC.Generics.Generic GitHub.Data.GitData.Tree
instance GHC.Classes.Ord GitHub.Data.GitData.Tree
instance GHC.Classes.Eq GitHub.Data.GitData.Tree
instance Data.Data.Data GitHub.Data.GitData.Tree
instance GHC.Show.Show GitHub.Data.GitData.Tree
instance GHC.Generics.Generic GitHub.Data.GitData.Blob
instance GHC.Classes.Ord GitHub.Data.GitData.Blob
instance GHC.Classes.Eq GitHub.Data.GitData.Blob
instance Data.Data.Data GitHub.Data.GitData.Blob
instance GHC.Show.Show GitHub.Data.GitData.Blob
instance GHC.Generics.Generic GitHub.Data.GitData.BranchCommit
instance GHC.Classes.Ord GitHub.Data.GitData.BranchCommit
instance GHC.Classes.Eq GitHub.Data.GitData.BranchCommit
instance Data.Data.Data GitHub.Data.GitData.BranchCommit
instance GHC.Show.Show GitHub.Data.GitData.BranchCommit
instance GHC.Generics.Generic GitHub.Data.GitData.Branch
instance GHC.Classes.Ord GitHub.Data.GitData.Branch
instance GHC.Classes.Eq GitHub.Data.GitData.Branch
instance Data.Data.Data GitHub.Data.GitData.Branch
instance GHC.Show.Show GitHub.Data.GitData.Branch
instance GHC.Generics.Generic GitHub.Data.GitData.Tag
instance GHC.Classes.Ord GitHub.Data.GitData.Tag
instance GHC.Classes.Eq GitHub.Data.GitData.Tag
instance Data.Data.Data GitHub.Data.GitData.Tag
instance GHC.Show.Show GitHub.Data.GitData.Tag
instance GHC.Generics.Generic GitHub.Data.GitData.NewGitReference
instance GHC.Classes.Ord GitHub.Data.GitData.NewGitReference
instance GHC.Classes.Eq GitHub.Data.GitData.NewGitReference
instance Data.Data.Data GitHub.Data.GitData.NewGitReference
instance GHC.Show.Show GitHub.Data.GitData.NewGitReference
instance GHC.Generics.Generic GitHub.Data.GitData.GitObject
instance GHC.Classes.Ord GitHub.Data.GitData.GitObject
instance GHC.Classes.Eq GitHub.Data.GitData.GitObject
instance Data.Data.Data GitHub.Data.GitData.GitObject
instance GHC.Show.Show GitHub.Data.GitData.GitObject
instance GHC.Generics.Generic GitHub.Data.GitData.GitReference
instance GHC.Classes.Ord GitHub.Data.GitData.GitReference
instance GHC.Classes.Eq GitHub.Data.GitData.GitReference
instance Data.Data.Data GitHub.Data.GitData.GitReference
instance GHC.Show.Show GitHub.Data.GitData.GitReference
instance GHC.Generics.Generic GitHub.Data.GitData.GitUser
instance GHC.Classes.Ord GitHub.Data.GitData.GitUser
instance GHC.Classes.Eq GitHub.Data.GitData.GitUser
instance Data.Data.Data GitHub.Data.GitData.GitUser
instance GHC.Show.Show GitHub.Data.GitData.GitUser
instance GHC.Generics.Generic GitHub.Data.GitData.GitCommit
instance GHC.Classes.Ord GitHub.Data.GitData.GitCommit
instance GHC.Classes.Eq GitHub.Data.GitData.GitCommit
instance Data.Data.Data GitHub.Data.GitData.GitCommit
instance GHC.Show.Show GitHub.Data.GitData.GitCommit
instance GHC.Generics.Generic GitHub.Data.GitData.File
instance GHC.Classes.Ord GitHub.Data.GitData.File
instance GHC.Classes.Eq GitHub.Data.GitData.File
instance Data.Data.Data GitHub.Data.GitData.File
instance GHC.Show.Show GitHub.Data.GitData.File
instance GHC.Generics.Generic GitHub.Data.GitData.Commit
instance GHC.Classes.Ord GitHub.Data.GitData.Commit
instance GHC.Classes.Eq GitHub.Data.GitData.Commit
instance Data.Data.Data GitHub.Data.GitData.Commit
instance GHC.Show.Show GitHub.Data.GitData.Commit
instance GHC.Generics.Generic GitHub.Data.GitData.Diff
instance GHC.Classes.Ord GitHub.Data.GitData.Diff
instance GHC.Classes.Eq GitHub.Data.GitData.Diff
instance Data.Data.Data GitHub.Data.GitData.Diff
instance GHC.Show.Show GitHub.Data.GitData.Diff
instance Control.DeepSeq.NFData GitHub.Data.GitData.Diff
instance Data.Binary.Class.Binary GitHub.Data.GitData.Diff
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.Diff
instance Control.DeepSeq.NFData GitHub.Data.GitData.Commit
instance Data.Binary.Class.Binary GitHub.Data.GitData.Commit
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.Commit
instance Control.DeepSeq.NFData GitHub.Data.GitData.File
instance Data.Binary.Class.Binary GitHub.Data.GitData.File
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.File
instance Control.DeepSeq.NFData GitHub.Data.GitData.GitCommit
instance Data.Binary.Class.Binary GitHub.Data.GitData.GitCommit
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.GitCommit
instance Control.DeepSeq.NFData GitHub.Data.GitData.GitUser
instance Data.Binary.Class.Binary GitHub.Data.GitData.GitUser
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.GitUser
instance Control.DeepSeq.NFData GitHub.Data.GitData.GitReference
instance Data.Binary.Class.Binary GitHub.Data.GitData.GitReference
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.GitReference
instance Control.DeepSeq.NFData GitHub.Data.GitData.GitObject
instance Data.Binary.Class.Binary GitHub.Data.GitData.GitObject
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.GitObject
instance Control.DeepSeq.NFData GitHub.Data.GitData.NewGitReference
instance Data.Binary.Class.Binary GitHub.Data.GitData.NewGitReference
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.GitData.NewGitReference
instance Control.DeepSeq.NFData GitHub.Data.GitData.Tag
instance Data.Binary.Class.Binary GitHub.Data.GitData.Tag
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.Tag
instance Control.DeepSeq.NFData GitHub.Data.GitData.Branch
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.Branch
instance Control.DeepSeq.NFData GitHub.Data.GitData.BranchCommit
instance Data.Binary.Class.Binary GitHub.Data.GitData.BranchCommit
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.BranchCommit
instance Control.DeepSeq.NFData GitHub.Data.GitData.Blob
instance Data.Binary.Class.Binary GitHub.Data.GitData.Blob
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.Blob
instance Control.DeepSeq.NFData GitHub.Data.GitData.Tree
instance Data.Binary.Class.Binary GitHub.Data.GitData.Tree
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.Tree
instance Control.DeepSeq.NFData GitHub.Data.GitData.GitTree
instance Data.Binary.Class.Binary GitHub.Data.GitData.GitTree
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.GitTree
instance Control.DeepSeq.NFData GitHub.Data.GitData.Stats
instance Data.Binary.Class.Binary GitHub.Data.GitData.Stats
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.GitData.Stats

module GitHub.Data.Statuses
data StatusState
StatusPending :: StatusState
StatusSuccess :: StatusState
StatusError :: StatusState
StatusFailure :: StatusState
data Status
Status :: !UTCTime -> !UTCTime -> !StatusState -> !Maybe URL -> !Maybe Text -> !Id Status -> !URL -> !Maybe Text -> !Maybe SimpleUser -> Status
[statusCreatedAt] :: Status -> !UTCTime
[statusUpdatedAt] :: Status -> !UTCTime
[statusState] :: Status -> !StatusState
[statusTargetUrl] :: Status -> !Maybe URL
[statusDescription] :: Status -> !Maybe Text
[statusId] :: Status -> !Id Status
[statusUrl] :: Status -> !URL
[statusContext] :: Status -> !Maybe Text
[statusCreator] :: Status -> !Maybe SimpleUser
data NewStatus
NewStatus :: !StatusState -> !Maybe URL -> !Maybe Text -> !Maybe Text -> NewStatus
[newStatusState] :: NewStatus -> !StatusState
[newStatusTargetUrl] :: NewStatus -> !Maybe URL
[newStatusDescription] :: NewStatus -> !Maybe Text
[newStatusContext] :: NewStatus -> !Maybe Text
data CombinedStatus
CombinedStatus :: !StatusState -> !Name Commit -> !Int -> !Vector Status -> !RepoRef -> !URL -> !URL -> CombinedStatus
[combinedStatusState] :: CombinedStatus -> !StatusState
[combinedStatusSha] :: CombinedStatus -> !Name Commit
[combinedStatusTotalCount] :: CombinedStatus -> !Int
[combinedStatusStatuses] :: CombinedStatus -> !Vector Status
[combinedStatusRepository] :: CombinedStatus -> !RepoRef
[combinedStatusCommitUrl] :: CombinedStatus -> !URL
[combinedStatusUrl] :: CombinedStatus -> !URL
instance GHC.Generics.Generic GitHub.Data.Statuses.StatusState
instance GHC.Classes.Ord GitHub.Data.Statuses.StatusState
instance GHC.Classes.Eq GitHub.Data.Statuses.StatusState
instance GHC.Enum.Bounded GitHub.Data.Statuses.StatusState
instance GHC.Enum.Enum GitHub.Data.Statuses.StatusState
instance Data.Data.Data GitHub.Data.Statuses.StatusState
instance GHC.Show.Show GitHub.Data.Statuses.StatusState
instance GHC.Generics.Generic GitHub.Data.Statuses.Status
instance GHC.Classes.Ord GitHub.Data.Statuses.Status
instance GHC.Classes.Eq GitHub.Data.Statuses.Status
instance Data.Data.Data GitHub.Data.Statuses.Status
instance GHC.Show.Show GitHub.Data.Statuses.Status
instance GHC.Generics.Generic GitHub.Data.Statuses.NewStatus
instance GHC.Classes.Ord GitHub.Data.Statuses.NewStatus
instance GHC.Classes.Eq GitHub.Data.Statuses.NewStatus
instance Data.Data.Data GitHub.Data.Statuses.NewStatus
instance GHC.Show.Show GitHub.Data.Statuses.NewStatus
instance GHC.Generics.Generic GitHub.Data.Statuses.CombinedStatus
instance GHC.Classes.Ord GitHub.Data.Statuses.CombinedStatus
instance GHC.Classes.Eq GitHub.Data.Statuses.CombinedStatus
instance Data.Data.Data GitHub.Data.Statuses.CombinedStatus
instance GHC.Show.Show GitHub.Data.Statuses.CombinedStatus
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Statuses.CombinedStatus
instance Control.DeepSeq.NFData GitHub.Data.Statuses.NewStatus
instance Data.Binary.Class.Binary GitHub.Data.Statuses.NewStatus
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Statuses.NewStatus
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Statuses.Status
instance Control.DeepSeq.NFData GitHub.Data.Statuses.StatusState
instance Data.Binary.Class.Binary GitHub.Data.Statuses.StatusState
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Statuses.StatusState
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Statuses.StatusState

module GitHub.Data.Gists
data Gist
Gist :: !SimpleUser -> !URL -> !URL -> !Maybe Text -> !UTCTime -> !Bool -> !Int -> !UTCTime -> !URL -> !Name Gist -> !HashMap Text GistFile -> !URL -> Gist
[gistUser] :: Gist -> !SimpleUser
[gistGitPushUrl] :: Gist -> !URL
[gistUrl] :: Gist -> !URL
[gistDescription] :: Gist -> !Maybe Text
[gistCreatedAt] :: Gist -> !UTCTime
[gistPublic] :: Gist -> !Bool
[gistComments] :: Gist -> !Int
[gistUpdatedAt] :: Gist -> !UTCTime
[gistHtmlUrl] :: Gist -> !URL
[gistId] :: Gist -> !Name Gist
[gistFiles] :: Gist -> !HashMap Text GistFile
[gistGitPullUrl] :: Gist -> !URL
data GistFile
GistFile :: !Text -> !URL -> !Int -> !Maybe Language -> !Text -> !Maybe Text -> GistFile
[gistFileType] :: GistFile -> !Text
[gistFileRawUrl] :: GistFile -> !URL
[gistFileSize] :: GistFile -> !Int
[gistFileLanguage] :: GistFile -> !Maybe Language
[gistFileFilename] :: GistFile -> !Text
[gistFileContent] :: GistFile -> !Maybe Text
data GistComment
GistComment :: !SimpleUser -> !URL -> !UTCTime -> !Text -> !UTCTime -> !Id GistComment -> GistComment
[gistCommentUser] :: GistComment -> !SimpleUser
[gistCommentUrl] :: GistComment -> !URL
[gistCommentCreatedAt] :: GistComment -> !UTCTime
[gistCommentBody] :: GistComment -> !Text
[gistCommentUpdatedAt] :: GistComment -> !UTCTime
[gistCommentId] :: GistComment -> !Id GistComment
data NewGist
NewGist :: !Maybe Text -> !HashMap Text NewGistFile -> !Maybe Bool -> NewGist
[newGistDescription] :: NewGist -> !Maybe Text
[newGistFiles] :: NewGist -> !HashMap Text NewGistFile
[newGistPublic] :: NewGist -> !Maybe Bool
data NewGistFile
NewGistFile :: !Text -> NewGistFile
[newGistFileContent] :: NewGistFile -> !Text
instance GHC.Generics.Generic GitHub.Data.Gists.GistFile
instance GHC.Classes.Eq GitHub.Data.Gists.GistFile
instance Data.Data.Data GitHub.Data.Gists.GistFile
instance GHC.Show.Show GitHub.Data.Gists.GistFile
instance GHC.Generics.Generic GitHub.Data.Gists.Gist
instance GHC.Classes.Eq GitHub.Data.Gists.Gist
instance Data.Data.Data GitHub.Data.Gists.Gist
instance GHC.Show.Show GitHub.Data.Gists.Gist
instance GHC.Generics.Generic GitHub.Data.Gists.GistComment
instance GHC.Classes.Ord GitHub.Data.Gists.GistComment
instance GHC.Classes.Eq GitHub.Data.Gists.GistComment
instance Data.Data.Data GitHub.Data.Gists.GistComment
instance GHC.Show.Show GitHub.Data.Gists.GistComment
instance GHC.Generics.Generic GitHub.Data.Gists.NewGistFile
instance GHC.Classes.Eq GitHub.Data.Gists.NewGistFile
instance Data.Data.Data GitHub.Data.Gists.NewGistFile
instance GHC.Show.Show GitHub.Data.Gists.NewGistFile
instance GHC.Generics.Generic GitHub.Data.Gists.NewGist
instance GHC.Classes.Eq GitHub.Data.Gists.NewGist
instance Data.Data.Data GitHub.Data.Gists.NewGist
instance GHC.Show.Show GitHub.Data.Gists.NewGist
instance Control.DeepSeq.NFData GitHub.Data.Gists.NewGist
instance Data.Binary.Class.Binary GitHub.Data.Gists.NewGist
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Gists.NewGist
instance Control.DeepSeq.NFData GitHub.Data.Gists.NewGistFile
instance Data.Binary.Class.Binary GitHub.Data.Gists.NewGistFile
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Gists.NewGistFile
instance Control.DeepSeq.NFData GitHub.Data.Gists.GistComment
instance Data.Binary.Class.Binary GitHub.Data.Gists.GistComment
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Gists.GistComment
instance Control.DeepSeq.NFData GitHub.Data.Gists.Gist
instance Data.Binary.Class.Binary GitHub.Data.Gists.Gist
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Gists.Gist
instance Control.DeepSeq.NFData GitHub.Data.Gists.GistFile
instance Data.Binary.Class.Binary GitHub.Data.Gists.GistFile
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Gists.GistFile

module GitHub.Data.Events

-- | Events.
--   
--   <i>TODO:</i>
--   
--   <ul>
--   <li>missing repo, org, payload, id</li>
--   </ul>
data Event
Event :: !SimpleUser -> !UTCTime -> !Bool -> Event
[eventActor] :: Event -> !SimpleUser
[eventCreatedAt] :: Event -> !UTCTime
[eventPublic] :: Event -> !Bool
instance GHC.Generics.Generic GitHub.Data.Events.Event
instance GHC.Classes.Ord GitHub.Data.Events.Event
instance GHC.Classes.Eq GitHub.Data.Events.Event
instance Data.Data.Data GitHub.Data.Events.Event
instance GHC.Show.Show GitHub.Data.Events.Event
instance Control.DeepSeq.NFData GitHub.Data.Events.Event
instance Data.Binary.Class.Binary GitHub.Data.Events.Event
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Events.Event

module GitHub.Data.Enterprise.Organizations
data CreateOrganization
CreateOrganization :: !Name Organization -> !Name User -> !Maybe Text -> CreateOrganization
[createOrganizationLogin] :: CreateOrganization -> !Name Organization
[createOrganizationAdmin] :: CreateOrganization -> !Name User
[createOrganizationProfileName] :: CreateOrganization -> !Maybe Text
data RenameOrganization
RenameOrganization :: !Name Organization -> RenameOrganization
[renameOrganizationLogin] :: RenameOrganization -> !Name Organization
data RenameOrganizationResponse
RenameOrganizationResponse :: !Text -> !URL -> RenameOrganizationResponse
[renameOrganizationResponseMessage] :: RenameOrganizationResponse -> !Text
[renameOrganizationResponseUrl] :: RenameOrganizationResponse -> !URL
instance GHC.Generics.Generic GitHub.Data.Enterprise.Organizations.CreateOrganization
instance GHC.Classes.Ord GitHub.Data.Enterprise.Organizations.CreateOrganization
instance GHC.Classes.Eq GitHub.Data.Enterprise.Organizations.CreateOrganization
instance Data.Data.Data GitHub.Data.Enterprise.Organizations.CreateOrganization
instance GHC.Show.Show GitHub.Data.Enterprise.Organizations.CreateOrganization
instance GHC.Generics.Generic GitHub.Data.Enterprise.Organizations.RenameOrganization
instance GHC.Classes.Ord GitHub.Data.Enterprise.Organizations.RenameOrganization
instance GHC.Classes.Eq GitHub.Data.Enterprise.Organizations.RenameOrganization
instance Data.Data.Data GitHub.Data.Enterprise.Organizations.RenameOrganization
instance GHC.Show.Show GitHub.Data.Enterprise.Organizations.RenameOrganization
instance GHC.Generics.Generic GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance GHC.Classes.Ord GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance GHC.Classes.Eq GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance Data.Data.Data GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance GHC.Show.Show GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance Control.DeepSeq.NFData GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance Data.Binary.Class.Binary GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Enterprise.Organizations.RenameOrganizationResponse
instance Control.DeepSeq.NFData GitHub.Data.Enterprise.Organizations.RenameOrganization
instance Data.Binary.Class.Binary GitHub.Data.Enterprise.Organizations.RenameOrganization
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Enterprise.Organizations.RenameOrganization
instance Control.DeepSeq.NFData GitHub.Data.Enterprise.Organizations.CreateOrganization
instance Data.Binary.Class.Binary GitHub.Data.Enterprise.Organizations.CreateOrganization
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Enterprise.Organizations.CreateOrganization


-- | This module re-exports the <tt>GitHub.Data.Enterprise.</tt>
--   submodules.
module GitHub.Data.Enterprise

module GitHub.Data.Deployments
data DeploymentQueryOption
DeploymentQuerySha :: !Text -> DeploymentQueryOption
DeploymentQueryRef :: !Text -> DeploymentQueryOption
DeploymentQueryTask :: !Text -> DeploymentQueryOption
DeploymentQueryEnvironment :: !Text -> DeploymentQueryOption
renderDeploymentQueryOption :: DeploymentQueryOption -> (ByteString, ByteString)
data Deployment a
Deployment :: !URL -> !Id (Deployment a) -> !Name (Deployment a) -> !Text -> !Text -> !Maybe a -> !Text -> !Text -> !SimpleUser -> !UTCTime -> !UTCTime -> !URL -> !URL -> Deployment a
[deploymentUrl] :: Deployment a -> !URL
[deploymentId] :: Deployment a -> !Id (Deployment a)
[deploymentSha] :: Deployment a -> !Name (Deployment a)
[deploymentRef] :: Deployment a -> !Text
[deploymentTask] :: Deployment a -> !Text
[deploymentPayload] :: Deployment a -> !Maybe a
[deploymentEnvironment] :: Deployment a -> !Text
[deploymentDescription] :: Deployment a -> !Text
[deploymentCreator] :: Deployment a -> !SimpleUser
[deploymentCreatedAt] :: Deployment a -> !UTCTime
[deploymentUpdatedAt] :: Deployment a -> !UTCTime
[deploymentStatusesUrl] :: Deployment a -> !URL
[deploymentRepositoryUrl] :: Deployment a -> !URL
data CreateDeployment a
CreateDeployment :: !Text -> !Maybe Text -> !Maybe Bool -> !Maybe (Vector Text) -> !Maybe a -> !Maybe Text -> !Maybe Text -> CreateDeployment a

-- | Required. The ref to deploy. This can be a branch, tag, or SHA.
[createDeploymentRef] :: CreateDeployment a -> !Text

-- | Specifies a task to execute (e.g., deploy or deploy:migrations).
--   Default: deploy
[createDeploymentTask] :: CreateDeployment a -> !Maybe Text

-- | Attempts to automatically merge the default branch into the requested
--   ref, if it is behind the default branch. Default: true
[createDeploymentAutoMerge] :: CreateDeployment a -> !Maybe Bool

-- | The status contexts to verify against commit status checks. If this
--   parameter is omitted, then all unique contexts will be verified before
--   a deployment is created. To bypass checking entirely pass an empty
--   array. Defaults to all unique contexts.
[createDeploymentRequiredContexts] :: CreateDeployment a -> !Maybe (Vector Text)

-- | JSON payload with extra information about the deployment. Default: ""
[createDeploymentPayload] :: CreateDeployment a -> !Maybe a

-- | Name for the target deployment environment (e.g., production, staging,
--   qa). Default: production
[createDeploymentEnvironment] :: CreateDeployment a -> !Maybe Text

-- | Short description of the deployment. Default: ""
[createDeploymentDescription] :: CreateDeployment a -> !Maybe Text
data DeploymentStatus
DeploymentStatus :: !URL -> !Id DeploymentStatus -> !DeploymentStatusState -> !SimpleUser -> !Text -> !URL -> !UTCTime -> !UTCTime -> !URL -> !URL -> DeploymentStatus
[deploymentStatusUrl] :: DeploymentStatus -> !URL
[deploymentStatusId] :: DeploymentStatus -> !Id DeploymentStatus
[deploymentStatusState] :: DeploymentStatus -> !DeploymentStatusState
[deploymentStatusCreator] :: DeploymentStatus -> !SimpleUser
[deploymentStatusDescription] :: DeploymentStatus -> !Text
[deploymentStatusTargetUrl] :: DeploymentStatus -> !URL
[deploymentStatusCreatedAt] :: DeploymentStatus -> !UTCTime
[deploymentStatusUpdatedAt] :: DeploymentStatus -> !UTCTime
[deploymentStatusDeploymentUrl] :: DeploymentStatus -> !URL
[deploymentStatusRepositoryUrl] :: DeploymentStatus -> !URL
data DeploymentStatusState
DeploymentStatusError :: DeploymentStatusState
DeploymentStatusFailure :: DeploymentStatusState
DeploymentStatusPending :: DeploymentStatusState
DeploymentStatusSuccess :: DeploymentStatusState
DeploymentStatusInactive :: DeploymentStatusState
data CreateDeploymentStatus
CreateDeploymentStatus :: !DeploymentStatusState -> !Maybe Text -> !Maybe Text -> CreateDeploymentStatus

-- | Required. The state of the status. Can be one of error, failure,
--   pending, or success.
[createDeploymentStatusState] :: CreateDeploymentStatus -> !DeploymentStatusState

-- | The target URL to associate with this status. This URL should contain
--   output to keep the user updated while the task is running or serve as
--   historical information for what happened in the deployment. Default:
--   ""
[createDeploymentStatusTargetUrl] :: CreateDeploymentStatus -> !Maybe Text

-- | A short description of the status. Maximum length of 140 characters.
--   Default: ""
[createDeploymentStatusDescription] :: CreateDeploymentStatus -> !Maybe Text
instance GHC.Generics.Generic GitHub.Data.Deployments.DeploymentQueryOption
instance GHC.Classes.Ord GitHub.Data.Deployments.DeploymentQueryOption
instance GHC.Classes.Eq GitHub.Data.Deployments.DeploymentQueryOption
instance Data.Data.Data GitHub.Data.Deployments.DeploymentQueryOption
instance GHC.Show.Show GitHub.Data.Deployments.DeploymentQueryOption
instance GHC.Generics.Generic (GitHub.Data.Deployments.Deployment a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (GitHub.Data.Deployments.Deployment a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (GitHub.Data.Deployments.Deployment a)
instance Data.Data.Data a => Data.Data.Data (GitHub.Data.Deployments.Deployment a)
instance GHC.Show.Show a => GHC.Show.Show (GitHub.Data.Deployments.Deployment a)
instance GHC.Generics.Generic (GitHub.Data.Deployments.CreateDeployment a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (GitHub.Data.Deployments.CreateDeployment a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (GitHub.Data.Deployments.CreateDeployment a)
instance Data.Data.Data a => Data.Data.Data (GitHub.Data.Deployments.CreateDeployment a)
instance GHC.Show.Show a => GHC.Show.Show (GitHub.Data.Deployments.CreateDeployment a)
instance GHC.Generics.Generic GitHub.Data.Deployments.DeploymentStatusState
instance GHC.Classes.Ord GitHub.Data.Deployments.DeploymentStatusState
instance GHC.Classes.Eq GitHub.Data.Deployments.DeploymentStatusState
instance Data.Data.Data GitHub.Data.Deployments.DeploymentStatusState
instance GHC.Show.Show GitHub.Data.Deployments.DeploymentStatusState
instance GHC.Generics.Generic GitHub.Data.Deployments.DeploymentStatus
instance GHC.Classes.Ord GitHub.Data.Deployments.DeploymentStatus
instance GHC.Classes.Eq GitHub.Data.Deployments.DeploymentStatus
instance Data.Data.Data GitHub.Data.Deployments.DeploymentStatus
instance GHC.Show.Show GitHub.Data.Deployments.DeploymentStatus
instance GHC.Generics.Generic GitHub.Data.Deployments.CreateDeploymentStatus
instance GHC.Classes.Ord GitHub.Data.Deployments.CreateDeploymentStatus
instance GHC.Classes.Eq GitHub.Data.Deployments.CreateDeploymentStatus
instance Data.Data.Data GitHub.Data.Deployments.CreateDeploymentStatus
instance GHC.Show.Show GitHub.Data.Deployments.CreateDeploymentStatus
instance Control.DeepSeq.NFData GitHub.Data.Deployments.CreateDeploymentStatus
instance Data.Binary.Class.Binary GitHub.Data.Deployments.CreateDeploymentStatus
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Deployments.CreateDeploymentStatus
instance Control.DeepSeq.NFData GitHub.Data.Deployments.DeploymentStatus
instance Data.Binary.Class.Binary GitHub.Data.Deployments.DeploymentStatus
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Deployments.DeploymentStatus
instance Control.DeepSeq.NFData GitHub.Data.Deployments.DeploymentStatusState
instance Data.Binary.Class.Binary GitHub.Data.Deployments.DeploymentStatusState
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Deployments.DeploymentStatusState
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Deployments.DeploymentStatusState
instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (GitHub.Data.Deployments.CreateDeployment a)
instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (GitHub.Data.Deployments.CreateDeployment a)
instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (GitHub.Data.Deployments.CreateDeployment a)
instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (GitHub.Data.Deployments.Deployment a)
instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (GitHub.Data.Deployments.Deployment a)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Deployments.Deployment a)
instance Control.DeepSeq.NFData GitHub.Data.Deployments.DeploymentQueryOption
instance Data.Binary.Class.Binary GitHub.Data.Deployments.DeploymentQueryOption

module GitHub.Data.Content
data Content
ContentFile :: !ContentFileData -> Content
ContentDirectory :: !Vector ContentItem -> Content
data ContentFileData
ContentFileData :: !ContentInfo -> !Text -> !Int -> !Text -> ContentFileData
[contentFileInfo] :: ContentFileData -> !ContentInfo
[contentFileEncoding] :: ContentFileData -> !Text
[contentFileSize] :: ContentFileData -> !Int
[contentFileContent] :: ContentFileData -> !Text

-- | An item in a directory listing.
data ContentItem
ContentItem :: !ContentItemType -> !ContentInfo -> ContentItem
[contentItemType] :: ContentItem -> !ContentItemType
[contentItemInfo] :: ContentItem -> !ContentInfo
data ContentItemType
ItemFile :: ContentItemType
ItemDir :: ContentItemType

-- | Information common to both kinds of Content: files and directories.
data ContentInfo
ContentInfo :: !Text -> !Text -> !Text -> !URL -> !URL -> !URL -> ContentInfo
[contentName] :: ContentInfo -> !Text
[contentPath] :: ContentInfo -> !Text
[contentSha] :: ContentInfo -> !Text
[contentUrl] :: ContentInfo -> !URL
[contentGitUrl] :: ContentInfo -> !URL
[contentHtmlUrl] :: ContentInfo -> !URL
data ContentResultInfo
ContentResultInfo :: !ContentInfo -> !Int -> ContentResultInfo
[contentResultInfo] :: ContentResultInfo -> !ContentInfo
[contentResultSize] :: ContentResultInfo -> !Int
data ContentResult
ContentResult :: !ContentResultInfo -> !GitCommit -> ContentResult
[contentResultContent] :: ContentResult -> !ContentResultInfo
[contentResultCommit] :: ContentResult -> !GitCommit
data Author
Author :: !Text -> !Text -> Author
[authorName] :: Author -> !Text
[authorEmail] :: Author -> !Text
data CreateFile
CreateFile :: !Text -> !Text -> !Text -> !Maybe Text -> !Maybe Author -> !Maybe Author -> CreateFile
[createFilePath] :: CreateFile -> !Text
[createFileMessage] :: CreateFile -> !Text
[createFileContent] :: CreateFile -> !Text
[createFileBranch] :: CreateFile -> !Maybe Text
[createFileAuthor] :: CreateFile -> !Maybe Author
[createFileCommitter] :: CreateFile -> !Maybe Author
data UpdateFile
UpdateFile :: !Text -> !Text -> !Text -> !Text -> !Maybe Text -> !Maybe Author -> !Maybe Author -> UpdateFile
[updateFilePath] :: UpdateFile -> !Text
[updateFileMessage] :: UpdateFile -> !Text
[updateFileContent] :: UpdateFile -> !Text
[updateFileSHA] :: UpdateFile -> !Text
[updateFileBranch] :: UpdateFile -> !Maybe Text
[updateFileAuthor] :: UpdateFile -> !Maybe Author
[updateFileCommitter] :: UpdateFile -> !Maybe Author
data DeleteFile
DeleteFile :: !Text -> !Text -> !Text -> !Maybe Text -> !Maybe Author -> !Maybe Author -> DeleteFile
[deleteFilePath] :: DeleteFile -> !Text
[deleteFileMessage] :: DeleteFile -> !Text
[deleteFileSHA] :: DeleteFile -> !Text
[deleteFileBranch] :: DeleteFile -> !Maybe Text
[deleteFileAuthor] :: DeleteFile -> !Maybe Author
[deleteFileCommitter] :: DeleteFile -> !Maybe Author
(.=?) :: ToJSON v => Key -> Maybe v -> [Pair]
instance GHC.Generics.Generic GitHub.Data.Content.ContentItemType
instance GHC.Classes.Ord GitHub.Data.Content.ContentItemType
instance GHC.Classes.Eq GitHub.Data.Content.ContentItemType
instance Data.Data.Data GitHub.Data.Content.ContentItemType
instance GHC.Show.Show GitHub.Data.Content.ContentItemType
instance GHC.Generics.Generic GitHub.Data.Content.ContentInfo
instance GHC.Classes.Ord GitHub.Data.Content.ContentInfo
instance GHC.Classes.Eq GitHub.Data.Content.ContentInfo
instance Data.Data.Data GitHub.Data.Content.ContentInfo
instance GHC.Show.Show GitHub.Data.Content.ContentInfo
instance GHC.Generics.Generic GitHub.Data.Content.ContentItem
instance GHC.Classes.Ord GitHub.Data.Content.ContentItem
instance GHC.Classes.Eq GitHub.Data.Content.ContentItem
instance Data.Data.Data GitHub.Data.Content.ContentItem
instance GHC.Show.Show GitHub.Data.Content.ContentItem
instance GHC.Generics.Generic GitHub.Data.Content.ContentFileData
instance GHC.Classes.Ord GitHub.Data.Content.ContentFileData
instance GHC.Classes.Eq GitHub.Data.Content.ContentFileData
instance Data.Data.Data GitHub.Data.Content.ContentFileData
instance GHC.Show.Show GitHub.Data.Content.ContentFileData
instance GHC.Generics.Generic GitHub.Data.Content.Content
instance GHC.Classes.Ord GitHub.Data.Content.Content
instance GHC.Classes.Eq GitHub.Data.Content.Content
instance Data.Data.Data GitHub.Data.Content.Content
instance GHC.Show.Show GitHub.Data.Content.Content
instance GHC.Generics.Generic GitHub.Data.Content.ContentResultInfo
instance GHC.Classes.Ord GitHub.Data.Content.ContentResultInfo
instance GHC.Classes.Eq GitHub.Data.Content.ContentResultInfo
instance Data.Data.Data GitHub.Data.Content.ContentResultInfo
instance GHC.Show.Show GitHub.Data.Content.ContentResultInfo
instance GHC.Generics.Generic GitHub.Data.Content.ContentResult
instance GHC.Classes.Ord GitHub.Data.Content.ContentResult
instance GHC.Classes.Eq GitHub.Data.Content.ContentResult
instance Data.Data.Data GitHub.Data.Content.ContentResult
instance GHC.Show.Show GitHub.Data.Content.ContentResult
instance GHC.Generics.Generic GitHub.Data.Content.Author
instance Data.Data.Data GitHub.Data.Content.Author
instance GHC.Show.Show GitHub.Data.Content.Author
instance GHC.Classes.Ord GitHub.Data.Content.Author
instance GHC.Classes.Eq GitHub.Data.Content.Author
instance GHC.Generics.Generic GitHub.Data.Content.CreateFile
instance Data.Data.Data GitHub.Data.Content.CreateFile
instance GHC.Show.Show GitHub.Data.Content.CreateFile
instance GHC.Classes.Ord GitHub.Data.Content.CreateFile
instance GHC.Classes.Eq GitHub.Data.Content.CreateFile
instance GHC.Generics.Generic GitHub.Data.Content.UpdateFile
instance Data.Data.Data GitHub.Data.Content.UpdateFile
instance GHC.Show.Show GitHub.Data.Content.UpdateFile
instance GHC.Classes.Ord GitHub.Data.Content.UpdateFile
instance GHC.Classes.Eq GitHub.Data.Content.UpdateFile
instance GHC.Generics.Generic GitHub.Data.Content.DeleteFile
instance Data.Data.Data GitHub.Data.Content.DeleteFile
instance GHC.Show.Show GitHub.Data.Content.DeleteFile
instance GHC.Classes.Ord GitHub.Data.Content.DeleteFile
instance GHC.Classes.Eq GitHub.Data.Content.DeleteFile
instance Control.DeepSeq.NFData GitHub.Data.Content.DeleteFile
instance Data.Binary.Class.Binary GitHub.Data.Content.DeleteFile
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Content.DeleteFile
instance Control.DeepSeq.NFData GitHub.Data.Content.UpdateFile
instance Data.Binary.Class.Binary GitHub.Data.Content.UpdateFile
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Content.UpdateFile
instance Control.DeepSeq.NFData GitHub.Data.Content.CreateFile
instance Data.Binary.Class.Binary GitHub.Data.Content.CreateFile
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Content.CreateFile
instance Control.DeepSeq.NFData GitHub.Data.Content.Author
instance Data.Binary.Class.Binary GitHub.Data.Content.Author
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Content.Author
instance Control.DeepSeq.NFData GitHub.Data.Content.ContentResult
instance Data.Binary.Class.Binary GitHub.Data.Content.ContentResult
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Content.ContentResult
instance Control.DeepSeq.NFData GitHub.Data.Content.ContentResultInfo
instance Data.Binary.Class.Binary GitHub.Data.Content.ContentResultInfo
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Content.ContentResultInfo
instance Control.DeepSeq.NFData GitHub.Data.Content.Content
instance Data.Binary.Class.Binary GitHub.Data.Content.Content
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Content.Content
instance Control.DeepSeq.NFData GitHub.Data.Content.ContentFileData
instance Data.Binary.Class.Binary GitHub.Data.Content.ContentFileData
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Content.ContentFileData
instance Control.DeepSeq.NFData GitHub.Data.Content.ContentItem
instance Data.Binary.Class.Binary GitHub.Data.Content.ContentItem
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Content.ContentItem
instance Control.DeepSeq.NFData GitHub.Data.Content.ContentInfo
instance Data.Binary.Class.Binary GitHub.Data.Content.ContentInfo
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Content.ContentInfo
instance Control.DeepSeq.NFData GitHub.Data.Content.ContentItemType
instance Data.Binary.Class.Binary GitHub.Data.Content.ContentItemType
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Content.ContentItemType

module GitHub.Data.Comments
data Comment
Comment :: !Maybe Int -> !Maybe Int -> !Text -> !Maybe Text -> !UTCTime -> !Maybe URL -> !URL -> !Maybe UTCTime -> !Maybe Text -> !SimpleUser -> !Id Comment -> Comment
[commentPosition] :: Comment -> !Maybe Int
[commentLine] :: Comment -> !Maybe Int
[commentBody] :: Comment -> !Text
[commentCommitId] :: Comment -> !Maybe Text
[commentUpdatedAt] :: Comment -> !UTCTime
[commentHtmlUrl] :: Comment -> !Maybe URL
[commentUrl] :: Comment -> !URL
[commentCreatedAt] :: Comment -> !Maybe UTCTime
[commentPath] :: Comment -> !Maybe Text
[commentUser] :: Comment -> !SimpleUser
[commentId] :: Comment -> !Id Comment
data NewComment
NewComment :: !Text -> NewComment
[newCommentBody] :: NewComment -> !Text
data EditComment
EditComment :: !Text -> EditComment
[editCommentBody] :: EditComment -> !Text
data NewPullComment
NewPullComment :: !Text -> !Text -> !Int -> !Text -> NewPullComment
[newPullCommentCommit] :: NewPullComment -> !Text
[newPullCommentPath] :: NewPullComment -> !Text
[newPullCommentPosition] :: NewPullComment -> !Int
[newPullCommentBody] :: NewPullComment -> !Text
data PullCommentReply
PullCommentReply :: Text -> PullCommentReply
[pullCommentReplyBody] :: PullCommentReply -> Text
instance GHC.Generics.Generic GitHub.Data.Comments.Comment
instance GHC.Classes.Ord GitHub.Data.Comments.Comment
instance GHC.Classes.Eq GitHub.Data.Comments.Comment
instance Data.Data.Data GitHub.Data.Comments.Comment
instance GHC.Show.Show GitHub.Data.Comments.Comment
instance GHC.Generics.Generic GitHub.Data.Comments.NewComment
instance GHC.Classes.Ord GitHub.Data.Comments.NewComment
instance GHC.Classes.Eq GitHub.Data.Comments.NewComment
instance Data.Data.Data GitHub.Data.Comments.NewComment
instance GHC.Show.Show GitHub.Data.Comments.NewComment
instance GHC.Generics.Generic GitHub.Data.Comments.EditComment
instance GHC.Classes.Ord GitHub.Data.Comments.EditComment
instance GHC.Classes.Eq GitHub.Data.Comments.EditComment
instance Data.Data.Data GitHub.Data.Comments.EditComment
instance GHC.Show.Show GitHub.Data.Comments.EditComment
instance GHC.Generics.Generic GitHub.Data.Comments.NewPullComment
instance GHC.Classes.Ord GitHub.Data.Comments.NewPullComment
instance GHC.Classes.Eq GitHub.Data.Comments.NewPullComment
instance Data.Data.Data GitHub.Data.Comments.NewPullComment
instance GHC.Show.Show GitHub.Data.Comments.NewPullComment
instance GHC.Generics.Generic GitHub.Data.Comments.PullCommentReply
instance GHC.Classes.Ord GitHub.Data.Comments.PullCommentReply
instance GHC.Classes.Eq GitHub.Data.Comments.PullCommentReply
instance Data.Data.Data GitHub.Data.Comments.PullCommentReply
instance GHC.Show.Show GitHub.Data.Comments.PullCommentReply
instance Control.DeepSeq.NFData GitHub.Data.Comments.PullCommentReply
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Comments.PullCommentReply
instance Control.DeepSeq.NFData GitHub.Data.Comments.NewPullComment
instance Data.Binary.Class.Binary GitHub.Data.Comments.NewPullComment
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Comments.NewPullComment
instance Control.DeepSeq.NFData GitHub.Data.Comments.EditComment
instance Data.Binary.Class.Binary GitHub.Data.Comments.EditComment
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Comments.EditComment
instance Control.DeepSeq.NFData GitHub.Data.Comments.NewComment
instance Data.Binary.Class.Binary GitHub.Data.Comments.NewComment
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Comments.NewComment
instance Control.DeepSeq.NFData GitHub.Data.Comments.Comment
instance Data.Binary.Class.Binary GitHub.Data.Comments.Comment
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Comments.Comment

module GitHub.Data.Activities
data RepoStarred
RepoStarred :: !UTCTime -> !Repo -> RepoStarred
[repoStarredStarredAt] :: RepoStarred -> !UTCTime
[repoStarredRepo] :: RepoStarred -> !Repo
data Subject
Subject :: !Text -> !URL -> !Maybe URL -> !Text -> Subject
[subjectTitle] :: Subject -> !Text
[subjectURL] :: Subject -> !URL
[subjectLatestCommentURL] :: Subject -> !Maybe URL
[subjectType] :: Subject -> !Text
data NotificationReason
AssignReason :: NotificationReason
AuthorReason :: NotificationReason
CommentReason :: NotificationReason
InvitationReason :: NotificationReason
ManualReason :: NotificationReason
MentionReason :: NotificationReason
ReviewRequestedReason :: NotificationReason
StateChangeReason :: NotificationReason
SubscribedReason :: NotificationReason
TeamMentionReason :: NotificationReason
data Notification
Notification :: !Id Notification -> !RepoRef -> !Subject -> !NotificationReason -> !Bool -> !Maybe UTCTime -> !Maybe UTCTime -> !URL -> Notification
[notificationId] :: Notification -> !Id Notification
[notificationRepo] :: Notification -> !RepoRef
[notificationSubject] :: Notification -> !Subject
[notificationReason] :: Notification -> !NotificationReason
[notificationUnread] :: Notification -> !Bool
[notificationUpdatedAt] :: Notification -> !Maybe UTCTime
[notificationLastReadAt] :: Notification -> !Maybe UTCTime
[notificationUrl] :: Notification -> !URL
instance GHC.Generics.Generic GitHub.Data.Activities.RepoStarred
instance GHC.Classes.Ord GitHub.Data.Activities.RepoStarred
instance GHC.Classes.Eq GitHub.Data.Activities.RepoStarred
instance Data.Data.Data GitHub.Data.Activities.RepoStarred
instance GHC.Show.Show GitHub.Data.Activities.RepoStarred
instance GHC.Generics.Generic GitHub.Data.Activities.Subject
instance GHC.Classes.Ord GitHub.Data.Activities.Subject
instance GHC.Classes.Eq GitHub.Data.Activities.Subject
instance Data.Data.Data GitHub.Data.Activities.Subject
instance GHC.Show.Show GitHub.Data.Activities.Subject
instance GHC.Generics.Generic GitHub.Data.Activities.NotificationReason
instance GHC.Classes.Ord GitHub.Data.Activities.NotificationReason
instance GHC.Classes.Eq GitHub.Data.Activities.NotificationReason
instance GHC.Enum.Bounded GitHub.Data.Activities.NotificationReason
instance GHC.Enum.Enum GitHub.Data.Activities.NotificationReason
instance Data.Data.Data GitHub.Data.Activities.NotificationReason
instance GHC.Show.Show GitHub.Data.Activities.NotificationReason
instance GHC.Generics.Generic GitHub.Data.Activities.Notification
instance GHC.Classes.Ord GitHub.Data.Activities.Notification
instance GHC.Classes.Eq GitHub.Data.Activities.Notification
instance Data.Data.Data GitHub.Data.Activities.Notification
instance GHC.Show.Show GitHub.Data.Activities.Notification
instance Control.DeepSeq.NFData GitHub.Data.Activities.Notification
instance Data.Binary.Class.Binary GitHub.Data.Activities.Notification
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Activities.Notification
instance Control.DeepSeq.NFData GitHub.Data.Activities.NotificationReason
instance Data.Binary.Class.Binary GitHub.Data.Activities.NotificationReason
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Activities.NotificationReason
instance Control.DeepSeq.NFData GitHub.Data.Activities.Subject
instance Data.Binary.Class.Binary GitHub.Data.Activities.Subject
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Activities.Subject
instance Control.DeepSeq.NFData GitHub.Data.Activities.RepoStarred
instance Data.Binary.Class.Binary GitHub.Data.Activities.RepoStarred
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Activities.RepoStarred

module GitHub.Data.Actions.Common

-- | A page of a paginated response.
data WithTotalCount a
WithTotalCount :: !Vector a -> !Int -> WithTotalCount a

-- | A snippet of the answer.
[withTotalCountItems] :: WithTotalCount a -> !Vector a

-- | The total size of the answer.
[withTotalCountTotalCount] :: WithTotalCount a -> !Int
instance GHC.Generics.Generic (GitHub.Data.Actions.Common.WithTotalCount a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (GitHub.Data.Actions.Common.WithTotalCount a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (GitHub.Data.Actions.Common.WithTotalCount a)
instance Data.Data.Data a => Data.Data.Data (GitHub.Data.Actions.Common.WithTotalCount a)
instance GHC.Show.Show a => GHC.Show.Show (GitHub.Data.Actions.Common.WithTotalCount a)
instance GHC.Base.Semigroup (GitHub.Data.Actions.Common.WithTotalCount a)
instance Data.Foldable.Foldable GitHub.Data.Actions.Common.WithTotalCount

module GitHub.Data.Actions.Workflows
data Workflow
Workflow :: !Id Workflow -> !Text -> !Text -> !Text -> !UTCTime -> !UTCTime -> !URL -> !URL -> !URL -> Workflow
[workflowWorkflowId] :: Workflow -> !Id Workflow
[workflowName] :: Workflow -> !Text
[workflowPath] :: Workflow -> !Text
[workflowState] :: Workflow -> !Text
[workflowCreatedAt] :: Workflow -> !UTCTime
[workflowUpdatedAt] :: Workflow -> !UTCTime
[workflowUrl] :: Workflow -> !URL
[workflowHtmlUrl] :: Workflow -> !URL
[workflowBadgeUrl] :: Workflow -> !URL
data CreateWorkflowDispatchEvent a
CreateWorkflowDispatchEvent :: !Text -> !a -> CreateWorkflowDispatchEvent a
[createWorkflowDispatchEventRef] :: CreateWorkflowDispatchEvent a -> !Text
[createWorkflowDispatchEventInputs] :: CreateWorkflowDispatchEvent a -> !a
instance GHC.Generics.Generic GitHub.Data.Actions.Workflows.Workflow
instance GHC.Classes.Ord GitHub.Data.Actions.Workflows.Workflow
instance GHC.Classes.Eq GitHub.Data.Actions.Workflows.Workflow
instance Data.Data.Data GitHub.Data.Actions.Workflows.Workflow
instance GHC.Show.Show GitHub.Data.Actions.Workflows.Workflow
instance GHC.Generics.Generic (GitHub.Data.Actions.Workflows.CreateWorkflowDispatchEvent a)
instance GHC.Show.Show a => GHC.Show.Show (GitHub.Data.Actions.Workflows.CreateWorkflowDispatchEvent a)
instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (GitHub.Data.Actions.Workflows.CreateWorkflowDispatchEvent a)
instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (GitHub.Data.Actions.Workflows.CreateWorkflowDispatchEvent a)
instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (GitHub.Data.Actions.Workflows.CreateWorkflowDispatchEvent a)
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Workflows.Workflow
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.Workflows.Workflow)

module GitHub.Data.Actions.WorkflowRuns
data WorkflowRun
WorkflowRun :: !Id WorkflowRun -> !Name WorkflowRun -> !Text -> !Text -> !Text -> !Text -> !Integer -> !Text -> !Text -> !Maybe Text -> !Integer -> !URL -> !URL -> !UTCTime -> !UTCTime -> !SimpleUser -> !Integer -> !UTCTime -> WorkflowRun
[workflowRunWorkflowRunId] :: WorkflowRun -> !Id WorkflowRun
[workflowRunName] :: WorkflowRun -> !Name WorkflowRun
[workflowRunHeadBranch] :: WorkflowRun -> !Text
[workflowRunHeadSha] :: WorkflowRun -> !Text
[workflowRunPath] :: WorkflowRun -> !Text
[workflowRunDisplayTitle] :: WorkflowRun -> !Text
[workflowRunRunNumber] :: WorkflowRun -> !Integer
[workflowRunEvent] :: WorkflowRun -> !Text
[workflowRunStatus] :: WorkflowRun -> !Text
[workflowRunConclusion] :: WorkflowRun -> !Maybe Text
[workflowRunWorkflowId] :: WorkflowRun -> !Integer
[workflowRunUrl] :: WorkflowRun -> !URL
[workflowRunHtmlUrl] :: WorkflowRun -> !URL
[workflowRunCreatedAt] :: WorkflowRun -> !UTCTime
[workflowRunUpdatedAt] :: WorkflowRun -> !UTCTime
[workflowRunActor] :: WorkflowRun -> !SimpleUser
[workflowRunAttempt] :: WorkflowRun -> !Integer
[workflowRunStartedAt] :: WorkflowRun -> !UTCTime
data RunAttempt
RunAttempt :: RunAttempt
data ReviewHistory
ReviewHistory :: !Text -> !Text -> !SimpleUser -> ReviewHistory
[reviewHistoryState] :: ReviewHistory -> !Text
[reviewHistoryComment] :: ReviewHistory -> !Text
[reviewHistoryUser] :: ReviewHistory -> !SimpleUser
instance GHC.Generics.Generic GitHub.Data.Actions.WorkflowRuns.WorkflowRun
instance GHC.Classes.Ord GitHub.Data.Actions.WorkflowRuns.WorkflowRun
instance GHC.Classes.Eq GitHub.Data.Actions.WorkflowRuns.WorkflowRun
instance Data.Data.Data GitHub.Data.Actions.WorkflowRuns.WorkflowRun
instance GHC.Show.Show GitHub.Data.Actions.WorkflowRuns.WorkflowRun
instance GHC.Generics.Generic GitHub.Data.Actions.WorkflowRuns.RunAttempt
instance GHC.Classes.Ord GitHub.Data.Actions.WorkflowRuns.RunAttempt
instance GHC.Classes.Eq GitHub.Data.Actions.WorkflowRuns.RunAttempt
instance Data.Data.Data GitHub.Data.Actions.WorkflowRuns.RunAttempt
instance GHC.Show.Show GitHub.Data.Actions.WorkflowRuns.RunAttempt
instance GHC.Generics.Generic GitHub.Data.Actions.WorkflowRuns.ReviewHistory
instance GHC.Classes.Ord GitHub.Data.Actions.WorkflowRuns.ReviewHistory
instance GHC.Classes.Eq GitHub.Data.Actions.WorkflowRuns.ReviewHistory
instance Data.Data.Data GitHub.Data.Actions.WorkflowRuns.ReviewHistory
instance GHC.Show.Show GitHub.Data.Actions.WorkflowRuns.ReviewHistory
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.WorkflowRuns.ReviewHistory
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.WorkflowRuns.WorkflowRun
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.WorkflowRuns.WorkflowRun)

module GitHub.Data.Actions.WorkflowJobs
data JobStep
JobStep :: !Name JobStep -> !Text -> !Text -> !Integer -> !UTCTime -> !UTCTime -> JobStep
[jobStepName] :: JobStep -> !Name JobStep
[jobStepStatus] :: JobStep -> !Text
[jobStepConclusion] :: JobStep -> !Text
[jobStepNumber] :: JobStep -> !Integer
[jobStepStartedAt] :: JobStep -> !UTCTime
[jobStepCompletedAt] :: JobStep -> !UTCTime
data Job
Job :: !Id Job -> !Id WorkflowRun -> !URL -> !Integer -> !Text -> !Text -> !URL -> !URL -> !Text -> !Text -> !UTCTime -> !UTCTime -> !Vector JobStep -> !URL -> !Vector Text -> !Integer -> !Text -> !Integer -> !Text -> Job
[jobId] :: Job -> !Id Job
[jobRunId] :: Job -> !Id WorkflowRun
[jobRunUrl] :: Job -> !URL
[jobRunAttempt] :: Job -> !Integer
[jobNodeId] :: Job -> !Text
[jobHeadSha] :: Job -> !Text
[jobUrl] :: Job -> !URL
[jobHtmlUrl] :: Job -> !URL
[jobStatus] :: Job -> !Text
[jobConclusion] :: Job -> !Text
[jobStartedAt] :: Job -> !UTCTime
[jobCompletedAt] :: Job -> !UTCTime
[jobSteps] :: Job -> !Vector JobStep
[jobRunCheckUrl] :: Job -> !URL
[jobLabels] :: Job -> !Vector Text
[jobRunnerId] :: Job -> !Integer
[jobRunnerName] :: Job -> !Text
[jobRunnerGroupId] :: Job -> !Integer
[jobRunnerGroupName] :: Job -> !Text
instance GHC.Generics.Generic GitHub.Data.Actions.WorkflowJobs.JobStep
instance GHC.Classes.Ord GitHub.Data.Actions.WorkflowJobs.JobStep
instance GHC.Classes.Eq GitHub.Data.Actions.WorkflowJobs.JobStep
instance Data.Data.Data GitHub.Data.Actions.WorkflowJobs.JobStep
instance GHC.Show.Show GitHub.Data.Actions.WorkflowJobs.JobStep
instance GHC.Generics.Generic GitHub.Data.Actions.WorkflowJobs.Job
instance GHC.Classes.Ord GitHub.Data.Actions.WorkflowJobs.Job
instance GHC.Classes.Eq GitHub.Data.Actions.WorkflowJobs.Job
instance Data.Data.Data GitHub.Data.Actions.WorkflowJobs.Job
instance GHC.Show.Show GitHub.Data.Actions.WorkflowJobs.Job
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.WorkflowJobs.Job
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.WorkflowJobs.Job)
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.WorkflowJobs.JobStep

module GitHub.Data.Actions.Secrets
data OrganizationSecret
OrganizationSecret :: !Name OrganizationSecret -> !UTCTime -> !UTCTime -> !Text -> OrganizationSecret
[organizationSecretName] :: OrganizationSecret -> !Name OrganizationSecret
[organizationSecretCreatedAt] :: OrganizationSecret -> !UTCTime
[organizationSecretUpdatedAt] :: OrganizationSecret -> !UTCTime
[organizationSecretVisibility] :: OrganizationSecret -> !Text
data PublicKey
PublicKey :: !Text -> !Text -> PublicKey
[publicKeyId] :: PublicKey -> !Text
[publicKeyKey] :: PublicKey -> !Text
data SetSecret
SetSecret :: !Text -> !Text -> !Text -> !Maybe [Id Repo] -> SetSecret
[setSecretPublicKeyId] :: SetSecret -> !Text
[setSecretEncryptedValue] :: SetSecret -> !Text
[setSecretVisibility] :: SetSecret -> !Text
[setSecretSelectedRepositoryIds] :: SetSecret -> !Maybe [Id Repo]
data SetRepoSecret
SetRepoSecret :: !Text -> !Text -> SetRepoSecret
[setRepoSecretPublicKeyId] :: SetRepoSecret -> !Text
[setRepoSecretEncryptedValue] :: SetRepoSecret -> !Text
data SelectedRepo
SelectedRepo :: !Id Repo -> !Name Repo -> SelectedRepo
[selectedRepoRepoId] :: SelectedRepo -> !Id Repo
[selectedRepoRepoName] :: SelectedRepo -> !Name Repo
data SetSelectedRepositories
SetSelectedRepositories :: ![Id Repo] -> SetSelectedRepositories
[setSelectedRepositoriesRepositoryIds] :: SetSelectedRepositories -> ![Id Repo]
data RepoSecret
RepoSecret :: !Name RepoSecret -> !UTCTime -> !UTCTime -> RepoSecret
[repoSecretName] :: RepoSecret -> !Name RepoSecret
[repoSecretCreatedAt] :: RepoSecret -> !UTCTime
[repoSecretUpdatedAt] :: RepoSecret -> !UTCTime
data Environment
Environment :: Environment
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.OrganizationSecret
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.OrganizationSecret
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.OrganizationSecret
instance Data.Data.Data GitHub.Data.Actions.Secrets.OrganizationSecret
instance GHC.Show.Show GitHub.Data.Actions.Secrets.OrganizationSecret
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.PublicKey
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.PublicKey
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.PublicKey
instance Data.Data.Data GitHub.Data.Actions.Secrets.PublicKey
instance GHC.Show.Show GitHub.Data.Actions.Secrets.PublicKey
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.SetSecret
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.SetSecret
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.SetSecret
instance Data.Data.Data GitHub.Data.Actions.Secrets.SetSecret
instance GHC.Show.Show GitHub.Data.Actions.Secrets.SetSecret
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.SetRepoSecret
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.SetRepoSecret
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.SetRepoSecret
instance Data.Data.Data GitHub.Data.Actions.Secrets.SetRepoSecret
instance GHC.Show.Show GitHub.Data.Actions.Secrets.SetRepoSecret
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.SelectedRepo
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.SelectedRepo
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.SelectedRepo
instance Data.Data.Data GitHub.Data.Actions.Secrets.SelectedRepo
instance GHC.Show.Show GitHub.Data.Actions.Secrets.SelectedRepo
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.SetSelectedRepositories
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.SetSelectedRepositories
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.SetSelectedRepositories
instance Data.Data.Data GitHub.Data.Actions.Secrets.SetSelectedRepositories
instance GHC.Show.Show GitHub.Data.Actions.Secrets.SetSelectedRepositories
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.RepoSecret
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.RepoSecret
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.RepoSecret
instance Data.Data.Data GitHub.Data.Actions.Secrets.RepoSecret
instance GHC.Show.Show GitHub.Data.Actions.Secrets.RepoSecret
instance GHC.Generics.Generic GitHub.Data.Actions.Secrets.Environment
instance GHC.Classes.Ord GitHub.Data.Actions.Secrets.Environment
instance GHC.Classes.Eq GitHub.Data.Actions.Secrets.Environment
instance Data.Data.Data GitHub.Data.Actions.Secrets.Environment
instance GHC.Show.Show GitHub.Data.Actions.Secrets.Environment
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Secrets.RepoSecret
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.Secrets.RepoSecret)
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Actions.Secrets.SetSelectedRepositories
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Secrets.SelectedRepo
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.Secrets.SelectedRepo)
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Actions.Secrets.SetRepoSecret
instance Data.Aeson.Types.ToJSON.ToJSON GitHub.Data.Actions.Secrets.SetSecret
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Secrets.PublicKey
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Secrets.OrganizationSecret
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.Secrets.OrganizationSecret)

module GitHub.Data.Actions.Cache
data Cache
Cache :: !Id Cache -> !Text -> !Text -> !Text -> !UTCTime -> !UTCTime -> !Int -> Cache
[cacheId] :: Cache -> !Id Cache
[cacheRef] :: Cache -> !Text
[cacheKey] :: Cache -> !Text
[cacheVersion] :: Cache -> !Text
[cacheLastAccessedAt] :: Cache -> !UTCTime
[cacheCreatedAt] :: Cache -> !UTCTime
[cacheSizeInBytes] :: Cache -> !Int
data RepositoryCacheUsage
RepositoryCacheUsage :: !Text -> !Int -> !Int -> RepositoryCacheUsage
[repositoryCacheUsageFullName] :: RepositoryCacheUsage -> !Text
[repositoryCacheUsageActiveCachesSizeInBytes] :: RepositoryCacheUsage -> !Int
[repositoryCacheUsageActiveCachesCount] :: RepositoryCacheUsage -> !Int
data OrganizationCacheUsage
OrganizationCacheUsage :: !Int -> !Int -> OrganizationCacheUsage
[organizationCacheUsageTotalActiveCachesSizeInBytes] :: OrganizationCacheUsage -> !Int
[organizationCacheUsageTotalActiveCachesCount] :: OrganizationCacheUsage -> !Int
instance GHC.Generics.Generic GitHub.Data.Actions.Cache.Cache
instance GHC.Classes.Ord GitHub.Data.Actions.Cache.Cache
instance GHC.Classes.Eq GitHub.Data.Actions.Cache.Cache
instance Data.Data.Data GitHub.Data.Actions.Cache.Cache
instance GHC.Show.Show GitHub.Data.Actions.Cache.Cache
instance GHC.Generics.Generic GitHub.Data.Actions.Cache.RepositoryCacheUsage
instance GHC.Classes.Ord GitHub.Data.Actions.Cache.RepositoryCacheUsage
instance GHC.Classes.Eq GitHub.Data.Actions.Cache.RepositoryCacheUsage
instance Data.Data.Data GitHub.Data.Actions.Cache.RepositoryCacheUsage
instance GHC.Show.Show GitHub.Data.Actions.Cache.RepositoryCacheUsage
instance GHC.Generics.Generic GitHub.Data.Actions.Cache.OrganizationCacheUsage
instance GHC.Classes.Ord GitHub.Data.Actions.Cache.OrganizationCacheUsage
instance GHC.Classes.Eq GitHub.Data.Actions.Cache.OrganizationCacheUsage
instance Data.Data.Data GitHub.Data.Actions.Cache.OrganizationCacheUsage
instance GHC.Show.Show GitHub.Data.Actions.Cache.OrganizationCacheUsage
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Cache.OrganizationCacheUsage
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Cache.RepositoryCacheUsage
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.Cache.RepositoryCacheUsage)
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Cache.Cache
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.Cache.Cache)

module GitHub.Data.Actions.Artifacts
data Artifact
Artifact :: !URL -> !UTCTime -> !Bool -> !UTCTime -> !Id Artifact -> !Text -> !Text -> !Int -> !UTCTime -> !URL -> !ArtifactWorkflowRun -> Artifact
[artifactArchiveDownloadUrl] :: Artifact -> !URL
[artifactCreatedAt] :: Artifact -> !UTCTime
[artifactExpired] :: Artifact -> !Bool
[artifactExpiresAt] :: Artifact -> !UTCTime
[artifactId] :: Artifact -> !Id Artifact
[artifactName] :: Artifact -> !Text
[artifactNodeId] :: Artifact -> !Text
[artifactSizeInBytes] :: Artifact -> !Int
[artifactUpdatedAt] :: Artifact -> !UTCTime
[artifactUrl] :: Artifact -> !URL
[artifactWorkflowRun] :: Artifact -> !ArtifactWorkflowRun
data ArtifactWorkflowRun
ArtifactWorkflowRun :: !Id WorkflowRun -> !Id Repo -> !Id Repo -> !Text -> !Text -> ArtifactWorkflowRun
[artifactWorkflowRunWorkflowRunId] :: ArtifactWorkflowRun -> !Id WorkflowRun
[artifactWorkflowRunRepositoryId] :: ArtifactWorkflowRun -> !Id Repo
[artifactWorkflowRunHeadRepositoryId] :: ArtifactWorkflowRun -> !Id Repo
[artifactWorkflowRunHeadBranch] :: ArtifactWorkflowRun -> !Text
[artifactWorkflowRunHeadSha] :: ArtifactWorkflowRun -> !Text
instance GHC.Generics.Generic GitHub.Data.Actions.Artifacts.ArtifactWorkflowRun
instance GHC.Classes.Ord GitHub.Data.Actions.Artifacts.ArtifactWorkflowRun
instance GHC.Classes.Eq GitHub.Data.Actions.Artifacts.ArtifactWorkflowRun
instance Data.Data.Data GitHub.Data.Actions.Artifacts.ArtifactWorkflowRun
instance GHC.Show.Show GitHub.Data.Actions.Artifacts.ArtifactWorkflowRun
instance GHC.Generics.Generic GitHub.Data.Actions.Artifacts.Artifact
instance GHC.Classes.Ord GitHub.Data.Actions.Artifacts.Artifact
instance GHC.Classes.Eq GitHub.Data.Actions.Artifacts.Artifact
instance Data.Data.Data GitHub.Data.Actions.Artifacts.Artifact
instance GHC.Show.Show GitHub.Data.Actions.Artifacts.Artifact
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Artifacts.Artifact
instance Data.Aeson.Types.FromJSON.FromJSON (GitHub.Data.Actions.Common.WithTotalCount GitHub.Data.Actions.Artifacts.Artifact)
instance Data.Aeson.Types.FromJSON.FromJSON GitHub.Data.Actions.Artifacts.ArtifactWorkflowRun

module GitHub.Auth

-- | The Github auth data type
data Auth

-- | Username and password
BasicAuth :: ByteString -> ByteString -> Auth

-- | OAuth token
OAuth :: Token -> Auth

-- | Custom endpoint and OAuth token
EnterpriseOAuth :: Text -> Token -> Auth

-- | A type class for different authentication methods
--   
--   Note the <tt>()</tt> intance, which doee nothing, i.e. is
--   unauthenticated.
class AuthMethod a

-- | Custom API endpoint without trailing slash
endpoint :: AuthMethod a => a -> Maybe Text

-- | A function which sets authorisation on an HTTP request
setAuthRequest :: AuthMethod a => a -> Request -> Request
instance GHC.Generics.Generic GitHub.Auth.Auth
instance GHC.Classes.Ord GitHub.Auth.Auth
instance GHC.Classes.Eq GitHub.Auth.Auth
instance Data.Data.Data GitHub.Auth.Auth
instance GHC.Show.Show GitHub.Auth.Auth
instance GitHub.Auth.AuthMethod ()
instance GitHub.Auth.AuthMethod GitHub.Auth.Auth
instance Control.DeepSeq.NFData GitHub.Auth.Auth
instance Data.Binary.Class.Binary GitHub.Auth.Auth
instance Data.Hashable.Class.Hashable GitHub.Auth.Auth


-- | This module re-exports the <tt>GitHub.Data.</tt> and
--   <a>GitHub.Auth</a> submodules.
module GitHub.Data
data Name entity

-- | Smart constructor for <a>Name</a>
mkName :: proxy entity -> Text -> Name entity
untagName :: Name entity -> Text
mkOwnerName :: Text -> Name Owner
mkUserName :: Text -> Name User
mkTeamName :: Text -> Name Team
mkOrganizationName :: Text -> Name Organization
mkRepoName :: Text -> Name Repo
mkCommitName :: Text -> Name Commit
fromUserName :: Name User -> Name Owner
fromOrganizationName :: Name Organization -> Name Owner

-- | Numeric identifier.
data Id entity

-- | Smart constructor for <a>Id</a>.
mkId :: proxy entity -> Int -> Id entity
untagId :: Id entity -> Int
mkOwnerId :: Int -> Id Owner
mkUserId :: Int -> Id User
mkTeamId :: Int -> Id Team
mkOrganizationId :: Int -> Id Organization
mkRepoId :: Int -> Id Repo
fromUserId :: Id User -> Id Owner
fromOrganizationId :: Id Organization -> Id Owner
newtype IssueNumber
IssueNumber :: Int -> IssueNumber


-- | The public keys API, as described at
--   <a>https://developer.github.com/v3/users/keys/</a>
module GitHub.Endpoints.Users.PublicSSHKeys

-- | Querying the authenticated users' public SSH keys See
--   <a>https://developer.github.com/v3/users/keys/#list-your-public-keys</a>
publicSSHKeysR :: Request 'RA (Vector PublicSSHKey)

-- | Querying public SSH keys. See
--   <a>https://developer.github.com/v3/users/keys/#list-public-keys-for-a-user</a>
publicSSHKeysForR :: Name Owner -> FetchCount -> Request 'RO (Vector PublicSSHKeyBasic)

-- | Querying a public SSH key. See
--   <a>https://developer.github.com/v3/users/keys/#get-a-single-public-key</a>
publicSSHKeyR :: Id PublicSSHKey -> Request 'RA PublicSSHKey

-- | Create a public SSH key. See
--   <a>https://developer.github.com/v3/users/keys/#create-a-public-key</a>.
createUserPublicSSHKeyR :: NewPublicSSHKey -> Request 'RW PublicSSHKey

-- | Delete a public SSH key. See
--   <a>https://developer.github.com/v3/users/keys/#delete-a-public-key</a>
deleteUserPublicSSHKeyR :: Id PublicSSHKey -> GenRequest 'MtUnit 'RW ()


-- | The user followers API as described on
--   <a>http://developer.github.com/v3/users/followers/</a>.
module GitHub.Endpoints.Users.Followers

-- | List followers of a user. See
--   <a>https://developer.github.com/v3/users/followers/#list-followers-of-a-user</a>
usersFollowingR :: Name User -> FetchCount -> Request k (Vector SimpleUser)

-- | List users followed by another user. See
--   <a>https://developer.github.com/v3/users/followers/#list-users-followed-by-another-user</a>
usersFollowedByR :: Name User -> FetchCount -> Request k (Vector SimpleUser)


-- | The user emails API as described on
--   <a>http://developer.github.com/v3/users/emails/</a>.
module GitHub.Endpoints.Users.Emails

-- | List email addresses. See
--   <a>https://developer.github.com/v3/users/emails/#list-email-addresses-for-a-user</a>
currentUserEmailsR :: FetchCount -> Request 'RA (Vector Email)

-- | List public email addresses. See
--   <a>https://developer.github.com/v3/users/emails/#list-public-email-addresses-for-a-user</a>
currentUserPublicEmailsR :: FetchCount -> Request 'RA (Vector Email)


-- | The Github Users API, as described at
--   <a>http://developer.github.com/v3/users/</a>.
module GitHub.Endpoints.Users

-- | Query a single user. See
--   <a>https://developer.github.com/v3/users/#get-a-single-user</a>
--   
--   <pre>
--   &gt;&gt;&gt; github' userInfoForR "mike-burns"
--   </pre>
--   
--   or
--   
--   <pre>
--   &gt;&gt;&gt; github userInfoForR (OAuth "github-token") "mike-burns"
--   </pre>
userInfoForR :: Name User -> Request k User

-- | Query a single user or an organization. See
--   <a>https://developer.github.com/v3/users/#get-a-single-user</a>
ownerInfoForR :: Name Owner -> Request k Owner

-- | Query the authenticated user. See
--   <a>https://developer.github.com/v3/users/#get-the-authenticated-user</a>
userInfoCurrentR :: Request 'RA User


-- | The Github Search API, as described at
--   <a>http://developer.github.com/v3/search/</a>.
module GitHub.Endpoints.Search

-- | Search repositories. See
--   <a>https://developer.github.com/v3/search/#search-repositories</a>
searchReposR :: Text -> FetchCount -> Request k (SearchResult Repo)

-- | Search code. See
--   <a>https://developer.github.com/v3/search/#search-code</a>
searchCodeR :: Text -> FetchCount -> Request k (SearchResult Code)

-- | Search issues. See
--   <a>https://developer.github.com/v3/search/#search-issues</a>
searchIssuesR :: Text -> FetchCount -> Request k (SearchResult Issue)

-- | Search users. See
--   <a>https://developer.github.com/v3/search/#search-code</a>
searchUsersR :: Text -> FetchCount -> Request k (SearchResult SimpleUser)


-- | The webhooks API, as described at
--   <a>https://developer.github.com/v3/repos/hooks/</a>
--   <a>https://developer.github.com/webhooks</a>
module GitHub.Endpoints.Repos.Webhooks

-- | List hooks. See
--   <a>https://developer.github.com/v3/repos/hooks/#list-hooks</a>
webhooksForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector RepoWebhook)
webhookForR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request k RepoWebhook

-- | Create a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#create-a-hook</a>
createRepoWebhookR :: Name Owner -> Name Repo -> NewRepoWebhook -> Request 'RW RepoWebhook

-- | Edit a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#edit-a-hook</a>
editRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> EditRepoWebhook -> Request 'RW RepoWebhook

-- | Test a push hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#test-a-push-hook</a>
testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool

-- | Ping a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#ping-a-hook</a>
pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool

-- | Delete a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#delete-a-hook</a>
deleteRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtUnit 'RW ()


-- | The repo statuses API as described on
--   <a>https://developer.github.com/v3/repos/statuses/</a>.
module GitHub.Endpoints.Repos.Statuses

-- | Create a new status See
--   <a>https://developer.github.com/v3/repos/statuses/#create-a-status</a>
createStatusR :: Name Owner -> Name Repo -> Name Commit -> NewStatus -> Request 'RW Status

-- | All statuses for a commit See
--   <a>https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref</a>
statusesForR :: Name Owner -> Name Repo -> Name Commit -> FetchCount -> Request 'RW (Vector Status)

-- | The combined status for a specific commit See
--   <a>https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref</a>
statusForR :: Name Owner -> Name Repo -> Name Commit -> Request 'RW CombinedStatus

module GitHub.Endpoints.Repos.Releases

-- | List releases for a repository. See
--   <a>https://developer.github.com/v3/repos/releases/#list-releases-for-a-repository</a>
releasesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Release)

-- | Get a single release. See
--   <a>https://developer.github.com/v3/repos/releases/#get-a-single-release</a>
releaseR :: Name Owner -> Name Repo -> Id Release -> Request k Release

-- | Get the latest release. See
--   <a>https://developer.github.com/v3/repos/releases/#get-the-latest-release</a>
latestReleaseR :: Name Owner -> Name Repo -> Request k Release

-- | Get a release by tag name See
--   <a>https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name</a>
releaseByTagNameR :: Name Owner -> Name Repo -> Text -> Request k Release


-- | The repo invitations API as described on
--   <a>https://developer.github.com/v3/repos/invitations/</a>.
module GitHub.Endpoints.Repos.Invitations

-- | List open invitations of a repository See
--   <a>https://developer.github.com/v3/repos/invitations/#list-invitations-for-a-repository</a>
listInvitationsOnR :: Name Owner -> Name Repo -> FetchCount -> GenRequest 'MtJSON k (Vector RepoInvitation)

-- | List a user's repository invitations See
--   <a>https://developer.github.com/v3/repos/invitations/#list-a-users-repository-invitations</a>
listInvitationsForR :: FetchCount -> Request k (Vector RepoInvitation)

-- | Accept a repository invitation See
--   <a>https://developer.github.com/v3/repos/invitations/#accept-a-repository-invitation</a>
acceptInvitationFromR :: Id RepoInvitation -> GenRequest 'MtUnit 'RW ()


-- | Hot forking action, as described at
--   <a>http://developer.github.com/v3/repos/forks/</a>.
module GitHub.Endpoints.Repos.Forks

-- | List forks. See
--   <a>https://developer.github.com/v3/repos/forks/#list-forks</a>
forksForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Repo)


-- | The deployments API, as described at
--   <a>https://developer.github.com/v3/repos/deployments/</a>
module GitHub.Endpoints.Repos.Deployments

-- | List deployments. See
--   <a>https://developer.github.com/v3/repos/deployments/#list-deployments</a>
deploymentsWithOptionsForR :: FromJSON a => Name Owner -> Name Repo -> FetchCount -> [DeploymentQueryOption] -> Request 'RA (Vector (Deployment a))

-- | Create a deployment. See
--   <a>https://developer.github.com/v3/repos/deployments/#create-a-deployment</a>
createDeploymentR :: (ToJSON a, FromJSON a) => Name Owner -> Name Repo -> CreateDeployment a -> Request 'RW (Deployment a)

-- | List deployment statuses. See
--   <a>https://developer.github.com/v3/repos/deployments/#list-deployment-statuses</a>
deploymentStatusesForR :: Name Owner -> Name Repo -> Id (Deployment a) -> FetchCount -> Request 'RA (Vector DeploymentStatus)

-- | Create a deployment status. See
--   <a>https://developer.github.com/v3/repos/deployments/#list-deployment-statuses</a>
createDeploymentStatusR :: Name Owner -> Name Repo -> Id (Deployment a) -> CreateDeploymentStatus -> Request 'RW DeploymentStatus


-- | The deploy keys API, as described at
--   <a>https://developer.github.com/v3/repos/keys</a>
module GitHub.Endpoints.Repos.DeployKeys

-- | Querying deploy keys. See
--   <a>https://developer.github.com/v3/repos/keys/#list-deploy-keys</a>
deployKeysForR :: Name Owner -> Name Repo -> FetchCount -> Request 'RA (Vector RepoDeployKey)

-- | Querying a deploy key. See
--   <a>https://developer.github.com/v3/repos/keys/#get-a-deploy-key</a>
deployKeyForR :: Name Owner -> Name Repo -> Id RepoDeployKey -> Request 'RA RepoDeployKey

-- | Create a deploy key. See
--   <a>https://developer.github.com/v3/repos/keys/#add-a-new-deploy-key</a>.
createRepoDeployKeyR :: Name Owner -> Name Repo -> NewRepoDeployKey -> Request 'RW RepoDeployKey

-- | Delete a deploy key. See
--   <a>https://developer.github.com/v3/repos/keys/#remove-a-deploy-key</a>
deleteRepoDeployKeyR :: Name Owner -> Name Repo -> Id RepoDeployKey -> GenRequest 'MtUnit 'RW ()


-- | The Github Repo Contents API, as documented at
--   <a>https://developer.github.com/v3/repos/contents/</a>
module GitHub.Endpoints.Repos.Contents
contentsForR :: Name Owner -> Name Repo -> Text -> Maybe Text -> Request k Content
readmeForR :: Name Owner -> Name Repo -> Request k Content

-- | Get archive link. See
--   <a>https://developer.github.com/v3/repos/contents/#get-archive-link</a>
archiveForR :: Name Owner -> Name Repo -> ArchiveFormat -> Maybe Text -> GenRequest 'MtRedirect rw URI

-- | Create a file. See
--   <a>https://developer.github.com/v3/repos/contents/#create-a-file</a>
createFileR :: Name Owner -> Name Repo -> CreateFile -> Request 'RW ContentResult

-- | Update a file. See
--   <a>https://developer.github.com/v3/repos/contents/#update-a-file</a>
updateFileR :: Name Owner -> Name Repo -> UpdateFile -> Request 'RW ContentResult

-- | Delete a file. See
--   <a>https://developer.github.com/v3/repos/contents/#delete-a-file</a>
deleteFileR :: Name Owner -> Name Repo -> DeleteFile -> GenRequest 'MtUnit 'RW ()


-- | The repo commits API as described on
--   <a>http://developer.github.com/v3/repos/commits/</a>.
module GitHub.Endpoints.Repos.Commits

-- | The options for querying commits.
data CommitQueryOption
CommitQuerySha :: !Text -> CommitQueryOption
CommitQueryPath :: !Text -> CommitQueryOption
CommitQueryAuthor :: !Text -> CommitQueryOption
CommitQuerySince :: !UTCTime -> CommitQueryOption
CommitQueryUntil :: !UTCTime -> CommitQueryOption

-- | List commits on a repository. See
--   <a>https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository</a>
commitsForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Commit)

-- | List commits on a repository. See
--   <a>https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository</a>
commitsWithOptionsForR :: Name Owner -> Name Repo -> FetchCount -> [CommitQueryOption] -> Request k (Vector Commit)

-- | Query a single commit. See
--   <a>https://developer.github.com/v3/repos/commits/#get-a-single-commit</a>
commitR :: Name Owner -> Name Repo -> Name Commit -> Request k Commit

-- | Compare two commits. See
--   <a>https://developer.github.com/v3/repos/commits/#compare-two-commits</a>
diffR :: Name Owner -> Name Repo -> Name Commit -> Name Commit -> Request k Diff


-- | The repo commits API as described on
--   <a>http://developer.github.com/v3/repos/comments/</a>.
module GitHub.Endpoints.Repos.Comments

-- | List commit comments for a repository. See
--   <a>https://developer.github.com/v3/repos/comments/#list-commit-comments-for-a-repository</a>
commentsForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Comment)

-- | List comments for a single commit. See
--   <a>https://developer.github.com/v3/repos/comments/#list-comments-for-a-single-commit</a>
commitCommentsForR :: Name Owner -> Name Repo -> Name Commit -> FetchCount -> Request k (Vector Comment)

-- | Query a single commit comment. See
--   <a>https://developer.github.com/v3/repos/comments/#get-a-single-commit-comment</a>
commitCommentForR :: Name Owner -> Name Repo -> Id Comment -> Request k Comment


-- | The repo collaborators API as described on
--   <a>http://developer.github.com/v3/repos/collaborators/</a>.
module GitHub.Endpoints.Repos.Collaborators

-- | List collaborators. See
--   <a>https://developer.github.com/v3/repos/collaborators/#list-collaborators</a>
collaboratorsOnR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector SimpleUser)

-- | Review a user's permission level.
--   <a>https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level</a>
collaboratorPermissionOnR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtJSON rw CollaboratorWithPermission

-- | Check if a user is a collaborator. See
--   <a>https://developer.github.com/v3/repos/collaborators/#check-if-a-user-is-a-collaborator</a>
isCollaboratorOnR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtStatus rw Bool

-- | Invite a user as a collaborator. See
--   <a>https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator</a>
addCollaboratorR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtJSON 'RW (Maybe RepoInvitation)


-- | The Github Repos API, as documented at
--   <a>http://developer.github.com/v3/repos/</a>
module GitHub.Endpoints.Repos

-- | List your repositories. See
--   <a>https://docs.github.com/en/rest/reference/repos#list-repositories-for-the-authenticated-user</a>
currentUserReposR :: RepoPublicity -> FetchCount -> Request k (Vector Repo)

-- | List user repositories. See
--   <a>https://docs.github.com/en/rest/reference/repos#list-repositories-for-a-user</a>
userReposR :: Name Owner -> RepoPublicity -> FetchCount -> Request k (Vector Repo)

-- | List organization repositories. See
--   <a>https://docs.github.com/en/rest/reference/repos#list-organization-repositories</a>
organizationReposR :: Name Organization -> RepoPublicity -> FetchCount -> Request k (Vector Repo)

-- | Query single repository. See
--   <a>https://developer.github.com/v3/repos/#get</a>
repositoryR :: Name Owner -> Name Repo -> Request k Repo

-- | List contributors. See
--   <a>https://developer.github.com/v3/repos/#list-contributors</a>
contributorsR :: Name Owner -> Name Repo -> Bool -> FetchCount -> Request k (Vector Contributor)

-- | List languages. See
--   <a>https://developer.github.com/v3/repos/#list-languages</a>
languagesForR :: Name Owner -> Name Repo -> Request k Languages

-- | List tags. See <a>https://developer.github.com/v3/repos/#list-tags</a>
tagsForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Tag)

-- | List branches. See
--   <a>https://developer.github.com/v3/repos/#list-branches</a>
branchesForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Branch)

-- | Create a new repository. See
--   <a>https://developer.github.com/v3/repos/#create</a>
createRepoR :: NewRepo -> Request 'RW Repo

-- | Create a new repository for an organization. See
--   <a>https://developer.github.com/v3/repos/#create</a>
createOrganizationRepoR :: Name Organization -> NewRepo -> Request 'RW Repo

-- | Fork an existing repository. See
--   <a>https://developer.github.com/v3/repos/forks/#create-a-fork</a>
--   TODO: The third paramater (an optional Organisation) is not used yet.
forkExistingRepoR :: Name Owner -> Name Repo -> Maybe (Name Owner) -> Request 'RW Repo

-- | Edit an existing repository. See
--   <a>https://developer.github.com/v3/repos/#edit</a>
editRepoR :: Name Owner -> Name Repo -> EditRepo -> Request 'RW Repo

-- | Delete a repository,. See
--   <a>https://developer.github.com/v3/repos/#delete-a-repository</a>
deleteRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()


-- | The Github RateLimit API, as described at
--   <a>http://developer.github.com/v3/rate_limit/</a>.
module GitHub.Endpoints.RateLimit

-- | Get your current rate limit status.
--   <a>https://developer.github.com/v3/rate_limit/#get-your-current-rate-limit-status</a>
rateLimitR :: Request k RateLimit


-- | The reviews API as described on
--   <a>http://developer.github.com/v3/pulls/reviews/</a>.
module GitHub.Endpoints.PullRequests.Reviews

-- | List reviews for a pull request. See
--   <a>https://developer.github.com/v3/pulls/reviews/#list-reviews-on-a-pull-request</a>
pullRequestReviewsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Review)

-- | Query a single pull request review. see
--   <a>https://developer.github.com/v3/pulls/reviews/#get-a-single-review</a>
pullRequestReviewR :: Name Owner -> Name Repo -> IssueNumber -> Id Review -> Request k Review

-- | Query the comments for a single pull request review. see
--   <a>https://developer.github.com/v3/pulls/reviews/#get-comments-for-a-single-review</a>
pullRequestReviewCommentsR :: Name Owner -> Name Repo -> IssueNumber -> Id Review -> Request k [ReviewComment]


-- | The pull request review comments API as described at
--   <a>http://developer.github.com/v3/pulls/comments/</a>.
module GitHub.Endpoints.PullRequests.Comments

-- | List comments on a pull request. See
--   <a>https://developer.github.com/v3/pulls/comments/#list-comments-on-a-pull-request</a>
pullRequestCommentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Comment)

-- | Query a single comment. See
--   <a>https://developer.github.com/v3/pulls/comments/#get-a-single-comment</a>
pullRequestCommentR :: Name Owner -> Name Repo -> Id Comment -> Request k Comment

-- | Create a comment.
--   
--   See
--   <a>https://developer.github.com/v3/pulls/comments/#create-a-comment</a>
createPullCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Text -> Int -> Text -> Request 'RW Comment

-- | Create a comment reply.
--   
--   See
--   <a>https://developer.github.com/v3/pulls/comments/#create-a-review-comment-reply</a>
createPullCommentReplyR :: Name Owner -> Name Repo -> IssueNumber -> Id Comment -> Text -> Request 'RW Comment


-- | The pull requests API as documented at
--   <a>http://developer.github.com/v3/pulls/</a>.
module GitHub.Endpoints.PullRequests

-- | List pull requests. See
--   <a>https://developer.github.com/v3/pulls/#list-pull-requests</a>
pullRequestsForR :: Name Owner -> Name Repo -> PullRequestMod -> FetchCount -> Request k (Vector SimplePullRequest)

-- | Query a single pull request. See
--   <a>https://developer.github.com/v3/pulls/#get-a-single-pull-request</a>
pullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Request k PullRequest

-- | Query a single pull request to obtain the diff See
--   <a>https://developer.github.com/v3/pulls/#get-a-single-pull-request</a>
pullRequestDiffR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtDiff rw ByteString

-- | Query a single pull request to obtain the patch See
--   <a>https://developer.github.com/v3/pulls/#get-a-single-pull-request</a>
pullRequestPatchR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtPatch rw ByteString

-- | Create a pull request. See
--   <a>https://developer.github.com/v3/pulls/#create-a-pull-request</a>
createPullRequestR :: Name Owner -> Name Repo -> CreatePullRequest -> Request 'RW PullRequest

-- | Update a pull request. See
--   <a>https://developer.github.com/v3/pulls/#update-a-pull-request</a>
updatePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> EditPullRequest -> Request 'RW PullRequest

-- | List commits on a pull request. See
--   <a>https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request</a>
pullRequestCommitsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Commit)

-- | List pull requests files. See
--   <a>https://developer.github.com/v3/pulls/#list-pull-requests-files</a>
pullRequestFilesR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector File)

-- | Query if a pull request has been merged. See
--   <a>https://developer.github.com/v3/pulls/#get-if-a-pull-request-has-been-merged</a>
isPullRequestMergedR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtStatus rw Bool

-- | Merge a pull request (Merge Button).
--   <a>https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button</a>
mergePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Maybe Text -> GenRequest 'MtStatus 'RW MergeResult


-- | The Owner teams API as described on
--   <a>http://developer.github.com/v3/orgs/teams/</a>.
module GitHub.Endpoints.Organizations.Teams

-- | List teams. See
--   <a>https://developer.github.com/v3/orgs/teams/#list-teams</a>
teamsOfR :: Name Organization -> FetchCount -> Request k (Vector SimpleTeam)

-- | Query team. See
--   <a>https://developer.github.com/v3/orgs/teams/#get-team</a>
teamInfoForR :: Id Team -> Request k Team

-- | Create team. See
--   <a>https://developer.github.com/v3/orgs/teams/#create-team</a>
createTeamForR :: Name Organization -> CreateTeam -> Request 'RW Team

-- | Edit team. See
--   <a>https://developer.github.com/v3/orgs/teams/#edit-team</a>
editTeamR :: Id Team -> EditTeam -> Request 'RW Team
deleteTeamR :: Id Team -> GenRequest 'MtUnit 'RW ()

-- | List team members.
--   
--   See
--   <a>https://developer.github.com/v3/orgs/teams/#list-team-members</a>
listTeamMembersR :: Id Team -> TeamMemberRole -> FetchCount -> Request 'RA (Vector SimpleUser)

-- | Query team repositories. See
--   <a>https://developer.github.com/v3/orgs/teams/#list-team-repos</a>
listTeamReposR :: Id Team -> FetchCount -> Request k (Vector Repo)

-- | Add or update a team repository. See
--   <a>https://developer.github.com/v3/orgs/teams/#add-or-update-team-repository</a>
addOrUpdateTeamRepoR :: Id Team -> Name Organization -> Name Repo -> Permission -> GenRequest 'MtUnit 'RW ()

-- | Query team membership. See
--   &lt;<a>https://developer.github.com/v3/orgs/teams/#get-team-membership</a>
teamMembershipInfoForR :: Id Team -> Name Owner -> Request k TeamMembership

-- | Add team membership. See
--   <a>https://developer.github.com/v3/orgs/teams/#add-team-membership</a>
addTeamMembershipForR :: Id Team -> Name Owner -> Role -> Request 'RW TeamMembership

-- | Remove team membership. See
--   <a>https://developer.github.com/v3/orgs/teams/#remove-team-membership</a>
deleteTeamMembershipForR :: Id Team -> Name Owner -> GenRequest 'MtUnit 'RW ()

-- | List user teams. See
--   <a>https://developer.github.com/v3/orgs/teams/#list-user-teams</a>
listTeamsCurrentR :: FetchCount -> Request 'RA (Vector Team)


-- | The organization members API as described on
--   <a>https://developer.github.com/v3/orgs/outside_collaborators/</a>.
module GitHub.Endpoints.Organizations.OutsideCollaborators

-- | All the users who are outside collaborators of the specified
--   organization.
--   
--   See
--   <a>https://developer.github.com/v3/orgs/outside_collaborators/#list-outside-collaborators</a>
outsideCollaboratorsR :: Name Organization -> FetchCount -> Request k (Vector SimpleUser)


-- | The organization members API as described on
--   <a>http://developer.github.com/v3/orgs/members/</a>.
module GitHub.Endpoints.Organizations.Members

-- | All the users who are members of the specified organization.
--   
--   See <a>https://developer.github.com/v3/orgs/members/#members-list</a>
membersOfR :: Name Organization -> FetchCount -> Request k (Vector SimpleUser)

-- | <a>membersOfR</a> with filters.
--   
--   See <a>https://developer.github.com/v3/orgs/members/#members-list</a>
membersOfWithR :: Name Organization -> OrgMemberFilter -> OrgMemberRole -> FetchCount -> Request k (Vector SimpleUser)

-- | Check if a user is a member of an organization.
--   
--   See
--   <a>https://developer.github.com/v3/orgs/members/#check-membership</a>
isMemberOfR :: Name User -> Name Organization -> GenRequest 'MtStatus rw Bool

-- | List pending organization invitations
--   
--   See
--   <a>https://developer.github.com/v3/orgs/members/#list-pending-organization-invitations</a>
orgInvitationsR :: Name Organization -> FetchCount -> Request 'RA (Vector Invitation)


-- | The orgs API as described on
--   <a>http://developer.github.com/v3/orgs/</a>.
module GitHub.Endpoints.Organizations

-- | List public user organizations. See
--   <a>https://developer.github.com/v3/orgs/#list-user-organizations</a>
publicOrganizationsForR :: Name User -> FetchCount -> Request k (Vector SimpleOrganization)

-- | Query an organization. See
--   <a>https://developer.github.com/v3/orgs/#get-an-organization</a>
publicOrganizationR :: Name Organization -> Request k Organization

-- | List all user organizations. See
--   <a>https://developer.github.com/v3/orgs/#list-your-organizations</a>
organizationsR :: FetchCount -> Request k (Vector SimpleOrganization)


-- | The milestones API as described on
--   <a>http://developer.github.com/v3/issues/milestones/</a>.
module GitHub.Endpoints.Issues.Milestones

-- | List milestones for a repository. See
--   <a>https://developer.github.com/v3/issues/milestones/#list-milestones-for-a-repository</a>
milestonesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Milestone)

-- | Query a single milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#get-a-single-milestone</a>
milestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request k Milestone

-- | Create a milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#create-a-milestone</a>
createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Milestone

-- | Update a milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#update-a-milestone</a>
updateMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> Request 'RW Milestone

-- | Delete a milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#delete-a-milestone</a>
deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> GenRequest 'MtUnit 'RW ()


-- | The API for dealing with labels on Github issues as described on
--   <a>http://developer.github.com/v3/issues/labels/</a>.
module GitHub.Endpoints.Issues.Labels

-- | List all labels for this repository. See
--   <a>https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository</a>
labelsOnRepoR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector IssueLabel)

-- | Query a single label. See
--   <a>https://developer.github.com/v3/issues/labels/#get-a-single-label</a>
labelR :: Name Owner -> Name Repo -> Name IssueLabel -> Request k IssueLabel

-- | Create a label. See
--   <a>https://developer.github.com/v3/issues/labels/#create-a-label</a>
createLabelR :: Name Owner -> Name Repo -> NewIssueLabel -> Request 'RW IssueLabel

-- | Update a label. See
--   <a>https://developer.github.com/v3/issues/labels/#update-a-label</a>
updateLabelR :: Name Owner -> Name Repo -> Name IssueLabel -> UpdateIssueLabel -> Request 'RW IssueLabel

-- | Delete a label. See
--   <a>https://developer.github.com/v3/issues/labels/#delete-a-label</a>
deleteLabelR :: Name Owner -> Name Repo -> Name IssueLabel -> GenRequest 'MtUnit 'RW ()

-- | List labels on an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#list-labels-on-an-issue</a>
labelsOnIssueR :: Name Owner -> Name Repo -> Id Issue -> FetchCount -> Request k (Vector IssueLabel)

-- | Add lables to an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue</a>
addLabelsToIssueR :: Foldable f => Name Owner -> Name Repo -> Id Issue -> f (Name IssueLabel) -> Request 'RW (Vector IssueLabel)

-- | Remove a label from an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#remove-a-label-from-an-issue</a>
removeLabelFromIssueR :: Name Owner -> Name Repo -> Id Issue -> Name IssueLabel -> GenRequest 'MtUnit 'RW ()

-- | Replace all labels on an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#replace-all-labels-for-an-issue</a>
--   
--   Sending an empty list will remove all labels from the issue.
replaceAllLabelsForIssueR :: Foldable f => Name Owner -> Name Repo -> Id Issue -> f (Name IssueLabel) -> Request 'RW (Vector IssueLabel)

-- | Remove all labels from an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#remove-all-labels-from-an-issue</a>
removeAllLabelsFromIssueR :: Name Owner -> Name Repo -> Id Issue -> GenRequest 'MtUnit 'RW ()

-- | Query labels for every issue in a milestone. See
--   <a>https://developer.github.com/v3/issues/labels/#get-labels-for-every-issue-in-a-milestone</a>
labelsOnMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> FetchCount -> Request k (Vector IssueLabel)


-- | The Github issue events API, which is described on
--   <a>http://developer.github.com/v3/issues/events/</a>
module GitHub.Endpoints.Issues.Events

-- | List events for an issue. See
--   <a>https://developer.github.com/v3/issues/events/#list-events-for-an-issue</a>
eventsForIssueR :: Name Owner -> Name Repo -> Id Issue -> FetchCount -> Request k (Vector IssueEvent)

-- | List events for a repository. See
--   <a>https://developer.github.com/v3/issues/events/#list-events-for-a-repository</a>
eventsForRepoR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector IssueEvent)

-- | Query a single event. See
--   <a>https://developer.github.com/v3/issues/events/#get-a-single-event</a>
eventR :: Name Owner -> Name Repo -> Id IssueEvent -> Request k IssueEvent


-- | The Github issue comments API from
--   <a>http://developer.github.com/v3/issues/comments/</a>.
module GitHub.Endpoints.Issues.Comments

-- | Query a single comment. See
--   <a>https://developer.github.com/v3/issues/comments/#get-a-single-comment</a>
commentR :: Name Owner -> Name Repo -> Id Comment -> Request k IssueComment

-- | List comments on an issue. See
--   <a>https://developer.github.com/v3/issues/comments/#list-comments-on-an-issue</a>
commentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector IssueComment)

-- | Create a comment. See
--   <a>https://developer.github.com/v3/issues/comments/#create-a-comment</a>
createCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Request 'RW Comment

-- | Delete a comment. See
--   <a>https://developer.github.com/v3/issues/comments/#delete-a-comment</a>
deleteCommentR :: Name Owner -> Name Repo -> Id Comment -> GenRequest 'MtUnit 'RW ()

-- | Edit a comment. See
--   <a>https://developer.github.com/v3/issues/comments/#edit-a-comment</a>
editCommentR :: Name Owner -> Name Repo -> Id Comment -> Text -> Request 'RW Comment


-- | The issues API as described on
--   <a>http://developer.github.com/v3/issues/</a>.
module GitHub.Endpoints.Issues

-- | See <a>https://developer.github.com/v3/issues/#list-issues</a>.
currentUserIssuesR :: IssueMod -> FetchCount -> Request 'RA (Vector Issue)

-- | See <a>https://developer.github.com/v3/issues/#list-issues</a>.
organizationIssuesR :: Name Organization -> IssueMod -> FetchCount -> Request k (Vector Issue)

-- | Query a single issue. See
--   <a>https://developer.github.com/v3/issues/#get-a-single-issue</a>
issueR :: Name Owner -> Name Repo -> IssueNumber -> Request k Issue

-- | List issues for a repository. See
--   <a>https://developer.github.com/v3/issues/#list-issues-for-a-repository</a>
issuesForRepoR :: Name Owner -> Name Repo -> IssueRepoMod -> FetchCount -> Request k (Vector Issue)

-- | Create an issue. See
--   <a>https://developer.github.com/v3/issues/#create-an-issue</a>
createIssueR :: Name Owner -> Name Repo -> NewIssue -> Request 'RW Issue
newIssue :: Text -> NewIssue

-- | Edit an issue. See
--   <a>https://developer.github.com/v3/issues/#edit-an-issue</a>
editIssueR :: Name Owner -> Name Repo -> IssueNumber -> EditIssue -> Request 'RW Issue
editOfIssue :: EditIssue


-- | The underlying tree of SHA1s and files that make up a git repo. The
--   API is described on <a>http://developer.github.com/v3/git/trees/</a>.
module GitHub.Endpoints.GitData.Trees

-- | Query a Tree. See
--   <a>https://developer.github.com/v3/git/trees/#get-a-tree</a>
treeR :: Name Owner -> Name Repo -> Name Tree -> Request k Tree

-- | Query a Tree Recursively. See
--   <a>https://developer.github.com/v3/git/trees/#get-a-tree-recursively</a>
nestedTreeR :: Name Owner -> Name Repo -> Name Tree -> Request k Tree


-- | The underlying git references on a Github repo, exposed for the world
--   to see. The git internals documentation will also prove handy for
--   understanding these. API documentation at
--   <a>http://developer.github.com/v3/git/refs/</a>.
module GitHub.Endpoints.GitData.References

-- | A single reference -- | Query a reference. See
--   <a>https://developer.github.com/v3/git/refs/#get-a-reference</a>
referenceR :: Name Owner -> Name Repo -> Name GitReference -> Request k GitReference

-- | Query all References. See
--   <a>https://developer.github.com/v3/git/refs/#get-all-references</a>
referencesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector GitReference)

-- | Create a reference. See
--   <a>https://developer.github.com/v3/git/refs/#create-a-reference</a>
createReferenceR :: Name Owner -> Name Repo -> NewGitReference -> Request 'RW GitReference

-- | Delete a reference. See
--   <a>https://developer.github.com/v3/git/refs/#delete-a-reference</a>
deleteReferenceR :: Name Owner -> Name Repo -> Name GitReference -> GenRequest 'MtUnit 'RW ()

-- | Query namespaced references. See
--   <a>https://developer.github.com/v3/git/refs/#get-all-references</a>
namespacedReferencesR :: Name Owner -> Name Repo -> Text -> Request k [GitReference]


-- | The API for underlying git commits of a Github repo, as described on
--   <a>http://developer.github.com/v3/git/commits/</a>.
module GitHub.Endpoints.GitData.Commits

-- | Query a commit. See
--   <a>https://developer.github.com/v3/git/commits/#get-a-commit</a>
gitCommitR :: Name Owner -> Name Repo -> Name GitCommit -> Request k GitCommit


-- | The API for dealing with git blobs from Github repos, as described in
--   <a>http://developer.github.com/v3/git/blobs/</a>.
module GitHub.Endpoints.GitData.Blobs

-- | Query a blob. See
--   <a>https://developer.github.com/v3/git/blobs/#get-a-blob</a>
blobR :: Name Owner -> Name Repo -> Name Blob -> Request k Blob


-- | The loving comments people have left on Gists, described on
--   <a>http://developer.github.com/v3/gists/comments/</a>.
module GitHub.Endpoints.Gists.Comments

-- | List comments on a gist. See
--   <a>https://developer.github.com/v3/gists/comments/#list-comments-on-a-gist</a>
commentsOnR :: Name Gist -> FetchCount -> Request k (Vector GistComment)

-- | Query a single comment. See
--   <a>https://developer.github.com/v3/gists/comments/#get-a-single-comment</a>
gistCommentR :: Id GistComment -> Request k GistComment


-- | The gists API as described at
--   <a>http://developer.github.com/v3/gists/</a>.
module GitHub.Endpoints.Gists

-- | List gists. See
--   <a>https://developer.github.com/v3/gists/#list-gists</a>
gistsR :: Name Owner -> FetchCount -> Request k (Vector Gist)

-- | Query a single gist. See
--   <a>https://developer.github.com/v3/gists/#get-a-single-gist</a>
gistR :: Name Gist -> Request k Gist

-- | Create a new gist See
--   <a>https://docs.github.com/rest/reference/gists#create-a-gist</a>
createGistR :: NewGist -> Request 'RW Gist

-- | Star a gist by the authenticated user. See
--   <a>https://developer.github.com/v3/gists/#star-a-gist</a>
starGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()

-- | Unstar a gist by the authenticated user. See
--   <a>https://developer.github.com/v3/gists/#unstar-a-gist</a>
unstarGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()

-- | Delete a gist by the authenticated user. See
--   <a>https://developer.github.com/v3/gists/#delete-a-gist</a>
deleteGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()


-- | The GitHub Enterprise orgs API as described on
--   <a>https://developer.github.com/enterprise/v3/enterprise-admin/orgs/</a>.
module GitHub.Endpoints.Enterprise.Organizations

-- | Create an organization. See
--   <a>https://developer.github.com/enterprise/v3/enterprise-admin/orgs/#create-an-organization</a>
createOrganizationR :: CreateOrganization -> Request 'RW SimpleOrganization

-- | Rename an organization. See
--   <a>https://developer.github.com/enterprise/v3/enterprise-admin/orgs/#rename-an-organization</a>
renameOrganizationR :: Name Organization -> RenameOrganization -> Request 'RW RenameOrganizationResponse


-- | This module re-exports all request constructors and data definitions
--   for working with GitHub Enterprise.
module GitHub.Enterprise

-- | Create an organization. See
--   <a>https://developer.github.com/enterprise/v3/enterprise-admin/orgs/#create-an-organization</a>
createOrganizationR :: CreateOrganization -> Request 'RW SimpleOrganization

-- | Rename an organization. See
--   <a>https://developer.github.com/enterprise/v3/enterprise-admin/orgs/#rename-an-organization</a>
renameOrganizationR :: Name Organization -> RenameOrganization -> Request 'RW RenameOrganizationResponse


-- | The repo watching API as described on
--   <a>https://developer.github.com/v3/activity/watching/</a>.
module GitHub.Endpoints.Activity.Watching

-- | List watchers. See
--   <a>https://developer.github.com/v3/activity/watching/#list-watchers</a>
watchersForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector SimpleUser)

-- | List repositories being watched. See
--   <a>https://developer.github.com/v3/activity/watching/#list-repositories-being-watched</a>
reposWatchedByR :: Name Owner -> FetchCount -> Request k (Vector Repo)

-- | Stop watching repository. See
--   <a>https://docs.github.com/en/rest/reference/activity#delete-a-repository-subscription</a>
unwatchRepoR :: Name Owner -> Name Repo -> Request 'RW ()


-- | The repo starring API as described on
--   <a>https://developer.github.com/v3/activity/starring/</a>.
module GitHub.Endpoints.Activity.Starring

-- | List Stargazers. See
--   <a>https://developer.github.com/v3/activity/starring/#list-stargazers</a>
stargazersForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector SimpleUser)

-- | List repositories being starred. See
--   <a>https://developer.github.com/v3/activity/starring/#list-repositories-being-starred</a>
reposStarredByR :: Name Owner -> FetchCount -> Request k (Vector Repo)

-- | All the repos starred by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#list-repositories-being-starred</a>
myStarredR :: FetchCount -> Request 'RA (Vector Repo)

-- | All the repos starred by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#alternative-response-with-star-creation-timestamps-1</a>
myStarredAcceptStarR :: FetchCount -> GenRequest 'MtStar 'RA (Vector RepoStarred)

-- | Star a repo by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#star-a-repository</a>
starRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()

-- | Unstar a repo by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#unstar-a-repository</a>
unstarRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()


-- | The repo watching API as described on
--   <a>https://developer.github.com/v3/activity/notifications/</a>.
module GitHub.Endpoints.Activity.Notifications

-- | List your notifications. See
--   <a>https://developer.github.com/v3/activity/notifications/#list-your-notifications</a>
getNotificationsR :: FetchCount -> Request 'RA (Vector Notification)

-- | Mark a thread as read. See
--   <a>https://developer.github.com/v3/activity/notifications/#mark-a-thread-as-read</a>
markNotificationAsReadR :: Id Notification -> GenRequest 'MtUnit 'RW ()

-- | Mark as read. See
--   <a>https://developer.github.com/v3/activity/notifications/#mark-as-read</a>
markAllNotificationsAsReadR :: GenRequest 'MtUnit 'RW ()


-- | The events API as described on
--   <a>https://developer.github.com/v3/activity/events/</a>.
module GitHub.Endpoints.Activity.Events

-- | List repository events. See
--   <a>https://developer.github.com/v3/activity/events/#list-repository-events</a>
repositoryEventsR :: Name Owner -> Name Repo -> FetchCount -> Request 'RO (Vector Event)

-- | List user public events. See
--   <a>https://developer.github.com/v3/activity/events/#list-public-events-performed-by-a-user</a>
userEventsR :: Name User -> FetchCount -> Request 'RO (Vector Event)

module GitHub.Endpoints.Actions.Workflows

-- | List repository workflows. See
--   <a>https://docs.github.com/en/rest/actions/workflows#list-repository-workflows</a>
repositoryWorkflowsR :: Name Owner -> Name Repo -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Workflow)

-- | Get a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflows#get-a-workflow</a>
workflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> GenRequest 'MtJSON 'RA Workflow

-- | Disable a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflows#disable-a-workflow</a>
disableWorkflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> GenRequest 'MtUnit 'RW ()

-- | Create a workflow dispatch event. See
--   <a>https://docs.github.com/en/rest/actions/workflows#create-a-workflow-dispatch-event</a>
triggerWorkflowR :: (ToJSON a, IsPathPart idOrName) => Name Owner -> Name Repo -> idOrName -> CreateWorkflowDispatchEvent a -> GenRequest 'MtUnit 'RW ()

-- | Enable a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflows#enable-a-workflow</a>
enableWorkflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> GenRequest 'MtUnit 'RW ()

module GitHub.Endpoints.Actions.WorkflowRuns

-- | Re-run a job from a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run</a>
reRunJobR :: Name Owner -> Name Repo -> Id Job -> GenRequest 'MtUnit 'RW ()

-- | List workflow runs for a repository. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#list-workflow-runs-for-a-repository</a>
workflowRunsR :: Name Owner -> Name Repo -> WorkflowRunMod -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount WorkflowRun)

-- | Get a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#get-a-workflow-run</a>
workflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtJSON 'RA WorkflowRun

-- | Delete a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#delete-a-workflow-run</a>
deleteWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Get the review history for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#get-the-review-history-for-a-workflow-run</a>
workflowRunReviewHistoryR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtJSON 'RA (Vector ReviewHistory)

-- | Approve a workflow run for a fork pull request. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#approve-a-workflow-run-for-a-fork-pull-request</a>
approveWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Get a workflow run attempt. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#get-a-workflow-run-attempt</a>
workflowRunAttemptR :: Name Owner -> Name Repo -> Id WorkflowRun -> Id RunAttempt -> GenRequest 'MtJSON 'RA WorkflowRun

-- | Download workflow run attempt logs. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#download-workflow-run-attempt-logs</a>
downloadWorkflowRunAttemptLogsR :: Name Owner -> Name Repo -> Id WorkflowRun -> Id RunAttempt -> GenRequest 'MtRedirect 'RO URI

-- | Cancel a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#cancel-a-workflow-run</a>
cancelWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Download workflow run logs. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#download-workflow-run-logs</a>
downloadWorkflowRunLogsR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtRedirect 'RA URI

-- | Delete workflow run logs. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#delete-workflow-run-logs</a>
deleteWorkflowRunLogsR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Re-run a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#re-run-a-workflow</a>
reRunWorkflowR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Re-run failed jobs from a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/re-run-failed-jobs-from-a-workflow-run</a>
reRunFailedJobsR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | List workflow runs for a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow</a>
workflowRunsForWorkflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> WorkflowRunMod -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount WorkflowRun)


-- | The actions API as documented at
--   <a>https://docs.github.com/en/rest/reference/actions</a>.
module GitHub.Endpoints.Actions.WorkflowJobs

-- | Get a job for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#get-a-job-for-a-workflow-run</a>
jobR :: Name Owner -> Name Repo -> Id Job -> Request 'RA Job

-- | Download job logs for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#download-job-logs-for-a-workflow-run</a>
downloadJobLogsR :: Name Owner -> Name Repo -> Id Job -> GenRequest 'MtRedirect 'RO URI

-- | List jobs for a workflow run attempt. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt</a>
jobsForWorkflowRunAttemptR :: Name Owner -> Name Repo -> Id WorkflowRun -> Id RunAttempt -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Job)

-- | List jobs for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run</a>
jobsForWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Job)


-- | The actions API as documented at
--   <a>https://docs.github.com/en/rest/reference/actions</a>.
module GitHub.Endpoints.Actions.Secrets

-- | List organization secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-organization-secrets</a>
organizationSecretsR :: Name Organization -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount OrganizationSecret)

-- | List organization secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-organization-public-key</a>
organizationPublicKeyR :: Name Organization -> GenRequest 'MtJSON 'RA PublicKey

-- | Get an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-organization-secret</a>
organizationSecretR :: Name Organization -> Name OrganizationSecret -> GenRequest 'MtJSON 'RA OrganizationSecret

-- | Create or update an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#create-or-update-an-organization-secret</a>
setOrganizationSecretR :: Name Organization -> Name OrganizationSecret -> SetSecret -> GenRequest 'MtUnit 'RW ()

-- | Delete an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#delete-an-organization-secret</a>
deleteOrganizationSecretR :: Name Organization -> Name OrganizationSecret -> GenRequest 'MtUnit 'RW ()

-- | Get selected repositories for an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-selected-repositories-for-an-organization-secret</a>
organizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount SelectedRepo)

-- | Set selected repositories for an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#set-selected-repositories-for-an-organization-secret</a>
setOrganizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> SetSelectedRepositories -> GenRequest 'MtUnit 'RW ()

-- | Add selected repository to an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#add-selected-repository-to-an-organization-secret</a>
addOrganizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> Id Repo -> GenRequest 'MtUnit 'RW ()

-- | Remove selected repository from an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#remove-selected-repository-from-an-organization-secret</a>
removeOrganizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> Id Repo -> GenRequest 'MtUnit 'RW ()

-- | List repository secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-repository-secrets</a>
repoSecretsR :: Name Owner -> Name Repo -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount RepoSecret)

-- | Get a repository public key. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-a-repository-public-key</a>
repoPublicKeyR :: Name Owner -> Name Organization -> GenRequest 'MtJSON 'RA PublicKey

-- | Get a repository secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-a-repository-secret</a>
repoSecretR :: Name Owner -> Name Organization -> Name RepoSecret -> GenRequest 'MtJSON 'RA RepoSecret

-- | Create or update a repository secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#create-or-update-a-repository-secret</a>
setRepoSecretR :: Name Owner -> Name Organization -> Name RepoSecret -> SetRepoSecret -> GenRequest 'MtUnit 'RW ()

-- | Delete a repository secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#delete-a-repository-secret</a>
deleteRepoSecretR :: Name Owner -> Name Organization -> Name RepoSecret -> GenRequest 'MtUnit 'RW ()

-- | List environment secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-environment-secrets</a>
environmentSecretsR :: Id Repo -> Name Environment -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount RepoSecret)

-- | Get an environment public key. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-environment-public-key</a>
environmentPublicKeyR :: Id Repo -> Name Environment -> GenRequest 'MtJSON 'RA PublicKey

-- | Get an environment secret See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-environment-secret</a>
environmentSecretR :: Id Repo -> Name Environment -> Name RepoSecret -> GenRequest 'MtJSON 'RA RepoSecret

-- | Create or update an environment secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#create-or-update-an-environment-secret</a>
setEnvironmentSecretR :: Id Repo -> Name Environment -> Name RepoSecret -> SetRepoSecret -> GenRequest 'MtUnit 'RW ()

-- | Delete an environment secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#delete-an-environment-secret</a>
deleteEnvironmentSecretR :: Id Repo -> Name Environment -> Name RepoSecret -> GenRequest 'MtUnit 'RW ()


-- | The actions API as documented at
--   <a>https://docs.github.com/en/rest/reference/actions</a>.
module GitHub.Endpoints.Actions.Cache

-- | Get Actions cache usage for the organization. See
--   <a>https://docs.github.com/en/rest/actions/cache#get-github-actions-cache-usage-for-an-organization</a>
cacheUsageOrganizationR :: Name Organization -> GenRequest 'MtJSON 'RA OrganizationCacheUsage

-- | List repositories with GitHub Actions cache usage for an organization.
--   See
--   <a>https://docs.github.com/en/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization</a>
cacheUsageByRepositoryR :: Name Organization -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount RepositoryCacheUsage)

-- | Get GitHub Actions cache usage for a repository. See
--   <a>https://docs.github.com/en/rest/actions/cache#get-github-actions-cache-usage-for-a-repository</a>
cacheUsageR :: Name Owner -> Name Repo -> Request k RepositoryCacheUsage

-- | List the GitHub Actions caches for a repository. See
--   <a>https://docs.github.com/en/rest/actions/cache#list-github-actions-caches-for-a-repository</a>
cachesForRepoR :: Name Owner -> Name Repo -> CacheMod -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Cache)

-- | Delete GitHub Actions cache for a repository. See
--   <a>https://docs.github.com/en/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id</a>
deleteCacheR :: Name Owner -> Name Repo -> Id Cache -> GenRequest 'MtUnit 'RW ()


-- | The actions API as documented at
--   <a>https://docs.github.com/en/rest/reference/actions</a>.
module GitHub.Endpoints.Actions.Artifacts

-- | List artifacts for repository. See
--   <a>https://docs.github.com/en/rest/reference/actions#list-artifacts-for-a-repository</a>
artifactsForR :: Name Owner -> Name Repo -> ArtifactMod -> FetchCount -> Request 'RA (WithTotalCount Artifact)

-- | Get an artifact. See
--   <a>https://docs.github.com/en/rest/reference/actions#get-an-artifact</a>
artifactR :: Name Owner -> Name Repo -> Id Artifact -> Request 'RA Artifact

-- | Delete an artifact. See
--   <a>https://docs.github.com/en/rest/reference/actions#delete-an-artifact</a>
deleteArtifactR :: Name Owner -> Name Repo -> Id Comment -> GenRequest 'MtUnit 'RW ()

-- | Download an artifact. See
--   <a>https://docs.github.com/en/rest/reference/actions#download-an-artifact</a>
downloadArtifactR :: Name Owner -> Name Repo -> Id Artifact -> GenRequest 'MtRedirect 'RW URI

-- | List artifacts for a workflow run. See
--   <a>https://docs.github.com/en/rest/reference/actions#list-workflow-run-artifacts</a>
artifactsForWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> FetchCount -> Request 'RA (WithTotalCount Artifact)


-- | This module provides data types and helper methods, which makes
--   possible to build alternative API request intepreters in addition to
--   provided <a>IO</a> functions.
--   
--   Simple example using <tt>operational</tt> package. See
--   <tt>samples/Operational/Operational.hs</tt>
--   
--   <pre>
--   type GithubMonad a = Program (GH.Request 'False) a
--   
--   -- | Intepret GithubMonad value into IO
--   runMonad :: Manager -&gt; GH.Auth -&gt; GithubMonad a -&gt; ExceptT GH.Error IO a
--   runMonad mgr auth m = case view m of
--      Return a   -&gt; return a
--      req :&gt;&gt;= k -&gt; do
--          b &lt;- ExceptT $ GH.executeRequestWithMgr mgr auth req
--          runMonad mgr auth (k b)
--   
--   -- | Lift request into Monad
--   githubRequest :: GH.Request 'False a -&gt; GithubMonad a
--   githubRequest = singleton
--   </pre>
module GitHub.Request

-- | A convenience function to turn functions returning <tt><a>Request</a>
--   rw x</tt>, into functions returning <tt>IO (Either <a>Error</a>
--   x)</tt>.
--   
--   <pre>
--   &gt;&gt;&gt; :t \auth -&gt; github auth userInfoForR
--   \auth -&gt; github auth userInfoForR
--     :: AuthMethod am =&gt; am -&gt; Name User -&gt; IO (Either Error User)
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; :t github pullRequestsForR
--   \auth -&gt; github auth pullRequestsForR
--     :: AuthMethod am =&gt;
--        am
--        -&gt; Name Owner
--        -&gt; Name Repo
--        -&gt; PullRequestMod
--        -&gt; FetchCount
--        -&gt; IO (Either Error (Data.Vector.Vector SimplePullRequest))
--   </pre>
github :: (AuthMethod am, GitHubRW req res) => am -> req -> res

-- | Like <a>github'</a> but for <a>RO</a> i.e. read-only requests. Note
--   that GitHub has low request limit for non-authenticated requests.
--   
--   <pre>
--   &gt;&gt;&gt; :t github' userInfoForR
--   github' userInfoForR :: Name User -&gt; IO (Either Error User)
--   </pre>
github' :: GitHubRO req res => req -> res

-- | A type-class implementing <a>github</a>.
class GitHubRW req res | req -> res

-- | A type-class implementing <a>github'</a>.
class GitHubRO req res | req -> res

-- | Most requests ask for <tt>JSON</tt>.
type Request = GenRequest 'MtJSON

-- | Github request data type.
--   
--   <ul>
--   <li><tt>rw</tt> describes whether authentication is required. It's
--   required for non-<tt>GET</tt> requests.</li>
--   <li><tt>mt</tt> describes the media type, i.e. how the response should
--   be interpreted.</li>
--   <li><tt>a</tt> is the result type</li>
--   </ul>
--   
--   <i>Note:</i> <a>Request</a> is not <a>Functor</a> on purpose.
data GenRequest (mt :: MediaType (*)) (rw :: RW) a
[Query] :: Paths -> QueryString -> GenRequest mt rw a
[PagedQuery] :: (a ~ t b, Foldable t, Semigroup a) => Paths -> QueryString -> FetchCount -> GenRequest mt rw a

-- | Command
[Command] :: CommandMethod -> Paths -> ByteString -> GenRequest mt 'RW a

-- | Http method of requests with body.
data CommandMethod
Post :: CommandMethod
Patch :: CommandMethod
Put :: CommandMethod
Delete :: CommandMethod
toMethod :: CommandMethod -> Method
type Paths = [Text]

-- | Request query string
type QueryString = [(ByteString, Maybe ByteString)]

-- | Execute <a>Request</a> in <a>IO</a>
executeRequest :: (AuthMethod am, ParseResponse mt a) => am -> GenRequest mt rw a -> IO (Either Error a)

-- | Like <a>executeRequest</a> but with provided <a>Manager</a>.
executeRequestWithMgr :: (AuthMethod am, ParseResponse mt a) => Manager -> am -> GenRequest mt rw a -> IO (Either Error a)

-- | Execute request and return the last received <a>Response</a>.
executeRequestWithMgrAndRes :: (AuthMethod am, ParseResponse mt a) => Manager -> am -> GenRequest mt rw a -> IO (Either Error (Response a))

-- | Like <a>executeRequest</a> but without authentication.
executeRequest' :: ParseResponse mt a => GenRequest mt 'RO a -> IO (Either Error a)

-- | Like <a>executeRequestWithMgr</a> but without authentication.
executeRequestWithMgr' :: ParseResponse mt a => Manager -> GenRequest mt 'RO a -> IO (Either Error a)

-- | Helper for picking between <a>executeRequest</a> and
--   <a>executeRequest'</a>.
--   
--   The use is discouraged.
executeRequestMaybe :: (AuthMethod am, ParseResponse mt a) => Maybe am -> GenRequest mt 'RO a -> IO (Either Error a)

-- | Partial function to drop authentication need.
unsafeDropAuthRequirements :: GenRequest mt rw' a -> GenRequest mt rw a
class Accept (mt :: MediaType (*))
contentType :: Accept mt => Tagged mt ByteString
modifyRequest :: Accept mt => Tagged mt (Request -> Request)
class Accept mt => ParseResponse (mt :: MediaType (*)) a
parseResponse :: (ParseResponse mt a, MonadError Error m) => Request -> Response ByteString -> Tagged mt (m a)

-- | Create <tt>http-client</tt> <a>Request</a>.
--   
--   <ul>
--   <li>for <a>PagedQuery</a>, the initial request is created.</li>
--   <li>for <a>Status</a>, the <a>Request</a> for underlying
--   <a>Request</a> is created, status checking is modifying
--   accordingly.</li>
--   </ul>
makeHttpRequest :: forall am mt rw a m. (AuthMethod am, MonadThrow m, Accept mt) => Maybe am -> GenRequest mt rw a -> m Request

-- | Helper for handling of <tt>RequestStatus</tt>.
--   
--   <pre>
--   parseStatus :: <a>StatusMap</a> a -&gt; <a>Status</a> -&gt; <a>Either</a> <a>Error</a> a
--   </pre>
parseStatus :: MonadError Error m => StatusMap a -> Status -> m a
type StatusMap a = [(Int, a)]

-- | Query <tt>Link</tt> header with <tt>rel=next</tt> from the request
--   headers.
getNextUrl :: Response a -> Maybe URI

-- | Helper for making paginated requests. Responses, <tt>a</tt> are
--   combined monoidally.
--   
--   The result is wrapped in the last received <a>Response</a>.
--   
--   <pre>
--   performPagedRequest :: (<a>FromJSON</a> a, <a>Semigroup</a> a)
--                       =&gt; (<a>Request</a> -&gt; <a>ExceptT</a> <a>Error</a> <a>IO</a> (<a>Response</a> <a>ByteString</a>))
--                       -&gt; (a -&gt; <a>Value</a>)
--                       -&gt; <a>Request</a>
--                       -&gt; <a>ExceptT</a> <a>Error</a> <a>IO</a> (<a>Response</a> a)
--   </pre>
performPagedRequest :: forall a m mt. (ParseResponse mt a, Semigroup a, MonadCatch m, MonadError Error m) => (Request -> m (Response ByteString)) -> (a -> Bool) -> Request -> Tagged mt (m (Response a))

-- | Parse API response.
--   
--   <pre>
--   parseResponse :: <a>FromJSON</a> a =&gt; <a>Response</a> <a>ByteString</a> -&gt; <a>Either</a> <a>Error</a> a
--   </pre>
parseResponseJSON :: (FromJSON a, MonadError Error m) => Response ByteString -> m a
class PreviewAccept p
previewContentType :: PreviewAccept p => Tagged ('MtPreview p) ByteString
previewModifyRequest :: PreviewAccept p => Tagged ('MtPreview p) (Request -> Request)
class PreviewAccept p => PreviewParseResponse p a
previewParseResponse :: (PreviewParseResponse p a, MonadError Error m) => Request -> Response ByteString -> Tagged ('MtPreview p) (m a)
withOpenSSL :: IO a -> IO a

-- | Default TLS-enabled manager settings
tlsManagerSettings :: ManagerSettings
instance GitHub.Request.HasStatusMap a => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtStatus a
instance GitHub.Request.HasStatusMap GHC.Types.Bool
instance GitHub.Request.HasStatusMap GitHub.Data.PullRequests.MergeResult
instance GitHub.Request.PreviewParseResponse p a => GitHub.Request.ParseResponse ('GitHub.Data.Request.MtPreview p) a
instance GitHub.Request.PreviewAccept p => GitHub.Request.Accept ('GitHub.Data.Request.MtPreview p)
instance (GitHub.Request.ParseResponse mt req, res GHC.Types.~ Data.Either.Either GitHub.Data.Definitions.Error req) => GitHub.Request.GitHubRW (GitHub.Data.Request.GenRequest mt rw req) (GHC.Types.IO res)
instance (GitHub.Request.ParseResponse mt req, res GHC.Types.~ Data.Either.Either GitHub.Data.Definitions.Error req, rw GHC.Types.~ 'GitHub.Data.Request.RO) => GitHub.Request.GitHubRO (GitHub.Data.Request.GenRequest mt rw req) (GHC.Types.IO res)
instance Data.Aeson.Types.FromJSON.FromJSON a => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtJSON a
instance Data.Aeson.Types.FromJSON.FromJSON a => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtStar a
instance (a GHC.Types.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtRaw a
instance (a GHC.Types.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtDiff a
instance (a GHC.Types.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtPatch a
instance (a GHC.Types.~ Data.ByteString.Lazy.Internal.ByteString) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtSha a
instance (b GHC.Types.~ Network.URI.URI) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtRedirect b
instance (a GHC.Types.~ ()) => GitHub.Request.ParseResponse 'GitHub.Data.Request.MtUnit a
instance GitHub.Request.Accept 'GitHub.Data.Request.MtJSON
instance GitHub.Request.Accept 'GitHub.Data.Request.MtStar
instance GitHub.Request.Accept 'GitHub.Data.Request.MtRaw
instance GitHub.Request.Accept 'GitHub.Data.Request.MtDiff
instance GitHub.Request.Accept 'GitHub.Data.Request.MtPatch
instance GitHub.Request.Accept 'GitHub.Data.Request.MtSha
instance GitHub.Request.Accept 'GitHub.Data.Request.MtRedirect
instance GitHub.Request.Accept 'GitHub.Data.Request.MtStatus
instance GitHub.Request.Accept 'GitHub.Data.Request.MtUnit
instance GitHub.Request.GitHubRO req res => GitHub.Request.GitHubRO (a -> req) (a -> res)
instance GitHub.Request.GitHubRW req res => GitHub.Request.GitHubRW (a -> req) (a -> res)


-- | This module re-exports all request constructors and data definitions
--   from this package.
--   
--   See <a>GitHub.Request</a> module for executing <a>Request</a>, in
--   short use <tt><a>github</a> request</tt>, for example
--   
--   <pre>
--   <a>github</a> <a>userInfoForR</a>
--     :: <a>AuthMethod</a> am =&gt; am -&gt; <a>Name</a> <a>User</a> -&gt; IO (Either <a>Error</a> <a>User</a>)
--   </pre>
--   
--   The missing endpoints lists show which endpoints we know are missing,
--   there might be more.
module GitHub

-- | List repository events. See
--   <a>https://developer.github.com/v3/activity/events/#list-repository-events</a>
repositoryEventsR :: Name Owner -> Name Repo -> FetchCount -> Request 'RO (Vector Event)

-- | List user public events. See
--   <a>https://developer.github.com/v3/activity/events/#list-public-events-performed-by-a-user</a>
userEventsR :: Name User -> FetchCount -> Request 'RO (Vector Event)

-- | List your notifications. See
--   <a>https://developer.github.com/v3/activity/notifications/#list-your-notifications</a>
getNotificationsR :: FetchCount -> Request 'RA (Vector Notification)

-- | Mark a thread as read. See
--   <a>https://developer.github.com/v3/activity/notifications/#mark-a-thread-as-read</a>
markNotificationAsReadR :: Id Notification -> GenRequest 'MtUnit 'RW ()

-- | Mark as read. See
--   <a>https://developer.github.com/v3/activity/notifications/#mark-as-read</a>
markAllNotificationsAsReadR :: GenRequest 'MtUnit 'RW ()

-- | List Stargazers. See
--   <a>https://developer.github.com/v3/activity/starring/#list-stargazers</a>
stargazersForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector SimpleUser)

-- | List repositories being starred. See
--   <a>https://developer.github.com/v3/activity/starring/#list-repositories-being-starred</a>
reposStarredByR :: Name Owner -> FetchCount -> Request k (Vector Repo)

-- | All the repos starred by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#list-repositories-being-starred</a>
myStarredR :: FetchCount -> Request 'RA (Vector Repo)

-- | All the repos starred by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#alternative-response-with-star-creation-timestamps-1</a>
myStarredAcceptStarR :: FetchCount -> GenRequest 'MtStar 'RA (Vector RepoStarred)

-- | Star a repo by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#star-a-repository</a>
starRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()

-- | Unstar a repo by the authenticated user. See
--   <a>https://developer.github.com/v3/activity/starring/#unstar-a-repository</a>
unstarRepoR :: Name Owner -> Name Repo -> GenRequest 'MtUnit 'RW ()

-- | List watchers. See
--   <a>https://developer.github.com/v3/activity/watching/#list-watchers</a>
watchersForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector SimpleUser)

-- | List repositories being watched. See
--   <a>https://developer.github.com/v3/activity/watching/#list-repositories-being-watched</a>
reposWatchedByR :: Name Owner -> FetchCount -> Request k (Vector Repo)

-- | Stop watching repository. See
--   <a>https://docs.github.com/en/rest/reference/activity#delete-a-repository-subscription</a>
unwatchRepoR :: Name Owner -> Name Repo -> Request 'RW ()

-- | List gists. See
--   <a>https://developer.github.com/v3/gists/#list-gists</a>
gistsR :: Name Owner -> FetchCount -> Request k (Vector Gist)

-- | Query a single gist. See
--   <a>https://developer.github.com/v3/gists/#get-a-single-gist</a>
gistR :: Name Gist -> Request k Gist

-- | Create a new gist See
--   <a>https://docs.github.com/rest/reference/gists#create-a-gist</a>
createGistR :: NewGist -> Request 'RW Gist

-- | Star a gist by the authenticated user. See
--   <a>https://developer.github.com/v3/gists/#star-a-gist</a>
starGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()

-- | Unstar a gist by the authenticated user. See
--   <a>https://developer.github.com/v3/gists/#unstar-a-gist</a>
unstarGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()

-- | Delete a gist by the authenticated user. See
--   <a>https://developer.github.com/v3/gists/#delete-a-gist</a>
deleteGistR :: Name Gist -> GenRequest 'MtUnit 'RW ()

-- | List comments on a gist. See
--   <a>https://developer.github.com/v3/gists/comments/#list-comments-on-a-gist</a>
commentsOnR :: Name Gist -> FetchCount -> Request k (Vector GistComment)

-- | Query a single comment. See
--   <a>https://developer.github.com/v3/gists/comments/#get-a-single-comment</a>
gistCommentR :: Id GistComment -> Request k GistComment

-- | Query a blob. See
--   <a>https://developer.github.com/v3/git/blobs/#get-a-blob</a>
blobR :: Name Owner -> Name Repo -> Name Blob -> Request k Blob

-- | Query a commit. See
--   <a>https://developer.github.com/v3/git/commits/#get-a-commit</a>
gitCommitR :: Name Owner -> Name Repo -> Name GitCommit -> Request k GitCommit

-- | A single reference -- | Query a reference. See
--   <a>https://developer.github.com/v3/git/refs/#get-a-reference</a>
referenceR :: Name Owner -> Name Repo -> Name GitReference -> Request k GitReference

-- | Query all References. See
--   <a>https://developer.github.com/v3/git/refs/#get-all-references</a>
referencesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector GitReference)

-- | Create a reference. See
--   <a>https://developer.github.com/v3/git/refs/#create-a-reference</a>
createReferenceR :: Name Owner -> Name Repo -> NewGitReference -> Request 'RW GitReference

-- | Delete a reference. See
--   <a>https://developer.github.com/v3/git/refs/#delete-a-reference</a>
deleteReferenceR :: Name Owner -> Name Repo -> Name GitReference -> GenRequest 'MtUnit 'RW ()

-- | Query namespaced references. See
--   <a>https://developer.github.com/v3/git/refs/#get-all-references</a>
namespacedReferencesR :: Name Owner -> Name Repo -> Text -> Request k [GitReference]

-- | Query a Tree. See
--   <a>https://developer.github.com/v3/git/trees/#get-a-tree</a>
treeR :: Name Owner -> Name Repo -> Name Tree -> Request k Tree

-- | Query a Tree Recursively. See
--   <a>https://developer.github.com/v3/git/trees/#get-a-tree-recursively</a>
nestedTreeR :: Name Owner -> Name Repo -> Name Tree -> Request k Tree

-- | See <a>https://developer.github.com/v3/issues/#list-issues</a>.
currentUserIssuesR :: IssueMod -> FetchCount -> Request 'RA (Vector Issue)

-- | See <a>https://developer.github.com/v3/issues/#list-issues</a>.
organizationIssuesR :: Name Organization -> IssueMod -> FetchCount -> Request k (Vector Issue)

-- | Query a single issue. See
--   <a>https://developer.github.com/v3/issues/#get-a-single-issue</a>
issueR :: Name Owner -> Name Repo -> IssueNumber -> Request k Issue

-- | List issues for a repository. See
--   <a>https://developer.github.com/v3/issues/#list-issues-for-a-repository</a>
issuesForRepoR :: Name Owner -> Name Repo -> IssueRepoMod -> FetchCount -> Request k (Vector Issue)

-- | Create an issue. See
--   <a>https://developer.github.com/v3/issues/#create-an-issue</a>
createIssueR :: Name Owner -> Name Repo -> NewIssue -> Request 'RW Issue

-- | Edit an issue. See
--   <a>https://developer.github.com/v3/issues/#edit-an-issue</a>
editIssueR :: Name Owner -> Name Repo -> IssueNumber -> EditIssue -> Request 'RW Issue

-- | Query a single comment. See
--   <a>https://developer.github.com/v3/issues/comments/#get-a-single-comment</a>
commentR :: Name Owner -> Name Repo -> Id Comment -> Request k IssueComment

-- | List comments on an issue. See
--   <a>https://developer.github.com/v3/issues/comments/#list-comments-on-an-issue</a>
commentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector IssueComment)

-- | Create a comment. See
--   <a>https://developer.github.com/v3/issues/comments/#create-a-comment</a>
createCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Request 'RW Comment

-- | Delete a comment. See
--   <a>https://developer.github.com/v3/issues/comments/#delete-a-comment</a>
deleteCommentR :: Name Owner -> Name Repo -> Id Comment -> GenRequest 'MtUnit 'RW ()

-- | Edit a comment. See
--   <a>https://developer.github.com/v3/issues/comments/#edit-a-comment</a>
editCommentR :: Name Owner -> Name Repo -> Id Comment -> Text -> Request 'RW Comment

-- | List events for an issue. See
--   <a>https://developer.github.com/v3/issues/events/#list-events-for-an-issue</a>
eventsForIssueR :: Name Owner -> Name Repo -> Id Issue -> FetchCount -> Request k (Vector IssueEvent)

-- | List events for a repository. See
--   <a>https://developer.github.com/v3/issues/events/#list-events-for-a-repository</a>
eventsForRepoR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector IssueEvent)

-- | Query a single event. See
--   <a>https://developer.github.com/v3/issues/events/#get-a-single-event</a>
eventR :: Name Owner -> Name Repo -> Id IssueEvent -> Request k IssueEvent

-- | List all labels for this repository. See
--   <a>https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository</a>
labelsOnRepoR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector IssueLabel)

-- | Query a single label. See
--   <a>https://developer.github.com/v3/issues/labels/#get-a-single-label</a>
labelR :: Name Owner -> Name Repo -> Name IssueLabel -> Request k IssueLabel

-- | Create a label. See
--   <a>https://developer.github.com/v3/issues/labels/#create-a-label</a>
createLabelR :: Name Owner -> Name Repo -> NewIssueLabel -> Request 'RW IssueLabel

-- | Update a label. See
--   <a>https://developer.github.com/v3/issues/labels/#update-a-label</a>
updateLabelR :: Name Owner -> Name Repo -> Name IssueLabel -> UpdateIssueLabel -> Request 'RW IssueLabel

-- | Delete a label. See
--   <a>https://developer.github.com/v3/issues/labels/#delete-a-label</a>
deleteLabelR :: Name Owner -> Name Repo -> Name IssueLabel -> GenRequest 'MtUnit 'RW ()

-- | List labels on an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#list-labels-on-an-issue</a>
labelsOnIssueR :: Name Owner -> Name Repo -> Id Issue -> FetchCount -> Request k (Vector IssueLabel)

-- | Add lables to an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue</a>
addLabelsToIssueR :: Foldable f => Name Owner -> Name Repo -> Id Issue -> f (Name IssueLabel) -> Request 'RW (Vector IssueLabel)

-- | Remove a label from an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#remove-a-label-from-an-issue</a>
removeLabelFromIssueR :: Name Owner -> Name Repo -> Id Issue -> Name IssueLabel -> GenRequest 'MtUnit 'RW ()

-- | Replace all labels on an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#replace-all-labels-for-an-issue</a>
--   
--   Sending an empty list will remove all labels from the issue.
replaceAllLabelsForIssueR :: Foldable f => Name Owner -> Name Repo -> Id Issue -> f (Name IssueLabel) -> Request 'RW (Vector IssueLabel)

-- | Remove all labels from an issue. See
--   <a>https://developer.github.com/v3/issues/labels/#remove-all-labels-from-an-issue</a>
removeAllLabelsFromIssueR :: Name Owner -> Name Repo -> Id Issue -> GenRequest 'MtUnit 'RW ()

-- | Query labels for every issue in a milestone. See
--   <a>https://developer.github.com/v3/issues/labels/#get-labels-for-every-issue-in-a-milestone</a>
labelsOnMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> FetchCount -> Request k (Vector IssueLabel)

-- | List milestones for a repository. See
--   <a>https://developer.github.com/v3/issues/milestones/#list-milestones-for-a-repository</a>
milestonesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Milestone)

-- | Query a single milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#get-a-single-milestone</a>
milestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request k Milestone

-- | Create a milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#create-a-milestone</a>
createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Milestone

-- | Update a milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#update-a-milestone</a>
updateMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> Request 'RW Milestone

-- | Delete a milestone. See
--   <a>https://developer.github.com/v3/issues/milestones/#delete-a-milestone</a>
deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> GenRequest 'MtUnit 'RW ()

-- | List public user organizations. See
--   <a>https://developer.github.com/v3/orgs/#list-user-organizations</a>
publicOrganizationsForR :: Name User -> FetchCount -> Request k (Vector SimpleOrganization)

-- | Query an organization. See
--   <a>https://developer.github.com/v3/orgs/#get-an-organization</a>
publicOrganizationR :: Name Organization -> Request k Organization

-- | List all user organizations. See
--   <a>https://developer.github.com/v3/orgs/#list-your-organizations</a>
organizationsR :: FetchCount -> Request k (Vector SimpleOrganization)

-- | All the users who are members of the specified organization.
--   
--   See <a>https://developer.github.com/v3/orgs/members/#members-list</a>
membersOfR :: Name Organization -> FetchCount -> Request k (Vector SimpleUser)

-- | <a>membersOfR</a> with filters.
--   
--   See <a>https://developer.github.com/v3/orgs/members/#members-list</a>
membersOfWithR :: Name Organization -> OrgMemberFilter -> OrgMemberRole -> FetchCount -> Request k (Vector SimpleUser)

-- | Check if a user is a member of an organization.
--   
--   See
--   <a>https://developer.github.com/v3/orgs/members/#check-membership</a>
isMemberOfR :: Name User -> Name Organization -> GenRequest 'MtStatus rw Bool

-- | List pending organization invitations
--   
--   See
--   <a>https://developer.github.com/v3/orgs/members/#list-pending-organization-invitations</a>
orgInvitationsR :: Name Organization -> FetchCount -> Request 'RA (Vector Invitation)

-- | All the users who are outside collaborators of the specified
--   organization.
--   
--   See
--   <a>https://developer.github.com/v3/orgs/outside_collaborators/#list-outside-collaborators</a>
outsideCollaboratorsR :: Name Organization -> FetchCount -> Request k (Vector SimpleUser)

-- | List teams. See
--   <a>https://developer.github.com/v3/orgs/teams/#list-teams</a>
teamsOfR :: Name Organization -> FetchCount -> Request k (Vector SimpleTeam)

-- | Query team. See
--   <a>https://developer.github.com/v3/orgs/teams/#get-team</a>
teamInfoForR :: Id Team -> Request k Team

-- | Create team. See
--   <a>https://developer.github.com/v3/orgs/teams/#create-team</a>
createTeamForR :: Name Organization -> CreateTeam -> Request 'RW Team

-- | Edit team. See
--   <a>https://developer.github.com/v3/orgs/teams/#edit-team</a>
editTeamR :: Id Team -> EditTeam -> Request 'RW Team
deleteTeamR :: Id Team -> GenRequest 'MtUnit 'RW ()

-- | List team members.
--   
--   See
--   <a>https://developer.github.com/v3/orgs/teams/#list-team-members</a>
listTeamMembersR :: Id Team -> TeamMemberRole -> FetchCount -> Request 'RA (Vector SimpleUser)

-- | Query team repositories. See
--   <a>https://developer.github.com/v3/orgs/teams/#list-team-repos</a>
listTeamReposR :: Id Team -> FetchCount -> Request k (Vector Repo)

-- | Query team membership. See
--   &lt;<a>https://developer.github.com/v3/orgs/teams/#get-team-membership</a>
teamMembershipInfoForR :: Id Team -> Name Owner -> Request k TeamMembership

-- | Add team membership. See
--   <a>https://developer.github.com/v3/orgs/teams/#add-team-membership</a>
addTeamMembershipForR :: Id Team -> Name Owner -> Role -> Request 'RW TeamMembership

-- | Remove team membership. See
--   <a>https://developer.github.com/v3/orgs/teams/#remove-team-membership</a>
deleteTeamMembershipForR :: Id Team -> Name Owner -> GenRequest 'MtUnit 'RW ()

-- | List user teams. See
--   <a>https://developer.github.com/v3/orgs/teams/#list-user-teams</a>
listTeamsCurrentR :: FetchCount -> Request 'RA (Vector Team)

-- | List pull requests. See
--   <a>https://developer.github.com/v3/pulls/#list-pull-requests</a>
pullRequestsForR :: Name Owner -> Name Repo -> PullRequestMod -> FetchCount -> Request k (Vector SimplePullRequest)

-- | Query a single pull request. See
--   <a>https://developer.github.com/v3/pulls/#get-a-single-pull-request</a>
pullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Request k PullRequest

-- | Query a single pull request to obtain the patch See
--   <a>https://developer.github.com/v3/pulls/#get-a-single-pull-request</a>
pullRequestPatchR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtPatch rw ByteString

-- | Query a single pull request to obtain the diff See
--   <a>https://developer.github.com/v3/pulls/#get-a-single-pull-request</a>
pullRequestDiffR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtDiff rw ByteString

-- | Create a pull request. See
--   <a>https://developer.github.com/v3/pulls/#create-a-pull-request</a>
createPullRequestR :: Name Owner -> Name Repo -> CreatePullRequest -> Request 'RW PullRequest

-- | Update a pull request. See
--   <a>https://developer.github.com/v3/pulls/#update-a-pull-request</a>
updatePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> EditPullRequest -> Request 'RW PullRequest

-- | List commits on a pull request. See
--   <a>https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request</a>
pullRequestCommitsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Commit)

-- | List pull requests files. See
--   <a>https://developer.github.com/v3/pulls/#list-pull-requests-files</a>
pullRequestFilesR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector File)

-- | Query if a pull request has been merged. See
--   <a>https://developer.github.com/v3/pulls/#get-if-a-pull-request-has-been-merged</a>
isPullRequestMergedR :: Name Owner -> Name Repo -> IssueNumber -> GenRequest 'MtStatus rw Bool

-- | Merge a pull request (Merge Button).
--   <a>https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button</a>
mergePullRequestR :: Name Owner -> Name Repo -> IssueNumber -> Maybe Text -> GenRequest 'MtStatus 'RW MergeResult

-- | List comments on a pull request. See
--   <a>https://developer.github.com/v3/pulls/comments/#list-comments-on-a-pull-request</a>
pullRequestCommentsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Comment)

-- | Query a single comment. See
--   <a>https://developer.github.com/v3/pulls/comments/#get-a-single-comment</a>
pullRequestCommentR :: Name Owner -> Name Repo -> Id Comment -> Request k Comment

-- | Create a comment.
--   
--   See
--   <a>https://developer.github.com/v3/pulls/comments/#create-a-comment</a>
createPullCommentR :: Name Owner -> Name Repo -> IssueNumber -> Text -> Text -> Int -> Text -> Request 'RW Comment

-- | Create a comment reply.
--   
--   See
--   <a>https://developer.github.com/v3/pulls/comments/#create-a-review-comment-reply</a>
createPullCommentReplyR :: Name Owner -> Name Repo -> IssueNumber -> Id Comment -> Text -> Request 'RW Comment

-- | List reviews for a pull request. See
--   <a>https://developer.github.com/v3/pulls/reviews/#list-reviews-on-a-pull-request</a>
pullRequestReviewsR :: Name Owner -> Name Repo -> IssueNumber -> FetchCount -> Request k (Vector Review)

-- | Query a single pull request review. see
--   <a>https://developer.github.com/v3/pulls/reviews/#get-a-single-review</a>
pullRequestReviewR :: Name Owner -> Name Repo -> IssueNumber -> Id Review -> Request k Review

-- | Query the comments for a single pull request review. see
--   <a>https://developer.github.com/v3/pulls/reviews/#get-comments-for-a-single-review</a>
pullRequestReviewCommentsR :: Name Owner -> Name Repo -> IssueNumber -> Id Review -> Request k [ReviewComment]

-- | List your repositories. See
--   <a>https://docs.github.com/en/rest/reference/repos#list-repositories-for-the-authenticated-user</a>
currentUserReposR :: RepoPublicity -> FetchCount -> Request k (Vector Repo)

-- | List user repositories. See
--   <a>https://docs.github.com/en/rest/reference/repos#list-repositories-for-a-user</a>
userReposR :: Name Owner -> RepoPublicity -> FetchCount -> Request k (Vector Repo)

-- | List organization repositories. See
--   <a>https://docs.github.com/en/rest/reference/repos#list-organization-repositories</a>
organizationReposR :: Name Organization -> RepoPublicity -> FetchCount -> Request k (Vector Repo)

-- | Query single repository. See
--   <a>https://developer.github.com/v3/repos/#get</a>
repositoryR :: Name Owner -> Name Repo -> Request k Repo

-- | List contributors. See
--   <a>https://developer.github.com/v3/repos/#list-contributors</a>
contributorsR :: Name Owner -> Name Repo -> Bool -> FetchCount -> Request k (Vector Contributor)

-- | List languages. See
--   <a>https://developer.github.com/v3/repos/#list-languages</a>
languagesForR :: Name Owner -> Name Repo -> Request k Languages

-- | List tags. See <a>https://developer.github.com/v3/repos/#list-tags</a>
tagsForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Tag)

-- | List branches. See
--   <a>https://developer.github.com/v3/repos/#list-branches</a>
branchesForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Branch)

-- | List collaborators. See
--   <a>https://developer.github.com/v3/repos/collaborators/#list-collaborators</a>
collaboratorsOnR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector SimpleUser)

-- | Review a user's permission level.
--   <a>https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level</a>
collaboratorPermissionOnR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtJSON rw CollaboratorWithPermission

-- | Check if a user is a collaborator. See
--   <a>https://developer.github.com/v3/repos/collaborators/#check-if-a-user-is-a-collaborator</a>
isCollaboratorOnR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtStatus rw Bool

-- | Invite a user as a collaborator. See
--   <a>https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator</a>
addCollaboratorR :: Name Owner -> Name Repo -> Name User -> GenRequest 'MtJSON 'RW (Maybe RepoInvitation)

-- | List commit comments for a repository. See
--   <a>https://developer.github.com/v3/repos/comments/#list-commit-comments-for-a-repository</a>
commentsForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Comment)

-- | List comments for a single commit. See
--   <a>https://developer.github.com/v3/repos/comments/#list-comments-for-a-single-commit</a>
commitCommentsForR :: Name Owner -> Name Repo -> Name Commit -> FetchCount -> Request k (Vector Comment)

-- | Query a single commit comment. See
--   <a>https://developer.github.com/v3/repos/comments/#get-a-single-commit-comment</a>
commitCommentForR :: Name Owner -> Name Repo -> Id Comment -> Request k Comment

-- | List commits on a repository. See
--   <a>https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository</a>
commitsForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Commit)

-- | List commits on a repository. See
--   <a>https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository</a>
commitsWithOptionsForR :: Name Owner -> Name Repo -> FetchCount -> [CommitQueryOption] -> Request k (Vector Commit)

-- | Query a single commit. See
--   <a>https://developer.github.com/v3/repos/commits/#get-a-single-commit</a>
commitR :: Name Owner -> Name Repo -> Name Commit -> Request k Commit

-- | Compare two commits. See
--   <a>https://developer.github.com/v3/repos/commits/#compare-two-commits</a>
diffR :: Name Owner -> Name Repo -> Name Commit -> Name Commit -> Request k Diff
contentsForR :: Name Owner -> Name Repo -> Text -> Maybe Text -> Request k Content
readmeForR :: Name Owner -> Name Repo -> Request k Content

-- | Get archive link. See
--   <a>https://developer.github.com/v3/repos/contents/#get-archive-link</a>
archiveForR :: Name Owner -> Name Repo -> ArchiveFormat -> Maybe Text -> GenRequest 'MtRedirect rw URI

-- | Create a file. See
--   <a>https://developer.github.com/v3/repos/contents/#create-a-file</a>
createFileR :: Name Owner -> Name Repo -> CreateFile -> Request 'RW ContentResult

-- | Update a file. See
--   <a>https://developer.github.com/v3/repos/contents/#update-a-file</a>
updateFileR :: Name Owner -> Name Repo -> UpdateFile -> Request 'RW ContentResult

-- | Delete a file. See
--   <a>https://developer.github.com/v3/repos/contents/#delete-a-file</a>
deleteFileR :: Name Owner -> Name Repo -> DeleteFile -> GenRequest 'MtUnit 'RW ()

-- | Querying deploy keys. See
--   <a>https://developer.github.com/v3/repos/keys/#list-deploy-keys</a>
deployKeysForR :: Name Owner -> Name Repo -> FetchCount -> Request 'RA (Vector RepoDeployKey)

-- | Querying a deploy key. See
--   <a>https://developer.github.com/v3/repos/keys/#get-a-deploy-key</a>
deployKeyForR :: Name Owner -> Name Repo -> Id RepoDeployKey -> Request 'RA RepoDeployKey

-- | Create a deploy key. See
--   <a>https://developer.github.com/v3/repos/keys/#add-a-new-deploy-key</a>.
createRepoDeployKeyR :: Name Owner -> Name Repo -> NewRepoDeployKey -> Request 'RW RepoDeployKey

-- | Delete a deploy key. See
--   <a>https://developer.github.com/v3/repos/keys/#remove-a-deploy-key</a>
deleteRepoDeployKeyR :: Name Owner -> Name Repo -> Id RepoDeployKey -> GenRequest 'MtUnit 'RW ()

-- | List deployments. See
--   <a>https://developer.github.com/v3/repos/deployments/#list-deployments</a>
deploymentsWithOptionsForR :: FromJSON a => Name Owner -> Name Repo -> FetchCount -> [DeploymentQueryOption] -> Request 'RA (Vector (Deployment a))

-- | Create a deployment. See
--   <a>https://developer.github.com/v3/repos/deployments/#create-a-deployment</a>
createDeploymentR :: (ToJSON a, FromJSON a) => Name Owner -> Name Repo -> CreateDeployment a -> Request 'RW (Deployment a)

-- | List deployment statuses. See
--   <a>https://developer.github.com/v3/repos/deployments/#list-deployment-statuses</a>
deploymentStatusesForR :: Name Owner -> Name Repo -> Id (Deployment a) -> FetchCount -> Request 'RA (Vector DeploymentStatus)

-- | Create a deployment status. See
--   <a>https://developer.github.com/v3/repos/deployments/#list-deployment-statuses</a>
createDeploymentStatusR :: Name Owner -> Name Repo -> Id (Deployment a) -> CreateDeploymentStatus -> Request 'RW DeploymentStatus

-- | List forks. See
--   <a>https://developer.github.com/v3/repos/forks/#list-forks</a>
forksForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Repo)

-- | Create a new status See
--   <a>https://developer.github.com/v3/repos/statuses/#create-a-status</a>
createStatusR :: Name Owner -> Name Repo -> Name Commit -> NewStatus -> Request 'RW Status

-- | All statuses for a commit See
--   <a>https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref</a>
statusesForR :: Name Owner -> Name Repo -> Name Commit -> FetchCount -> Request 'RW (Vector Status)

-- | The combined status for a specific commit See
--   <a>https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref</a>
statusForR :: Name Owner -> Name Repo -> Name Commit -> Request 'RW CombinedStatus

-- | List hooks. See
--   <a>https://developer.github.com/v3/repos/hooks/#list-hooks</a>
webhooksForR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector RepoWebhook)
webhookForR :: Name Owner -> Name Repo -> Id RepoWebhook -> Request k RepoWebhook

-- | Create a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#create-a-hook</a>
createRepoWebhookR :: Name Owner -> Name Repo -> NewRepoWebhook -> Request 'RW RepoWebhook

-- | Edit a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#edit-a-hook</a>
editRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> EditRepoWebhook -> Request 'RW RepoWebhook

-- | Test a push hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#test-a-push-hook</a>
testPushRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool

-- | Ping a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#ping-a-hook</a>
pingRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtStatus 'RW Bool

-- | Delete a hook. See
--   <a>https://developer.github.com/v3/repos/hooks/#delete-a-hook</a>
deleteRepoWebhookR :: Name Owner -> Name Repo -> Id RepoWebhook -> GenRequest 'MtUnit 'RW ()

-- | List releases for a repository. See
--   <a>https://developer.github.com/v3/repos/releases/#list-releases-for-a-repository</a>
releasesR :: Name Owner -> Name Repo -> FetchCount -> Request k (Vector Release)

-- | Get a single release. See
--   <a>https://developer.github.com/v3/repos/releases/#get-a-single-release</a>
releaseR :: Name Owner -> Name Repo -> Id Release -> Request k Release

-- | Get the latest release. See
--   <a>https://developer.github.com/v3/repos/releases/#get-the-latest-release</a>
latestReleaseR :: Name Owner -> Name Repo -> Request k Release

-- | Get a release by tag name See
--   <a>https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name</a>
releaseByTagNameR :: Name Owner -> Name Repo -> Text -> Request k Release

-- | List open invitations of a repository See
--   <a>https://developer.github.com/v3/repos/invitations/#list-invitations-for-a-repository</a>
listInvitationsOnR :: Name Owner -> Name Repo -> FetchCount -> GenRequest 'MtJSON k (Vector RepoInvitation)

-- | Accept a repository invitation See
--   <a>https://developer.github.com/v3/repos/invitations/#accept-a-repository-invitation</a>
acceptInvitationFromR :: Id RepoInvitation -> GenRequest 'MtUnit 'RW ()

-- | List a user's repository invitations See
--   <a>https://developer.github.com/v3/repos/invitations/#list-a-users-repository-invitations</a>
listInvitationsForR :: FetchCount -> Request k (Vector RepoInvitation)

-- | Search repositories. See
--   <a>https://developer.github.com/v3/search/#search-repositories</a>
searchReposR :: Text -> FetchCount -> Request k (SearchResult Repo)

-- | Search code. See
--   <a>https://developer.github.com/v3/search/#search-code</a>
searchCodeR :: Text -> FetchCount -> Request k (SearchResult Code)

-- | Search issues. See
--   <a>https://developer.github.com/v3/search/#search-issues</a>
searchIssuesR :: Text -> FetchCount -> Request k (SearchResult Issue)

-- | Search users. See
--   <a>https://developer.github.com/v3/search/#search-code</a>
searchUsersR :: Text -> FetchCount -> Request k (SearchResult SimpleUser)

-- | Query a single user. See
--   <a>https://developer.github.com/v3/users/#get-a-single-user</a>
--   
--   <pre>
--   &gt;&gt;&gt; github' userInfoForR "mike-burns"
--   </pre>
--   
--   or
--   
--   <pre>
--   &gt;&gt;&gt; github userInfoForR (OAuth "github-token") "mike-burns"
--   </pre>
userInfoForR :: Name User -> Request k User

-- | Query a single user or an organization. See
--   <a>https://developer.github.com/v3/users/#get-a-single-user</a>
ownerInfoForR :: Name Owner -> Request k Owner

-- | Query the authenticated user. See
--   <a>https://developer.github.com/v3/users/#get-the-authenticated-user</a>
userInfoCurrentR :: Request 'RA User

-- | List email addresses. See
--   <a>https://developer.github.com/v3/users/emails/#list-email-addresses-for-a-user</a>
currentUserEmailsR :: FetchCount -> Request 'RA (Vector Email)

-- | List public email addresses. See
--   <a>https://developer.github.com/v3/users/emails/#list-public-email-addresses-for-a-user</a>
currentUserPublicEmailsR :: FetchCount -> Request 'RA (Vector Email)

-- | List followers of a user. See
--   <a>https://developer.github.com/v3/users/followers/#list-followers-of-a-user</a>
usersFollowingR :: Name User -> FetchCount -> Request k (Vector SimpleUser)

-- | List users followed by another user. See
--   <a>https://developer.github.com/v3/users/followers/#list-users-followed-by-another-user</a>
usersFollowedByR :: Name User -> FetchCount -> Request k (Vector SimpleUser)

-- | Querying the authenticated users' public SSH keys See
--   <a>https://developer.github.com/v3/users/keys/#list-your-public-keys</a>
publicSSHKeysR :: Request 'RA (Vector PublicSSHKey)

-- | Querying public SSH keys. See
--   <a>https://developer.github.com/v3/users/keys/#list-public-keys-for-a-user</a>
publicSSHKeysForR :: Name Owner -> FetchCount -> Request 'RO (Vector PublicSSHKeyBasic)

-- | Querying a public SSH key. See
--   <a>https://developer.github.com/v3/users/keys/#get-a-single-public-key</a>
publicSSHKeyR :: Id PublicSSHKey -> Request 'RA PublicSSHKey

-- | Create a public SSH key. See
--   <a>https://developer.github.com/v3/users/keys/#create-a-public-key</a>.
createUserPublicSSHKeyR :: NewPublicSSHKey -> Request 'RW PublicSSHKey

-- | Delete a public SSH key. See
--   <a>https://developer.github.com/v3/users/keys/#delete-a-public-key</a>
deleteUserPublicSSHKeyR :: Id PublicSSHKey -> GenRequest 'MtUnit 'RW ()

-- | Get your current rate limit status.
--   <a>https://developer.github.com/v3/rate_limit/#get-your-current-rate-limit-status</a>
rateLimitR :: Request k RateLimit

-- | List artifacts for repository. See
--   <a>https://docs.github.com/en/rest/reference/actions#list-artifacts-for-a-repository</a>
artifactsForR :: Name Owner -> Name Repo -> ArtifactMod -> FetchCount -> Request 'RA (WithTotalCount Artifact)

-- | Get an artifact. See
--   <a>https://docs.github.com/en/rest/reference/actions#get-an-artifact</a>
artifactR :: Name Owner -> Name Repo -> Id Artifact -> Request 'RA Artifact

-- | Delete an artifact. See
--   <a>https://docs.github.com/en/rest/reference/actions#delete-an-artifact</a>
deleteArtifactR :: Name Owner -> Name Repo -> Id Comment -> GenRequest 'MtUnit 'RW ()

-- | Download an artifact. See
--   <a>https://docs.github.com/en/rest/reference/actions#download-an-artifact</a>
downloadArtifactR :: Name Owner -> Name Repo -> Id Artifact -> GenRequest 'MtRedirect 'RW URI

-- | List artifacts for a workflow run. See
--   <a>https://docs.github.com/en/rest/reference/actions#list-workflow-run-artifacts</a>
artifactsForWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> FetchCount -> Request 'RA (WithTotalCount Artifact)

-- | Get Actions cache usage for the organization. See
--   <a>https://docs.github.com/en/rest/actions/cache#get-github-actions-cache-usage-for-an-organization</a>
cacheUsageOrganizationR :: Name Organization -> GenRequest 'MtJSON 'RA OrganizationCacheUsage

-- | List repositories with GitHub Actions cache usage for an organization.
--   See
--   <a>https://docs.github.com/en/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization</a>
cacheUsageByRepositoryR :: Name Organization -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount RepositoryCacheUsage)

-- | Get GitHub Actions cache usage for a repository. See
--   <a>https://docs.github.com/en/rest/actions/cache#get-github-actions-cache-usage-for-a-repository</a>
cacheUsageR :: Name Owner -> Name Repo -> Request k RepositoryCacheUsage

-- | List the GitHub Actions caches for a repository. See
--   <a>https://docs.github.com/en/rest/actions/cache#list-github-actions-caches-for-a-repository</a>
cachesForRepoR :: Name Owner -> Name Repo -> CacheMod -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Cache)

-- | Delete GitHub Actions cache for a repository. See
--   <a>https://docs.github.com/en/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id</a>
deleteCacheR :: Name Owner -> Name Repo -> Id Cache -> GenRequest 'MtUnit 'RW ()

-- | List organization secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-organization-secrets</a>
organizationSecretsR :: Name Organization -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount OrganizationSecret)

-- | List organization secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-organization-public-key</a>
organizationPublicKeyR :: Name Organization -> GenRequest 'MtJSON 'RA PublicKey

-- | Get an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-organization-secret</a>
organizationSecretR :: Name Organization -> Name OrganizationSecret -> GenRequest 'MtJSON 'RA OrganizationSecret

-- | Create or update an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#create-or-update-an-organization-secret</a>
setOrganizationSecretR :: Name Organization -> Name OrganizationSecret -> SetSecret -> GenRequest 'MtUnit 'RW ()

-- | Delete an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#delete-an-organization-secret</a>
deleteOrganizationSecretR :: Name Organization -> Name OrganizationSecret -> GenRequest 'MtUnit 'RW ()

-- | Get selected repositories for an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-selected-repositories-for-an-organization-secret</a>
organizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount SelectedRepo)

-- | Set selected repositories for an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#set-selected-repositories-for-an-organization-secret</a>
setOrganizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> SetSelectedRepositories -> GenRequest 'MtUnit 'RW ()

-- | Add selected repository to an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#add-selected-repository-to-an-organization-secret</a>
addOrganizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> Id Repo -> GenRequest 'MtUnit 'RW ()

-- | Remove selected repository from an organization secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#remove-selected-repository-from-an-organization-secret</a>
removeOrganizationSelectedRepositoriesForSecretR :: Name Organization -> Name OrganizationSecret -> Id Repo -> GenRequest 'MtUnit 'RW ()

-- | List repository secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-repository-secrets</a>
repoSecretsR :: Name Owner -> Name Repo -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount RepoSecret)

-- | Get a repository public key. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-a-repository-public-key</a>
repoPublicKeyR :: Name Owner -> Name Organization -> GenRequest 'MtJSON 'RA PublicKey

-- | Get a repository secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-a-repository-secret</a>
repoSecretR :: Name Owner -> Name Organization -> Name RepoSecret -> GenRequest 'MtJSON 'RA RepoSecret

-- | Create or update a repository secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#create-or-update-a-repository-secret</a>
setRepoSecretR :: Name Owner -> Name Organization -> Name RepoSecret -> SetRepoSecret -> GenRequest 'MtUnit 'RW ()

-- | Delete a repository secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#delete-a-repository-secret</a>
deleteRepoSecretR :: Name Owner -> Name Organization -> Name RepoSecret -> GenRequest 'MtUnit 'RW ()

-- | List environment secrets. See
--   <a>https://docs.github.com/en/rest/actions/secrets#list-environment-secrets</a>
environmentSecretsR :: Id Repo -> Name Environment -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount RepoSecret)

-- | Get an environment public key. See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-environment-public-key</a>
environmentPublicKeyR :: Id Repo -> Name Environment -> GenRequest 'MtJSON 'RA PublicKey

-- | Get an environment secret See
--   <a>https://docs.github.com/en/rest/actions/secrets#get-an-environment-secret</a>
environmentSecretR :: Id Repo -> Name Environment -> Name RepoSecret -> GenRequest 'MtJSON 'RA RepoSecret

-- | Create or update an environment secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#create-or-update-an-environment-secret</a>
setEnvironmentSecretR :: Id Repo -> Name Environment -> Name RepoSecret -> SetRepoSecret -> GenRequest 'MtUnit 'RW ()

-- | Delete an environment secret. See
--   <a>https://docs.github.com/en/rest/actions/secrets#delete-an-environment-secret</a>
deleteEnvironmentSecretR :: Id Repo -> Name Environment -> Name RepoSecret -> GenRequest 'MtUnit 'RW ()

-- | Get a job for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#get-a-job-for-a-workflow-run</a>
jobR :: Name Owner -> Name Repo -> Id Job -> Request 'RA Job

-- | Download job logs for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#download-job-logs-for-a-workflow-run</a>
downloadJobLogsR :: Name Owner -> Name Repo -> Id Job -> GenRequest 'MtRedirect 'RO URI

-- | List jobs for a workflow run attempt. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt</a>
jobsForWorkflowRunAttemptR :: Name Owner -> Name Repo -> Id WorkflowRun -> Id RunAttempt -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Job)

-- | List jobs for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run</a>
jobsForWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Job)

-- | Re-run a job from a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run</a>
reRunJobR :: Name Owner -> Name Repo -> Id Job -> GenRequest 'MtUnit 'RW ()

-- | List workflow runs for a repository. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#list-workflow-runs-for-a-repository</a>
workflowRunsR :: Name Owner -> Name Repo -> WorkflowRunMod -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount WorkflowRun)

-- | Get a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#get-a-workflow-run</a>
workflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtJSON 'RA WorkflowRun

-- | Delete a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#delete-a-workflow-run</a>
deleteWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Get the review history for a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#get-the-review-history-for-a-workflow-run</a>
workflowRunReviewHistoryR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtJSON 'RA (Vector ReviewHistory)

-- | Approve a workflow run for a fork pull request. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#approve-a-workflow-run-for-a-fork-pull-request</a>
approveWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Get a workflow run attempt. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#get-a-workflow-run-attempt</a>
workflowRunAttemptR :: Name Owner -> Name Repo -> Id WorkflowRun -> Id RunAttempt -> GenRequest 'MtJSON 'RA WorkflowRun

-- | Download workflow run attempt logs. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#download-workflow-run-attempt-logs</a>
downloadWorkflowRunAttemptLogsR :: Name Owner -> Name Repo -> Id WorkflowRun -> Id RunAttempt -> GenRequest 'MtRedirect 'RO URI

-- | Cancel a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#cancel-a-workflow-run</a>
cancelWorkflowRunR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Download workflow run logs. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#download-workflow-run-logs</a>
downloadWorkflowRunLogsR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtRedirect 'RA URI

-- | Delete workflow run logs. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#delete-workflow-run-logs</a>
deleteWorkflowRunLogsR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Re-run a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#re-run-a-workflow</a>
reRunWorkflowR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | Re-run failed jobs from a workflow run. See
--   <a>https://docs.github.com/en/rest/actions/re-run-failed-jobs-from-a-workflow-run</a>
reRunFailedJobsR :: Name Owner -> Name Repo -> Id WorkflowRun -> GenRequest 'MtUnit 'RW ()

-- | List workflow runs for a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow</a>
workflowRunsForWorkflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> WorkflowRunMod -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount WorkflowRun)

-- | List repository workflows. See
--   <a>https://docs.github.com/en/rest/actions/workflows#list-repository-workflows</a>
repositoryWorkflowsR :: Name Owner -> Name Repo -> FetchCount -> GenRequest 'MtJSON 'RA (WithTotalCount Workflow)

-- | Get a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflows#get-a-workflow</a>
workflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> GenRequest 'MtJSON 'RA Workflow

-- | Disable a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflows#disable-a-workflow</a>
disableWorkflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> GenRequest 'MtUnit 'RW ()

-- | Create a workflow dispatch event. See
--   <a>https://docs.github.com/en/rest/actions/workflows#create-a-workflow-dispatch-event</a>
triggerWorkflowR :: (ToJSON a, IsPathPart idOrName) => Name Owner -> Name Repo -> idOrName -> CreateWorkflowDispatchEvent a -> GenRequest 'MtUnit 'RW ()

-- | Enable a workflow. See
--   <a>https://docs.github.com/en/rest/actions/workflows#enable-a-workflow</a>
enableWorkflowR :: IsPathPart idOrName => Name Owner -> Name Repo -> idOrName -> GenRequest 'MtUnit 'RW ()
