@kamino-finance/klend-sdk 2.10.11 → 2.10.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -141,6 +141,7 @@ const getUserLookupTableAddresses = (kaminoMarket, user, referrer, multiplyMints
141
141
  if (repayWithCollObligation) {
142
142
  const repayWithCollFarmUserStates = getRepayWithCollObligationFarmStateAddresses(kaminoMarket, repayWithCollObligation);
143
143
  addresses.push(...repayWithCollFarmUserStates);
144
+ addresses.push({ address: repayWithCollObligation.obligationAddress, log: 'repay with coll obligation' });
144
145
  }
145
146
  return addresses;
146
147
  });
@@ -1 +1 @@
1
- {"version":3,"file":"userMetadata.js","sourceRoot":"","sources":["../../src/utils/userMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PublicKey,\n TransactionInstruction,\n SYSVAR_RENT_PUBKEY,\n SystemProgram,\n Connection,\n GetProgramAccountsFilter,\n} from '@solana/web3.js';\nimport { KaminoMarket, KaminoObligation } from '../classes';\nimport {\n LeverageObligation,\n MultiplyObligation,\n WRAPPED_SOL_MINT,\n createLookupTableIx,\n extendLookupTableIxs,\n getAssociatedTokenAddress,\n initUserMetadata,\n referrerTokenStatePda,\n userMetadataPda,\n isNotNullPubkey,\n UserMetadata,\n PublicKeySet,\n} from '../lib';\nimport { farmsId } from '@hubbleprotocol/farms-sdk';\nimport { KaminoReserve } from '../classes/reserve';\n\nexport type KaminoUserMetadata = {\n address: PublicKey;\n state: UserMetadata;\n};\n\nexport const getUserLutAddressAndSetupIxns = async (\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n referrer: PublicKey = PublicKey.default,\n withExtendLut: boolean = true,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n repayWithCollObligation: KaminoObligation | undefined = undefined,\n payer: PublicKey = PublicKey.default\n): Promise<[PublicKey, TransactionInstruction[][]]> => {\n const [userMetadataAddress, userMetadataState] = await kaminoMarket.getUserMetadata(user);\n const initUserMetadataIxs: TransactionInstruction[] = [];\n let userLookupTableAddress: PublicKey;\n\n const referrerUserMetadata = referrer.equals(PublicKey.default)\n ? kaminoMarket.programId\n : (await kaminoMarket.getUserMetadata(referrer))[0];\n\n if (!userMetadataState) {\n const [createLutIx, lookupTableAddress] = await createLookupTableIx(kaminoMarket.getConnection(), user);\n userLookupTableAddress = lookupTableAddress;\n initUserMetadataIxs.push(createLutIx);\n initUserMetadataIxs.push(\n initUserMetadata(\n {\n userLookupTable: lookupTableAddress,\n },\n {\n owner: user,\n feePayer: payer.equals(PublicKey.default) ? user : payer,\n userMetadata: userMetadataAddress,\n referrerUserMetadata: referrerUserMetadata,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n },\n kaminoMarket.programId\n )\n );\n } else {\n userLookupTableAddress = userMetadataState.userLookupTable;\n }\n\n const setupUserMetadataIxs = [initUserMetadataIxs];\n\n if (withExtendLut) {\n const dedupUserLutAddresses = await getDedupUserLookupTableAddresses(\n kaminoMarket,\n userLookupTableAddress,\n user,\n referrer,\n multiplyMints,\n leverageMints,\n userMetadataState !== null,\n repayWithCollObligation\n );\n\n const extendLookupTableChunkIxs = extendLookupTableIxs(user, userLookupTableAddress, dedupUserLutAddresses, payer);\n\n for (const extendLutIx of extendLookupTableChunkIxs) {\n setupUserMetadataIxs.push([extendLutIx]);\n }\n }\n\n return [userLookupTableAddress, setupUserMetadataIxs];\n};\n\nconst getDedupUserLookupTableAddresses = async (\n kaminoMarket: KaminoMarket,\n table_pk: PublicKey,\n user: PublicKey,\n referrer: PublicKey,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n tableExists: boolean,\n repayWithCollObligation: KaminoObligation | undefined = undefined\n): Promise<PublicKey[]> => {\n const requiredAddresses = await getUserLookupTableAddresses(\n kaminoMarket,\n user,\n referrer,\n multiplyMints,\n leverageMints,\n repayWithCollObligation\n );\n\n if (tableExists) {\n const userLookupTable = (await kaminoMarket.getConnection().getAddressLookupTable(table_pk)).value?.state!;\n const addressesAndLogsNotInLut = requiredAddresses.filter(\n (addressAndLogs) => userLookupTable.addresses.filter((a) => a.equals(addressAndLogs.address)).length === 0\n );\n console.log('Addresses to be added in LUT:');\n const addressNotInLut = addressesAndLogsNotInLut.map((addressAndLogs) => {\n console.log(addressAndLogs.log);\n return addressAndLogs.address;\n });\n return new PublicKeySet(addressNotInLut).toArray();\n } else {\n const addressNotInLut = requiredAddresses.map((addressAndLogs) => {\n console.log(addressAndLogs.log);\n return addressAndLogs.address;\n });\n return new PublicKeySet(addressNotInLut).toArray();\n }\n};\n\nconst getUserLookupTableAddresses = async (\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n referrer: PublicKey,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n repayWithCollObligation: KaminoObligation | undefined = undefined\n): Promise<{ address: PublicKey; log: string }[]> => {\n const addresses: { address: PublicKey; log: string }[] = [];\n addresses.push({ address: user, log: 'user address' });\n const [userMetadataAddress] = userMetadataPda(user, kaminoMarket.programId);\n addresses.push({ address: userMetadataAddress, log: 'userMetadata address' });\n\n const allMints: PublicKey[] = [];\n multiplyMints.forEach(({ coll: collMint, debt: debtMint }) => {\n allMints.push(collMint);\n allMints.push(debtMint);\n });\n leverageMints.forEach(({ coll: collMint, debt: debtMint }) => {\n allMints.push(collMint);\n allMints.push(debtMint);\n });\n\n if (repayWithCollObligation) {\n repayWithCollObligation.borrows.forEach((borrow) => {\n allMints.push(borrow.mintAddress);\n });\n\n repayWithCollObligation.deposits.forEach((deposit) => {\n allMints.push(deposit.mintAddress);\n });\n }\n\n const dedupMints = [...new PublicKeySet(allMints).toArray()];\n const reserves: KaminoReserve[] = [];\n dedupMints.forEach((mint) => {\n const kaminoReserve = kaminoMarket.getReserveByMint(mint);\n if (kaminoReserve) {\n reserves.push(kaminoReserve);\n }\n });\n\n // reserve mint ATAs\n const mintsAtas: { address: PublicKey; log: string }[] = await Promise.all(\n dedupMints.map(async (mint) => {\n return { address: await getAssociatedTokenAddress(mint, user), log: 'ata for mint ' + mint.toString() };\n })\n );\n addresses.push(...mintsAtas);\n // ctoken ATAs\n const ctokenMintsAtas: { address: PublicKey; log: string }[] = await Promise.all(\n reserves.map(async (reserve) => {\n const ctokenMint = reserve.getCTokenMint();\n return {\n address: await getAssociatedTokenAddress(ctokenMint, user),\n log: 'ctoken ata for reserve ' + reserve.address.toString(),\n };\n })\n );\n addresses.push(...ctokenMintsAtas);\n // farm states\n const farmCollateralStates: PublicKey[] = reserves.map((reserve) => reserve.state.farmCollateral);\n const farmDebtStates: PublicKey[] = reserves.map((reserve) => reserve.state.farmDebt);\n const farmStates = new PublicKeySet(\n farmCollateralStates.concat(farmDebtStates).filter((address) => isNotNullPubkey(address))\n );\n const farmStatesAdressesAndLogs = farmStates.toArray().map((address) => {\n return { address: address, log: 'farm state' };\n });\n addresses.push(...farmStatesAdressesAndLogs);\n // referrer token states\n const referrerTokenStates: { address: PublicKey; log: string }[] = reserves.map((reserve) => {\n return {\n address: referrerTokenStatePda(referrer, reserve.address, kaminoMarket.programId)[0],\n log: 'referrer token state for reserve ' + reserve.address,\n };\n });\n if (!referrer.equals(PublicKey.default)) {\n addresses.push(...referrerTokenStates);\n }\n\n const [multiplyObligations, multiplyObligationsFarmUserStates] = getMultiplyObligationAndObligationFarmStateAddresses(\n kaminoMarket,\n user,\n multiplyMints\n );\n\n addresses.push(...multiplyObligations);\n addresses.push(...multiplyObligationsFarmUserStates);\n\n const [leverageObligations, leverageObligationsFarmUserStates] = getLeverageObligationAndObligationFarmStateAddresses(\n kaminoMarket,\n user,\n leverageMints\n );\n\n addresses.push(...leverageObligations);\n addresses.push(...leverageObligationsFarmUserStates);\n\n if (repayWithCollObligation) {\n const repayWithCollFarmUserStates = getRepayWithCollObligationFarmStateAddresses(\n kaminoMarket,\n repayWithCollObligation\n );\n addresses.push(...repayWithCollFarmUserStates);\n }\n\n return addresses;\n};\n\nfunction getMultiplyObligationAndObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n mints: { coll: PublicKey; debt: PublicKey }[]\n): [{ address: PublicKey; log: string }[], { address: PublicKey; log: string }[]] {\n const obligationPdas: { address: PublicKey; log: string }[] = [];\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n\n for (const { coll: collMint, debt: debtMint } of mints) {\n const collReserve = kaminoMarket.getReserveByMint(collMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtMint);\n const collMintString = collMint.toString();\n const debtMintString = debtMint.toString();\n if (collReserve && debtReserve) {\n const multiplyObligation = new MultiplyObligation(collMint, WRAPPED_SOL_MINT, kaminoMarket.programId);\n obligationPdas.push({\n address: multiplyObligation.toPda(kaminoMarket.getAddress(), user),\n log: 'multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n if (!collReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n collReserve.state.farmCollateral!,\n multiplyObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'collReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n if (!debtReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n debtReserve.state.farmDebt!,\n multiplyObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'debtReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n }\n }\n\n return [obligationPdas, farmUserStates];\n}\n\nfunction getLeverageObligationAndObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n mints: { coll: PublicKey; debt: PublicKey }[]\n): [{ address: PublicKey; log: string }[], { address: PublicKey; log: string }[]] {\n const obligationPdas: { address: PublicKey; log: string }[] = [];\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n\n for (const { coll: collMint, debt: debtMint } of mints) {\n const collReserve = kaminoMarket.getReserveByMint(collMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtMint);\n const collMintString = collMint.toString();\n const debtMintString = debtMint.toString();\n if (collReserve && debtReserve) {\n const leverageObligation = new LeverageObligation(collMint, debtMint, kaminoMarket.programId);\n obligationPdas.push({\n address: leverageObligation.toPda(kaminoMarket.getAddress(), user),\n log: 'leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n if (!collReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n collReserve.state.farmCollateral!,\n leverageObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'collReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n if (!debtReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n debtReserve.state.farmDebt!,\n leverageObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'debtReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n }\n }\n\n return [obligationPdas, farmUserStates];\n}\n\nfunction getRepayWithCollObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n obligation: KaminoObligation\n): { address: PublicKey; log: string }[] {\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n const obligationString = obligation.obligationAddress.toString();\n\n obligation.borrows.forEach((borrow) => {\n const borrowReserve = kaminoMarket.getReserveByMint(borrow.mintAddress)!;\n if (!borrowReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(borrowReserve.state.farmDebt!, obligation.obligationAddress),\n log: 'debtReserve farmState for vanilla obligation: ' + obligationString,\n });\n }\n });\n\n obligation.deposits.forEach((deposit) => {\n const depositReserve = kaminoMarket.getReserveByMint(deposit.mintAddress)!;\n if (!depositReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(depositReserve.state.farmCollateral!, obligation.obligationAddress),\n log: 'collReserve farmState for vanilla obligation' + obligationString,\n });\n }\n });\n\n return farmUserStates;\n}\n\nconst BASE_SEED_USER_STATE = Buffer.from('user');\n\nconst getPdaFarmsUserState = (farm: PublicKey, obligation: PublicKey) =>\n PublicKey.findProgramAddressSync([BASE_SEED_USER_STATE, farm.toBytes(), obligation.toBytes()], farmsId)[0];\n\nexport async function getAllUserMetadatasWithFilter(\n connection: Connection,\n filter: GetProgramAccountsFilter[],\n programId: PublicKey\n): Promise<KaminoUserMetadata[]> {\n const filters = [\n {\n dataSize: UserMetadata.layout.span + 8,\n },\n ...filter,\n ];\n\n const userMetadatas = await connection.getProgramAccounts(programId, {\n filters,\n });\n\n return userMetadatas.map((userMetadata) => {\n if (userMetadata.account === null) {\n throw new Error('Invalid account');\n }\n if (!userMetadata.account.owner.equals(programId)) {\n throw new Error(\"account doesn't belong to this program\");\n }\n\n const userMetadataAccount = UserMetadata.decode(userMetadata.account.data);\n\n if (!userMetadataAccount) {\n throw Error('Could not parse user metadata.');\n }\n\n return { address: userMetadata.pubkey, state: userMetadataAccount };\n });\n}\n"]}
1
+ {"version":3,"file":"userMetadata.js","sourceRoot":"","sources":["../../src/utils/userMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PublicKey,\n TransactionInstruction,\n SYSVAR_RENT_PUBKEY,\n SystemProgram,\n Connection,\n GetProgramAccountsFilter,\n} from '@solana/web3.js';\nimport { KaminoMarket, KaminoObligation } from '../classes';\nimport {\n LeverageObligation,\n MultiplyObligation,\n WRAPPED_SOL_MINT,\n createLookupTableIx,\n extendLookupTableIxs,\n getAssociatedTokenAddress,\n initUserMetadata,\n referrerTokenStatePda,\n userMetadataPda,\n isNotNullPubkey,\n UserMetadata,\n PublicKeySet,\n} from '../lib';\nimport { farmsId } from '@hubbleprotocol/farms-sdk';\nimport { KaminoReserve } from '../classes/reserve';\n\nexport type KaminoUserMetadata = {\n address: PublicKey;\n state: UserMetadata;\n};\n\nexport const getUserLutAddressAndSetupIxns = async (\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n referrer: PublicKey = PublicKey.default,\n withExtendLut: boolean = true,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n repayWithCollObligation: KaminoObligation | undefined = undefined,\n payer: PublicKey = PublicKey.default\n): Promise<[PublicKey, TransactionInstruction[][]]> => {\n const [userMetadataAddress, userMetadataState] = await kaminoMarket.getUserMetadata(user);\n const initUserMetadataIxs: TransactionInstruction[] = [];\n let userLookupTableAddress: PublicKey;\n\n const referrerUserMetadata = referrer.equals(PublicKey.default)\n ? kaminoMarket.programId\n : (await kaminoMarket.getUserMetadata(referrer))[0];\n\n if (!userMetadataState) {\n const [createLutIx, lookupTableAddress] = await createLookupTableIx(kaminoMarket.getConnection(), user);\n userLookupTableAddress = lookupTableAddress;\n initUserMetadataIxs.push(createLutIx);\n initUserMetadataIxs.push(\n initUserMetadata(\n {\n userLookupTable: lookupTableAddress,\n },\n {\n owner: user,\n feePayer: payer.equals(PublicKey.default) ? user : payer,\n userMetadata: userMetadataAddress,\n referrerUserMetadata: referrerUserMetadata,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n },\n kaminoMarket.programId\n )\n );\n } else {\n userLookupTableAddress = userMetadataState.userLookupTable;\n }\n\n const setupUserMetadataIxs = [initUserMetadataIxs];\n\n if (withExtendLut) {\n const dedupUserLutAddresses = await getDedupUserLookupTableAddresses(\n kaminoMarket,\n userLookupTableAddress,\n user,\n referrer,\n multiplyMints,\n leverageMints,\n userMetadataState !== null,\n repayWithCollObligation\n );\n\n const extendLookupTableChunkIxs = extendLookupTableIxs(user, userLookupTableAddress, dedupUserLutAddresses, payer);\n\n for (const extendLutIx of extendLookupTableChunkIxs) {\n setupUserMetadataIxs.push([extendLutIx]);\n }\n }\n\n return [userLookupTableAddress, setupUserMetadataIxs];\n};\n\nconst getDedupUserLookupTableAddresses = async (\n kaminoMarket: KaminoMarket,\n table_pk: PublicKey,\n user: PublicKey,\n referrer: PublicKey,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n tableExists: boolean,\n repayWithCollObligation: KaminoObligation | undefined = undefined\n): Promise<PublicKey[]> => {\n const requiredAddresses = await getUserLookupTableAddresses(\n kaminoMarket,\n user,\n referrer,\n multiplyMints,\n leverageMints,\n repayWithCollObligation\n );\n\n if (tableExists) {\n const userLookupTable = (await kaminoMarket.getConnection().getAddressLookupTable(table_pk)).value?.state!;\n const addressesAndLogsNotInLut = requiredAddresses.filter(\n (addressAndLogs) => userLookupTable.addresses.filter((a) => a.equals(addressAndLogs.address)).length === 0\n );\n console.log('Addresses to be added in LUT:');\n const addressNotInLut = addressesAndLogsNotInLut.map((addressAndLogs) => {\n console.log(addressAndLogs.log);\n return addressAndLogs.address;\n });\n return new PublicKeySet(addressNotInLut).toArray();\n } else {\n const addressNotInLut = requiredAddresses.map((addressAndLogs) => {\n console.log(addressAndLogs.log);\n return addressAndLogs.address;\n });\n return new PublicKeySet(addressNotInLut).toArray();\n }\n};\n\nconst getUserLookupTableAddresses = async (\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n referrer: PublicKey,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n repayWithCollObligation: KaminoObligation | undefined = undefined\n): Promise<{ address: PublicKey; log: string }[]> => {\n const addresses: { address: PublicKey; log: string }[] = [];\n addresses.push({ address: user, log: 'user address' });\n const [userMetadataAddress] = userMetadataPda(user, kaminoMarket.programId);\n addresses.push({ address: userMetadataAddress, log: 'userMetadata address' });\n\n const allMints: PublicKey[] = [];\n multiplyMints.forEach(({ coll: collMint, debt: debtMint }) => {\n allMints.push(collMint);\n allMints.push(debtMint);\n });\n leverageMints.forEach(({ coll: collMint, debt: debtMint }) => {\n allMints.push(collMint);\n allMints.push(debtMint);\n });\n\n if (repayWithCollObligation) {\n repayWithCollObligation.borrows.forEach((borrow) => {\n allMints.push(borrow.mintAddress);\n });\n\n repayWithCollObligation.deposits.forEach((deposit) => {\n allMints.push(deposit.mintAddress);\n });\n }\n\n const dedupMints = [...new PublicKeySet(allMints).toArray()];\n const reserves: KaminoReserve[] = [];\n dedupMints.forEach((mint) => {\n const kaminoReserve = kaminoMarket.getReserveByMint(mint);\n if (kaminoReserve) {\n reserves.push(kaminoReserve);\n }\n });\n\n // reserve mint ATAs\n const mintsAtas: { address: PublicKey; log: string }[] = await Promise.all(\n dedupMints.map(async (mint) => {\n return { address: await getAssociatedTokenAddress(mint, user), log: 'ata for mint ' + mint.toString() };\n })\n );\n addresses.push(...mintsAtas);\n // ctoken ATAs\n const ctokenMintsAtas: { address: PublicKey; log: string }[] = await Promise.all(\n reserves.map(async (reserve) => {\n const ctokenMint = reserve.getCTokenMint();\n return {\n address: await getAssociatedTokenAddress(ctokenMint, user),\n log: 'ctoken ata for reserve ' + reserve.address.toString(),\n };\n })\n );\n addresses.push(...ctokenMintsAtas);\n // farm states\n const farmCollateralStates: PublicKey[] = reserves.map((reserve) => reserve.state.farmCollateral);\n const farmDebtStates: PublicKey[] = reserves.map((reserve) => reserve.state.farmDebt);\n const farmStates = new PublicKeySet(\n farmCollateralStates.concat(farmDebtStates).filter((address) => isNotNullPubkey(address))\n );\n const farmStatesAdressesAndLogs = farmStates.toArray().map((address) => {\n return { address: address, log: 'farm state' };\n });\n addresses.push(...farmStatesAdressesAndLogs);\n // referrer token states\n const referrerTokenStates: { address: PublicKey; log: string }[] = reserves.map((reserve) => {\n return {\n address: referrerTokenStatePda(referrer, reserve.address, kaminoMarket.programId)[0],\n log: 'referrer token state for reserve ' + reserve.address,\n };\n });\n if (!referrer.equals(PublicKey.default)) {\n addresses.push(...referrerTokenStates);\n }\n\n const [multiplyObligations, multiplyObligationsFarmUserStates] = getMultiplyObligationAndObligationFarmStateAddresses(\n kaminoMarket,\n user,\n multiplyMints\n );\n\n addresses.push(...multiplyObligations);\n addresses.push(...multiplyObligationsFarmUserStates);\n\n const [leverageObligations, leverageObligationsFarmUserStates] = getLeverageObligationAndObligationFarmStateAddresses(\n kaminoMarket,\n user,\n leverageMints\n );\n\n addresses.push(...leverageObligations);\n addresses.push(...leverageObligationsFarmUserStates);\n\n if (repayWithCollObligation) {\n const repayWithCollFarmUserStates = getRepayWithCollObligationFarmStateAddresses(\n kaminoMarket,\n repayWithCollObligation\n );\n addresses.push(...repayWithCollFarmUserStates);\n addresses.push({ address: repayWithCollObligation.obligationAddress, log: 'repay with coll obligation' });\n }\n\n return addresses;\n};\n\nfunction getMultiplyObligationAndObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n mints: { coll: PublicKey; debt: PublicKey }[]\n): [{ address: PublicKey; log: string }[], { address: PublicKey; log: string }[]] {\n const obligationPdas: { address: PublicKey; log: string }[] = [];\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n\n for (const { coll: collMint, debt: debtMint } of mints) {\n const collReserve = kaminoMarket.getReserveByMint(collMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtMint);\n const collMintString = collMint.toString();\n const debtMintString = debtMint.toString();\n if (collReserve && debtReserve) {\n const multiplyObligation = new MultiplyObligation(collMint, WRAPPED_SOL_MINT, kaminoMarket.programId);\n obligationPdas.push({\n address: multiplyObligation.toPda(kaminoMarket.getAddress(), user),\n log: 'multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n if (!collReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n collReserve.state.farmCollateral!,\n multiplyObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'collReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n if (!debtReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n debtReserve.state.farmDebt!,\n multiplyObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'debtReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n }\n }\n\n return [obligationPdas, farmUserStates];\n}\n\nfunction getLeverageObligationAndObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n mints: { coll: PublicKey; debt: PublicKey }[]\n): [{ address: PublicKey; log: string }[], { address: PublicKey; log: string }[]] {\n const obligationPdas: { address: PublicKey; log: string }[] = [];\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n\n for (const { coll: collMint, debt: debtMint } of mints) {\n const collReserve = kaminoMarket.getReserveByMint(collMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtMint);\n const collMintString = collMint.toString();\n const debtMintString = debtMint.toString();\n if (collReserve && debtReserve) {\n const leverageObligation = new LeverageObligation(collMint, debtMint, kaminoMarket.programId);\n obligationPdas.push({\n address: leverageObligation.toPda(kaminoMarket.getAddress(), user),\n log: 'leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n if (!collReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n collReserve.state.farmCollateral!,\n leverageObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'collReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n if (!debtReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n debtReserve.state.farmDebt!,\n leverageObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'debtReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n }\n }\n\n return [obligationPdas, farmUserStates];\n}\n\nfunction getRepayWithCollObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n obligation: KaminoObligation\n): { address: PublicKey; log: string }[] {\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n const obligationString = obligation.obligationAddress.toString();\n\n obligation.borrows.forEach((borrow) => {\n const borrowReserve = kaminoMarket.getReserveByMint(borrow.mintAddress)!;\n if (!borrowReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(borrowReserve.state.farmDebt!, obligation.obligationAddress),\n log: 'debtReserve farmState for vanilla obligation: ' + obligationString,\n });\n }\n });\n\n obligation.deposits.forEach((deposit) => {\n const depositReserve = kaminoMarket.getReserveByMint(deposit.mintAddress)!;\n if (!depositReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(depositReserve.state.farmCollateral!, obligation.obligationAddress),\n log: 'collReserve farmState for vanilla obligation' + obligationString,\n });\n }\n });\n\n return farmUserStates;\n}\n\nconst BASE_SEED_USER_STATE = Buffer.from('user');\n\nconst getPdaFarmsUserState = (farm: PublicKey, obligation: PublicKey) =>\n PublicKey.findProgramAddressSync([BASE_SEED_USER_STATE, farm.toBytes(), obligation.toBytes()], farmsId)[0];\n\nexport async function getAllUserMetadatasWithFilter(\n connection: Connection,\n filter: GetProgramAccountsFilter[],\n programId: PublicKey\n): Promise<KaminoUserMetadata[]> {\n const filters = [\n {\n dataSize: UserMetadata.layout.span + 8,\n },\n ...filter,\n ];\n\n const userMetadatas = await connection.getProgramAccounts(programId, {\n filters,\n });\n\n return userMetadatas.map((userMetadata) => {\n if (userMetadata.account === null) {\n throw new Error('Invalid account');\n }\n if (!userMetadata.account.owner.equals(programId)) {\n throw new Error(\"account doesn't belong to this program\");\n }\n\n const userMetadataAccount = UserMetadata.decode(userMetadata.account.data);\n\n if (!userMetadataAccount) {\n throw Error('Could not parse user metadata.');\n }\n\n return { address: userMetadata.pubkey, state: userMetadataAccount };\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kamino-finance/klend-sdk",
3
- "version": "2.10.11",
3
+ "version": "2.10.12",
4
4
  "description": "Typescript SDK for interacting with the Kamino Lending (klend) protocol",
5
5
  "repository": {
6
6
  "type": "git",