yarn add @xchainjs/xchain-thorchain-amm
// Imports
import { AssetRuneNative, } from '@xchainjs/xchain-util'
import { assetAmount, assetFromString, assetToBase, Chain } from '@xchainjs/xchain-util'
import { CryptoAmount, EstimateSwapParams, Wallet, Midgard, SwapEstimate, ThorchainAMM } from '@xchainjs/xchain-thorchain-amm'
import BigNumber from 'bignumber.js'
// Swap from BUSD to RUNE
const doSwap = async () => {
let phrase = "phrase"
const mainnetWallet = new Wallet(Network.Mainnet, phrase|| 'you forgot to set the phrase')
const swapParams = {
input: new CryptoAmount(assetToBase(assetAmount(1)), BUSD),
destinationAsset: AssetRuneNative,
destinationAddress: mainnetWallet.clients[Chain.THORChain].getAddress(),
slipLimit: new BigNumber(0.03),
}
try {
const outPutCanSwap = await thorchainQueryMainnet.estimateSwap(estimateSwapParams)
print(outPutCanSwap)
if (outPutCanSwap.txEstimate.canSwap) {
const output = await mainetThorchainAmm.doSwap(mainnetWallet, estimateSwapParams)
console.log(`Tx hash: ${output.hash},\n Tx url: ${output.url}\n WaitTime: ${output.waitTimeSeconds}`)
expect(output).toBeTruthy()
}
} catch (error: any) {
console.log(error.message)
}
}
//Outputs
{
memo: '=:THOR.RUNE:xxx:53281999',
expiry: 2022-09-22T13:14:10.941Z,
toAddress: 'bnb13fjncau2d3sw9nrvtpg67mh80gulu25v5msznc',
txEstimate: {
input: '$ 1',
totalFees: {
inboundFee: 'ᚱ 0.01863509',
swapFee: 'ᚱ 0.00000008',
outboundFee: 'ᚱ 0.06',
affiliateFee: 'ᚱ 0'
},
slipPercentage: '0.00000012685928643813',
netOutput: 'ᚱ 0.53281571',
netOutputDecimals: 8,
waitTimeSeconds: '12',
canSwap: true,
errors: []
}
}
Tx hash: "Hash will be here",
Tx url: "URL will be here"