UNPKG

@rainfi/sdk

Version:

This package is used to interact with Rain.fi protocol on Solana

363 lines (362 loc) 9.12 kB
import { PublicKey } from "@solana/web3.js"; export interface FullUserStats { owner: string; totalLoan: number; totalMortgage: number; totalLiquidation: number; currentLoan: number; currentMortgage: number; totalVolumeBorrower: number; totalVolumePool: number; points: number; creditScore: number; createdAt: number; } export interface UserStats { owner: PublicKey; totalLoan: number; totalMortgage: number; totalLiquidation: number; currentLoan: number; currentMortgage: number; createdAt: number; totalVolumeBorrower: number; totalVolumePool: number; points: number; creditScore: number; } export interface SplPoolCollection { collection: number; collectionLtv: number; exposure: number; amountUsed: number; } export type UserInputPoolCollection = { collection: number; collectionLtv: number; exposure: number; }; export interface PoolCollection { collection: number; collectionLtv: number; exposure: number; amountUsed: number; } export interface CreatePoolArgs { collections: UserInputPoolCollection[]; loanToValue: number; maxAmount: number; baseInterest: number; interestRate: number; curveRate: number; curveRateDay: number; maxDuration: number; compound: boolean; amount: number; referrer?: PublicKey; } export interface UpdatePoolArgs { referrer?: PublicKey; isCompounded: boolean; optMinAmountPerLoan: number; optMortgageCurve: { baseInterest: number; interestRate: number; curveRate: number; curveRateDay: number; maxDuration: number; maxAmount: number; }; optLoanCurve: { baseInterest: number; interestRate: number; curveRate: number; curveRateDay: number; maxDuration: number; maxAmount: number; }; optConditions: PoolConditions; optLiquidation: PoolLiquidation; loanLiquidation: number; } export interface PoolLiquidation { loanLiquidation: number; mortgageLiquidation: number; isAutoSellEnabled: boolean; percentageMaxLoss: number; } export interface PoolConditions { isEnabled: boolean; minAge: number; minLoan: number; minVolume: number; liquidationThreshold: number; padding1: number; padding2: number; padding3: number; } export interface BorrowArgs { nftMint: PublicKey; assetId?: PublicKey; poolOwner: PublicKey; duration: number; amount: number; interest: number; slippage: number; lookupTable?: PublicKey | undefined; } export interface ExtendArgs { nftMint: PublicKey; poolOwner: PublicKey; loan: PublicKey; duration: number; amount: number; interest: number; slippage: number; lookupTable?: PublicKey | undefined; } export interface MgRequestArgs { nftMint: PublicKey; poolOwner: PublicKey; duration: number; amount: number; floorPrice: number; marketplace: number; price: number; seller: PublicKey; } export interface LoanRequestArgs { nftMint: PublicKey; poolOwner: PublicKey; duration: number; amount: number; collectionId?: number; } export interface ExecuteLoanRequestArgs { loanRequestAddress: PublicKey; duration: number; amount: number; interest: number; slippage: number; lookupTable?: PublicKey | undefined; } export interface Collection { collectionAddress: string; collectionId: number; collectionName?: string; hadeswapPair?: string; maxAmountToBorrow?: number; createdAt: number; creator: string; floorPrice: number; image?: string; mortgageEnabled?: boolean; url?: string; isLocked: boolean; nftLocked: number; risk: number; supply: number; updatedAt: number; } export type Curve = { baseInterest: number; interestRate: number; curveRate: number; curveRateDay: number; maxDuration: number; maxAmount: number; }; export interface Pool { poolAddress: string; bump: number; owner: string; currency: string; oraclePoolUsd: string; oracleSolUsd: string; status: 'pending' | 'ready' | 'disabled'; isCompounded: boolean; isShared: boolean; totalAmount: number; borrowedAmount: number; availableAmount: number; usableAmount: number; loanCurve: Curve; mortgageCurve: Curve; conditions: PoolConditions; liquidation: PoolLiquidation; isMortgageEnabled: boolean; nftLocked: number; totalLiquidations: number; totalLoans: number; totalMortgages: number; totalInterest: number; depositedAt: number; createdAt: number; updatedAt: number; lastLoanAt: number; lastMortgageAt: number; loanLiquidation: number; mortgageLiquidation: number; whitelist: string; padding: number[]; collections: PoolCollection[]; depositedAmount: number; } export interface Currency { switchBoardOnDemandAccount: string | null | undefined; fullName: string; name: string; id: string; pyth: string; history: string; coingeckoName: string; image: string; symbol: string; mint: string; priceAccount?: string | null; priceAccountV2?: string | null; switchBoardAccount?: string | null; decimals: number; minAmount: number; minDefiAmount: number; simulationAmount: number; showDecimals: boolean; isLiveDefi: boolean; isLive: boolean; } export interface Request { accountAddress: string; kind: 'loan' | 'mortgage'; status: 'accepted' | 'pending'; borrower: string; mint: string; pool: string; amount: number; duration: number; collection: number; marketplace: 'none' | 'solanart' | 'auctionhouse' | 'hyperspace' | 'hadeswap' | 'rain' | 'tensorswap_order' | 'tensorswap_listing' | 'magiceden-v2'; price: number; createdAt: number; } export declare enum LoanKind { Loan = 0, Mortgage = 1 } export declare enum RequestStatus { Pending = 0, Accepted = 1 } export interface Loan { accountAddress: string; kind: 'loan' | 'mortgage'; status: 'sold' | 'ongoing' | 'repaid' | 'liquidated'; collateralAmount: number; collateralDecimals: number; isDefi: boolean; platform?: string; borrower: string; lender: string; pool: string; mint: string; currency: string; isCustom: boolean; isFrozen: boolean; interest: number; amount: number; price: number; duration: number; collection: number; liquidation: number; marketplace: 'none' | 'solanart' | 'auctionhouse' | 'hyperspace' | 'hadeswap' | 'rain' | 'tensorswap_order' | 'tensorswap_listing' | 'magiceden-v2'; sale: Sale; createdAt: number; expiredAt: number; repaidAt: number; soldAt: number; image?: string; nft?: any; collectionName?: string; isCompressedLoan: boolean; liquidatedAt: number; listing: { isListed: boolean; price: number; }; } export type Sale = { isForSale: boolean; salePrice: number; currency: string; }; export declare enum Marketplace { None = 0, Auctionhouse = 1, Solanart = 2, Hyperspace = 3, Yaww = 4, Hadeswap = 5, Rain = 6 } export declare enum InterestType { Manual = 0, Dynamic = 1 } export declare enum PoolStatus { Pending = 0, Ready = 1, Disabled = 2 } export declare enum MortgageStatus { Pending = 0, Ongoing = 1, Repaid = 2, Liquidated = 3 } export interface Fees { feesInPercentage: number; feesInSol: number; rainFees: number; amountToLoan: number; duration: number; } export type MortgageFilter = 'status' | 'borrower' | 'owner' | 'mint' | 'marketplace' | 'is_for_sale' | 'sale_price' | 'is_frozen' | 'interest' | 'repaid' | 'amount' | 'price' | 'duration' | 'collection'; export interface BuyArgs { nftMint: PublicKey; poolOwner: PublicKey; seller?: PublicKey; auctionHousePubkey?: PublicKey; escrowAddress?: PublicKey; marketplace: 'solanart' | 'auction_house' | 'hadeswap' | 'tensorswap_order' | 'tensorswap_listing' | 'magiceden-v2'; interest: number; slippage: number; price: number; amount: number; duration: number; } export interface ExecuteMortgageRequestArgs { mortgageRequestAddress: PublicKey; nftMint: PublicKey; poolOwner: PublicKey; seller?: PublicKey; auctionHousePubkey?: PublicKey; escrowAddress?: PublicKey; marketplace: 'solanart' | 'auction_house' | 'hadeswap' | 'tensorswap_order' | 'tensorswap_listing' | 'magiceden-v2'; interest: number; slippage: number; price: number; amount: number; duration: number; } export interface ConfigMortgage { isMortgageEnabled: boolean; optMortgageCurve: Curve; } export interface BorrowCompressedArgs { assetId: PublicKey; poolOwner: PublicKey; duration: number; amount: number; interest: number; slippage: number; lookupTable?: PublicKey | undefined; }