def METHOD_NAME(self, event: Union[RunEvent, DatasetEvent | JobEvent]) -> None:  # noqa: UP007
    if not (isinstance(event, (RunEvent, DatasetEvent, JobEvent))):
        msg = "`emit` only accepts RunEvent, DatasetEvent, JobEvent classes"
        raise ValueError(msg)  # noqa: TRY004
    if not self.transport:
        log.error("Tried to emit OpenLineage event, but transport is not configured.")
        return
    if log.isEnabledFor(logging.DEBUG):
        val = Serde.to_json(event).encode("utf-8")
        log.debug("OpenLineageClient will emit event %s", val)
    if self._filters and self.filter_event(event) is None:
        return
    if event:
        self.transport.METHOD_NAME(event)