UNPKG

@kamino-finance/klend-sdk

Version:

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

2,083 lines 69.1 kB
{ "version": "1.0.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": "reserveWhitelistEntry", "isMut": false, "isSigner": false, "isOptional": true }, { "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": "buy", "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": "globalConfig", "isMut": false, "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": "sell", "accounts": [ { "name": "withdrawFromAvailable", "accounts": [ { "name": "user", "isMut": true, "isSigner": true }, { "name": "vaultState", "isMut": true, "isSigner": false }, { "name": "globalConfig", "isMut": false, "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": "reserveWhitelistEntry", "isMut": false, "isSigner": false, "isOptional": true }, { "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": "signer", "isMut": false, "isSigner": true }, { "name": "globalConfig", "isMut": false, "isSigner": false }, { "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": "globalConfig", "isMut": false, "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": [] }, { "name": "initGlobalConfig", "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "globalConfig", "isMut": true, "isSigner": false }, { "name": "programData", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "updateGlobalConfig", "accounts": [ { "name": "globalAdmin", "isMut": false, "isSigner": true }, { "name": "globalConfig", "isMut": true, "isSigner": false } ], "args": [ { "name": "update", "type": { "defined": "UpdateGlobalConfigMode" } } ] }, { "name": "updateGlobalConfigAdmin", "accounts": [ { "name": "pendingAdmin", "isMut": false, "isSigner": true }, { "name": "globalConfig", "isMut": true, "isSigner": false } ], "args": [] }, { "name": "addUpdateWhitelistedReserve", "accounts": [ { "name": "globalAdmin", "isMut": true, "isSigner": true }, { "name": "globalConfig", "isMut": false, "isSigner": false }, { "name": "reserve", "isMut": false, "isSigner": false }, { "name": "reserveWhitelistEntry", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "update", "type": { "defined": "UpdateReserveWhitelistMode" } } ] } ], "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": "GlobalConfig", "type": { "kind": "struct", "fields": [ { "name": "globalAdmin", "type": "publicKey" }, { "name": "pendingAdmin", "type": "publicKey" }, { "name": "withdrawalPenaltyLamports", "type": "u64" }, { "name": "withdrawalPenaltyBps", "type": "u64" }, { "name": "padding", "type": { "array": [ "u8", 944 ] } } ] } }, { "name": "ReserveWhitelistEntry", "type": { "kind": "struct", "fields": [ { "name": "tokenMint", "docs": [ "The token mint is stored to solve the problem of finding all the whitelisted reserves for a particular token mint:", "when storing the token mint inside the PDA, finding all the whitelisted reserves becomes a `getProgramAccounts` with", "a filter on discriminator + the mint field", "The reserve pubkey, as seed of the reserve whitelist PDA account, it stored so you can link back the PDA to its seeds", "(for instance, in the operation above we easily find the reserve corresponding to the PDA)" ], "type": "publicKey" }, { "name": "reserve", "type": "publicKey" }, { "name": "whitelistAddAllocation", "type": "u8" }, { "name": "whitelistInvest", "type": "u8" }, { "name": "padding", "type": { "array": [ "u8", 62 ] } } ] } }, { "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": "unallocatedWeight", "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": "unallocatedTokensCap", "type": "u64" }, { "name": "allocationAdmin", "type": "publicKey" }, { "name": "withdrawalPenaltyLamports", "type": "u64" }, { "name": "withdrawalPenaltyBps", "type": "u64" }, { "name": "firstLossCapitalFarm", "type": "publicKey" }, { "name": "allowAllocationsInWhitelistedReservesOnly", "type": "u8" }, { "name": "allowInvestInWhitelistedReservesOnly", "type": "u8" }, { "name": "padding4", "type": { "array": [ "u8", 14 ] } }, { "name": "padding3", "type": { "array": [ "u128", 238 ] } } ] } } ], "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": "minDeleveragingBonusBps", "docs": [ "Starting bonus for deleveraging-related liquidations, in bps." ], "type": "u16" }, { "name": "blockCtokenUsage", "docs": [ "Boolean flag to block minting/redeeming of ctokens", "Blocks usage of ctokens (minting or withdrawing from obligation)", "Effectively blocks deposit_reserve_liquidity and withdraw_obligation_collateral" ], "type": "u8" }, { "name": "reserved1", "docs": [ "Past reserved space - feel free to reuse." ], "type": { "array": [ "u8", 6 ] } }, { "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": "proposerAuthorityLocked", "docs": [ "Boolean flag indicating whether the reserve is locked for the proposer authority.", "", "Once the proposer have finished preparing the reserve, it must be locked to prevent", "further changes to the reserve configuration allowing review and voting on the proposal", "without alteration during the voting period." ], "type": "u8" }, { "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": "originationFeeSf", "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 origination 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