{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies     #-}

-- |
-- Module      :  Network.Polkadot.Extrinsic.SignedExtension
-- Copyright   :  Aleksandr Krupenkin 2016-2024
-- License     :  Apache-2.0
--
-- Maintainer  :  mail@akru.me
-- Stability   :  experimental
-- Portability :  portable
--
-- Additional data that could be attached to the transaction.
--

module Network.Polkadot.Extrinsic.SignedExtension where


import           Codec.Scale                (Decode, Encode)
import           Network.JsonRpc.TinyClient (JsonRpc)

-- | Means by which a transaction may be extended. This type embodies both the data and the logic
-- that should be additionally associated with the transaction. It should be plain old data.
class (Encode a, Decode a, Encode (AdditionalSigned a), Decode (AdditionalSigned a))
    => SignedExtension a where
    -- | Any additional data that will go into the signed payload. This may be created dynamically
    --  from the transaction using the `additional_signed` function.
    type AdditionalSigned a

    -- | Construct any additional data that should be in the signed payload of the transaction. Can
    -- also perform any pre-signature-verification checks and return an error if needed.
    additional_signed :: JsonRpc m => a -> m (AdditionalSigned a)

instance SignedExtension () where
    type AdditionalSigned () = ()
    additional_signed :: forall (m :: * -> *). JsonRpc m => () -> m (AdditionalSigned ())
additional_signed ()
_ = () -> m ()
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

instance (SignedExtension a, SignedExtension b) => SignedExtension (a, b) where
    type AdditionalSigned (a, b) = (AdditionalSigned a, AdditionalSigned b)
    additional_signed :: forall (m :: * -> *).
JsonRpc m =>
(a, b) -> m (AdditionalSigned (a, b))
additional_signed (a
a, b
b) = (,)
        (AdditionalSigned a
 -> AdditionalSigned b -> (AdditionalSigned a, AdditionalSigned b))
-> m (AdditionalSigned a)
-> m (AdditionalSigned b
      -> (AdditionalSigned a, AdditionalSigned b))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> m (AdditionalSigned a)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => a -> m (AdditionalSigned a)
additional_signed a
a
        m (AdditionalSigned b -> (AdditionalSigned a, AdditionalSigned b))
-> m (AdditionalSigned b)
-> m (AdditionalSigned a, AdditionalSigned b)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> b -> m (AdditionalSigned b)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => b -> m (AdditionalSigned b)
additional_signed b
b

instance (SignedExtension a, SignedExtension b, SignedExtension c) => SignedExtension (a, b, c) where
    type AdditionalSigned (a, b, c) = (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c)
    additional_signed :: forall (m :: * -> *).
JsonRpc m =>
(a, b, c) -> m (AdditionalSigned (a, b, c))
additional_signed (a
a, b
b, c
c) = (,,)
        (AdditionalSigned a
 -> AdditionalSigned b
 -> AdditionalSigned c
 -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c))
-> m (AdditionalSigned a)
-> m (AdditionalSigned b
      -> AdditionalSigned c
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> m (AdditionalSigned a)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => a -> m (AdditionalSigned a)
additional_signed a
a
        m (AdditionalSigned b
   -> AdditionalSigned c
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c))
-> m (AdditionalSigned b)
-> m (AdditionalSigned c
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> b -> m (AdditionalSigned b)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => b -> m (AdditionalSigned b)
additional_signed b
b
        m (AdditionalSigned c
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c))
-> m (AdditionalSigned c)
-> m (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> c -> m (AdditionalSigned c)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => c -> m (AdditionalSigned c)
additional_signed c
c

instance (SignedExtension a, SignedExtension b, SignedExtension c, SignedExtension d) => SignedExtension (a, b, c, d) where
    type AdditionalSigned (a, b, c, d) = (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c, AdditionalSigned d)
    additional_signed :: forall (m :: * -> *).
JsonRpc m =>
(a, b, c, d) -> m (AdditionalSigned (a, b, c, d))
additional_signed (a
a, b
b, c
c, d
d) = (,,,)
        (AdditionalSigned a
 -> AdditionalSigned b
 -> AdditionalSigned c
 -> AdditionalSigned d
 -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
     AdditionalSigned d))
-> m (AdditionalSigned a)
-> m (AdditionalSigned b
      -> AdditionalSigned c
      -> AdditionalSigned d
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> m (AdditionalSigned a)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => a -> m (AdditionalSigned a)
additional_signed a
a
        m (AdditionalSigned b
   -> AdditionalSigned c
   -> AdditionalSigned d
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d))
-> m (AdditionalSigned b)
-> m (AdditionalSigned c
      -> AdditionalSigned d
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> b -> m (AdditionalSigned b)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => b -> m (AdditionalSigned b)
additional_signed b
b
        m (AdditionalSigned c
   -> AdditionalSigned d
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d))
-> m (AdditionalSigned c)
-> m (AdditionalSigned d
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> c -> m (AdditionalSigned c)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => c -> m (AdditionalSigned c)
additional_signed c
c
        m (AdditionalSigned d
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d))
-> m (AdditionalSigned d)
-> m (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
      AdditionalSigned d)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> d -> m (AdditionalSigned d)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => d -> m (AdditionalSigned d)
additional_signed d
d

instance (SignedExtension a, SignedExtension b, SignedExtension c, SignedExtension d, SignedExtension e) => SignedExtension (a, b, c, d, e) where
    type AdditionalSigned (a, b, c, d, e) = (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c, AdditionalSigned d, AdditionalSigned e)
    additional_signed :: forall (m :: * -> *).
JsonRpc m =>
(a, b, c, d, e) -> m (AdditionalSigned (a, b, c, d, e))
additional_signed (a
a, b
b, c
c, d
d, e
e) = (,,,,)
        (AdditionalSigned a
 -> AdditionalSigned b
 -> AdditionalSigned c
 -> AdditionalSigned d
 -> AdditionalSigned e
 -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
     AdditionalSigned d, AdditionalSigned e))
-> m (AdditionalSigned a)
-> m (AdditionalSigned b
      -> AdditionalSigned c
      -> AdditionalSigned d
      -> AdditionalSigned e
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> m (AdditionalSigned a)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => a -> m (AdditionalSigned a)
additional_signed a
a
        m (AdditionalSigned b
   -> AdditionalSigned c
   -> AdditionalSigned d
   -> AdditionalSigned e
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e))
-> m (AdditionalSigned b)
-> m (AdditionalSigned c
      -> AdditionalSigned d
      -> AdditionalSigned e
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> b -> m (AdditionalSigned b)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => b -> m (AdditionalSigned b)
additional_signed b
b
        m (AdditionalSigned c
   -> AdditionalSigned d
   -> AdditionalSigned e
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e))
-> m (AdditionalSigned c)
-> m (AdditionalSigned d
      -> AdditionalSigned e
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> c -> m (AdditionalSigned c)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => c -> m (AdditionalSigned c)
additional_signed c
c
        m (AdditionalSigned d
   -> AdditionalSigned e
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e))
-> m (AdditionalSigned d)
-> m (AdditionalSigned e
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> d -> m (AdditionalSigned d)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => d -> m (AdditionalSigned d)
additional_signed d
d
        m (AdditionalSigned e
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e))
-> m (AdditionalSigned e)
-> m (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
      AdditionalSigned d, AdditionalSigned e)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> e -> m (AdditionalSigned e)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => e -> m (AdditionalSigned e)
additional_signed e
e

instance (SignedExtension a, SignedExtension b, SignedExtension c, SignedExtension d, SignedExtension e, SignedExtension f) => SignedExtension (a, b, c, d, e, f) where
    type AdditionalSigned (a, b, c, d, e, f) = (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c, AdditionalSigned d, AdditionalSigned e, AdditionalSigned f)
    additional_signed :: forall (m :: * -> *).
JsonRpc m =>
(a, b, c, d, e, f) -> m (AdditionalSigned (a, b, c, d, e, f))
additional_signed (a
a, b
b, c
c, d
d, e
e, f
f) = (,,,,,)
        (AdditionalSigned a
 -> AdditionalSigned b
 -> AdditionalSigned c
 -> AdditionalSigned d
 -> AdditionalSigned e
 -> AdditionalSigned f
 -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
     AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
-> m (AdditionalSigned a)
-> m (AdditionalSigned b
      -> AdditionalSigned c
      -> AdditionalSigned d
      -> AdditionalSigned e
      -> AdditionalSigned f
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> m (AdditionalSigned a)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => a -> m (AdditionalSigned a)
additional_signed a
a
        m (AdditionalSigned b
   -> AdditionalSigned c
   -> AdditionalSigned d
   -> AdditionalSigned e
   -> AdditionalSigned f
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
-> m (AdditionalSigned b)
-> m (AdditionalSigned c
      -> AdditionalSigned d
      -> AdditionalSigned e
      -> AdditionalSigned f
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> b -> m (AdditionalSigned b)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => b -> m (AdditionalSigned b)
additional_signed b
b
        m (AdditionalSigned c
   -> AdditionalSigned d
   -> AdditionalSigned e
   -> AdditionalSigned f
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
-> m (AdditionalSigned c)
-> m (AdditionalSigned d
      -> AdditionalSigned e
      -> AdditionalSigned f
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> c -> m (AdditionalSigned c)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => c -> m (AdditionalSigned c)
additional_signed c
c
        m (AdditionalSigned d
   -> AdditionalSigned e
   -> AdditionalSigned f
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
-> m (AdditionalSigned d)
-> m (AdditionalSigned e
      -> AdditionalSigned f
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> d -> m (AdditionalSigned d)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => d -> m (AdditionalSigned d)
additional_signed d
d
        m (AdditionalSigned e
   -> AdditionalSigned f
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
-> m (AdditionalSigned e)
-> m (AdditionalSigned f
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> e -> m (AdditionalSigned e)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => e -> m (AdditionalSigned e)
additional_signed e
e
        m (AdditionalSigned f
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f))
-> m (AdditionalSigned f)
-> m (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
      AdditionalSigned d, AdditionalSigned e, AdditionalSigned f)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f -> m (AdditionalSigned f)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => f -> m (AdditionalSigned f)
additional_signed f
f

instance (SignedExtension a, SignedExtension b, SignedExtension c, SignedExtension d, SignedExtension e, SignedExtension f, SignedExtension g) => SignedExtension (a, b, c, d, e, f, g) where
    type AdditionalSigned (a, b, c, d, e, f, g) = (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c, AdditionalSigned d, AdditionalSigned e, AdditionalSigned f, AdditionalSigned g)
    additional_signed :: forall (m :: * -> *).
JsonRpc m =>
(a, b, c, d, e, f, g) -> m (AdditionalSigned (a, b, c, d, e, f, g))
additional_signed (a
a, b
b, c
c, d
d, e
e, f
f, g
g) = (,,,,,,)
        (AdditionalSigned a
 -> AdditionalSigned b
 -> AdditionalSigned c
 -> AdditionalSigned d
 -> AdditionalSigned e
 -> AdditionalSigned f
 -> AdditionalSigned g
 -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
     AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
     AdditionalSigned g))
-> m (AdditionalSigned a)
-> m (AdditionalSigned b
      -> AdditionalSigned c
      -> AdditionalSigned d
      -> AdditionalSigned e
      -> AdditionalSigned f
      -> AdditionalSigned g
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
          AdditionalSigned g))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> m (AdditionalSigned a)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => a -> m (AdditionalSigned a)
additional_signed a
a
        m (AdditionalSigned b
   -> AdditionalSigned c
   -> AdditionalSigned d
   -> AdditionalSigned e
   -> AdditionalSigned f
   -> AdditionalSigned g
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
       AdditionalSigned g))
-> m (AdditionalSigned b)
-> m (AdditionalSigned c
      -> AdditionalSigned d
      -> AdditionalSigned e
      -> AdditionalSigned f
      -> AdditionalSigned g
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
          AdditionalSigned g))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> b -> m (AdditionalSigned b)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => b -> m (AdditionalSigned b)
additional_signed b
b
        m (AdditionalSigned c
   -> AdditionalSigned d
   -> AdditionalSigned e
   -> AdditionalSigned f
   -> AdditionalSigned g
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
       AdditionalSigned g))
-> m (AdditionalSigned c)
-> m (AdditionalSigned d
      -> AdditionalSigned e
      -> AdditionalSigned f
      -> AdditionalSigned g
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
          AdditionalSigned g))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> c -> m (AdditionalSigned c)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => c -> m (AdditionalSigned c)
additional_signed c
c
        m (AdditionalSigned d
   -> AdditionalSigned e
   -> AdditionalSigned f
   -> AdditionalSigned g
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
       AdditionalSigned g))
-> m (AdditionalSigned d)
-> m (AdditionalSigned e
      -> AdditionalSigned f
      -> AdditionalSigned g
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
          AdditionalSigned g))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> d -> m (AdditionalSigned d)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => d -> m (AdditionalSigned d)
additional_signed d
d
        m (AdditionalSigned e
   -> AdditionalSigned f
   -> AdditionalSigned g
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
       AdditionalSigned g))
-> m (AdditionalSigned e)
-> m (AdditionalSigned f
      -> AdditionalSigned g
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
          AdditionalSigned g))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> e -> m (AdditionalSigned e)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => e -> m (AdditionalSigned e)
additional_signed e
e
        m (AdditionalSigned f
   -> AdditionalSigned g
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
       AdditionalSigned g))
-> m (AdditionalSigned f)
-> m (AdditionalSigned g
      -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
          AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
          AdditionalSigned g))
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f -> m (AdditionalSigned f)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => f -> m (AdditionalSigned f)
additional_signed f
f
        m (AdditionalSigned g
   -> (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
       AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
       AdditionalSigned g))
-> m (AdditionalSigned g)
-> m (AdditionalSigned a, AdditionalSigned b, AdditionalSigned c,
      AdditionalSigned d, AdditionalSigned e, AdditionalSigned f,
      AdditionalSigned g)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> g -> m (AdditionalSigned g)
forall a (m :: * -> *).
(SignedExtension a, JsonRpc m) =>
a -> m (AdditionalSigned a)
forall (m :: * -> *). JsonRpc m => g -> m (AdditionalSigned g)
additional_signed g
g