def METHOD_NAME(self, batch: Sequence[LogData]) -> LogExportResult:
    # After the call to Shutdown subsequent calls to Export are
    # not allowed and should return a Failure result.
    if self._shutdown:
        _logger.warning("Exporter already shutdown, ignoring batch")
        return LogExportResult.FAILURE
    serialized_data = encode_logs(batch).SerializeToString()
    for delay in _create_exp_backoff_generator(
        max_value=self._MAX_RETRY_TIMEOUT
    ):
        if delay == self._MAX_RETRY_TIMEOUT:
            return LogExportResult.FAILURE
        resp = self._export(serialized_data)
        # pylint: disable=no-else-return
        if resp.status_code in (200, 202):
            return LogExportResult.SUCCESS
        elif self._retryable(resp):
            _logger.warning(
                "Transient error %s encountered while exporting logs batch, retrying in %ss.",
                resp.reason,
                delay,
            )
            sleep(delay)
            continue
        else:
            _logger.error(
                "Failed to export logs batch code: %s, reason: %s",
                resp.status_code,
                resp.text,
            )
            return LogExportResult.FAILURE
    return LogExportResult.FAILURE