signal() :: atom()
t() :: any()
timestamp() :: NaiveDateTime.t() | any()
record(sink :: t(), signal :: signal(), timestamp :: timestamp(), data :: any()) :: t()