defmodule Actors.Actor.Interface do @moduledoc """ `Invoker` is responsible for making calls to the Host Function """ alias Actors.Actor.Entity.EntityState alias Spawn.ActorInvocation @type state :: EntityState.t() @type payload :: ActorInvocation.t() @type default_methods :: [] @callback invoke_host(any(), state(), default_methods()) :: {:ok, any(), state()} | {:error, any(), state()} defmacro __using__(_opts) do quote do @behaviour Actors.Actor.Interface defp invoke_host(payload, state) do {:ok, nil, state} end defoverridable Actors.Actor.Interface end end end