// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract SellTixToken is ERC20, Ownable, ERC20Permit, ERC20Votes { uint256 public constant TOTAL_SUPPLY = 100_000_000 * 10**18; uint256 public constant REWARD_SUPPLY = 85_000_000 * 10**18; uint256 public constant TEAM_SUPPLY = 15_000_000 * 10**18; constructor(address sellTixAddress, address rewardSmartContract) ERC20("SellTix", "SELLTIX") ERC20Permit("SellTix") Ownable(sellTixAddress) { _mint(rewardSmartContract, REWARD_SUPPLY); _mint(sellTixAddress, TEAM_SUPPLY); } function _update(address from, address to, uint256 value) internal override(ERC20, ERC20Votes) { super._update(from, to, value); } function nonces(address owner) public view override(ERC20Permit, Nonces) returns (uint256) { return super.nonces(owner); } }