Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
c25e6b4
feat: allow change minting limit for NO
ev-d Oct 21, 2025
0752a3a
feat: add request for changing minting limit
ev-d Oct 22, 2025
bda571d
chore: merge develop, resolve conflicts
ev-d Oct 22, 2025
9bc6dd1
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Oct 23, 2025
ca288af
feat: show vote request to change vault limit
ev-d Oct 24, 2025
151932c
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Oct 31, 2025
bb959b0
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Nov 6, 2025
4627efd
Merge branch 'feature/si-2206-update-convert-shares' into feature/si-…
ev-d Nov 6, 2025
11152b0
chore: merge develop, resolve conflicts
ev-d Nov 25, 2025
3a041c2
chore: merge develop, resolve conflicts
ev-d Nov 26, 2025
c13aeaa
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Nov 27, 2025
84f0efa
feat: add change limit for vault admin and vaultConfiguration role
ev-d Nov 27, 2025
8d02804
feat: add alter tier info banner
ev-d Dec 1, 2025
b688db8
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 1, 2025
7dddc40
refactor: remove unusedtext node
ev-d Dec 1, 2025
4b83c89
feat: add base flow for alter tiers
ev-d Dec 3, 2025
a97858c
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 3, 2025
44203a6
refactor: update tier confirmation flow
ev-d Dec 4, 2025
3eec849
feat: hide alter tier info if vote is running
ev-d Dec 4, 2025
608b2e1
refactor: update approving tiers voting
ev-d Dec 4, 2025
e362ad0
fix: fix update report
ev-d Dec 8, 2025
2bc3047
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 8, 2025
7b5c644
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 8, 2025
c526685
chore: bump reef-knot version
ev-d Dec 8, 2025
ae54da9
feat: update reef knot version
ev-d Dec 8, 2025
da6cead
fix: downgrade reef-knot version
ev-d Dec 8, 2025
f99d246
refactor: update WalletIdsEthereum import
ev-d Dec 8, 2025
53f2af2
refactor: update lock file
ev-d Dec 9, 2025
f66afaf
feat: update package.json
ev-d Dec 9, 2025
2df3fc5
Merge branch 'develop' into feature/si-2354-update-reef-knot
ev-d Dec 10, 2025
d994a9b
fix: update ledger conection
ev-d Dec 11, 2025
ebf8c73
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 12, 2025
222fc16
Merge branch 'develop' into feature/si-2354-update-reef-knot
ev-d Dec 15, 2025
d7b3fac
Merge branch 'develop' into feature/si-2354-update-reef-knot
ev-d Dec 16, 2025
da426f5
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 17, 2025
5197f13
fix: tier minting limit, tx texts, change tier flow
ev-d Dec 19, 2025
ace9305
fix: update tier settings according QA review
ev-d Dec 21, 2025
606208c
refactor: update update minting limit and change tier request flow
ev-d Dec 22, 2025
8fae474
refactor: update sync tier confirmation
ev-d Dec 22, 2025
a18517e
fix: fix showing success message for error state
ev-d Dec 22, 2025
953b461
fix: update alter tier banner visibility
ev-d Dec 22, 2025
812f2c0
feat: add cookie info component
ev-d Dec 22, 2025
77e8f45
refactor: update repay allowance calculations
ev-d Dec 23, 2025
ca3aad9
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 23, 2025
30953a7
feat: add tooltip for tier limits
ev-d Dec 23, 2025
a83427a
Merge pull request #205 from lidofinance/feature/si-2328-repay-allowance
ev-d Dec 23, 2025
3fc1b77
Merge pull request #204 from lidofinance/feature/si-2380-cookie-info
ev-d Dec 23, 2025
fafb43c
refactor: update apply voting modals text, fixed form reset, form min…
ev-d Dec 23, 2025
7ed1e0f
feat: update minting limit visibility for users without roles
ev-d Dec 23, 2025
031553a
fix: hide alter tier banner, add variable to lido fees formulas
ev-d Dec 24, 2025
3740068
fix: fix variable destructuring
ev-d Dec 24, 2025
2d62ef8
feat: update vv contract mainnet address
ev-d Dec 24, 2025
7a90d9f
Merge pull request #207 from lidofinance/feature/vv-mainnet-address
ev-d Dec 24, 2025
be3f027
Merge branch 'develop' into feature/si-2122-change-tier-limit
ev-d Dec 24, 2025
a0c7864
feat: add cache key for vault tier and no tier info
ev-d Dec 25, 2025
4557ba9
feat: add validators link for mainnet
ev-d Dec 25, 2025
9e087b9
fix: update tier modals texts, hide bunner after approve etc
ev-d Dec 25, 2025
021bba7
feat: add tier settings loader, fix minting limit after voting
ev-d Dec 25, 2025
33e9c50
refactor: update alter tier banner visibility, refactor components
ev-d Dec 25, 2025
6c25563
fix: check vault minting limit for new tier
ev-d Dec 26, 2025
9adf27c
refactor: paint logs, update set vault limit
ev-d Dec 26, 2025
aa4ef33
feat: align tier minting current capacity and vault minting limit
ev-d Dec 26, 2025
ae9370a
refactor: remove getValidatorsLink function
ev-d Dec 26, 2025
e687102
refactor: use default chain id instead public client chain id
ev-d Dec 26, 2025
86a9a97
Merge pull request #161 from lidofinance/feature/si-2122-change-tier-…
ev-d Dec 28, 2025
f30cdb0
fix: update playwright version
ev-d Dec 28, 2025
9684217
Merge pull request #209 from lidofinance/fix/si-2309-playwright-test
ev-d Dec 29, 2025
2670e17
chore: merge develop, resolve conflicts
ev-d Jan 11, 2026
2c301da
Merge remote-tracking branch 'origin/develop' into chore/add-missing-…
DavitMkhitaryan Jan 13, 2026
2d69873
chore: add sync tier and tier request data-testids
DavitMkhitaryan Jan 13, 2026
5e9f673
chore: add missing tierRemainingCapacity locator
DavitMkhitaryan Jan 13, 2026
004836c
Merge pull request #210 from lidofinance/chore/add-missing-data-testids
ev-d Jan 13, 2026
f0f96f8
chore: update data-testid for tier available minting element
DavitMkhitaryan Jan 14, 2026
106e197
Merge pull request #211 from lidofinance/chore/fix-tier-data-testid
ev-d Jan 14, 2026
7572475
Merge pull request #208 from lidofinance/feature/si-2384-mainnet-vali…
ev-d Jan 14, 2026
02a7036
fix: special error for get call status
Jeday Jan 14, 2026
90e423a
fix: add timeout
Jeday Jan 14, 2026
705e263
Merge pull request #212 from lidofinance/fix/send-calls-error
ev-d Jan 14, 2026
e2792e9
feat: replace vault table apr by 7d apr
ev-d Jan 14, 2026
73b8663
fix: fix type for isQuarantineActive
ev-d Jan 14, 2026
5bbf1ad
Merge branch 'develop' into feature/si-2354-update-reef-knot
ev-d Jan 15, 2026
6bb35c3
Merge branch 'feature/si-2354-update-reef-knot' of github.com:lidofin…
ev-d Jan 15, 2026
a97abe4
feat: use dailyLidoFees in net apr modal
ev-d Jan 15, 2026
0ee3f14
Merge pull request #196 from lidofinance/feature/si-2354-update-reef-…
itaven Jan 15, 2026
17b088c
Merge pull request #213 from lidofinance/feature/si-2388-update-vault…
ev-d Jan 16, 2026
5002ce5
feat: add cache control for /vaults* pages
solidovic Jan 16, 2026
e13fa57
Merge pull request #215 from lidofinance/feat/add-cc-for-vault-pages
itaven Jan 16, 2026
3499c98
fix: return carrySpreadAprPercent for vaults table
ev-d Jan 16, 2026
1b833ad
Merge pull request #216 from lidofinance/fix/si-2388-update-vaults-ta…
itaven Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# for supporting of domain agnostic
SELF_ORIGIN=https://vaults.lido.fi
SELF_ORIGIN=https://stvaults.lido.fi
ROOT_ORIGIN=https://lido.fi
DOCS_ORIGIN=https://docs.lido.fi
HELP_ORIGIN=https://help.lido.fi
Expand Down
2 changes: 1 addition & 1 deletion consts/matomo-wallets-events.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { trackEvent } from '@lidofinance/analytics-matomo';
import type { ReefKnotWalletsModalConfig } from '@reef-knot/types';
import type { WalletIdsEthereum } from '@reef-knot/wallets-list';
import type { WalletIdsEthereum } from 'reef-knot/wallets';
import { MATOMO_CLICK_EVENTS } from './matomo-click-events';

type MetricProps = Pick<
Expand Down
8 changes: 4 additions & 4 deletions consts/routing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ export const appPaths = {
vaults: {
all: '/vaults',
create: '/vaults/create',
vault: (vaultAddress: Address) =>
vault: (vaultAddress: Address | '[vaultAddress]') =>
({
overview: `/vaults/${vaultAddress}`,
eth: (mode: 'supply' | 'withdraw') =>
eth: (mode: '[mode]' | 'supply' | 'withdraw') =>
`/vaults/${vaultAddress}/eth/${mode}` as const,
steth: (mode: 'mint' | 'repay') =>
steth: (mode: '[mode]' | 'mint' | 'repay') =>
`/vaults/${vaultAddress}/steth/${mode}` as const,
claim: `/vaults/${vaultAddress}/claim`,
settings: (mode: 'main' | 'permissions' | 'tier') =>
settings: (mode: '[mode]' | 'main' | 'permissions' | 'tier') =>
`/vaults/${vaultAddress}/settings/${mode}`,
validators: `/vaults/${vaultAddress}/validators`,
}) as const,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,15 @@ export const useRepay = () => {
to: activeVault.dashboard.address,
});

const needsAllowance = allowance < amount;
const txAmountAllowance = isSteth
? await shares.convertToSteth(txAmount)
: amount;

const needsAllowance = allowance < txAmountAllowance;
if (needsAllowance) {
const approveCall = {
...(await tokenContract.populateApprove({
amount: amount,
amount: txAmountAllowance,
to: activeVault.dashboard.address,
})),
loadingActionText: vaultTexts.actions.approve.loading(token),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
import { FC } from 'react';
import invariant from 'tiny-invariant';

import { isNumber } from 'utils';

import { TextBold } from './styles';

import { ConfirmDataItemProps } from './types';
import invariant from 'tiny-invariant';
import type { ConfirmDataItemProps } from './types';

export const ConfirmPercent: FC<ConfirmDataItemProps> = ({
payload,
dataTestId,
}) => {
if (!payload) return null;

invariant(
typeof payload === 'number' || typeof payload === 'string',
isNumber(payload) || typeof payload === 'string',
'Payload must be a string | number',
);
return (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import { FC } from 'react';
import invariant from 'tiny-invariant';

import { isNumber } from 'utils';

import { TextBold } from './styles';

import { ConfirmDataItemProps } from './types';
import invariant from 'tiny-invariant';
import type { ConfirmDataItemProps } from './types';

export const ConfirmTime: FC<ConfirmDataItemProps> = ({
payload,
dataTestId,
}) => {
invariant(
typeof payload === 'number' || typeof payload === 'string',
isNumber(payload) || typeof payload === 'string',
'Payload must be a string | number',
);
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useEstimateGas } from 'wagmi';
import { useFormContext, useFormState } from 'react-hook-form';

import {
TransactionEntry,
type TransactionEntry,
useSendTransaction,
withSuccess,
useDappStatus,
Expand Down
6 changes: 3 additions & 3 deletions features/home/vault-table/vault-table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const tableHeaders = [
},
{
title: 'Net Staking APR',
sortKey: 'netStakingAprPercent',
sortKey: 'netStakingAprSma',
},
{
title: 'Carry Spread',
Expand All @@ -81,7 +81,7 @@ const PLACEHOLDER_VAULT: VaultEntry = {
liabilityStETH: 0n,
healthFactor: 0,
carrySpreadAprPercent: 0,
netStakingAprPercent: 0,
netStakingAprSma: 0,
bottomLine: 0n,
};

Expand Down Expand Up @@ -121,7 +121,7 @@ const VaultTableRowContent = ({ vault, dataTestId }: VaultTableRowProps) => {
align="right"
data-testid={dataTestId ? `${dataTestId}-netStakingAprCell` : undefined}
>
<PercentCell value={vault.netStakingAprPercent} />
<PercentCell value={vault.netStakingAprSma} />
</TableCell>
<TableCell
align="right"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,22 @@ export const RequestTier = () => {
}

return [
{ label: 'Reserve ratio', value: metrics.reserveRatioBPValue },
{
label: 'Reserve ratio',
value: metrics.reserveRatioBP.newValue,
},
{
label: 'Forced rebalance threshold',
value: metrics.forcedRebalanceThresholdBPValue,
value: metrics.forcedRebalanceThresholdBP.newValue,
},
{
label: 'Lido infrastructure fee',
value: metrics.infraFeeBP.newValue,
},
{
label: 'Lido liquidity fee',
value: metrics.liquidityFeeBP.newValue,
},
{ label: 'Lido infrastructure fee', value: metrics.infraFeeBPValue },
{ label: 'Lido liquidity fee', value: metrics.liquidityFeeBPValue },
];
}, [metrics]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@ const formulasMap: Record<
type: 'variable',
hasHighlight: true,
},
{
label: '×',
type: 'operation',
hasHighlight: false,
},
{
label: 'Lido Core APR',
type: 'variable',
hasHighlight: true,
},
],
liquidityFee: [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ export const NetAprModal = () => {
netStakingRewards,
grossStakingRewards,
nodeOperatorRewards,
unsettledLidoFees,
vaultMetrics,
} = values || {};

return (
Expand Down Expand Up @@ -142,7 +142,7 @@ export const NetAprModal = () => {
<SectionDivider />
<ModalSection
title={netApr.lidoFees.title}
amountValue={unsettledLidoFees}
amountValue={vaultMetrics?.dailyLidoFees}
amountType="token"
amountSymbol="ETH"
description={netApr.lidoFees.description}
Expand Down
4 changes: 2 additions & 2 deletions features/overview/hooks/use-tier-request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ export const useTierRequest = () => {

return {
metrics: calculateTierMetrics({
newTier: proposedTier,
tier: proposedTier,
vault: vaultTierInfo.vault,
newVaultMintingLimit: proposedVaultLimitStETH,
}),
proposedTier,
proposedVaultLimitStETH,
proposedVaultLimitShares: proposals.proposedVaultLimit,
proposedVaultLimitShares: proposals.proposedVaultLimitShares,
};
}, [vaultTierInfo, noTiersInfo]);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import { useState, useCallback } from 'react';
import { Text } from '@lidofinance/lido-ui';

import {
useVaultConfirmingRoles,
useVaultPermission,
useVaultTierInfo,
} from 'modules/vaults';
import { ReactComponent as WarningTriangle } from 'assets/icons/warning-triangle.svg';
import { isNumber } from 'utils';

import { useAlterTier } from 'features/settings/tier/hooks';
import {
AlterTierChanges,
AlterTierModal,
} from 'features/settings/tier/shared';

import {
InfoContainer,
TitleContainer,
Wrapper,
TextStyled,
ModalButton,
ListOfUpdates,
} from './styles';

export const AlterTierInfo = () => {
const [showModal, setModalVisibility] = useState(false);
const { data: vaultTierInfo, isLoading } = useVaultTierInfo();
const { data } = useAlterTier();
const { hasChanges, alterTierList, id, tierName } = data ?? {};
const { hasAdmin, isNodeOperator } = useVaultConfirmingRoles();
const { hasPermission } = useVaultPermission('vaultConfiguration');

const closeModal = useCallback(() => setModalVisibility(false), []);
const openModal = useCallback(() => setModalVisibility(true), []);
const extendLastProposal = vaultTierInfo?.proposals.extendLastProposal;
if (
isLoading ||
!hasChanges ||
!(hasAdmin || isNodeOperator || hasPermission) ||
!isNumber(id) ||
(extendLastProposal?.tierId === BigInt(id) &&
extendLastProposal.functionName === 'syncTier')
) {
return null;
}

return (
<>
<Wrapper data-testid="syncTier-banner">
<InfoContainer>
<TitleContainer>
<WarningTriangle color="#EC8600" />
<Text size="xs" strong data-testid="syncTier-banner-title">
{tierName} update available
</Text>
</TitleContainer>
<ListOfUpdates data-testid="syncTier-banner-listOfUpdates">
{!!alterTierList && (
<AlterTierChanges
alterTierList={alterTierList}
dataTestId="syncTier-banner"
/>
)}
<TextStyled
size="xxs"
data-testid="syncTier-banner-applyChanges-text"
>
Apply the new settings to take effect.
</TextStyled>
</ListOfUpdates>
</InfoContainer>
<div>
<ModalButton
size="xs"
variant="outlined"
color="secondary"
onClick={openModal}
data-testid="syncTier-banner-reviewSubmitButton"
>
Review
</ModalButton>
</div>
</Wrapper>
<AlterTierModal isOpen={showModal} closeModal={closeModal} />
</>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { AlterTierInfo } from './alter-tier-info';
41 changes: 41 additions & 0 deletions features/settings/tier/components/alter-tier-info/styles.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import styled from 'styled-components';
import { Text, Button } from '@lidofinance/lido-ui';

export const Wrapper = styled.div`
display: flex;
align-items: center;
gap: ${({ theme }) => theme.spaceMap.lg}px;
padding: ${({ theme }) => theme.spaceMap.md}px;
border-radius: 12px;
background-color: color-mix(
in display-p3,
${({ theme }) => theme.colors.warning} 20%,
transparent
);
`;

export const TitleContainer = styled.div`
display: flex;
align-items: center;
gap: ${({ theme }) => theme.spaceMap.xs}px;
`;

export const InfoContainer = styled.div`
display: flex;
flex-direction: column;
gap: ${({ theme }) => theme.spaceMap.sm}px;
flex-grow: 1;
`;

export const ListOfUpdates = styled.div`
display: flex;
flex-direction: column;
`;

export const TextStyled = styled(Text)`
line-height: 20px;
`;

export const ModalButton = styled(Button)`
background-color: ${({ theme }) => theme.colors.foreground};
`;
3 changes: 2 additions & 1 deletion features/settings/tier/components/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from './request-change-limit';
export * from './voting-request';
export * from './tier-info';
export * from './alter-tier-info';

This file was deleted.

2 changes: 2 additions & 0 deletions features/settings/tier/components/tier-info/tier-info.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
ContentWrapper,
SectionContainer,
} from 'features/settings/shared/components';
import { AlterTierInfo } from 'features/settings/tier/components/alter-tier-info';
import {
ChooseTier,
Title,
Expand All @@ -19,6 +20,7 @@ export const TierInfo = () => {
<Title data-testid="title" as="h2">
{vaultTexts.actions.tier.settingsTitle}
</Title>
<AlterTierInfo />
<ChooseTier />
<MintingLimit />
<VaultMetrics />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { VotingRequest } from './voting-request';
Loading
Loading