[
  {
    "inputs": [
      {"internalType": "address", "name": "_floor", "type": "address"},
      {"internalType": "address", "name": "_floorGetter", "type": "address"},
      {
        "internalType": "address",
        "name": "_universalRouter",
        "type": "address"
      },
      {"internalType": "address", "name": "permit2", "type": "address"}
    ],
    "stateMutability": "payable",
    "type": "constructor"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "target", "type": "address"}
    ],
    "name": "AddressEmptyCode",
    "type": "error"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "implementation", "type": "address"}
    ],
    "name": "ERC1967InvalidImplementation",
    "type": "error"
  },
  {"inputs": [], "name": "ERC1967NonPayable", "type": "error"},
  {"inputs": [], "name": "ERC721TransferFailed", "type": "error"},
  {"inputs": [], "name": "FailedInnerCall", "type": "error"},
  {"inputs": [], "name": "InsufficientWETH9", "type": "error"},
  {"inputs": [], "name": "InvalidClaimFee", "type": "error"},
  {"inputs": [], "name": "InvalidInitialization", "type": "error"},
  {"inputs": [], "name": "InvalidParameter", "type": "error"},
  {"inputs": [], "name": "InvalidPermitOwner", "type": "error"},
  {"inputs": [], "name": "NotInitializing", "type": "error"},
  {"inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error"},
  {
    "inputs": [{"internalType": "bytes32", "name": "slot", "type": "bytes32"}],
    "name": "UUPSUnsupportedProxiableUUID",
    "type": "error"
  },
  {"inputs": [], "name": "Unauthorized", "type": "error"},
  {"inputs": [], "name": "WrongEthSender", "type": "error"},
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "version",
        "type": "uint64"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnerUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "implementation",
        "type": "address"
      }
    ],
    "name": "Upgraded",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "PERMIT2",
    "outputs": [
      {"internalType": "contract IPermit2", "name": "", "type": "address"}
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNIVERSAL_ROUTER",
    "outputs": [
      {
        "internalType": "contract IUniversalRouter",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UPGRADE_INTERFACE_VERSION",
    "outputs": [{"internalType": "string", "name": "", "type": "string"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "collectionId",
            "type": "address"
          },
          {
            "internalType": "uint256[]",
            "name": "tokenIds",
            "type": "uint256[]"
          },
          {"internalType": "uint256", "name": "maxClaimFee", "type": "uint256"},
          {"internalType": "uint256", "name": "claimCnt", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.FloorClaim[]",
        "name": "claimParams",
        "type": "tuple[]"
      },
      {
        "components": [
          {"internalType": "bytes", "name": "commands", "type": "bytes"},
          {"internalType": "bytes[]", "name": "inputs", "type": "bytes[]"},
          {"internalType": "uint256", "name": "deadline", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.UniversalRouterExecute",
        "name": "swapParam",
        "type": "tuple"
      },
      {
        "internalType": "enum FloorPeriphery.TransferWay",
        "name": "transferWay",
        "type": "uint8"
      },
      {"internalType": "bytes", "name": "transferParam", "type": "bytes"}
    ],
    "name": "buyAndClaimExpired",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "collectionId",
            "type": "address"
          },
          {
            "internalType": "uint256[]",
            "name": "tokenIds",
            "type": "uint256[]"
          },
          {"internalType": "uint256", "name": "maxClaimFee", "type": "uint256"},
          {"internalType": "uint256", "name": "claimCnt", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.FloorClaim",
        "name": "claimParams",
        "type": "tuple"
      },
      {
        "components": [
          {"internalType": "bytes", "name": "commands", "type": "bytes"},
          {"internalType": "bytes[]", "name": "inputs", "type": "bytes[]"},
          {"internalType": "uint256", "name": "deadline", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.UniversalRouterExecute",
        "name": "swapParam",
        "type": "tuple"
      },
      {
        "internalType": "enum FloorPeriphery.TransferWay",
        "name": "transferWay",
        "type": "uint8"
      },
      {"internalType": "bytes", "name": "transferParam", "type": "bytes"}
    ],
    "name": "buyAndClaimExpired",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "collectionId",
            "type": "address"
          },
          {
            "internalType": "uint256[]",
            "name": "tokenIds",
            "type": "uint256[]"
          },
          {"internalType": "uint256", "name": "maxClaimFee", "type": "uint256"},
          {"internalType": "uint256", "name": "claimCnt", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.FloorClaim[]",
        "name": "claimParams",
        "type": "tuple[]"
      },
      {
        "components": [
          {"internalType": "bytes", "name": "commands", "type": "bytes"},
          {"internalType": "bytes[]", "name": "inputs", "type": "bytes[]"},
          {"internalType": "uint256", "name": "deadline", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.UniversalRouterExecute",
        "name": "swapParam",
        "type": "tuple"
      },
      {
        "internalType": "enum FloorPeriphery.TransferWay",
        "name": "transferWay",
        "type": "uint8"
      },
      {"internalType": "bytes", "name": "transferParam", "type": "bytes"}
    ],
    "name": "buyAndClaimVault",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "collectionId",
            "type": "address"
          },
          {
            "internalType": "uint256[]",
            "name": "tokenIds",
            "type": "uint256[]"
          },
          {"internalType": "uint256", "name": "maxClaimFee", "type": "uint256"},
          {"internalType": "uint256", "name": "claimCnt", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.FloorClaim",
        "name": "claimParams",
        "type": "tuple"
      },
      {
        "components": [
          {"internalType": "bytes", "name": "commands", "type": "bytes"},
          {"internalType": "bytes[]", "name": "inputs", "type": "bytes[]"},
          {"internalType": "uint256", "name": "deadline", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.UniversalRouterExecute",
        "name": "swapParam",
        "type": "tuple"
      },
      {
        "internalType": "enum FloorPeriphery.TransferWay",
        "name": "transferWay",
        "type": "uint8"
      },
      {"internalType": "bytes", "name": "transferParam", "type": "bytes"}
    ],
    "name": "buyAndClaimVault",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "floor",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "floorGetter",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "collectionId",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "collectionContract",
            "type": "address"
          },
          {"internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]"}
        ],
        "internalType": "struct FloorPeriphery.FloorFragment[]",
        "name": "fragmentParams",
        "type": "tuple[]"
      },
      {
        "components": [
          {"internalType": "bytes", "name": "commands", "type": "bytes"},
          {"internalType": "bytes[]", "name": "inputs", "type": "bytes[]"},
          {"internalType": "uint256", "name": "deadline", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.UniversalRouterExecute",
        "name": "swapParam",
        "type": "tuple"
      },
      {
        "internalType": "enum FloorPeriphery.TransferWay",
        "name": "transferWay",
        "type": "uint8"
      },
      {"internalType": "bytes", "name": "transferParam", "type": "bytes"}
    ],
    "name": "fragmentAndSell",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "collectionId",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "collectionContract",
            "type": "address"
          },
          {"internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]"}
        ],
        "internalType": "struct FloorPeriphery.FloorFragment",
        "name": "fragmentParam",
        "type": "tuple"
      },
      {
        "components": [
          {"internalType": "bytes", "name": "commands", "type": "bytes"},
          {"internalType": "bytes[]", "name": "inputs", "type": "bytes[]"},
          {"internalType": "uint256", "name": "deadline", "type": "uint256"}
        ],
        "internalType": "struct FloorPeriphery.UniversalRouterExecute",
        "name": "swapParam",
        "type": "tuple"
      },
      {
        "internalType": "enum FloorPeriphery.TransferWay",
        "name": "transferWay",
        "type": "uint8"
      },
      {"internalType": "bytes", "name": "transferParam", "type": "bytes"}
    ],
    "name": "fragmentAndSell",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "uint256", "name": "", "type": "uint256"},
      {"internalType": "bytes", "name": "", "type": "bytes"}
    ],
    "name": "onERC721Received",
    "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "proxiableUUID",
    "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "newOwner", "type": "address"}
    ],
    "name": "setOwner",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newImplementation",
        "type": "address"
      },
      {"internalType": "bytes", "name": "data", "type": "bytes"}
    ],
    "name": "upgradeToAndCall",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {"stateMutability": "payable", "type": "receive"}
]
