// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; /** * @title OfficialStableMirrorToken * @notice Lightweight ERC-20 used as the local Chain 138 "official" stable mirror. * @dev This token exists only to provide a live ERC-20 quote-side asset for local PMM pools. * It is intentionally separate from the compliant token contracts. */ contract OfficialStableMirrorToken is ERC20, Ownable { uint8 private immutable _decimalsStorage; constructor( string memory name_, string memory symbol_, uint8 decimals_, address initialOwner, uint256 initialSupply ) ERC20(name_, symbol_) Ownable(initialOwner) { _decimalsStorage = decimals_; if (initialSupply > 0) { _mint(msg.sender, initialSupply); } } function decimals() public view override returns (uint8) { return _decimalsStorage; } function mint(address to, uint256 amount) external onlyOwner { _mint(to, amount); } function burn(address from, uint256 amount) external onlyOwner { _burn(from, amount); } }