@mercurial-finance/frakt-sdk
Version:
Frakt SDK for interacting with frakt.xyz protocols
2,424 lines (2,415 loc) • 166 kB
JavaScript
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"
},