@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
2,128 lines • 55.2 kB
JSON
{
"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",