module Morley.Client.Action.Delegation
( setDelegateOp
, registerDelegateOp
) where
import Colog.Core.Class (HasLog)
import Colog.Message (Message)
import Morley.Client.Action.Common
import Morley.Client.Action.Operation
import Morley.Client.RPC.Class
import Morley.Client.RPC.Types
import Morley.Client.TezosClient.Class
import Morley.Client.Types
import Morley.Tezos.Address
import Morley.Tezos.Address.Alias
import Morley.Tezos.Crypto
setDelegateOp
:: ( HasTezosRpc m
, HasTezosClient m
, MonadReader env m
, HasLog env Message m)
=> ImplicitAddressOrAlias
-> Maybe KeyHash
-> m OperationHash
setDelegateOp :: forall (m :: * -> *) env.
(HasTezosRpc m, HasTezosClient m, MonadReader env m,
HasLog env Message m) =>
ImplicitAddressOrAlias -> Maybe KeyHash -> m OperationHash
setDelegateOp ImplicitAddressOrAlias
sender Maybe KeyHash
delegate =
((OperationHash, NonEmpty (OperationInfo Result)) -> OperationHash)
-> m (OperationHash, NonEmpty (OperationInfo Result))
-> m OperationHash
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (OperationHash, NonEmpty (OperationInfo Result)) -> OperationHash
forall a b. (a, b) -> a
fst (m (OperationHash, NonEmpty (OperationInfo Result))
-> m OperationHash)
-> (DelegationData
-> m (OperationHash, NonEmpty (OperationInfo Result)))
-> DelegationData
-> m OperationHash
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ImplicitAddressOrAlias
-> NonEmpty (OperationInfo ClientInput)
-> m (OperationHash, NonEmpty (OperationInfo Result))
forall (m :: * -> *) env.
(HasTezosRpc m, HasTezosClient m, WithClientLog env m) =>
ImplicitAddressOrAlias
-> NonEmpty (OperationInfo ClientInput)
-> m (OperationHash, NonEmpty (OperationInfo Result))
runOperationsNonEmpty ImplicitAddressOrAlias
sender (NonEmpty (OperationInfo ClientInput)
-> m (OperationHash, NonEmpty (OperationInfo Result)))
-> (DelegationData -> NonEmpty (OperationInfo ClientInput))
-> DelegationData
-> m (OperationHash, NonEmpty (OperationInfo Result))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OperationInfo ClientInput -> NonEmpty (OperationInfo ClientInput)
forall x. One x => OneItem x -> x
one (OperationInfo ClientInput -> NonEmpty (OperationInfo ClientInput))
-> (DelegationData -> OperationInfo ClientInput)
-> DelegationData
-> NonEmpty (OperationInfo ClientInput)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DelegationData -> OperationInfo ClientInput
forall i. DelegationInfo i -> OperationInfo i
OpDelegation (DelegationData -> m OperationHash)
-> DelegationData -> m OperationHash
forall a b. (a -> b) -> a -> b
$ Maybe KeyHash -> Maybe Mutez -> DelegationData
DelegationData Maybe KeyHash
delegate Maybe Mutez
forall a. Maybe a
Nothing
registerDelegateOp
:: ( HasTezosRpc m
, HasTezosClient m
, MonadReader env m
, HasLog env Message m)
=> KeyHash
-> m OperationHash
registerDelegateOp :: forall (m :: * -> *) env.
(HasTezosRpc m, HasTezosClient m, MonadReader env m,
HasLog env Message m) =>
KeyHash -> m OperationHash
registerDelegateOp KeyHash
sender = ImplicitAddressOrAlias -> Maybe KeyHash -> m OperationHash
forall (m :: * -> *) env.
(HasTezosRpc m, HasTezosClient m, MonadReader env m,
HasLog env Message m) =>
ImplicitAddressOrAlias -> Maybe KeyHash -> m OperationHash
setDelegateOp (KindedAddress 'AddressKindImplicit -> ImplicitAddressOrAlias
forall (kind :: AddressKind).
L1AddressKind kind =>
KindedAddress kind -> AddressOrAlias kind
AddressResolved (KindedAddress 'AddressKindImplicit -> ImplicitAddressOrAlias)
-> (KeyHash -> KindedAddress 'AddressKindImplicit)
-> KeyHash
-> ImplicitAddressOrAlias
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash -> KindedAddress 'AddressKindImplicit
ImplicitAddress (KeyHash -> ImplicitAddressOrAlias)
-> KeyHash -> ImplicitAddressOrAlias
forall a b. (a -> b) -> a -> b
$ KeyHash
sender) (KeyHash -> Maybe KeyHash
forall a. a -> Maybe a
Just KeyHash
sender)