module Cooked.Skeleton.Withdrawal
( TxSkelWithdrawals,
pkWithdrawal,
scriptWithdrawal,
)
where
import Cooked.Conversion
import Cooked.Skeleton.Redeemer as X
import Data.Map (Map)
import Data.Map qualified as Map
import Plutus.Script.Utils.Ada qualified as Script
import Plutus.Script.Utils.Scripts qualified as Script
import PlutusLedgerApi.V3 qualified as Api
type TxSkelWithdrawals =
Map
(Either (Script.Versioned Script.Script) Api.PubKeyHash)
(TxSkelRedeemer, Script.Ada)
pkWithdrawal :: (ToPubKeyHash pkh) => pkh -> Script.Ada -> TxSkelWithdrawals
pkWithdrawal :: forall pkh. ToPubKeyHash pkh => pkh -> Ada -> TxSkelWithdrawals
pkWithdrawal pkh
pkh Ada
amount = Either (Versioned Script) PubKeyHash
-> (TxSkelRedeemer, Ada) -> TxSkelWithdrawals
forall k a. k -> a -> Map k a
Map.singleton (PubKeyHash -> Either (Versioned Script) PubKeyHash
forall a b. b -> Either a b
Right (PubKeyHash -> Either (Versioned Script) PubKeyHash)
-> PubKeyHash -> Either (Versioned Script) PubKeyHash
forall a b. (a -> b) -> a -> b
$ pkh -> PubKeyHash
forall a. ToPubKeyHash a => a -> PubKeyHash
toPubKeyHash pkh
pkh) (TxSkelRedeemer
emptyTxSkelRedeemer, Ada
amount)
scriptWithdrawal :: (ToVersionedScript script) => script -> TxSkelRedeemer -> Script.Ada -> TxSkelWithdrawals
scriptWithdrawal :: forall script.
ToVersionedScript script =>
script -> TxSkelRedeemer -> Ada -> TxSkelWithdrawals
scriptWithdrawal script
script TxSkelRedeemer
red Ada
amount = Either (Versioned Script) PubKeyHash
-> (TxSkelRedeemer, Ada) -> TxSkelWithdrawals
forall k a. k -> a -> Map k a
Map.singleton (Versioned Script -> Either (Versioned Script) PubKeyHash
forall a b. a -> Either a b
Left (Versioned Script -> Either (Versioned Script) PubKeyHash)
-> Versioned Script -> Either (Versioned Script) PubKeyHash
forall a b. (a -> b) -> a -> b
$ script -> Versioned Script
forall a. ToVersionedScript a => a -> Versioned Script
toVersionedScript script
script) (TxSkelRedeemer
red, Ada
amount)