Skip to content

Commit

Permalink
Merge pull request #284 from balancer-labs/develop
Browse files Browse the repository at this point in the history
4.0.1-beta.3
  • Loading branch information
John Grant authored Aug 23, 2022
2 parents 10a4027 + 3721c27 commit e15d6d4
Show file tree
Hide file tree
Showing 27 changed files with 358 additions and 316 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@balancer-labs/sor",
"version": "4.0.1-beta.2",
"version": "4.0.1-beta.3",
"license": "GPL-3.0-only",
"main": "dist/index.js",
"module": "dist/index.esm.js",
Expand Down
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ export { LinearPool } from './pools/linearPool/linearPool';
export { getSpotPriceAfterSwapForPath } from './router/helpersClass';
export * as WeightedMaths from './pools/weightedPool/weightedMath';
export * as StableMaths from './pools/stablePool/stableMath';
export * as StableMathBigInt from './pools/stablePool/stableMathBigInt';
2 changes: 1 addition & 1 deletion src/poolCacher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export class PoolCacher {
// On error clear all caches and return false so user knows to try again.
this._finishedFetching = false;
this.pools = [];
console.error(`Error: fetchPools(): ${err.message}`);
console.error(`Error: fetchPools(): ${err}`);
return false;
}
}
Expand Down
256 changes: 136 additions & 120 deletions src/pools/gyro2Pool/gyro2Pool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,148 +198,164 @@ export class Gyro2Pool implements PoolBase {
poolPairData: Gyro2PoolPairData,
amount: OldBigNumber
): OldBigNumber {
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmount = parseFixed(amount.toString(), 18);
const inAmountLessFee = _reduceFee(inAmount, poolPairData.swapFee);
try {
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmount = parseFixed(amount.toString(), 18);
const inAmountLessFee = _reduceFee(inAmount, poolPairData.swapFee);

const outAmount = _calcOutGivenIn(
normalizedBalances[0],
normalizedBalances[1],
inAmountLessFee,
virtualParamIn,
virtualParamOut
);
const outAmount = _calcOutGivenIn(
normalizedBalances[0],
normalizedBalances[1],
inAmountLessFee,
virtualParamIn,
virtualParamOut
);

return bnum(formatFixed(outAmount, 18));
return bnum(formatFixed(outAmount, 18));
} catch (error) {
return bnum(0);
}
}

_tokenInForExactTokenOut(
poolPairData: Gyro2PoolPairData,
amount: OldBigNumber
): OldBigNumber {
const outAmount = parseFixed(amount.toString(), 18);
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmountLessFee = _calcInGivenOut(
normalizedBalances[0],
normalizedBalances[1],
outAmount,
virtualParamIn,
virtualParamOut
);
const inAmount = _addFee(inAmountLessFee, poolPairData.swapFee);
try {
const outAmount = parseFixed(amount.toString(), 18);
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmountLessFee = _calcInGivenOut(
normalizedBalances[0],
normalizedBalances[1],
outAmount,
virtualParamIn,
virtualParamOut
);
const inAmount = _addFee(inAmountLessFee, poolPairData.swapFee);

return bnum(formatFixed(inAmount, 18));
return bnum(formatFixed(inAmount, 18));
} catch (error) {
return bnum(0);
}
}

_spotPriceAfterSwapExactTokenInForTokenOut(
poolPairData: Gyro2PoolPairData,
amount: OldBigNumber
): OldBigNumber {
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmount = parseFixed(amount.toString(), 18);
const inAmountLessFee = _reduceFee(inAmount, poolPairData.swapFee);
const outAmount = _calcOutGivenIn(
normalizedBalances[0],
normalizedBalances[1],
inAmountLessFee,
virtualParamIn,
virtualParamOut
);
const newSpotPrice = _calculateNewSpotPrice(
normalizedBalances,
inAmount,
outAmount,
virtualParamIn,
virtualParamOut,
poolPairData.swapFee
);
return bnum(formatFixed(newSpotPrice, 18));
try {
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmount = parseFixed(amount.toString(), 18);
const inAmountLessFee = _reduceFee(inAmount, poolPairData.swapFee);
const outAmount = _calcOutGivenIn(
normalizedBalances[0],
normalizedBalances[1],
inAmountLessFee,
virtualParamIn,
virtualParamOut
);
const newSpotPrice = _calculateNewSpotPrice(
normalizedBalances,
inAmount,
outAmount,
virtualParamIn,
virtualParamOut,
poolPairData.swapFee
);
return bnum(formatFixed(newSpotPrice, 18));
} catch (error) {
return bnum(0);
}
}

_spotPriceAfterSwapTokenInForExactTokenOut(
poolPairData: Gyro2PoolPairData,
amount: OldBigNumber
): OldBigNumber {
const outAmount = parseFixed(amount.toString(), 18);
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmountLessFee = _calcInGivenOut(
normalizedBalances[0],
normalizedBalances[1],
outAmount,
virtualParamIn,
virtualParamOut
);
const inAmount = _addFee(inAmountLessFee, poolPairData.swapFee);
const newSpotPrice = _calculateNewSpotPrice(
normalizedBalances,
inAmount,
outAmount,
virtualParamIn,
virtualParamOut,
poolPairData.swapFee
);
try {
const outAmount = parseFixed(amount.toString(), 18);
const balances = [poolPairData.balanceIn, poolPairData.balanceOut];
const normalizedBalances = _normalizeBalances(
balances,
poolPairData.decimalsIn,
poolPairData.decimalsOut
);
const invariant = _calculateInvariant(
normalizedBalances,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const [virtualParamIn, virtualParamOut] = _findVirtualParams(
invariant,
poolPairData.sqrtAlpha,
poolPairData.sqrtBeta
);
const inAmountLessFee = _calcInGivenOut(
normalizedBalances[0],
normalizedBalances[1],
outAmount,
virtualParamIn,
virtualParamOut
);
const inAmount = _addFee(inAmountLessFee, poolPairData.swapFee);
const newSpotPrice = _calculateNewSpotPrice(
normalizedBalances,
inAmount,
outAmount,
virtualParamIn,
virtualParamOut,
poolPairData.swapFee
);

return bnum(formatFixed(newSpotPrice, 18));
return bnum(formatFixed(newSpotPrice, 18));
} catch (error) {
return bnum(0);
}
}

_derivativeSpotPriceAfterSwapExactTokenInForTokenOut(
Expand Down
Loading

0 comments on commit e15d6d4

Please sign in to comment.