mirror of
https://github.com/orionprotocol/sdk.git
synced 2026-03-14 14:12:35 +03:00
fee calculation
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -140,6 +140,8 @@ export default async function getSwapInfo({
|
||||
baseCurrencyPriceInQuoteAsset,
|
||||
gasPriceGwei,
|
||||
feePercent,
|
||||
feeAssetAddress,
|
||||
allPrices.prices,
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
@@ -388,6 +388,8 @@ export default async function swapLimit({
|
||||
baseCurrencyPriceInQuoteAsset,
|
||||
gasPriceGwei,
|
||||
feePercent,
|
||||
feeAsset,
|
||||
allPrices.prices,
|
||||
);
|
||||
|
||||
if (feeAsset === assetOut) {
|
||||
|
||||
@@ -346,6 +346,8 @@ export default async function swapMarket({
|
||||
baseCurrencyPriceInQuoteAsset,
|
||||
gasPriceGwei,
|
||||
feePercent,
|
||||
feeAsset,
|
||||
allPrices.prices,
|
||||
);
|
||||
|
||||
if (feeAsset === assetOut) {
|
||||
|
||||
@@ -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