def METHOD_NAME(number_of_months: int) -> pd.DataFrame:
    """
    Extracts missions data from Monitorenv database for the specified number of months.
    Args:
        number_of_months (int): number of months of controls data to extract, going
            backwards from the present.
    Raises:
        ValueError: if `number_of_months` is not of type `int`
        ValueError: if `number_of_months` is not between 1 and 240
    Returns:
        pd.DataFrame: DataFrame with missions data.
    """
    parse_dates = [
        "start_datetime_utc",
        "end_datetime_utc",
    ]
    dtypes = {
        "facade": "category",
        "deleted": bool,
        "mission_source": "category",
        "closed": bool,
    }
    try:
        assert isinstance(number_of_months, int)
    except AssertionError:
        raise ValueError(
            f"number_of_months must be of type int, got {type(number_of_months)}"
        )
    try:
        assert 0 < number_of_months <= 240
    except AssertionError:
        raise ValueError(
            f"number_of_months must be > 0 and <= 240, got {number_of_months}"
        )
    return extract(
        db_name="monitorenv_remote",
        query_filepath="monitorenv/missions.sql",
        parse_dates=parse_dates,
        dtypes=dtypes,
        params={"number_of_months": number_of_months},
    )