You can visit the xchain-cosmos package repository to get the updated peer dependencies by looking at the "peerDependencies" object in the "package.json" file.
Extras
Important note: Make sure to install same version of cosmos-client/core as xchain-cosmos is using (currently "@cosmos-client/core": "^0.45.1", ). In other case things might break.
Testing
yarn install
yarn test
Examples
Connect Wallet to New Cosmos Client
Create a new thorchain client
Set phrase and network when creating an instance.
The network default is Mainnet
//Imports
import { AssetAtom, Client, COSMOS_DECIMAL } from "@xchainjs/xchain-cosmos"
import { assetToBase, baseToAsset, assetAmount } from "@xchainjs/xchain-util"
// Create new instance of the client and query chain for balances.
const connectWallet = async () => {
let phrase = "phrase"
const cosmosClient = new Client({phrase})
let address = cosmosClient.getAddress()
let isValid = cosmosClient.validateAddress(address)
console.log(address)
if(isValid === true){
try {
const balance = await cosmosClient.getBalance(address)
let assetAmount = (baseToAsset(balance[0].amount)).amount()
console.log(`Adress: ${address} with balance ${assetAmount}`)
} catch (error) {
console.log(`Caught: ${error} `)
}
} else {
console.log(`Address: ${address} is invalid`)
}
}
Transfer ATOM using Cosmos Client
Create a new Cosmos client instance
Convert amount to transfer to base amount
Build transaction.
const transfer = async () => {
let phrase = "phrase"
const cosmosclient = new Client({ phrase})
let amountToTransfer = 0.1
let amount = assetToBase(assetAmount(amountToTransfer, COSMOS_DECIMAL))
let recipient = "cosmos1f2hzu2cup9tk427w5tpfysvx9cf4c9wkud0qn9"
try {
const txid = await cosmosclient.transfer({
"amount": amount,
"recipient": recipient,
"memo": "test",
"asset": AssetAtom,
"walletIndex": 0
})
console.log(`Transaction sent: ${JSON.stringify(txid)}`)
} catch (error) {
console.log(`Caught ${error}`)
}
}
// Transfer with fee rate set
let feeRate = await cosmosClient.getFeeRates()
try {
const txid = await cosmosClient.transfer({
"amount": amount,
"recipient": recipient,
"memo": "test",
"asset": AssetAtom,
feeRate: feeRate.fastest
})
console.log(`Transaction sent: ${txid}`)
} catch (error) {
console.log(`Caught: ${error}`)
}
Get Transaction Data & Transaction History
Retrieve transaction data using transaction hash and address
const transactionData = async () => {
let txHash = 'insert txHash'
let phrase = "phrase"
const cosmosClient = new Client({ phrase})
try {
const txData = await cosmosClient.getTransactionData(txHash)
console.log(`From ${JSON.stringify(txData)}`)
} catch (error) {
console.log(`Caught ${error}`)
}
}
// By default getTransactions() returns the transactions for the current address
const transactionHistory = async () => {
let phrase = "phrase"
const cosmosClient = new Client({phrase})
const address = cosmosClient.getAddress()
const url = cosmosClient.getExplorerUrl()
console.log(url)
try {
const txHistory = await cosmosClient.getTransactions()
console.log(`Found ${txHistory.total.toString()}`)
txHistory.txs.forEach(tx => console.log(tx.hash))
} catch (error) {
console.log(`Caught: ${error}`)
}
}