From 05b02179c22e1f7028030db2f7374c18311f3ced Mon Sep 17 00:00:00 2001
From: Evgenii <68502706+EvgeniiVoznyuk@users.noreply.github.com>
Date: Tue, 30 Aug 2022 17:41:04 +0300
Subject: [PATCH 1/3] Fix/verif (#4)
* fix
* fixes
---
.../components/EverlendModalContent.tsx | 33 +++--
.../components/everlend/EverlendDeposit.tsx | 2 +-
.../components/everlend/EverlendWithdraw.tsx | 18 ++-
Strategies/protocols/everlend/depositTools.ts | 74 +++++------
Strategies/protocols/everlend/tools.ts | 118 ++++++++++++++----
.../protocols/everlend/useRewardProgram.ts | 7 +-
Strategies/types/types.ts | 2 +
hooks/useAccountInvestments/index.ts | 7 ++
hooks/useAccountInvestments/loadData/index.ts | 4 +-
.../loadData/loadEverlendStrategies.ts | 77 ++++++++----
package.json | 1 +
yarn.lock | 12 ++
12 files changed, 245 insertions(+), 110 deletions(-)
diff --git a/Strategies/components/EverlendModalContent.tsx b/Strategies/components/EverlendModalContent.tsx
index 4d37270ef0..867ec2de39 100644
--- a/Strategies/components/EverlendModalContent.tsx
+++ b/Strategies/components/EverlendModalContent.tsx
@@ -2,6 +2,7 @@ import ButtonGroup from '@components/ButtonGroup'
import { useEffect, useState } from 'react'
import { TreasuryStrategy } from 'Strategies/types/types'
import {
+ calcUserTokenBalanceByPoolToken,
CreateEverlendProposal,
lamportsToSol,
} from 'Strategies/protocols/everlend/tools'
@@ -18,7 +19,12 @@ enum Tabs {
}
interface IProps {
- proposedInvestment: TreasuryStrategy & { poolMint: string }
+ proposedInvestment: TreasuryStrategy & {
+ poolMint: string
+ rateEToken: number
+ decimals: number
+ poolPubKey: string
+ }
handledMint: string
createProposalFcn: CreateEverlendProposal
governedTokenAccount: AssetAccount
@@ -41,40 +47,45 @@ const EverlendModalContent = ({
? governedTokenAccount!.pubkey
: governedTokenAccount!.extensions!.token!.account.owner
- console.log('proposed', governedTokenAccount!.pubkey.toString())
-
useEffect(() => {
const loadMaxAmount = async () => {
- const tokenMintATA = await findAssociatedTokenAccount(
+ console.log('owner', owner.toString())
+ const poolMintATA = await findAssociatedTokenAccount(
owner,
new PublicKey(proposedInvestment.poolMint)
)
+ console.log('tokenmintata', poolMintATA.toString())
let poolMintATABalance = 0
let tokenMintATABalance = 0
try {
const fetchedTokenMintATABalance = await connection.current.getTokenAccountBalance(
- tokenMintATA
+ poolMintATA
+ )
+
+ poolMintATABalance = calcUserTokenBalanceByPoolToken(
+ Number(fetchedTokenMintATABalance.value.uiAmount),
+ proposedInvestment.decimals,
+ proposedInvestment.rateEToken,
+ false
)
- tokenMintATABalance = Number(fetchedTokenMintATABalance.value.uiAmount)
} catch (e) {
console.log(e)
}
try {
if (isSol) {
const fetchedBalance = await connection.current.getBalance(owner)
- poolMintATABalance = lamportsToSol(fetchedBalance)
- console.log(owner.toString())
+ tokenMintATABalance = lamportsToSol(fetchedBalance)
} else {
const fetchedBalance = await connection.current.getTokenAccountBalance(
governedTokenAccount!.pubkey
)
- poolMintATABalance = Number(fetchedBalance.value.uiAmount)
+ tokenMintATABalance = Number(fetchedBalance.value.uiAmount)
}
} catch (e) {
console.log(e)
}
- setDepositedAmount(tokenMintATABalance)
- setMaxDepositAmount(poolMintATABalance)
+ setDepositedAmount(poolMintATABalance)
+ setMaxDepositAmount(tokenMintATABalance)
}
loadMaxAmount()
}, [proposedInvestment, handledMint])
diff --git a/Strategies/components/everlend/EverlendDeposit.tsx b/Strategies/components/everlend/EverlendDeposit.tsx
index defdc55a08..2ca1681ddc 100644
--- a/Strategies/components/everlend/EverlendDeposit.tsx
+++ b/Strategies/components/everlend/EverlendDeposit.tsx
@@ -120,7 +120,7 @@ const EverlendDeposit = ({
description: proposalInfo.description,
amountFmt: String(amount),
bnAmount: getMintNaturalAmountFromDecimalAsBN(
- amount as number,
+ amount,
governedTokenAccount.extensions.mint!.account.decimals
),
action: 'Deposit',
diff --git a/Strategies/components/everlend/EverlendWithdraw.tsx b/Strategies/components/everlend/EverlendWithdraw.tsx
index 6c96ce5670..43762d3a11 100644
--- a/Strategies/components/everlend/EverlendWithdraw.tsx
+++ b/Strategies/components/everlend/EverlendWithdraw.tsx
@@ -23,9 +23,15 @@ import { precision } from '@utils/formatting'
import { validateInstruction } from '@utils/instructionTools'
import useGovernanceAssets from '@hooks/useGovernanceAssets'
import Loading from '@components/Loading'
+import { TreasuryStrategy } from '../../types/types'
interface IProps {
- proposedInvestment
+ proposedInvestment: TreasuryStrategy & {
+ poolMint: string
+ rateEToken: number
+ decimals: number
+ poolPubKey: string
+ }
handledMint: string
createProposalFcn: CreateEverlendProposal
governedTokenAccount: AssetAccount
@@ -108,6 +114,12 @@ const EverlendWithdraw = ({
? realm!.account.config.councilMint
: undefined
+ const amountToRate = Number(
+ (amount * proposedInvestment.rateEToken).toFixed(
+ proposedInvestment.decimals
+ )
+ )
+
const proposalAddress = await createProposalFcn(
rpcContext,
{
@@ -115,7 +127,7 @@ const EverlendWithdraw = ({
description: proposalInfo.description,
amountFmt: String(amount),
bnAmount: getMintNaturalAmountFromDecimalAsBN(
- amount as number,
+ amountToRate,
governedTokenAccount.extensions.mint!.account.decimals
),
action: 'Withdraw',
@@ -207,7 +219,7 @@ const EverlendWithdraw = ({
-
Proposed Deposit
+
Proposed Withdraw
{amount?.toLocaleString() || (
Enter an amount
diff --git a/Strategies/protocols/everlend/depositTools.ts b/Strategies/protocols/everlend/depositTools.ts
index d996af32b8..deef53fc98 100644
--- a/Strategies/protocols/everlend/depositTools.ts
+++ b/Strategies/protocols/everlend/depositTools.ts
@@ -48,6 +48,7 @@ import {
} from './constants'
import { getInitMiningTx } from './useRewardProgram'
import { SignerWalletAdapter } from '@solana/wallet-adapter-base'
+import { syncNative } from '@solendprotocol/solend-sdk'
export type ActionOptions = {
/** the JSON RPC connection instance. */
@@ -59,6 +60,7 @@ export type ActionOptions = {
export type ActionResult = {
/** the prepared transaction, ready for signing and sending. */
tx: Transaction
+ setupTx: Transaction
/** the additional key pairs which may be needed for signing and sending transactions. */
keypairs?: Record
}
@@ -84,6 +86,7 @@ export const prepareSolDepositTx = async (
])
const tx = new Transaction()
+ const setupTx = new Transaction()
const registryPoolConfig = await findRegistryPoolConfigAccount(registry, pool)
// Wrapping SOL
@@ -98,7 +101,7 @@ export const prepareSolDepositTx = async (
payerPublicKey,
payerPublicKey
)
- tx.add(createAtaInst)
+ setupTx.add(createAtaInst)
}
const userWSOLAccountInfo = await connection.getAccountInfo(destination)
@@ -111,16 +114,16 @@ export const prepareSolDepositTx = async (
lamports: (userWSOLAccountInfo ? 0 : rentExempt) + amount.toNumber(),
})
- tx.add(transferLamportsIx)
+ setupTx.add(transferLamportsIx)
- // const syncIx = syncNative(source)
- // tx.add(syncIx)
+ const syncIx = syncNative(source)
+ tx.add(syncIx)
// Create destination account for pool mint if doesn't exist
destination =
destination ?? (await findAssociatedTokenAccount(payerPublicKey, poolMint))
!(await connection.getAccountInfo(destination)) &&
- tx.add(
+ setupTx.add(
new CreateAssociatedTokenAccount(
{ feePayer: payerPublicKey },
{
@@ -152,7 +155,7 @@ export const prepareSolDepositTx = async (
)
)
- return { tx }
+ return { tx, setupTx }
}
export async function handleEverlendAction(
@@ -246,7 +249,7 @@ export async function handleEverlendAction(
})
})
- if (isSol && initMiningTx) {
+ if (initMiningTx.instructions.length) {
initMiningTx.instructions.map((instruction) => {
setupInsts.push({
data: getInstructionDataFromBase64(
@@ -289,37 +292,23 @@ export async function handleEverlendAction(
const proposalsAdresses: PublicKey[] = []
- if (setupInsts.length) {
- const setupProposalAddress = await createProposal(
- rpcContext,
- realm,
- matchedTreasury.governance!.pubkey,
- tokenOwnerRecord,
- 'Setup init mining for Everlend SOL pool',
- 'You need to sign init mining tx before you create deposit proposal',
- governingTokenMint,
- proposalIndex,
- [...setupInsts],
- isDraft,
- client
- )
- proposalsAdresses.push(setupProposalAddress)
- } else {
- const proposalAddress = await createProposal(
- rpcContext,
- realm,
- matchedTreasury.governance!.pubkey,
- tokenOwnerRecord,
- form.title,
- form.description,
- governingTokenMint,
- proposalIndex,
- [...insts, ...cleanupInsts],
- isDraft,
- client
- )
- proposalsAdresses.push(proposalAddress)
- }
+ // eslint-disable-next-line no-debugger
+ debugger
+
+ const proposalAddress = await createProposal(
+ rpcContext,
+ realm,
+ matchedTreasury.governance!.pubkey,
+ tokenOwnerRecord,
+ form.title,
+ form.description,
+ governingTokenMint,
+ proposalIndex,
+ [...setupInsts, ...insts, ...cleanupInsts],
+ isDraft,
+ client
+ )
+ proposalsAdresses.push(proposalAddress)
return proposalsAdresses
}
@@ -353,13 +342,14 @@ export async function handleEverlendDeposit(
wallet.publicKey!,
owner,
connection,
- wallet
+ wallet,
+ CONFIG
)
initMiningTx.add(initTx)
}
if (isSol) {
- const { tx: depositTx } = await prepareSolDepositTx(
+ const { tx: depositTx, setupTx } = await prepareSolDepositTx(
{ connection: connection.current, payerPublicKey: owner },
new PublicKey(poolPubKey),
REGISTRY,
@@ -372,6 +362,7 @@ export async function handleEverlendDeposit(
destination
)
actionTx.add(depositTx)
+ initMiningTx.add(setupTx)
} else {
const { tx: depositTx } = await prepareDepositTx(
{ connection: connection.current, payerPublicKey: owner },
@@ -384,11 +375,10 @@ export async function handleEverlendDeposit(
rewardAccount,
source
)
- actionTx.add(initMiningTx)
actionTx.add(depositTx)
}
- return isSol ? { actionTx, initMiningTx } : { actionTx }
+ return { actionTx, initMiningTx }
}
export async function handleEverlendWithdraw(
diff --git a/Strategies/protocols/everlend/tools.ts b/Strategies/protocols/everlend/tools.ts
index 926ffc8d67..7633155981 100644
--- a/Strategies/protocols/everlend/tools.ts
+++ b/Strategies/protocols/everlend/tools.ts
@@ -9,7 +9,7 @@ import { BN } from '@project-serum/anchor'
import { AssetAccount } from '@utils/uiTypes/assets'
import { ConnectionContext } from '@utils/connection'
import { VotingClient } from '@utils/uiTypes/VotePlugin'
-
+import numbro from 'numbro'
import tokenService from '@utils/services/token'
import { Pool } from '@everlend/general-pool'
import axios from 'axios'
@@ -22,6 +22,7 @@ import {
} from './constants'
import { handleEverlendAction } from './depositTools'
import { SignerWalletAdapter } from '@solana/wallet-adapter-base'
+import { deserialize } from '@everlend/common'
export const EVERLEND = 'Everlend'
async function getAPYs(isDev = false) {
@@ -44,28 +45,58 @@ async function getStrategies(connection: ConnectionContext) {
const apys = await getAPYs(isDev)
- const strategies = response.map((pool) => {
- const { tokenMint, poolMint } = pool.data
- const tokenInfo = tokenService.getTokenInfo(tokenMint.toString())
- const apy =
- apys.data.find((apy) => apy.token === tokenInfo?.symbol)?.supply_apy *
- 100 ?? 0
- return {
- handledMint: tokenMint.toString(),
- createProposalFcn: handleEverlendAction,
- protocolLogoSrc: '/realms/Everlend/img/logo.png',
- protocolName: 'Everlend',
- protocolSymbol: 'evd',
- isGenericItem: false,
- poolMint: poolMint.toString(),
- poolPubKey: pool.publicKey.toString(),
- strategyDescription: '',
- strategyName: 'Deposit',
- handledTokenSymbol: tokenInfo?.symbol,
- handledTokenImgSrc: tokenInfo?.logoURI,
- apy: apy.toFixed(2).concat('%'),
- }
- })
+ const strategies = await Promise.all(
+ response.map(async (pool) => {
+ const {
+ tokenMint,
+ poolMint,
+ tokenAccount,
+ totalAmountBorrowed,
+ } = pool.data
+ const tokenInfo = tokenService.getTokenInfo(tokenMint.toString())
+ const apy =
+ apys.data.find((apy) => apy.token === tokenInfo?.symbol)?.supply_apy *
+ 100 ?? 0
+
+ const tokenAccountBalance = await connection.current.getTokenAccountBalance(
+ tokenAccount
+ )
+ const poolMintInfoRaw = await connection.current.getAccountInfo(
+ poolMint
+ )
+
+ let poolMintInfoBuffer
+ let poolMintInfo
+ if (poolMintInfoRaw) {
+ poolMintInfoBuffer = Buffer.from(poolMintInfoRaw?.data)
+ poolMintInfo = deserialize(poolMintInfoBuffer)
+ }
+
+ const rateEToken = calcETokenRate(
+ poolMintInfo.supply.toNumber(),
+ Number(tokenAccountBalance.value.amount) +
+ totalAmountBorrowed.toNumber()
+ )
+
+ return {
+ handledMint: tokenMint.toString(),
+ createProposalFcn: handleEverlendAction,
+ protocolLogoSrc: '/realms/Everlend/img/logo.png',
+ protocolName: 'Everlend',
+ protocolSymbol: 'evd',
+ isGenericItem: false,
+ poolMint: poolMint.toString(),
+ poolPubKey: pool.publicKey.toString(),
+ strategyDescription: '',
+ strategyName: 'Deposit',
+ handledTokenSymbol: tokenInfo?.symbol,
+ handledTokenImgSrc: tokenInfo?.logoURI,
+ apy: apy.toFixed(2).concat('%'),
+ rateEToken,
+ decimals: poolMintInfo.decimals,
+ }
+ })
+ )
return strategies
} catch (e) {
@@ -107,3 +138,44 @@ export type CreateEverlendProposal = (
wallet: SignerWalletAdapter,
client?: VotingClient
) => Promise
+
+export const calcETokenRate = (
+ collateralTotalMintSupply: number,
+ totalPoolSize: number
+): number => {
+ const rate = collateralTotalMintSupply / totalPoolSize
+
+ return Number.isNaN(rate) || !Number.isFinite(rate) ? 1 : rate
+}
+
+export const calcUserTokenBalanceByPoolToken = (
+ poolTokenAmount: number,
+ tokenDecimals = 9,
+ eTokenRate: number,
+ ceil = true
+): number => {
+ const tokenBalanceRaw = poolTokenAmount / eTokenRate
+ const decimalMultiplier = 10 ** tokenDecimals
+ const tokenBalanceByDecimalMultiplier = tokenBalanceRaw * decimalMultiplier
+
+ return (
+ (ceil
+ ? Math.ceil(tokenBalanceByDecimalMultiplier)
+ : Math.round(tokenBalanceByDecimalMultiplier)) / decimalMultiplier
+ )
+}
+
+export const convertToCurrency = (
+ amount: number,
+ rate: number,
+ mantissa?: number
+): number => {
+ if (mantissa) {
+ return Number(
+ numbro(amount * rate).format({
+ mantissa,
+ })
+ )
+ }
+ return amount * rate
+}
diff --git a/Strategies/protocols/everlend/useRewardProgram.ts b/Strategies/protocols/everlend/useRewardProgram.ts
index 70731ce731..a87f546c86 100644
--- a/Strategies/protocols/everlend/useRewardProgram.ts
+++ b/Strategies/protocols/everlend/useRewardProgram.ts
@@ -7,7 +7,7 @@ import {
SYSVAR_RENT_PUBKEY,
Transaction,
} from '@solana/web3.js'
-import { CONFIG_MAINNET as CONFIG, REWARD_PROGRAM_ID } from './constants'
+import { REWARD_PROGRAM_ID } from './constants'
import { ConnectionContext } from '@utils/connection'
import { SignerWalletAdapter } from '@solana/wallet-adapter-base'
@@ -17,7 +17,8 @@ const getInitMiningTx = async (
walletPubKey: PublicKey,
owner: PublicKey,
connection: ConnectionContext,
- wallet: SignerWalletAdapter
+ wallet: SignerWalletAdapter,
+ CONFIG: PublicKey
): Promise => {
const provider = new anchor.AnchorProvider(
connection.current,
@@ -41,7 +42,7 @@ const getInitMiningTx = async (
rewardPool,
mining: rewardAccount,
user: owner,
- payer: walletPubKey,
+ payer: owner,
systemProgram: SystemProgram.programId,
rent: SYSVAR_RENT_PUBKEY,
},
diff --git a/Strategies/types/types.ts b/Strategies/types/types.ts
index fd65bd8825..51b1f7c0a1 100644
--- a/Strategies/types/types.ts
+++ b/Strategies/types/types.ts
@@ -46,6 +46,8 @@ export type SolendStrategy = TreasuryStrategy & {
export type EverlendStrategy = TreasuryStrategy & {
poolMint: string
+ decimals: number
+ rateEToken: number
}
export type HandleCreateProposalWithStrategy = (
diff --git a/hooks/useAccountInvestments/index.ts b/hooks/useAccountInvestments/index.ts
index 18af0e600e..49cc166b97 100644
--- a/hooks/useAccountInvestments/index.ts
+++ b/hooks/useAccountInvestments/index.ts
@@ -56,6 +56,12 @@ export function useAccountInvestments(args: Args) {
const tokenAmount = args.asset.count
const governanceAddress = args.governanceAddress
+ const owner =
+ args.asset.type === AssetType.Sol
+ ? new PublicKey(tokenAddress)
+ : // @ts-ignore
+ args.asset!.raw?.extensions?.token!.account!.owner
+
const strategyMintAddress =
args.asset.type === AssetType.Sol ? WSOL_MINT : args.asset.mintAddress
@@ -105,6 +111,7 @@ export function useAccountInvestments(args: Args) {
(x) => x.protocolName === SOLEND
).length,
mangoAccounts: mangoAccounts || [],
+ owner,
})
.then((activeInvestments) => {
const result = {
diff --git a/hooks/useAccountInvestments/loadData/index.ts b/hooks/useAccountInvestments/loadData/index.ts
index 98b36b3f20..fc113e7adf 100644
--- a/hooks/useAccountInvestments/loadData/index.ts
+++ b/hooks/useAccountInvestments/loadData/index.ts
@@ -1,13 +1,12 @@
import type { BigNumber } from 'bignumber.js'
import type { Connection } from '@solana/web3.js'
import type { MangoAccount } from '@blockworks-foundation/mango-client'
-
import { MarketStore } from 'Strategies/store/marketStore'
import { TreasuryStrategy } from 'Strategies/types/types'
-
import loadMangoStrategies from './loadMangoStrategies'
import loadSolendStrategies from './loadSolendStrategies'
import loadEverlendStrategies from './loadEverlendStrategies'
+import { PublicKey } from '@solana/web3.js'
export default function loadData(args: {
connection: Connection
@@ -19,6 +18,7 @@ export default function loadData(args: {
strategies: TreasuryStrategy[]
strategyMintAddress: string
tokenAddress: string
+ owner?: PublicKey
tokenAmount: BigNumber
}): Promise<(TreasuryStrategy & { investedAmount?: number })[]> {
return Promise.all([
diff --git a/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts b/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts
index 415ee4a078..6bf3693fa5 100644
--- a/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts
+++ b/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts
@@ -1,7 +1,10 @@
import { Connection, PublicKey } from '@solana/web3.js'
import { findAssociatedTokenAccount } from '@everlend/common'
-import { EVERLEND } from 'Strategies/protocols/everlend/tools'
+import {
+ calcUserTokenBalanceByPoolToken,
+ EVERLEND,
+} from 'Strategies/protocols/everlend/tools'
import { TreasuryStrategy, EverlendStrategy } from 'Strategies/types/types'
function isEverlendStrategy(
@@ -10,33 +13,57 @@ function isEverlendStrategy(
return strategy.protocolName === EVERLEND
}
+const notNull = (value: TValue | null): value is TValue => {
+ return value !== null
+}
+
export default async function loadEverlendStrategies(args: {
connection: Connection
strategies: TreasuryStrategy[]
tokenAddress: string
-}): Promise<(TreasuryStrategy & { investedAmount: number })[]> {
- const strategy: EverlendStrategy | undefined = args.strategies.filter(
+ owner?: PublicKey
+}): Promise<(EverlendStrategy & { investedAmount: number })[]> {
+ const strategys: (EverlendStrategy | undefined)[] = args.strategies.filter(
isEverlendStrategy
- )[0]
- const tokenMintAta = strategy
- ? await findAssociatedTokenAccount(
- new PublicKey(args.tokenAddress),
- new PublicKey(strategy.poolMint)
- )
- : undefined
-
- const tokenMintATABalance = tokenMintAta
- ? await args.connection.getTokenAccountBalance(tokenMintAta)
- : undefined
-
- if (tokenMintATABalance?.value.uiAmount) {
- return [
- {
- ...strategy,
- investedAmount: Number(tokenMintATABalance.value.uiAmount),
- },
- ]
- }
-
- return []
+ )
+
+ if (!strategys) return []
+
+ const loadedStratagies = await Promise.all(
+ strategys.map(async (strategy) => {
+ const tokenMintAta =
+ strategy && args.owner
+ ? await findAssociatedTokenAccount(
+ args.owner,
+ new PublicKey(strategy.poolMint)
+ )
+ : undefined
+
+ let tokenMintATABalance = 0
+ console.log(args)
+
+ try {
+ const tokenMintATABalanceFetched = tokenMintAta
+ ? await args.connection.getTokenAccountBalance(tokenMintAta)
+ : 0
+ if (tokenMintATABalanceFetched) {
+ tokenMintATABalance = calcUserTokenBalanceByPoolToken(
+ Number(tokenMintATABalanceFetched.value.uiAmount),
+ strategy?.decimals,
+ Number(strategy?.rateEToken),
+ false
+ )
+ }
+ } catch (e) {
+ tokenMintATABalance = 0
+ }
+
+ return tokenMintATABalance
+ ? { ...strategy, investedAmount: tokenMintATABalance }
+ : null
+ })
+ )
+
+ // @ts-ignore
+ return loadedStratagies.filter(notNull)
}
diff --git a/package.json b/package.json
index b97392946e..2ae2aec7c7 100644
--- a/package.json
+++ b/package.json
@@ -47,6 +47,7 @@
"@next/bundle-analyzer": "^12.1.5",
"@nfteyez/sol-rayz": "^0.10.2",
"@nivo/bar": "^0.79.1",
+ "numbro": "^2.3.6",
"@nivo/core": "^0.79.0",
"@notifi-network/notifi-react-hooks": "0.18.2",
"@project-serum/anchor": "^0.24.2",
diff --git a/yarn.lock b/yarn.lock
index e6e434c795..3a7abd966d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6645,6 +6645,11 @@ bigint-buffer@^1.1.5:
dependencies:
bindings "^1.3.0"
+bignumber.js@^8.1.1:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885"
+ integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ==
+
bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.0.2:
version "9.0.2"
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673"
@@ -13356,6 +13361,13 @@ number-is-nan@^1.0.0:
resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+numbro@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.3.6.tgz#4bd622ebe59ccbc49dad365c5b9eed200781fa21"
+ integrity sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg==
+ dependencies:
+ bignumber.js "^8.1.1"
+
nwsapi@^2.2.0:
version "2.2.0"
resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz"
From 1d45b25a0b19675c72e28791478dadedfd09e1f2 Mon Sep 17 00:00:00 2001
From: Evgenii <68502706+EvgeniiVoznyuk@users.noreply.github.com>
Date: Tue, 30 Aug 2022 18:52:43 +0300
Subject: [PATCH 2/3] hotfix (#5)
---
hooks/useAccountInvestments/index.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hooks/useAccountInvestments/index.ts b/hooks/useAccountInvestments/index.ts
index 49cc166b97..cb5fb71256 100644
--- a/hooks/useAccountInvestments/index.ts
+++ b/hooks/useAccountInvestments/index.ts
@@ -60,7 +60,7 @@ export function useAccountInvestments(args: Args) {
args.asset.type === AssetType.Sol
? new PublicKey(tokenAddress)
: // @ts-ignore
- args.asset!.raw?.extensions?.token!.account!.owner
+ args.asset?.raw?.extensions?.token?.account?.owner
const strategyMintAddress =
args.asset.type === AssetType.Sol ? WSOL_MINT : args.asset.mintAddress
From cd6cca9a5bb563a00dc7df984231ee5bb99b0f81 Mon Sep 17 00:00:00 2001
From: Evgenii Voznyuk
Date: Thu, 1 Sep 2022 17:30:15 +0300
Subject: [PATCH 3/3] update general pool package
---
.../components/EverlendModalContent.tsx | 2 -
Strategies/protocols/everlend/depositTools.ts | 5 +--
.../loadData/loadEverlendStrategies.ts | 1 -
package.json | 2 +-
yarn.lock | 39 ++++---------------
5 files changed, 9 insertions(+), 40 deletions(-)
diff --git a/Strategies/components/EverlendModalContent.tsx b/Strategies/components/EverlendModalContent.tsx
index 867ec2de39..5e0ace6fd9 100644
--- a/Strategies/components/EverlendModalContent.tsx
+++ b/Strategies/components/EverlendModalContent.tsx
@@ -49,12 +49,10 @@ const EverlendModalContent = ({
useEffect(() => {
const loadMaxAmount = async () => {
- console.log('owner', owner.toString())
const poolMintATA = await findAssociatedTokenAccount(
owner,
new PublicKey(proposedInvestment.poolMint)
)
- console.log('tokenmintata', poolMintATA.toString())
let poolMintATABalance = 0
let tokenMintATABalance = 0
try {
diff --git a/Strategies/protocols/everlend/depositTools.ts b/Strategies/protocols/everlend/depositTools.ts
index deef53fc98..9b789add57 100644
--- a/Strategies/protocols/everlend/depositTools.ts
+++ b/Strategies/protocols/everlend/depositTools.ts
@@ -137,8 +137,7 @@ export const prepareSolDepositTx = async (
new DepositTx(
{ feePayer: payerPublicKey },
{
- registryPoolConfig,
- registry,
+ poolConfig: registryPoolConfig,
poolMarket,
pool,
source,
@@ -367,7 +366,6 @@ export async function handleEverlendDeposit(
const { tx: depositTx } = await prepareDepositTx(
{ connection: connection.current, payerPublicKey: owner },
new PublicKey(poolPubKey),
- REGISTRY,
amount,
REWARD_PROGRAM_ID,
CONFIG,
@@ -400,7 +398,6 @@ export async function handleEverlendWithdraw(
payerPublicKey: owner,
},
new PublicKey(poolPubKey),
- REGISTRY,
amount,
REWARD_PROGRAM_ID,
CONFIG,
diff --git a/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts b/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts
index 6bf3693fa5..28a4366608 100644
--- a/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts
+++ b/hooks/useAccountInvestments/loadData/loadEverlendStrategies.ts
@@ -40,7 +40,6 @@ export default async function loadEverlendStrategies(args: {
: undefined
let tokenMintATABalance = 0
- console.log(args)
try {
const tokenMintATABalanceFetched = tokenMintAta
diff --git a/package.json b/package.json
index e36dad16c0..1737cb2ea7 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,7 @@
"@emotion/react": "^11.9.0",
"@emotion/styled": "^11.8.1",
"@everlend/core": "^0.0.6",
- "@everlend/general-pool": "^0.0.22",
+ "@everlend/general-pool": "^0.0.23",
"@foresight-tmp/foresight-sdk": "^0.1.46",
"@friktion-labs/friktion-sdk": "^1.1.118",
"@headlessui/react": "^1.6.6",
diff --git a/yarn.lock b/yarn.lock
index 8616ea13b4..2c182716e9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2356,10 +2356,10 @@
"@project-serum/anchor" "0.24.2"
"@solana/spl-token" "^0.2.0"
-"@everlend/general-pool@^0.0.22":
- version "0.0.22"
- resolved "https://registry.yarnpkg.com/@everlend/general-pool/-/general-pool-0.0.22.tgz#428a04f605cc5cf8cebdd8973288fa286756d320"
- integrity sha512-B6FOC8Zhsm1R4ft7ZOoCLToJWNQHis4ngaIPsiS4IGQEUYUW4eduW3DJzvjIWwkpkZpkcXI+76evyH1Pxp3qcQ==
+"@everlend/general-pool@^0.0.23":
+ version "0.0.23"
+ resolved "https://registry.yarnpkg.com/@everlend/general-pool/-/general-pool-0.0.23.tgz#8f52bd28150f73bda021e4e6c286fe96f0f7061b"
+ integrity sha512-eIa/pGXHwJ72jJOiRFrHbQZ2y4wY0Z1ynmBpyC9FXY8O3YPHLtLPaRdXxGzO2uLEKJAxVLVmYHWlcKOL9DSGQQ==
dependencies:
"@everlend/common" "^0.0.3"
"@solana/spl-token" "^0.1.5"
@@ -4933,7 +4933,7 @@
superstruct "^0.14.2"
tweetnacl "^1.0.0"
-"@solana/web3.js@^1.15.0", "@solana/web3.js@^1.37.0":
+"@solana/web3.js@^1.15.0", "@solana/web3.js@^1.37.0", "@solana/web3.js@^1.48.0":
version "1.55.0"
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.55.0.tgz#9d7ceb7f71a7316b1e5dbd4434ef82f6537de5d9"
integrity sha512-hXEc5CtA/5tZMvwEy0Cv6iynBpWoSLk6ud2PmoiGfWrZXZqkrfgTPkgd4yBw+VNZJRBRMKVbs/P7kT1sBwZUrw==
@@ -5089,28 +5089,6 @@
superstruct "^0.14.2"
tweetnacl "^1.0.0"
-"@solana/web3.js@^1.48.0":
- version "1.55.0"
- resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.55.0.tgz#9d7ceb7f71a7316b1e5dbd4434ef82f6537de5d9"
- integrity sha512-hXEc5CtA/5tZMvwEy0Cv6iynBpWoSLk6ud2PmoiGfWrZXZqkrfgTPkgd4yBw+VNZJRBRMKVbs/P7kT1sBwZUrw==
- dependencies:
- "@babel/runtime" "^7.12.5"
- "@noble/ed25519" "^1.7.0"
- "@noble/hashes" "^1.1.2"
- "@noble/secp256k1" "^1.6.3"
- "@solana/buffer-layout" "^4.0.0"
- bigint-buffer "^1.1.5"
- bn.js "^5.0.0"
- borsh "^0.7.0"
- bs58 "^4.0.1"
- buffer "6.0.1"
- fast-stable-stringify "^1.0.0"
- jayson "^3.4.4"
- js-sha3 "^0.8.0"
- node-fetch "2"
- rpc-websockets "^7.5.0"
- superstruct "^0.14.2"
-
"@solendprotocol/solend-sdk@^0.4.4":
version "0.4.9"
resolved "https://registry.yarnpkg.com/@solendprotocol/solend-sdk/-/solend-sdk-0.4.9.tgz#c0e3f24148c4951bf0cfdf16c884bc4ffbb42b7b"
@@ -5191,9 +5169,6 @@
version "1.0.1"
resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371"
integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==
- dependencies:
- "@stablelib/binary" "^1.0.1"
- "@stablelib/wipe" "^1.0.1"
"@stablelib/constant-time@^1.0.1":
version "1.0.1"
@@ -8760,9 +8735,9 @@ dezalgo@1.0.3, dezalgo@^1.0.0:
asap "^2.0.0"
wrappy "1"
-"did-jwt@git+https://github.com/civicteam/did-jwt.git":
+"did-jwt@git+https://github.com/civicteam/did-jwt":
version "6.1.0"
- resolved "git+https://github.com/civicteam/did-jwt.git#d4e318df78bd88e3127e62784915c7a334881eb6"
+ resolved "git+https://github.com/civicteam/did-jwt#d4e318df78bd88e3127e62784915c7a334881eb6"
dependencies:
"@stablelib/ed25519" "^1.0.2"
"@stablelib/random" "^1.0.1"