UNPKG

@frakters/nft-lending-v2

Version:

Client library for interacting with nft lenging solana program

423 lines (422 loc) 15.9 kB
/// <reference types="bn.js" /> /// <reference types="node" /> import * as anchor from '@project-serum/anchor'; export { AllAccounts, CollectionInfoView, TimeBasedLiquidityPoolView, DepositView, LoanView, PriceBasedLiquidityPoolView, LiquidationLotView, LotTicketView, NftAttemptView, LendingStakeView, } from './accounts'; import { GemFarm } from './idl/types/idl-gem-farm'; export * as onAccountsChange from './accountsChanged/onAccountsChanged'; import { CollectionInfoView, TimeBasedLiquidityPoolView, DepositView, LoanView, PriceBasedLiquidityPoolView, LiquidationLotView, LotTicketView, NftAttemptView, LendingStakeView } from './accounts'; import { PublicKey, Connection, Keypair, Transaction } from '@solana/web3.js'; import * as accounts from './accounts'; export { returnAnchorProgram } from './utils'; export * as utils from './utils'; export * as accounts from './accounts'; export declare const METADATA_PROGRAM_PUBKEY: anchor.web3.PublicKey; export declare function approveLoanByAdmin({ programId, connection, admin, loan, liquidityPool, collectionInfo, nftPrice, discount, user, sendTxn, }: { programId: PublicKey; connection: Connection; admin: PublicKey; loan: PublicKey; liquidityPool: PublicKey; collectionInfo: PublicKey; nftPrice: number | anchor.BN; discount: number | anchor.BN; user: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function depositLiquidity({ programId, connection, liquidityPool, user, amount, sendTxn, }: { programId: PublicKey; connection: Connection; liquidityPool: PublicKey; user: PublicKey; amount: number; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<PublicKey>; export declare function unstakeLiquidity({ programId, connection, liquidityPool, user, amount, admin, sendTxn, }: { programId: PublicKey; connection: Connection; liquidityPool: PublicKey; user: PublicKey; amount: anchor.BN | number; admin: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function harvestLiquidity({ programId, connection, liquidityPool, user, admin, sendTxn, }: { programId: PublicKey; connection: Connection; liquidityPool: PublicKey; user: PublicKey; admin: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function updateCollectionInfo({ programId, connection, liquidityPool, admin, creatorAddress, pricingLookupAddress, loanToValue, collaterizationRate, royaltyAddress, collectionInfo, royaltyFeeTime, royaltyFeePrice, expirationTime, isPriceBased, sendTxn, }: { programId: PublicKey; connection: Connection; liquidityPool: PublicKey; admin: PublicKey; creatorAddress: PublicKey; collectionInfo: PublicKey; pricingLookupAddress: PublicKey; loanToValue: number | anchor.BN; collaterizationRate: number | anchor.BN; royaltyAddress: PublicKey; royaltyFeeTime: number | anchor.BN; royaltyFeePrice: number | anchor.BN; expirationTime: number | anchor.BN; isPriceBased: boolean; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function initializeCollectionInfo({ programId, connection, liquidityPool, admin, creatorAddress, pricingLookupAddress, loanToValue, collaterizationRate, royaltyAddress, royaltyFeeTime, royaltyFeePrice, expirationTime, isPriceBased, sendTxn, }: { programId: PublicKey; connection: Connection; liquidityPool: PublicKey; admin: PublicKey; creatorAddress: PublicKey; pricingLookupAddress: PublicKey; loanToValue: number | anchor.BN; collaterizationRate: number | anchor.BN; royaltyAddress: PublicKey; royaltyFeeTime: number | anchor.BN; royaltyFeePrice: number | anchor.BN; expirationTime: number | anchor.BN; isPriceBased: boolean; sendTxn: (transaction: Transaction, signers: Keypair[]) => Promise<void>; }): Promise<anchor.web3.PublicKey>; export declare function updateTimeBasedLiquidityPool({ programId, connection, admin, liquidityPool, rewardInterestRateTime, rewardInterestRatePrice, feeInterestRateTime, feeInterestRatePrice, id, period, sendTxn, }: { programId: PublicKey; connection: Connection; admin: PublicKey; liquidityPool: PublicKey; rewardInterestRateTime: number | anchor.BN; feeInterestRateTime: number | anchor.BN; rewardInterestRatePrice: number | anchor.BN; feeInterestRatePrice: number | anchor.BN; id: number | anchor.BN; period: number | anchor.BN; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function initializePriceBasedLiquidityPool({ programId, connection, admin, baseBorrowRate, variableSlope1, variableSlope2, utilizationRateOptimal, reserveFactor, depositCommission, borrowCommission, id, sendTxn, }: { programId: PublicKey; connection: Connection; admin: PublicKey; baseBorrowRate: number; variableSlope1: number; variableSlope2: number; utilizationRateOptimal: number; reserveFactor: number; depositCommission: number; borrowCommission: number; id: number; sendTxn: (transaction: Transaction, signers: Keypair[]) => Promise<void>; }): Promise<anchor.web3.PublicKey>; export declare function updatePriceBasedLiquidityPool({ programId, liquidityPool, connection, admin, baseBorrowRate, variableSlope1, variableSlope2, utilizationRateOptimal, reserveFactor, depositCommission, borrowCommission, id, sendTxn, }: { programId: PublicKey; liquidityPool: PublicKey; connection: Connection; admin: PublicKey; baseBorrowRate: number; variableSlope1: number; variableSlope2: number; utilizationRateOptimal: number; reserveFactor: number; depositCommission: number; borrowCommission: number; id: number; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function paybackLoan({ programId, connection, user, admin, loan, nftMint, liquidityPool, collectionInfo, royaltyAddress, amount, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; admin: PublicKey; loan: PublicKey; nftMint: PublicKey; liquidityPool: PublicKey; collectionInfo: PublicKey; royaltyAddress: PublicKey; amount: anchor.BN; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function proposeLoan({ proposedNftPrice, programId, connection, user, nftMint, isPriceBased, loanToValue, admin, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; nftMint: PublicKey; proposedNftPrice: anchor.BN; isPriceBased: boolean; loanToValue: anchor.BN; admin: PublicKey; sendTxn: (transaction: Transaction, signers: Keypair[]) => Promise<void>; }): Promise<{ loanPubkey: anchor.web3.PublicKey; }>; export declare function rejectLoanByAdmin({ programId, connection, loan, nftUserTokenAccount, admin, user, nftMint, sendTxn, }: { programId: PublicKey; connection: Connection; loan: PublicKey; nftUserTokenAccount: PublicKey; admin: PublicKey; user: PublicKey; nftMint: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function withdrawFromReserveFund({ programId, connection, priceBasedLiquidityPool, admin, sendTxn, }: { programId: PublicKey; connection: Connection; priceBasedLiquidityPool: PublicKey; admin: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function initializeNftAttempts({ programId, connection, attemptsNftMint, user, sendTxn, }: { programId: PublicKey; connection: Connection; attemptsNftMint: PublicKey; user: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<anchor.web3.PublicKey>; export declare function liquidateNftToRaffles({ programId, connection, user, liquidator, gracePeriod, loan, nftMint, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; liquidator: PublicKey; gracePeriod: number; loan: PublicKey; nftMint: PublicKey; sendTxn: (transaction: Transaction, signers: Keypair[]) => Promise<void>; }): Promise<anchor.web3.PublicKey>; export declare function paybackLoanWithGrace({ programId, connection, user, admin, liquidationLot, loan, nftMint, liquidityPool, collectionInfo, royaltyAddress, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; admin: PublicKey; liquidationLot: PublicKey; loan: PublicKey; nftMint: PublicKey; liquidityPool: PublicKey; collectionInfo: PublicKey; royaltyAddress: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function redeemWinningLotTicket({ programId, connection, user, liquidationLot, liquidityPool, collectionInfo, loan, admin, lotTicket, royaltyAddress, nftMint, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; admin: PublicKey; liquidityPool: PublicKey; royaltyAddress: PublicKey; lotTicket: PublicKey; collectionInfo: PublicKey; liquidationLot: PublicKey; loan: PublicKey; nftMint: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function rejectLotTicketByAdmin({ programId, connection, admin, lotTicket, sendTxn, }: { programId: PublicKey; connection: Connection; admin: PublicKey; lotTicket: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function revealLotTicketByAdmin({ programId, connection, admin, lotTicket, isWinning, sendTxn, }: { programId: PublicKey; connection: Connection; admin: PublicKey; lotTicket: PublicKey; isWinning: boolean; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function getAllProgramAccounts(programId: PublicKey, connection: Connection): Promise<{ collectionInfos: CollectionInfoView[]; deposits: DepositView[]; timeBasedLiquidityPools: TimeBasedLiquidityPoolView[]; priceBasedLiquidityPools: PriceBasedLiquidityPoolView[]; loans: LoanView[]; liquidationLots: LiquidationLotView[]; lotTickets: LotTicketView[]; nftAttempts: NftAttemptView[]; lendingStakes: LendingStakeView[]; }>; export declare function stakeGemFarmStaking({ programId, connection, user, gemFarm, farm, bank, gemBank, feeAcc, nftMint, loan, isDegod, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; gemFarm: PublicKey; farm: PublicKey; bank: PublicKey; gemBank: PublicKey; feeAcc: PublicKey; nftMint: PublicKey; isDegod: boolean; loan: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function unstakeGemFarmStaking({ programId, connection, user, gemFarm, farm, bank, gemBank, feeAcc, nftMint, isDegod, loan, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; gemFarm: PublicKey; farm: PublicKey; bank: PublicKey; gemBank: PublicKey; feeAcc: PublicKey; nftMint: PublicKey; isDegod: boolean; loan: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function unstakeGemFarmStakingByAdmin({ programId, connection, admin, gemFarm, farm, bank, gemBank, feeAcc, nftMint, isDegod, loan, sendTxn, }: { programId: PublicKey; connection: Connection; admin: PublicKey; gemFarm: PublicKey; farm: PublicKey; bank: PublicKey; gemBank: PublicKey; feeAcc: PublicKey; nftMint: PublicKey; isDegod: boolean; loan: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function claimGemFarmStaking({ programId, connection, user, gemFarm, farm, nftMint, loan, isDegod, rewardAMint, rewardBMint, sendTxn, }: { programId: PublicKey; connection: Connection; user: PublicKey; gemFarm: PublicKey; farm: PublicKey; nftMint: PublicKey; loan: PublicKey; isDegod: boolean; rewardAMint: PublicKey; rewardBMint: PublicKey; sendTxn: (transaction: Transaction) => Promise<void>; }): Promise<void>; export declare function getSpecificAccountInfo({ degodPubkey, connection, identity, }: { degodPubkey: any; connection: any; identity: any; }): Promise<anchor.ProgramAccount<import("@project-serum/anchor/dist/cjs/program/namespace/types").TypeDef<{ name: "authorizationProof"; type: { kind: "struct"; fields: [{ name: "authorizedFunder"; type: "publicKey"; }, { name: "farm"; type: "publicKey"; }]; }; } | { name: "farm"; type: { kind: "struct"; fields: [{ name: "version"; type: "u16"; }, { name: "farmManager"; type: "publicKey"; }, { name: "farmTreasury"; type: "publicKey"; }, { name: "farmAuthority"; type: "publicKey"; }, { name: "farmAuthoritySeed"; type: "publicKey"; }, { name: "farmAuthorityBumpSeed"; type: { array: ["u8", 1]; }; }, { name: "bank"; type: "publicKey"; }, { name: "config"; type: { defined: "FarmConfig"; }; }, { name: "farmerCount"; type: "u64"; }, { name: "stakedFarmerCount"; type: "u64"; }, { name: "gemsStaked"; type: "u64"; }, { name: "rarityPointsStaked"; type: "u64"; }, { name: "authorizedFunderCount"; type: "u64"; }, { name: "rewardA"; type: { defined: "FarmReward"; }; }, { name: "rewardB"; type: { defined: "FarmReward"; }; }]; }; } | { name: "farmer"; type: { kind: "struct"; fields: [{ name: "farm"; type: "publicKey"; }, { name: "identity"; type: "publicKey"; }, { name: "vault"; type: "publicKey"; }, { name: "state"; type: { defined: "FarmerState"; }; }, { name: "gemsStaked"; type: "u64"; }, { name: "minStakingEndsTs"; type: "u64"; }, { name: "cooldownEndsTs"; type: "u64"; }, { name: "rewardA"; type: { defined: "FarmerReward"; }; }, { name: "rewardB"; type: { defined: "FarmerReward"; }; }]; }; }, anchor.IdlTypes<GemFarm>>> | undefined>; export declare function objectBNsToNums(obj: any): any; export declare function decodeLoan(buffer: Buffer, connection: Connection, programId: PublicKey): any; export declare function CalculateStatFromAccounts(allAccounts: accounts.AllAccounts): { lockedNftsInLoans: number; loansVolumeAllTime: number; loansVolume7Days: number; TVL: number; issuedIn24Hours: number; liquidatedIn24Hours: number; paidBackIn24Hours: number; totalIssued: number; }; export declare function objectBNsAndPubkeysToNums(obj: any): any; export * as anchor from '@project-serum/anchor';