import { BN } from "@coral-xyz/anchor"; import { PublicKey } from "@solana/web3.js"; import { BigFractionBytes } from "../utils"; import { Decodable } from "./base"; import Decimal from "decimal.js"; export interface KVaultAllocation { reserve: PublicKey; ctokenVault: PublicKey; targetAllocationWeight: BN; tokenAllocationCap: BN; ctokenVaultBump: BN; configPadding: BN[]; ctokenAllocation: BN; lastInvestSlot: BN; tokenTargetAllocationSf: BN; statePadding: BN[]; } export declare class KVaultState extends Decodable { discriminator: number[]; vaultAdminAuthority: PublicKey; baseVaultAuthority: PublicKey; baseVaultAuthorityBump: BN; tokenMint: PublicKey; tokenMintDecimals: BN; tokenVault: PublicKey; tokenProgram: PublicKey; sharesMint: PublicKey; sharesMintDecimals: BN; tokenAvailable: BN; sharesIssued: BN; availableCrankFunds: BN; padding0: BN; performanceFeeBps: BN; managementFeeBps: BN; lastFeeChargeTimestamp: BN; prevAumSf: BN; pendingFeesSf: BN; vaultAllocationStrategy: KVaultAllocation[]; padding1: BN[]; minDepositAmount: BN; minWithdrawAmount: BN; minInvestAmount: BN; minInvestDelaySlots: BN; crankFundFeePerReserve: BN; pendingAdmin: PublicKey; cumulativeEarnedInterestSf: BN; cumulativeMgmtFeesSf: BN; cumulativePerfFeesSf: BN; name: number[]; vaultLookupTable: PublicKey; vaultFarm: PublicKey; creationTimestamp: BN; padding2: BN; allocationAdmin: PublicKey; padding3: BN[]; static _layout: any; get nameStr(): string; get validAllocations(): KVaultAllocation[]; } interface LastUpdate { slot: BN; stale: number; priceStatus: number; placeholder: number[]; } interface PriceHeuristic { lower: BN; upper: BN; exp: BN; } interface ScopeConfiguration { priceFeed: PublicKey; priceChain: number[]; twapChain: number[]; } interface SwitchboardConfiguration { priceAggregator: PublicKey; twapAggregator: PublicKey; } interface PythConfiguration { price: PublicKey; } interface TokenInfo { name: number[]; heuristic: PriceHeuristic; maxTwapDivergenceBps: BN; maxAgePriceSeconds: BN; maxAgeTwapSeconds: BN; scopeConfiguration: ScopeConfiguration; switchboardConfiguration: SwitchboardConfiguration; pythConfiguration: PythConfiguration; blockPriceUsage: number; reserved: number[]; padding: BN[]; } interface ReserveFees { borrowFeeSf: BN; flashLoanFeeSf: BN; padding: number[]; } interface CurvePoint { utilizationRateBps: number; borrowRateBps: number; } interface BorrowRateCurve { points: CurvePoint[]; } interface WithdrawalCaps { configCapacity: BN; currentTotal: BN; lastIntervalStartTimestamp: BN; configIntervalLengthSeconds: BN; } interface ReserveLiquidity { mintPubkey: PublicKey; supplyVault: PublicKey; feeVault: PublicKey; availableAmount: BN; borrowedAmountSf: BN; marketPriceSf: BN; marketPriceLastUpdatedTs: BN; mintDecimals: BN; depositLimitCrossedTimestamp: BN; borrowLimitCrossedTimestamp: BN; cumulativeBorrowRateBsf: BigFractionBytes; accumulatedProtocolFeesSf: BN; accumulatedReferrerFeesSf: BN; pendingReferrerFeesSf: BN; absoluteReferralRateSf: BN; tokenProgram: PublicKey; padding2: BN[]; padding3: BN[]; } interface ReserveCollateral { mintPubkey: PublicKey; mintTotalSupply: BN; supplyVault: PublicKey; padding1: BN[]; padding2: BN[]; } interface ReserveConfig { status: number; assetTier: number; hostFixedInterestRateBps: number; reserved2: number[]; protocolOrderExecutionFeePct: number; protocolTakeRatePct: number; protocolLiquidationFeePct: number; loanToValuePct: number; liquidationThresholdPct: number; minLiquidationBonusBps: number; maxLiquidationBonusBps: number; badDebtLiquidationBonusBps: number; deleveragingMarginCallPeriodSecs: BN; deleveragingThresholdDecreaseBpsPerDay: BN; fees: ReserveFees; borrowRateCurve: BorrowRateCurve; borrowFactorPct: BN; depositLimit: BN; borrowLimit: BN; tokenInfo: TokenInfo; depositWithdrawalCap: WithdrawalCaps; debtWithdrawalCap: WithdrawalCaps; elevationGroups: number[]; disableUsageAsCollOutsideEmode: number; utilizationLimitBlockBorrowingAbovePct: number; autodeleverageEnabled: number; reserved1: number[]; borrowLimitOutsideElevationGroup: BN; borrowLimitAgainstThisCollateralInElevationGroup: BN[]; } export declare class Reserve extends Decodable { discriminator: number[]; version: BN; lastUpdate: LastUpdate; lendingMarket: PublicKey; farmCollateral: PublicKey; farmDebt: PublicKey; liquidity: ReserveLiquidity; reserveLiquidityPadding: BN[]; collateral: ReserveCollateral; reserveCollateralPadding: BN[]; config: ReserveConfig; configPadding: BN[]; borrowedAmountOutsideElevationGroup: BN; borrowedAmountsAgainstThisReserveInElevationGroups: BN[]; padding: BN[]; static _layout: any; get cumulativeBorrowRate(): Decimal; /** * @returns the stale exchange rate between the collateral tokens and the liquidity - this is a decimal number scaled by 1e18 */ get collateralExchangeRate(): Decimal; get totalSupply(): Decimal; get borrowedAmount(): Decimal; get accumulatedProtocolFees(): Decimal; get accumulatedReferrerFees(): Decimal; get pendingReferrerFees(): Decimal; get scopePriceFeed(): PublicKey; get liquidityFeeReceiver(): PublicKey; get farmDebtNullable(): PublicKey | null; get farmCollateralNullable(): PublicKey | null; } interface ObligationCollateral { depositReserve: PublicKey; depositedAmount: BN; marketValueSf: BN; borrowedAmountAgainstThisCollateralInElevationGroup: BN; padding: BN[]; } interface ObligationLiquidity { borrowReserve: PublicKey; cumulativeBorrowRateBsf: BigFractionBytes; padding: BN; borrowedAmountSf: BN; marketValueSf: BN; borrowFactorAdjustedMarketValueSf: BN; borrowedAmountOutsideElevationGroups: BN; padding2: BN[]; } interface ObligationOrder { conditionThresholdSf: BN; opportunityParameterSf: BN; minExecutionBonusBps: number; maxExecutionBonusBps: number; conditionType: number; opportunityType: number; padding1: number[]; padding2: BN[]; } export declare class Obligation extends Decodable { discriminator: number[]; tag: BN; lastUpdate: LastUpdate; lendingMarket: PublicKey; owner: PublicKey; deposits: ObligationCollateral[]; lowestReserveDepositLiquidationLtv: BN; depositedValueSf: BN; borrows: ObligationLiquidity[]; borrowFactorAdjustedDebtValueSf: BN; borrowedAssetsMarketValueSf: BN; allowedBorrowValueSf: BN; unhealthyBorrowValueSf: BN; depositsAssetTiers: number[]; borrowsAssetTiers: number[]; elevationGroup: number; numOfObsoleteDepositReserves: number; hasDebt: number; referrer: PublicKey; borrowingDisabled: number; autodeleverageTargetLtvPct: number; lowestReserveDepositMaxLtvPct: number; numOfObsoleteBorrowReserves: number; reserved: number[]; highestBorrowFactorPct: BN; autodeleverageMarginCallStartedTimestamp: BN; orders: ObligationOrder[]; padding3: BN[]; static _layout: any; get activeDeposits(): ObligationCollateral[]; get activeBorrows(): ObligationLiquidity[]; } export {};