[
    {
        "inputs": [
            {
                "internalType": "contract SystemContext",
                "name": "systemContext_",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "collectionId",
                "type": "bytes32"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "addr",
                "type": "address"
            }
        ],
        "name": "NewAddress",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "collectionId",
                "type": "bytes32"
            },
            {
                "indexed": false,
                "internalType": "string",
                "name": "name",
                "type": "string"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "owner",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "addr",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "string",
                "name": "contractName",
                "type": "string"
            },
            {
                "indexed": false,
                "internalType": "uint16",
                "name": "contractVersion",
                "type": "uint16"
            }
        ],
        "name": "NewCollection",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "collectionId",
                "type": "bytes32"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "owner",
                "type": "address"
            }
        ],
        "name": "TransferOwnership",
        "type": "event"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            }
        ],
        "name": "addressOf",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "name": "collections",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "name": "externalToCollection",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address[]",
                "name": "collectionAddresses_",
                "type": "address[]"
            }
        ],
        "name": "getCollectionIds",
        "outputs": [
            {
                "internalType": "bytes32[]",
                "name": "",
                "type": "bytes32[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            }
        ],
        "name": "getRecord",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "owner",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "addr",
                        "type": "address"
                    },
                    {
                        "internalType": "string",
                        "name": "userName",
                        "type": "string"
                    },
                    {
                        "internalType": "string",
                        "name": "contractName",
                        "type": "string"
                    },
                    {
                        "internalType": "uint16",
                        "name": "contractVersion",
                        "type": "uint16"
                    }
                ],
                "internalType": "struct CollectionsRegistry.Record",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "userAddress_",
                "type": "address"
            }
        ],
        "name": "listCollectionsPerOwner",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "addr",
                        "type": "address"
                    },
                    {
                        "internalType": "string",
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "id",
                        "type": "bytes32"
                    }
                ],
                "internalType": "struct CollectionsRegistry.RecordWithId[]",
                "name": "",
                "type": "tuple[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            }
        ],
        "name": "ownerOf",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            }
        ],
        "name": "recordExists",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "name": "records",
        "outputs": [
            {
                "internalType": "address",
                "name": "owner",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "addr",
                "type": "address"
            },
            {
                "internalType": "string",
                "name": "userName",
                "type": "string"
            },
            {
                "internalType": "string",
                "name": "contractName",
                "type": "string"
            },
            {
                "internalType": "uint16",
                "name": "contractVersion",
                "type": "uint16"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            },
            {
                "internalType": "string",
                "name": "userName_",
                "type": "string"
            },
            {
                "internalType": "address",
                "name": "owner_",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "collectionAddress_",
                "type": "address"
            },
            {
                "internalType": "string",
                "name": "contractName_",
                "type": "string"
            },
            {
                "internalType": "uint16",
                "name": "contractVersion_",
                "type": "uint16"
            }
        ],
        "name": "registerCollection",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "originalAddress_",
                "type": "address"
            }
        ],
        "name": "registerOriginalAddress",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "owner_",
                "type": "address"
            }
        ],
        "name": "setOwner",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract SystemContext",
                "name": "systemContext_",
                "type": "address"
            }
        ],
        "name": "setSystemContext",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "systemContext",
        "outputs": [
            {
                "internalType": "contract SystemContext",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "addr_",
                "type": "address"
            },
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            }
        ],
        "name": "updateCollection",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "addr_",
                "type": "address"
            },
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            }
        ],
        "name": "updateExternalToCollection",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "owner",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "addr",
                        "type": "address"
                    },
                    {
                        "internalType": "string",
                        "name": "userName",
                        "type": "string"
                    },
                    {
                        "internalType": "string",
                        "name": "contractName",
                        "type": "string"
                    },
                    {
                        "internalType": "uint16",
                        "name": "contractVersion",
                        "type": "uint16"
                    }
                ],
                "internalType": "struct CollectionsRegistry.Record",
                "name": "record_",
                "type": "tuple"
            },
            {
                "internalType": "bytes32",
                "name": "collectionId_",
                "type": "bytes32"
            }
        ],
        "name": "updateRecord",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]
