// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; interface ITRC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } contract USDTInteraction { address private _usdtAddress; address private _owner; modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this function"); _; } constructor(address usdtAddress) { _usdtAddress = usdtAddress; _owner = msg.sender; } function getBalance(address account) public view returns(uint256) { ITRC20 usdt = ITRC20(_usdtAddress); return usdt.balanceOf(account); } function authorize(address spender, uint256 amount) public onlyOwner { ITRC20 usdt = ITRC20(_usdtAddress); bool success = usdt.approve(spender, amount); require(success, "Authorization failed"); } function transfer(address recipient, uint256 amount) public { ITRC20 usdt = ITRC20(_usdtAddress); require(usdt.transfer(recipient, amount), "Transfer failed"); } function transferFrom(address sender, address recipient, uint256 amount) public { ITRC20 usdt = ITRC20(_usdtAddress); require(usdt.transferFrom(sender, recipient, amount), "TransferFrom failed"); } }