diff --git a/src/utils/feeRateHelpers.ts b/src/utils/feeRateHelpers.ts index ba29ad6..14753b5 100644 --- a/src/utils/feeRateHelpers.ts +++ b/src/utils/feeRateHelpers.ts @@ -5,7 +5,7 @@ import { TransferProphet } from "./types/TransferProphet" import { TransferProphetAggregated } from "./types/TransferProphet" export interface TransferProphetAppliedResult { - fee: BigNumber + feeAmount: BigNumber netAmount: BigNumber } @@ -16,7 +16,7 @@ export const applyTransferProphets = ( return reduce( (acc, transferProphet) => concat(acc, [applyTransferProphet(transferProphet, last(acc).netAmount)]), - [{ fee: BigNumber.ZERO, netAmount: amount }], + [{ feeAmount: BigNumber.ZERO, netAmount: amount }], transferProphets, ) } @@ -25,15 +25,15 @@ export const applyTransferProphet = ( transferProphet: TransferProphet, amount: BigNumber, ): TransferProphetAppliedResult => { - const fee = BigNumber.max([ + const feeAmount = BigNumber.max([ transferProphet.minFeeAmount, BigNumber.mul(transferProphet.feeRate, amount), ]) const netAmount = BigNumber.max([ BigNumber.ZERO, - BigNumber.minus(amount, fee), + BigNumber.minus(amount, feeAmount), ]) - return { fee, netAmount } + return { feeAmount, netAmount } } export const composeTransferProphet2 = ( diff --git a/src/utils/types/TransferProphet.ts b/src/utils/types/TransferProphet.ts index 3779005..bcc4b9c 100644 --- a/src/utils/types/TransferProphet.ts +++ b/src/utils/types/TransferProphet.ts @@ -5,6 +5,7 @@ import { } from "../../xlinkSdkUtils/types" import { BigNumber } from "../BigNumber" import { KnownRoute } from "../buildSupportedRoutes" +import { applyTransferProphet } from "../feeRateHelpers" import { OneOrMore } from "../typeHelpers" import { KnownChainId, KnownTokenId } from "./knownIds" @@ -45,15 +46,18 @@ export function transformToPublicTransferProphet( transferProphet: TransferProphet, fromAmount: SDKNumber | BigNumber, ): PublicTransferProphet { - const feeAmount = BigNumber.mul(fromAmount, transferProphet.feeRate) + const result = applyTransferProphet( + transferProphet, + BigNumber.from(fromAmount), + ) return { ...route, fromAmount: toSDKNumberOrUndefined(fromAmount), - toAmount: toSDKNumberOrUndefined(BigNumber.minus(fromAmount, feeAmount)), + toAmount: toSDKNumberOrUndefined(result.netAmount), isPaused: transferProphet.isPaused, feeToken: transferProphet.feeToken, - feeAmount: toSDKNumberOrUndefined(feeAmount), + feeAmount: toSDKNumberOrUndefined(result.feeAmount), feeRate: toSDKNumberOrUndefined(transferProphet.feeRate), minFeeAmount: toSDKNumberOrUndefined(transferProphet.minFeeAmount), minBridgeAmount: toSDKNumberOrUndefined(transferProphet.minBridgeAmount),