Encodes messages to send to the pod process
@callback encode(message :: term(), encoding :: String.t()) :: {:ok | :error, String.t()}
@callback encode!(message :: term(), encoding :: String.t()) :: String.t()