-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Provides access to the RPC API of Bitcoin Core
--
@package bitcoin-api
@version 0.9.0
module Network.Bitcoin.Api.Types.UnspentTransaction
-- | A transaction that is not yet spent. Every output transaction relies
-- on one or more unspent input transansactions.
--
-- For more detailed documentation of the fields, see:
-- https://bitcoin.org/en/developer-reference#listunspent
data UnspentTransaction
UnspentTransaction :: Btc -> TransactionId -> Integer -> Bool -> Maybe Base58String -> Maybe Text -> Integer -> Text -> Maybe Text -> UnspentTransaction
-- | The transaction amount in Btc
_amount :: UnspentTransaction -> Btc
-- | Transaction identifier to uniquely identify the transaction.
_transactionId :: UnspentTransaction -> TransactionId
-- | The index of the output of the transaction that has been spent.
_vout :: UnspentTransaction -> Integer
-- | Whether this input is spendable. If not, it means it is an output of a
-- watch-only address.
_spendable :: UnspentTransaction -> Bool
-- | The P2PKH or P2SH address this transaction belongs to. Only available
-- in case of P2PKH or P2SH output scripts.
_address :: UnspentTransaction -> Maybe Base58String
-- | If the address belongs to an account, the account is returned.
_account :: UnspentTransaction -> Maybe Text
-- | The amount of confirmations this transaction has
_confirmations :: UnspentTransaction -> Integer
-- | The output script paid, encoded as hex
_scriptPubKey :: UnspentTransaction -> Text
-- | If the output is a P2SH whose script belongs to this wallet, this is
-- the redeem script.
_redeemScript :: UnspentTransaction -> Maybe Text
vout :: Lens' UnspentTransaction Integer
transactionId :: Lens' UnspentTransaction TransactionId
spendable :: Lens' UnspentTransaction Bool
scriptPubKey :: Lens' UnspentTransaction Text
redeemScript :: Lens' UnspentTransaction (Maybe Text)
confirmations :: Lens' UnspentTransaction Integer
amount :: Lens' UnspentTransaction Btc
address :: Lens' UnspentTransaction (Maybe Base58String)
account :: Lens' UnspentTransaction (Maybe Text)
instance FromJSON UnspentTransaction
instance Show UnspentTransaction
module Network.Bitcoin.Api.Types
-- | Client session data
data Client
Client :: String -> Options -> Session -> Client
-- | The JSON RPC url
clientUrl :: Client -> String
-- | Default HTTP options to use with wreq requests
clientOpts :: Client -> Options
-- | Connection reuse of our HTTP session
clientSession :: Client -> Session
instance Show Client
module Network.Bitcoin.Api.Blockchain
getBlockCount :: Client -> IO Integer
getBlockHash :: Client -> Integer -> IO BlockHash
getBlock :: Client -> HexString -> IO Block
module Network.Bitcoin.Api.Dump
getPrivateKey :: Client -> Address -> IO PrivateKey
module Network.Bitcoin.Api.Mining
-- | Generate a certain amount of new blocks. Available in regtest
-- mode only.
generate :: Client -> Integer -> IO [Block]
module Network.Bitcoin.Api.Misc
data BitcoinInfo
BitcoinInfo :: Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Text -> Double -> Bool -> Integer -> Integer -> Integer -> Maybe Integer -> Text -> BitcoinInfo
-- | What version of bitcoind are we running?
_bitcoinVersion :: BitcoinInfo -> Integer
-- | What is bitcoind's current protocol number?
_protocolVersion :: BitcoinInfo -> Integer
-- | What version is the wallet?
_walletVersion :: BitcoinInfo -> Integer
-- | How much money is currently in the wallet?
_balance :: BitcoinInfo -> Integer
-- | The number of blocks in our chain.
_numBlocks :: BitcoinInfo -> Integer
-- | How many peers are we connected to?
_numConnections :: BitcoinInfo -> Integer
-- | A blank string if we're not using a proxy.
_proxy :: BitcoinInfo -> Text
-- | The difficulty multiplier for bitcoin mining operations.
_generationDifficulty :: BitcoinInfo -> Double
-- | Are we on the test network (as opposed to the primary bitcoin
-- network)?
_onTestNetwork :: BitcoinInfo -> Bool
-- | The timestamp of the oldest key in the key pool.
_keyPoolOldest :: BitcoinInfo -> Integer
-- | The size of the key pool.
_keyPoolSize :: BitcoinInfo -> Integer
-- | How much do we currently pay as a transaction fee?
_transactionFeePaid :: BitcoinInfo -> Integer
-- | If the wallet is unlocked, the number of seconds until a re-lock is
-- needed.
_unlockedUntil :: BitcoinInfo -> Maybe Integer
-- | Any alerts will show up here. This should normally be an empty string.
_bitcoindErrors :: BitcoinInfo -> Text
walletVersion :: Lens' BitcoinInfo Integer
unlockedUntil :: Lens' BitcoinInfo (Maybe Integer)
transactionFeePaid :: Lens' BitcoinInfo Integer
proxy :: Lens' BitcoinInfo Text
protocolVersion :: Lens' BitcoinInfo Integer
onTestNetwork :: Lens' BitcoinInfo Bool
numConnections :: Lens' BitcoinInfo Integer
numBlocks :: Lens' BitcoinInfo Integer
keyPoolSize :: Lens' BitcoinInfo Integer
keyPoolOldest :: Lens' BitcoinInfo Integer
generationDifficulty :: Lens' BitcoinInfo Double
bitcoindErrors :: Lens' BitcoinInfo Text
bitcoinVersion :: Lens' BitcoinInfo Integer
balance :: Lens' BitcoinInfo Integer
getInfo :: Client -> IO BitcoinInfo
instance FromJSON BitcoinInfo
instance Show BitcoinInfo
-- | This module provides functionality to manipulate raw transaction. It
-- automatically interprets transactions using the `bitcoin-tx` package,
-- so you can work with actual Transaction objects rather than
-- their serialized format.
module Network.Bitcoin.Api.Transaction
-- | Creates a new transaction, but does not sign or submit it yet. You
-- provide a set of unspent transactions that you have the authority to
-- spend, and you provide a destination for all your bitcoins.
--
-- WARNING: Check your math! If the sum of the Btc in unspent
-- transactions of your request is more than the sum of the Btc in the
-- destinations, this will be the miner's fee. It is reasonable to leave
-- a small amount for the miners, but if there is a large discrepancy
-- between input and output, there are no guarantees you will be warned.
--
-- All this function does is create a default script on how to spend
-- coins from one or more inputs to one or more outputs. Checking and
-- verifying the transaction will only happen when you actually submit
-- the transaction to the network.
create :: Client -> [UnspentTransaction] -> [(Address, Btc)] -> IO Transaction
-- | Signs a raw transaction with configurable parameters.
sign :: Client -> Transaction -> Maybe [UnspentTransaction] -> Maybe [PrivateKey] -> IO (Transaction, Bool)
-- | Sends a transaction through the Bitcoin network
send :: Client -> Transaction -> IO TransactionId
-- | Returns a list of transactions that occured since a certain block
-- height. If no block height was provided, the genisis block with height
-- 0 is assumed. The transactions returned are listed chronologically.
list :: Client -> Maybe Integer -> IO [Transaction]
module Network.Bitcoin.Api.Wallet
-- | Lists unspent transaction with default parameters
listUnspent :: Client -> IO [UnspentTransaction]
-- | Lists unspent transactions with configurable parameters
listUnspentWith :: Client -> Integer -> Integer -> IO [UnspentTransaction]
-- | Lists all accounts currently known by the wallet with default
-- parameters
listAccounts :: Client -> IO [(Account, Btc)]
-- | Lists all accounts currently known by the wallet with configurable
-- parameters
listAccountsWith :: Client -> Integer -> Bool -> IO [(Account, Btc)]
-- | Provides access to a new receiving address filed under the default
-- account. Intended to be published to another party that wishes to send
-- you money.
newAddress :: Client -> IO Address
-- | Provides access to a new receiving address filed under a specific
-- account. Intended to be published to another party that wishes to send
-- you money.
newAddressWith :: Client -> Account -> IO Address
-- | Provides access to a new change address, which will not appear in the
-- UI. This is to be used with raw transactions only.
newChangeAddress :: Client -> IO Address
-- | Provides access to the Account an Address belongs to.
getAddressAccount :: Client -> Address -> IO Account
module Network.Bitcoin.Api.Client
-- | Client session data
data Client
Client :: String -> Options -> Session -> Client
-- | The JSON RPC url
clientUrl :: Client -> String
-- | Default HTTP options to use with wreq requests
clientOpts :: Client -> Options
-- | Connection reuse of our HTTP session
clientSession :: Client -> Session
-- | Initializes a client and prepares it for making requests against the
-- Bitcoin RPC API. Connection reuse is provided, and cleanup of any
-- acquired resources is handled automatically.
withClient :: String -> Int -> Text -> Text -> (Client -> IO a) -> IO a