module Network.Ethereum.Web3.Api where
import Network.Ethereum.Web3.Provider
import Network.Ethereum.Web3.Address
import Network.Ethereum.Web3.JsonRpc
import Network.Ethereum.Web3.Types
import Data.Text (Text)
web3_clientVersion :: Provider a => Web3 a Text
web3_clientVersion = remote "web3_clientVersion"
web3_sha3 :: Provider a => Text -> Web3 a Text
web3_sha3 = remote "web3_sha3"
eth_getBalance :: Provider a => Address -> CallMode -> Web3 a Text
eth_getBalance = remote "eth_getBalance"
eth_newFilter :: Provider a => Filter -> Web3 a FilterId
eth_newFilter = remote "eth_newFilter"
eth_getFilterChanges :: Provider a => FilterId -> Web3 a [Change]
eth_getFilterChanges = remote "eth_getFilterChanges"
eth_uninstallFilter :: Provider a => FilterId -> Web3 a Bool
eth_uninstallFilter = remote "eth_uninstallFilter"
eth_call :: Provider a => Call -> CallMode -> Web3 a Text
eth_call = remote "eth_call"
eth_sendTransaction :: Provider a => Call -> Web3 a Text
eth_sendTransaction = remote "eth_sendTransaction"
eth_accounts :: Provider a => Web3 a [Address]
eth_accounts = remote "eth_accounts"
eth_newBlockFilter :: Provider a => Web3 a Text
eth_newBlockFilter = remote "eth_newBlockFilter"
eth_getBlockFilterChanges :: Provider a => Text -> Web3 a [Text]
eth_getBlockFilterChanges = remote "eth_getFilterChanges"
eth_getBlockByHash :: Provider a => Text -> Web3 a Block
eth_getBlockByHash = flip (remote "eth_getBlockByHash") True