UNPKG

@rarible/estimate-middleware

Version:
30 lines (29 loc) 1.19 kB
import { createFetchMiddleware, providerAsMiddleware, providerFromEngine } from "eth-json-rpc-middleware"; import { JsonRpcEngine } from "json-rpc-engine"; import { createEstimateGasMiddleware } from "./middleware.js"; import { isSafeEventEmitterProvider } from "./utils.js"; export function estimate(provider, options = {}) { if (isSafeEventEmitterProvider(provider)) { const engine = new JsonRpcEngine(); const estimateEngine = getEstimateEngine(provider, options.estimation); engine.push(createEstimateGasMiddleware(estimateEngine, options.force, options.threshold)); engine.push(providerAsMiddleware(provider)); return providerFromEngine(engine); } return provider; } function getEstimateEngine(provider, estimate) { if (estimate === undefined) { const estimateEngine = new JsonRpcEngine(); estimateEngine.push(providerAsMiddleware(provider)); return estimateEngine; } else if (typeof estimate === "string") { const engine = new JsonRpcEngine(); engine.push(createFetchMiddleware({ rpcUrl: estimate })); return engine; } else { return estimate; } }