@rarible/estimate-middleware
Version:
34 lines (33 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.estimate = void 0;
const eth_json_rpc_middleware_1 = require("eth-json-rpc-middleware");
const json_rpc_engine_1 = require("json-rpc-engine");
const middleware_js_1 = require("./middleware.js");
const utils_js_1 = require("./utils.js");
function estimate(provider, options = {}) {
if ((0, utils_js_1.isSafeEventEmitterProvider)(provider)) {
const engine = new json_rpc_engine_1.JsonRpcEngine();
const estimateEngine = getEstimateEngine(provider, options.estimation);
engine.push((0, middleware_js_1.createEstimateGasMiddleware)(estimateEngine, options.force, options.threshold));
engine.push((0, eth_json_rpc_middleware_1.providerAsMiddleware)(provider));
return (0, eth_json_rpc_middleware_1.providerFromEngine)(engine);
}
return provider;
}
exports.estimate = estimate;
function getEstimateEngine(provider, estimate) {
if (estimate === undefined) {
const estimateEngine = new json_rpc_engine_1.JsonRpcEngine();
estimateEngine.push((0, eth_json_rpc_middleware_1.providerAsMiddleware)(provider));
return estimateEngine;
}
else if (typeof estimate === "string") {
const engine = new json_rpc_engine_1.JsonRpcEngine();
engine.push((0, eth_json_rpc_middleware_1.createFetchMiddleware)({ rpcUrl: estimate }));
return engine;
}
else {
return estimate;
}
}