Skip to content

Commit

Permalink
[boost improve] updated boost
Browse files Browse the repository at this point in the history
  • Loading branch information
mike-diamond committed Feb 5, 2025
1 parent 0fab51d commit 6820de8
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 3 deletions.
5 changes: 5 additions & 0 deletions src/graphql/subgraph/boost/aavePositionsQuery.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
query AavePositions($proxyAddress: Bytes!) {
aavePositions(where: { user: $proxyAddress }) {
borrowedAssets
}
}
2 changes: 2 additions & 0 deletions src/graphql/subgraph/boost/boostMainDataQuery.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ query BoostMainData(
user: $userAddress
}
) {
proxy
borrowLtv
osTokenShares
exitingPercent
boostRewardAssets: assets
Expand Down
3 changes: 3 additions & 0 deletions src/graphql/subgraph/boost/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
export { fetchBoostMainDataQuery } from './boostMainDataQuery.graphql'
export type { BoostMainDataQueryPayload, BoostMainDataQueryVariables } from './boostMainDataQuery.graphql'

export { fetchAavePositionsQuery } from './aavePositionsQuery.graphql'
export type { AavePositionsQueryPayload, AavePositionsQueryVariables } from './aavePositionsQuery.graphql'

export { fetchBoostQueuePositionsQuery } from './boostQueuePositionsQuery.graphql'
export type { BoostQueuePositionsQueryPayload, BoostQueuePositionsQueryVariables } from './boostQueuePositionsQuery.graphql'
39 changes: 36 additions & 3 deletions src/methods/boost/requests/getData/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import graphql from '../../../../graphql'
import { wrapAbortPromise } from '../../../../modules/gql-module'
import { validateArgs, apiUrls, Network, constants } from '../../../../utils'
import { validateArgs, apiUrls, Network, constants, BorrowStatus } from '../../../../utils'


type GetBoostInput = {
Expand All @@ -13,9 +13,12 @@ type GetBoostInput = {
type Output = {
shares: bigint
vaultApy: number
totalShares: bigint
borrowStatus: BorrowStatus
rewardAssets: bigint
maxMintShares: bigint
exitingPercent: number
borrowedAssets: bigint
allocatorMaxBoostApy: number
osTokenHolderMaxBoostApy: number
}
Expand All @@ -28,23 +31,26 @@ const getData = async (values: GetBoostInput) => {
const boost: Output = {
shares: 0n,
vaultApy: 0,
totalShares: 0n,
borrowStatus: BorrowStatus.Healthy,
rewardAssets: 0n,
exitingPercent: 0,
maxMintShares: 0n,
borrowedAssets: 0n,
allocatorMaxBoostApy: 0,
osTokenHolderMaxBoostApy: 0,
}

if ([ Network.Mainnet, Network.Holesky ].includes(options.network)) {
const response = await graphql.subgraph.boost.fetchBoostMainDataQuery({
const boostMainData = await graphql.subgraph.boost.fetchBoostMainDataQuery({
url: apiUrls.getSubgraphqlUrl(options),
variables: {
userAddress: userAddress.toLowerCase(),
vaultAddress: vaultAddress.toLowerCase(),
},
})

const { leverageStrategyPositions, vaults, allocators } = response
const { leverageStrategyPositions, vaults, allocators } = boostMainData

if (!vaults.length) {
return boost
Expand All @@ -59,20 +65,47 @@ const getData = async (values: GetBoostInput) => {

const leverageStrategyPosition = leverageStrategyPositions[0]

const aaveData = await graphql.subgraph.boost.fetchAavePositionsQuery({
url: apiUrls.getSubgraphqlUrl(options),
variables: {
proxyAddress: (leverageStrategyPosition?.proxy || '').toLowerCase(),
},
})

const stakedAssets = BigInt(allocators[0]?.assets || 0)
const ltvPercent = BigInt(osTokenConfig.ltvPercent || 0)
const borrowLtv = Number(leverageStrategyPosition?.borrowLtv || 0)
const shares = BigInt(leverageStrategyPosition?.osTokenShares || 0)
const exitingPercent = Number(leverageStrategyPosition?.exitingPercent || 0)
const rewardAssets = BigInt(leverageStrategyPosition?.boostRewardAssets || 0)
const borrowedAssets = BigInt(aaveData?.aavePositions[0]?.borrowedAssets || 0)

const maxMintAssets = stakedAssets * ltvPercent / constants.blockchain.amount1
const maxMintShares = await contracts.base.mintTokenController.convertToShares(maxMintAssets)
const rewardShares = await contracts.base.mintTokenController.convertToShares(rewardAssets)

let borrowStatus: BorrowStatus

if (borrowLtv <= 0.938) {
borrowStatus = BorrowStatus.Healthy
}
else if (borrowLtv <= 0.945) {
borrowStatus = BorrowStatus.Moderate
}
else {
borrowStatus = BorrowStatus.Risky
}

const totalShares = shares + rewardShares

return {
shares,
totalShares,
borrowStatus,
rewardAssets,
maxMintShares,
exitingPercent,
borrowedAssets,
vaultApy: Number(apy),
allocatorMaxBoostApy: Number(allocatorMaxBoostApy),
osTokenHolderMaxBoostApy: Number(osTokenHolderMaxBoostApy),
Expand Down
6 changes: 6 additions & 0 deletions src/utils/enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,9 @@ export enum OsTokenPositionHealth {
Healthy,
Risky,
}

export enum BorrowStatus {
Healthy,
Moderate,
Risky,
}

0 comments on commit 6820de8

Please sign in to comment.