Skip to content
This repository was archived by the owner on Jun 26, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,798 changes: 1,059 additions & 739 deletions package-lock.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/components/pages/impermanentLoss/ILFormField.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ export default function ILFormField(props) {
const defaultAssetNames = ['BAL', 'WETH'];
const defaultPriceChange = [150, -25];
const defaultPoolWeights = [80, 20];
const defaultAssetBalances = [10000, 10000]
const defaultRateProviders = [1.1, 1.0]
const defaultEntryPrice = [10, 4000];
const defaultExitPrice = [25, 3000];
const [showInfo, setShowInfo] = useState(false)
Expand All @@ -43,6 +45,8 @@ export default function ILFormField(props) {
assetName: defaultAssetNames[i],
priceChange: defaultPriceChange[i],
poolWeights: defaultPoolWeights[i],
assetBalances: defaultAssetBalances[i],
rateProviders: defaultRateProviders[i],
entryPrice: defaultEntryPrice[i],
exitPrice: defaultExitPrice[i],
}
Expand Down
4 changes: 3 additions & 1 deletion src/components/pages/priceImpact/PriceImpactSwapForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ export default function PriceImpactSwapForm(props) {
const defaultAssetBalance = [5000000, 7000]
const defaultPoolWeights = [80, 20];
const defaultDeposits = [Number(100), Number(1)];
const defaultRateProvider = [1.1, 1]
let defaultSellToken = defaultAssetNames[0];
let defaultBuyToken = defaultAssetNames[1];

Expand All @@ -89,7 +90,8 @@ export default function PriceImpactSwapForm(props) {
assetName: defaultAssetNames[i],
assetBalance: defaultAssetBalance[i],
poolWeights: defaultPoolWeights[i],
tokenDeposits: defaultDeposits[i]
tokenDeposits: defaultDeposits[i],
rateProvider: defaultRateProvider[i]
}
defaultArray.push(entry);
}
Expand Down
2 changes: 1 addition & 1 deletion src/utils/addAssetToArray.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export function addAssetToArray(assetArray) {
priceChange: '0',
poolWeights: '1',
tokenDeposits: '10',
assetBalance: 0,
assetBalances: 0,
entryPrice: 1,
exitPrice: 1,
}
Expand Down
2 changes: 1 addition & 1 deletion src/utils/caclulateBuyTokenQuantity.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function calculateBuyTokenQuantity(assetArray, sellToken, sellTokenQuanti
tokenOutWeight += copy[i].assetName === buyToken ? Number(copy[i].poolWeights/100) : (0);
};

let effectivePrice = Number((1/(1+swapFee)) * sellTokenQuantity / (tokenOutBalance * (1 - ((tokenInBalance / (tokenInBalance + ((1/(1+swapFee)) * sellTokenQuantity)))**(tokenInWeight/tokenOutWeight)))));
let effectivePrice = Number((1*(1-swapFee)) * sellTokenQuantity / (tokenOutBalance * (1 - ((tokenInBalance / (tokenInBalance + ((1*(1-swapFee)) * sellTokenQuantity)))**(tokenInWeight/tokenOutWeight)))));
let newBuyTokenQuantity = Number(sellTokenQuantity * (1/effectivePrice)).toFixed(6);

//console.log(newBuyTokenQuantity);
Expand Down
30 changes: 30 additions & 0 deletions src/utils/calculateBuyTokenQuantityStables.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
export function calculateBuyTokenQuantityStables(assetArray, sellToken, sellTokenQuantity, buyToken, SwapFee) {
const copy = [...assetArray];

let tokenInBalance = 0;
let sumOfTokenBalances = 0;
let productOfTokenBalances = 1;
let ampCoefficient = 25
// Amp Coeffecient = Amp Parameter / n ^ (n-1)
// ampCoefficient = ampParameter / (copy.length ** (copy.length - 1))
let swapFee = SwapFee/100;
let invariant = 1;

for (let i = 0; i < copy.length; i++) {
tokenInBalance += copy[i].assetName === sellToken ? (Number(copy[i].assetBalance)) : (0);
sumOfTokenBalances += copy[i].assetBalance * copy[i].rateProvider
productOfTokenBalances *= copy[i].assetBalance * copy[i].rateProvider

};

for (let i = 0; i < copy.length; i++) {
tokenOutBalance += copy[i].assetName === buyToken ? Number(copy[i].assetBalance) : (0);
tokenOutWeight += copy[i].assetName === buyToken ? Number(copy[i].poolWeights/100) : (0);
};

let effectivePrice = Number((1/(1+swapFee)) * sellTokenQuantity / (tokenOutBalance * (1 - ((tokenInBalance / (tokenInBalance + ((1/(1+swapFee)) * sellTokenQuantity)))**(tokenInWeight/tokenOutWeight)))));
let newBuyTokenQuantity = Number(sellTokenQuantity * (1/effectivePrice)).toFixed(6);

//console.log(newBuyTokenQuantity);
return newBuyTokenQuantity;
}
2 changes: 1 addition & 1 deletion src/utils/calculatePIFromAssetArray.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export function calculatePIFromAssetArray(assetArray, sellToken, sellTokenQuanti
};

let spotPrice = Number((tokenInBalance / tokenInWeight) / (tokenOutBalance / tokenOutWeight));
let effectivePrice = Number((1/(1+swapFee)) * sellTokenQuantity / (tokenOutBalance * (1 - ((tokenInBalance / (tokenInBalance + ((1/(1+swapFee)) * sellTokenQuantity)))**(tokenInWeight/tokenOutWeight)))));
let effectivePrice = Number(((1-swapFee)) * sellTokenQuantity / (tokenOutBalance * (1 - ((tokenInBalance / (tokenInBalance + (((1-swapFee)) * sellTokenQuantity)))**(tokenInWeight/tokenOutWeight)))));
let priceImpact = Number(((effectivePrice / spotPrice - 1) * 100));

return priceImpact;
Expand Down
2 changes: 1 addition & 1 deletion src/utils/calculateSellTokenQuantity.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function calculateSellTokenQuantity(assetArray, sellToken, buyTokenQuanti
tokenOutWeight += copy[i].assetName === buyToken ? Number(copy[i].poolWeights/100) : (0);
};

let effectivePrice = Number((tokenInBalance * (((tokenOutBalance / (tokenOutBalance - ((1/(1+swapFee)) * buyTokenQuantity)))**(tokenOutWeight/tokenInWeight))-1)) / buyTokenQuantity);
let effectivePrice = Number((tokenInBalance * (((tokenOutBalance / (tokenOutBalance - ((1*(1-swapFee)) * buyTokenQuantity)))**(tokenOutWeight/tokenInWeight))-1)) / buyTokenQuantity);
let newSellTokenQuantity = Number(buyTokenQuantity * effectivePrice).toFixed(6);

console.log(newSellTokenQuantity);
Expand Down
5 changes: 1 addition & 4 deletions src/utils/createTableDataFromAssetArrayPI.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,10 @@ export function createTableDataFromAssetArrayPI(assetArray, sellToken, sellToken
//Defines spot and effective price and calculates price impact
let tokenPair = buyToken + " / " + sellToken
let spotPrice = Number((tokenInBalance / tokenInWeight) / (tokenOutBalance / tokenOutWeight));
let effectivePrice = Number((1/(1+swapFee)) * sellTokenQuantity / (tokenOutBalance * (1 - ((tokenInBalance / (tokenInBalance + ((1/(1+swapFee)) * sellTokenQuantity)))**(tokenInWeight/tokenOutWeight)))));
let effectivePrice = Number((sellTokenQuantity / (1-swapFee)) / (tokenOutBalance * (1 - (tokenInBalance / (tokenInBalance + (sellTokenQuantity / (1-swapFee))))**(tokenInWeight/tokenOutWeight))));
let tokensWithoutPI = 1/spotPrice * sellTokenQuantity
let tokensWithPI = 1/effectivePrice * sellTokenQuantity
let info = createDataPI(tokenPair, spotPrice, effectivePrice, tokensWithoutPI, tokensWithPI);
data.push(info);
return data;



}