UNPKG

@kamino-finance/klend-sdk

Version:

Typescript SDK for interacting with the Kamino Lending (klend) protocol

2,128 lines 55.2 kB
{ "version": "0.1.0", "name": "kamino_vault", "instructions": [ { "name": "initVault", "accounts": [ { "name": "adminAuthority", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": false, "isSigner": false }, { "name": "tokenVault", "isMut": true, "isSigner": false }, { "name": "baseTokenMint", "isMut": false, "isSigner": false }, { "name": "sharesMint", "isMut": true, "isSigner": false }, { "name": "adminTokenAccount", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "sharesTokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "updateReserveAllocation", "accounts": [ { "name": "signer", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": false, "isSigner": false }, { "name": "reserveCollateralMint", "isMut": true, "isSigner": false }, { "name": "reserve", "isMut": false, "isSigner": false }, { "name": "ctokenVault", "isMut": true, "isSigner": false }, { "name": "reserveCollateralTokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [ { "name": "weight", "type": "u64" }, { "name": "cap", "type": "u64" } ] }, { "name": "deposit", "accounts": [ { "name": "user", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "tokenVault", "isMut": true, "isSigner": false }, { "name": "tokenMint", "isMut": false, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": false, "isSigner": false }, { "name": "sharesMint", "isMut": true, "isSigner": false }, { "name": "userTokenAta", "isMut": true, "isSigner": false }, { "name": "userSharesAta", "isMut": true, "isSigner": false }, { "name": "klendProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "sharesTokenProgram", "isMut": false, "isSigner": false }, { "name": "eventAuthority", "isMut": false, "isSigner": false }, { "name": "program", "isMut": false, "isSigner": false } ], "args": [ { "name": "maxAmount", "type": "u64" } ] }, { "name": "withdraw", "accounts": [ { "name": "withdrawFromAvailable", "accounts": [ { "name": "user", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "tokenVault", "isMut": true, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": false, "isSigner": false }, { "name": "userTokenAta", "isMut": true, "isSigner": false }, { "name": "tokenMint", "isMut": true, "isSigner": false }, { "name": "userSharesAta", "isMut": true, "isSigner": false }, { "name": "sharesMint", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "sharesTokenProgram", "isMut": false, "isSigner": false }, { "name": "klendProgram", "isMut": false, "isSigner": false }, { "name": "eventAuthority", "isMut": false, "isSigner": false }, { "name": "program", "isMut": false, "isSigner": false } ] }, { "name": "withdrawFromReserveAccounts", "accounts": [ { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "reserve", "isMut": true, "isSigner": false }, { "name": "ctokenVault", "isMut": true, "isSigner": false }, { "name": "lendingMarket", "isMut": false, "isSigner": false }, { "name": "lendingMarketAuthority", "isMut": false, "isSigner": false }, { "name": "reserveLiquiditySupply", "isMut": true, "isSigner": false }, { "name": "reserveCollateralMint", "isMut": true, "isSigner": false }, { "name": "reserveCollateralTokenProgram", "isMut": false, "isSigner": false }, { "name": "instructionSysvarAccount", "isMut": false, "isSigner": false } ] }, { "name": "eventAuthority", "isMut": false, "isSigner": false }, { "name": "program", "isMut": false, "isSigner": false } ], "args": [ { "name": "sharesAmount", "type": "u64" } ] }, { "name": "invest", "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "payerTokenAccount", "isMut": true, "isSigner": false }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "tokenVault", "isMut": true, "isSigner": false }, { "name": "tokenMint", "isMut": true, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": true, "isSigner": false }, { "name": "ctokenVault", "isMut": true, "isSigner": false }, { "name": "reserve", "isMut": true, "isSigner": false, "docs": [ "CPI accounts" ] }, { "name": "lendingMarket", "isMut": false, "isSigner": false }, { "name": "lendingMarketAuthority", "isMut": false, "isSigner": false }, { "name": "reserveLiquiditySupply", "isMut": true, "isSigner": false }, { "name": "reserveCollateralMint", "isMut": true, "isSigner": false }, { "name": "klendProgram", "isMut": false, "isSigner": false }, { "name": "reserveCollateralTokenProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "instructionSysvarAccount", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "updateVaultConfig", "accounts": [ { "name": "vaultAdminAuthority", "isMut": false, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "klendProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "entry", "type": { "defined": "VaultConfigField" } }, { "name": "data", "type": "bytes" } ] }, { "name": "withdrawPendingFees", "accounts": [ { "name": "vaultAdminAuthority", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "reserve", "isMut": true, "isSigner": false }, { "name": "tokenVault", "isMut": true, "isSigner": false }, { "name": "ctokenVault", "isMut": true, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": true, "isSigner": false }, { "name": "tokenAta", "isMut": true, "isSigner": false }, { "name": "tokenMint", "isMut": true, "isSigner": false }, { "name": "lendingMarket", "isMut": false, "isSigner": false, "docs": [ "CPI accounts" ] }, { "name": "lendingMarketAuthority", "isMut": false, "isSigner": false }, { "name": "reserveLiquiditySupply", "isMut": true, "isSigner": false }, { "name": "reserveCollateralMint", "isMut": true, "isSigner": false }, { "name": "klendProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "reserveCollateralTokenProgram", "isMut": false, "isSigner": false }, { "name": "instructionSysvarAccount", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "updateAdmin", "accounts": [ { "name": "pendingAdmin", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false } ], "args": [] }, { "name": "giveUpPendingFees", "accounts": [ { "name": "vaultAdminAuthority", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "klendProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "maxAmountToGiveUp", "type": "u64" } ] }, { "name": "initializeSharesMetadata", "accounts": [ { "name": "vaultAdminAuthority", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": false, "isSigner": false }, { "name": "sharesMint", "isMut": false, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": false, "isSigner": false }, { "name": "sharesMetadata", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false }, { "name": "metadataProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "name", "type": "string" }, { "name": "symbol", "type": "string" }, { "name": "uri", "type": "string" } ] }, { "name": "updateSharesMetadata", "accounts": [ { "name": "vaultAdminAuthority", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": false, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": false, "isSigner": false }, { "name": "sharesMetadata", "isMut": true, "isSigner": false }, { "name": "metadataProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "name", "type": "string" }, { "name": "symbol", "type": "string" }, { "name": "uri", "type": "string" } ] }, { "name": "withdrawFromAvailable", "accounts": [ { "name": "user", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "tokenVault", "isMut": true, "isSigner": false }, { "name": "baseVaultAuthority", "isMut": false, "isSigner": false }, { "name": "userTokenAta", "isMut": true, "isSigner": false }, { "name": "tokenMint", "isMut": true, "isSigner": false }, { "name": "userSharesAta", "isMut": true, "isSigner": false }, { "name": "sharesMint", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "sharesTokenProgram", "isMut": false, "isSigner": false }, { "name": "klendProgram", "isMut": false, "isSigner": false }, { "name": "eventAuthority", "isMut": false, "isSigner": false }, { "name": "program", "isMut": false, "isSigner": false } ], "args": [ { "name": "sharesAmount", "type": "u64" } ] }, { "name": "removeAllocation", "accounts": [ { "name": "vaultAdminAuthority", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "reserve", "isMut": false, "isSigner": false } ], "args": [] } ], "accounts": [ { "name": "Reserve", "type": { "kind": "struct", "fields": [ { "name": "version", "docs": [ "Version of the reserve" ], "type": "u64" }, { "name": "lastUpdate", "docs": [ "Last slot when supply and rates updated" ], "type": { "defined": "LastUpdate" } }, { "name": "lendingMarket", "docs": [ "Lending market address" ], "type": "publicKey" }, { "name": "farmCollateral", "type": "publicKey" }, { "name": "farmDebt", "type": "publicKey" }, { "name": "liquidity", "docs": [ "Reserve liquidity" ], "type": { "defined": "ReserveLiquidity" } }, { "name": "reserveLiquidityPadding", "type": { "array": [ "u64", 150 ] } }, { "name": "collateral", "docs": [ "Reserve collateral" ], "type": { "defined": "ReserveCollateral" } }, { "name": "reserveCollateralPadding", "type": { "array": [ "u64", 150 ] } }, { "name": "config", "docs": [ "Reserve configuration values" ], "type": { "defined": "ReserveConfig" } }, { "name": "configPadding", "type": { "array": [ "u64", 116 ] } }, { "name": "borrowedAmountOutsideElevationGroup", "type": "u64" }, { "name": "borrowedAmountsAgainstThisReserveInElevationGroups", "docs": [ "Amount of token borrowed in lamport of debt asset in the given", "elevation group when this reserve is part of the collaterals." ], "type": { "array": [ "u64", 32 ] } }, { "name": "padding", "type": { "array": [ "u64", 207 ] } } ] } }, { "name": "VaultState", "type": { "kind": "struct", "fields": [ { "name": "vaultAdminAuthority", "type": "publicKey" }, { "name": "baseVaultAuthority", "type": "publicKey" }, { "name": "baseVaultAuthorityBump", "type": "u64" }, { "name": "tokenMint", "type": "publicKey" }, { "name": "tokenMintDecimals", "type": "u64" }, { "name": "tokenVault", "type": "publicKey" }, { "name": "tokenProgram", "type": "publicKey" }, { "name": "sharesMint", "type": "publicKey" }, { "name": "sharesMintDecimals", "type": "u64" }, { "name": "tokenAvailable", "type": "u64" }, { "name": "sharesIssued", "type": "u64" }, { "name": "availableCrankFunds", "type": "u64" }, { "name": "padding0", "type": "u64" }, { "name": "performanceFeeBps", "type": "u64" }, { "name": "managementFeeBps", "type": "u64" }, { "name": "lastFeeChargeTimestamp", "type": "u64" }, { "name": "prevAumSf", "type": "u128" }, { "name": "pendingFeesSf", "type": "u128" }, { "name": "vaultAllocationStrategy", "type": { "array": [ { "defined": "VaultAllocation" }, 25 ] } }, { "name": "padding1", "type": { "array": [ "u128", 256 ] } }, { "name": "minDepositAmount", "type": "u64" }, { "name": "minWithdrawAmount", "type": "u64" }, { "name": "minInvestAmount", "type": "u64" }, { "name": "minInvestDelaySlots", "type": "u64" }, { "name": "crankFundFeePerReserve", "type": "u64" }, { "name": "pendingAdmin", "type": "publicKey" }, { "name": "cumulativeEarnedInterestSf", "type": "u128" }, { "name": "cumulativeMgmtFeesSf", "type": "u128" }, { "name": "cumulativePerfFeesSf", "type": "u128" }, { "name": "name", "type": { "array": [ "u8", 40 ] } }, { "name": "vaultLookupTable", "type": "publicKey" }, { "name": "vaultFarm", "type": "publicKey" }, { "name": "creationTimestamp", "type": "u64" }, { "name": "padding2", "type": "u64" }, { "name": "allocationAdmin", "type": "publicKey" }, { "name": "padding3", "type": { "array": [ "u128", 242 ] } } ] } } ], "types": [ { "name": "LastUpdate", "docs": [ "Last update state" ], "type": { "kind": "struct", "fields": [ { "name": "slot", "docs": [ "Last slot when updated" ], "type": "u64" }, { "name": "stale", "docs": [ "True when marked stale, false when slot updated" ], "type": "u8" }, { "name": "priceStatus", "docs": [ "Status of the prices used to calculate the last update" ], "type": "u8" }, { "name": "placeholder", "type": { "array": [ "u8", 6 ] } } ] } }, { "name": "BigFractionBytes", "type": { "kind": "struct", "fields": [ { "name": "value", "type": { "array": [ "u64", 4 ] } }, { "name": "padding", "type": { "array": [ "u64", 2 ] } } ] } }, { "name": "ReserveCollateral", "docs": [ "Reserve collateral" ], "type": { "kind": "struct", "fields": [ { "name": "mintPubkey", "docs": [ "Reserve collateral mint address" ], "type": "publicKey" }, { "name": "mintTotalSupply", "docs": [ "Reserve collateral mint supply, used for exchange rate" ], "type": "u64" }, { "name": "supplyVault", "docs": [ "Reserve collateral supply address" ], "type": "publicKey" }, { "name": "padding1", "type": { "array": [ "u128", 32 ] } }, { "name": "padding2", "type": { "array": [ "u128", 32 ] } } ] } }, { "name": "ReserveConfig", "docs": [ "Reserve configuration values" ], "type": { "kind": "struct", "fields": [ { "name": "status", "docs": [ "Status of the reserve Active/Obsolete/Hidden" ], "type": "u8" }, { "name": "assetTier", "docs": [ "Asset tier -> 0 - regular (collateral & debt), 1 - isolated collateral, 2 - isolated debt" ], "type": "u8" }, { "name": "hostFixedInterestRateBps", "docs": [ "Flat rate that goes to the host" ], "type": "u16" }, { "name": "reserved2", "docs": [ "[DEPRECATED] Space that used to hold 2 fields:", "- Boost for side (debt or collateral)", "- Reward points multiplier per obligation type", "Can be re-used after making sure all underlying production account data is zeroed." ], "type": { "array": [ "u8", 9 ] } }, { "name": "protocolOrderExecutionFeePct", "docs": [ "Cut of the order execution bonus that the protocol receives, as a percentage" ], "type": "u8" }, { "name": "protocolTakeRatePct", "docs": [ "Protocol take rate is the amount borrowed interest protocol receives, as a percentage" ], "type": "u8" }, { "name": "protocolLiquidationFeePct", "docs": [ "Cut of the liquidation bonus that the protocol receives, as a percentage" ], "type": "u8" }, { "name": "loanToValuePct", "docs": [ "Target ratio of the value of borrows to deposits, as a percentage", "0 if use as collateral is disabled" ], "type": "u8" }, { "name": "liquidationThresholdPct", "docs": [ "Loan to value ratio at which an obligation can be liquidated, as percentage" ], "type": "u8" }, { "name": "minLiquidationBonusBps", "docs": [ "Minimum bonus a liquidator receives when repaying part of an unhealthy obligation, as bps" ], "type": "u16" }, { "name": "maxLiquidationBonusBps", "docs": [ "Maximum bonus a liquidator receives when repaying part of an unhealthy obligation, as bps" ], "type": "u16" }, { "name": "badDebtLiquidationBonusBps", "docs": [ "Bad debt liquidation bonus for an undercollateralized obligation, as bps" ], "type": "u16" }, { "name": "deleveragingMarginCallPeriodSecs", "docs": [ "Time in seconds that must pass before redemptions are enabled after the deposit limit is", "crossed.", "Only relevant when `autodeleverage_enabled == 1`, and must not be 0 in such case." ], "type": "u64" }, { "name": "deleveragingThresholdDecreaseBpsPerDay", "docs": [ "The rate at which the deleveraging threshold decreases, in bps per day.", "Only relevant when `autodeleverage_enabled == 1`, and must not be 0 in such case." ], "type": "u64" }, { "name": "fees", "docs": [ "Program owner fees assessed, separate from gains due to interest accrual" ], "type": { "defined": "ReserveFees" } }, { "name": "borrowRateCurve", "docs": [ "Borrow rate curve based on utilization" ], "type": { "defined": "BorrowRateCurve" } }, { "name": "borrowFactorPct", "docs": [ "Borrow factor in percentage - used for risk adjustment" ], "type": "u64" }, { "name": "depositLimit", "docs": [ "Maximum deposit limit of liquidity in native units, u64::MAX for inf" ], "type": "u64" }, { "name": "borrowLimit", "docs": [ "Maximum amount borrowed, u64::MAX for inf, 0 to disable borrows (protected deposits)" ], "type": "u64" }, { "name": "tokenInfo", "docs": [ "Token id from TokenInfos struct" ], "type": { "defined": "TokenInfo" } }, { "name": "depositWithdrawalCap", "docs": [ "Deposit withdrawal caps - deposit & redeem" ], "type": { "defined": "WithdrawalCaps" } }, { "name": "debtWithdrawalCap", "docs": [ "Debt withdrawal caps - borrow & repay" ], "type": { "defined": "WithdrawalCaps" } }, { "name": "elevationGroups", "type": { "array": [ "u8", 20 ] } }, { "name": "disableUsageAsCollOutsideEmode", "type": "u8" }, { "name": "utilizationLimitBlockBorrowingAbovePct", "docs": [ "Utilization (in percentage) above which borrowing is blocked. 0 to disable." ], "type": "u8" }, { "name": "autodeleverageEnabled", "docs": [ "Whether this reserve should be subject to auto-deleveraging after deposit or borrow limit is", "crossed.", "Besides this flag, the lending market's flag also needs to be enabled (logical `AND`).", "**NOTE:** the manual \"target LTV\" deleveraging (enabled by the risk council for individual", "obligations) is NOT affected by this flag." ], "type": "u8" }, { "name": "reserved1", "type": { "array": [ "u8", 1 ] } }, { "name": "borrowLimitOutsideElevationGroup", "docs": [ "Maximum amount liquidity of this reserve borrowed outside all elevation groups", "- u64::MAX for inf", "- 0 to disable borrows outside elevation groups" ], "type": "u64" }, { "name": "borrowLimitAgainstThisCollateralInElevationGroup", "docs": [ "Defines the maximum amount (in lamports of elevation group debt asset)", "that can be borrowed when this reserve is used as collateral.", "- u64::MAX for inf", "- 0 to disable borrows in this elevation group (expected value for the debt asset)" ], "type": { "array": [ "u64", 32 ] } }, { "name": "deleveragingBonusIncreaseBpsPerDay", "docs": [ "The rate at which the deleveraging-related liquidation bonus increases, in bps per day.", "Only relevant when `autodeleverage_enabled == 1`, and must not be 0 in such case." ], "type": "u64" } ] } }, { "name": "ReserveFees", "docs": [ "Additional fee information on a reserve", "", "These exist separately from interest accrual fees, and are specifically for the program owner", "and referral fee. The fees are paid out as a percentage of liquidity token amounts during", "repayments and liquidations." ], "type": { "kind": "struct", "fields": [ { "name": "borrowFeeSf", "docs": [ "Fee assessed on `BorrowObligationLiquidity`, as scaled fraction (60 bits fractional part)", "Must be between `0` and `2^60`, such that `2^60 = 1`. A few examples for", "clarity:", "1% = (1 << 60) / 100 = 11529215046068470", "0.01% (1 basis point) = 115292150460685", "0.00001% (Aave borrow fee) = 115292150461" ], "type": "u64" }, { "name": "flashLoanFeeSf", "docs": [ "Fee for flash loan, expressed as scaled fraction.", "0.3% (Aave flash loan fee) = 0.003 * 2^60 = 3458764513820541" ], "type": "u64" }, { "name": "padding", "docs": [ "Used for allignment" ], "type": { "array": [ "u8", 8 ] } } ] } }, { "name": "ReserveLiquidity", "docs": [ "Reserve liquidity" ], "type": { "kind": "struct", "fields": [ { "name": "mintPubkey", "docs": [ "Reserve liquidity mint address" ], "type": "publicKey" }, { "name": "supplyVault", "docs": [ "Reserve liquidity supply address" ], "type": "publicKey" }, { "name": "feeVault", "docs": [ "Reserve liquidity fee collection address" ], "type": "publicKey" }, { "name": "availableAmount", "docs": [ "Reserve liquidity available" ], "type": "u64" }, { "name": "borrowedAmountSf", "docs": [ "Reserve liquidity borrowed (scaled fraction)" ], "type": "u128" }, { "name": "marketPriceSf", "docs": [ "Reserve liquidity market price in quote currency (scaled fraction)" ], "type": "u128" }, { "name": "marketPriceLastUpdatedTs", "docs": [ "Unix timestamp of the market price (from the oracle)" ], "type": "u64" }, { "name": "mintDecimals", "docs": [ "Reserve liquidity mint decimals" ], "type": "u64" }, { "name": "depositLimitCrossedTimestamp", "docs": [ "Timestamp when the last refresh reserve detected that the liquidity amount is above the deposit cap. When this threshold is crossed, then redemptions (auto-deleverage) are enabled.", "If the threshold is not crossed, then the timestamp is set to 0" ], "type": "u64" }, { "name": "borrowLimitCrossedTimestamp", "docs": [ "Timestamp when the last refresh reserve detected that the borrowed amount is above the borrow cap. When this threshold is crossed, then redemptions (auto-deleverage) are enabled.", "If the threshold is not crossed, then the timestamp is set to 0" ], "type": "u64" }, { "name": "cumulativeBorrowRateBsf", "docs": [ "Reserve liquidity cumulative borrow rate (scaled fraction)" ], "type": { "defined": "BigFractionBytes" } }, { "name": "accumulatedProtocolFeesSf", "docs": [ "Reserve cumulative protocol fees (scaled fraction)" ], "type": "u128" }, { "name": "accumulatedReferrerFeesSf", "docs": [ "Reserve cumulative referrer fees (scaled fraction)" ], "type": "u128" }, { "name": "pendingReferrerFeesSf", "docs": [ "Reserve pending referrer fees, to be claimed in refresh_obligation by referrer or protocol (scaled fraction)" ], "type": "u128" }, { "name": "absoluteReferralRateSf", "docs": [ "Reserve referrer fee absolute rate calculated at each refresh_reserve operation (scaled fraction)" ], "type": "u128" }, { "name": "tokenProgram", "docs": [ "Token program of the liquidity mint" ], "type": "publicKey" }, { "name": "padding2", "type": { "array": [ "u64", 51 ] } }, { "name": "padding3", "type": { "array": [ "u128", 32 ] } } ] } }, { "name": "WithdrawalCaps", "docs": [ "Reserve Withdrawal Caps State" ], "type": { "kind": "struct", "fields": [ { "name": "configCapacity", "type": "i64" }, { "name": "currentTotal", "type": "i64" }, { "name": "lastIntervalStartTimestamp", "type": "u64" }, { "name": "configIntervalLengthSeconds", "type": "u64" } ] } }, { "name": "PriceHeuristic", "type": { "kind": "struct", "fields": [ { "name": "lower", "docs": [ "Lower value of acceptable price" ], "type": "u64" }, { "name": "upper", "docs": [ "Upper value of acceptable price" ], "type": "u64" }, { "name": "exp", "docs": [ "Number of decimals of the previously defined values" ], "type": "u64" } ] } }, { "name": "PythConfiguration", "type": { "kind": "struct", "fields": [ { "name": "price", "docs": [ "Pubkey of the base price feed (disabled if `null` or `default`)" ], "type": "publicKey" } ] } }, { "name": "ScopeConfiguration", "type": { "kind": "struct", "fields": [ { "name": "priceFeed", "docs": [ "Pubkey of the scope price feed (disabled if `null` or `default`)" ], "type": "publicKey" }, { "name": "priceChain", "docs": [ "This is the scope_id price chain that results in a price for the token" ], "type": { "array": [ "u16", 4 ] } }, { "name": "twapChain", "docs": [ "This is the scope_id price chain for the twap" ], "type": { "array": [ "u16", 4 ] } } ] } }, { "name": "SwitchboardConfiguration", "type": { "kind": "struct", "fields": [ { "name": "priceAggregator", "docs": [ "Pubkey of the base price feed (disabled if `null` or `default`)" ], "type": "publicKey" }, { "name": "twapAggregator", "type": "publicKey" } ] } }, { "name": "TokenInfo", "type": { "kind": "struct", "fields": [ { "name": "name", "docs": [ "UTF-8 encoded name of the token (null-terminated)" ], "type": { "array": [ "u8", 32 ] } }, { "name": "heuristic", "docs": [ "Heuristics limits of acceptable price" ], "type": { "defined": "PriceHeuristic" } }, { "name": "maxTwapDivergenceBps", "docs": [ "Max divergence between twap and price in bps" ], "type": "u64" }, { "name": "maxAgePriceSeconds", "type": "u64" }, { "name": "maxAgeTwapSeconds", "type": "u64" }, { "name": "scopeConfiguration", "docs": [ "Scope price configuration" ], "type": { "defined": "ScopeConfiguration" } }, { "name": "switchboardConfiguration", "docs": [ "Switchboard configuration" ], "type": { "defined": "SwitchboardConfiguration" } }, { "name": "pythConfiguration", "docs": [ "Pyth configuration" ], "type": { "defined": "PythConfiguration" } }, { "name": "blockPriceUsage", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 7 ] } }, { "name": "padding", "type": { "array": [ "u64", 19 ] } } ] } }, { "name": "BorrowRateCurve", "type": { "kind": "struct", "fields": [ { "name": "points", "type": { "array": [ { "defined": "CurvePoint" }, 11 ] } } ] } }, { "name": "CurvePoint", "type": { "kind": "struct", "fields": [ { "name": "utilizationRateBps", "type": "u32" }, { "name": "borrowRateBps", "type": "u32" } ] } }, { "name": "VaultConfigField", "type": { "kind": "enum", "variants": [ { "name": "PerformanceFeeBps" }, { "name": "ManagementFeeBps" }, { "name": "MinDepositAmount" }, { "name": "MinWithdrawAmount" }, { "name": "MinInvestAmount" }, { "name": "MinInvestDelaySlots" }, { "name": "CrankFundFeePerReserve" }, { "name": "PendingVaultAdmin" }, { "name": "Name" }, { "name": "LookupTable" }, { "name": "Farm" }, { "name": "AllocationAdmin" } ] } }, { "name": "VaultAllocation", "type": { "kind": "struct", "fields": [ { "name": "reserve", "type": "publicKey" }, { "name": "ctokenVault", "type": "publicKey" }, { "name": "targetAllocationWeight", "type": "u64" }, { "name": "tokenAllocationCap", "docs": [ "Maximum token invested in this reserve" ], "type": "u64" }, { "name": "ctokenVaultBump", "type": "u64" }, { "name": "configPadding", "type": { "array": [ "u64", 127 ] } }, { "name": "ctokenAllocation", "type": "u64" }, { "name": "lastInvestSlot", "type": "u64" }, { "name": "tokenTargetAllocationSf", "type": "u128" }, { "name": "statePadding", "type": { "array": [ "u64", 128 ] } } ] } } ], "events": [ { "name": "DepositResultEvent", "fields": [ { "name": "sharesToMint", "type": "u64", "index": false }, { "name": "tokenToDeposit", "type": "u64", "index": false }, { "name": "crankFundsToDeposit", "type": "u64", "index": false } ] }, { "name": "DepositUserAtaBalanceEvent", "fields": [ { "name": "userAtaBalance", "type": "u64", "index": false } ] }, { "name": "SharesToWithdrawEvent", "fields": [ { "name": "sharesAmount", "type": "u64", "index": false }, { "name": "userSharesBefore", "type": "u64", "index": false } ] }, { "name": "WithdrawResultEvent", "fields": [ { "name": "sharesToBurn", "type": "u64", "index": false }, { "name": "availableToSendToUser", "type": "u64", "index": false }, { "name": "investedToDisinvestCtokens", "type": "u64", "index": false }, { "name": "investedLiquidityToSendToUser", "type": "u64", "index": false } ] } ], "errors": [ { "code": 7000, "name": "DepositAmountsZero", "msg": "DepositAmountsZero" }, { "code": 7001, "name": "SharesIssuedAmountDoesNotMatch", "msg": "SharesIssuedAmountDoesNotMatch" }, { "code": 7002, "name": "MathOverflow", "msg": "MathOverflow" }, { "code": 7003, "name": "IntegerOverflow", "msg": "IntegerOverflow" }, { "code": 7004, "name": "WithdrawAmountBelowMinimum", "msg": "Withdrawn amount is below minimum" }, { "code": 7005, "name": "TooMuchLiquidityToWithdraw", "msg": "TooMuchLiquidityToWithdraw" }, { "code": 7006, "name": "ReserveAlreadyExists",