packages feed

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

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

import           Data.Fixed                  (Fixed (MkFixed))
import           Data.Maybe                  (fromMaybe, maybe)
import           Data.Text                   (Text)
import           Data.Text.Encoding          (decodeUtf8, encodeUtf8)
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           Network.Haskoin.Crypto      (addrToBase58, base58ToAddr)
import qualified Network.Haskoin.Crypto      as HSK
import           Network.Haskoin.Transaction (TxHash, hexToTxHash)


type Satoshi = Word64


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


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


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