// SPDX-License-Identifier: MIT pragma solidity ^0.8.29; import "IERC20.sol"; import "Ownable.sol"; contract TokenDeposit is Ownable { IERC20 public token; address public tokenAddress = 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984; mapping(address => uint256) public deposits; event Deposit(address indexed user, uint256 amount); event Withdraw(address indexed user, uint256 amount); constructor() { token = IERC20(tokenAddress); } function deposit(uint256 amount) external { require(amount > 0, "Amount must be greater than zero"); require(token.transferFrom(msg.sender, address(this), amount), "Transfer failed"); deposits[msg.sender] += amount; emit Deposit(msg.sender, amount); } function withdraw(uint256 amount) external { require(deposits[msg.sender] >= amount, "Insufficient balance"); deposits[msg.sender] -= amount; require(token.transfer(msg.sender, amount), "Transfer failed"); emit Withdraw(msg.sender, amount); } function getDeposit(address user) external view returns (uint256) { return deposits[user]; } }