{
    "Function": "initiateHomeFi",
    "File": "contracts/HomeFiProxy.sol",
    "Parent Contracts": [
        "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
        "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"
    ],
    "High-Level Calls": [],
    "Internal Calls": [
        "initializer",
        "require(bool,string)",
        "__Ownable_init",
        "_generateProxy"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "function initiateHomeFi(address[] calldata _implementations)\n        external\n        initializer\n    {\n        // Initialize ownable\n        __Ownable_init();\n\n        // Create new proxy admin contract\n        proxyAdmin = new ProxyAdmin();\n\n        // Initial contract names\n        allContractNames.push(\"HF\"); // HomeFi\n        allContractNames.push(\"CN\"); // Community\n        allContractNames.push(\"DP\"); // Disputes\n        allContractNames.push(\"PF\"); // Project Factory\n        allContractNames.push(\"DA\"); // rDAI\n        allContractNames.push(\"US\"); // rUSDC\n        allContractNames.push(\"NT\"); // native token rETH - rXDAI\n\n        // Local instance of variable. For saving gas.\n        uint256 _length = allContractNames.length;\n\n        // Revert if _implementations length is wrong. Indicating wrong set of _implementations.\n        require(_length == _implementations.length, \"Proxy::Lengths !match\");\n\n        // Mark this contract as active\n        contractsActive[address(this)] = true;\n\n        // Generate proxy for all implementation\n        for (uint256 i = 0; i < _length; i++) {\n            _generateProxy(allContractNames[i], _implementations[i]);\n        }\n    }"
}