UNPKG

@ericnordelo/cross-chain-bridge-helpers

Version:

This package is intented to be used alongside the Openzeppelin cross-chain libraries, to create the corresponding required bridge config for multiple bridges.

59 lines 2.94 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArbitrumL1L2Bridge = void 0; const sdk_1 = require("@arbitrum/sdk"); const ethers_1 = require("ethers"); const L2Bridge_1 = require("../../L2Bridge"); class ArbitrumL1L2Bridge extends L2Bridge_1.L2Bridge { constructor(bridge) { super(bridge); this.bridge = bridge; } loadProviders(providers) { const _super = Object.create(null, { loadProviders: { get: () => super.loadProviders } }); return __awaiter(this, void 0, void 0, function* () { _super.loadProviders.call(this, providers); }); } getCrossChainTxConfigParameters(sender, destAddr, l2CallDataHex, l2CallValue) { return __awaiter(this, void 0, void 0, function* () { return this._getCrossChainTxConfigParams(sender, destAddr, l2CallDataHex, l2CallValue, this.l1Provider, this.l2Provider); }); } getCrossChainTxConfigBytes(sender, destAddr, l2CallDataHex, l2CallValue) { return __awaiter(this, void 0, void 0, function* () { const params = yield this.getCrossChainTxConfigParameters(sender, destAddr, l2CallDataHex, l2CallValue); const arbParams = params; return ethers_1.utils.defaultAbiCoder.encode(['bytes4', 'uint256', 'uint256', 'uint256', 'address', 'address', 'uint256', 'uint256'], [ this.bridgeId, arbParams.totalL2GasCosts, l2CallValue, arbParams.maxSubmissionFee, sender, sender, arbParams.gasLimit, arbParams.maxFeePerGas, ]); }); } _getCrossChainTxConfigParams(sender, destAddr, l2CallDataHex, l2CallValue, l1Provider, l2Provider) { return __awaiter(this, void 0, void 0, function* () { const estimator = new sdk_1.L1ToL2MessageGasEstimator(l2Provider); const l1GasPrice = yield l1Provider.getGasPrice(); return estimator.estimateAll(sender, destAddr, l2CallDataHex, l2CallValue, l1GasPrice, sender, sender, l1Provider); }); } } exports.ArbitrumL1L2Bridge = ArbitrumL1L2Bridge; //# sourceMappingURL=ArbitrumL1L2.js.map