packages feed

haskoin-bitcoind-0.4.1: src/Network/Bitcoin/Wallet/Haskoin.hs

module Network.Bitcoin.Wallet.Haskoin
    ( sendToAddress
    , getNewAddress
    ) where

import           Data.Fixed                  (Fixed (MkFixed))
import           Data.Text                   (Text)
import           Data.Word                   (Word64)
import           Network.Bitcoin.Haskoin     (addressToHex, hexToAddress,
                                              transactionIdToTxHash)
import qualified Network.Bitcoin.Types       as NBT
import           Network.Bitcoin.Wallet      (Client)
import qualified Network.Bitcoin.Wallet      as W
import qualified Network.Haskoin.Address     as HSK
import           Network.Haskoin.Constants   (Network)
import           Network.Haskoin.Transaction (TxHash)


type Satoshi = Word64


sendToAddress :: Client -> Network -> HSK.Address -> Satoshi -> Maybe Text -> Maybe Text -> IO TxHash
sendToAddress client net addr sat cmt cmtTo =
    transactionIdToTxHash <$> W.sendToAddress client (addressToHex net addr) (satToBTC sat) cmt cmtTo


getNewAddress :: Client -> Network -> IO HSK.Address
getNewAddress client net = hexToAddress net <$> W.getNewAddress client Nothing


satToBTC :: Satoshi -> NBT.BTC
satToBTC = MkFixed . fromIntegral