encodeFunctionData is a synchronous function, so it cannot resolve AddressLike.
Interfaces functions (encodeFunctionData and others) should accept string instead of AddressLike
This code will throw an error:
declare const alice: Wallet
iface.encodeFunctionData('balanceOf', [alice]);
But this will NOT:
iface.encodeFunctionData('balanceOf', [await alice.getAddress()]);