contract cCRV is ERC20, Ownable {
    mapping(address => uint) public minters;

    event SetMinter(address indexed minter, uint amount);

    constructor () ERC20("Congruent CRV Token", "cCRV") {
    }

    // Owner will be a MultiSig Contract
    function setMinter(address minter, uint amount) external onlyOwner {
        minters[minter] = amount;
        emit SetMinter(minter, amount);
    }

    function mint(address to, uint amount) external {
        require(amount <= minters[msg.sender], "cCRV: insufficient mint allowance");
        minters[msg.sender] -= amount;
        _mint(to, amount);
    }
}
function setMinter(address minter, uint amount) external onlyOwner {
    minters[minter] = amount;
    emit SetMinter(minter, amount);
}

// Owner will be a MultiSig Contract