@oraichain/oraidex-evm-sdk
Version:
Oraidex EVM SDK
32 lines • 1.13 kB
JavaScript
import Decimal from 'decimal.js';
import { computePriceImpact, getMidPriceFromPaths } from '../oraidex/libs';
export const computePriceImpactFromOsorResponse = async (osorResponse, poolDataProvider) => {
const { swapAmount, returnAmount, routes } = osorResponse;
const midPriceRoutes = await Promise.all(routes.map((route) => getMidPriceFromPaths(route.paths, poolDataProvider)));
const swapAmounts = routes.map((route) => route.swapAmount);
const midPrice = midPriceRoutes
.reduce((acc, curr, index) => {
return acc.add(curr.mul(swapAmounts[index]));
}, new Decimal(0))
.div(swapAmount);
const inputAmount = {
currency: {
chainId: '',
address: '',
decimals: 0,
symbol: '',
},
amount: swapAmount,
};
const outputAmount = {
currency: {
chainId: '',
address: '',
decimals: 0,
symbol: '',
},
amount: returnAmount,
};
return computePriceImpact(midPrice, inputAmount, outputAmount);
};
//# sourceMappingURL=osorPriceImpact.js.map