[
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "collectionId",
        "type": "address"
      }
    ],
    "name": "CollectionChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "collectionId",
        "type": "address"
      }
    ],
    "name": "CollectionCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "collectionId",
        "type": "address"
      }
    ],
    "name": "CollectionDestroyed",
    "type": "event"
  },
  {
    "inputs": [
      { "internalType": "uint32", "name": "collectionId", "type": "uint32" }
    ],
    "name": "collectionAddress",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "collectionCreationFee",
    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "collectionAddress",
        "type": "address"
      }
    ],
    "name": "collectionId",
    "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          { "internalType": "string", "name": "name", "type": "string" },
          { "internalType": "string", "name": "description", "type": "string" },
          {
            "internalType": "string",
            "name": "token_prefix",
            "type": "string"
          },
          {
            "internalType": "enum CollectionMode",
            "name": "mode",
            "type": "uint8"
          },
          { "internalType": "uint8", "name": "decimals", "type": "uint8" },
          {
            "components": [
              { "internalType": "string", "name": "key", "type": "string" },
              { "internalType": "bytes", "name": "value", "type": "bytes" }
            ],
            "internalType": "struct Property[]",
            "name": "properties",
            "type": "tuple[]"
          },
          {
            "components": [
              { "internalType": "string", "name": "key", "type": "string" },
              {
                "components": [
                  {
                    "internalType": "enum TokenPermissionField",
                    "name": "code",
                    "type": "uint8"
                  },
                  { "internalType": "bool", "name": "value", "type": "bool" }
                ],
                "internalType": "struct PropertyPermission[]",
                "name": "permissions",
                "type": "tuple[]"
              }
            ],
            "internalType": "struct TokenPropertyPermission[]",
            "name": "token_property_permissions",
            "type": "tuple[]"
          },
          {
            "components": [
              { "internalType": "address", "name": "eth", "type": "address" },
              { "internalType": "uint256", "name": "sub", "type": "uint256" }
            ],
            "internalType": "struct CrossAddress[]",
            "name": "admin_list",
            "type": "tuple[]"
          },
          {
            "components": [
              { "internalType": "bool", "name": "token_owner", "type": "bool" },
              {
                "internalType": "bool",
                "name": "collection_admin",
                "type": "bool"
              },
              {
                "internalType": "address[]",
                "name": "restricted",
                "type": "address[]"
              }
            ],
            "internalType": "struct CollectionNestingAndPermission",
            "name": "nesting_settings",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "enum CollectionLimitField",
                "name": "field",
                "type": "uint8"
              },
              { "internalType": "uint256", "name": "value", "type": "uint256" }
            ],
            "internalType": "struct CollectionLimitValue[]",
            "name": "limits",
            "type": "tuple[]"
          },
          {
            "components": [
              { "internalType": "address", "name": "eth", "type": "address" },
              { "internalType": "uint256", "name": "sub", "type": "uint256" }
            ],
            "internalType": "struct CrossAddress",
            "name": "pending_sponsor",
            "type": "tuple"
          },
          {
            "internalType": "CollectionFlags",
            "name": "flags",
            "type": "uint8"
          }
        ],
        "internalType": "struct CreateCollectionData",
        "name": "data",
        "type": "tuple"
      }
    ],
    "name": "createCollection",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "string", "name": "name", "type": "string" },
      { "internalType": "uint8", "name": "decimals", "type": "uint8" },
      { "internalType": "string", "name": "description", "type": "string" },
      { "internalType": "string", "name": "tokenPrefix", "type": "string" }
    ],
    "name": "createFTCollection",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "string", "name": "name", "type": "string" },
      { "internalType": "string", "name": "description", "type": "string" },
      { "internalType": "string", "name": "tokenPrefix", "type": "string" }
    ],
    "name": "createNFTCollection",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "string", "name": "name", "type": "string" },
      { "internalType": "string", "name": "description", "type": "string" },
      { "internalType": "string", "name": "tokenPrefix", "type": "string" }
    ],
    "name": "createRFTCollection",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "collectionAddress",
        "type": "address"
      }
    ],
    "name": "destroyCollection",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "collectionAddress",
        "type": "address"
      }
    ],
    "name": "isCollectionExist",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "collection", "type": "address" },
      { "internalType": "string", "name": "baseUri", "type": "string" }
    ],
    "name": "makeCollectionERC721MetadataCompatible",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
    ],
    "name": "supportsInterface",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "view",
    "type": "function"
  }
]
