@frakt-protocol/frakt-sdk
Version:
Frakt SDK for interacting with frakt.xyz protocols
288 lines (287 loc) • 7.22 kB
TypeScript
export declare const TIME_BASED_LOAN_TYPE = "timeBased";
export declare const PRICE_BASED_LOAN_TYPE = "priceBased";
export interface CollectionInfoView {
collectionInfoPubkey: string;
creator: string;
liquidityPool: string;
pricingLookupAddress: string;
royaltyAddress: string;
royaltyFeeTime: number;
royaltyFeePrice: number;
loanToValue: number;
collaterizationRate: number;
availableLoanTypes: string;
expirationTime: number;
}
export interface StakeEntryView {
bump: number;
kind: number;
pool: string;
amount: number;
stakeMint: string;
lastStaker: string;
lastStakedAt: number;
lastUpdatedAt: number;
totalStakeSeconds: number;
usedStakeSeconds: number;
cooldownStartSeconds?: number;
}
export interface RewardEntryView {
bump: number;
stakeEntry: string;
rewardDistributor: string;
rewardSecondsReceived: number;
multiplier: number;
}
export interface RewardDistributorView {
bump: number;
stakePool: string;
kind: number;
authority: string;
identifier: number;
rewardMint: string;
rewardAmount: number;
rewardDurationSeconds: number;
rewardsIssued: string;
defaultMultiplier: number;
multiplierDecimals: number;
claimRewardsPaymentInfo: string;
maxRewardSecondsReceived?: number;
}
export interface StakePoolView {
bump: number;
authority: string;
totalStaked: number;
resetOnUnstake: boolean;
cooldownSeconds?: number;
minStakeSeconds?: number;
endDate?: number;
stakePaymentInfo: string;
unstakePaymentInfo: string;
requiresAuthorization: boolean;
identifier: string;
}
export interface LendingStakeView {
lendingStakePubkey: string;
stakeType: string;
loan: string;
stakeContract: string;
stakeConstractOptional: string;
stakeState: string;
identity: string;
dataA: string;
dataB: string;
dataC: string;
dataD: string;
totalHarvested: number;
totalHarvestedOptional: number;
lastTime: number;
}
export interface FarmerView {
farmerPubkey: string;
farm: string;
identity: string;
vault: string;
state: string;
gemsStaked: number;
minStakingEndsTs: number;
cooldownEndsTs: number;
rewardA: GemFarmRewardView;
rewardB: GemFarmRewardView;
}
export interface GemFarmRewardView {
paidOutReward: number;
accruedReward: number;
variableRate: number;
fixedRate: FixedRateView;
}
export interface FixedRateView {
beginStakingTs: number;
beginScheduleTs: number;
lastUpdatedTs: number;
promisedSchedule: PromisedSchedule;
promisedDuration: number;
}
export interface PromisedSchedule {
baseRate: number;
tier1: number;
tier2: number;
tier3: number;
denominator: number;
}
export interface TimeBasedLiquidityPoolView {
liquidityPoolPubkey: string;
id: number;
rewardInterestRateTime: number;
feeInterestRateTime: number;
rewardInterestRatePrice: number;
feeInterestRatePrice: number;
liquidityAmount: number;
liqOwner: string;
amountOfStaked: number;
userRewardsAmount: number;
apr: number;
cumulative: number;
lastTime: number;
oldCumulative: number;
period: number;
}
export interface PriceBasedLiquidityPoolView {
liquidityPoolPubkey: string;
id: number;
baseBorrowRate: number;
variableSlope1: number;
variableSlope2: number;
utilizationRateOptimal: number;
reserveFactor: number;
reserveAmount: number;
liquidityAmount: number;
liqOwner: string;
amountOfStaked: number;
depositApr: number;
borrowApr: number;
borrowCumulative: number;
depositCumulative: number;
lastTime: number;
depositCommission: number;
borrowCommission: number;
}
export interface DepositView {
depositPubkey: string;
liquidityPool: string;
user: string;
amount: number;
stakedAt: number;
stakedAtCumulative: number;
}
export interface LoanView {
loanPubkey: string;
user: string;
nftMint: string;
nftUserTokenAccount: string;
liquidityPool: string;
collectionInfo: string;
startedAt: number;
expiredAt: number;
finishedAt: number;
originalPrice: number;
amountToGet: number;
rewardAmount: number;
feeAmount: number;
royaltyAmount: number;
borrowedAtCumulative: number;
loanStatus: string;
loanType: string;
}
export interface BorrowNft {
mint: string;
name: string;
imageUrl: string;
valuation: string;
maxLoanValue: string;
timeBased: {
returnPeriodDays: number;
ltvPercents: number;
fee: string;
feeDiscountPercents: string;
repayValue: string;
liquidityPoolPubkey: string;
loanValue: string;
};
priceBased?: {
liquidityPoolPubkey: string;
ltvPercents: number;
borrowAPRPercents: number;
collaterizationRate: number;
};
}
export interface LiquidityPool {
pubkey: string;
isPriceBased: boolean;
name: string;
imageUrl: string[];
totalLiquidity: number;
totalBorrowed: number;
utilizationRate: number;
depositApr: number;
borrowApr?: number;
activeloansAmount: number;
collectionsAmount: number;
userDeposit?: {
pubkey: string;
harvestAmount: number;
depositAmount: number;
depositAmountLamports: string;
};
userActiveLoansAmount?: number;
}
export interface Loan {
pubkey: string;
mint: string;
name: string;
imageUrl: string;
isPriceBased: boolean;
loanValue: number;
repayValue: number;
repayValueLamports: string;
startedAt: string;
expiredAt?: string;
liquidityPool: string;
collectionInfo: string;
royaltyAddress: string;
liquidationPrice?: number;
valuation?: number;
health?: number;
}
export interface LiquidityPoolView {
liquidityPoolPubkey: string;
id: number;
rewardInterestRateTime: number;
feeInterestRateTime: number;
rewardInterestRatePrice: number;
feeInterestRatePrice: number;
liquidityAmount: number;
liqOwner: string;
amountOfStaked: number;
userRewardsAmount: number;
apr: number;
cumulative: number;
lastTime: number;
oldCumulative: number;
period: number;
}
export interface LoanData {
collectionsInfo: CollectionInfoView[];
deposits: DepositView[];
liquidityPool: LiquidityPoolView;
loans: LoanView[];
}
export interface LotTicketView {
liquidationLot: string;
user: string;
usedNftAttempts: string;
ticketState: string;
publicKey: string;
}
export interface NftAttemptView {
nftMint: string;
blockedUntil: number;
attempts: number;
cycleStartedAt: number;
lastTriedAt: number;
publicKey: string;
}
export interface LiquidationLotView {
loan: string;
nftMint: string;
vaultNftTokenAccount: string;
lotNoFeesPrice: number;
winningChanceInBasePoints: number;
startedAt: number;
endingAt: number;
lotState: string;
ticketsCount: number;
gracePeriod: number;
graceFee: number;
publicKey: string;
}