def METHOD_NAME(cls, _root, info: ResolveInfo, /, **data):
    cleaned_input = cls.clean_input(info, data.get("order"), data.get("input"))
    order = cleaned_input["order"]
    cls.check_channel_permissions(info, [order.channel_id])
    manager = get_plugin_manager_promise(info.context).get()
    try:
        app = get_app_promise(info.context).get()
        response = create_fulfillments_for_returned_products(
            info.context.user,
            app,
            order,
            cleaned_input.get("payment"),
            cleaned_input.get("order_lines", []),
            cleaned_input.get("fulfillment_lines", []),
            manager,
            cleaned_input["refund"],
            cleaned_input.get("amount_to_refund"),
            cleaned_input["include_shipping_costs"],
        )
    except PaymentError:
        cls.raise_error_for_payment_error()
    return_fulfillment, replace_fulfillment, replace_order = response
    return cls(
        order=order,
        return_fulfillment=return_fulfillment,
        replace_fulfillment=replace_fulfillment,
        replace_order=replace_order,
    )