[
  {
    "inputs": [],
    "name": "CapacityReductionRatioAbove100Percent",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ClaimMethodMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InitialPriceRatioAbove100Percent",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InitialPriceRatioBelowMinPriceRatio",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MetadataRequired",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MismatchedArrayLengths",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "PoolNotAllowedForThisProduct",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProductDeprecated",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProductNotFound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProductTypeNotFound",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "RevertedWithoutReason",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "StakingPoolDoesNotExist",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UnsupportedCoverAssets",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "ProductSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "ProductTypeSet",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "changeDependentContractAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "masterAddress",
        "type": "address"
      }
    ],
    "name": "changeMasterAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getAllowedPools",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "_allowedPools",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getAllowedPoolsCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "productIds",
        "type": "uint256[]"
      }
    ],
    "name": "getCapacityReductionRatios",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "capacityReductionRatios",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "productIds",
        "type": "uint256[]"
      }
    ],
    "name": "getInitialPrices",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "initialPrices",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getLatestProductMetadata",
    "outputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "ipfsHash",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "timestamp",
            "type": "uint256"
          }
        ],
        "internalType": "struct ICoverProducts.Metadata",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productTypeId",
        "type": "uint256"
      }
    ],
    "name": "getLatestProductTypeMetadata",
    "outputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "ipfsHash",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "timestamp",
            "type": "uint256"
          }
        ],
        "internalType": "struct ICoverProducts.Metadata",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "productIds",
        "type": "uint256[]"
      }
    ],
    "name": "getMinPrices",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "minPrices",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getProduct",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint16",
            "name": "productType",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "minPrice",
            "type": "uint16"
          },
          {
            "internalType": "uint144",
            "name": "__gap",
            "type": "uint144"
          },
          {
            "internalType": "uint32",
            "name": "coverAssets",
            "type": "uint32"
          },
          {
            "internalType": "uint16",
            "name": "initialPriceRatio",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "capacityReductionRatio",
            "type": "uint16"
          },
          {
            "internalType": "bool",
            "name": "isDeprecated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "useFixedPrice",
            "type": "bool"
          }
        ],
        "internalType": "struct Product",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getProductCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getProductMetadata",
    "outputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "ipfsHash",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "timestamp",
            "type": "uint256"
          }
        ],
        "internalType": "struct ICoverProducts.Metadata[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getProductName",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productTypeId",
        "type": "uint256"
      }
    ],
    "name": "getProductType",
    "outputs": [
      {
        "components": [
          {
            "internalType": "enum ClaimMethod",
            "name": "claimMethod",
            "type": "uint8"
          },
          {
            "internalType": "uint32",
            "name": "gracePeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "assessmentCooldownPeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "payoutRedemptionPeriod",
            "type": "uint32"
          }
        ],
        "internalType": "struct ProductType",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getProductTypeCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productTypeId",
        "type": "uint256"
      }
    ],
    "name": "getProductTypeMetadata",
    "outputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "ipfsHash",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "timestamp",
            "type": "uint256"
          }
        ],
        "internalType": "struct ICoverProducts.Metadata[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productTypeId",
        "type": "uint256"
      }
    ],
    "name": "getProductTypeName",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getProductTypeOf",
    "outputs": [
      {
        "components": [
          {
            "internalType": "enum ClaimMethod",
            "name": "claimMethod",
            "type": "uint8"
          },
          {
            "internalType": "uint32",
            "name": "gracePeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "assessmentCooldownPeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "payoutRedemptionPeriod",
            "type": "uint32"
          }
        ],
        "internalType": "struct ProductType",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getProductTypes",
    "outputs": [
      {
        "components": [
          {
            "internalType": "enum ClaimMethod",
            "name": "claimMethod",
            "type": "uint8"
          },
          {
            "internalType": "uint32",
            "name": "gracePeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "assessmentCooldownPeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "payoutRedemptionPeriod",
            "type": "uint32"
          }
        ],
        "internalType": "struct ProductType[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      }
    ],
    "name": "getProductWithType",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint16",
            "name": "productType",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "minPrice",
            "type": "uint16"
          },
          {
            "internalType": "uint144",
            "name": "__gap",
            "type": "uint144"
          },
          {
            "internalType": "uint32",
            "name": "coverAssets",
            "type": "uint32"
          },
          {
            "internalType": "uint16",
            "name": "initialPriceRatio",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "capacityReductionRatio",
            "type": "uint16"
          },
          {
            "internalType": "bool",
            "name": "isDeprecated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "useFixedPrice",
            "type": "bool"
          }
        ],
        "internalType": "struct Product",
        "name": "product",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "enum ClaimMethod",
            "name": "claimMethod",
            "type": "uint8"
          },
          {
            "internalType": "uint32",
            "name": "gracePeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "assessmentCooldownPeriod",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "payoutRedemptionPeriod",
            "type": "uint32"
          }
        ],
        "internalType": "struct ProductType",
        "name": "productType",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getProducts",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint16",
            "name": "productType",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "minPrice",
            "type": "uint16"
          },
          {
            "internalType": "uint144",
            "name": "__gap",
            "type": "uint144"
          },
          {
            "internalType": "uint32",
            "name": "coverAssets",
            "type": "uint32"
          },
          {
            "internalType": "uint16",
            "name": "initialPriceRatio",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "capacityReductionRatio",
            "type": "uint16"
          },
          {
            "internalType": "bool",
            "name": "isDeprecated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "useFixedPrice",
            "type": "bool"
          }
        ],
        "internalType": "struct Product[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "internalContracts",
    "outputs": [
      {
        "internalType": "address payable",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "productId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "poolId",
        "type": "uint256"
      }
    ],
    "name": "isPoolAllowed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "master",
    "outputs": [
      {
        "internalType": "contract INXMMaster",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "data",
        "type": "bytes[]"
      }
    ],
    "name": "multicall",
    "outputs": [
      {
        "internalType": "bytes[]",
        "name": "results",
        "type": "bytes[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "productId",
            "type": "uint256"
          },
          {
            "internalType": "uint8",
            "name": "weight",
            "type": "uint8"
          },
          {
            "internalType": "uint96",
            "name": "initialPrice",
            "type": "uint96"
          },
          {
            "internalType": "uint96",
            "name": "targetPrice",
            "type": "uint96"
          }
        ],
        "internalType": "struct ProductInitializationParams[]",
        "name": "params",
        "type": "tuple[]"
      }
    ],
    "name": "prepareStakingProductsParams",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "productId",
            "type": "uint256"
          },
          {
            "internalType": "uint8",
            "name": "weight",
            "type": "uint8"
          },
          {
            "internalType": "uint96",
            "name": "initialPrice",
            "type": "uint96"
          },
          {
            "internalType": "uint96",
            "name": "targetPrice",
            "type": "uint96"
          }
        ],
        "internalType": "struct ProductInitializationParams[]",
        "name": "validatedParams",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "productIds",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256",
        "name": "poolId",
        "type": "uint256"
      }
    ],
    "name": "requirePoolIsAllowed",
    "outputs": [],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "productTypeName",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "productTypeId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "ipfsMetadata",
            "type": "string"
          },
          {
            "components": [
              {
                "internalType": "enum ClaimMethod",
                "name": "claimMethod",
                "type": "uint8"
              },
              {
                "internalType": "uint32",
                "name": "gracePeriod",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "assessmentCooldownPeriod",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "payoutRedemptionPeriod",
                "type": "uint32"
              }
            ],
            "internalType": "struct ProductType",
            "name": "productType",
            "type": "tuple"
          }
        ],
        "internalType": "struct ICoverProducts.ProductTypeParam[]",
        "name": "productTypeParams",
        "type": "tuple[]"
      }
    ],
    "name": "setProductTypes",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "productTypeIds",
        "type": "uint256[]"
      },
      {
        "internalType": "string[]",
        "name": "ipfsMetadata",
        "type": "string[]"
      }
    ],
    "name": "setProductTypesMetadata",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "productName",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "productId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "ipfsMetadata",
            "type": "string"
          },
          {
            "components": [
              {
                "internalType": "uint16",
                "name": "productType",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "minPrice",
                "type": "uint16"
              },
              {
                "internalType": "uint144",
                "name": "__gap",
                "type": "uint144"
              },
              {
                "internalType": "uint32",
                "name": "coverAssets",
                "type": "uint32"
              },
              {
                "internalType": "uint16",
                "name": "initialPriceRatio",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "capacityReductionRatio",
                "type": "uint16"
              },
              {
                "internalType": "bool",
                "name": "isDeprecated",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "useFixedPrice",
                "type": "bool"
              }
            ],
            "internalType": "struct Product",
            "name": "product",
            "type": "tuple"
          },
          {
            "internalType": "uint256[]",
            "name": "allowedPools",
            "type": "uint256[]"
          }
        ],
        "internalType": "struct ICoverProducts.ProductParam[]",
        "name": "productParams",
        "type": "tuple[]"
      }
    ],
    "name": "setProducts",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "productIds",
        "type": "uint256[]"
      },
      {
        "internalType": "string[]",
        "name": "ipfsMetadata",
        "type": "string[]"
      }
    ],
    "name": "setProductsMetadata",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]