Socket
Socket
Sign inDemoInstall

@eth-optimism/sdk

Package Overview
Dependencies
Maintainers
2
Versions
498
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@eth-optimism/sdk - npm Package Compare versions

Comparing version 0.0.0-main-20240610203833 to 0.0.0-sc-sdk-fps-mainnet-20240610215134

dist/adapters/dai-bridge.js.map

2

dist/adapters/dai-bridge.d.ts

@@ -1,2 +0,2 @@

import type { AddressLike } from '../interfaces';
import { AddressLike } from '../interfaces';
import { StandardBridgeAdapter } from './standard-bridge';

@@ -3,0 +3,0 @@ export declare class DAIBridgeAdapter extends StandardBridgeAdapter {

"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
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());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DAIBridgeAdapter = void 0;
var core_utils_1 = require("@eth-optimism/core-utils");
var ethers_1 = require("ethers");
var utils_1 = require("../utils");
var standard_bridge_1 = require("./standard-bridge");
var DAIBridgeAdapter = (function (_super) {
__extends(DAIBridgeAdapter, _super);
function DAIBridgeAdapter() {
return _super !== null && _super.apply(this, arguments) || this;
const ethers_1 = require("ethers");
const core_utils_1 = require("@eth-optimism/core-utils");
const utils_1 = require("../utils");
const standard_bridge_1 = require("./standard-bridge");
class DAIBridgeAdapter extends standard_bridge_1.StandardBridgeAdapter {
async supportsTokenPair(l1Token, l2Token) {
const l1Bridge = new ethers_1.Contract(this.l1Bridge.address, [
{
inputs: [],
name: 'l1Token',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'l2Token',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
], this.messenger.l1Provider);
const allowedL1Token = await l1Bridge.l1Token();
if (!(0, core_utils_1.hexStringEquals)(allowedL1Token, (0, utils_1.toAddress)(l1Token))) {
return false;
}
const allowedL2Token = await l1Bridge.l2Token();
if (!(0, core_utils_1.hexStringEquals)(allowedL2Token, (0, utils_1.toAddress)(l2Token))) {
return false;
}
return true;
}
DAIBridgeAdapter.prototype.supportsTokenPair = function (l1Token, l2Token) {
return __awaiter(this, void 0, void 0, function () {
var l1Bridge, allowedL1Token, allowedL2Token;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
l1Bridge = new ethers_1.Contract(this.l1Bridge.address, [
{
inputs: [],
name: 'l1Token',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'l2Token',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
], this.messenger.l1Provider);
return [4, l1Bridge.l1Token()];
case 1:
allowedL1Token = _a.sent();
if (!(0, core_utils_1.hexStringEquals)(allowedL1Token, (0, utils_1.toAddress)(l1Token))) {
return [2, false];
}
return [4, l1Bridge.l2Token()];
case 2:
allowedL2Token = _a.sent();
if (!(0, core_utils_1.hexStringEquals)(allowedL2Token, (0, utils_1.toAddress)(l2Token))) {
return [2, false];
}
return [2, true];
}
});
});
};
return DAIBridgeAdapter;
}(standard_bridge_1.StandardBridgeAdapter));
}
exports.DAIBridgeAdapter = DAIBridgeAdapter;
//# sourceMappingURL=dai-bridge.js.map

@@ -1,2 +0,2 @@

import type { AddressLike } from '../interfaces';
import { AddressLike } from '../interfaces';
import { StandardBridgeAdapter } from './standard-bridge';

@@ -3,0 +3,0 @@ export declare class ECOBridgeAdapter extends StandardBridgeAdapter {

"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
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());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ECOBridgeAdapter = void 0;
var core_utils_1 = require("@eth-optimism/core-utils");
var ethers_1 = require("ethers");
var utils_1 = require("../utils");
var standard_bridge_1 = require("./standard-bridge");
var ECOBridgeAdapter = (function (_super) {
__extends(ECOBridgeAdapter, _super);
function ECOBridgeAdapter() {
return _super !== null && _super.apply(this, arguments) || this;
const ethers_1 = require("ethers");
const core_utils_1 = require("@eth-optimism/core-utils");
const utils_1 = require("../utils");
const standard_bridge_1 = require("./standard-bridge");
class ECOBridgeAdapter extends standard_bridge_1.StandardBridgeAdapter {
async supportsTokenPair(l1Token, l2Token) {
const l1Bridge = new ethers_1.Contract(this.l1Bridge.address, [
{
inputs: [],
name: 'l1Eco',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
], this.messenger.l1Provider);
const l2Bridge = new ethers_1.Contract(this.l2Bridge.address, [
{
inputs: [],
name: 'l2Eco',
outputs: [
{
internalType: 'contract L2ECO',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
], this.messenger.l2Provider);
const [remoteL1Token, remoteL2Token] = await Promise.all([
l1Bridge.l1Eco(),
l2Bridge.l2Eco(),
]);
if (!(0, core_utils_1.hexStringEquals)(remoteL1Token, (0, utils_1.toAddress)(l1Token))) {
return false;
}
if (!(0, core_utils_1.hexStringEquals)(remoteL2Token, (0, utils_1.toAddress)(l2Token))) {
return false;
}
return true;
}
ECOBridgeAdapter.prototype.supportsTokenPair = function (l1Token, l2Token) {
return __awaiter(this, void 0, void 0, function () {
var l1Bridge, l2Bridge, _a, remoteL1Token, remoteL2Token;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
l1Bridge = new ethers_1.Contract(this.l1Bridge.address, [
{
inputs: [],
name: 'l1Eco',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
], this.messenger.l1Provider);
l2Bridge = new ethers_1.Contract(this.l2Bridge.address, [
{
inputs: [],
name: 'l2Eco',
outputs: [
{
internalType: 'contract L2ECO',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
], this.messenger.l2Provider);
return [4, Promise.all([
l1Bridge.l1Eco(),
l2Bridge.l2Eco(),
])];
case 1:
_a = _b.sent(), remoteL1Token = _a[0], remoteL2Token = _a[1];
if (!(0, core_utils_1.hexStringEquals)(remoteL1Token, (0, utils_1.toAddress)(l1Token))) {
return [2, false];
}
if (!(0, core_utils_1.hexStringEquals)(remoteL2Token, (0, utils_1.toAddress)(l2Token))) {
return [2, false];
}
return [2, true];
}
});
});
};
return ECOBridgeAdapter;
}(standard_bridge_1.StandardBridgeAdapter));
}
exports.ECOBridgeAdapter = ECOBridgeAdapter;
//# sourceMappingURL=eco-bridge.js.map

@@ -1,5 +0,4 @@

import type { BlockTag, TransactionRequest } from '@ethersproject/abstract-provider';
import type { BigNumber, Overrides } from 'ethers';
import { ethers } from 'ethers';
import type { AddressLike, NumberLike, TokenBridgeMessage } from '../interfaces';
import { ethers, Overrides, BigNumber } from 'ethers';
import { TransactionRequest, BlockTag } from '@ethersproject/abstract-provider';
import { NumberLike, AddressLike, TokenBridgeMessage } from '../interfaces';
import { StandardBridgeAdapter } from './standard-bridge';

@@ -6,0 +5,0 @@ export declare class ETHBridgeAdapter extends StandardBridgeAdapter {

"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
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());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ETHBridgeAdapter = void 0;
var contracts_1 = require("@eth-optimism/contracts");
var core_utils_1 = require("@eth-optimism/core-utils");
var ethers_1 = require("ethers");
var interfaces_1 = require("../interfaces");
var utils_1 = require("../utils");
var standard_bridge_1 = require("./standard-bridge");
var ETHBridgeAdapter = (function (_super) {
__extends(ETHBridgeAdapter, _super);
function ETHBridgeAdapter() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.populateTransaction = {
approve: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
throw new Error("approvals not necessary for ETH bridge");
});
}); },
deposit: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.supportsTokenPair(l1Token, l2Token)];
case 1:
if (!(_a.sent())) {
throw new Error("token pair not supported by bridge");
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return [2, this.l1Bridge.populateTransaction.depositETH((opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', __assign(__assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: amount }))];
}
else {
return [2, this.l1Bridge.populateTransaction.depositETHTo((0, utils_1.toAddress)(opts.recipient), (opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', __assign(__assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: amount }))];
}
return [2];
}
});
}); },
withdraw: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.supportsTokenPair(l1Token, l2Token)];
case 1:
if (!(_a.sent())) {
throw new Error("token pair not supported by bridge");
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return [2, this.l2Bridge.populateTransaction.withdraw((0, utils_1.toAddress)(l2Token), amount, 0, '0x', __assign(__assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: this.messenger.bedrock ? amount : 0 }))];
}
else {
return [2, this.l2Bridge.populateTransaction.withdrawTo((0, utils_1.toAddress)(l2Token), (0, utils_1.toAddress)(opts.recipient), amount, 0, '0x', __assign(__assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: this.messenger.bedrock ? amount : 0 }))];
}
return [2];
}
});
}); },
const ethers_1 = require("ethers");
const contracts_1 = require("@eth-optimism/contracts");
const core_utils_1 = require("@eth-optimism/core-utils");
const interfaces_1 = require("../interfaces");
const utils_1 = require("../utils");
const standard_bridge_1 = require("./standard-bridge");
class ETHBridgeAdapter extends standard_bridge_1.StandardBridgeAdapter {
constructor() {
super(...arguments);
this.populateTransaction = {
approve: async (l1Token, l2Token, amount, opts) => {
throw new Error(`approvals not necessary for ETH bridge`);
},
deposit: async (l1Token, l2Token, amount, opts) => {
if (!(await this.supportsTokenPair(l1Token, l2Token))) {
throw new Error(`token pair not supported by bridge`);
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return this.l1Bridge.populateTransaction.depositETH((opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', Object.assign(Object.assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: amount }));
}
else {
return this.l1Bridge.populateTransaction.depositETHTo((0, utils_1.toAddress)(opts.recipient), (opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', Object.assign(Object.assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: amount }));
}
},
withdraw: async (l1Token, l2Token, amount, opts) => {
if (!(await this.supportsTokenPair(l1Token, l2Token))) {
throw new Error(`token pair not supported by bridge`);
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return this.l2Bridge.populateTransaction.withdraw((0, utils_1.toAddress)(l2Token), amount, 0, '0x', Object.assign(Object.assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: this.messenger.bedrock ? amount : 0 }));
}
else {
return this.l2Bridge.populateTransaction.withdrawTo((0, utils_1.toAddress)(l2Token), (0, utils_1.toAddress)(opts.recipient), amount, 0, '0x', Object.assign(Object.assign({}, (0, utils_1.omit)((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}, 'value')), { value: this.messenger.bedrock ? amount : 0 }));
}
},
};
return _this;
}
ETHBridgeAdapter.prototype.approval = function (l1Token, l2Token, signer) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
throw new Error("approval not necessary for ETH bridge");
});
async approval(l1Token, l2Token, signer) {
throw new Error(`approval not necessary for ETH bridge`);
}
async getDepositsByAddress(address, opts) {
const events = await this.l1Bridge.queryFilter(this.l1Bridge.filters.ETHDepositInitiated(address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock);
return events
.map((event) => {
return {
direction: interfaces_1.MessageDirection.L1_TO_L2,
from: event.args.from,
to: event.args.to,
l1Token: ethers_1.ethers.constants.AddressZero,
l2Token: contracts_1.predeploys.OVM_ETH,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort((a, b) => {
return b.blockNumber - a.blockNumber;
});
};
ETHBridgeAdapter.prototype.getDepositsByAddress = function (address, opts) {
return __awaiter(this, void 0, void 0, function () {
var events;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.l1Bridge.queryFilter(this.l1Bridge.filters.ETHDepositInitiated(address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock)];
case 1:
events = _a.sent();
return [2, events
.map(function (event) {
return {
direction: interfaces_1.MessageDirection.L1_TO_L2,
from: event.args.from,
to: event.args.to,
l1Token: ethers_1.ethers.constants.AddressZero,
l2Token: contracts_1.predeploys.OVM_ETH,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort(function (a, b) {
return b.blockNumber - a.blockNumber;
})];
}
});
}
async getWithdrawalsByAddress(address, opts) {
const events = await this.l2Bridge.queryFilter(this.l2Bridge.filters.WithdrawalInitiated(undefined, undefined, address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock);
return events
.filter((event) => {
return ((0, core_utils_1.hexStringEquals)(event.args.l1Token, ethers_1.ethers.constants.AddressZero) &&
(0, core_utils_1.hexStringEquals)(event.args.l2Token, contracts_1.predeploys.OVM_ETH));
})
.map((event) => {
return {
direction: interfaces_1.MessageDirection.L2_TO_L1,
from: event.args.from,
to: event.args.to,
l1Token: event.args.l1Token,
l2Token: event.args.l2Token,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort((a, b) => {
return b.blockNumber - a.blockNumber;
});
};
ETHBridgeAdapter.prototype.getWithdrawalsByAddress = function (address, opts) {
return __awaiter(this, void 0, void 0, function () {
var events;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.l2Bridge.queryFilter(this.l2Bridge.filters.WithdrawalInitiated(undefined, undefined, address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock)];
case 1:
events = _a.sent();
return [2, events
.filter(function (event) {
return ((0, core_utils_1.hexStringEquals)(event.args.l1Token, ethers_1.ethers.constants.AddressZero) &&
(0, core_utils_1.hexStringEquals)(event.args.l2Token, contracts_1.predeploys.OVM_ETH));
})
.map(function (event) {
return {
direction: interfaces_1.MessageDirection.L2_TO_L1,
from: event.args.from,
to: event.args.to,
l1Token: event.args.l1Token,
l2Token: event.args.l2Token,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort(function (a, b) {
return b.blockNumber - a.blockNumber;
})];
}
});
});
};
ETHBridgeAdapter.prototype.supportsTokenPair = function (l1Token, l2Token) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, ((0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l1Token), ethers_1.ethers.constants.AddressZero) &&
(0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l2Token), contracts_1.predeploys.OVM_ETH))];
});
});
};
return ETHBridgeAdapter;
}(standard_bridge_1.StandardBridgeAdapter));
}
async supportsTokenPair(l1Token, l2Token) {
return ((0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l1Token), ethers_1.ethers.constants.AddressZero) &&
(0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l2Token), contracts_1.predeploys.OVM_ETH));
}
}
exports.ETHBridgeAdapter = ETHBridgeAdapter;
//# sourceMappingURL=eth-bridge.js.map

@@ -0,4 +1,4 @@

export * from './standard-bridge';
export * from './eth-bridge';
export * from './dai-bridge';
export * from './eco-bridge';
export * from './eth-bridge';
export * from './standard-bridge';

@@ -17,5 +17,6 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./standard-bridge"), exports);
__exportStar(require("./eth-bridge"), exports);
__exportStar(require("./dai-bridge"), exports);
__exportStar(require("./eco-bridge"), exports);
__exportStar(require("./eth-bridge"), exports);
__exportStar(require("./standard-bridge"), exports);
//# sourceMappingURL=index.js.map

@@ -1,6 +0,5 @@

import type { BlockTag, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider';
import type { BigNumber, CallOverrides, Overrides, Signer } from 'ethers';
import { Contract, ethers } from 'ethers';
import type { CrossChainMessenger } from '../cross-chain-messenger';
import type { AddressLike, IBridgeAdapter, NumberLike, TokenBridgeMessage } from '../interfaces';
import { ethers, Contract, Overrides, Signer, BigNumber, CallOverrides } from 'ethers';
import { TransactionRequest, TransactionResponse, BlockTag } from '@ethersproject/abstract-provider';
import { CrossChainMessenger } from '../cross-chain-messenger';
import { IBridgeAdapter, NumberLike, AddressLike, TokenBridgeMessage } from '../interfaces';
export declare class StandardBridgeAdapter implements IBridgeAdapter {

@@ -7,0 +6,0 @@ messenger: CrossChainMessenger;

"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());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -43,99 +7,53 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

exports.StandardBridgeAdapter = void 0;
var contracts_1 = require("@eth-optimism/contracts");
var core_utils_1 = require("@eth-optimism/core-utils");
var ethers_1 = require("ethers");
var L1StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L1StandardBridge.json"));
var L2StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L2StandardBridge.json"));
var OptimismMintableERC20_json_1 = __importDefault(require("../forge-artifacts/OptimismMintableERC20.json"));
var interfaces_1 = require("../interfaces");
var utils_1 = require("../utils");
var StandardBridgeAdapter = (function () {
function StandardBridgeAdapter(opts) {
var _this = this;
const ethers_1 = require("ethers");
const contracts_1 = require("@eth-optimism/contracts");
const core_utils_1 = require("@eth-optimism/core-utils");
const L1StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L1StandardBridge.json"));
const L2StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L2StandardBridge.json"));
const OptimismMintableERC20_json_1 = __importDefault(require("../forge-artifacts/OptimismMintableERC20.json"));
const interfaces_1 = require("../interfaces");
const utils_1 = require("../utils");
class StandardBridgeAdapter {
constructor(opts) {
this.populateTransaction = {
approve: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
var token;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.supportsTokenPair(l1Token, l2Token)];
case 1:
if (!(_a.sent())) {
throw new Error("token pair not supported by bridge");
}
token = new ethers_1.Contract((0, utils_1.toAddress)(l1Token), OptimismMintableERC20_json_1.default.abi, this.messenger.l1Provider);
return [2, token.populateTransaction.approve(this.l1Bridge.address, amount, (opts === null || opts === void 0 ? void 0 : opts.overrides) || {})];
}
});
}); },
deposit: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.supportsTokenPair(l1Token, l2Token)];
case 1:
if (!(_a.sent())) {
throw new Error("token pair not supported by bridge");
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return [2, this.l1Bridge.populateTransaction.depositERC20((0, utils_1.toAddress)(l1Token), (0, utils_1.toAddress)(l2Token), amount, (opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {})];
}
else {
return [2, this.l1Bridge.populateTransaction.depositERC20To((0, utils_1.toAddress)(l1Token), (0, utils_1.toAddress)(l2Token), (0, utils_1.toAddress)(opts.recipient), amount, (opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {})];
}
return [2];
}
});
}); },
withdraw: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.supportsTokenPair(l1Token, l2Token)];
case 1:
if (!(_a.sent())) {
throw new Error("token pair not supported by bridge");
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return [2, this.l2Bridge.populateTransaction.withdraw((0, utils_1.toAddress)(l2Token), amount, 0, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {})];
}
else {
return [2, this.l2Bridge.populateTransaction.withdrawTo((0, utils_1.toAddress)(l2Token), (0, utils_1.toAddress)(opts.recipient), amount, 0, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {})];
}
return [2];
}
});
}); },
approve: async (l1Token, l2Token, amount, opts) => {
if (!(await this.supportsTokenPair(l1Token, l2Token))) {
throw new Error(`token pair not supported by bridge`);
}
const token = new ethers_1.Contract((0, utils_1.toAddress)(l1Token), OptimismMintableERC20_json_1.default.abi, this.messenger.l1Provider);
return token.populateTransaction.approve(this.l1Bridge.address, amount, (opts === null || opts === void 0 ? void 0 : opts.overrides) || {});
},
deposit: async (l1Token, l2Token, amount, opts) => {
if (!(await this.supportsTokenPair(l1Token, l2Token))) {
throw new Error(`token pair not supported by bridge`);
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return this.l1Bridge.populateTransaction.depositERC20((0, utils_1.toAddress)(l1Token), (0, utils_1.toAddress)(l2Token), amount, (opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {});
}
else {
return this.l1Bridge.populateTransaction.depositERC20To((0, utils_1.toAddress)(l1Token), (0, utils_1.toAddress)(l2Token), (0, utils_1.toAddress)(opts.recipient), amount, (opts === null || opts === void 0 ? void 0 : opts.l2GasLimit) || 200000, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {});
}
},
withdraw: async (l1Token, l2Token, amount, opts) => {
if (!(await this.supportsTokenPair(l1Token, l2Token))) {
throw new Error(`token pair not supported by bridge`);
}
if ((opts === null || opts === void 0 ? void 0 : opts.recipient) === undefined) {
return this.l2Bridge.populateTransaction.withdraw((0, utils_1.toAddress)(l2Token), amount, 0, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {});
}
else {
return this.l2Bridge.populateTransaction.withdrawTo((0, utils_1.toAddress)(l2Token), (0, utils_1.toAddress)(opts.recipient), amount, 0, '0x', (opts === null || opts === void 0 ? void 0 : opts.overrides) || {});
}
},
};
this.estimateGas = {
approve: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
var _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = (_a = this.messenger.l1Provider).estimateGas;
return [4, this.populateTransaction.approve(l1Token, l2Token, amount, opts)];
case 1: return [2, _b.apply(_a, [_c.sent()])];
}
});
}); },
deposit: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
var _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = (_a = this.messenger.l1Provider).estimateGas;
return [4, this.populateTransaction.deposit(l1Token, l2Token, amount, opts)];
case 1: return [2, _b.apply(_a, [_c.sent()])];
}
});
}); },
withdraw: function (l1Token, l2Token, amount, opts) { return __awaiter(_this, void 0, void 0, function () {
var _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = (_a = this.messenger.l2Provider).estimateGas;
return [4, this.populateTransaction.withdraw(l1Token, l2Token, amount, opts)];
case 1: return [2, _b.apply(_a, [_c.sent()])];
}
});
}); },
approve: async (l1Token, l2Token, amount, opts) => {
return this.messenger.l1Provider.estimateGas(await this.populateTransaction.approve(l1Token, l2Token, amount, opts));
},
deposit: async (l1Token, l2Token, amount, opts) => {
return this.messenger.l1Provider.estimateGas(await this.populateTransaction.deposit(l1Token, l2Token, amount, opts));
},
withdraw: async (l1Token, l2Token, amount, opts) => {
return this.messenger.l2Provider.estimateGas(await this.populateTransaction.withdraw(l1Token, l2Token, amount, opts));
},
};

@@ -146,157 +64,86 @@ this.messenger = opts.messenger;

}
StandardBridgeAdapter.prototype.getDepositsByAddress = function (address, opts) {
return __awaiter(this, void 0, void 0, function () {
var events;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.l1Bridge.queryFilter(this.l1Bridge.filters.ERC20DepositInitiated(undefined, undefined, address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock)];
case 1:
events = _a.sent();
return [2, events
.filter(function (event) {
return (!(0, core_utils_1.hexStringEquals)(event.args.l1Token, ethers_1.ethers.constants.AddressZero) &&
!(0, core_utils_1.hexStringEquals)(event.args.l2Token, contracts_1.predeploys.OVM_ETH));
})
.map(function (event) {
return {
direction: interfaces_1.MessageDirection.L1_TO_L2,
from: event.args.from,
to: event.args.to,
l1Token: event.args.l1Token,
l2Token: event.args.l2Token,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort(function (a, b) {
return b.blockNumber - a.blockNumber;
})];
}
});
async getDepositsByAddress(address, opts) {
const events = await this.l1Bridge.queryFilter(this.l1Bridge.filters.ERC20DepositInitiated(undefined, undefined, address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock);
return events
.filter((event) => {
return (!(0, core_utils_1.hexStringEquals)(event.args.l1Token, ethers_1.ethers.constants.AddressZero) &&
!(0, core_utils_1.hexStringEquals)(event.args.l2Token, contracts_1.predeploys.OVM_ETH));
})
.map((event) => {
return {
direction: interfaces_1.MessageDirection.L1_TO_L2,
from: event.args.from,
to: event.args.to,
l1Token: event.args.l1Token,
l2Token: event.args.l2Token,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort((a, b) => {
return b.blockNumber - a.blockNumber;
});
};
StandardBridgeAdapter.prototype.getWithdrawalsByAddress = function (address, opts) {
return __awaiter(this, void 0, void 0, function () {
var events;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.l2Bridge.queryFilter(this.l2Bridge.filters.WithdrawalInitiated(undefined, undefined, address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock)];
case 1:
events = _a.sent();
return [2, events
.filter(function (event) {
return (!(0, core_utils_1.hexStringEquals)(event.args.l1Token, ethers_1.ethers.constants.AddressZero) &&
!(0, core_utils_1.hexStringEquals)(event.args.l2Token, contracts_1.predeploys.OVM_ETH));
})
.map(function (event) {
return {
direction: interfaces_1.MessageDirection.L2_TO_L1,
from: event.args.from,
to: event.args.to,
l1Token: event.args.l1Token,
l2Token: event.args.l2Token,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort(function (a, b) {
return b.blockNumber - a.blockNumber;
})];
}
});
}
async getWithdrawalsByAddress(address, opts) {
const events = await this.l2Bridge.queryFilter(this.l2Bridge.filters.WithdrawalInitiated(undefined, undefined, address), opts === null || opts === void 0 ? void 0 : opts.fromBlock, opts === null || opts === void 0 ? void 0 : opts.toBlock);
return events
.filter((event) => {
return (!(0, core_utils_1.hexStringEquals)(event.args.l1Token, ethers_1.ethers.constants.AddressZero) &&
!(0, core_utils_1.hexStringEquals)(event.args.l2Token, contracts_1.predeploys.OVM_ETH));
})
.map((event) => {
return {
direction: interfaces_1.MessageDirection.L2_TO_L1,
from: event.args.from,
to: event.args.to,
l1Token: event.args.l1Token,
l2Token: event.args.l2Token,
amount: event.args.amount,
data: event.args.extraData,
logIndex: event.logIndex,
blockNumber: event.blockNumber,
transactionHash: event.transactionHash,
};
})
.sort((a, b) => {
return b.blockNumber - a.blockNumber;
});
};
StandardBridgeAdapter.prototype.supportsTokenPair = function (l1Token, l2Token) {
return __awaiter(this, void 0, void 0, function () {
var contract, remoteL1Token, remoteL2Bridge;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
contract = new ethers_1.Contract((0, utils_1.toAddress)(l2Token), OptimismMintableERC20_json_1.default.abi, this.messenger.l2Provider);
if ((0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l1Token), ethers_1.ethers.constants.AddressZero) ||
(0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l2Token), contracts_1.predeploys.OVM_ETH)) {
return [2, false];
}
return [4, contract.l1Token()];
case 1:
remoteL1Token = _a.sent();
if (!(0, core_utils_1.hexStringEquals)(remoteL1Token, (0, utils_1.toAddress)(l1Token))) {
return [2, false];
}
return [4, contract.l2Bridge()];
case 2:
remoteL2Bridge = _a.sent();
if (!(0, core_utils_1.hexStringEquals)(remoteL2Bridge, this.l2Bridge.address)) {
return [2, false];
}
return [2, true];
}
});
});
};
StandardBridgeAdapter.prototype.approval = function (l1Token, l2Token, signer) {
return __awaiter(this, void 0, void 0, function () {
var token, _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0: return [4, this.supportsTokenPair(l1Token, l2Token)];
case 1:
if (!(_c.sent())) {
throw new Error("token pair not supported by bridge");
}
token = new ethers_1.Contract((0, utils_1.toAddress)(l1Token), OptimismMintableERC20_json_1.default.abi, this.messenger.l1Provider);
_b = (_a = token).allowance;
return [4, signer.getAddress()];
case 2: return [2, _b.apply(_a, [_c.sent(), this.l1Bridge.address])];
}
});
});
};
StandardBridgeAdapter.prototype.approve = function (l1Token, l2Token, amount, signer, opts) {
return __awaiter(this, void 0, void 0, function () {
var _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = (_a = signer).sendTransaction;
return [4, this.populateTransaction.approve(l1Token, l2Token, amount, opts)];
case 1: return [2, _b.apply(_a, [_c.sent()])];
}
});
});
};
StandardBridgeAdapter.prototype.deposit = function (l1Token, l2Token, amount, signer, opts) {
return __awaiter(this, void 0, void 0, function () {
var _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = (_a = signer).sendTransaction;
return [4, this.populateTransaction.deposit(l1Token, l2Token, amount, opts)];
case 1: return [2, _b.apply(_a, [_c.sent()])];
}
});
});
};
StandardBridgeAdapter.prototype.withdraw = function (l1Token, l2Token, amount, signer, opts) {
return __awaiter(this, void 0, void 0, function () {
var _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = (_a = signer).sendTransaction;
return [4, this.populateTransaction.withdraw(l1Token, l2Token, amount, opts)];
case 1: return [2, _b.apply(_a, [_c.sent()])];
}
});
});
};
return StandardBridgeAdapter;
}());
}
async supportsTokenPair(l1Token, l2Token) {
const contract = new ethers_1.Contract((0, utils_1.toAddress)(l2Token), OptimismMintableERC20_json_1.default.abi, this.messenger.l2Provider);
if ((0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l1Token), ethers_1.ethers.constants.AddressZero) ||
(0, core_utils_1.hexStringEquals)((0, utils_1.toAddress)(l2Token), contracts_1.predeploys.OVM_ETH)) {
return false;
}
const remoteL1Token = await contract.l1Token();
if (!(0, core_utils_1.hexStringEquals)(remoteL1Token, (0, utils_1.toAddress)(l1Token))) {
return false;
}
const remoteL2Bridge = await contract.l2Bridge();
if (!(0, core_utils_1.hexStringEquals)(remoteL2Bridge, this.l2Bridge.address)) {
return false;
}
return true;
}
async approval(l1Token, l2Token, signer) {
if (!(await this.supportsTokenPair(l1Token, l2Token))) {
throw new Error(`token pair not supported by bridge`);
}
const token = new ethers_1.Contract((0, utils_1.toAddress)(l1Token), OptimismMintableERC20_json_1.default.abi, this.messenger.l1Provider);
return token.allowance(await signer.getAddress(), this.l1Bridge.address);
}
async approve(l1Token, l2Token, amount, signer, opts) {
return signer.sendTransaction(await this.populateTransaction.approve(l1Token, l2Token, amount, opts));
}
async deposit(l1Token, l2Token, amount, signer, opts) {
return signer.sendTransaction(await this.populateTransaction.deposit(l1Token, l2Token, amount, opts));
}
async withdraw(l1Token, l2Token, amount, signer, opts) {
return signer.sendTransaction(await this.populateTransaction.withdraw(l1Token, l2Token, amount, opts));
}
}
exports.StandardBridgeAdapter = StandardBridgeAdapter;
//# sourceMappingURL=standard-bridge.js.map

@@ -1,10 +0,7 @@

import type { BedrockCrossChainMessageProof, BedrockOutputData } from '@eth-optimism/core-utils';
import type { BlockTag, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider';
import { Provider } from '@ethersproject/abstract-provider';
import type { Signer } from '@ethersproject/abstract-signer';
import type { CallOverrides, Overrides, PayableOverrides } from 'ethers';
import { BigNumber, ethers } from 'ethers';
import type { AddressLike, BridgeAdapterData, BridgeAdapters, CrossChainMessage, CrossChainMessageProof, CrossChainMessageRequest, IBridgeAdapter, LowLevelMessage, MessageLike, MessageReceipt, MessageRequestLike, NumberLike, OEContracts, OEContractsLike, ProvenWithdrawal, SignerOrProviderLike, StateRoot, StateRootBatch, TokenBridgeMessage, TransactionLike } from './interfaces';
import { MessageDirection, MessageStatus } from './interfaces';
import type { DeepPartial } from './utils';
import { Provider, BlockTag, TransactionResponse, TransactionRequest } from '@ethersproject/abstract-provider';
import { Signer } from '@ethersproject/abstract-signer';
import { ethers, BigNumber, Overrides, CallOverrides, PayableOverrides } from 'ethers';
import { BedrockOutputData, BedrockCrossChainMessageProof } from '@eth-optimism/core-utils';
import { OEContracts, OEContractsLike, MessageLike, MessageRequestLike, TransactionLike, AddressLike, NumberLike, SignerOrProviderLike, CrossChainMessage, CrossChainMessageRequest, CrossChainMessageProof, MessageDirection, MessageStatus, TokenBridgeMessage, MessageReceipt, BridgeAdapterData, BridgeAdapters, StateRoot, StateRootBatch, IBridgeAdapter, ProvenWithdrawal, LowLevelMessage } from './interfaces';
import { DeepPartial } from './utils';
export declare class CrossChainMessenger {

@@ -11,0 +8,0 @@ l1SignerOrProvider: Signer | Provider;

@@ -0,5 +1,5 @@

export * from './interfaces';
export * from './utils';
export * from './cross-chain-messenger';
export * from './adapters';
export * from './cross-chain-messenger';
export * from './interfaces';
export * from './l2-provider';
export * from './utils';

@@ -17,6 +17,7 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./interfaces"), exports);
__exportStar(require("./utils"), exports);
__exportStar(require("./cross-chain-messenger"), exports);
__exportStar(require("./adapters"), exports);
__exportStar(require("./cross-chain-messenger"), exports);
__exportStar(require("./interfaces"), exports);
__exportStar(require("./l2-provider"), exports);
__exportStar(require("./utils"), exports);
//# sourceMappingURL=index.js.map

@@ -1,5 +0,5 @@

import type { BlockTag, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider';
import type { BigNumber, CallOverrides, Contract, Overrides, PayableOverrides, Signer } from 'ethers';
import type { CrossChainMessenger } from '../cross-chain-messenger';
import type { AddressLike, NumberLike, TokenBridgeMessage } from './types';
import { Contract, Overrides, Signer, BigNumber, CallOverrides, PayableOverrides } from 'ethers';
import { TransactionRequest, TransactionResponse, BlockTag } from '@ethersproject/abstract-provider';
import { NumberLike, AddressLike, TokenBridgeMessage } from './types';
import { CrossChainMessenger } from '../cross-chain-messenger';
export interface IBridgeAdapter {

@@ -6,0 +6,0 @@ messenger: CrossChainMessenger;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=bridge-adapter.js.map

@@ -20,1 +20,2 @@ "use strict";

__exportStar(require("./types"), exports);
//# sourceMappingURL=index.js.map

@@ -1,3 +0,3 @@

import type { Block, BlockWithTransactions, Provider, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider';
import type { BigNumber } from 'ethers';
import { Provider, TransactionRequest, TransactionResponse, Block, BlockWithTransactions } from '@ethersproject/abstract-provider';
import { BigNumber } from 'ethers';
export interface L2Transaction extends TransactionResponse {

@@ -4,0 +4,0 @@ l1BlockNumber: number;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=l2-provider.js.map

@@ -1,6 +0,6 @@

import type { Provider, TransactionReceipt, TransactionResponse } from '@ethersproject/abstract-provider';
import type { Signer } from '@ethersproject/abstract-signer';
import type { BigNumber, Contract } from 'ethers';
import type { CrossChainMessenger } from '../cross-chain-messenger';
import type { IBridgeAdapter } from './bridge-adapter';
import { Provider, TransactionReceipt, TransactionResponse } from '@ethersproject/abstract-provider';
import { Signer } from '@ethersproject/abstract-signer';
import { Contract, BigNumber } from 'ethers';
import { CrossChainMessenger } from '../cross-chain-messenger';
import { IBridgeAdapter } from './bridge-adapter';
export declare enum L1ChainID {

@@ -7,0 +7,0 @@ MAINNET = 1,

@@ -48,1 +48,2 @@ "use strict";

})(MessageReceiptStatus || (exports.MessageReceiptStatus = MessageReceiptStatus = {}));
//# sourceMappingURL=types.js.map

@@ -1,4 +0,4 @@

import type { Provider, TransactionRequest } from '@ethersproject/abstract-provider';
import { Provider, TransactionRequest } from '@ethersproject/abstract-provider';
import { BigNumber } from 'ethers';
import type { L2Provider, ProviderLike } from './interfaces';
import { L2Provider, ProviderLike } from './interfaces';
export declare const getL1GasPrice: (l2Provider: ProviderLike) => Promise<BigNumber>;

@@ -5,0 +5,0 @@ export declare const estimateL1Gas: (l2Provider: ProviderLike, tx: TransactionRequest) => Promise<BigNumber>;

"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());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -43,156 +7,101 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

exports.asL2Provider = exports.isL2Provider = exports.estimateTotalGasCost = exports.estimateL2GasCost = exports.estimateL1GasCost = exports.estimateL1Gas = exports.getL1GasPrice = void 0;
var contracts_1 = require("@eth-optimism/contracts");
var transactions_1 = require("@ethersproject/transactions");
var ethers_1 = require("ethers");
var cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
var utils_1 = require("./utils");
var assert_1 = require("./utils/assert");
var getNonceForTx = function (provider, tx) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
if (tx.nonce !== undefined) {
return [2, (0, utils_1.toNumber)(tx.nonce)];
}
else if (tx.from !== undefined) {
return [2, (0, utils_1.toProvider)(provider).getTransactionCount(tx.from)];
}
else {
return [2, 0xffffffff];
}
return [2];
});
}); };
var connectGasPriceOracle = function (provider) {
const transactions_1 = require("@ethersproject/transactions");
const ethers_1 = require("ethers");
const contracts_1 = require("@eth-optimism/contracts");
const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
const assert_1 = require("./utils/assert");
const utils_1 = require("./utils");
const getNonceForTx = async (provider, tx) => {
if (tx.nonce !== undefined) {
return (0, utils_1.toNumber)(tx.nonce);
}
else if (tx.from !== undefined) {
return (0, utils_1.toProvider)(provider).getTransactionCount(tx.from);
}
else {
return 0xffffffff;
}
};
const connectGasPriceOracle = (provider) => {
return new ethers_1.Contract(contracts_1.predeploys.OVM_GasPriceOracle, (0, contracts_1.getContractInterface)('OVM_GasPriceOracle'), (0, utils_1.toProvider)(provider));
};
var getL1GasPrice = function (l2Provider) { return __awaiter(void 0, void 0, void 0, function () {
var gpo;
return __generator(this, function (_a) {
gpo = connectGasPriceOracle(l2Provider);
return [2, gpo.l1BaseFee()];
});
}); };
const getL1GasPrice = async (l2Provider) => {
const gpo = connectGasPriceOracle(l2Provider);
return gpo.l1BaseFee();
};
exports.getL1GasPrice = getL1GasPrice;
var estimateL1Gas = function (l2Provider, tx) { return __awaiter(void 0, void 0, void 0, function () {
var gpo, _a, _b, _c, _d;
var _e;
return __generator(this, function (_f) {
switch (_f.label) {
case 0:
gpo = connectGasPriceOracle(l2Provider);
_b = (_a = gpo).getL1GasUsed;
_c = transactions_1.serialize;
_e = {
to: tx.to,
gasLimit: tx.gasLimit,
gasPrice: tx.gasPrice,
maxFeePerGas: tx.maxFeePerGas,
maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
data: tx.data,
value: tx.value,
chainId: tx.chainId,
type: tx.type,
accessList: tx.accessList
};
if (!tx.nonce) return [3, 1];
_d = ethers_1.BigNumber.from(tx.nonce).toNumber();
return [3, 3];
case 1: return [4, getNonceForTx(l2Provider, tx)];
case 2:
_d = _f.sent();
_f.label = 3;
case 3: return [2, _b.apply(_a, [_c.apply(void 0, [(_e.nonce = _d,
_e)])])];
}
});
}); };
const estimateL1Gas = async (l2Provider, tx) => {
const gpo = connectGasPriceOracle(l2Provider);
return gpo.getL1GasUsed((0, transactions_1.serialize)({
to: tx.to,
gasLimit: tx.gasLimit,
gasPrice: tx.gasPrice,
maxFeePerGas: tx.maxFeePerGas,
maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
data: tx.data,
value: tx.value,
chainId: tx.chainId,
type: tx.type,
accessList: tx.accessList,
nonce: tx.nonce
? ethers_1.BigNumber.from(tx.nonce).toNumber()
: await getNonceForTx(l2Provider, tx),
}));
};
exports.estimateL1Gas = estimateL1Gas;
var estimateL1GasCost = function (l2Provider, tx) { return __awaiter(void 0, void 0, void 0, function () {
var gpo, _a, _b, _c, _d;
var _e;
return __generator(this, function (_f) {
switch (_f.label) {
case 0:
gpo = connectGasPriceOracle(l2Provider);
_b = (_a = gpo).getL1Fee;
_c = transactions_1.serialize;
_e = {
to: tx.to,
gasLimit: tx.gasLimit,
gasPrice: tx.gasPrice,
maxFeePerGas: tx.maxFeePerGas,
maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
data: tx.data,
value: tx.value,
chainId: tx.chainId,
type: tx.type,
accessList: tx.accessList
};
if (!tx.nonce) return [3, 1];
_d = ethers_1.BigNumber.from(tx.nonce).toNumber();
return [3, 3];
case 1: return [4, getNonceForTx(l2Provider, tx)];
case 2:
_d = _f.sent();
_f.label = 3;
case 3: return [2, _b.apply(_a, [_c.apply(void 0, [(_e.nonce = _d,
_e)])])];
}
});
}); };
const estimateL1GasCost = async (l2Provider, tx) => {
const gpo = connectGasPriceOracle(l2Provider);
return gpo.getL1Fee((0, transactions_1.serialize)({
to: tx.to,
gasLimit: tx.gasLimit,
gasPrice: tx.gasPrice,
maxFeePerGas: tx.maxFeePerGas,
maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
data: tx.data,
value: tx.value,
chainId: tx.chainId,
type: tx.type,
accessList: tx.accessList,
nonce: tx.nonce
? ethers_1.BigNumber.from(tx.nonce).toNumber()
: await getNonceForTx(l2Provider, tx),
}));
};
exports.estimateL1GasCost = estimateL1GasCost;
var estimateL2GasCost = function (l2Provider, tx) { return __awaiter(void 0, void 0, void 0, function () {
var parsed, l2GasPrice, l2GasCost;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
parsed = (0, utils_1.toProvider)(l2Provider);
return [4, parsed.getGasPrice()];
case 1:
l2GasPrice = _a.sent();
return [4, parsed.estimateGas(tx)];
case 2:
l2GasCost = _a.sent();
return [2, l2GasPrice.mul(l2GasCost)];
}
});
}); };
const estimateL2GasCost = async (l2Provider, tx) => {
const parsed = (0, utils_1.toProvider)(l2Provider);
const l2GasPrice = await parsed.getGasPrice();
const l2GasCost = await parsed.estimateGas(tx);
return l2GasPrice.mul(l2GasCost);
};
exports.estimateL2GasCost = estimateL2GasCost;
var estimateTotalGasCost = function (l2Provider, tx) { return __awaiter(void 0, void 0, void 0, function () {
var l1GasCost, l2GasCost;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, (0, exports.estimateL1GasCost)(l2Provider, tx)];
case 1:
l1GasCost = _a.sent();
return [4, (0, exports.estimateL2GasCost)(l2Provider, tx)];
case 2:
l2GasCost = _a.sent();
return [2, l1GasCost.add(l2GasCost)];
}
});
}); };
const estimateTotalGasCost = async (l2Provider, tx) => {
const l1GasCost = await (0, exports.estimateL1GasCost)(l2Provider, tx);
const l2GasCost = await (0, exports.estimateL2GasCost)(l2Provider, tx);
return l1GasCost.add(l2GasCost);
};
exports.estimateTotalGasCost = estimateTotalGasCost;
var isL2Provider = function (provider) {
const isL2Provider = (provider) => {
return Boolean(provider._isL2Provider);
};
exports.isL2Provider = isL2Provider;
var asL2Provider = function (provider) {
const asL2Provider = (provider) => {
if ((0, exports.isL2Provider)(provider)) {
return provider;
}
var l2Provider = (0, cloneDeep_1.default)(provider);
var formatter = l2Provider.formatter;
(0, assert_1.assert)(formatter, "provider.formatter must be defined");
var ogBlockFormatter = formatter.block.bind(formatter);
formatter.block = function (block) {
var parsed = ogBlockFormatter(block);
const l2Provider = (0, cloneDeep_1.default)(provider);
const formatter = l2Provider.formatter;
(0, assert_1.assert)(formatter, `provider.formatter must be defined`);
const ogBlockFormatter = formatter.block.bind(formatter);
formatter.block = (block) => {
const parsed = ogBlockFormatter(block);
parsed.stateRoot = block.stateRoot;
return parsed;
};
var ogBlockWithTxFormatter = formatter.blockWithTransactions.bind(formatter);
formatter.blockWithTransactions = function (block) {
var parsed = ogBlockWithTxFormatter(block);
const ogBlockWithTxFormatter = formatter.blockWithTransactions.bind(formatter);
formatter.blockWithTransactions = (block) => {
const parsed = ogBlockWithTxFormatter(block);
parsed.stateRoot = block.stateRoot;
parsed.transactions = parsed.transactions.map(function (tx, idx) {
var ogTx = block.transactions[idx];
parsed.transactions = parsed.transactions.map((tx, idx) => {
const ogTx = block.transactions[idx];
tx.l1BlockNumber = ogTx.l1BlockNumber

@@ -211,5 +120,5 @@ ? (0, utils_1.toNumber)(ogTx.l1BlockNumber)

};
var ogTxResponseFormatter = formatter.transactionResponse.bind(formatter);
formatter.transactionResponse = function (tx) {
var parsed = ogTxResponseFormatter(tx);
const ogTxResponseFormatter = formatter.transactionResponse.bind(formatter);
formatter.transactionResponse = (tx) => {
const parsed = ogTxResponseFormatter(tx);
parsed.txType = tx.txType;

@@ -224,5 +133,5 @@ parsed.queueOrigin = tx.queueOrigin;

};
var ogReceiptFormatter = formatter.receipt.bind(formatter);
formatter.receipt = function (receipt) {
var parsed = ogReceiptFormatter(receipt);
const ogReceiptFormatter = formatter.receipt.bind(formatter);
formatter.receipt = (receipt) => {
const parsed = ogReceiptFormatter(receipt);
parsed.l1GasPrice = (0, utils_1.toBigNumber)(receipt.l1GasPrice);

@@ -234,27 +143,17 @@ parsed.l1GasUsed = (0, utils_1.toBigNumber)(receipt.l1GasUsed);

};
l2Provider.getL1GasPrice = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, (0, exports.getL1GasPrice)(l2Provider)];
});
}); };
l2Provider.estimateL1Gas = function (tx) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, (0, exports.estimateL1Gas)(l2Provider, tx)];
});
}); };
l2Provider.estimateL1GasCost = function (tx) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, (0, exports.estimateL1GasCost)(l2Provider, tx)];
});
}); };
l2Provider.estimateL2GasCost = function (tx) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, (0, exports.estimateL2GasCost)(l2Provider, tx)];
});
}); };
l2Provider.estimateTotalGasCost = function (tx) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, (0, exports.estimateTotalGasCost)(l2Provider, tx)];
});
}); };
l2Provider.getL1GasPrice = async () => {
return (0, exports.getL1GasPrice)(l2Provider);
};
l2Provider.estimateL1Gas = async (tx) => {
return (0, exports.estimateL1Gas)(l2Provider, tx);
};
l2Provider.estimateL1GasCost = async (tx) => {
return (0, exports.estimateL1GasCost)(l2Provider, tx);
};
l2Provider.estimateL2GasCost = async (tx) => {
return (0, exports.estimateL2GasCost)(l2Provider, tx);
};
l2Provider.estimateTotalGasCost = async (tx) => {
return (0, exports.estimateTotalGasCost)(l2Provider, tx);
};
l2Provider._isL2Provider = true;

@@ -264,1 +163,2 @@ return l2Provider;

exports.asL2Provider = asL2Provider;
//# sourceMappingURL=l2-provider.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.assert = void 0;
var assert = function (condition, message) {
const assert = (condition, message) => {
if (!condition) {

@@ -10,1 +10,2 @@ throw new Error(message);

exports.assert = assert;
//# sourceMappingURL=assert.js.map

@@ -1,3 +0,2 @@

import type { BridgeAdapterData, OEContractsLike, OEL2ContractsLike } from '../interfaces';
import { L1ChainID, L2ChainID } from '../interfaces';
import { L1ChainID, L2ChainID, OEContractsLike, OEL2ContractsLike, BridgeAdapterData } from '../interfaces';
export declare const DEPOSIT_CONFIRMATION_BLOCKS: {

@@ -4,0 +3,0 @@ [ChainID in L2ChainID]: number;

"use strict";
var _a, _b, _c, _d;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BRIDGE_ADAPTER_DATA = exports.CONTRACT_ADDRESSES = exports.IGNORABLE_CONTRACTS = exports.DEFAULT_L2_CONTRACT_ADDRESSES = exports.CHAIN_BLOCK_TIMES = exports.DEPOSIT_CONFIRMATION_BLOCKS = void 0;
var core_utils_1 = require("@eth-optimism/core-utils");
var ethers_1 = require("ethers");
var adapters_1 = require("../adapters");
var interfaces_1 = require("../interfaces");
var portalAddresses = {
const core_utils_1 = require("@eth-optimism/core-utils");
const ethers_1 = require("ethers");
const portalAddresses = {
mainnet: '0xbEb5Fc579115071764c7423A4f12eDde41f106Ed',

@@ -14,3 +11,3 @@ goerli: '0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383',

};
var l2OutputOracleAddresses = {
const l2OutputOracleAddresses = {
mainnet: '0xdfe97868233d1aa22e815a266982f2cf17685a27',

@@ -20,3 +17,3 @@ goerli: '0xE6Dfba0953616Bacab0c9A8ecb3a9BBa77FC15c0',

};
var addressManagerAddresses = {
const addressManagerAddresses = {
mainnet: '0xdE1FCfB0851916CA5101820A69b13a4E276bd81F',

@@ -26,3 +23,3 @@ goerli: '0xa6f73589243a6A7a9023b1Fa0651b1d89c177111',

};
var l1StandardBridgeAddresses = {
const l1StandardBridgeAddresses = {
mainnet: '0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1',

@@ -32,3 +29,3 @@ goerli: '0x636Af16bf2f682dD3109e60102b8E1A089FedAa8',

};
var l1CrossDomainMessengerAddresses = {
const l1CrossDomainMessengerAddresses = {
mainnet: '0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1',

@@ -38,3 +35,3 @@ goerli: '0x5086d1eEF304eb5284A0f6720f79403b4e9bE294',

};
var disputeGameFactoryAddresses = {
const disputeGameFactoryAddresses = {
mainnet: '0xe5965Ab5962eDc7477C8520243A95517CD252fA9',

@@ -44,3 +41,3 @@ goerli: ethers_1.ethers.constants.AddressZero,

};
var stateCommitmentChainAddresses = {
const stateCommitmentChainAddresses = {
mainnet: '0xBe5dAb4A2e9cd0F27300dB4aB94BeE3A233AEB19',

@@ -50,3 +47,3 @@ goerli: '0x9c945aC97Baf48cB784AbBB61399beB71aF7A378',

};
var canonicalTransactionChainAddresses = {
const canonicalTransactionChainAddresses = {
mainnet: '0x5E4e65926BA27467555EB562121fac00D24E9dD2',

@@ -56,24 +53,26 @@ goerli: '0x607F755149cFEB3a14E1Dc3A4E2450Cde7dfb04D',

};
exports.DEPOSIT_CONFIRMATION_BLOCKS = (_a = {},
_a[interfaces_1.L2ChainID.OPTIMISM] = 50,
_a[interfaces_1.L2ChainID.OPTIMISM_GOERLI] = 12,
_a[interfaces_1.L2ChainID.OPTIMISM_SEPOLIA] = 12,
_a[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_LOCAL] = 2,
_a[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_DEVNET] = 2,
_a[interfaces_1.L2ChainID.OPTIMISM_BEDROCK_ALPHA_TESTNET] = 12,
_a[interfaces_1.L2ChainID.BASE_GOERLI] = 25,
_a[interfaces_1.L2ChainID.BASE_SEPOLIA] = 25,
_a[interfaces_1.L2ChainID.BASE_MAINNET] = 10,
_a[interfaces_1.L2ChainID.ZORA_GOERLI] = 12,
_a[interfaces_1.L2ChainID.ZORA_MAINNET] = 50,
_a[interfaces_1.L2ChainID.MODE_SEPOLIA] = 25,
_a[interfaces_1.L2ChainID.MODE_MAINNET] = 50,
_a);
exports.CHAIN_BLOCK_TIMES = (_b = {},
_b[interfaces_1.L1ChainID.MAINNET] = 13,
_b[interfaces_1.L1ChainID.GOERLI] = 15,
_b[interfaces_1.L1ChainID.SEPOLIA] = 15,
_b[interfaces_1.L1ChainID.HARDHAT_LOCAL] = 1,
_b[interfaces_1.L1ChainID.BEDROCK_LOCAL_DEVNET] = 15,
_b);
const interfaces_1 = require("../interfaces");
const adapters_1 = require("../adapters");
exports.DEPOSIT_CONFIRMATION_BLOCKS = {
[interfaces_1.L2ChainID.OPTIMISM]: 50,
[interfaces_1.L2ChainID.OPTIMISM_GOERLI]: 12,
[interfaces_1.L2ChainID.OPTIMISM_SEPOLIA]: 12,
[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_LOCAL]: 2,
[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_DEVNET]: 2,
[interfaces_1.L2ChainID.OPTIMISM_BEDROCK_ALPHA_TESTNET]: 12,
[interfaces_1.L2ChainID.BASE_GOERLI]: 25,
[interfaces_1.L2ChainID.BASE_SEPOLIA]: 25,
[interfaces_1.L2ChainID.BASE_MAINNET]: 10,
[interfaces_1.L2ChainID.ZORA_GOERLI]: 12,
[interfaces_1.L2ChainID.ZORA_MAINNET]: 50,
[interfaces_1.L2ChainID.MODE_SEPOLIA]: 25,
[interfaces_1.L2ChainID.MODE_MAINNET]: 50,
};
exports.CHAIN_BLOCK_TIMES = {
[interfaces_1.L1ChainID.MAINNET]: 13,
[interfaces_1.L1ChainID.GOERLI]: 15,
[interfaces_1.L1ChainID.SEPOLIA]: 15,
[interfaces_1.L1ChainID.HARDHAT_LOCAL]: 1,
[interfaces_1.L1ChainID.BEDROCK_LOCAL_DEVNET]: 15,
};
exports.DEFAULT_L2_CONTRACT_ADDRESSES = {

@@ -92,3 +91,3 @@ L2CrossDomainMessenger: core_utils_1.predeploys.L2CrossDomainMessenger,

};
var getL1ContractsByNetworkName = function (network) {
const getL1ContractsByNetworkName = (network) => {
return {

@@ -108,16 +107,16 @@ AddressManager: addressManagerAddresses[network],

exports.IGNORABLE_CONTRACTS = ['OptimismPortal2', 'DisputeGameFactory'];
exports.CONTRACT_ADDRESSES = (_c = {},
_c[interfaces_1.L2ChainID.OPTIMISM] = {
exports.CONTRACT_ADDRESSES = {
[interfaces_1.L2ChainID.OPTIMISM]: {
l1: getL1ContractsByNetworkName('mainnet'),
l2: exports.DEFAULT_L2_CONTRACT_ADDRESSES,
},
_c[interfaces_1.L2ChainID.OPTIMISM_GOERLI] = {
[interfaces_1.L2ChainID.OPTIMISM_GOERLI]: {
l1: getL1ContractsByNetworkName('goerli'),
l2: exports.DEFAULT_L2_CONTRACT_ADDRESSES,
},
_c[interfaces_1.L2ChainID.OPTIMISM_SEPOLIA] = {
[interfaces_1.L2ChainID.OPTIMISM_SEPOLIA]: {
l1: getL1ContractsByNetworkName('sepolia'),
l2: exports.DEFAULT_L2_CONTRACT_ADDRESSES,
},
_c[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_LOCAL] = {
[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_LOCAL]: {
l1: {

@@ -137,3 +136,3 @@ AddressManager: '0x5FbDB2315678afecb367f032d93F642f64180aa3',

},
_c[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_DEVNET] = {
[interfaces_1.L2ChainID.OPTIMISM_HARDHAT_DEVNET]: {
l1: {

@@ -153,3 +152,3 @@ AddressManager: '0x5FbDB2315678afecb367f032d93F642f64180aa3',

},
_c[interfaces_1.L2ChainID.OPTIMISM_BEDROCK_ALPHA_TESTNET] = {
[interfaces_1.L2ChainID.OPTIMISM_BEDROCK_ALPHA_TESTNET]: {
l1: {

@@ -169,3 +168,3 @@ AddressManager: '0xb4e08DcE1F323608229265c9d4125E22a4B9dbAF',

},
_c[interfaces_1.L2ChainID.BASE_GOERLI] = {
[interfaces_1.L2ChainID.BASE_GOERLI]: {
l1: {

@@ -185,3 +184,3 @@ AddressManager: '0x4Cf6b56b14c6CFcB72A75611080514F94624c54e',

},
_c[interfaces_1.L2ChainID.BASE_SEPOLIA] = {
[interfaces_1.L2ChainID.BASE_SEPOLIA]: {
l1: {

@@ -201,3 +200,3 @@ AddressManager: '0x709c2B8ef4A9feFc629A8a2C1AF424Dc5BD6ad1B',

},
_c[interfaces_1.L2ChainID.BASE_MAINNET] = {
[interfaces_1.L2ChainID.BASE_MAINNET]: {
l1: {

@@ -217,3 +216,3 @@ AddressManager: '0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2',

},
_c[interfaces_1.L2ChainID.ZORA_GOERLI] = {
[interfaces_1.L2ChainID.ZORA_GOERLI]: {
l1: {

@@ -233,3 +232,3 @@ AddressManager: '0x54f4676203dEDA6C08E0D40557A119c602bFA246',

},
_c[interfaces_1.L2ChainID.ZORA_MAINNET] = {
[interfaces_1.L2ChainID.ZORA_MAINNET]: {
l1: {

@@ -249,3 +248,3 @@ AddressManager: '0xEF8115F2733fb2033a7c756402Fc1deaa56550Ef',

},
_c[interfaces_1.L2ChainID.MODE_SEPOLIA] = {
[interfaces_1.L2ChainID.MODE_SEPOLIA]: {
l1: {

@@ -265,3 +264,3 @@ AddressManager: '0x83D45725d6562d8CD717673D6bb4c67C07dC1905',

},
_c[interfaces_1.L2ChainID.MODE_MAINNET] = {
[interfaces_1.L2ChainID.MODE_MAINNET]: {
l1: {

@@ -281,5 +280,5 @@ AddressManager: '0x50eF494573f28Cad6B64C31b7a00Cdaa48306e15',

},
_c);
exports.BRIDGE_ADAPTER_DATA = (_d = {},
_d[interfaces_1.L2ChainID.OPTIMISM] = {
};
exports.BRIDGE_ADAPTER_DATA = {
[interfaces_1.L2ChainID.OPTIMISM]: {
wstETH: {

@@ -306,3 +305,3 @@ Adapter: adapters_1.DAIBridgeAdapter,

},
_d[interfaces_1.L2ChainID.OPTIMISM_GOERLI] = {
[interfaces_1.L2ChainID.OPTIMISM_GOERLI]: {
DAI: {

@@ -319,2 +318,3 @@ Adapter: adapters_1.DAIBridgeAdapter,

},
_d);
};
//# sourceMappingURL=chain-constants.js.map
import { Provider } from '@ethersproject/abstract-provider';
import { Signer } from '@ethersproject/abstract-signer';
import type { BigNumber } from 'ethers';
import { ethers } from 'ethers';
import type { AddressLike, NumberLike, ProviderLike, SignerOrProviderLike, TransactionLike } from '../interfaces';
import { ethers, BigNumber } from 'ethers';
import { SignerOrProviderLike, ProviderLike, TransactionLike, NumberLike, AddressLike } from '../interfaces';
export declare const toSignerOrProvider: (signerOrProvider: SignerOrProviderLike) => Signer | Provider;

@@ -7,0 +6,0 @@ export declare const toProvider: (provider: ProviderLike) => Provider;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.toAddress = exports.toNumber = exports.toBigNumber = exports.toTransactionHash = exports.toJsonRpcProvider = exports.toProvider = exports.toSignerOrProvider = void 0;
var abstract_provider_1 = require("@ethersproject/abstract-provider");
var abstract_signer_1 = require("@ethersproject/abstract-signer");
var ethers_1 = require("ethers");
var assert_1 = require("./assert");
var toSignerOrProvider = function (signerOrProvider) {
const abstract_provider_1 = require("@ethersproject/abstract-provider");
const abstract_signer_1 = require("@ethersproject/abstract-signer");
const ethers_1 = require("ethers");
const assert_1 = require("./assert");
const toSignerOrProvider = (signerOrProvider) => {
if (typeof signerOrProvider === 'string') {

@@ -23,3 +23,3 @@ return new ethers_1.ethers.providers.JsonRpcProvider(signerOrProvider);

exports.toSignerOrProvider = toSignerOrProvider;
var toProvider = function (provider) {
const toProvider = (provider) => {
if (typeof provider === 'string') {

@@ -36,4 +36,4 @@ return new ethers_1.ethers.providers.JsonRpcProvider(provider);

exports.toProvider = toProvider;
var toJsonRpcProvider = function (provider) {
var coerced = (0, exports.toProvider)(provider);
const toJsonRpcProvider = (provider) => {
const coerced = (0, exports.toProvider)(provider);
if ('send' in coerced) {

@@ -47,3 +47,3 @@ return coerced;

exports.toJsonRpcProvider = toJsonRpcProvider;
var toTransactionHash = function (transaction) {
const toTransactionHash = (transaction) => {
if (typeof transaction === 'string') {

@@ -64,11 +64,11 @@ (0, assert_1.assert)(ethers_1.ethers.utils.isHexString(transaction, 32), 'Invalid transaction hash');

exports.toTransactionHash = toTransactionHash;
var toBigNumber = function (num) {
const toBigNumber = (num) => {
return ethers_1.ethers.BigNumber.from(num);
};
exports.toBigNumber = toBigNumber;
var toNumber = function (num) {
const toNumber = (num) => {
return (0, exports.toBigNumber)(num).toNumber();
};
exports.toNumber = toNumber;
var toAddress = function (addr) {
const toAddress = (addr) => {
if (typeof addr === 'string') {

@@ -84,1 +84,2 @@ (0, assert_1.assert)(ethers_1.ethers.utils.isAddress(addr), 'Invalid address');

exports.toAddress = toAddress;
//# sourceMappingURL=coercion.js.map

@@ -1,5 +0,5 @@

import { Contract, ethers } from 'ethers';
import type { CrossChainMessenger } from '../cross-chain-messenger';
import type { AddressLike, BridgeAdapterData, BridgeAdapters, OEContracts, OEContractsLike, OEL1Contracts, OEL2Contracts } from '../interfaces';
import type { DeepPartial } from './type-utils';
import { ethers, Contract } from 'ethers';
import { DeepPartial } from './type-utils';
import { CrossChainMessenger } from '../cross-chain-messenger';
import { OEContracts, OEL1Contracts, OEL2Contracts, OEContractsLike, AddressLike, BridgeAdapters, BridgeAdapterData } from '../interfaces';
export declare const getContractInterfaceBedrock: (name: string) => ethers.utils.Interface;

@@ -6,0 +6,0 @@ export declare const getOEContract: (contractName: keyof OEL1Contracts | keyof OEL2Contracts, l2ChainId: number, opts?: {

"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -18,25 +7,25 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

exports.getBridgeAdapters = exports.getAllOEContracts = exports.getOEContract = exports.getContractInterfaceBedrock = void 0;
var contracts_1 = require("@eth-optimism/contracts");
var ethers_1 = require("ethers");
var adapters_1 = require("../adapters");
var DisputeGameFactory_json_1 = __importDefault(require("../forge-artifacts/DisputeGameFactory.json"));
var FaultDisputeGame_json_1 = __importDefault(require("../forge-artifacts/FaultDisputeGame.json"));
var GasPriceOracle_json_1 = __importDefault(require("../forge-artifacts/GasPriceOracle.json"));
var L1Block_json_1 = __importDefault(require("../forge-artifacts/L1Block.json"));
var L1CrossDomainMessenger_json_1 = __importDefault(require("../forge-artifacts/L1CrossDomainMessenger.json"));
var L1ERC721Bridge_json_1 = __importDefault(require("../forge-artifacts/L1ERC721Bridge.json"));
var L1StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L1StandardBridge.json"));
var L2CrossDomainMessenger_json_1 = __importDefault(require("../forge-artifacts/L2CrossDomainMessenger.json"));
var L2ERC721Bridge_json_1 = __importDefault(require("../forge-artifacts/L2ERC721Bridge.json"));
var L2OutputOracle_json_1 = __importDefault(require("../forge-artifacts/L2OutputOracle.json"));
var L2StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L2StandardBridge.json"));
var L2ToL1MessagePasser_json_1 = __importDefault(require("../forge-artifacts/L2ToL1MessagePasser.json"));
var OptimismMintableERC20_json_1 = __importDefault(require("../forge-artifacts/OptimismMintableERC20.json"));
var OptimismMintableERC20Factory_json_1 = __importDefault(require("../forge-artifacts/OptimismMintableERC20Factory.json"));
var OptimismPortal_json_1 = __importDefault(require("../forge-artifacts/OptimismPortal.json"));
var OptimismPortal2_json_1 = __importDefault(require("../forge-artifacts/OptimismPortal2.json"));
var ProxyAdmin_json_1 = __importDefault(require("../forge-artifacts/ProxyAdmin.json"));
var chain_constants_1 = require("./chain-constants");
var coercion_1 = require("./coercion");
var NAME_REMAPPING = {
const contracts_1 = require("@eth-optimism/contracts");
const ethers_1 = require("ethers");
const L1StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L1StandardBridge.json"));
const L2StandardBridge_json_1 = __importDefault(require("../forge-artifacts/L2StandardBridge.json"));
const OptimismMintableERC20_json_1 = __importDefault(require("../forge-artifacts/OptimismMintableERC20.json"));
const OptimismPortal_json_1 = __importDefault(require("../forge-artifacts/OptimismPortal.json"));
const L1CrossDomainMessenger_json_1 = __importDefault(require("../forge-artifacts/L1CrossDomainMessenger.json"));
const L2CrossDomainMessenger_json_1 = __importDefault(require("../forge-artifacts/L2CrossDomainMessenger.json"));
const OptimismMintableERC20Factory_json_1 = __importDefault(require("../forge-artifacts/OptimismMintableERC20Factory.json"));
const ProxyAdmin_json_1 = __importDefault(require("../forge-artifacts/ProxyAdmin.json"));
const L2OutputOracle_json_1 = __importDefault(require("../forge-artifacts/L2OutputOracle.json"));
const L1ERC721Bridge_json_1 = __importDefault(require("../forge-artifacts/L1ERC721Bridge.json"));
const L2ERC721Bridge_json_1 = __importDefault(require("../forge-artifacts/L2ERC721Bridge.json"));
const L1Block_json_1 = __importDefault(require("../forge-artifacts/L1Block.json"));
const L2ToL1MessagePasser_json_1 = __importDefault(require("../forge-artifacts/L2ToL1MessagePasser.json"));
const GasPriceOracle_json_1 = __importDefault(require("../forge-artifacts/GasPriceOracle.json"));
const DisputeGameFactory_json_1 = __importDefault(require("../forge-artifacts/DisputeGameFactory.json"));
const OptimismPortal2_json_1 = __importDefault(require("../forge-artifacts/OptimismPortal2.json"));
const FaultDisputeGame_json_1 = __importDefault(require("../forge-artifacts/FaultDisputeGame.json"));
const coercion_1 = require("./coercion");
const adapters_1 = require("../adapters");
const chain_constants_1 = require("./chain-constants");
const NAME_REMAPPING = {
AddressManager: 'Lib_AddressManager',

@@ -47,4 +36,4 @@ OVM_L1BlockNumber: 'iOVM_L1BlockNumber',

};
var getContractInterfaceBedrock = function (name) {
var artifact = '';
const getContractInterfaceBedrock = (name) => {
let artifact = '';
switch (name) {

@@ -110,5 +99,4 @@ case 'Lib_AddressManager':

exports.getContractInterfaceBedrock = getContractInterfaceBedrock;
var getOEContract = function (contractName, l2ChainId, opts) {
if (opts === void 0) { opts = {}; }
var addresses = chain_constants_1.CONTRACT_ADDRESSES[l2ChainId];
const getOEContract = (contractName, l2ChainId, opts = {}) => {
const addresses = chain_constants_1.CONTRACT_ADDRESSES[l2ChainId];
if (addresses === undefined && opts.address === undefined) {

@@ -119,7 +107,7 @@ if (chain_constants_1.IGNORABLE_CONTRACTS.includes(contractName)) {

else {
throw new Error("cannot get contract ".concat(contractName, " for unknown L2 chain ID ").concat(l2ChainId, ", you must provide an address"));
throw new Error(`cannot get contract ${contractName} for unknown L2 chain ID ${l2ChainId}, you must provide an address`);
}
}
var name = NAME_REMAPPING[contractName] || contractName;
var iface;
const name = NAME_REMAPPING[contractName] || contractName;
let iface;
try {

@@ -134,6 +122,5 @@ iface = (0, exports.getContractInterfaceBedrock)(name);

exports.getOEContract = getOEContract;
var getAllOEContracts = function (l2ChainId, opts) {
const getAllOEContracts = (l2ChainId, opts = {}) => {
var _a, _b, _c, _d;
if (opts === void 0) { opts = {}; }
var addresses = chain_constants_1.CONTRACT_ADDRESSES[l2ChainId] || {
const addresses = chain_constants_1.CONTRACT_ADDRESSES[l2ChainId] || {
l1: {

@@ -153,5 +140,4 @@ AddressManager: undefined,

};
var l1Contracts = {};
for (var _i = 0, _e = Object.entries(addresses.l1); _i < _e.length; _i++) {
var _f = _e[_i], contractName = _f[0], contractAddress = _f[1];
const l1Contracts = {};
for (const [contractName, contractAddress] of Object.entries(addresses.l1)) {
l1Contracts[contractName] = (0, exports.getOEContract)(contractName, l2ChainId, {

@@ -162,5 +148,4 @@ address: ((_b = (_a = opts.overrides) === null || _a === void 0 ? void 0 : _a.l1) === null || _b === void 0 ? void 0 : _b[contractName]) || contractAddress,

}
var l2Contracts = {};
for (var _g = 0, _h = Object.entries(addresses.l2); _g < _h.length; _g++) {
var _j = _h[_g], contractName = _j[0], contractAddress = _j[1];
const l2Contracts = {};
for (const [contractName, contractAddress] of Object.entries(addresses.l2)) {
l2Contracts[contractName] = (0, exports.getOEContract)(contractName, l2ChainId, {

@@ -177,5 +162,5 @@ address: ((_d = (_c = opts.overrides) === null || _c === void 0 ? void 0 : _c.l2) === null || _d === void 0 ? void 0 : _d[contractName]) || contractAddress,

exports.getAllOEContracts = getAllOEContracts;
var getBridgeAdapters = function (l2ChainId, messenger, opts) {
const getBridgeAdapters = (l2ChainId, messenger, opts) => {
var _a, _b, _c, _d, _e, _f;
var adapterData = __assign(__assign(__assign({}, (chain_constants_1.CONTRACT_ADDRESSES[l2ChainId] || ((_b = (_a = opts === null || opts === void 0 ? void 0 : opts.contracts) === null || _a === void 0 ? void 0 : _a.l1) === null || _b === void 0 ? void 0 : _b.L1StandardBridge)
const adapterData = Object.assign(Object.assign(Object.assign({}, (chain_constants_1.CONTRACT_ADDRESSES[l2ChainId] || ((_b = (_a = opts === null || opts === void 0 ? void 0 : opts.contracts) === null || _a === void 0 ? void 0 : _a.l1) === null || _b === void 0 ? void 0 : _b.L1StandardBridge)
? {

@@ -196,7 +181,6 @@ Standard: {

: {})), (chain_constants_1.BRIDGE_ADAPTER_DATA[l2ChainId] || {})), ((opts === null || opts === void 0 ? void 0 : opts.overrides) || {}));
var adapters = {};
for (var _i = 0, _g = Object.entries(adapterData); _i < _g.length; _i++) {
var _h = _g[_i], bridgeName = _h[0], bridgeData = _h[1];
const adapters = {};
for (const [bridgeName, bridgeData] of Object.entries(adapterData)) {
adapters[bridgeName] = new bridgeData.Adapter({
messenger: messenger,
messenger,
l1Bridge: bridgeData.l1Bridge,

@@ -209,1 +193,2 @@ l2Bridge: bridgeData.l2Bridge,

exports.getBridgeAdapters = getBridgeAdapters;
//# sourceMappingURL=contracts.js.map

@@ -1,7 +0,7 @@

export * from './chain-constants';
export * from './coercion';
export * from './contracts';
export * from './type-utils';
export * from './misc-utils';
export * from './merkle-utils';
export * from './chain-constants';
export * from './message-utils';
export * from './misc-utils';
export * from './type-utils';

@@ -17,8 +17,9 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./chain-constants"), exports);
__exportStar(require("./coercion"), exports);
__exportStar(require("./contracts"), exports);
__exportStar(require("./type-utils"), exports);
__exportStar(require("./misc-utils"), exports);
__exportStar(require("./merkle-utils"), exports);
__exportStar(require("./chain-constants"), exports);
__exportStar(require("./message-utils"), exports);
__exportStar(require("./misc-utils"), exports);
__exportStar(require("./type-utils"), exports);
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

import { BigNumber, ethers } from 'ethers';
import { ethers, BigNumber } from 'ethers';
export declare const makeMerkleTreeProof: (leaves: string[], index: number) => string[];

@@ -3,0 +3,0 @@ export declare const maybeAddProofNode: (key: string, proof: string[]) => string[];

@@ -25,57 +25,12 @@ "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());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeStateTrieProof = exports.maybeAddProofNode = exports.makeMerkleTreeProof = void 0;
var core_utils_1 = require("@eth-optimism/core-utils");
var ethers_1 = require("ethers");
var merkletreejs_1 = require("merkletreejs");
var rlp = __importStar(require("rlp"));
var makeMerkleTreeProof = function (leaves, index) {
var correctedTreeSize = Math.pow(2, Math.ceil(Math.log2(leaves.length)));
var parsedLeaves = [];
for (var i = 0; i < correctedTreeSize; i++) {
const ethers_1 = require("ethers");
const core_utils_1 = require("@eth-optimism/core-utils");
const merkletreejs_1 = require("merkletreejs");
const rlp = __importStar(require("rlp"));
const makeMerkleTreeProof = (leaves, index) => {
const correctedTreeSize = Math.pow(2, Math.ceil(Math.log2(leaves.length)));
const parsedLeaves = [];
for (let i = 0; i < correctedTreeSize; i++) {
if (i < leaves.length) {

@@ -88,7 +43,7 @@ parsedLeaves.push(leaves[i]);

}
var bufLeaves = parsedLeaves.map(core_utils_1.fromHexString);
var tree = new merkletreejs_1.MerkleTree(bufLeaves, function (el) {
const bufLeaves = parsedLeaves.map(core_utils_1.fromHexString);
const tree = new merkletreejs_1.MerkleTree(bufLeaves, (el) => {
return (0, core_utils_1.fromHexString)(ethers_1.ethers.utils.keccak256(el));
});
var proof = tree.getProof(bufLeaves[index], index).map(function (element) {
const proof = tree.getProof(bufLeaves[index], index).map((element) => {
return (0, core_utils_1.toHexString)(element.data);

@@ -99,11 +54,10 @@ });

exports.makeMerkleTreeProof = makeMerkleTreeProof;
var maybeAddProofNode = function (key, proof) {
var modifiedProof = __spreadArray([], proof, true);
var finalProofEl = modifiedProof[modifiedProof.length - 1];
var finalProofElDecoded = rlp.decode(finalProofEl);
const maybeAddProofNode = (key, proof) => {
const modifiedProof = [...proof];
const finalProofEl = modifiedProof[modifiedProof.length - 1];
const finalProofElDecoded = rlp.decode(finalProofEl);
if (finalProofElDecoded.length === 17) {
for (var _i = 0, finalProofElDecoded_1 = finalProofElDecoded; _i < finalProofElDecoded_1.length; _i++) {
var item = finalProofElDecoded_1[_i];
for (const item of finalProofElDecoded) {
if (Array.isArray(item)) {
var suffix = (0, core_utils_1.toHexString)(item[0]).slice(3);
const suffix = (0, core_utils_1.toHexString)(item[0]).slice(3);
if (key.endsWith(suffix)) {

@@ -118,23 +72,17 @@ modifiedProof.push((0, core_utils_1.toHexString)(rlp.encode(item)));

exports.maybeAddProofNode = maybeAddProofNode;
var makeStateTrieProof = function (provider, blockNumber, address, slot) { return __awaiter(void 0, void 0, void 0, function () {
var proof;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, provider.send('eth_getProof', [
address,
[slot],
(0, core_utils_1.toRpcHexString)(blockNumber),
])];
case 1:
proof = _a.sent();
proof.storageProof[0].proof = (0, exports.maybeAddProofNode)(ethers_1.ethers.utils.keccak256(slot), proof.storageProof[0].proof);
return [2, {
accountProof: proof.accountProof,
storageProof: proof.storageProof[0].proof,
storageValue: ethers_1.BigNumber.from(proof.storageProof[0].value),
storageRoot: proof.storageHash,
}];
}
});
}); };
const makeStateTrieProof = async (provider, blockNumber, address, slot) => {
const proof = await provider.send('eth_getProof', [
address,
[slot],
(0, core_utils_1.toRpcHexString)(blockNumber),
]);
proof.storageProof[0].proof = (0, exports.maybeAddProofNode)(ethers_1.ethers.utils.keccak256(slot), proof.storageProof[0].proof);
return {
accountProof: proof.accountProof,
storageProof: proof.storageProof[0].proof,
storageValue: ethers_1.BigNumber.from(proof.storageProof[0].value),
storageRoot: proof.storageHash,
};
};
exports.makeStateTrieProof = makeStateTrieProof;
//# sourceMappingURL=merkle-utils.js.map
import { BigNumber } from 'ethers';
import type { LowLevelMessage } from '../interfaces';
import { LowLevelMessage } from '../interfaces';
export declare const hashLowLevelMessage: (message: LowLevelMessage) => string;
export declare const hashMessageHash: (messageHash: string) => string;
export declare const migratedWithdrawalGasLimit: (data: string, chainID: number) => BigNumber;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.migratedWithdrawalGasLimit = exports.hashMessageHash = exports.hashLowLevelMessage = void 0;
var core_utils_1 = require("@eth-optimism/core-utils");
var ethers_1 = require("ethers");
var hexDataLength = ethers_1.utils.hexDataLength;
var RELAY_CONSTANT_OVERHEAD = ethers_1.BigNumber.from(200000);
var RELAY_PER_BYTE_DATA_COST = ethers_1.BigNumber.from(16);
var MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR = ethers_1.BigNumber.from(64);
var MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR = ethers_1.BigNumber.from(63);
var RELAY_CALL_OVERHEAD = ethers_1.BigNumber.from(40000);
var RELAY_RESERVED_GAS = ethers_1.BigNumber.from(40000);
var RELAY_GAS_CHECK_BUFFER = ethers_1.BigNumber.from(5000);
var hashLowLevelMessage = function (message) {
const core_utils_1 = require("@eth-optimism/core-utils");
const ethers_1 = require("ethers");
const { hexDataLength } = ethers_1.utils;
const RELAY_CONSTANT_OVERHEAD = ethers_1.BigNumber.from(200000);
const RELAY_PER_BYTE_DATA_COST = ethers_1.BigNumber.from(16);
const MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR = ethers_1.BigNumber.from(64);
const MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR = ethers_1.BigNumber.from(63);
const RELAY_CALL_OVERHEAD = ethers_1.BigNumber.from(40000);
const RELAY_RESERVED_GAS = ethers_1.BigNumber.from(40000);
const RELAY_GAS_CHECK_BUFFER = ethers_1.BigNumber.from(5000);
const hashLowLevelMessage = (message) => {
return (0, core_utils_1.hashWithdrawal)(message.messageNonce, message.sender, message.target, message.value, message.minGasLimit, message.message);
};
exports.hashLowLevelMessage = hashLowLevelMessage;
var hashMessageHash = function (messageHash) {
var data = ethers_1.ethers.utils.defaultAbiCoder.encode(['bytes32', 'uint256'], [messageHash, ethers_1.ethers.constants.HashZero]);
const hashMessageHash = (messageHash) => {
const data = ethers_1.ethers.utils.defaultAbiCoder.encode(['bytes32', 'uint256'], [messageHash, ethers_1.ethers.constants.HashZero]);
return ethers_1.ethers.utils.keccak256(data);
};
exports.hashMessageHash = hashMessageHash;
var migratedWithdrawalGasLimit = function (data, chainID) {
var dataCost = ethers_1.BigNumber.from(hexDataLength(data)).mul(RELAY_PER_BYTE_DATA_COST);
var overhead;
const migratedWithdrawalGasLimit = (data, chainID) => {
const dataCost = ethers_1.BigNumber.from(hexDataLength(data)).mul(RELAY_PER_BYTE_DATA_COST);
let overhead;
if (chainID === 420) {

@@ -30,3 +30,3 @@ overhead = ethers_1.BigNumber.from(200000);

else {
var dynamicOverhead = MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR.mul(1000000).div(MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR);
const dynamicOverhead = MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR.mul(1000000).div(MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR);
overhead = RELAY_CONSTANT_OVERHEAD.add(dynamicOverhead)

@@ -37,3 +37,3 @@ .add(RELAY_CALL_OVERHEAD)

}
var minGasLimit = dataCost.add(overhead);
let minGasLimit = dataCost.add(overhead);
if (minGasLimit.gt(25000000)) {

@@ -45,1 +45,2 @@ minGasLimit = ethers_1.BigNumber.from(25000000);

exports.migratedWithdrawalGasLimit = migratedWithdrawalGasLimit;
//# sourceMappingURL=message-utils.js.map
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.omit = void 0;
var omit = function (obj) {
var keys = [];
for (var _i = 1; _i < arguments.length; _i++) {
keys[_i - 1] = arguments[_i];
}
var copy = __assign({}, obj);
for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
var key = keys_1[_a];
const omit = (obj, ...keys) => {
const copy = Object.assign({}, obj);
for (const key of keys) {
delete copy[key];

@@ -28,1 +12,2 @@ }

exports.omit = omit;
//# sourceMappingURL=misc-utils.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=type-utils.js.map
{
"name": "@eth-optimism/sdk",
"version": "0.0.0-main-20240610203833",
"version": "0.0.0-sc-sdk-fps-mainnet-20240610215134",
"description": "[Optimism] Tools for working with Optimism",

@@ -16,3 +16,3 @@ "main": "dist/index",

],
"homepage": "https://github.com/ethereum-optimism/ecosystem/tree/main/packages/sdk#readme",
"homepage": "https://github.com/ethereum-optimism/optimism/tree/develop/packages/sdk#readme",
"license": "MIT",

@@ -22,3 +22,3 @@ "author": "Optimism PBC",

"type": "git",
"url": "https://github.com/ethereum-optimism/ecosystem.git"
"url": "https://github.com/ethereum-optimism/optimism.git"
},

@@ -53,3 +53,3 @@ "devDependencies": {

"@eth-optimism/contracts": "0.6.0",
"@eth-optimism/core-utils": "*",
"@eth-optimism/core-utils": "^0.13.2",
"lodash": "^4.17.21",

@@ -71,3 +71,3 @@ "merkletreejs": "^0.3.11",

"pre-commit": "lint-staged",
"test:sdk": "hardhat test",
"test": "hardhat test",
"test:next": "vitest",

@@ -74,0 +74,0 @@ "test:next:run": "vitest run",

/* eslint-disable @typescript-eslint/no-unused-vars */
import { Contract } from 'ethers'
import { hexStringEquals } from '@eth-optimism/core-utils'
import { Contract } from 'ethers'
import type { AddressLike } from '../interfaces'
import { AddressLike } from '../interfaces'
import { toAddress } from '../utils'

@@ -7,0 +7,0 @@ import { StandardBridgeAdapter } from './standard-bridge'

/* eslint-disable @typescript-eslint/no-unused-vars */
import { Contract } from 'ethers'
import { hexStringEquals } from '@eth-optimism/core-utils'
import { Contract } from 'ethers'
import type { AddressLike } from '../interfaces'
import { AddressLike } from '../interfaces'
import { toAddress } from '../utils'

@@ -7,0 +7,0 @@ import { StandardBridgeAdapter } from './standard-bridge'

/* eslint-disable @typescript-eslint/no-unused-vars */
import { ethers, Overrides, BigNumber } from 'ethers'
import { TransactionRequest, BlockTag } from '@ethersproject/abstract-provider'
import { predeploys } from '@eth-optimism/contracts'
import { hexStringEquals } from '@eth-optimism/core-utils'
import type { BlockTag,TransactionRequest } from '@ethersproject/abstract-provider'
import type { BigNumber,Overrides } from 'ethers';
import { ethers } from 'ethers'
import type {
import {
NumberLike,
AddressLike,
NumberLike,
TokenBridgeMessage} from '../interfaces';
import {
TokenBridgeMessage,
MessageDirection,
} from '../interfaces'
import { omit,toAddress } from '../utils'
import { toAddress, omit } from '../utils'
import { StandardBridgeAdapter } from './standard-bridge'

@@ -17,0 +15,0 @@

@@ -0,4 +1,4 @@

export * from './standard-bridge'
export * from './eth-bridge'
export * from './dai-bridge'
export * from './eco-bridge'
export * from './eth-bridge'
export * from './standard-bridge'
/* eslint-disable @typescript-eslint/no-unused-vars */
import { predeploys } from '@eth-optimism/contracts'
import { hexStringEquals } from '@eth-optimism/core-utils'
import type {
BlockTag,
import {
ethers,
Contract,
Overrides,
Signer,
BigNumber,
CallOverrides,
} from 'ethers'
import {
TransactionRequest,
TransactionResponse,
BlockTag,
} from '@ethersproject/abstract-provider'
import type {
BigNumber,
CallOverrides, Overrides,
Signer} from 'ethers';
import {
Contract,
ethers} from 'ethers'
import { predeploys } from '@eth-optimism/contracts'
import { hexStringEquals } from '@eth-optimism/core-utils'
import type { CrossChainMessenger } from '../cross-chain-messenger'
import l1StandardBridgeArtifact from '../forge-artifacts/L1StandardBridge.json'
import l2StandardBridgeArtifact from '../forge-artifacts/L2StandardBridge.json'
import optimismMintableERC20 from '../forge-artifacts/OptimismMintableERC20.json'
import type {
AddressLike,
import { CrossChainMessenger } from '../cross-chain-messenger'
import {
IBridgeAdapter,
NumberLike,
TokenBridgeMessage} from '../interfaces';
import {
AddressLike,
TokenBridgeMessage,
MessageDirection,

@@ -41,2 +41,3 @@ } from '../interfaces'

* Creates a StandardBridgeAdapter instance.
*
* @param opts Options for the adapter.

@@ -43,0 +44,0 @@ * @param opts.messenger Provider used to make queries related to cross-chain interactions.

@@ -0,5 +1,5 @@

export * from './interfaces'
export * from './utils'
export * from './cross-chain-messenger'
export * from './adapters'
export * from './cross-chain-messenger'
export * from './interfaces'
export * from './l2-provider'
export * from './utils'

@@ -1,17 +0,17 @@

import type {
BlockTag,
TransactionRequest,
TransactionResponse,
} from '@ethersproject/abstract-provider'
import type {
import {
Contract,
Overrides,
Signer,
BigNumber,
CallOverrides,
Contract,
Overrides,
PayableOverrides,
Signer,
} from 'ethers'
import {
TransactionRequest,
TransactionResponse,
BlockTag,
} from '@ethersproject/abstract-provider'
import type { CrossChainMessenger } from '../cross-chain-messenger'
import type { AddressLike, NumberLike, TokenBridgeMessage } from './types'
import { NumberLike, AddressLike, TokenBridgeMessage } from './types'
import { CrossChainMessenger } from '../cross-chain-messenger'

@@ -40,2 +40,3 @@ /**

* Gets all deposits for a given address.
*
* @param address Address to search for messages from.

@@ -59,2 +60,3 @@ * @param opts Options object.

* Gets all withdrawals for a given address.
*
* @param address Address to search for messages from.

@@ -78,2 +80,3 @@ * @param opts Options object.

* Checks whether the given token pair is supported by the bridge.
*
* @param l1Token The L1 token address.

@@ -90,2 +93,3 @@ * @param l2Token The L2 token address.

* Queries the account's approval amount for a given L1 token.
*
* @param l1Token The L1 token address.

@@ -104,2 +108,3 @@ * @param l2Token The L2 token address.

* Approves a deposit into the L2 chain.
*
* @param l1Token The L1 token address.

@@ -125,2 +130,3 @@ * @param l2Token The L2 token address.

* Deposits some tokens into the L2 chain.
*
* @param l1Token The L1 token address.

@@ -150,2 +156,3 @@ * @param l2Token The L2 token address.

* Withdraws some tokens back to the L1 chain.
*
* @param l1Token The L1 token address.

@@ -178,2 +185,3 @@ * @param l2Token The L2 token address.

* Generates a transaction for approving some tokens to deposit into the L2 chain.
*
* @param l1Token The L1 token address.

@@ -197,2 +205,3 @@ * @param l2Token The L2 token address.

* Generates a transaction for depositing some tokens into the L2 chain.
*
* @param l1Token The L1 token address.

@@ -220,2 +229,3 @@ * @param l2Token The L2 token address.

* Generates a transaction for withdrawing some tokens back to the L1 chain.
*
* @param l1Token The L1 token address.

@@ -247,2 +257,3 @@ * @param l2Token The L2 token address.

* Estimates gas required to approve some tokens to deposit into the L2 chain.
*
* @param l1Token The L1 token address.

@@ -266,2 +277,3 @@ * @param l2Token The L2 token address.

* Estimates gas required to deposit some tokens into the L2 chain.
*
* @param l1Token The L1 token address.

@@ -289,2 +301,3 @@ * @param l2Token The L2 token address.

* Estimates gas required to withdraw some tokens back to the L1 chain.
*
* @param l1Token The L1 token address.

@@ -291,0 +304,0 @@ * @param l2Token The L2 token address.

@@ -1,9 +0,9 @@

import type {
Block,
BlockWithTransactions,
import {
Provider,
TransactionRequest,
TransactionResponse,
Block,
BlockWithTransactions,
} from '@ethersproject/abstract-provider'
import type { BigNumber } from 'ethers'
import { BigNumber } from 'ethers'

@@ -46,2 +46,3 @@ /**

* Gets the current L1 (data) gas price.
*
* @returns Current L1 data gas price in wei.

@@ -53,2 +54,3 @@ */

* Estimates the L1 (data) gas required for a transaction.
*
* @param tx Transaction to estimate L1 gas for.

@@ -62,2 +64,3 @@ * @returns Estimated L1 gas.

* cost by the current L1 gas price.
*
* @param tx Transaction to estimate L1 gas cost for.

@@ -72,2 +75,3 @@ * @returns Estimated L1 gas cost.

* getGasPrice and estimateGas for the given transaction request.
*
* @param tx Transaction to estimate L2 gas cost for.

@@ -81,2 +85,3 @@ * @returns Estimated L2 gas cost.

* and the estimated L2 gas cost.
*
* @param tx Transaction to estimate total gas cost for.

@@ -83,0 +88,0 @@ * @returns Estimated total gas cost.

@@ -1,2 +0,2 @@

import type {
import {
Provider,

@@ -6,7 +6,7 @@ TransactionReceipt,

} from '@ethersproject/abstract-provider'
import type { Signer } from '@ethersproject/abstract-signer'
import type { BigNumber,Contract } from 'ethers'
import { Signer } from '@ethersproject/abstract-signer'
import { Contract, BigNumber } from 'ethers'
import type { CrossChainMessenger } from '../cross-chain-messenger'
import type { IBridgeAdapter } from './bridge-adapter'
import { CrossChainMessenger } from '../cross-chain-messenger'
import { IBridgeAdapter } from './bridge-adapter'

@@ -13,0 +13,0 @@ /**

@@ -1,10 +0,10 @@

import { getContractInterface,predeploys } from '@eth-optimism/contracts'
import type { Provider, TransactionRequest } from '@ethersproject/abstract-provider'
import { Provider, TransactionRequest } from '@ethersproject/abstract-provider'
import { serialize } from '@ethersproject/transactions'
import { BigNumber,Contract } from 'ethers'
import { Contract, BigNumber } from 'ethers'
import { predeploys, getContractInterface } from '@eth-optimism/contracts'
import cloneDeep from 'lodash/cloneDeep'
import type { L2Provider, NumberLike,ProviderLike } from './interfaces'
import { toBigNumber,toNumber, toProvider } from './utils'
import { assert } from './utils/assert'
import { L2Provider, ProviderLike, NumberLike } from './interfaces'
import { toProvider, toNumber, toBigNumber } from './utils'

@@ -15,2 +15,3 @@ type ProviderTypeIsWrong = any

* Gets a reasonable nonce for the transaction.
*
* @param provider Provider to get the nonce from.

@@ -36,2 +37,3 @@ * @param tx Requested transaction.

* Returns a Contract object for the GasPriceOracle.
*
* @param provider Provider to attach the contract to.

@@ -50,2 +52,3 @@ * @returns Contract object for the GasPriceOracle.

* Gets the current L1 gas price as seen on L2.
*
* @param l2Provider L2 provider to query the L1 gas price from.

@@ -63,2 +66,3 @@ * @returns Current L1 gas price as seen on L2.

* Estimates the amount of L1 gas required for a given L2 transaction.
*
* @param l2Provider L2 provider to query the gas usage from.

@@ -94,2 +98,3 @@ * @param tx Transaction to estimate L1 gas for.

* Estimates the amount of L1 gas cost for a given L2 transaction in wei.
*
* @param l2Provider L2 provider to query the gas usage from.

@@ -125,2 +130,3 @@ * @param tx Transaction to estimate L1 gas cost for.

* Estimates the L2 gas cost for a given L2 transaction in wei.
*
* @param l2Provider L2 provider to query the gas usage from.

@@ -142,2 +148,3 @@ * @param tx Transaction to estimate L2 gas cost for.

* Estimates the total gas cost for a given L2 transaction in wei.
*
* @param l2Provider L2 provider to query the gas usage from.

@@ -159,2 +166,3 @@ * @param tx Transaction to estimate total gas cost for.

* if true
*
* @param provider The provider to check

@@ -178,2 +186,3 @@ * @returns Boolean

* of the original provider.
*
* @param provider Provider to wrap into an L2 provider.

@@ -180,0 +189,0 @@ * @returns Provider wrapped as an L2 provider.

import { predeploys } from '@eth-optimism/core-utils'
import { ethers } from 'ethers'
import {
DAIBridgeAdapter,
ECOBridgeAdapter,
StandardBridgeAdapter,
} from '../adapters'
import type {
BridgeAdapterData,
OEContractsLike,
OEL1ContractsLike,
OEL2ContractsLike} from '../interfaces';
import {
L1ChainID,
L2ChainID
} from '../interfaces'
// The addresses below should be for the proxy if it is a proxied contract.

@@ -71,2 +56,16 @@

import {
L1ChainID,
L2ChainID,
OEContractsLike,
OEL1ContractsLike,
OEL2ContractsLike,
BridgeAdapterData,
} from '../interfaces'
import {
StandardBridgeAdapter,
DAIBridgeAdapter,
ECOBridgeAdapter,
} from '../adapters'
export const DEPOSIT_CONFIRMATION_BLOCKS: {

@@ -119,2 +118,3 @@ [ChainID in L2ChainID]: number

* Loads the L1 contracts for a given network by the network name.
*
* @param network The name of the network to load the contracts for.

@@ -121,0 +121,0 @@ * @returns The L1 contracts for the given network.

@@ -1,19 +0,17 @@

import type {
import {
Provider,
TransactionReceipt,
TransactionResponse} from '@ethersproject/abstract-provider';
import {
Provider
TransactionResponse,
} from '@ethersproject/abstract-provider'
import { Signer } from '@ethersproject/abstract-signer'
import type { BigNumber } from 'ethers';
import { ethers } from 'ethers'
import { ethers, BigNumber } from 'ethers'
import type {
AddressLike,
NumberLike,
import { assert } from './assert'
import {
SignerOrProviderLike,
ProviderLike,
SignerOrProviderLike,
TransactionLike,
NumberLike,
AddressLike,
} from '../interfaces'
import { assert } from './assert'

@@ -23,2 +21,3 @@ /**

* string then it is a JSON-RPC url.
*
* @param signerOrProvider SignerOrProviderLike to turn into a Signer or Provider.

@@ -44,2 +43,3 @@ * @returns Input as a Signer or Provider.

* JSON-RPC url.
*
* @param provider ProviderLike to turn into a Provider.

@@ -60,2 +60,3 @@ * @returns Input as a Provider.

* Converts a ProviderLike into a JsonRpcProvider.
*
* @param provider ProviderLike to turn into a JsonRpcProvider.

@@ -80,2 +81,3 @@ * @returns Input as a JsonRpcProvider.

* Pulls a transaction hash out of a TransactionLike object.
*
* @param transaction TransactionLike to convert into a transaction hash.

@@ -102,2 +104,3 @@ * @returns Transaction hash corresponding to the TransactionLike input.

* Converts a number-like into an ethers BigNumber.
*
* @param num Number-like to convert into a BigNumber.

@@ -112,2 +115,3 @@ * @returns Number-like as a BigNumber.

* Converts a number-like into a number.
*
* @param num Number-like to convert into a number.

@@ -122,2 +126,3 @@ * @returns Number-like as a number.

* Converts an address-like into a 0x-prefixed address string.
*
* @param addr Address-like to convert into an address.

@@ -124,0 +129,0 @@ * @returns Address-like as an address.

import { getContractInterface, predeploys } from '@eth-optimism/contracts'
import { Contract,ethers } from 'ethers'
import { ethers, Contract } from 'ethers'
import { ETHBridgeAdapter,StandardBridgeAdapter } from '../adapters'
import type { CrossChainMessenger } from '../cross-chain-messenger'
import disputeGameFactory from '../forge-artifacts/DisputeGameFactory.json'
import faultDisputeGame from '../forge-artifacts/FaultDisputeGame.json'
import gasPriceOracle from '../forge-artifacts/GasPriceOracle.json'
import l1Block from '../forge-artifacts/L1Block.json'
import l1StandardBridge from '../forge-artifacts/L1StandardBridge.json'
import l2StandardBridge from '../forge-artifacts/L2StandardBridge.json'
import optimismMintableERC20 from '../forge-artifacts/OptimismMintableERC20.json'
import optimismPortal from '../forge-artifacts/OptimismPortal.json'
import l1CrossDomainMessenger from '../forge-artifacts/L1CrossDomainMessenger.json'
import l2CrossDomainMessenger from '../forge-artifacts/L2CrossDomainMessenger.json'
import optimismMintableERC20Factory from '../forge-artifacts/OptimismMintableERC20Factory.json'
import proxyAdmin from '../forge-artifacts/ProxyAdmin.json'
import l2OutputOracle from '../forge-artifacts/L2OutputOracle.json'
import l1ERC721Bridge from '../forge-artifacts/L1ERC721Bridge.json'
import l1StandardBridge from '../forge-artifacts/L1StandardBridge.json'
import l2CrossDomainMessenger from '../forge-artifacts/L2CrossDomainMessenger.json'
import l2ERC721Bridge from '../forge-artifacts/L2ERC721Bridge.json'
import l2OutputOracle from '../forge-artifacts/L2OutputOracle.json'
import l2StandardBridge from '../forge-artifacts/L2StandardBridge.json'
import l1Block from '../forge-artifacts/L1Block.json'
import l2ToL1MessagePasser from '../forge-artifacts/L2ToL1MessagePasser.json'
import optimismMintableERC20 from '../forge-artifacts/OptimismMintableERC20.json'
import optimismMintableERC20Factory from '../forge-artifacts/OptimismMintableERC20Factory.json'
import optimismPortal from '../forge-artifacts/OptimismPortal.json'
import gasPriceOracle from '../forge-artifacts/GasPriceOracle.json'
import disputeGameFactory from '../forge-artifacts/DisputeGameFactory.json'
import optimismPortal2 from '../forge-artifacts/OptimismPortal2.json'
import proxyAdmin from '../forge-artifacts/ProxyAdmin.json'
import type {
AddressLike,
BridgeAdapterData,
BridgeAdapters,
OEContracts,
OEContractsLike,
OEL1Contracts,
OEL2Contracts,
} from '../interfaces'
import faultDisputeGame from '../forge-artifacts/FaultDisputeGame.json'
import { toAddress } from './coercion'
import { DeepPartial } from './type-utils'
import { CrossChainMessenger } from '../cross-chain-messenger'
import { StandardBridgeAdapter, ETHBridgeAdapter } from '../adapters'
import {
BRIDGE_ADAPTER_DATA,
CONTRACT_ADDRESSES,
DEFAULT_L2_CONTRACT_ADDRESSES,
BRIDGE_ADAPTER_DATA,
IGNORABLE_CONTRACTS,
} from './chain-constants'
import { toAddress } from './coercion'
import type { DeepPartial } from './type-utils'
import {
OEContracts,
OEL1Contracts,
OEL2Contracts,
OEContractsLike,
AddressLike,
BridgeAdapters,
BridgeAdapterData,
} from '../interfaces'

@@ -121,2 +121,3 @@ /**

* function will throw an error.
*
* @param contractName Name of the contract to connect to.

@@ -176,2 +177,3 @@ * @param l2ChainId Chain ID for the L2 network.

* function will throw an error.
*
* @param l2ChainId Chain ID for the L2 network.

@@ -243,2 +245,3 @@ * @param opts Additional options for connecting to the contracts.

* Gets a series of bridge adapters for the given L2 chain ID.
*
* @param l2ChainId Chain ID for the L2 network.

@@ -245,0 +248,0 @@ * @param messenger Cross chain messenger to connect to the bridge adapters

@@ -1,7 +0,7 @@

export * from './chain-constants'
export * from './coercion'
export * from './contracts'
export * from './type-utils'
export * from './misc-utils'
export * from './merkle-utils'
export * from './chain-constants'
export * from './message-utils'
export * from './misc-utils'
export * from './type-utils'
/* Imports: External */
import { ethers, BigNumber } from 'ethers'
import {

@@ -7,3 +8,2 @@ fromHexString,

} from '@eth-optimism/core-utils'
import { BigNumber,ethers } from 'ethers'
import { MerkleTree } from 'merkletreejs'

@@ -14,2 +14,3 @@ import * as rlp from 'rlp'

* Generates a Merkle proof (using the particular scheme we use within Lib_MerkleTree).
*
* @param leaves Leaves of the merkle tree.

@@ -53,2 +54,3 @@ * @param index Index to generate a proof for.

* natively so we instead append an extra proof element to handle it instead.
*
* @param key Key that the proof is for.

@@ -87,2 +89,3 @@ * @param proof Proof to potentially modify.

* Generates a Merkle-Patricia trie proof for a given account and storage slot.
*
* @param provider RPC provider attached to an EVM-compatible chain.

@@ -89,0 +92,0 @@ * @param blockNumber Block number to generate the proof at.

import { hashWithdrawal } from '@eth-optimism/core-utils'
import { BigNumber, ethers,utils } from 'ethers'
import { BigNumber, utils, ethers } from 'ethers'
import type { LowLevelMessage } from '../interfaces'
import { LowLevelMessage } from '../interfaces'

@@ -19,2 +19,3 @@ const { hexDataLength } = utils

* Utility for hashing a LowLevelMessage object.
*
* @param message LowLevelMessage object to hash.

@@ -38,2 +39,3 @@ * @returns Hash of the given LowLevelMessage.

* because the first mapping in the contract is used.
*
* @param messageHash Message hash to hash.

@@ -40,0 +42,0 @@ * @returns Hash of the given message hash.

@@ -6,2 +6,3 @@ // TODO: A lot of this stuff could probably live in core-utils instead.

* Returns a copy of the given object ({ ...obj }) with the given keys omitted.
*
* @param obj Object to return with the keys omitted.

@@ -8,0 +9,0 @@ * @param keys Keys to omit from the returned object.

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc