def METHOD_NAME(  # type: ignore[override]
    cls, _root, info: ResolveInfo, /, *, id: str, input=None
):
    user = info.context.user
    user = cast(User, user)
    fulfillment = cls.get_node_or_error(info, id, only_type=Fulfillment)
    order = fulfillment.order
    cls.check_channel_permissions(info, [order.channel_id])
    cls.validate_order(order)
    warehouse = None
    if fulfillment.status == FulfillmentStatus.WAITING_FOR_APPROVAL:
        warehouse = None
    elif input:
        warehouse_id: Optional[str] = input.get("warehouse_id")
        if warehouse_id:
            warehouse = cls.get_node_or_error(
                info, warehouse_id, only_type=Warehouse, field="warehouse_id"
            )
    cls.validate_fulfillment(fulfillment, warehouse)
    app = get_app_promise(info.context).get()
    manager = get_plugin_manager_promise(info.context).get()
    if fulfillment.status == FulfillmentStatus.WAITING_FOR_APPROVAL:
        fulfillment = cancel_waiting_fulfillment(fulfillment, user, app, manager)
    else:
        fulfillment = cancel_fulfillment(fulfillment, user, app, warehouse, manager)
    order.refresh_from_db(fields=["status"])
    return FulfillmentCancel(fulfillment=fulfillment, order=order)