-- | 'TxData' type and associated functionality.

module Michelson.Runtime.TxData
       ( TxData (..)
       , tdSenderAddressL
       , tdParameterL
       , tdEntrypointL
       , tdAmountL
       ) where

import Control.Lens (makeLensesWith)

import Michelson.Untyped (EpName, Value)
import Tezos.Address (Address)
import Tezos.Core (Mutez)
import Util.Lens (postfixLFields)

-- | Data associated with a particular transaction.
data TxData = TxData
  { tdSenderAddress :: Address
  , tdParameter :: Value
  , tdEntrypoint :: EpName
  , tdAmount :: Mutez
  } deriving stock (Show, Eq)

makeLensesWith postfixLFields ''TxData