{-# LANGUAGE NoImplicitPrelude #-}
module Ledger.Value
( module Export
, noAdaValue
, adaOnlyValue
, isAdaOnlyValue
, currencyValueOf
) where
import Ledger.Ada qualified as Ada
import Plutus.V1.Ledger.Value as Export
import PlutusTx.AssocMap qualified as Map
import PlutusTx.Prelude (Bool, Eq ((==)), Maybe (Just, Nothing), mempty, (-))
{-# INLINABLE noAdaValue #-}
noAdaValue :: Value -> Value
noAdaValue :: Value -> Value
noAdaValue Value
v = Value
v Value -> Value -> Value
forall a. AdditiveGroup a => a -> a -> a
- Value -> Value
adaOnlyValue Value
v
{-# INLINABLE adaOnlyValue #-}
adaOnlyValue :: Value -> Value
adaOnlyValue :: Value -> Value
adaOnlyValue Value
v = Ada -> Value
Ada.toValue (Value -> Ada
Ada.fromValue Value
v)
{-# INLINABLE isAdaOnlyValue #-}
isAdaOnlyValue :: Value -> Bool
isAdaOnlyValue :: Value -> Bool
isAdaOnlyValue Value
v = Value -> Value
adaOnlyValue Value
v Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
== Value
v
{-# INLINABLE currencyValueOf #-}
currencyValueOf :: Value -> CurrencySymbol -> Value
currencyValueOf :: Value -> CurrencySymbol -> Value
currencyValueOf (Value Map CurrencySymbol (Map TokenName Integer)
m) CurrencySymbol
c = case CurrencySymbol
-> Map CurrencySymbol (Map TokenName Integer)
-> Maybe (Map TokenName Integer)
forall k v. Eq k => k -> Map k v -> Maybe v
Map.lookup CurrencySymbol
c Map CurrencySymbol (Map TokenName Integer)
m of
Maybe (Map TokenName Integer)
Nothing -> Value
forall a. Monoid a => a
mempty
Just Map TokenName Integer
t -> Map CurrencySymbol (Map TokenName Integer) -> Value
Value (CurrencySymbol
-> Map TokenName Integer
-> Map CurrencySymbol (Map TokenName Integer)
forall k v. k -> v -> Map k v
Map.singleton CurrencySymbol
c Map TokenName Integer
t)