mirror of
https://github.com/orionprotocol/sdk.git
synced 2026-03-16 16:21:32 +03:00
fee calculation
This commit is contained in:
@@ -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<Record<string, string>>,
|
||||
) => {
|
||||
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 {
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user