# `Membrane.Event`
[🔗](https://github.com/membraneframework/membrane-core/blob/v1.2.6/lib/membrane/event.ex#L1)

Represents a communication event, capable of flowing both downstream and upstream.

Events are dispatched using `t:Membrane.Element.Action.event/0` and are handled via the
`c:Membrane.Element.Base.handle_event/4` callback. Each event must conform to the
`Membrane.EventProtocol` to ensure the proper configuration of its behaviour.

# `t`

```elixir
@type t() :: Membrane.EventProtocol.t()
```

The Membrane event, based on the `Membrane.EventProtocol`.

# `async?`

# `event?`

```elixir
@spec event?(t()) :: boolean()
```

Checks if the given argument is a Membrane event.

Returns `true` if the `event` implements the `Membrane.EventProtocol`, otherwise `false`.

# `sticky?`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
