{-# LANGUAGE FlexibleContexts, DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
module PaymentChannel.Internal.Settlement.Types
(
module PaymentChannel.Internal.Settlement.Types
, module PaymentChannel.Internal.Payment.Types
, module PaymentChannel.Internal.Settlement.Config
)
where
import PaymentChannel.Internal.Settlement.Script
import Bitcoin.Util
import PaymentChannel.Internal.Payment.Types
import PaymentChannel.Internal.Settlement.Config
import qualified Network.Haskoin.Crypto as HC
import qualified Network.Haskoin.Script as HS
import Data.Word (Word64)
import Data.Time.Clock (UTCTime)
{-# ANN module ("HLint: ignore Use mapMaybe"::String) #-}
data RefundScriptSig = RefundScriptSig
{ rssClientSig :: BtcSig
}
instance SpendFulfillment RefundScriptSig ChanParams where
rawSigs RefundScriptSig{..} ChanParams{..} =
[ (getPubKey cpReceiverPubKey, rssClientSig) ]
signatureScript RefundScriptSig{..} _ = Script
[ opPush rssClientSig
, OP_0 ]
instance HasSigner RefundScriptSig ChanParams where
signerPubKey = Tagged . getPubKey . cpSenderPubKey
instance TransformSigData RefundScriptSig () ChanParams where
mkSigData _ = Tagged . RefundScriptSig
data SettleInfo = SettleInfo
{ siValue :: BtcAmount
, siPayCount :: Word64
} deriving (Eq, Show, Generic, Serialize, FromJSON, ToJSON, NFData)
type ClientSignedTx = BtcTx P2SH ChanParams BtcSig