Configurator

The Configurator contract is used by the admin as a single point of entry to configure protocol parameters.

Methods

batchInitLendingPoolReserve()

function batchInitLendingPoolReserve(ConfigTypes.InitReserveInput[] calldata input)

Batch initialises lending pool reserves.

Parameter NameTypeDescription

input

ConfigTypes.InitReserveInput[] calldata

See ConfigTypes library for detail.

setBorrowingFlagOnReserve()

function setBorrowingFlagOnReserve(uint256[] calldata reserveIds, bool flag)

Sets the borrowing for a given list of reserveIds.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

flag

bool

true if borrowing is enabled

setBorrowingRateBorrowingOnReserve()

function setVariableRateBorrowingOnReserve(uint256[] calldata reserveIds, bool flag)

Sets the variable rate borrowing for a given list of reserveIds.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

flag

bool

true if variable rate borrowing is enabled

setActiveFlagOnReserve()

function setActiveFlagOnReserve(uint256[] calldata reserveIds, bool flag)

Sets the active state for a given list of reserveIds.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

flag

bool

true if reserve is active

setFreezeFlagOnReserve()

function setFreezeFlagOnReserve(uint256[] calldata reserveIds, bool flag)

Sets the freeze state for a given list of reserveIds.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

flag

bool

true if reserve is frozen

setReserveFactor()

function setReserveFactor(uint256[] calldata reserveIds, uint256 factor)

Sets the reserve factor for a given list of reserveIds.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

factor

uint256

the percentage of yield that goes to the protocol

setReserveInterestRateAddress()

function setReserveInterestRateAddress(uint256[] calldata reserveIds, uint256 rateAddress)

Sets the reserve interest rate model address for a given list of reserveIds.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

rateAddress

address

address of the interest rate model

batchConfigReserve()

function batchConfigReserve(ConfigTypes.ConfigReserveInput[] calldata inputs)

Batch configures reserve parameters.

Parameter NameTypeDescription

inputs

ConfigTypes.ConfigReserveInput[] calldata

See ConfigTypes library for detail.

configureReserveAuction()

function configureReserveAuction(uint256[] calldata reserveIds, uint256 liquidationBonus, uint256 auctionDuration, uint256 auctionPriceMultiple)

Configures reserve auction parameters for a list of reserveIds.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

liquidationBonus

uint256

bonus paid to auction stakeholders

auctionDuration

uint256

duration of the auction

auctionPriceMultiple

uint256

dutch auction start price multiplier

setReserveMaxSupply()

function setReserveMaxSupply(uint256[] calldata reserveIds, uint256 maxSupply)

Sets the max supply of NFTs that can be used as collateral within a list of reserves.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of target reserves

maxSupply

uint256

max number of NFTs that can be used as collateral within the reserve

setReserveCreatorAddress()

function setReserveCreatorAddress(uint256 reserveId, address creator)

Sets the creator address for a reserve.

Parameter NameTypeDescription

reserveId

uint256

ids of target reserves

creator

address

address to pay creator royalties

setReserveCreatorPercentage()

function setReserveCreatorPercentage(uint256 reserveId, uint256 percentage)

Sets the creator percentage of collection fees accrued to the protocol.

Parameter NameTypeDescription

reserveId

uint256

ids of target reserves

percentage

uint256

percentage in 1e4, e.g. 5000 == 50%

setMaxNumberOfReserves()

function setMaxNumberOfReserves(uint256 newVal)

Sets the maximum number of reserves permitted within the protocol.

Parameter NameTypeDescription

newVal

uint256

maximum number of reserves permitted

setPoolPause()

function setPoolPause(bool val)

Pauses / unpauses all actions of the protocol including fToken transfers. Only actionable by the emergency admin.

Parameter NameTypeDescription

val

bool

true to pause, false to unpause

setPoolPauseTime()

function setPoolPauseTime(uint256 startTime, uint256 duration)

Pauses / unpauses all actions of the protocol including fToken transfers; at a given time, for a given duration. Only actionable by the emergency admin.

Parameter NameTypeDescription

startTime

uint256

pause start time

duration

uint256

pause duration from the start time

updateFToken()

function updateFToken(ConfigTypes.UpdateFTokenInput[] calldata inputs)

Updates the fToken implementation for the reserve.

Parameter NameTypeDescription

inputs

ConfigTypes.UpdateFTokenInput[] calldata

See ConfigTypes library for detail.

updateStableDebtToken()

function updateStableDebtToken(ConfigTypes.UpdateStableDebtTokenInput[] calldata inputs)

Updates the stableDebtToken implementation for the reserve.

Parameter NameTypeDescription

inputs

ConfigTypes.UpdateStableDebtTokenInput[] calldata

See ConfigTypes library for detail.

updateVariableDebtToken()

function updateVariableDebtToken(ConfigTypes.UpdateVariableDebtTokenInput[] calldata inputs)

Updates the variableDebtToken implementation for the reserve.

Parameter NameTypeDescription

inputs

ConfigTypes.UpdateVariableDebtTokenInput[] calldata

See ConfigTypes library for detail.

approveExecutionDelegateContracts()

function approveExecutionDelegateContracts(address[] calldata contracts)

Approves contracts to send/receive tokens on behalf of the execution delegate.

Parameter NameTypeDescription

contracts

address[] calldata

addresses of contracts approved by the execution delegate

approveWETHExecutionDelegate()

function approveWETHExecutionDelegate()

Approves the Execution Delegate contract to send/receive tokens on behalf of the WETH Gateway.

View Methods

ABI

Configurator ABI
{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "BorrowingDisabledOnReserve",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "BorrowingEnabledOnReserve",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "DebtTokenUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "FTokenUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxNumberOfReserves",
          "type": "uint256"
        }
      ],
      "name": "MaxNumberOfReservesChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "method",
          "type": "string"
        }
      ],
      "name": "PriceConsumerAssetPriceMethodChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "method",
          "type": "string"
        }
      ],
      "name": "PriceConsumerNftPriceMethodChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "ReserveActivated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidationBonus",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "auctionDuration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "auctionPriceMultiple",
          "type": "uint256"
        }
      ],
      "name": "ReserveAuctionChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "ltv",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidationThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidationBonus",
          "type": "uint256"
        }
      ],
      "name": "ReserveCollateralConfigurationChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "ReserveDeactivated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "factor",
          "type": "uint256"
        }
      ],
      "name": "ReserveFactorChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "ReserveFrozen",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "fToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "stableDebtToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "variableDebtToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "interestRateStrategyAddress",
          "type": "address"
        }
      ],
      "name": "ReserveInitialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "strategy",
          "type": "address"
        }
      ],
      "name": "ReserveInterestRateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxSupply",
          "type": "uint256"
        }
      ],
      "name": "ReserveMaxSupplyChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemThreshold",
          "type": "uint256"
        }
      ],
      "name": "ReserveRedeemThresholdChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "ReserveUnfrozen",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "VariableRateBorrowingDisabledOnReserve",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "VariableRateBorrowingEnabledOnReserve",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "contracts",
          "type": "address[]"
        }
      ],
      "name": "approveExecutionDelegateContracts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "approveWETHExecutionDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveFactor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ltv",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decimals",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "gracePeriod",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidationBonus",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidationThreshold",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "auctionDuration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "auctionPriceMultiple",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "borrowingEnabled",
              "type": "bool"
            }
          ],
          "internalType": "struct ConfigTypes.ConfigReserveInput[]",
          "name": "inputs",
          "type": "tuple[]"
        }
      ],
      "name": "batchConfigReserve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingCollateral",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "underlyingCollateralName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "underlyingCollateralSymbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMaxTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMinTokenId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "underlyingAssetName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "underlyingAssetSymbol",
              "type": "string"
            },
            {
              "internalType": "uint8",
              "name": "underlyingAssetDecimals",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "fTokenImpl",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "fTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "fTokenSymbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "stableDebtTokenImpl",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "stableDebtTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "stableDebtTokenSymbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "variableDebtTokenImpl",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "variableDebtTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "variableDebtTokenSymbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "interestRateStrategy",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "baseLTV",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "treasury",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creatorPercentage",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "auctionCallerPercentage",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "auctionCreatorPercentage",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "assetPriceFeed",
              "type": "string"
            }
          ],
          "internalType": "struct ConfigTypes.InitReserveInput[]",
          "name": "input",
          "type": "tuple[]"
        }
      ],
      "name": "batchInitLendingPoolReserve",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "liquidationBonus",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "auctionDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "auctionPriceMultiple",
          "type": "uint256"
        }
      ],
      "name": "configureReserveAuction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addressProvider",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "bool",
          "name": "flag",
          "type": "bool"
        }
      ],
      "name": "setActiveFlagOnReserve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "bool",
          "name": "flag",
          "type": "bool"
        }
      ],
      "name": "setBorrowingFlagOnReserve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "bool",
          "name": "flag",
          "type": "bool"
        }
      ],
      "name": "setFreezeFlagOnReserve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newVal",
          "type": "uint256"
        }
      ],
      "name": "setMaxNumberOfReserves",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "val",
          "type": "bool"
        }
      ],
      "name": "setPoolPause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "durationTime",
          "type": "uint256"
        }
      ],
      "name": "setPoolPausedTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "setReserveCreatorAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "setReserveCreatorPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "reserveFactor",
          "type": "uint256"
        }
      ],
      "name": "setReserveFactor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address",
          "name": "rateAddress",
          "type": "address"
        }
      ],
      "name": "setReserveInterestRateAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "maxSupply",
          "type": "uint256"
        }
      ],
      "name": "setReserveMaxSupply",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "bool",
          "name": "flag",
          "type": "bool"
        }
      ],
      "name": "setVariableRateBorrowingFlagOnReserve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "implementation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "encodedCallData",
              "type": "bytes"
            }
          ],
          "internalType": "struct ConfigTypes.UpdateFTokenInput[]",
          "name": "inputs",
          "type": "tuple[]"
        }
      ],
      "name": "updateFToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "implementation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "encodedCallData",
              "type": "bytes"
            }
          ],
          "internalType": "struct ConfigTypes.UpdateDebtTokenInput[]",
          "name": "inputs",
          "type": "tuple[]"
        }
      ],
      "name": "updateStableDebtToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "implementation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "encodedCallData",
              "type": "bytes"
            }
          ],
          "internalType": "struct ConfigTypes.UpdateDebtTokenInput[]",
          "name": "inputs",
          "type": "tuple[]"
        }
      ],
      "name": "updateVariableDebtToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50613d9e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806380a4d93d116100b8578063c4d66de81161007c578063c4d66de814610268578063c739fd411461027b578063ceaedb9b1461028e578063d9db75ee146102a1578063e49c8a52146102b4578063f9e8cafa146102c757600080fd5b806380a4d93d1461020957806384636d4f1461021c578063a9c644011461022f578063bbce5cf314610242578063bfead1a41461025557600080fd5b80633c8db8b1116100ff5780633c8db8b1146101aa5780635b5b815e146101bd578063746c35a2146101d05780637641f3d9146101e35780637bb28860146101f657600080fd5b80630e3427891461013c57806312b4f1901461014657806314699c651461015957806329534299146101845780632d72e18e14610197575b600080fd5b6101446102da565b005b610144610154366004613176565b61045b565b61016c6101673660046131cc565b610618565b60405161017b93929190613251565b60405180910390f35b6101446101923660046131cc565b6108ed565b6101446101a5366004613294565b610a5b565b6101446101b83660046131cc565b610c09565b6101446101cb3660046132ef565b610d71565b6101446101de366004613342565b611016565b6101446101f136600461335b565b611210565b6101446102043660046132ef565b61132e565b6101446102173660046131cc565b6115e2565b61014461022a36600461337d565b6117b1565b61014461023d366004613294565b6118d7565b61014461025036600461339f565b611b21565b6101446102633660046132ef565b611c16565b6101446102763660046133cf565b611ebb565b6101446102893660046133ec565b611fe0565b61014461029c3660046131cc565b6124a5565b6101446102af366004613461565b61260d565b6101446102c236600461337d565b612876565b6101446102d53660046132ef565b612969565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015610323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034791906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906103945760405162461bcd60e51b815260040161038b9190613506565b60405180910390fd5b50603354604080516377532ed960e01b815290516000926001600160a01b0316916377532ed99160048083019260209291908290030181865afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040391906134c5565b9050806001600160a01b031663caaabc606040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561044057600080fd5b505af1158015610454573d6000803e3d6000fd5b5050505050565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa1580156104a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c891906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b8152509061050c5760405162461bcd60e51b815260040161038b9190613506565b506000610517612bf7565b905060005b8381101561045457816001600160a01b0316631932277586868481811061054557610545613539565b90506020020135856040518363ffffffff1660e01b815260040161057c9291909182526001600160a01b0316602082015260400190565b600060405180830381600087803b15801561059657600080fd5b505af11580156105aa573d6000803e3d6000fd5b505050508484828181106105c0576105c0613539565b6040516001600160a01b038716815260209182029390930135927ffe4461f34cf72b37179ac7dc6e66d7e91f10582c203cc08170ea5bf090983c0a92500160405180910390a2806106108161354f565b91505061051c565b603354604080516315d9b46f60e31b815290516060928392839233926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015610668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068c91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906106d05760405162461bcd60e51b815260040161038b9190613506565b506000846001600160401b038111156106eb576106eb613576565b604051908082528060200260200182016040528015610714578160200160208202803683370190505b5090506000856001600160401b0381111561073157610731613576565b60405190808252806020026020018201604052801561075a578160200160208202803683370190505b5090506000866001600160401b0381111561077757610777613576565b6040519080825280602002602001820160405280156107a0578160200160208202803683370190505b50905060006107ad612bf7565b905060005b888110156108de5760335473__$0fe017e20684fbd032f923e9d615f3d00e$__9063a1086fed906001600160a01b0316848d8d868181106107f5576107f5613539565b9050602002810190610807919061358c565b6040518463ffffffff1660e01b81526004016108259392919061362c565b606060405180830381865af4158015610842573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086691906139aa565b87848151811061087857610878613539565b6020026020010187858151811061089157610891613539565b602002602001018786815181106108aa576108aa613539565b6001600160a01b039485166020918202929092010152928216909252919091169052806108d68161354f565b9150506107b2565b50929891975095509350505050565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b8152509061099e5760405162461bcd60e51b815260040161038b9190613506565b5060006109a9612bf7565b905060005b82811015610a555773__$0fe017e20684fbd032f923e9d615f3d00e$__63d6979abe838686858181106109e3576109e3613539565b90506020028101906109f591906139ec565b6040518363ffffffff1660e01b8152600401610a12929190613a7d565b60006040518083038186803b158015610a2a57600080fd5b505af4158015610a3e573d6000803e3d6000fd5b505050508080610a4d9061354f565b9150506109ae565b50505050565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac891906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b81525090610b0c5760405162461bcd60e51b815260040161038b9190613506565b506000610b17612bf7565b905060005b8381101561045457816001600160a01b031663d6ee0f73868684818110610b4557610b45613539565b90506020020135856040518363ffffffff1660e01b8152600401610b73929190918252602082015260400190565b600060405180830381600087803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050848482818110610bb757610bb7613539565b905060200201357fb5be071c2a981f4f4236982ec3bf0fcdb1a9b1471de2be1a7e78529eddd1f49e84604051610bef91815260200190565b60405180910390a280610c018161354f565b915050610b1c565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7691906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b81525090610cba5760405162461bcd60e51b815260040161038b9190613506565b506000610cc5612bf7565b905060005b82811015610a555773__$0fe017e20684fbd032f923e9d615f3d00e$__63a94cd28d83868685818110610cff57610cff613539565b9050602002810190610d1191906139ec565b6040518363ffffffff1660e01b8152600401610d2e929190613a7d565b60006040518083038186803b158015610d4657600080fd5b505af4158015610d5a573d6000803e3d6000fd5b505050508080610d699061354f565b915050610cca565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b81525090610e225760405162461bcd60e51b815260040161038b9190613506565b506000610e2d612bf7565b905060005b83811015610454576000826001600160a01b031663eadff055878785818110610e5d57610e5d613539565b905060200201356040518263ffffffff1660e01b8152600401610e8291815260200190565b6020604051808303816000875af1158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec59190613b13565b90508315610edd57610ed8816001612c6a565b610ee8565b610ee8816000612c6a565b826001600160a01b03166389a7245d878785818110610f0957610f09613539565b9050602002013583600001516040518363ffffffff1660e01b8152600401610f3b929190918252602082015260400190565b600060405180830381600087803b158015610f5557600080fd5b505af1158015610f69573d6000803e3d6000fd5b505050508315610fbd57858583818110610f8557610f85613539565b905060200201357ff110ac45454fea6974019bce0132b7e85f3247dc7d147b3afbf3979c64d45ef460405160405180910390a2611003565b858583818110610fcf57610fcf613539565b905060200201357feed17fae9c8c79df92a8a28c129668d097f5c55c4cc4ea42d2d618c0fda8af8a60405160405180910390a25b508061100e8161354f565b915050610e32565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108391906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906110c75760405162461bcd60e51b815260040161038b9190613506565b5060006110d2612bf7565b90506000816001600160a01b03166308ac08b96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190613b2f565b90508083116040518060400160405280600381526020016237303160e81b815250906111775760405162461bcd60e51b815260040161038b9190613506565b50604051633a361ad160e11b8152600481018490526001600160a01b0383169063746c35a290602401600060405180830381600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050507f2326a0df34db769e143ca92ed7e2cd69db0263ec9604411030cbe62da6f62b218360405161120391815260200190565b60405180910390a1505050565b60335460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d91906134c5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b815250906112c15760405162461bcd60e51b815260040161038b9190613506565b5060006112cc612bf7565b60405163bedb86fb60e01b815283151560048201529091506001600160a01b0382169063bedb86fb90602401600060405180830381600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b505050505050565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015611377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139b91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906113df5760405162461bcd60e51b815260040161038b9190613506565b5060006113ea612bf7565b905060005b83811015610454576000826001600160a01b031663eadff05587878581811061141a5761141a613539565b905060200201356040518263ffffffff1660e01b815260040161143f91815260200190565b6020604051808303816000875af115801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114829190613b13565b9050836114aa576114aa86868481811061149e5761149e613539565b90506020020135612c98565b6114b48185612de4565b826001600160a01b03166389a7245d8787858181106114d5576114d5613539565b9050602002013583600001516040518363ffffffff1660e01b8152600401611507929190918252602082015260400190565b600060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b5050505083156115895785858381811061155157611551613539565b905060200201357f1603fabc6ecfe8a2406f0d0a45592fff62c0c6875901cf35d8a091c74cc08b9a60405160405180910390a26115cf565b85858381811061159b5761159b613539565b905060200201357f8062272b11576c2818b72b2017028f551699cd48fb41767885eb72d18e44dbb260405160405180910390a25b50806115da8161354f565b9150506113ef565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa15801561162b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164f91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906116935760405162461bcd60e51b815260040161038b9190613506565b50603354604080516347f872f160e01b815290516000926001600160a01b0316916347f872f19160048083019260209291908290030181865afa1580156116de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170291906134c5565b905060005b82811015610a5557816001600160a01b03166307f7aafb85858481811061173057611730613539565b905060200201602081019061174591906133cf565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561178657600080fd5b505af115801561179a573d6000803e3d6000fd5b5050505080806117a99061354f565b915050611707565b60335460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa1580156117fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181e91906134c5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b815250906118625760405162461bcd60e51b815260040161038b9190613506565b50600061186d612bf7565b604051632f923ff760e01b815260048101859052602481018490529091506001600160a01b03821690632f923ff7906044015b600060405180830381600087803b1580156118ba57600080fd5b505af11580156118ce573d6000803e3d6000fd5b50505050505050565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015611920573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194491906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906119885760405162461bcd60e51b815260040161038b9190613506565b506000611993612bf7565b905060005b83811015610454576000826001600160a01b031663eadff0558787858181106119c3576119c3613539565b905060200201356040518263ffffffff1660e01b81526004016119e891815260200190565b6020604051808303816000875af1158015611a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2b9190613b13565b9050611a378185612e12565b826001600160a01b03166389a7245d878785818110611a5857611a58613539565b9050602002013583600001516040518363ffffffff1660e01b8152600401611a8a929190918252602082015260400190565b600060405180830381600087803b158015611aa457600080fd5b505af1158015611ab8573d6000803e3d6000fd5b50505050858583818110611ace57611ace613539565b905060200201357fa0d3e805ee1d3e2ede42facb6a56b605599f8e40d6c55fa36498cd68fbc3c81885604051611b0691815260200190565b60405180910390a25080611b198161354f565b915050611998565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b81525090611bd25760405162461bcd60e51b815260040161038b9190613506565b506000611bdd612bf7565b60405163bbce5cf360e01b8152600481018590526001600160a01b0384811660248301529192509082169063bbce5cf3906044016118a0565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015611c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8391906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b81525090611cc75760405162461bcd60e51b815260040161038b9190613506565b506000611cd2612bf7565b905060005b83811015610454576000826001600160a01b031663eadff055878785818110611d0257611d02613539565b905060200201356040518263ffffffff1660e01b8152600401611d2791815260200190565b6020604051808303816000875af1158015611d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6a9190613b13565b90508315611d8257611d7d816001612e6a565b611d8d565b611d8d816000612e6a565b826001600160a01b03166389a7245d878785818110611dae57611dae613539565b9050602002013583600001516040518363ffffffff1660e01b8152600401611de0929190918252602082015260400190565b600060405180830381600087803b158015611dfa57600080fd5b505af1158015611e0e573d6000803e3d6000fd5b505050508315611e6257858583818110611e2a57611e2a613539565b905060200201357fe0850c0895ec100425343341b0fe939b37776e188c991c2a14f3489a8207c73760405160405180910390a2611ea8565b858583818110611e7457611e74613539565b905060200201357f94676996b7d3838859708eff3c1f5a3dab2a43dfbff6399e14041d4b989df6ba60405160405180910390a25b5080611eb38161354f565b915050611cd7565b600054610100900460ff1615808015611edb5750600054600160ff909116105b80611ef55750303b158015611ef5575060005460ff166001145b611f585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161038b565b6000805460ff191660011790558015611f7b576000805461ff0019166101001790555b603380546001600160a01b0319166001600160a01b0384161790558015611fdc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015612029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906120915760405162461bcd60e51b815260040161038b9190613506565b50600061209c612bf7565b905060005b82811015610a55576000826001600160a01b031663eadff0558686858181106120cc576120cc613539565b90506101400201600001356040518263ffffffff1660e01b81526004016120f591815260200190565b6020604051808303816000875af1158015612114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121389190613b13565b905084848381811061214c5761214c613539565b9050610140020160c0013585858481811061216957612169613539565b905061014002016040013511156040518060400160405280600381526020016237303160e81b815250906121b05760405162461bcd60e51b815260040161038b9190613506565b508484838181106121c3576121c3613539565b9050610140020160c00135600014612237576127108585848181106121ea576121ea613539565b9050610140020160a0013511156040518060400160405280600381526020016237303160e81b815250906122315760405162461bcd60e51b815260040161038b9190613506565b50612293565b84848381811061224957612249613539565b9050610140020160a001356000146040518060400160405280600381526020016237303160e81b815250906122915760405162461bcd60e51b815260040161038b9190613506565b505b6122c28585848181106122a8576122a8613539565b905061014002016020013582612e1290919063ffffffff16565b6122f18585848181106122d7576122d7613539565b905061014002016040013582612e9890919063ffffffff16565b61232085858481811061230657612306613539565b905061014002016060013582612ee290919063ffffffff16565b61234f85858481811061233557612335613539565b905061014002016080013582612f3690919063ffffffff16565b61237e85858481811061236457612364613539565b9050610140020160a0013582612f8990919063ffffffff16565b6123ad85858481811061239357612393613539565b9050610140020160c0013582612fdd90919063ffffffff16565b6123dc8585848181106123c2576123c2613539565b9050610140020160e001358261302f90919063ffffffff16565b61240c8585848181106123f1576123f1613539565b9050610140020161010001358261308290919063ffffffff16565b826001600160a01b03166389a7245d86868581811061242d5761242d613539565b85516040516001600160e01b031960e087901b16815261014090920293909301356004820152602481019290925250604401600060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b5050505050808061249d9061354f565b9150506120a1565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa1580156124ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251291906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906125565760405162461bcd60e51b815260040161038b9190613506565b506000612561612bf7565b905060005b82811015610a555773__$0fe017e20684fbd032f923e9d615f3d00e$__63f943de388386868581811061259b5761259b613539565b90506020028101906125ad91906139ec565b6040518363ffffffff1660e01b81526004016125ca929190613a7d565b60006040518083038186803b1580156125e257600080fd5b505af41580156125f6573d6000803e3d6000fd5b5050505080806126059061354f565b915050612566565b603354604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda3789160048083019260209291908290030181865afa158015612656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267a91906134c5565b6001600160a01b0316146040518060400160405280600381526020016203130360ec1b815250906126be5760405162461bcd60e51b815260040161038b9190613506565b5060006126c9612bf7565b905060005b858110156118ce576000826001600160a01b031663eadff0558989858181106126f9576126f9613539565b905060200201356040518263ffffffff1660e01b815260040161271e91815260200190565b6020604051808303816000875af115801561273d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127619190613b13565b905061276d8187612f89565b612777818661302f565b6127818185613082565b826001600160a01b03166389a7245d8989858181106127a2576127a2613539565b9050602002013583600001516040518363ffffffff1660e01b81526004016127d4929190918252602082015260400190565b600060405180830381600087803b1580156127ee57600080fd5b505af1158015612802573d6000803e3d6000fd5b5050505087878381811061281857612818613539565b604080518a815260208181018b905291810189905291029290920135917f8e1b436e42bffc00dac953e4d4d5f688702e3e24b901bdaebf13d6e8f9046dde915060600160405180910390a2508061286e8161354f565b9150506126ce565b60335