{
    "Function": "createProject",
    "File": "contracts/HomeFi.sol",
    "Parent Contracts": [
        "node_modules/@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "contracts/interfaces/IHomeFi.sol"
    ],
    "High-Level Calls": [
        "IProjectFactory"
    ],
    "Internal Calls": [
        "validCurrency",
        "nonReentrant",
        "_msgSender",
        "mintNFT"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "function createProject(bytes memory _hash, address _currency)\n        external\n        override\n        nonReentrant\n    {\n        // Revert if currency not supported by HomeFi\n        validCurrency(_currency);\n\n        address _sender = _msgSender();\n\n        // Create a new project Clone and mint a new NFT for it\n        address _project = projectFactoryInstance.createProject(\n            _currency,\n            _sender\n        );\n        mintNFT(_sender, string(_hash));\n\n        // Update project related mappings\n        projects[projectCount] = _project;\n        projectTokenId[_project] = projectCount;\n\n        emit ProjectAdded(projectCount, _project, _sender, _currency, _hash);\n    }"
}