diff --git a/apps/hyperdrive-trading/src/hyperdrive/model/ReadHyperdriveModel.ts b/apps/hyperdrive-trading/src/hyperdrive/model/ReadHyperdriveModel.ts index 4a3870ef5..a748c1159 100644 --- a/apps/hyperdrive-trading/src/hyperdrive/model/ReadHyperdriveModel.ts +++ b/apps/hyperdrive-trading/src/hyperdrive/model/ReadHyperdriveModel.ts @@ -411,7 +411,7 @@ export class ReadHyperdriveModel implements IReadHyperdriveModel { }> { return this.readHyperdrive.previewOpenLong({ amountIn: sharesAmount, - asBase: true, + asBase: false, options, }); } diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongForm/OpenLongForm.tsx b/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongForm/OpenLongForm.tsx index 3d925197b..dacedad80 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongForm/OpenLongForm.tsx +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongForm/OpenLongForm.tsx @@ -257,6 +257,8 @@ export function OpenLongForm({ ), ), }} + asBase={activeToken.address === baseToken.address} + vaultSharePrice={poolInfo?.vaultSharePrice} /> } disclaimer={(() => { diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongPreview/OpenLongPreview.tsx b/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongPreview/OpenLongPreview.tsx index b9338bd6b..73dcaf158 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongPreview/OpenLongPreview.tsx +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/longs/OpenLongPreview/OpenLongPreview.tsx @@ -9,6 +9,7 @@ import * as dnum from "dnum"; import { ReactElement } from "react"; import { convertMillisecondsToDays } from "src/base/convertMillisecondsToDays"; import { formatRate } from "src/base/formatRate"; +import { convertSharesToBase } from "src/hyperdrive/convertSharesToBase"; import { useAppConfig } from "src/ui/appconfig/useAppConfig"; import { LabelValue } from "src/ui/base/components/LabelValue"; import { formatBalance } from "src/ui/base/formatting/formatBalance"; @@ -21,6 +22,8 @@ interface OpenLongPreviewProps { spotRateAfterOpen: bigint | undefined; activeToken: TokenConfig; curveFee: bigint | undefined; + asBase: boolean; + vaultSharePrice: bigint | undefined; } export function OpenLongPreview({ @@ -29,6 +32,8 @@ export function OpenLongPreview({ spotRateAfterOpen, activeToken, curveFee, + asBase, + vaultSharePrice, }: OpenLongPreviewProps): ReactElement { const appConfig = useAppConfig(); const baseToken = findBaseToken({ @@ -94,7 +99,15 @@ export function OpenLongPreview({ calculateAprFromPrice({ positionDuration: hyperdrive.poolConfig.positionDuration || 0n, - baseAmount: long.baseAmountPaid, + baseAmount: asBase + ? long.baseAmountPaid + : // TODO: move sharesAmountPaid into the sdk's Long interface + // instead of converting here + convertSharesToBase({ + sharesAmount: long.baseAmountPaid, + vaultSharePrice: vaultSharePrice, + decimals: activeToken.decimals, + }), bondAmount: long.bondAmount, }), baseToken.decimals, @@ -155,7 +168,15 @@ export function OpenLongPreview({ {long.bondAmount > long.baseAmountPaid ? "+" : ""} {long.baseAmountPaid ? `${formatBalance({ - balance: long.bondAmount - long.baseAmountPaid, + balance: + long.bondAmount - + (asBase + ? long.baseAmountPaid + : convertSharesToBase({ + sharesAmount: long.baseAmountPaid, + vaultSharePrice: vaultSharePrice, + decimals: baseToken.decimals, + })), decimals: baseToken.decimals, places: baseToken.places, })} ${baseToken.symbol}`