Technically possible, but it is usually not necessary.
If the bottleneck of the method is CPU consumption, it is better to set the synchronous interface. Then clients can easily start the task asynchronously themselves:
var five = await Task.Run(() => a.Return5());
And they may not run asynchronously if the method does not need it.
That is, in this case, simply expose the synchronous method, customers themselves can easily turn it into asynchronous.
But if the method does not take a thread for its execution (for example, it loads something from the Internet, using async functions), then you need to set only the asynchronous method. Accordingly, you will not be able to set a synchronous method, unless it is artificially created through Task.Wait() (which is not necessary again, because the client can do it himself if he wishes).
Additional reading on the topic from one of the key developers of asynchronous features C #: Should I expose synchronous wrappers for asynchronous methods?
How to technically make an asynchronous wrapper? For example, via Task.Run :
public class AsyncA { private A a = new A(); public Task<int> Return5Async() => Task.Run(() => a.Return5()); // и т. д. }