quickswap-smart-order-router
Version:
QuickSwap Smart Order Router
66 lines • 6.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArbitrumGasDataProvider = exports.OptimismGasDataProvider = void 0;
const GasDataArbitrum__factory_1 = require("../../types/other/factories/GasDataArbitrum__factory");
const GasPriceOracle__factory_1 = require("../../types/other/factories/GasPriceOracle__factory");
const util_1 = require("../../util");
class OptimismGasDataProvider {
constructor(chainId, multicall2Provider, gasPriceAddress) {
this.chainId = chainId;
this.multicall2Provider = multicall2Provider;
if (chainId != util_1.ChainId.OPTIMISM && chainId != util_1.ChainId.OPTIMISTIC_KOVAN) {
throw new Error('This data provider is used only on optimism networks.');
}
this.gasOracleAddress = gasPriceAddress !== null && gasPriceAddress !== void 0 ? gasPriceAddress : util_1.OVM_GASPRICE_ADDRESS;
}
/**
* Gets the data constants needed to calculate the l1 security fee on Optimism.
* @returns An OptimismGasData object that includes the l1BaseFee,
* scalar, decimals, and overhead values.
*/
async getGasData() {
var _a, _b, _c, _d;
const funcNames = ['l1BaseFee', 'scalar', 'decimals', 'overhead'];
const tx = await this.multicall2Provider.callMultipleFunctionsOnSameContract({
address: this.gasOracleAddress,
contractInterface: GasPriceOracle__factory_1.GasPriceOracle__factory.createInterface(),
functionNames: funcNames,
});
if (!((_a = tx.results[0]) === null || _a === void 0 ? void 0 : _a.success) ||
!((_b = tx.results[1]) === null || _b === void 0 ? void 0 : _b.success) ||
!((_c = tx.results[2]) === null || _c === void 0 ? void 0 : _c.success) ||
!((_d = tx.results[3]) === null || _d === void 0 ? void 0 : _d.success)) {
util_1.log.info({ results: tx.results }, 'Failed to get gas constants data from the optimism gas oracle');
throw new Error('Failed to get gas constants data from the optimism gas oracle');
}
const { result: l1BaseFee } = tx.results[0];
const { result: scalar } = tx.results[1];
const { result: decimals } = tx.results[2];
const { result: overhead } = tx.results[3];
return {
l1BaseFee: l1BaseFee[0],
scalar: scalar[0],
decimals: decimals[0],
overhead: overhead[0],
};
}
}
exports.OptimismGasDataProvider = OptimismGasDataProvider;
class ArbitrumGasDataProvider {
constructor(chainId, provider, gasDataAddress) {
this.chainId = chainId;
this.provider = provider;
this.gasFeesAddress = gasDataAddress ? gasDataAddress : util_1.ARB_GASINFO_ADDRESS;
}
async getGasData() {
const gasDataContract = GasDataArbitrum__factory_1.GasDataArbitrum__factory.connect(this.gasFeesAddress, this.provider);
const gasData = await gasDataContract.getPricesInWei();
return {
perL2TxFee: gasData[0],
perL1CalldataFee: gasData[1],
perArbGasTotal: gasData[5],
};
}
}
exports.ArbitrumGasDataProvider = ArbitrumGasDataProvider;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzLWRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3YzL2dhcy1kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1HQUFnRztBQUNoRyxpR0FBOEY7QUFDOUYscUNBS29CO0FBd0JwQixNQUFhLHVCQUF1QjtJQUtsQyxZQUNZLE9BQWdCLEVBQ2hCLGtCQUFzQyxFQUNoRCxlQUF3QjtRQUZkLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUdoRCxJQUFJLE9BQU8sSUFBSSxjQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sSUFBSSxjQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDdEUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1NBQzFFO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsYUFBZixlQUFlLGNBQWYsZUFBZSxHQUFJLDJCQUFvQixDQUFDO0lBQ2xFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7O1FBQ3JCLE1BQU0sU0FBUyxHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEUsTUFBTSxFQUFFLEdBQ04sTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUNBQW1DLENBRy9EO1lBQ0EsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDOUIsaUJBQWlCLEVBQUUsaURBQXVCLENBQUMsZUFBZSxFQUFFO1lBQzVELGFBQWEsRUFBRSxTQUFTO1NBQ3pCLENBQUMsQ0FBQztRQUVMLElBQ0UsQ0FBQyxDQUFBLE1BQUEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMENBQUUsT0FBTyxDQUFBO1lBQ3ZCLENBQUMsQ0FBQSxNQUFBLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE9BQU8sQ0FBQTtZQUN2QixDQUFDLENBQUEsTUFBQSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxPQUFPLENBQUE7WUFDdkIsQ0FBQyxDQUFBLE1BQUEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMENBQUUsT0FBTyxDQUFBLEVBQ3ZCO1lBQ0EsVUFBRyxDQUFDLElBQUksQ0FDTixFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQ3ZCLCtEQUErRCxDQUNoRSxDQUFDO1lBQ0YsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsQ0FDaEUsQ0FBQztTQUNIO1FBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVDLE9BQU87WUFDTCxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNqQixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNURELDBEQTREQztBQWFELE1BQWEsdUJBQXVCO0lBS2xDLFlBQ1ksT0FBZ0IsRUFDaEIsUUFBc0IsRUFDaEMsY0FBdUI7UUFGYixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFHaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMEJBQW1CLENBQUM7SUFDOUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE1BQU0sZUFBZSxHQUFHLG1EQUF3QixDQUFDLE9BQU8sQ0FDdEQsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkQsT0FBTztZQUNMLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDNUIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDM0IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXpCRCwwREF5QkMifQ==