mirror of
https://github.com/Brotocol-xyz/bro-sdk.git
synced 2026-01-12 14:54:21 +08:00
fix: improve transformToPublicTransferProphet
This commit is contained in:
@@ -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 = (
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user