lib/ex_waiter/receiving/receiver.ex

defmodule ExWaiter.Receiving.Receiver do
  @keys [
    :message_num,
    :timeout,
    :remaining_timeout,
    :num_messages,
    :filter_fn,
    :on_complete,
    all_messages: [],
    filtered_messages: [],
    rejected_messages: []
  ]
  defstruct @keys

  @type filter_fn :: (any() -> boolean())
  @type on_complete :: (__MODULE__.t() -> any())

  @type t :: %__MODULE__{
          message_num: pos_integer(),
          timeout: timeout(),
          remaining_timeout: non_neg_integer() | nil,
          all_messages: [any()],
          filtered_messages: [any()],
          rejected_messages: [any()],
          num_messages: pos_integer(),
          filter_fn: filter_fn(),
          on_complete: on_complete()
        }
end