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"