# `WardrikCore.Event`

Something that happened to an agent.

Each event goes to `:telemetry` and to the agent's `WardrikCore.Events` module. See
`WardrikCore.Telemetry` for core's events. Packages emit their own:

    WardrikCore.Event.emit(context, [:my_package, :refused], %{}, %{call: call})

# `t`

```elixir
@type t() :: %WardrikCore.Event{
  measurements: map(),
  metadata: map(),
  name: [atom()],
  time: DateTime.t()
}
```

# `emit`

```elixir
@spec emit(
  WardrikCore.Context.t() | WardrikCore.Context.entry() | nil,
  [atom()],
  map(),
  map()
) :: :ok
```

Emits an event to telemetry, and to the events module of `source`.

`source` is a `WardrikCore.Context`, an events module as `module` or `{module, opts}`, or `nil`
for telemetry only.

---

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