{-# LANGUAGE OverloadedStrings #-}
module Main where

import           Data.Default             (def)
import           Data.Text                (unpack)
import           Text.Printf              (printf)

import           Lens.Micro               ((.~))
import           Network.Ethereum.Account
import           Network.Ethereum.Web3    hiding (name)

import           ERC20

main :: IO ()
main = do
    result <- runWeb3 $
        withAccount () $
            withParam (to .~ "0xA2f4FCb0FDe2dD59f7a1873e121bc5623e3164Eb") $ do
                n <- name
                s <- symbol
                d <- decimals
                return $ printf "Token %s with symbol %s and decimals %d"
                   (unpack n) (unpack s) (fromIntegral d :: Int)
    case result of
      Left err   -> error (show err)
      Right info -> putStrLn info
