```\nDepositVault.sol\n    function deposit(uint256 amount, address tokenAddress) public payable {\n        require(amount > 0 || msg.value > 0, "Deposit amount must be greater than 0");\n        if(msg.value > 0) {\n            require(tokenAddress == address(0), "Token address must be 0x0 for ETH deposits");\n            uint256 depositIndex = deposits.length;\n            deposits.push(Deposit(payable(msg.sender), msg.value, tokenAddress));\n            emit DepositMade(msg.sender, depositIndex, msg.value, tokenAddress);\n        } else {\n            require(tokenAddress != address(0), "Token address must not be 0x0 for token deposits");\n            IERC20 token = IERC20(tokenAddress);\n            token.safeTransferFrom(msg.sender, address(this), amount);\n            uint256 depositIndex = deposits.length;\n            deposits.push(Deposit(payable(msg.sender), amount, tokenAddress));//@audit-issue fee-on-transfer, rebalancing tokens will cause problems\n            emit DepositMade(msg.sender, depositIndex, amount, tokenAddress);\n        }\n    }\n```\n