@callback process_intent(intent :: any(), state :: any()) :: {:ok, new_state :: any(), effects :: [any()]} | {:error, reason :: any()}