defmodule PingPong.ServiceBehaviour do @moduledoc """ Behaviour implemented by PingPong notification services. A service receives a payload map and an options map, validates the data it needs, performs delivery, and returns a PingPong result tuple. """ @doc """ Delivers a notification using service-specific payload and options. Implementations should return `{:ok, response}` on success and an error tuple on failure. """ @callback call(PingPong.payload(), PingPong.options()) :: PingPong.result() end