@dojima-wallet/connection
Version:
Initialise and connection for layer 1&2 blockchain
33 lines (29 loc) • 975 B
text/typescript
import { PoolData } from "./types";
import { calcSwapOutput } from "./output";
/** Calculate swap output with slippage */
// Calculate swap slippage
export const calcSwapSlip = (
inputAmount: number,
pool: PoolData,
toDoj: boolean
): number => {
// formula: (inputAmount) / (inputAmount + inputBalance)
const inputBalance = toDoj
? Number(pool.balance_asset)
: Number(pool.balance_doj); // input is asset if toRune
const result = inputAmount / (inputAmount + inputBalance);
return result;
};
// Calculate swap slippage for double swap
export const calcDoubleSwapSlip = (
inputAmount: number,
pool1: PoolData,
pool2: PoolData
): number => {
// formula: calcSwapSlip1(input1) + calcSwapSlip2(calcSwapOutput1 => input2)
const swapSlip1 = calcSwapSlip(inputAmount, pool1, true);
const r = calcSwapOutput(inputAmount, pool1, true);
const swapSlip2 = calcSwapSlip(r, pool2, false);
const result = swapSlip1 + swapSlip2;
return result;
};