-- | Objects from which an output datum can be extracted
module Cooked.Conversion.ToOutputDatum where

import PlutusLedgerApi.V3 qualified as Api

class ToOutputDatum a where
  toOutputDatum :: a -> Api.OutputDatum

instance ToOutputDatum Api.OutputDatum where
  toOutputDatum :: OutputDatum -> OutputDatum
toOutputDatum = OutputDatum -> OutputDatum
forall a. a -> a
id

instance ToOutputDatum Api.Datum where
  toOutputDatum :: Datum -> OutputDatum
toOutputDatum = Datum -> OutputDatum
Api.OutputDatum

instance ToOutputDatum () where
  toOutputDatum :: () -> OutputDatum
toOutputDatum = OutputDatum -> () -> OutputDatum
forall a b. a -> b -> a
const OutputDatum
Api.NoOutputDatum

instance ToOutputDatum Api.DatumHash where
  toOutputDatum :: DatumHash -> OutputDatum
toOutputDatum = DatumHash -> OutputDatum
Api.OutputDatumHash

instance ToOutputDatum Api.BuiltinData where
  toOutputDatum :: BuiltinData -> OutputDatum
toOutputDatum = Datum -> OutputDatum
forall a. ToOutputDatum a => a -> OutputDatum
toOutputDatum (Datum -> OutputDatum)
-> (BuiltinData -> Datum) -> BuiltinData -> OutputDatum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BuiltinData -> Datum
Api.Datum