[
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFINO_RESOURCE",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "definoRegistry_",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "relatedExpertPanelName_",
        "type": "string"
      }
    ],
    "name": "__DefinoModule_init",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "assetAddr_",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "chainlinkOracle_",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "tokenSymbol_",
        "type": "string"
      },
      {
        "internalType": "bool",
        "name": "isCollateral_",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "isCollateralWithPRT_",
        "type": "bool"
      }
    ],
    "name": "addLiquidityPool",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "poolType_",
        "type": "uint8"
      },
      {
        "internalType": "address",
        "name": "poolImpl_",
        "type": "address"
      }
    ],
    "name": "addPoolsBeacon",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "assetAddr_",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "chainlinkOracle_",
        "type": "address"
      }
    ],
    "name": "addStablePool",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "member_",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "permission_",
        "type": "string"
      }
    ],
    "name": "checkPermission",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "daoVoting",
    "outputs": [
      {
        "internalType": "contract IDAOVoting",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "bool",
        "name": "forPRT_",
        "type": "bool"
      }
    ],
    "name": "enableCollateral",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract IAssetParameters",
        "name": "assetParameters_",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      }
    ],
    "name": "freeze",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getInjector",
    "outputs": [
      {
        "internalType": "address",
        "name": "injector_",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getResource",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getResourceRecords",
    "outputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "existingRole",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "resource",
            "type": "string"
          },
          {
            "internalType": "string[]",
            "name": "permissions",
            "type": "string[]"
          }
        ],
        "internalType": "struct IDAOIntegration.ResourceRecords[]",
        "name": "records_",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "offset_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit_",
        "type": "uint256"
      }
    ],
    "name": "injectDependencies",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "injectDependenciesToExistingPools",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "permissionManager",
    "outputs": [
      {
        "internalType": "contract IPermissionManager",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "registry",
    "outputs": [
      {
        "internalType": "contract Registry",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "registry_",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "name": "setDependencies",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "injector_",
        "type": "address"
      }
    ],
    "name": "setInjector",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "rewardsToken_",
        "type": "address"
      }
    ],
    "name": "setRewardsTokenAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "string",
                "name": "votingSituationName",
                "type": "string"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "votingPeriod",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "vetoPeriod",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "proposalExecutionPeriod",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "requiredQuorum",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "requiredMajority",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "requiredVetoQuorum",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "votingType",
                    "type": "uint256"
                  },
                  {
                    "internalType": "string",
                    "name": "votingTarget",
                    "type": "string"
                  },
                  {
                    "internalType": "uint256",
                    "name": "votingMinAmount",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IDAOVoting.DAOVotingValues",
                "name": "votingValues",
                "type": "tuple"
              }
            ],
            "internalType": "struct IDAOVoting.InitialSituation",
            "name": "initialSituation",
            "type": "tuple"
          },
          {
            "internalType": "string",
            "name": "externalLink",
            "type": "string"
          }
        ],
        "internalType": "struct IDAOVoting.ExtendedSituation[]",
        "name": "conf_",
        "type": "tuple[]"
      }
    ],
    "name": "setUpAdditionalVotingSituations",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "newAnnualBorrowRate_",
        "type": "uint256"
      }
    ],
    "name": "setupAnnualBorrowRate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "minSupplyDistrPart_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minBorrowDistrPart_",
        "type": "uint256"
      },
      {
        "internalType": "bool[]",
        "name": "flags_",
        "type": "bool[]"
      }
    ],
    "name": "setupDistributionsMinimums",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "basePercentage_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "firstSlope_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "secondSlope_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "utilizationBreakingPoint_",
        "type": "uint256"
      },
      {
        "internalType": "bool[]",
        "name": "flags_",
        "type": "bool[]"
      }
    ],
    "name": "setupInterestRateModel",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newValue_",
        "type": "uint256"
      }
    ],
    "name": "setupLiquidationBoundary",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "collateralizationRatio_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "collateralizationRatioWithPRT_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "reserveFactor_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "liquidationDiscount_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxUtilizationRatio_",
        "type": "uint256"
      },
      {
        "internalType": "bool[]",
        "name": "flags_",
        "type": "bool[]"
      }
    ],
    "name": "setupMainParameters",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newMinCurrencyAmount_",
        "type": "uint256"
      }
    ],
    "name": "setupMinCurrencyAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32[]",
        "name": "assetKeys_",
        "type": "bytes32[]"
      },
      {
        "internalType": "uint256[]",
        "name": "rewardsPerBlock_",
        "type": "uint256[]"
      }
    ],
    "name": "setupRewardsPerBlockBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "newValue_",
        "type": "bool"
      }
    ],
    "name": "setupStablePoolsAvailability",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "supplyMinAmountInUSD",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "supplyMinTimeAfter",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "borrowMinAmountInUSD",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "borrowMinTimeAfter",
        "type": "uint256"
      },
      {
        "internalType": "bool[]",
        "name": "flags_",
        "type": "bool[]"
      }
    ],
    "name": "updatePRTParams",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "newRewardsAssetKey_",
        "type": "bytes32"
      }
    ],
    "name": "updateRewardsAssetKey",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "poolType_",
        "type": "uint8"
      },
      {
        "internalType": "address",
        "name": "newPoolsImpl_",
        "type": "address"
      }
    ],
    "name": "upgradePoolsImpl",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipientAddr_",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "offset_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit_",
        "type": "uint256"
      }
    ],
    "name": "withdrawAllReservedFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipientAddr_",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "assetKey_",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "amountToWithdraw_",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "isAllFunds_",
        "type": "bool"
      }
    ],
    "name": "withdrawReservedFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
