[
  {
    "type": "constructor",
    "inputs": [
      {
        "name": "admin_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "treasury_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "burnWallet_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "creationFee_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "collectionTokenDeployer_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "escrowDeployer_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "stakingVaultDeployer_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "ammVaultDeployer_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "loanVaultDeployer_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "erc1155VaultDeployer_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "governorDeployer_",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "DEFAULT_ADMIN_ROLE",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "LOAN_GRACE_PERIOD",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "LOAN_LIQUIDATION_INCENTIVE_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "LOAN_MAX_DURATION",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "LOAN_MAX_PER_WALLET",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint8",
        "internalType": "uint8"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "LOAN_MIN_DURATION",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_BORROW_APY_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_LIQUIDATION_INCENTIVE_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_LOAN_BUCKET_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_NAME_LENGTH",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_RANDOM_FEE_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_SPECIFIC_FEE_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_SYMBOL_LENGTH",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_TOKENS_PER_NFT",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_TOTAL_BUCKET_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MAX_TOTAL_SUPPLY",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MIN_BORROW_APY_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MIN_NAME_LENGTH",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MIN_RANDOM_FEE_BPS",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint16",
        "internalType": "uint16"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MIN_SYMBOL_LENGTH",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "MIN_TOKENS_PER_NFT",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "STAKING_COOLDOWN",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "allMarkets",
    "inputs": [],
    "outputs": [
      {
        "name": "result",
        "type": "tuple[]",
        "internalType": "struct MarketInfo[]",
        "components": [
          {
            "name": "marketId",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "collection",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "collectionType",
            "type": "uint8",
            "internalType": "enum CollectionType"
          },
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "escrow",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "ammVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "loanVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "stakingVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "governor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokensPerNFT",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "fees",
            "type": "tuple",
            "internalType": "struct FeeConfig",
            "components": [
              {
                "name": "randomFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "specificFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "governanceEnabled",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "ammVaultDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract NFTAMMVaultV3Deployer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "burnWallet",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "collectionMarketCount",
    "inputs": [
      {
        "name": "collection_",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "collectionTokenDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract CollectionTokenDeployer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "createMarket",
    "inputs": [
      {
        "name": "p",
        "type": "tuple",
        "internalType": "struct CreateMarketParamsV2",
        "components": [
          {
            "name": "collection",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "name",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "symbol",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "tokensPerNFT",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "totalSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "fees",
            "type": "tuple",
            "internalType": "struct FeeConfig",
            "components": [
              {
                "name": "randomFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "specificFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "buckets",
            "type": "tuple",
            "internalType": "struct BucketConfig",
            "components": [
              {
                "name": "ammBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "loanBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "rewardBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "borrowAPYBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "liquidationIncentiveBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "governance",
            "type": "tuple",
            "internalType": "struct GovernanceConfig",
            "components": [
              {
                "name": "enabled",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "proposalFee",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "minProposerStake",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "info",
        "type": "tuple",
        "internalType": "struct MarketInfo",
        "components": [
          {
            "name": "marketId",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "collection",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "collectionType",
            "type": "uint8",
            "internalType": "enum CollectionType"
          },
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "escrow",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "ammVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "loanVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "stakingVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "governor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokensPerNFT",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "fees",
            "type": "tuple",
            "internalType": "struct FeeConfig",
            "components": [
              {
                "name": "randomFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "specificFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "governanceEnabled",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "createMultiCollectionMarket",
    "inputs": [
      {
        "name": "p",
        "type": "tuple",
        "internalType": "struct CreateMultiMarketParamsV2",
        "components": [
          {
            "name": "name",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "symbol",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "totalSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "buckets",
            "type": "tuple",
            "internalType": "struct BucketConfig",
            "components": [
              {
                "name": "ammBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "loanBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "rewardBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "liquidationIncentiveBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "governance",
            "type": "tuple",
            "internalType": "struct GovernanceConfig",
            "components": [
              {
                "name": "enabled",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "proposalFee",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "minProposerStake",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          },
          {
            "name": "collections",
            "type": "tuple[]",
            "internalType": "struct CollectionMarketConfigV2[]",
            "components": [
              {
                "name": "collection",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "tokensPerNFT",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "fees",
                "type": "tuple",
                "internalType": "struct FeeConfig",
                "components": [
                  {
                    "name": "randomFeeBps",
                    "type": "uint16",
                    "internalType": "uint16"
                  },
                  {
                    "name": "specificFeeBps",
                    "type": "uint16",
                    "internalType": "uint16"
                  }
                ]
              },
              {
                "name": "borrowAPYBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "info",
        "type": "tuple",
        "internalType": "struct MarketInfo",
        "components": [
          {
            "name": "marketId",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "collection",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "collectionType",
            "type": "uint8",
            "internalType": "enum CollectionType"
          },
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "escrow",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "ammVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "loanVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "stakingVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "governor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokensPerNFT",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "fees",
            "type": "tuple",
            "internalType": "struct FeeConfig",
            "components": [
              {
                "name": "randomFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "specificFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "governanceEnabled",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "creationFee",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "erc1155VaultDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract ERC1155AMMVaultDeployer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "escrowDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract TokenEscrowDeployer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getCollectionVaultInfo",
    "inputs": [
      {
        "name": "marketId_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "collection_",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct CollectionVaultInfo",
        "components": [
          {
            "name": "ammVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "loanVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "stakingVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "governor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokensPerNFT",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "fees",
            "type": "tuple",
            "internalType": "struct FeeConfig",
            "components": [
              {
                "name": "randomFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "specificFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "borrowAPYBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "exists",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getCollectionsForMarket",
    "inputs": [
      {
        "name": "marketId_",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getMarket",
    "inputs": [
      {
        "name": "marketId_",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct MarketInfo",
        "components": [
          {
            "name": "marketId",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "collection",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "collectionType",
            "type": "uint8",
            "internalType": "enum CollectionType"
          },
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "escrow",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "ammVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "loanVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "stakingVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "governor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokensPerNFT",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "fees",
            "type": "tuple",
            "internalType": "struct FeeConfig",
            "components": [
              {
                "name": "randomFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "specificFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "governanceEnabled",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getMarketsForCollection",
    "inputs": [
      {
        "name": "collection_",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "result",
        "type": "tuple[]",
        "internalType": "struct MarketInfo[]",
        "components": [
          {
            "name": "marketId",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "collection",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "collectionType",
            "type": "uint8",
            "internalType": "enum CollectionType"
          },
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "escrow",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "ammVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "loanVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "stakingVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "governor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokensPerNFT",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "fees",
            "type": "tuple",
            "internalType": "struct FeeConfig",
            "components": [
              {
                "name": "randomFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "specificFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              }
            ]
          },
          {
            "name": "governanceEnabled",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getRoleAdmin",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "governorDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract MarketGovernorV2Deployer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "grantRole",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "account",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "hasRole",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "account",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isRegisteredMarket",
    "inputs": [
      {
        "name": "collection_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "token_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "ammVault_",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "loanVaultDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract LoanVaultV3Deployer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "marketCount",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "marketCreator",
    "inputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "nextMarketId",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "protocolAdmin",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "renounceRole",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "callerConfirmation",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "revokeRole",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "account",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setCreationFee",
    "inputs": [
      {
        "name": "newFee",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setTreasury",
    "inputs": [
      {
        "name": "newTreasury",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "stakingVaultDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract SoftStakingVaultV3Deployer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "supportsInterface",
    "inputs": [
      {
        "name": "interfaceId",
        "type": "bytes4",
        "internalType": "bytes4"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "treasury",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "CreationFeeUpdated",
    "inputs": [
      {
        "name": "oldFee",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "newFee",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MarketCollectionLinked",
    "inputs": [
      {
        "name": "marketId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "collection",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "ammVault",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "loanVault",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "stakingVault",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "governor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "tokensPerNFT",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "randomFeeBps",
        "type": "uint16",
        "indexed": false,
        "internalType": "uint16"
      },
      {
        "name": "specificFeeBps",
        "type": "uint16",
        "indexed": false,
        "internalType": "uint16"
      },
      {
        "name": "borrowAPYBps",
        "type": "uint16",
        "indexed": false,
        "internalType": "uint16"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MarketCreated",
    "inputs": [
      {
        "name": "marketId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "collection",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "escrow",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "ammVault",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "loanVault",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "stakingVault",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "governor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "governanceEnabled",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleAdminChanged",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "previousAdminRole",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "newAdminRole",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleGranted",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "sender",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleRevoked",
    "inputs": [
      {
        "name": "role",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "sender",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TreasuryUpdated",
    "inputs": [
      {
        "name": "oldTreasury",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "newTreasury",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "AccessControlBadConfirmation",
    "inputs": []
  },
  {
    "type": "error",
    "name": "AccessControlUnauthorizedAccount",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "neededRole",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ]
  },
  {
    "type": "error",
    "name": "InsufficientCreationFee",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidBorrowAPY",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidConfig",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidRandomFee",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidSpecificFee",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidTokenName",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidTokenSymbol",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidTokensPerNFT",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ReentrancyGuardReentrantCall",
    "inputs": []
  },
  {
    "type": "error",
    "name": "TotalSupplyTooLarge",
    "inputs": []
  },
  {
    "type": "error",
    "name": "UnsupportedCollection",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ZeroAddress",
    "inputs": []
  }
]
