contract MNLTH is ERC1155, Ownable, ERC1155Burnable {    
    constructor() ERC1155("") {}

    uint256 tokenId = 1;
    string tokenUri = "";
    address authorizedContract = 0x1ae6A4d3078b951438d1aa64DE6C1E4e033913D6;
    bool migrationActive = false;
    

    // Mint function
    function airdrop(uint256[] calldata amount, address[] calldata receiver) public onlyOwner {
        for(uint256 i = 0; i < receiver.length; i++) {
            _mint(receiver[i], tokenId, amount[i], "");
        }
    }

    function setTokenUri(string calldata newUri) public onlyOwner {
        tokenUri = newUri;
    }

    function toggleAuthorizedContract(address contractAddress) public onlyOwner {
        authorizedContract = contractAddress;
    }

    function toggleMigration() public onlyOwner {
        migrationActive = !migrationActive;
    }

    function migrateToken() public {
        require(migrationActive, "Migration is not possible at this time");
        require(balanceOf(msg.sender, tokenId) > 0, "Doesn't own the token"); // Check if the user own one of the ERC-1155
        burn(msg.sender, tokenId, 1); // Burn one the ERC-1155 token
        MigrateTokenContract migrationContract = MigrateTokenContract(authorizedContract);
        migrationContract.mintTransfer(msg.sender); // Mint the ERC-721 token
    }

    function uri(uint256) public view virtual override returns (string memory) {
        return tokenUri;
    }
}
function airdrop(uint256[] calldata amount, address[] calldata receiver) public onlyOwner {
    for(uint256 i = 0; i < receiver.length; i++) {
        _mint(receiver[i], tokenId, amount[i], "");
    }
}

// Mint function