contract OxCrystals is ERC1155Burnable, Ownable {
    
    string public OXCRYSTALS_PROVENANCE = "";

    constructor(string memory uri) ERC1155(uri) {
    }

    function withdraw() public onlyOwner {
        uint balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }

    /**
     * @dev Gets the token name
     * @return string representing the token name
     */
    function name() external pure returns(string memory) {
        return "0xCrystals";
    }

    /**
     * @dev Gets the token symbol
     * @return string representing the token symbol
     */
    function symbol() external pure returns(string memory) {
        return "0XCRYSTALS";
    }

    /*     
    * Set provenance once it's calculated
    */
    function setProvenanceHash(string memory provenanceHash) public onlyOwner {
        OXCRYSTALS_PROVENANCE = provenanceHash;
    }

    function setBaseURI(string memory baseURI) public onlyOwner {
        _setURI(baseURI);
    }

    /**
    * Mints 0xcrystals
    */
    function mint0xCrystals(uint256 numberOfTokens) public onlyOwner {
        uint mintIndex = ERC1155.crystalsCount;
        _mint(msg.sender, mintIndex, numberOfTokens,"");
    }
}
function name() external pure returns(string memory) {
    return "0xCrystals";
}

/**
 * @dev Gets the token name
 * @return string representing the token name
 */