[
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "borrower_",
        "type": "address"
      }
    ],
    "name": "BorrowerAccepted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "name": "CallRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "name": "Funded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "name": "Impaired",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "name": "ImpairmentRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "borrower_",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "lender_",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundsAsset_",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "principalRequested_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint32[3]",
        "name": "termDetails_",
        "type": "uint32[3]"
      },
      {
        "indexed": false,
        "internalType": "uint64[4]",
        "name": "rates_",
        "type": "uint64[4]"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "lender_",
        "type": "address"
      }
    ],
    "name": "LenderAccepted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "refinanceCommitment_",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "refinancer_",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "deadline_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bytes[]",
        "name": "calls_",
        "type": "bytes[]"
      }
    ],
    "name": "NewTermsAccepted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "refinanceCommitment_",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "refinancer_",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "deadline_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bytes[]",
        "name": "calls_",
        "type": "bytes[]"
      }
    ],
    "name": "NewTermsProposed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "refinanceCommitment_",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "refinancer_",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "deadline_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bytes[]",
        "name": "calls_",
        "type": "bytes[]"
      }
    ],
    "name": "NewTermsRejected",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "lender_",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "principalPaid_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "interestPaid_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "lateInterestPaid_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "delegateServiceFee_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "platformServiceFee_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "name": "PaymentMade",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pendingBorrower_",
        "type": "address"
      }
    ],
    "name": "PendingBorrowerSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pendingLender_",
        "type": "address"
      }
    ],
    "name": "PendingLenderSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "principalToReturn_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "name": "PrincipalCalled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "principalReturned_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "principalRemaining_",
        "type": "uint256"
      }
    ],
    "name": "PrincipalReturned",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "fundsRepossessed_",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "destination_",
        "type": "address"
      }
    ],
    "name": "Repossessed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "token_",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount_",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "destination_",
        "type": "address"
      }
    ],
    "name": "Skimmed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "toVersion_",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "arguments_",
        "type": "bytes"
      }
    ],
    "name": "Upgraded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "delegateServiceFeeRate_",
        "type": "uint64"
      }
    ],
    "name": "DelegateServiceFeeRateSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "gracePeriod_",
        "type": "uint256"
      }
    ],
    "name": "GracePeriodSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "interestRate_",
        "type": "uint64"
      }
    ],
    "name": "InterestRateSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "lateFeeRate_",
        "type": "uint64"
      }
    ],
    "name": "LateFeeRateSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "lateInterestPremiumRate_",
        "type": "uint64"
      }
    ],
    "name": "LateInterestPremiumRateSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "noticePeriod_",
        "type": "uint256"
      }
    ],
    "name": "NoticePeriodSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "paymentInterval_",
        "type": "uint256"
      }
    ],
    "name": "PaymentIntervalSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "decreasedBy_",
        "type": "uint256"
      }
    ],
    "name": "PrincipalDecreased",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "increasedBy_",
        "type": "uint256"
      }
    ],
    "name": "PrincipalIncreased",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "HUNDRED_PERCENT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptBorrower",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptLender",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "refinancer_",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "deadline_",
        "type": "uint256"
      },
      {
        "internalType": "bytes[]",
        "name": "calls_",
        "type": "bytes[]"
      }
    ],
    "name": "acceptNewTerms",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "refinanceCommitment_",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "borrower",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "principalToReturn_",
        "type": "uint256"
      }
    ],
    "name": "callPrincipal",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "calledPrincipal",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "dateCalled",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "dateFunded",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "dateImpaired",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "datePaid",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defaultDate",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "paymentDefaultDate_",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "delegateServiceFeeRate",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "factory",
    "outputs": [
      {
        "internalType": "address",
        "name": "factory_",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "fund",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "fundsLent_",
        "type": "uint256"
      },
      {
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "fundsAsset",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "timestamp_",
        "type": "uint256"
      }
    ],
    "name": "getPaymentBreakdown",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "principal_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "interest_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "lateInterest_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "delegateServiceFee_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "platformServiceFee_",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "globals",
    "outputs": [
      {
        "internalType": "address",
        "name": "globals_",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "gracePeriod",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "impair",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "implementation",
    "outputs": [
      {
        "internalType": "address",
        "name": "implementation_",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "interestRate",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isCalled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "isCalled_",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isImpaired",
    "outputs": [
      {
        "internalType": "bool",
        "name": "isImpaired_",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isInDefault",
    "outputs": [
      {
        "internalType": "bool",
        "name": "isInDefault_",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lateFeeRate",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lateInterestPremiumRate",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lender",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "principalToReturn_",
        "type": "uint256"
      }
    ],
    "name": "makePayment",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "interest_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "lateInterest_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "delegateServiceFee_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "platformServiceFee_",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "migrator_",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "arguments_",
        "type": "bytes"
      }
    ],
    "name": "migrate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "noticePeriod",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paymentDueDate",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paymentInterval",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingBorrower",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingLender",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "platformServiceFeeRate",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "principal",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "refinancer_",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "deadline_",
        "type": "uint256"
      },
      {
        "internalType": "bytes[]",
        "name": "calls_",
        "type": "bytes[]"
      }
    ],
    "name": "proposeNewTerms",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "refinanceCommitment_",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "refinanceCommitment",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "refinancer_",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "deadline_",
        "type": "uint256"
      },
      {
        "internalType": "bytes[]",
        "name": "calls_",
        "type": "bytes[]"
      }
    ],
    "name": "rejectNewTerms",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "refinanceCommitment_",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "removeCall",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "removeImpairment",
    "outputs": [
      {
        "internalType": "uint40",
        "name": "paymentDueDate_",
        "type": "uint40"
      },
      {
        "internalType": "uint40",
        "name": "defaultDate_",
        "type": "uint40"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "destination_",
        "type": "address"
      }
    ],
    "name": "repossess",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "fundsRepossessed_",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newImplementation_",
        "type": "address"
      }
    ],
    "name": "setImplementation",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pendingBorrower_",
        "type": "address"
      }
    ],
    "name": "setPendingBorrower",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pendingLender_",
        "type": "address"
      }
    ],
    "name": "setPendingLender",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "destination_",
        "type": "address"
      }
    ],
    "name": "skim",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "skimmed_",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "toVersion_",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "arguments_",
        "type": "bytes"
      }
    ],
    "name": "upgrade",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]