@d11k-ts/ethereum
TypeScript icon, indicating that this package has built-in type declarations

0.1.5 • Public • Published

@d11k-ts/ethereum

Modules

  • client - Custom client for communicating with Ethereum by using web3 and ethers

Installation

yarn add @d11k-ts/ethereum

Documentation : Basic usage examples

Connect wallet to new EthereumClient

  • Create new EthereumChain client
  • Network default is Mainnet
  • InfuraApiKey: Optional (Api key provided by 'Infura' for mainnet calls. Sign up for getting one)
// Imports
import {Network} from '@d11k-ts/client'
import {EthereumClient} from '@d11k-ts/ethereum'

//Connect wallet, validate address and check balance 
const connectWallet = async () => {
  let phrase = "phrase"
  // Mainnet
  const ethClient = new EthereumClient({
    phrase
  })
  // testnet
  // const ethClient = new EthereumClient({ 
  //    phrase,
  //    network: Network.DojTestnet,
  //    rpcUrl: 'https://eth-test.h4s.dojima.network/',
  //        If above rpc url doesn't work use below one
  //    rpcUrl: 'https://eth-test.h4s.dojima.network:9545/',
  //    network: Network.Testnet,
  //    rpcUrl: 'https://goerli.infura.io/v3/',
  //    infuraApiKey: '***********************',
  //  })
  let address = ethClient.getAddress()
  try {
    const balance = await ethClient.getBalance(address)
    console.log(`Adress: ${address} with balance ${balance}`)

  } catch (error) {
    console.log(`Caught: ${error} `)
  }
}

Transfer eth using EthereumClient

  • Create new EthereumClient instance
  • Returns txHash as string
  • Note: Uses only required gas for Tx and remaining will be sent back
const transferEth = async () => {
  // First initiate EthereumClient
  let amount = 0.001
  let recipient = 'insert address'
  console.log("Building transaction")
  try {
    const txid = await ethClient.transfer({
      amount,
      recipient,
      // fee: number,  // optional. Calculated by default(if not provided) based on input amount.
      // memo: string,  // optional
    })
    console.log(`Transaction sent: ${txid}`)
    return txid
  } catch (error) {
    console.log(`Caught: ${error} `)
  }
}

Get transaction Data

  • Create new EthereumClient instance
  • Call getTransactionData(hash) returns hash-details
  • Call getTransactionsHistory(address) returns list of transactions (if any)
  • Get 'Etherscan' api key for txs list
  • Note : DojTestnet doesn't provide txs list
// Retrieve transaction data for a particular hash
const transactionData = async () => {
  let hash = "insert hash"
  try {
    const txData = await ethClient.getTransactionData(
      hash,
    )
    console.log(`Transaction data ${txData}`)
  } catch (error) {
    console.log(`Caught: ${error} `)
  }
}

// Retrieve transaction history for a particular address
const transactionHistory = async () => {
  let Address = ethClient.getAddress()
  try {
    const txHistory = await ethClient.getTransactionsHistory({
      address: Address,
      apiKey: '********',
    })
    console.log(`Found ${txHistory.total.toString()}`)
    txHistory.txs.forEach(tx => console.log(tx))
  } catch (error) {
    console.log(`Caught: ${error} `)
  }
}

Get transfer Fees estimations

  • Retrieve estimated gas fees from ethereum client
// Retrieve fee estimations from transaction parameters
const feeEstimations = async () => {
  let amountToTransfer = 0.001
  try {
    const fees = await ethClient.gasFees({
      amount: amount,
      // memo: string          // optional
    })
    console.log(`Fees : ${fees}`)

  } catch (error) {
    console.log(`Caught: ${error} `)
  }
}

Add ETH token into liquidity pool

  • Add ETH tokens into liquidity pool
  • Get Ethereum Inbound address from hermes chain
const addETHToLiquidityPool = async () => {
  let amountToTransfer = 0.001
  const inboundAddress = await ethClient.getEthereumInboundAddress()
  try {
    const liquidityPoolHash = await ethClient.addLiquidityPool(
      amountToTransfer,
      inboundAddress,
      dojAddress,           // optional dojima address
    )
    console.log('Liquidity pool hash : ', liquidityPoolHash)
  } catch (error) {
    console.log(`Caught ${error}`)
  }
}

Swap ETH tokens

  • Swap ETH tokens to required token using receiver address
  • Get Ethereum Inbound address from hermes chain
  • Supported tokens for swapping - 'DOT', 'DOJ', 'AR', 'SOL'
import {SwapAssetList} from '@d11k-ts/utils'

const swapETH = async () => {
  let amountToTransfer = 0.001
  const inboundAddress = await ethClient.getEthereumInboundAddress()
  try {
    const swapHash = await ethClient.swap(
       amountToTransfer,
      SwapAssetList,
      inboundAddress,
      reciepient                // Respective receiver SwapAssetList token address
    )
    console.log('Swap tx hash : ', swapHash)
  } catch (error) {
    console.log(`Caught ${error}`)
  }
}

Example Code

For sample code check out example test case in ./examples/test.ts

Readme

Keywords

Package Sidebar

Install

npm i @d11k-ts/ethereum

Weekly Downloads

2

Version

0.1.5

License

ISC

Unpacked Size

12 MB

Total Files

19

Last publish

Collaborators

  • yerramreddyuday
  • dojima-network