offline signer should be able to decode ERC20 data for common transactions "such as USDC/USDT token transfer, token approval, change authorization limit, DEFI trade, ..."
Otherwise we are just doing blind signing without knowing what the data means. It's a significant security concern unless relying some external ETH transaction decoder.
Possible impl
we can have a separate module "erc_data_decoder.ts" and add common data parser as needed. Just cover the most widely-used contract and community will keep adding more.