From 527f0339d9d307b4f76acbeb7e79d52373a9c759 Mon Sep 17 00:00:00 2001 From: Andrey Kopylov Date: Thu, 21 May 2026 18:01:27 +0500 Subject: [PATCH 1/2] fixes --- documentation/03-quick-start/_category_.json | 3 - documentation/03-quick-start/boost.md | 112 ------------------ documentation/03-quick-start/burn-os-token.md | 82 ------------- .../03-quick-start/deposit-to-vault.md | 110 ----------------- documentation/03-quick-start/get-user-data.md | 100 ---------------- .../03-quick-start/get-vault-data.md | 51 -------- documentation/03-quick-start/mint-os-token.md | 71 ----------- documentation/03-quick-start/unboost.md | 80 ------------- documentation/03-quick-start/unstake.md | 83 ------------- documentation/endpoints.md | 16 +++ src/graphql/subgraph/vault/vaultQuery.graphql | 2 + src/helpers/configs/gnosis.ts | 5 +- src/helpers/configs/hoodi.ts | 6 +- .../vault/requests/getVault/modifyVault.ts | 2 + 14 files changed, 28 insertions(+), 695 deletions(-) delete mode 100644 documentation/03-quick-start/_category_.json delete mode 100644 documentation/03-quick-start/boost.md delete mode 100644 documentation/03-quick-start/burn-os-token.md delete mode 100644 documentation/03-quick-start/deposit-to-vault.md delete mode 100644 documentation/03-quick-start/get-user-data.md delete mode 100644 documentation/03-quick-start/get-vault-data.md delete mode 100644 documentation/03-quick-start/mint-os-token.md delete mode 100644 documentation/03-quick-start/unboost.md delete mode 100644 documentation/03-quick-start/unstake.md diff --git a/documentation/03-quick-start/_category_.json b/documentation/03-quick-start/_category_.json deleted file mode 100644 index 867b92db..00000000 --- a/documentation/03-quick-start/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "label": "Quick Start" -} diff --git a/documentation/03-quick-start/boost.md b/documentation/03-quick-start/boost.md deleted file mode 100644 index 1ac59bf4..00000000 --- a/documentation/03-quick-start/boost.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -id: boost-os-token -title: Boost osToken -sidebar_position: 6 -description: Boost staking rewards with StakeWise SDK — leverage osTokens as Aave collateral to amplify your vault staking position. ---- - -# Boost osToken - -StakeWise Boost enhances staking rewards by leveraging your osTokens as collateral to borrow additional assets from Aave. The borrowed funds are then restaked, creating a compounding effect that amplifies your staking position. - -```ts -import { BrowserProvider, parseEther } from 'ethers' -import { StakeWiseSDK, Network, OsTokenPositionHealth } from '@stakewise/v3-sdk' - -const eip1193Provider = window.ethereum - -const browserProvider = new BrowserProvider(eip1193Provider, { - chainId: Network.Mainnet, - name: 'mainnet', -}) - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, - provider: browserProvider, -}) - -type Input = { - amount: string - userAddress: string - vaultAddress: string -} - -type PermitParams = Parameters[0]['permitParams'] - -const boost = async (values: Input) => { - const { amount, userAddress, vaultAddress } = values - - const tokenAddress = sdk.config.addresses.tokens.mintToken - - try { - const shares = parseEther(amount) - const osTokenContract = sdk.contracts.helpers.createErc20(tokenAddress) - - const mint = await sdk.osToken.getBalance({ userAddress, vaultAddress }) - const permitAddress = await sdk.boost.getLeverageStrategyProxy({ userAddress, vaultAddress }) - const allowance = await osTokenContract.allowance(userAddress, permitAddress) - - if (!mint.shares) { - throw new Error('You have no tokens to boost.') - } - - if (shares > mint.shares) { - throw new Error('Insufficient osToken balance') - } - - const isNeedApprove = allowance < shares - - let permitParams: PermitParams - - if (isNeedApprove) { - const code = await sdk.provider.getCode(userAddress) - const isMultiSig = code !== '0x' - - if (isMultiSig) { - // Use traditional approve for multi-sig wallets - const signer = await sdk.provider.getSigner(userAddress) - const signedContract = osTokenContract.connect(signer) - - const { hash } = await signedContract.approve(permitAddress, shares) - - await sdk.provider.waitForTransaction(hash) - } - else { - // Use gasless permit for EOAs - const { amount, deadline, v, r, s } = await sdk.utils.getPermitSignature({ - contract: sdk.contracts.tokens.mintToken, - spenderAddress: permitAddress, - ownerAddress: userAddress, - }) - - permitParams = { - vault: vaultAddress, - deadline, - amount, - v, - r, - s, - } - } - } - - const hash = await sdk.boost.lock({ - amount: shares, - permitParams, - vaultAddress, - userAddress, - }) - - await sdk.provider.waitForTransaction(hash) - } - catch (error) { - console.error(error) - } -} - -boost({ - amount: '1.12', - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` diff --git a/documentation/03-quick-start/burn-os-token.md b/documentation/03-quick-start/burn-os-token.md deleted file mode 100644 index 7dbf0680..00000000 --- a/documentation/03-quick-start/burn-os-token.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -id: burn-os-token -title: Burn osToken -sidebar_position: 5 -description: Burn osETH tokens in a StakeWise vault using the SDK — monitor osToken position health and execute burn transactions safely. ---- - -# Burn osToken - -This example demonstrates how to burn minted osTokens while simultaneously monitoring the health of the osToken position during the process. - -```ts -import { BrowserProvider, parseEther } from 'ethers' -import { StakeWiseSDK, Network, OsTokenPositionHealth } from '@stakewise/v3-sdk' - -const eip1193Provider = window.ethereum - -const browserProvider = new BrowserProvider(eip1193Provider, { - chainId: Network.Mainnet, - name: 'mainnet', -}) - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, - provider: browserProvider, -}) - -type Input = { - amount: string - userAddress: string - vaultAddress: string -} - -const burn = async (values: Input) => { - const { amount, userAddress, vaultAddress } = values - - try { - const shares = parseEther(amount) - - const [ vault, mint, stake ] = await Promise.all([ - sdk.vault.getVault({ vaultAddress }), - sdk.osToken.getBalance({ userAddress, vaultAddress }), - sdk.vault.getStakeBalance({ userAddress, vaultAddress }), - ]) - - if (!mint.shares) { - throw new Error('You have no tokens to burn.') - } - - if (shares > mint.shares) { - throw new Error('Insufficient osToken balance') - } - - const { health } = sdk.osToken.getHealthFactor({ - liqThresholdPercent: BigInt(vault.osTokenConfig.liqThresholdPercent), - mintedAssets: mint.shares - shares, - stakedAssets: stake.assets, - }) - - if (health !== OsTokenPositionHealth.Healthy) { - throw new Error('Your osToken position will no longer be safe.') - } - - const hash = await sdk.osToken.burn({ - vaultAddress, - userAddress, - shares, - }) - - await sdk.provider.waitForTransaction(hash) - } - catch (error) { - console.error(error) - } -} - -burn({ - amount: '2.21', - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` diff --git a/documentation/03-quick-start/deposit-to-vault.md b/documentation/03-quick-start/deposit-to-vault.md deleted file mode 100644 index f81ecc0e..00000000 --- a/documentation/03-quick-start/deposit-to-vault.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -id: deposit-to-vault -title: Deposit to vault -sidebar_position: 2 -description: Deposit ETH into a StakeWise vault using the SDK — client-side browser wallet and backend custodial wallet integration examples. ---- - -# Deposit to vault - -This guide demonstrates two different approaches for depositing into a vault: - -### 1. Client-Side (Browser Wallet) - -Use this method when users connect their non-custodial wallet (like MetaMask) directly in the browser. - -```ts -import { BrowserProvider, parseEther } from 'ethers' -import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' - -const eip1193Provider = window.ethereum - -const browserProvider = new BrowserProvider(eip1193Provider, { - chainId: Network.Mainnet, - name: 'mainnet', -}) - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, - provider: browserProvider, -}) - -type Input = { - amount: string - userAddress: string - vaultAddress: string -} - -const deposit = async (values: Input) => { - const { amount, userAddress, vaultAddress } = values - - try { - const params = { - assets: parseEther(amount), - vaultAddress, - userAddress, - } - - const hash = await sdk.vault.deposit(params) - - await sdk.provider.waitForTransaction(hash) - } - catch (error) { - console.error(error) - } -} - -deposit({ - amount: '1.44', // ETH - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` ---- - -### 2. Backend-Side (Custodial Wallet) - -Use this method when you manage private keys on your backend server. - -```ts -import { BrowserProvider, parseEther } from 'ethers' -import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' - - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, -}) - -type Input = { - amount: string - userAddress: string - vaultAddress: string -} - -const deposit = async (values: Input) => { - const { amount, userAddress, vaultAddress } = values - - try { - const params = { - assets: parseEther(amount), - vaultAddress, - userAddress, - } - - const tx = await sdk.vault.deposit.encode(params) - const { hash } = await yourSigningService.sendTransaction() - - await sdk.provider.waitForTransaction(hash) - } - catch (error) { - console.error(error) - } -} - -deposit({ - amount: '1.44', // ETH - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` ---- diff --git a/documentation/03-quick-start/get-user-data.md b/documentation/03-quick-start/get-user-data.md deleted file mode 100644 index 9f1694a0..00000000 --- a/documentation/03-quick-start/get-user-data.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -id: get-user-data -title: Get user data -sidebar_position: 1 -description: Query user staking data from StakeWise vaults — balances, osToken positions, boost amounts, APY, exit queues, and action history. ---- - -# Get user data - -This example demonstrates how to retrieve comprehensive user data from a specific Vault using a user's address. The response includes: - -- User's stake balance -- osToken minting position -- Active boost amount -- Unstake queue -- Unboost queue -- Current APY -- History of user actions within the Vault -- Statistical data for user analytics - -```ts -import { StakeWiseSDK, Network, AllocatorActionType } from '@stakewise/v3-sdk' - - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, -}) - -const userActionTypes = [ - AllocatorActionType.Redeemed, - AllocatorActionType.Migrated, - AllocatorActionType.Deposited, - AllocatorActionType.TransferIn, - AllocatorActionType.VaultCreated, - AllocatorActionType.OsTokenMinted, - AllocatorActionType.OsTokenBurned, - AllocatorActionType.BoostDeposited, - AllocatorActionType.OsTokenRedeemed, - AllocatorActionType.OsTokenLiquidated, - AllocatorActionType.ExitedAssetsClaimed, - AllocatorActionType.BoostExitedAssetsClaimed, -] - -type Input = { - userAddress: string - vaultAddress: string -} - -const getUserData = async (values: Input) => { - const lastMonthStart = new Date().getTime() - (1000 * 60 * 60 * 24 * 31) - - try { - const [ - boost, - apy, - osToken, - stake, - unboostQueuePosition, - maxUnstakeAmount, - exitQueuePositions, - statsChart, - userActions, - rewardsTable, - ] = await Promise.all([ - sdk.boost.getData(values), - sdk.vault.getUserApy(values), - sdk.osToken.getBalance(values), - sdk.vault.getStakeBalance(values), - sdk.boost.getQueuePosition(values), - sdk.vault.getMaxWithdrawAmount(values), - sdk.vault.getExitQueuePositions(values), - sdk.vault.getUserStats({ ...values, daysCount: 30 }), - sdk.vault.getStakerActions({ ...values, skip: 0, limit: 20, types: userActionTypes }), - sdk.vault.getUserRewards({ ...values, dateFrom: lastMonthStart, dateTo: Date.now() }), - ]) - - console.log('Result:', { - apy, - stake, - boost, - osToken, - statsChart, - userActions, - rewardsTable, - maxUnstakeAmount, - exitQueuePositions, - unboostQueuePosition, - }) - } - catch (error) { - console.error(error) - } -} - -getUserData({ - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` ---- diff --git a/documentation/03-quick-start/get-vault-data.md b/documentation/03-quick-start/get-vault-data.md deleted file mode 100644 index 43b6abdc..00000000 --- a/documentation/03-quick-start/get-vault-data.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: get-vault-data -title: Get vault data -sidebar_position: 0 -description: Fetch StakeWise vault data using the SDK — retrieve vault details, stats charts, validators, whitelist, and blocklist information. ---- - -# Get vault data - -After creating a Vault, the first step is to retrieve its core data. In this example, we fetch the Vault's primary information. Note that `getWhitelist` and `getBlocklist` methods are specific to certain Vault types. - -```ts -import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' - - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, -}) - -const getVaultData = async (vaultAddress: string) => { - try { - const [ - mainData, - statsChart, - validatorsList, - whitelist, - blocklist, - ] = await Promise.all([ - sdk.vault.getVault({ vaultAddress }), - sdk.vault.getVaultStats({ vaultAddress, daysCount: 30 }), - sdk.vault.getValidators({ vaultAddress, skip: 0, limit: 20 }), - sdk.vault.getWhitelist({ vaultAddress }), // For private vaults - sdk.vault.getBlocklist({ vaultAddress }), // For blocklist vaults - ]) - - console.log('Result:', { - mainData, - whitelist, - blocklist, - statsChart, - validatorsList, - }) - } - catch (error) { - console.error(error) - } -} - -getVaultData('YOUR_VAULT_ADDRESS') -``` ---- diff --git a/documentation/03-quick-start/mint-os-token.md b/documentation/03-quick-start/mint-os-token.md deleted file mode 100644 index 52a6f3b5..00000000 --- a/documentation/03-quick-start/mint-os-token.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -id: mint-os-token -title: Mint osToken -sidebar_position: 4 -description: Mint osETH tokens against your StakeWise vault stake using the SDK — check max mintable amounts and execute minting transactions. ---- - -# Mint osToken - -This example demonstrates the osToken minting process. Note that the user must already have a stake in your vault, as minting osTokens requires existing staked assets. You can retrieve the maximum mintable amount for a user by calling the `getMaxMint` method. - -```ts -import { BrowserProvider, parseEther } from 'ethers' -import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' - -const eip1193Provider = window.ethereum - -const browserProvider = new BrowserProvider(eip1193Provider, { - chainId: Network.Mainnet, - name: 'mainnet', -}) - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, - provider: browserProvider, -}) - -type Input = { - amount: string - userAddress: string - vaultAddress: string -} - -const mint = async (values: Input) => { - const { amount, userAddress, vaultAddress } = values - - try { - const shares = parseEther(amount) - - const [ mint, maxMintShares ] = await Promise.all([ - sdk.osToken.getBalance({ userAddress, vaultAddress }), - sdk.osToken.getMaxMintAmount({ userAddress, vaultAddress }), - ]) - - if (!maxMintShares) { - throw new Error('You need to make a stake in advance to be able to mint osETH.') - } - - if (maxMintShares < shares) { - throw new Error('You do not have sufficient stake funds for this operation.') - } - - const hash = await sdk.osToken.mint({ - vaultAddress, - userAddress, - shares, - }) - - await sdk.provider.waitForTransaction(hash) - } - catch (error) { - console.error(error) - } -} - -mint({ - amount: '2.21', - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` diff --git a/documentation/03-quick-start/unboost.md b/documentation/03-quick-start/unboost.md deleted file mode 100644 index 24bc4231..00000000 --- a/documentation/03-quick-start/unboost.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -id: unboost-os-token -title: Unboost osToken -sidebar_position: 7 -description: Exit a leveraged boost position with the StakeWise SDK — repay Aave debt, unlock osToken collateral, and track the withdrawal queue. ---- - -# Unboost osToken - -The unboost process allows you to safely exit a leveraged position and reclaim your osTokens from the Boost strategy. This involves repaying borrowed assets on Aave and unlocking your collateral. - -```ts -import { BrowserProvider, parseEther } from 'ethers' -import { StakeWiseSDK, Network, OsTokenPositionHealth } from '@stakewise/v3-sdk' - -const eip1193Provider = window.ethereum - -const browserProvider = new BrowserProvider(eip1193Provider, { - chainId: Network.Mainnet, - name: 'mainnet', -}) - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, - provider: browserProvider, -}) - -type Input = { - percent: number - userAddress: string - vaultAddress: string -} - -type PermitParams = Parameters[0]['permitParams'] - -const unboost = async (values: Input) => { - const { percent, userAddress, vaultAddress } = values - - try { - const boost = await sdk.boost.getData({ userAddress, vaultAddress }) - - if (!boost.shares) { - throw new Error('You don\'t have a boost.') - } - - if (percent > 100) { - throw new Error('Insufficient boost balance') - } - - if (boost.exitingPercent) { - throw new Error(` - You already have a position in the queue for an unboost, - you must claim tokens before creating a new position for exit. - `) - } - - const hash = await sdk.boost.unlock({ - percent, - userAddress, - vaultAddress, - }) - - await sdk.provider.waitForTransaction(hash) - - const unboostQueue = await sdk.boost.getQueuePosition({ userAddress, vaultAddress }) - - // After you have unboosted, your funds are placed in the withdrawal queue. - console.log('unboostQueue:', unboostQueue) - } - catch (error) { - console.error(error) - } -} - -unboost({ - percent: 50, - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` diff --git a/documentation/03-quick-start/unstake.md b/documentation/03-quick-start/unstake.md deleted file mode 100644 index 7b8d0ec2..00000000 --- a/documentation/03-quick-start/unstake.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -id: unstake-example -title: Unstake -sidebar_position: 3 -description: Unstake deposits from a StakeWise vault using the SDK — withdraw staked assets, handle osToken burns, and track exit queue positions. ---- - -# Unstake - -This guide outlines the implementation approach for unstaking user deposits. - -```ts -import { BrowserProvider, parseEther, formatEther } from 'ethers' -import { StakeWiseSDK, Network } from '@stakewise/v3-sdk' - -const eip1193Provider = window.ethereum - -const browserProvider = new BrowserProvider(eip1193Provider, { - chainId: Network.Mainnet, - name: 'mainnet', -}) - -const sdk = new StakeWiseSDK({ - network: Network.Mainnet, - provider: browserProvider, -}) - -type Input = { - amount: string - userAddress: string - vaultAddress: string -} - -const unstake = async (values: Input) => { - const { amount, userAddress, vaultAddress } = values - - try { - const assets = parseEther(amount) - - const [ stake, maxWithdrawAssets, burnAmount ] = await Promise.all([ - sdk.vault.getStakeBalance({ userAddress, vaultAddress }), - sdk.vault.getMaxWithdrawAmount({ userAddress, vaultAddress }), - sdk.osToken.getBurnAmountForUnstake({ userAddress, vaultAddress }), - ]) - - if (!stake.assets) { - throw new Error('You have no tokens to unstake.') - } - - if (assets > maxWithdrawAssets) { - throw new Error('You do not have enough tokens to withdraw.') - } - - if (burnAmount) { - const value = formatEther(burnAmount) - - console.warn(`To withdraw your tokens in full, you must first burn an ${value} osToken.`) - } - - const hash = await sdk.vault.withdraw({ - vaultAddress, - userAddress, - assets, - }) - - await sdk.provider.waitForTransaction(hash) - - const positions = await sdk.vault.getExitQueuePositions({ userAddress, vaultAddress }) - - // After unstaking, the withdrawal of funds will be added to the exit queue, which can be obtained using the SDK. - console.log('positions:', positions) - } - catch (error) { - console.error(error) - } -} - -unstake({ - amount: '3.33', - userAddress: 'USER_ADDRESS', - vaultAddress: 'VAULT_ADDRESS', -}) -``` diff --git a/documentation/endpoints.md b/documentation/endpoints.md index 68a65f28..e152f2b4 100644 --- a/documentation/endpoints.md +++ b/documentation/endpoints.md @@ -64,6 +64,14 @@ Use the **`prod`** endpoint for production environments. | **Gnosis** | `https://graphs.stakewise.io/gnosis/subgraphs/name/stakewise/prod` | | **Hoodi** | `https://graphs.stakewise.io/hoodi/subgraphs/name/stakewise/prod` | +#### Fallback + +| Network | Endpoint | +|---------|----------| +| **Mainnet** | `https://graphs-replica.stakewise.io/mainnet/subgraphs/name/stakewise/prod` | +| **Gnosis** | `https://graphs-replica.stakewise.io/gnosis/subgraphs/name/stakewise/prod` | +| **Hoodi** | `https://graphs-replica.stakewise.io/hoodi/subgraphs/name/stakewise/prod` | + ### Stage Mirrors the production schema but tracks the staging deployment - use it only when reproducing issues against a non-production environment. @@ -73,3 +81,11 @@ Mirrors the production schema but tracks the staging deployment - use it only wh | **Mainnet** | `https://graphs.stakewise.io/mainnet/subgraphs/name/stakewise/stage` | | **Gnosis** | `https://graphs.stakewise.io/gnosis/subgraphs/name/stakewise/stage` | | **Hoodi** | `https://graphs.stakewise.io/hoodi/subgraphs/name/stakewise/stage` | + +#### Fallback + +| Network | Endpoint | +|---------|----------| +| **Mainnet** | `https://graphs-replica.stakewise.io/mainnet/subgraphs/name/stakewise/stage` | +| **Gnosis** | `https://graphs-replica.stakewise.io/gnosis/subgraphs/name/stakewise/stage` | +| **Hoodi** | `https://graphs-replica.stakewise.io/hoodi/subgraphs/name/stakewise/stage` | diff --git a/src/graphql/subgraph/vault/vaultQuery.graphql b/src/graphql/subgraph/vault/vaultQuery.graphql index dd13f504..fa7d23c0 100644 --- a/src/graphql/subgraph/vault/vaultQuery.graphql +++ b/src/graphql/subgraph/vault/vaultQuery.graphql @@ -33,6 +33,7 @@ query Vault($address: ID!) { queuedShares exitingAssets lastFeePercent + subVaultsCount blocklistCount whitelistCount exitingTickets @@ -40,6 +41,7 @@ query Vault($address: ID!) { isCollateralized blocklistManager ejectingSubVault + subVaultsCurator validatorsManager subVaultsRegistry depositDataManager diff --git a/src/helpers/configs/gnosis.ts b/src/helpers/configs/gnosis.ts index 34227085..20bf4a3e 100644 --- a/src/helpers/configs/gnosis.ts +++ b/src/helpers/configs/gnosis.ts @@ -7,7 +7,10 @@ export default { network: constants.chains.gnosis, api: { backend: 'https://gnosis-api.stakewise.io/graphql', - subgraph: 'https://graphs.stakewise.io/gnosis/subgraphs/name/stakewise/prod', + subgraph: [ + 'https://graphs.stakewise.io/gnosis/subgraphs/name/stakewise/prod', + 'https://graphs-replica.stakewise.io/gnosis/subgraphs/name/stakewise/prod', + ], }, pages: { beaconchain: 'https://dora.gnosischain.com', diff --git a/src/helpers/configs/hoodi.ts b/src/helpers/configs/hoodi.ts index 8be6c6d3..4ec1b258 100644 --- a/src/helpers/configs/hoodi.ts +++ b/src/helpers/configs/hoodi.ts @@ -7,8 +7,10 @@ export default { network: constants.chains.hoodi, api: { backend: 'https://hoodi-api.stakewise.io/graphql', - // TODO change (+ change .graphqlconfig) - subgraph: 'https://graphs-replica.stakewise.io/hoodi/subgraphs/name/stakewise/stage', + subgraph: [ + 'https://graphs.stakewise.io/hoodi/subgraphs/name/stakewise/prod', + 'https://graphs-replica.stakewise.io/hoodi/subgraphs/name/stakewise/prod', + ], }, pages: { beaconchain: 'https://hoodi.beaconcha.in/', diff --git a/src/services/vault/requests/getVault/modifyVault.ts b/src/services/vault/requests/getVault/modifyVault.ts index d73cf2ef..6f23ca17 100644 --- a/src/services/vault/requests/getVault/modifyVault.ts +++ b/src/services/vault/requests/getVault/modifyVault.ts @@ -37,6 +37,7 @@ const modifyVault = (input: ModifyVaultInput): ModifiedVault => { lastFeePercent, whitelistCount, exitingTickets, + subVaultsCurator, ejectingSubVault, validatorsManager, subVaultsRegistry, @@ -67,6 +68,7 @@ const modifyVault = (input: ModifyVaultInput): ModifiedVault => { allocatorMaxBoostApy: Number(allocatorMaxBoostApy), whitelistManager: whitelister ? getAddress(whitelister) : '', ejectingSubVault: ejectingSubVault ? getAddress(ejectingSubVault) : '', + subVaultsCurator: subVaultsCurator ? getAddress(subVaultsCurator) : '', validatorsManager: validatorsManager ? getAddress(validatorsManager) : '', subVaultsRegistry: subVaultsRegistry ? getAddress(subVaultsRegistry) : '', depositDataManager: depositDataManager ? getAddress(depositDataManager) : '', From ef9fade74f3efba5bf3daebf642067e4b11d93e0 Mon Sep 17 00:00:00 2001 From: Andrey Kopylov Date: Thu, 21 May 2026 18:13:30 +0500 Subject: [PATCH 2/2] fix test --- src/services/vault/requests/getVault/modifyVault.spec.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/services/vault/requests/getVault/modifyVault.spec.ts b/src/services/vault/requests/getVault/modifyVault.spec.ts index 2e52bd5f..4079fdac 100644 --- a/src/services/vault/requests/getVault/modifyVault.spec.ts +++ b/src/services/vault/requests/getVault/modifyVault.spec.ts @@ -31,6 +31,8 @@ describe('modifyVault', () => { apy: '2.80', baseApy: '0.80', queuedShares: '0', + subVaultsCurator: '', + subVaultsCount: 0, blocklistCount: '0', whitelistCount: '0', totalAssets: '150000000000', @@ -78,6 +80,8 @@ describe('modifyVault', () => { tokenSymbol: 'mTKN', imageUrl: 'mockUrl', lastFeePercent: 0, + subVaultsCurator: '', + subVaultsCount: 0, lastFeeUpdateTimestamp: '0', allocatorMaxBoostApy: 123.2, isCollateralized: true,