[
  {
    "inputs": [],
    "name": "ClearingIsPending",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "drawAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "availableAmount",
        "type": "uint256"
      }
    ],
    "name": "DrawAmountCantBeGreaterThanAvailableAmount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "feesOwedAmount",
        "type": "uint256"
      }
    ],
    "name": "FeesOwedAmountIsGreaterThanZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LendingPoolIsNotStopped",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LendingPoolIsStopped",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "reportedLossAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxLossAmount",
        "type": "uint256"
      }
    ],
    "name": "LossAmountCantBeGreaterThanMaxLossAmount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "reportedLossAmount",
        "type": "uint256"
      }
    ],
    "name": "LossAmountShouldBeGreaterThanZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "lossId",
        "type": "uint256"
      }
    ],
    "name": "LossIdNotValid",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "reason",
        "type": "string"
      }
    ],
    "name": "PoolConfigurationIsIncorrect",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "repayAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "owedAmount",
        "type": "uint256"
      }
    ],
    "name": "RepayAmountCantBeGreaterThanOwedAmount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "userOwedAmount",
        "type": "uint256"
      }
    ],
    "name": "UserOwedAmountIsGreaterThanZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "withdrawAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "firstLostCapital",
        "type": "uint256"
      }
    ],
    "name": "WithdrawAmountCantBeGreaterThanFirstLostCapital",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "DepositAccepted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "epoch",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "feesIncreasedAmount",
        "type": "uint256"
      }
    ],
    "name": "FeesOwedIncreased",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountAdded",
        "type": "uint256"
      }
    ],
    "name": "FirstLossCapitalAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "lossId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "FirstLossCapitalLossReported",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountWithdrawn",
        "type": "uint256"
      }
    ],
    "name": "FirstLossCapitalWithdrawn",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "FundsDrawn",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "ImmediateWithdrawal",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "epoch",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "interestAmount",
        "type": "uint256"
      }
    ],
    "name": "InterestApplied",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "LendingPoolStopped",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "LossReported",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountForUsers",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountForFees",
        "type": "uint256"
      }
    ],
    "name": "OwedFundsRepaid",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "feesPaid",
        "type": "uint256"
      }
    ],
    "name": "PaidFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "applicableEpoch",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "arrayIndex",
        "type": "uint256"
      }
    ],
    "name": "RemovedTrancheInterestRateUpdate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "desiredDrawAmount",
        "type": "uint256"
      }
    ],
    "name": "UpdatedDesiredDrawAmount",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "drawRecipient",
        "type": "address"
      }
    ],
    "name": "UpdatedDrawRecipient",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "UpdatedMaximumDepositAmount",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "UpdatedMinimumDepositAmount",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "percentage",
        "type": "uint256"
      }
    ],
    "name": "UpdatedMinimumExcessLiquidityPercentage",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "percentage",
        "type": "uint256"
      }
    ],
    "name": "UpdatedTargetExcessLiquidityPercentage",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ratios",
        "type": "uint256[]"
      }
    ],
    "name": "UpdatedTrancheDesiredRatios",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "applicableEpoch",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newInterestRate",
        "type": "uint256"
      }
    ],
    "name": "UpdatedTrancheInterestRate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochDelay",
        "type": "uint256"
      }
    ],
    "name": "UpdatedTrancheInterestRateChangeEpochDelay",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "assetAmount",
        "type": "uint256"
      }
    ],
    "name": "WithdrawalAccepted",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "acceptedAmount",
        "type": "uint256"
      }
    ],
    "name": "acceptDeposit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "trancheShares",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "acceptedShares",
        "type": "uint256"
      }
    ],
    "name": "acceptWithdrawal",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "assetAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "epoch",
        "type": "uint256"
      }
    ],
    "name": "applyInterests",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "availableFunds",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "calculateMaximumLossAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "maximumLossAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "lossId",
        "type": "uint256"
      }
    ],
    "name": "claimRepaidLoss",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "claimedAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "depositFirstLossCapital",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "drawFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "feesOwedAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "sharesToWithdraw",
        "type": "uint256"
      }
    ],
    "name": "forceImmediateWithdrawal",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "assetAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getClearingConfig",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "drawAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256[]",
            "name": "trancheDesiredRatios",
            "type": "uint256[]"
          },
          {
            "internalType": "uint256",
            "name": "maxExcessPercentage",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minExcessPercentage",
            "type": "uint256"
          }
        ],
        "internalType": "struct ClearingConfiguration",
        "name": "clearingConfig",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getLendingPoolInfo",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address[]",
            "name": "trancheAddresses",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "pendingPool",
            "type": "address"
          }
        ],
        "internalType": "struct LendingPoolInfo",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      }
    ],
    "name": "isLendingPoolTranche",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lendingPoolTrancheCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lendingPoolTranches",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingPool",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "poolConfiguration",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "ratio",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "interestRate",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "minDepositAmount",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "maxDepositAmount",
                "type": "uint256"
              }
            ],
            "internalType": "struct TrancheConfig[]",
            "name": "tranches",
            "type": "tuple[]"
          },
          {
            "internalType": "address",
            "name": "drawRecipient",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "desiredDrawAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "trancheInterestChangeEpochDelay",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "targetExcessLiquidityPercentage",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minimumExcessLiquidityPercentage",
            "type": "uint256"
          }
        ],
        "internalType": "struct PoolConfiguration",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "lossId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "repayLoss",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "repayOwedFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "lossAmount",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "doMintLossTokens",
        "type": "bool"
      }
    ],
    "name": "reportLoss",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "appliedLoss",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "stop",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      }
    ],
    "name": "trancheConfigurationDepositLimits",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "minDepositAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxDepositAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      }
    ],
    "name": "trancheIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "desiredDrawAmount",
        "type": "uint256"
      }
    ],
    "name": "updateDesiredDrawAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "drawRecipient",
        "type": "address"
      }
    ],
    "name": "updateDrawRecipient",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "maximumDepositAmount",
        "type": "uint256"
      }
    ],
    "name": "updateMaximumDepositAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "minimumDepositAmount",
        "type": "uint256"
      }
    ],
    "name": "updateMinimumDepositAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "minimumExcessLiquidityPercentage",
        "type": "uint256"
      }
    ],
    "name": "updateMinimumExcessLiquidityPercentage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "targetExcessLiquidityPercentage",
        "type": "uint256"
      }
    ],
    "name": "updateTargetExcessLiquidityPercentage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "ratios",
        "type": "uint256[]"
      }
    ],
    "name": "updateTrancheDesiredRatios",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tranche",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "interestRate",
        "type": "uint256"
      }
    ],
    "name": "updateTrancheInterestRate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "epochDelay",
        "type": "uint256"
      }
    ],
    "name": "updateTrancheInterestRateChangeEpochDelay",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "userBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "userOwedAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "drawAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256[]",
            "name": "trancheDesiredRatios",
            "type": "uint256[]"
          },
          {
            "internalType": "uint256",
            "name": "maxExcessPercentage",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minExcessPercentage",
            "type": "uint256"
          }
        ],
        "internalType": "struct ClearingConfiguration",
        "name": "clearingConfig",
        "type": "tuple"
      }
    ],
    "name": "verifyClearingConfig",
    "outputs": [],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "withdrawAmount",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "withdrawAddress",
        "type": "address"
      }
    ],
    "name": "withdrawFirstLossCapital",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]