OFRBG - web3.js Port

How about using ethers.js interfaces? Ethers.js is much leaner, smaller with good separation of concerns.