Lending Rate Manager
The LendingRateManager
contract is used to manage fixed-term loan stable borrow rates and loan-to-value ratios for given loan durations.
Methods
setMarketBorrowRate()
function setMarketBorrowRate(uint256 reserveId, uint256 rate)
Sets the fixed-term stable borrow rate for a given reserve.
reserveId
uint256
id of the target reserve
rate
uint256
interest rate APR in ray
setMarketDurationLoanToValue()
function setMarketDurationLoanToValue(uint256 reserveId, uint256 duration, uint256 ltv)
Sets the LTV for a given reserve, for a given duration.
reserveId
uint256
id of the target reserve
duration
uint256
duration of the loan
ltv
uint256
loan-to-value percentage in 1e4, e.g. 1000 == 10%
View Methods
getMarketBorrowRate()
function getMarketBorrowRate(uint256 reserveId)
Gets the fixed-term stable borrow rate for a given reserve.
reserveId
uint256
id of the target reserve
Returns
rate
uint256
interest rate APR in ray
getMarketDurationLoanToValue()
function vetMarketDurationLoanToValue(uint256 reserveId, uint256 duration)
Gets the LTV for a given reserve, for a given duration.
reserveId
uint256
id of the target reserve
duration
uint256
duration of the loan
Returns
ltv
uint256
loan-to-value percentage in 1e4, e.g. 1000 == 10%
ABI
Lending Rate Manager ABI
{
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "reserveId",
"type": "uint256"
}
],
"name": "getMarketBorrowRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_reserveId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_duration",
"type": "uint256"
}
],
"name": "getMarketDurationLoanToValue",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "reserveId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rate",
"type": "uint256"
}
],
"name": "setMarketBorrowRate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_reserveId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_duration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_ltv",
"type": "uint256"
}
],
"name": "setMarketDurationLoanToValue",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"getMarketBorrowRate(uint256)": "f12c8b35",
"getMarketDurationLoanToValue(uint256,uint256)": "2ee1bbb0",
"setMarketBorrowRate(uint256,uint256)": "7dc492d1",
"setMarketDurationLoanToValue(uint256,uint256,uint256)": "2d65150b"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"}],\"name\":\"getMarketBorrowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"getMarketDurationLoanToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"setMarketBorrowRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ltv\",\"type\":\"uint256\"}],\"name\":\"setMarketDurationLoanToValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getMarketBorrowRate(uint256)\":{\"details\":\"returns the market borrow rate in ray*\"},\"getMarketDurationLoanToValue(uint256,uint256)\":{\"details\":\"Sets the borrow rate of the reserve*\"},\"setMarketBorrowRate(uint256,uint256)\":{\"details\":\"sets the market borrow rate. Rate value must be in ray*\"},\"setMarketDurationLoanToValue(uint256,uint256,uint256)\":{\"details\":\"Sets the borrow rate of the reserve*\"}},\"title\":\"ILendingRateManager interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface for the FluidNFT borrow rate manager. Provides the average market borrow rate to be used as a base for the stable borrow rate calculations*\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILendingRateManager.sol\":\"ILendingRateManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/interfaces/ILendingRateManager.sol\":{\"keccak256\":\"0x6078c32591ae3ced86c344ad2f228fbcc625f09cd59a8f7014355adb89dfcde0\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://fa594c0ceb1a0a085a6b077ac0729663f839f33f760eb8775ff1b3d25415e097\",\"dweb:/ipfs/QmXU74R73UDHiwvVaU9LRrC1tHaDq5eCerenKQtFX97UL6\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.16+commit.07a7930e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "reserveId",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "getMarketBorrowRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_reserveId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_duration",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "getMarketDurationLoanToValue",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "reserveId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rate",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setMarketBorrowRate"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_reserveId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_duration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_ltv",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setMarketDurationLoanToValue"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"getMarketBorrowRate(uint256)": {
"details": "returns the market borrow rate in ray*"
},
"getMarketDurationLoanToValue(uint256,uint256)": {
"details": "Sets the borrow rate of the reserve*"
},
"setMarketBorrowRate(uint256,uint256)": {
"details": "sets the market borrow rate. Rate value must be in ray*"
},
"setMarketDurationLoanToValue(uint256,uint256,uint256)": {
"details": "Sets the borrow rate of the reserve*"
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
":@chainlink/=lib/chainlink/",
":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
":ds-test/=lib/forge-std/lib/ds-test/src/",
":forge-std/=lib/forge-std/src/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"src/interfaces/ILendingRateManager.sol": "ILendingRateManager"
},
"libraries": {}
},
"sources": {
"src/interfaces/ILendingRateManager.sol": {
"keccak256": "0x6078c32591ae3ced86c344ad2f228fbcc625f09cd59a8f7014355adb89dfcde0",
"urls": [
"bzz-raw://fa594c0ceb1a0a085a6b077ac0729663f839f33f760eb8775ff1b3d25415e097",
"dweb:/ipfs/QmXU74R73UDHiwvVaU9LRrC1tHaDq5eCerenKQtFX97UL6"
],
"license": "AGPL-3.0"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/interfaces/ILendingRateManager.sol",
"id": 49045,
"exportedSymbols": {
"ILendingRateManager": [
49044
]
},
"nodeType": "SourceUnit",
"src": "37:933:114",
"nodes": [
{
"id": 49006,
"nodeType": "PragmaDirective",
"src": "37:23:114",
"nodes": [],
"literals": [
"solidity",
"0.8",
".16"
]
},
{
"id": 49044,
"nodeType": "ContractDefinition",
"src": "276:693:114",
"nodes": [
{
"id": 49015,
"nodeType": "FunctionDefinition",
"src": "377:80:114",
"nodes": [],
"documentation": {
"id": 49008,
"nodeType": "StructuredDocumentation",
"src": "312:60:114",
"text": "@dev returns the market borrow rate in ray*"
},
"functionSelector": "f12c8b35",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "getMarketBorrowRate",
"nameLocation": "386:19:114",
"parameters": {
"id": 49011,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49010,
"mutability": "mutable",
"name": "reserveId",
"nameLocation": "414:9:114",
"nodeType": "VariableDeclaration",
"scope": 49015,
"src": "406:17:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49009,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "406:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "405:19:114"
},
"returnParameters": {
"id": 49014,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49013,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 49015,
"src": "448:7:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49012,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "448:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "447:9:114"
},
"scope": 49044,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 49023,
"nodeType": "FunctionDefinition",
"src": "545:71:114",
"nodes": [],
"documentation": {
"id": 49016,
"nodeType": "StructuredDocumentation",
"src": "463:77:114",
"text": "@dev sets the market borrow rate. Rate value must be in ray*"
},
"functionSelector": "7dc492d1",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setMarketBorrowRate",
"nameLocation": "554:19:114",
"parameters": {
"id": 49021,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49018,
"mutability": "mutable",
"name": "reserveId",
"nameLocation": "582:9:114",
"nodeType": "VariableDeclaration",
"scope": 49023,
"src": "574:17:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49017,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "574:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49020,
"mutability": "mutable",
"name": "rate",
"nameLocation": "601:4:114",
"nodeType": "VariableDeclaration",
"scope": 49023,
"src": "593:12:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49019,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "593:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "573:33:114"
},
"returnParameters": {
"id": 49022,
"nodeType": "ParameterList",
"parameters": [],
"src": "615:0:114"
},
"scope": 49044,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49033,
"nodeType": "FunctionDefinition",
"src": "687:109:114",
"nodes": [],
"documentation": {
"id": 49024,
"nodeType": "StructuredDocumentation",
"src": "622:60:114",
"text": " @dev Sets the borrow rate of the reserve*"
},
"functionSelector": "2ee1bbb0",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "getMarketDurationLoanToValue",
"nameLocation": "696:28:114",
"parameters": {
"id": 49029,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49026,
"mutability": "mutable",
"name": "_reserveId",
"nameLocation": "733:10:114",
"nodeType": "VariableDeclaration",
"scope": 49033,
"src": "725:18:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49025,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "725:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49028,
"mutability": "mutable",
"name": "_duration",
"nameLocation": "753:9:114",
"nodeType": "VariableDeclaration",
"scope": 49033,
"src": "745:17:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49027,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "745:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "724:39:114"
},
"returnParameters": {
"id": 49032,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49031,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 49033,
"src": "787:7:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49030,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "787:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "786:9:114"
},
"scope": 49044,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 49043,
"nodeType": "FunctionDefinition",
"src": "867:100:114",
"nodes": [],
"documentation": {
"id": 49034,
"nodeType": "StructuredDocumentation",
"src": "802:60:114",
"text": " @dev Sets the borrow rate of the reserve*"
},
"functionSelector": "2d65150b",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setMarketDurationLoanToValue",
"nameLocation": "876:28:114",
"parameters": {
"id": 49041,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49036,
"mutability": "mutable",
"name": "_reserveId",
"nameLocation": "913:10:114",
"nodeType": "VariableDeclaration",
"scope": 49043,
"src": "905:18:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49035,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "905:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49038,
"mutability": "mutable",
"name": "_duration",
"nameLocation": "933:9:114",
"nodeType": "VariableDeclaration",
"scope": 49043,
"src": "925:17:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49037,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "925:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49040,
"mutability": "mutable",
"name": "_ltv",
"nameLocation": "952:4:114",
"nodeType": "VariableDeclaration",
"scope": 49043,
"src": "944:12:114",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49039,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "944:7:114",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "904:53:114"
},
"returnParameters": {
"id": 49042,
"nodeType": "ParameterList",
"parameters": [],
"src": "966:0:114"
},
"scope": 49044,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "ILendingRateManager",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 49007,
"nodeType": "StructuredDocumentation",
"src": "62:212:114",
"text": " @title ILendingRateManager interface\n @notice Interface for the FluidNFT borrow rate manager. \n Provides the average market borrow rate to be used as a base for the stable borrow rate calculations*"
},
"fullyImplemented": false,
"linearizedBaseContracts": [
49044
],
"name": "ILendingRateManager",
"nameLocation": "286:19:114",
"scope": 49045,
"usedErrors": []
}
],
"license": "AGPL-3.0"
},
"id": 114
}
Last updated