diff --git a/package.json b/package.json index 3f5c8b4..8387e0e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.42-rc2", + "version": "0.19.42-rc3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/getSwapInfo.ts b/src/Unit/Exchange/getSwapInfo.ts index 4926723..4689f20 100644 --- a/src/Unit/Exchange/getSwapInfo.ts +++ b/src/Unit/Exchange/getSwapInfo.ts @@ -140,6 +140,8 @@ export default async function getSwapInfo({ baseCurrencyPriceInQuoteAsset, gasPriceGwei, feePercent, + feeAssetAddress, + allPrices.prices, ); return { diff --git a/src/Unit/Exchange/swapLimit.ts b/src/Unit/Exchange/swapLimit.ts index dc48625..a821401 100644 --- a/src/Unit/Exchange/swapLimit.ts +++ b/src/Unit/Exchange/swapLimit.ts @@ -388,6 +388,8 @@ export default async function swapLimit({ baseCurrencyPriceInQuoteAsset, gasPriceGwei, feePercent, + feeAsset, + allPrices.prices, ); if (feeAsset === assetOut) { diff --git a/src/Unit/Exchange/swapMarket.ts b/src/Unit/Exchange/swapMarket.ts index 245c859..45d061a 100644 --- a/src/Unit/Exchange/swapMarket.ts +++ b/src/Unit/Exchange/swapMarket.ts @@ -346,6 +346,8 @@ export default async function swapMarket({ baseCurrencyPriceInQuoteAsset, gasPriceGwei, feePercent, + feeAsset, + allPrices.prices, ); if (feeAsset === assetOut) { diff --git a/src/utils/calculateFeeInFeeAsset.ts b/src/utils/calculateFeeInFeeAsset.ts index e4a6da9..c93e4ab 100644 --- a/src/utils/calculateFeeInFeeAsset.ts +++ b/src/utils/calculateFeeInFeeAsset.ts @@ -5,23 +5,32 @@ import calculateServiceFeeInFeeAsset from './calculateServiceFeeInFeeAsset.js'; const calculateFeeInFeeAsset = ( amount: BigNumber.Value, - feeAssetPriceInServiceToken: BigNumber.Value, - baseAssetPriceInServiceToken: BigNumber.Value, - baseCurrencyPriceInServiceToken: BigNumber.Value, + feeAssetPrice: BigNumber.Value, + baseAssetPrice: BigNumber.Value, + baseCurrencyPrice: BigNumber.Value, gasPriceGwei: BigNumber.Value, feePercent: BigNumber.Value, + feeAsset: string, + assetPrices: Partial>, ) => { + const feeAssetPriceInQuoteAsset = assetPrices[feeAsset]; + if (feeAssetPriceInQuoteAsset === undefined) throw Error('feeAssetPriceInQuoteAsset is undefined'); + + const feeAssetPriceInQuoteAssetBN = new BigNumber(feeAssetPriceInQuoteAsset); + const serviceFeeInFeeAsset = calculateServiceFeeInFeeAsset( amount, - feeAssetPriceInServiceToken, - baseAssetPriceInServiceToken, + feeAssetPrice, + baseAssetPrice, feePercent, + feeAssetPriceInQuoteAssetBN ); const networkFeeInFeeAsset = calculateNetworkFeeInFeeAsset( gasPriceGwei, FILL_ORDERS_GAS_LIMIT, - baseCurrencyPriceInServiceToken, - feeAssetPriceInServiceToken, + baseCurrencyPrice, + feeAssetPrice, + feeAssetPriceInQuoteAssetBN ); return { diff --git a/src/utils/calculateNetworkFeeInFeeAsset.ts b/src/utils/calculateNetworkFeeInFeeAsset.ts index 23b611c..07ddc81 100644 --- a/src/utils/calculateNetworkFeeInFeeAsset.ts +++ b/src/utils/calculateNetworkFeeInFeeAsset.ts @@ -4,17 +4,15 @@ import calculateNetworkFee from './calculateNetworkFee.js'; const calculateNetworkFeeInFeeAsset = ( gasPriceGwei: BigNumber.Value, gasLimit: BigNumber.Value, - baseCurrencyPriceInServiceToken: BigNumber.Value, - feeAssetPriceInServiceToken: BigNumber.Value, + baseCurrencyPrice: BigNumber.Value, + feeAssetPrice: BigNumber.Value, + feeAssetPriceInQuoteAsset: BigNumber.Value, ) => { const networkFee = calculateNetworkFee(gasPriceGwei, gasLimit); - const networkFeeInServiceToken = new BigNumber(networkFee).multipliedBy(baseCurrencyPriceInServiceToken); - const networkFeeInFeeAsset = networkFeeInServiceToken - .multipliedBy( - new BigNumber(1) - .div(feeAssetPriceInServiceToken), - ); + const networkFeeInQuoteAsset = new BigNumber(networkFee).multipliedBy(baseCurrencyPrice); + const networkFeeInFeeAsset = networkFeeInQuoteAsset + .div(new BigNumber(feeAssetPriceInQuoteAsset).multipliedBy(feeAssetPrice)); return networkFeeInFeeAsset.toString(); }; diff --git a/src/utils/calculateServiceFeeInFeeAsset.ts b/src/utils/calculateServiceFeeInFeeAsset.ts index 4cad980..e4e51b3 100644 --- a/src/utils/calculateServiceFeeInFeeAsset.ts +++ b/src/utils/calculateServiceFeeInFeeAsset.ts @@ -2,14 +2,15 @@ import { BigNumber } from 'bignumber.js'; export default function calculateServiceFeeInFeeAsset( amount: BigNumber.Value, - feeAssetPriceInServiceToken: BigNumber.Value, - baseAssetPriceInServiceToken: BigNumber.Value, + feeAssetPrice: BigNumber.Value, + baseAssetPrice: BigNumber.Value, feePercent: BigNumber.Value, + feeAssetPriceInQuoteAsset: BigNumber.Value, ) { const result = new BigNumber(amount) .multipliedBy(new BigNumber(feePercent).div(100)) - .multipliedBy(baseAssetPriceInServiceToken) - .multipliedBy(new BigNumber(1).div(feeAssetPriceInServiceToken)) + .multipliedBy(baseAssetPrice) + .div(new BigNumber(feeAssetPriceInQuoteAsset).multipliedBy(feeAssetPrice)) .toString(); return result;