// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract HoopoeToken {
    string public name = "Hoopoe Token";
    string public symbol = "HOOPOE";
    uint8 public decimals = 18;
    uint256 public totalSupply = 21000000 * 10**uint256(decimals);

    mapping(address => uint256) public balanceOf;
    address public owner;
    address public taxWallet;
    address public developerWallet;
    address public marketingWallet;
    uint256 public transactionLimit;

        constructor() {
        owner = msg.sender;
        balanceOf[owner] = totalSupply;
    }

    function setTaxWallet(address _taxWallet) public {
        require(msg.sender == owner, "Only the owner can set the tax wallet");
        taxWallet = _taxWallet;
    }

    function setDeveloperWallet(address _developerWallet) public {
        require(msg.sender == owner, "Only the owner can set the developer wallet");
        developerWallet = _developerWallet;
    }

    function setMarketingWallet(address _marketingWallet) public {
        require(msg.sender == owner, "Only the owner can set the marketing wallet");
        marketingWallet = _marketingWallet;
    }

    function setTransactionLimit(uint256 _transactionLimit) public {
        require(msg.sender == owner, "Only the owner can set the transaction limit");
        transactionLimit = _transactionLimit;
    }

    function burn(uint256 _value) public {
        require(msg.sender == owner, "Only the owner can burn tokens");
        require(_value <= balanceOf[owner], "Not enough tokens");
        balanceOf[owner] -= _value;
        totalSupply -= _value;
        emit Burn(_value);
    }

    function transfer(address _to, uint256 _value) public {
        require(_value <= balanceOf[msg.sender], "Not enough tokens");
        require(_value <= transactionLimit, "Transaction limit exceeded");
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
    }

    event Burn(uint256 value);
    event Transfer(address from, address to, uint256 value);
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_developerWallet","type":"address"}],"name":"setDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transactionLimit","type":"uint256"}],"name":"setTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]