module Cooked.MockChain.Error
(
BalancingError (..),
MockChainError (..),
runToCardanoErrorInMockChainError,
runFailInMockChainError,
)
where
import Cooked.Skeleton.User
import Ledger.Index qualified as Ledger
import Ledger.Slot qualified as Ledger
import Ledger.Tx qualified as Ledger
import PlutusLedgerApi.V3 qualified as Api
import Polysemy
import Polysemy.Error
import Polysemy.Fail
data BalancingError
=
Peer
|
NotEnoughFundForProperFee Peer
|
NotEnoughFund Peer Api.Value
|
NoSuitableCollateral Integer Integer Api.Value
|
MissingBalancingUser
deriving (Int -> BalancingError -> ShowS
[BalancingError] -> ShowS
BalancingError -> String
(Int -> BalancingError -> ShowS)
-> (BalancingError -> String)
-> ([BalancingError] -> ShowS)
-> Show BalancingError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BalancingError -> ShowS
showsPrec :: Int -> BalancingError -> ShowS
$cshow :: BalancingError -> String
show :: BalancingError -> String
$cshowList :: [BalancingError] -> ShowS
showList :: [BalancingError] -> ShowS
Show, BalancingError -> BalancingError -> Bool
(BalancingError -> BalancingError -> Bool)
-> (BalancingError -> BalancingError -> Bool) -> Eq BalancingError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BalancingError -> BalancingError -> Bool
== :: BalancingError -> BalancingError -> Bool
$c/= :: BalancingError -> BalancingError -> Bool
/= :: BalancingError -> BalancingError -> Bool
Eq)
data MockChainError
=
MCEValidationError Ledger.ValidationPhase Ledger.ValidationError
|
MCEBalancingError BalancingError
|
MCEToCardanoError Ledger.ToCardanoError
|
MCEWrongReferenceScriptError Api.TxOutRef Api.ScriptHash (Maybe Api.ScriptHash)
|
MCEUnknownOutRef Api.TxOutRef
|
MCEPastSlot Ledger.Slot Ledger.Slot
|
MCEUnsupportedFeature String
|
MCEFailure String
deriving (Int -> MockChainError -> ShowS
[MockChainError] -> ShowS
MockChainError -> String
(Int -> MockChainError -> ShowS)
-> (MockChainError -> String)
-> ([MockChainError] -> ShowS)
-> Show MockChainError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MockChainError -> ShowS
showsPrec :: Int -> MockChainError -> ShowS
$cshow :: MockChainError -> String
show :: MockChainError -> String
$cshowList :: [MockChainError] -> ShowS
showList :: [MockChainError] -> ShowS
Show, MockChainError -> MockChainError -> Bool
(MockChainError -> MockChainError -> Bool)
-> (MockChainError -> MockChainError -> Bool) -> Eq MockChainError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MockChainError -> MockChainError -> Bool
== :: MockChainError -> MockChainError -> Bool
$c/= :: MockChainError -> MockChainError -> Bool
/= :: MockChainError -> MockChainError -> Bool
Eq)
runToCardanoErrorInMockChainError ::
forall effs a.
(Member (Error MockChainError) effs) =>
Sem (Error Ledger.ToCardanoError : effs) a ->
Sem effs a
runToCardanoErrorInMockChainError :: forall (effs :: EffectRow) a.
Member (Error MockChainError) effs =>
Sem (Error ToCardanoError : effs) a -> Sem effs a
runToCardanoErrorInMockChainError = (ToCardanoError -> MockChainError)
-> Sem (Error ToCardanoError : effs) a -> Sem effs a
forall e1 e2 (r :: EffectRow) a.
Member (Error e2) r =>
(e1 -> e2) -> Sem (Error e1 : r) a -> Sem r a
mapError ToCardanoError -> MockChainError
MCEToCardanoError
runFailInMockChainError ::
forall effs a.
(Member (Error MockChainError) effs) =>
Sem (Fail : effs) a ->
Sem effs a
runFailInMockChainError :: forall (effs :: EffectRow) a.
Member (Error MockChainError) effs =>
Sem (Fail : effs) a -> Sem effs a
runFailInMockChainError = (forall (rInitial :: EffectRow) x.
Fail (Sem rInitial) x -> Sem effs x)
-> Sem (Fail : effs) a -> Sem effs a
forall (e :: (* -> *) -> * -> *) (r :: EffectRow) a.
FirstOrder e "interpret" =>
(forall (rInitial :: EffectRow) x. e (Sem rInitial) x -> Sem r x)
-> Sem (e : r) a -> Sem r a
interpret ((forall (rInitial :: EffectRow) x.
Fail (Sem rInitial) x -> Sem effs x)
-> Sem (Fail : effs) a -> Sem effs a)
-> (forall (rInitial :: EffectRow) x.
Fail (Sem rInitial) x -> Sem effs x)
-> Sem (Fail : effs) a
-> Sem effs a
forall a b. (a -> b) -> a -> b
$
\(Fail String
s) -> MockChainError -> Sem effs x
forall e (r :: EffectRow) a. Member (Error e) r => e -> Sem r a
throw (MockChainError -> Sem effs x) -> MockChainError -> Sem effs x
forall a b. (a -> b) -> a -> b
$ String -> MockChainError
MCEFailure String
s