defmodule Chronoscope.DateTime.Behaviour do @callback utc_now :: DateTime.t() end defmodule Chronoscope.SSL.Behaviour do @callback connect(any(), any(), any(), any()) :: {:ok, any()} | {:error, any()} @callback send(any(), any()) :: :ok | {:error, any()} @callback peercert(any()) :: {:ok, any()} | {:error, any()} @callback close(any()) :: :ok | {:error, any()} end defmodule Chronoscope.Registry.Behaviour do @callback lookup(atom(), any()) :: [{pid(), any()}] end defmodule Chronoscope.DynamicSupervisor.Behaviour do @callback start_child(Supervisor.supervisor(), any()) :: any() @callback which_children(Supervisor.supervisor()) :: [any()] end defmodule Chronoscope.GenServer.Behaviour do @callback call(pid(), any(), any()) :: any() @callback call(pid(), any()) :: any() end defmodule ChronoscopeWeb.Endpoint.Behaviour do @callback broadcast(any(), any(), any()) :: any() end