UNPKG

@mercurial-finance/frakt-sdk

Version:

Frakt SDK for interacting with frakt.xyz protocols

2,424 lines (2,415 loc) 166 kB
var __defProp = Object.defineProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; // src/common/constants.ts var SOL_TOKEN = { chainId: 101, address: "So11111111111111111111111111111111111111112", name: "SOL", decimals: 9, symbol: "SOL", logoURI: "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png", extensions: { coingeckoId: "solana" } }; // src/common/index.ts var common_exports = {}; __export(common_exports, { createAssociatedTokenAccountInstruction: () => createAssociatedTokenAccountInstruction, createFakeWallet: () => createFakeWallet, findAssociatedTokenAddress: () => findAssociatedTokenAddress, getSuggestedLoans: () => getSuggestedLoans, getTokenBalance: () => getTokenBalance }); import { web3, utils } from "@project-serum/anchor"; // src/common/classes/nodewallet.ts var NodeWallet = class { constructor(payer) { this.payer = payer; } async signTransaction(tx) { tx.partialSign(this.payer); return tx; } async signAllTransactions(txs) { return txs.map((tx) => { tx.partialSign(this.payer); return tx; }); } get publicKey() { return this.payer.publicKey; } }; // src/common/index.ts var createFakeWallet = () => { const leakedKp = web3.Keypair.fromSecretKey( Uint8Array.from([ 208, 175, 150, 242, 88, 34, 108, 88, 177, 16, 168, 75, 115, 181, 199, 242, 120, 4, 78, 75, 19, 227, 13, 215, 184, 108, 226, 53, 111, 149, 179, 84, 137, 121, 79, 1, 160, 223, 124, 241, 202, 203, 220, 237, 50, 242, 57, 158, 226, 207, 203, 188, 43, 28, 70, 110, 214, 234, 251, 15, 249, 157, 62, 80 ]) ); return new NodeWallet(leakedKp); }; var findAssociatedTokenAddress = async (walletAddress, tokenMintAddress) => (await web3.PublicKey.findProgramAddress( [walletAddress.toBuffer(), utils.token.TOKEN_PROGRAM_ID.toBuffer(), tokenMintAddress.toBuffer()], utils.token.ASSOCIATED_PROGRAM_ID ))[0]; var getTokenBalance = async (pubkey, connection) => { const balance = await connection.getTokenAccountBalance(pubkey); return parseInt(balance.value.amount); }; var createAssociatedTokenAccountInstruction = (associatedTokenAddress, payer, walletAddress, splTokenMintAddress) => { const keys = [ { pubkey: payer, isSigner: true, isWritable: true }, { pubkey: associatedTokenAddress, isSigner: false, isWritable: true }, { pubkey: walletAddress, isSigner: false, isWritable: false }, { pubkey: splTokenMintAddress, isSigner: false, isWritable: false }, { pubkey: web3.SystemProgram.programId, isSigner: false, isWritable: false }, { pubkey: utils.token.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, { pubkey: web3.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false } ]; return [ new web3.TransactionInstruction({ keys, programId: utils.token.ASSOCIATED_PROGRAM_ID, data: Buffer.from([]) }) ]; }; var getSuggestedLoans = (items, minValue) => { let sum = 0; let i = 0; const best = []; const cheapest = []; const safest = []; const sortedElementsByValue = items.sort((a, b) => { if (a.maxLoanValue !== b.maxLoanValue) { return a.maxLoanValue - b.maxLoanValue; } return a.interest - b.interest; }); const sortedElementsByInterest = items.sort((a, b) => { if (a.interest !== b.interest) { return a.interest - b.interest; } else if (a.maxLoanValue !== b.maxLoanValue) { return a.maxLoanValue - b.maxLoanValue; } return a.amountOfDays - b.amountOfDays; }); const priceBased = sortedElementsByInterest.filter((element) => element.maxLoanValue !== element.minLoanValue); const timeBased = sortedElementsByInterest.filter((element) => element.maxLoanValue === element.minLoanValue); const concated = priceBased.concat(timeBased); while (sum < minValue && i < sortedElementsByValue.length) { best.push({ nftMint: sortedElementsByValue[i].nftMint, loanValue: sortedElementsByValue[i].maxLoanValue, interest: sortedElementsByValue[i].interest, amountOfDays: sortedElementsByValue[i].amountOfDays }); sum += sortedElementsByValue[i].maxLoanValue; i += 1; } if (sum < minValue) { return { best, safest: best, cheapest: best }; } sum = 0; i = 0; while (sum < minValue && i < concated.length) { cheapest.push({ nftMint: concated[i].nftMint, loanValue: concated[i].maxLoanValue, interest: concated[i].interest, amountOfDays: concated[i].amountOfDays }); sum += concated[i].maxLoanValue; i += 1; } sum = 0; i = 0; while (sum < minValue && i < concated.length) { safest.push({ nftMint: concated[i].nftMint, loanValue: concated[i].minLoanValue, interest: concated[i].interest, amountOfDays: concated[i].amountOfDays }); sum += concated[i].minLoanValue; i += 1; } i = 0; while (sum < minValue) { sum += concated[i].maxLoanValue - safest[i].loanValue; safest[i].loanValue = concated[i].maxLoanValue; i += 1; } return { best, safest, cheapest }; }; // src/loans/index.ts var loans_exports = {}; __export(loans_exports, { anchorRawBNsAndPubkeysToNumsAndStrings: () => anchorRawBNsAndPubkeysToNumsAndStrings, approveLoanByAdmin: () => approveLoanByAdmin, calculateRewardDegod: () => calculateRewardDegod, claimGemFarm: () => claimGemFarm, claimGemFarmIx: () => claimGemFarmIx, closeLoanByAdmin: () => closeLoanByAdmin, decodeLoan: () => decodeLoan, decodeLotTicket: () => decodeLotTicket, decodedCollectionInfo: () => decodedCollectionInfo, decodedDeposit: () => decodedDeposit, decodedFarmer: () => decodedFarmer, decodedLendingStake: () => decodedLendingStake, decodedLoan: () => decodedLoan, decodedPriceBasedLiquidityPool: () => decodedPriceBasedLiquidityPool, decodedTimeBasedLiquidityPool: () => decodedTimeBasedLiquidityPool, depositLiquidity: () => depositLiquidity, getAllFarmAccounts: () => getAllFarmAccounts, getAllProgramAccounts: () => getAllProgramAccounts, getFarmAccount: () => getFarmAccount, getLotTicket: () => getLotTicket, getLotTicketByStaking: () => getLotTicketByStaking, getMetaplexEditionPda: () => getMetaplexEditionPda, getMostOptimalLoansClosestToNeededSolInBulk: () => getMostOptimalLoansClosestToNeededSolInBulk, harvestLiquidity: () => harvestLiquidity, initializeCollectionInfo: () => initializeCollectionInfo, initializeNftAttemptsByStaking: () => initializeNftAttemptsByStaking, initializePriceBasedLiquidityPool: () => initializePriceBasedLiquidityPool, initializeTimeBasedLiquidityPool: () => initializeTimeBasedLiquidityPool, liquidateLoanByAdmin: () => liquidateLoanByAdmin, liquidateLoanToRaffles: () => liquidateLoanToRaffles, objectBNsAndPubkeysToNums: () => objectBNsAndPubkeysToNums, paybackLoan: () => paybackLoan, paybackLoanIx: () => paybackLoanIx, paybackLoanWithGrace: () => paybackLoanWithGrace, paybackLoanWithGraceIx: () => paybackLoanWithGraceIx, proposeLoan: () => proposeLoan, proposeLoanIx: () => proposeLoanIx, putLoanToLiquidationRaffles: () => putLoanToLiquidationRaffles, redeemWinningLotTicket: () => redeemWinningLotTicket, rejectLoanByAdmin: () => rejectLoanByAdmin, returnAnchorProgram: () => returnAnchorProgram, revealLotTicketByAdmin: () => revealLotTicketByAdmin, stakeGemFarm: () => stakeGemFarm, stopLiquidationRaffles: () => stopLiquidationRaffles, unstakeGemFarm: () => unstakeGemFarm, unstakeGemFarmByAdmin: () => unstakeGemFarmByAdmin, unstakeGemFarmIx: () => unstakeGemFarmIx, unstakeLiquidity: () => unstakeLiquidity, updateCollectionInfo: () => updateCollectionInfo, updatePriceBasedLiquidityPool: () => updatePriceBasedLiquidityPool, updateTimeBasedLiquidityPool: () => updateTimeBasedLiquidityPool }); // src/loans/functions/private/approveLoanByAdmin.ts import { web3 as web34, BN as BN2 } from "@project-serum/anchor"; // src/loans/helpers.ts import { Program, AnchorProvider, web3 as web33, BN, utils as utils2 } from "@project-serum/anchor"; // src/loans/idl/nft_lending_v2.json var nft_lending_v2_default = { version: "0.1.0", name: "nft_lending_v2", instructions: [ { name: "proposeLoan", accounts: [ { name: "loan", isMut: true, isSigner: true }, { name: "user", isMut: true, isSigner: true }, { name: "nftUserTokenAccount", isMut: true, isSigner: false }, { name: "nftMint", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "admin", isMut: true, isSigner: false, docs: [ "CHECK" ] }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" }, { name: "isPriceBased", type: "bool" }, { name: "originalPriceFromUser", type: "u64" }, { name: "loanToValue", type: "u64" } ] }, { name: "approveLoanByAdmin", accounts: [ { name: "loan", isMut: true, isSigner: false }, { name: "user", isMut: true, isSigner: false }, { name: "liquidityPool", isMut: true, isSigner: false }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "collectionInfo", isMut: false, isSigner: false }, { name: "admin", isMut: true, isSigner: true }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "nftPrice", type: "u64" }, { name: "discount", type: "u64" } ] }, { name: "depositLiquidity", accounts: [ { name: "liquidityPool", isMut: true, isSigner: false }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "deposit", isMut: true, isSigner: false }, { name: "user", isMut: true, isSigner: true }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false } ], args: [ { name: "amount", type: "u64" } ] }, { name: "initializeCollectionInfo", accounts: [ { name: "collectionInfo", isMut: true, isSigner: true }, { name: "admin", isMut: true, isSigner: true }, { name: "creatorAddress", isMut: false, isSigner: false }, { name: "liquidityPool", isMut: false, isSigner: false }, { name: "pricingLookupAddress", isMut: false, isSigner: false }, { name: "royaltyAddress", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "CollectionInfoParams" } } ] }, { name: "updateCollectionInfo", accounts: [ { name: "collectionInfo", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true }, { name: "creatorAddress", isMut: false, isSigner: false }, { name: "liquidityPool", isMut: true, isSigner: false }, { name: "pricingLookupAddress", isMut: false, isSigner: false }, { name: "royaltyAddress", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "CollectionInfoParams" } } ] }, { name: "initializePriceBasedLiquidityPool", accounts: [ { name: "liquidityPool", isMut: true, isSigner: true }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true }, { name: "rent", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" }, { name: "params", type: { defined: "PriceBasedLiqPoolInputParams" } } ] }, { name: "updatePriceBasedLiquidityPool", accounts: [ { name: "liquidityPool", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true }, { name: "rent", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "PriceBasedLiqPoolInputParams" } } ] }, { name: "paybackLoan", accounts: [ { name: "loan", isMut: true, isSigner: false }, { name: "liquidityPool", isMut: true, isSigner: false }, { name: "collectionInfo", isMut: false, isSigner: false }, { name: "admin", isMut: true, isSigner: false, docs: [ "CHECK" ] }, { name: "user", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "nftUserTokenAccount", isMut: true, isSigner: false }, { name: "royaltyAddress", isMut: true, isSigner: false }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" }, { name: "amount", type: "u64" } ] }, { name: "rejectLoanByAdmin", accounts: [ { name: "loan", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "nftUserTokenAccount", isMut: true, isSigner: false }, { name: "user", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" } ] }, { name: "unstakeLiquidity", accounts: [ { name: "liquidityPool", isMut: true, isSigner: false }, { name: "deposit", isMut: true, isSigner: false }, { name: "user", isMut: true, isSigner: true }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: false, docs: [ "CHECK" ] }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "depositBump", type: "u8" }, { name: "amount", type: "u64" } ] }, { name: "harvestLiquidity", accounts: [ { name: "liquidityPool", isMut: true, isSigner: false }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "deposit", isMut: true, isSigner: false }, { name: "user", isMut: true, isSigner: true }, { name: "admin", isMut: true, isSigner: false, docs: [ "CHECK" ] }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "depositBump", type: "u8" } ] }, { name: "liquidateNftToRaffles", accounts: [ { name: "loan", isMut: true, isSigner: false }, { name: "liquidationLot", isMut: true, isSigner: true }, { name: "user", isMut: true, isSigner: false }, { name: "liquidator", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "vaultNftTokenAccount", isMut: true, isSigner: false }, { name: "nftUserTokenAccount", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" }, { name: "gracePeriod", type: "u64" } ] }, { name: "paybackWithGrace", accounts: [ { name: "loan", isMut: true, isSigner: false }, { name: "liquidationLot", isMut: true, isSigner: false }, { name: "liquidityPool", isMut: true, isSigner: false }, { name: "collectionInfo", isMut: false, isSigner: false }, { name: "admin", isMut: true, isSigner: false, docs: [ "CHECK" ] }, { name: "user", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "vaultNftTokenAccount", isMut: true, isSigner: false }, { name: "nftUserTokenAccount", isMut: true, isSigner: false }, { name: "royaltyAddress", isMut: true, isSigner: false }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" } ] }, { name: "getLotTicket", accounts: [ { name: "liquidationLot", isMut: true, isSigner: false }, { name: "nftAttempts", isMut: true, isSigner: false }, { name: "lotTicket", isMut: true, isSigner: true }, { name: "user", isMut: true, isSigner: true }, { name: "attemptsNftMint", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "nftUserTokenAccount", isMut: true, isSigner: false } ], args: [ { name: "nftAttemptsBump", type: "u8" } ] }, { name: "initializeNftAttempts", accounts: [ { name: "nftAttempts", isMut: true, isSigner: false }, { name: "user", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [] }, { name: "redeemWinningLotTicket", accounts: [ { name: "lotTicket", isMut: true, isSigner: false }, { name: "loan", isMut: true, isSigner: false }, { name: "liquidationLot", isMut: true, isSigner: false }, { name: "liquidityPool", isMut: true, isSigner: false }, { name: "collectionInfo", isMut: false, isSigner: false }, { name: "admin", isMut: true, isSigner: false, docs: [ "CHECK" ] }, { name: "user", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "vaultNftTokenAccount", isMut: true, isSigner: false }, { name: "nftUserTokenAccount", isMut: true, isSigner: false }, { name: "royaltyAddress", isMut: true, isSigner: false }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" } ] }, { name: "rejectLotTicketByAdmin", accounts: [ { name: "lotTicket", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true } ], args: [] }, { name: "revealLotTicketByAdmin", accounts: [ { name: "lotTicket", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true } ], args: [ { name: "isWinning", type: "bool" } ] }, { name: "withdrawFromReserveFund", accounts: [ { name: "liquidityPool", isMut: true, isSigner: false }, { name: "liqOwner", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [] }, { name: "stopLiquidationRafflesByAdmin", accounts: [ { name: "loan", isMut: true, isSigner: false }, { name: "liquidationLot", isMut: true, isSigner: false }, { name: "admin", isMut: true, isSigner: true, docs: [ "CHECK" ] }, { name: "nftMint", isMut: false, isSigner: false }, { name: "vaultNftTokenAccount", isMut: true, isSigner: false }, { name: "nftAdminTokenAccount", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" } ] }, { name: "putLoanToLiquidationRaffles", accounts: [ { name: "loan", isMut: true, isSigner: false }, { name: "liquidationLot", isMut: true, isSigner: true }, { name: "admin", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "vaultNftTokenAccount", isMut: true, isSigner: false }, { name: "nftAdminTokenAccount", isMut: true, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false } ], args: [ { name: "bumpPoolsAuth", type: "u8" }, { name: "gracePeriod", type: "u64" } ] }, { name: "initializeNftAttemptsByStaking", accounts: [ { name: "nftAttempts", isMut: true, isSigner: false }, { name: "user", isMut: true, isSigner: true }, { name: "nftMint", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "fraktNftStakeAccount", isMut: false, isSigner: false } ], args: [] }, { name: "getLotTicketByStaking", accounts: [ { name: "liquidationLot", isMut: true, isSigner: false }, { name: "nftAttempts", isMut: true, isSigner: false }, { name: "lotTicket", isMut: true, isSigner: true }, { name: "user", isMut: true, isSigner: true }, { name: "attemptsNftMint", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "fraktNftStakeAccount", isMut: false, isSigner: false } ], args: [ { name: "nftAttemptsBump", type: "u8" } ] }, { name: "stakeGemFarmStaking", accounts: [ { name: "user", isMut: true, isSigner: true }, { name: "lendingStake", isMut: true, isSigner: false }, { name: "gemFarm", isMut: false, isSigner: false }, { name: "farm", isMut: true, isSigner: false }, { name: "farmAuthority", isMut: true, isSigner: false }, { name: "farmer", isMut: true, isSigner: false }, { name: "loan", isMut: true, isSigner: false }, { name: "identity", isMut: true, isSigner: false }, { name: "bank", isMut: true, isSigner: false }, { name: "gemBank", isMut: false, isSigner: false }, { name: "feeAcc", isMut: true, isSigner: false }, { name: "vault", isMut: true, isSigner: false }, { name: "authority", isMut: false, isSigner: false }, { name: "gemBox", isMut: true, isSigner: false }, { name: "gemDepositReceipt", isMut: true, isSigner: false }, { name: "gemSource", isMut: true, isSigner: false }, { name: "gemMint", isMut: false, isSigner: false }, { name: "gemRarity", isMut: false, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "StakeGemFarmParams" } } ] }, { name: "unstakeGemFarmStaking", accounts: [ { name: "user", isMut: true, isSigner: true }, { name: "gemFarm", isMut: false, isSigner: false }, { name: "lendingStake", isMut: true, isSigner: false }, { name: "farm", isMut: true, isSigner: false }, { name: "farmAuthority", isMut: true, isSigner: false }, { name: "farmer", isMut: true, isSigner: false }, { name: "farmTreasury", isMut: true, isSigner: false }, { name: "loan", isMut: true, isSigner: false }, { name: "identity", isMut: true, isSigner: false }, { name: "bank", isMut: true, isSigner: false }, { name: "gemBank", isMut: false, isSigner: false }, { name: "feeAcc", isMut: true, isSigner: false }, { name: "vault", isMut: true, isSigner: false }, { name: "authority", isMut: false, isSigner: false }, { name: "gemBox", isMut: true, isSigner: false }, { name: "gemDepositReceipt", isMut: true, isSigner: false }, { name: "gemSource", isMut: true, isSigner: false }, { name: "gemMint", isMut: false, isSigner: false }, { name: "gemRarity", isMut: false, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "UnstakeGemFarmParams" } } ] }, { name: "claimGemFarmStaking", accounts: [ { name: "user", isMut: true, isSigner: true }, { name: "gemFarm", isMut: false, isSigner: false }, { name: "farm", isMut: true, isSigner: false }, { name: "farmAuthority", isMut: true, isSigner: false }, { name: "farmer", isMut: true, isSigner: false }, { name: "loan", isMut: true, isSigner: false }, { name: "gemMint", isMut: false, isSigner: false }, { name: "identity", isMut: true, isSigner: false }, { name: "rewardAPot", isMut: true, isSigner: false }, { name: "rewardAMint", isMut: true, isSigner: false }, { name: "rewardADestinationIdentity", isMut: true, isSigner: false }, { name: "rewardBPot", isMut: true, isSigner: false }, { name: "rewardBMint", isMut: true, isSigner: false }, { name: "rewardBDestinationIdentity", isMut: true, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "ClaimGemFarmParams" } } ] }, { name: "getClaimedGemFarmStaking", accounts: [ { name: "user", isMut: true, isSigner: true }, { name: "identity", isMut: true, isSigner: false }, { name: "lendingStake", isMut: true, isSigner: false }, { name: "loan", isMut: true, isSigner: false }, { name: "gemMint", isMut: false, isSigner: false }, { name: "rewardAMint", isMut: true, isSigner: false }, { name: "rewardADestinationIdentity", isMut: true, isSigner: false }, { name: "rewardADestination", isMut: true, isSigner: false }, { name: "rewardBMint", isMut: true, isSigner: false }, { name: "rewardBDestinationIdentity", isMut: true, isSigner: false }, { name: "rewardBDestination", isMut: true, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false } ], args: [ { name: "bumpAuth", type: "u8" } ] }, { name: "unstakeGemFarmStakingByAdmin", accounts: [ { name: "admin", isMut: true, isSigner: true }, { name: "gemFarm", isMut: false, isSigner: false }, { name: "lendingStake", isMut: true, isSigner: false }, { name: "farm", isMut: true, isSigner: false }, { name: "farmAuthority", isMut: true, isSigner: false }, { name: "farmer", isMut: true, isSigner: false }, { name: "farmTreasury", isMut: true, isSigner: false }, { name: "loan", isMut: true, isSigner: false }, { name: "identity", isMut: true, isSigner: false }, { name: "bank", isMut: true, isSigner: false }, { name: "gemBank", isMut: false, isSigner: false }, { name: "feeAcc", isMut: true, isSigner: false }, { name: "vault", isMut: true, isSigner: false }, { name: "authority", isMut: false, isSigner: false }, { name: "gemBox", isMut: true, isSigner: false }, { name: "gemDepositReceipt", isMut: true, isSigner: false }, { name: "gemSource", isMut: true, isSigner: false }, { name: "gemMint", isMut: false, isSigner: false }, { name: "gemRarity", isMut: false, isSigner: false }, { name: "communityPoolsAuthority", isMut: true, isSigner: false }, { name: "editionInfo", isMut: false, isSigner: false }, { name: "metadataProgram", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "rent", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "UnstakeGemFarmParams" } } ] } ], accounts: [ { name: "CollectionInfo", type: { kind: "struct", fields: [ { name: "creator", type: "publicKey" }, { name: "liquidityPool", type: "publicKey" }, { name: "pricingLookupAddress", type: "publicKey" }, { name: "royaltyAddress", type: "publicKey" }, { name: "royaltyFeeTime", type: "u64" }, { name: "royaltyFeePrice", type: "u64" }, { name: "loanToValue", type: "u64" }, { name: "collaterizationRate", type: "u64" }, { name: "availableLoanTypes", type: { defined: "AvailableLoanTypes" } }, { name: "expirationTime", type: "u64" } ] } }, { name: "Deposit", type: { kind: "struct", fields: [ { name: "liquidityPool", type: "publicKey" }, { name: "user", type: "publicKey" }, { name: "amount", type: "u64" }, { name: "stakedAt", type: "u64" }, { name: "stakedAtCumulative", type: "u64" } ] } }, { name: "LendingStake", type: { kind: "struct", fields: [ { name: "stakeType", type: { defined: "StakeType" } }, { name: "loan", type: "publicKey" }, { name: "stakeContract", type: "publicKey" }, { name: "stakeContractOptional", type: "publicKey" }, { name: "stakeState", type: { defined: "StakeState" } }, { name: "identity", type: "publicKey" }, { name: "dataA", type: "publicKey" }, { name: "dataB", type: "publicKey" }, { name: "dataC", type: "publicKey" }, { name: "dataD", type: "publicKey" }, { name: "totalHarvested", type: "u64" }, { name: "totalHarvestedOptional", type: "u64" }, { name: "lastTime", type: "u64" } ] } }, { name: "LiquidationLot", type: { kind: "struct", fields: [ { name: "loan", type: "publicKey" }, { name: "nftMint", type: "publicKey" }, { name: "vaultNftTokenAccount", type: "publicKey" }, { name: "lotNoFeesPrice", type: "u64" }, { name: "winningChanceInBasePoints", type: "u64" }, { name: "startedAt", type: "u64" }, { name: "endingAt", type: "u64" }, { name: "lotState", type: { defined: "LotState" } }, { name: "ticketsCount", type: "u64" }, { name: "gracePeriod", type: "u64" }, { name: "graceFee", type: "u64" } ] } }, { name: "Loan", type: { kind: "struct", fields: [ { name: "user", type: "publicKey" }, { name: "nftMint", type: "publicKey" }, { name: "nftUserTokenAccount", type: "publicKey" }, { name: "liquidityPool", type: "publicKey" }, { name: "collectionInfo", type: "publicKey" }, { name: "startedAt", type: "u64" }, { name: "expiredAt", type: { option: "u64" } }, { name: "finishedAt", type: "u64" }, { name: "originalPrice", type: "u64" }, { name: "amountToGet", type: "u64" }, { name: "rewardAmount", type: "u64" }, { name: "feeAmount", type: "u64" }, { name: "royaltyAmount", type: "u64" },