how to implement function encoder? interface.encodeFunctionData( fragment [ , values ] ) ⇒ string< DataHexString > or is there a way to achieve the same with [defaultAbiCoder]