import mergeMiddleware from 'json-rpc-engine/src/mergeMiddleware' import createScaffoldMiddleware from 'json-rpc-engine/src/createScaffoldMiddleware' import createWalletSubprovider from 'eth-json-rpc-middleware/wallet' import { createPendingNonceMiddleware, createPendingTxMiddleware } from './middleware/pending' export default function createMetamaskMiddleware ({ version, getAccounts, processTransaction, processEthSignMessage, processTypedMessage, processTypedMessageV3, processTypedMessageV4, processPersonalMessage, processDecryptMessage, processEncryptionPublicKey, getPendingNonce, getPendingTransactionByHash, }) { const metamaskMiddleware = mergeMiddleware([ createScaffoldMiddleware({ // staticSubprovider eth_syncing: false, web3_clientVersion: `MetaMask/v${version}`, }), createWalletSubprovider({ getAccounts, processTransaction, processEthSignMessage, processTypedMessage, processTypedMessageV3, processTypedMessageV4, processPersonalMessage, processDecryptMessage, processEncryptionPublicKey, }), createPendingNonceMiddleware({ getPendingNonce }), createPendingTxMiddleware({ getPendingTransactionByHash }), ]) return metamaskMiddleware }