[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "oracle",
        "type": "address"
      }
    ],
    "name": "activateStorageOracle",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numberOfDepositors",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "startTimeStamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "duration",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximumSlots",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "hasMaximumSlots",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "cycleStakeAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "totalStakes",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimed",
        "type": "uint256"
      },
      {
        "internalType": "enum IGroupSchema.CycleStatus",
        "name": "cycleStatus",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "name": "createCycle",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingTotalDeposits",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingTotalWithdrawn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underylingBalanceClaimedBeforeMaturity",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalanceClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "name": "createCycleFinancials",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "totalLiquidityAsPenalty",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numberOfCycleStakes",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimed",
        "type": "uint256"
      },
      {
        "internalType": "address payable",
        "name": "depositor",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "hasWithdrawn",
        "type": "bool"
      }
    ],
    "name": "createCycleMember",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "oracle",
        "type": "address"
      }
    ],
    "name": "deactivateStorageOracle",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "depositor",
        "type": "address"
      }
    ],
    "name": "doesCycleMemberExist",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      }
    ],
    "name": "getCycleFinancialIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      }
    ],
    "name": "getCycleFinancialsByCycleId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "underlyingTotalDeposits",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingTotalWithdrawn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underylingBalanceClaimedBeforeMaturity",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalanceClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getCycleFinancialsByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingTotalDeposits",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingTotalWithdrawn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underylingBalanceClaimedBeforeMaturity",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalanceClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      }
    ],
    "name": "getCycleIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      }
    ],
    "name": "getCycleInfoById",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numberOfDepositors",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "cycleStartTimeStamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "cycleDuration",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximumSlots",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "hasMaximumSlots",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "cycleStakeAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "totalStakes",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimed",
        "type": "uint256"
      },
      {
        "internalType": "enum IGroupSchema.CycleStatus",
        "name": "cycleStatus",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getCycleInfoByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numberOfDepositors",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "cycleStartTimeStamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "cycleDuration",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximumSlots",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "hasMaximumSlots",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "cycleStakeAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "totalStakes",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimed",
        "type": "uint256"
      },
      {
        "internalType": "enum IGroupSchema.CycleStatus",
        "name": "cycleStatus",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getCycleMember",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      },
      {
        "internalType": "address payable",
        "name": "_address",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "totalLiquidityAsPenalty",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numberOfCycleStakes",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimed",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "hasWithdrawn",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "address payable",
        "name": "memberAddress",
        "type": "address"
      }
    ],
    "name": "getCycleMemberIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getCycles",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "groupId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "numberOfDepositors",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycleStartTimeStamp",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycleDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maximumSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycleStakeAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalStakes",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "stakesClaimed",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "hasMaximumSlots",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "exists",
            "type": "bool"
          },
          {
            "internalType": "enum IGroupSchema.CycleStatus",
            "name": "cycleStatus",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "stakesClaimedBeforeMaturity",
            "type": "uint256"
          }
        ],
        "internalType": "struct IGroupSchema.Cycle[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getCyclesLength",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "recordIndexLocation",
        "type": "uint256"
      }
    ],
    "name": "getRecordIndexForCycleMembersIndexer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "depositorAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "recordIndexLocation",
        "type": "uint256"
      }
    ],
    "name": "getRecordIndexForCycleMembersIndexerByDepositor",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "recordIndexLocation",
        "type": "uint256"
      }
    ],
    "name": "getRecordIndexForGroupCycle",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      }
    ],
    "name": "getRecordIndexLengthForCycleMembers",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "depositorAddress",
        "type": "address"
      }
    ],
    "name": "getRecordIndexLengthForCycleMembersByDepositor",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "groupId",
        "type": "uint256"
      }
    ],
    "name": "getRecordIndexLengthForGroupCycleIndexer",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOracle",
        "type": "address"
      }
    ],
    "name": "reAssignStorageOracle",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address payable",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numberOfDepositors",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "startTimeStamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "duration",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximumSlots",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "hasMaximumSlots",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "cycleStakeAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "totalStakes",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimed",
        "type": "uint256"
      },
      {
        "internalType": "enum IGroupSchema.CycleStatus",
        "name": "cycleStatus",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "name": "updateCycle",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingTotalDeposits",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingTotalWithdrawn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underlyingBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "underylingBalanceClaimedBeforeMaturity",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "derivativeBalanceClaimedBeforeMaturity",
        "type": "uint256"
      }
    ],
    "name": "updateCycleFinancials",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "cycleId",
        "type": "uint256"
      },
      {
        "internalType": "address payable",
        "name": "depositor",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "totalLiquidityAsPenalty",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numberOfCycleStakes",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stakesClaimed",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "hasWithdrawn",
        "type": "bool"
      }
    ],
    "name": "updateCycleMember",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]