diff --git a/services/vault/src/applications/aave/components/LoanCard/Borrow/BorrowDetailsCard/BorrowDetailsCard.tsx b/services/vault/src/applications/aave/components/LoanCard/Borrow/BorrowDetailsCard/BorrowDetailsCard.tsx index 87d1daad2..75718c148 100644 --- a/services/vault/src/applications/aave/components/LoanCard/Borrow/BorrowDetailsCard/BorrowDetailsCard.tsx +++ b/services/vault/src/applications/aave/components/LoanCard/Borrow/BorrowDetailsCard/BorrowDetailsCard.tsx @@ -6,6 +6,7 @@ import { getHealthFactorStatusFromValue, } from "@/applications/aave/utils"; import { HeartIcon } from "@/components/shared"; +import { COPY } from "@/copy"; type KeyValueListItems = ComponentProps["items"]; @@ -19,7 +20,8 @@ interface BorrowDetailsCardProps { } /** - * BorrowDetailsCard - Displays borrow rate and health factor with before → after indicators + * BorrowDetailsCard - Displays borrow ratio (debt/collateral) and health factor + * with before → after indicators */ export function BorrowDetailsCard({ borrowRatio, @@ -41,7 +43,7 @@ export function BorrowDetailsCard({ const items: KeyValueListItems = [ { - label: "Borrow rate", + label: COPY.loans.borrowRatioLabel, value: borrowRatioOriginal ? ( {borrowRatioOriginal} @@ -53,7 +55,7 @@ export function BorrowDetailsCard({ ), }, { - label: "Health factor", + label: COPY.loans.healthFactorLabel, value: healthFactorOriginal && originalColor ? ( diff --git a/services/vault/src/applications/aave/hooks/useAaveBorrowedAssets.ts b/services/vault/src/applications/aave/hooks/useAaveBorrowedAssets.ts index 2fbce5632..894f8507f 100644 --- a/services/vault/src/applications/aave/hooks/useAaveBorrowedAssets.ts +++ b/services/vault/src/applications/aave/hooks/useAaveBorrowedAssets.ts @@ -31,7 +31,7 @@ export interface BorrowedAsset { amount: string; /** Token icon URL */ icon: string; - /** Borrow APR as a formatted string (e.g. "5.861%"). Optional until the + /** Borrow APY as a formatted string (e.g. "5.861%"). Optional until the * reserve-data fetch that produces this is wired up. */ borrowRate?: string; } diff --git a/services/vault/src/copy.ts b/services/vault/src/copy.ts index 87d0044f7..50fdad505 100644 --- a/services/vault/src/copy.ts +++ b/services/vault/src/copy.ts @@ -112,7 +112,7 @@ export const COPY = { invalid: "This BTC Vault is invalid. The BTC UTXOs were spent in a different transaction.", redemptionComplete: - "Redemption complete. Your BTC has been returned to your wallet.", + "Redemption complete. Your BTC payout has been sent to your nominated address.", }, statusErrors: { expired: @@ -266,8 +266,8 @@ export const COPY = { doneButton: "Done", }, refundSuccess: { - heading: "Broadcasting Refund", - body: "Refund transaction has been broadcast successfully.", + heading: "Broadcasting withdraw expired", + body: "Withdraw expired vault transaction broadcast successfully.", viewExplorerButton: "View on blockchain explorer", doneButton: "Done", doNotSpendWarning: (symbol: string) => @@ -357,7 +357,7 @@ export const COPY = { // Accessible label / tooltip for the per-provider explorer link. providerExplorerLinkLabel: "View vault provider on explorer", splitOptionDescription: - "Split your BTC into multiple BTC Vaults for more flexibility. In liquidation, only part of your collateral may be affected.", + "Split your Bitcoin into multiple vaults to enable partial liquidation.", noSplitOptionDescription: "Your BTC will be deposited into a single BTC Vault", learnWhyRecommended: "Learn why we recommend this.", @@ -616,8 +616,9 @@ export const COPY = { "Your withdrawal is going through its on-chain challenge period before the BTC payout can be broadcast.", }, payoutBroadcast: { - label: "BTC Sent", - message: "Your BTC has been sent to your nominated address.", + label: "Payout broadcast", + message: + "The Bitcoin payout transaction has been broadcast to your nominated address.", }, payoutBlocked: { label: "Blocked", @@ -655,7 +656,13 @@ export const COPY = { heading: "Loans", borrowButton: "Borrow", repayButton: "Repay", - borrowRateLabel: "Borrow rate", + // The interest rate Aave charges on the borrowed asset. Aave compounds + // continuously, so this is an APY (effective rate), matching Aave's own UI. + borrowRateLabel: "Borrow APY", + // Detail-card metric: debt-to-collateral ratio (debtUsd / collateralUsd), + // distinct from the borrow APY above. + borrowRatioLabel: "Borrow ratio", + healthFactorLabel: "Health factor", detailsAriaLabel: (symbol: string) => `${symbol} loan details`, empty: { title: (symbol: string) => `Borrow assets using your ${symbol}`, diff --git a/services/vault/src/models/__tests__/pegoutStateMachine.test.ts b/services/vault/src/models/__tests__/pegoutStateMachine.test.ts index 5a3f776d2..9ec9b5913 100644 --- a/services/vault/src/models/__tests__/pegoutStateMachine.test.ts +++ b/services/vault/src/models/__tests__/pegoutStateMachine.test.ts @@ -52,9 +52,9 @@ describe("pegoutStateMachine", () => { expect(state.message.toLowerCase()).not.toContain("few hours"); }); - it("returns BTC Sent for PayoutBroadcast", () => { + it("returns Payout broadcast for PayoutBroadcast", () => { const state = getPegoutDisplayState("PayoutBroadcast", true); - expect(state.label).toBe("BTC Sent"); + expect(state.label).toBe("Payout broadcast"); expect(state.variant).toBe("active"); });