{-# LANGUAGE NamedFieldPuns #-}
module Ledger.Tokens(
token
, outputsWith
, paidTo
) where
import Plutus.V1.Ledger.Contexts
import Plutus.V1.Ledger.Value (AssetClass, Value, leq)
import Plutus.V1.Ledger.Value qualified as Value
{-# INLINABLE token #-}
token :: AssetClass -> Value
token :: AssetClass -> Value
token AssetClass
cur = AssetClass -> Integer -> Value
Value.assetClassValue AssetClass
cur Integer
1
{-# INLINABLE outputsWith #-}
outputsWith :: TxInfo -> AssetClass -> [TxOut]
outputsWith :: TxInfo -> AssetClass -> [TxOut]
outputsWith TxInfo{[TxOut]
txInfoOutputs :: TxInfo -> [TxOut]
txInfoOutputs :: [TxOut]
txInfoOutputs} AssetClass
currency =
(TxOut -> Bool) -> [TxOut] -> [TxOut]
forall a. (a -> Bool) -> [a] -> [a]
filter (\TxOut
output -> AssetClass -> Value
token AssetClass
currency Value -> Value -> Bool
`leq` TxOut -> Value
txOutValue TxOut
output) [TxOut]
txInfoOutputs
{-# INLINABLE paidTo #-}
paidTo :: TxInfo -> AssetClass -> Value
paidTo :: TxInfo -> AssetClass -> Value
paidTo TxInfo
ptx AssetClass
currency =
(TxOut -> Value) -> [TxOut] -> Value
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap TxOut -> Value
txOutValue (TxInfo -> AssetClass -> [TxOut]
outputsWith TxInfo
ptx AssetClass
currency)