How to use
Installation
yarn add @xchainjs/xchain-avax
Following peer dependencies have to be installed into your project. These are not included in @xchainjs/xchain-avax
.
yarn add @xchainjs/xchain-evm @xchainjs/xchain-evm-providers @xchainjs/xchain-client @xchainjs/xchain-crypto @xchainjs/xchain-util axios ethers
Client Testing
yarn install
yarn test
Basic Usage Example
###Imports
import { Client, defaultAvaxParams } from "@xchainjs/xchain-avax"
import { FeeOption } from "@xchainjs/xchain-client"
import { assetToBase, baseToAsset, assetAmount, Asset, Chain } from "@xchainjs/xchain-util"
Connect wallet to new Avax Chain Client
Network default is Mainnet
// Create new Avax Asset
const assetRIP: Asset = {
chain: Chain.Avalanche,
symbol: `RIP-0x224695ba2a98e4a096a519b503336e06d9116e48`,
ticker: `RIP`,
synth: false,
}
// Create new Avax Client Instance
const connectWallet =async () => {
defaultAvaxParams.phrase = "phrase"
const avaxClient = new Client(defaultAvaxParams)
let address = avaxClient.getAddress()
console.log(`Address: ${address}`)
let isValid = avaxClient.validateAddress(address)
if( isValid === true ){
try {
const balance = await avaxClient.getBalance(address)
let assetAmount = (baseToAsset(balance[1].amount)).amount()
console.log(`With balance: ${assetAmount}`)
} catch (error) {
console.log(`Caught: ${error}`)
}
}
}
Transfer Avax using AvaxClient
const transferAvax = async () => {
let amountToTransfer = 0.1
let recipient = "address"
defaultAvaxParams.phrase = "phrase"
const avaxClient = new Client(defaultAvaxParams)
let amount = assetToBase(assetAmount(amountToTransfer, 18))
console.log("Building transaction", JSON.stringify(amount.amount()))
try {
const txid = await avaxClient.transfer({
"asset": assetRIP,
"amount": amount,
"recipient":recipient,
feeOption: FeeOption.Fast,
})
console.log(`Transaction sent: ${txid}`)
} catch (error) {
console.log(`Caught: ${error}`)
}
}
Get fees
const returnFees = async () => {
defaultAvaxParams.phrase = "phrase"
const avaxClient = new Client(defaultAvaxParams)
let amountToTransfer = 20
let amount = assetToBase(assetAmount(amountToTransfer, 18))
let recipient = "recipient"
try {
const txParams: TxParams = {
walletIndex: 0,
asset: assetRIP,
amount: amount,
recipient: recipient,
}
const {fast, fastest, average} = await avaxClient.getFees(txParams)
console.log(`Fees Fast: ${baseToAsset(fast).amount()} Fastest: ${baseToAsset(fastest).amount()} Average: ${baseToAsset(average).amount()}`) } catch (error) {
console.log(`Caught: ${error}`)
}
}
Get transaction Data & History
const transactionData = async () => {
defaultAvaxParams.phrase = "phrase"
const avaxClient = new Client(defaultAvaxParams)
let hash = "0x60721cf788b7cd4e56acf6479e71dfbd12e6c79c15e76595e4e52409bf686d4c"
try {
const txData = await avaxClient.getTransactionData(hash)
console.log(`From ${JSON.stringify(txData)}`)
} catch (error) {
console.log(`Caught: ${error}`)
}
}
// Address History
const transactionHistory = async () => {
defaultAvaxParams.phrase = "phrase"
const avaxClient = new Client(defaultAvaxParams)
let Address = avaxClient.getAddress()
try {
const txHistory = await avaxClient.getTransactions({address: Address, limit: 4 })
console.log(`Found ${txHistory.total.toString()}`)
txHistory.txs.forEach(tx => console.log(tx.hash))
} catch (error) {
console.log(`Caught: ${error}`)
}
}