// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; /// Minimal ERC-20 with a public mint, for x402 spike testing on BSC Testnet. contract TestUSD { string public constant name = "Agripinaa Test USD"; string public constant symbol = "aTUSD"; uint8 public constant decimals = 18; uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function mint(uint256 amount) external { totalSupply += amount; balanceOf[msg.sender] += amount; emit Transfer(address(0), msg.sender, amount); } function approve(address spender, uint256 value) external returns (bool) { allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function transfer(address to, uint256 value) external returns (bool) { return _move(msg.sender, to, value); } function transferFrom(address from, address to, uint256 value) external returns (bool) { uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) { require(allowed >= value, "allowance"); allowance[from][msg.sender] = allowed - value; } return _move(from, to, value); } function _move(address from, address to, uint256 value) internal returns (bool) { require(balanceOf[from] >= value, "balance"); balanceOf[from] -= value; balanceOf[to] += value; emit Transfer(from, to, value); return true; } }