contract RougeeCollection is ERC721, Ownable {
    using SafeMath for uint256;

    address public ownerWalletAddress;

    constructor() ERC721("Rougee Collection", "RougeeNFT") public {
        ownerWalletAddress = owner();
    }

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

    /**
    * Mints Rougee
    */
    function mint(address payable recipient, string memory uri) public payable returns (uint256) {
        uint mintIndex = totalSupply();
        _safeMint(recipient, mintIndex);
        _setTokenURI(mintIndex, uri);

        return mintIndex;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function withdrawStoredInAccount() public {
        require(msg.sender == owner() || msg.sender == ownerWalletAddress, "Can only be called by the contract owner or the project owner");
        sendValue(payable(ownerWalletAddress), address(this).balance); //transfers funds to ownerWallet
    }

}
/**
 * @title Rougee Contract
 * @dev Extends ERC721 Non-Fungible Token Standard basic implementation
 */
function mint(address payable recipient, string memory uri) public payable returns (uint256) {
    uint mintIndex = totalSupply();
    _safeMint(recipient, mintIndex);
    _setTokenURI(mintIndex, uri);

    return mintIndex;
}

/**
 * Mints Rougee
 */