UNPKG

@hikaru-fi/sc-calculators

Version:

Package for pool calculations

171 lines (140 loc) 4.09 kB
import BN from 'bn.js'; import web3Utils from 'web3-utils'; import { poolCalculations } from '../poolMath/weightedPool/weightedPool.mjs'; import { SwapTypes } from '../utils/types.mjs'; import { testPoolConfig } from './testPoolConfig.mjs'; poolCalculations.fromBackendInfo(testPoolConfig); const testSwapPath = { "vault": "TXerg8cK6KXYFLw2JyndPgY5HukZyQWi6r", "swapRoute": [ { "pool": "TMJjU9WNUHVZzes8ujw73DcN5gneQuMLVz", "tokenIn": "TAHLygq9zmpSASCkwvExVgxNfGMwjuqQ1u", "tokenOut": "TApJzmfyYrXd6afvfWLKpqqeBxa7hwS9Cw" } ], "swapType": 0, "swapAmount": "2000000", "minMaxAmount": "0", "receiver": "", "deadline": "" } const vs = poolCalculations.calculateSwapResult(testSwapPath, '2000000', 1); console.log( `Test frontend swap:\n` + `${JSON.stringify(vs, null, '\t')}` ) /** * @type {import('../poolMath/weightedPool/weightedPool.mjs').RouteInfo} */ const sellRoute = { swapType: 0, swapRoute: [ { pool: testPoolConfig[0].poolAddress, tokenIn: testPoolConfig[0].tokens[0], tokenOut: testPoolConfig[0].tokens[1] }, ], vault: testPoolConfig[0].vaultAddress, swapAmount: '1000000000000', minMaxAmount: '1313', receiver: '0x00', deadline: '0' } const sellSwap = poolCalculations.calculateSwapResult( sellRoute, '1000000', 1 ) console.log( `Sell swap:\n` + JSON.stringify(sellSwap, null, '\t') ) /** * @type {import('../poolMath/weightedPool/weightedPool.mjs').RouteInfo} */ const buyRoute = { swapType: 1, swapRoute: [ { pool: testPoolConfig[0].poolAddress, tokenIn: testPoolConfig[0].tokens[0], tokenOut: testPoolConfig[0].tokens[1] }, ], vault: testPoolConfig[0].vaultAddress, swapAmount: '1000000000000', minMaxAmount: '1313', receiver: '0x00', deadline: '0' } const buySwap = poolCalculations.calculateSwapResult( buyRoute, '100000', 0 ) console.log( `Buy swap:\n` + JSON.stringify(buySwap, null, '\t') ) const noneSwap = { swapType: SwapTypes.None } try { poolCalculations.calculateSwapResult( noneSwap, '1000', 1 ) } catch(err) { console.log(`None swap exception caught`) } const poolTVL = poolCalculations.getPoolTVL(testPoolConfig[2].poolAddress); console.log( `Pool TVL: ${poolTVL}` ) const userTVL = poolCalculations.getUserUSDAmount(testPoolConfig[0].poolAddress, web3Utils.toBN(1), web3Utils.toBN(2)); console.log( `User TVL: ${userTVL}` ) const poolBalances = poolCalculations.getPoolTokenBalances(testPoolConfig[0].poolAddress); console.log( `Pool balances:\n` + `${poolBalances}` ) const userTokens = poolCalculations.getUserTokensInPool(testPoolConfig[0].poolAddress, web3Utils.toBN(1), web3Utils.toBN(2)); console.log( `User tokens in pool:\n` + `${userTokens}` ) const poolTokenCosts = poolCalculations.getPoolTokenCost(testPoolConfig[0].poolAddress); console.log( `Pool token costs:\n` + `${poolTokenCosts}` ) const userTokenCosts = poolCalculations.getUserTokenCosts(testPoolConfig[0].poolAddress, web3Utils.toBN(1), web3Utils.toBN(2)); console.log( `User token costs:\n` + `${userTokenCosts}` ) const userLPTokens = poolCalculations.calculateLPTokensForSingleToken( testPoolConfig[1].poolAddress, testPoolConfig[1].tokens[1], '33330000', '166310263800759875482550' ); console.log( `Required LP tokens:\n` + `${userLPTokens}` ) const er = poolCalculations.getTokenExchangeRate(testPoolConfig[0].tokens[0]); console.log( `Exchange rate of token:\n` + `${er}` ) const swapLimit = poolCalculations.getPoolSwapLimitForToken(testPoolConfig[0].poolAddress, testPoolConfig[0].tokens[0]) console.log( `Swap limit:\n`+ `${swapLimit.toString(10)}` )