fix: improve transformToPublicTransferProphet

This commit is contained in:
c4605
2024-07-25 14:00:46 +01:00
parent 277992dca6
commit 2bf8d76098
2 changed files with 12 additions and 8 deletions

View File

@@ -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 = (

View File

@@ -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),