ConnectGelato,ProviderModuleDSA on mainnet - tests adapted

This commit is contained in:
gitpusha 2020-09-23 12:27:33 +02:00 committed by Luis Schliesske
parent bc88e48c6b
commit 8aedd3e531
9 changed files with 1644 additions and 476 deletions

View File

@ -9,8 +9,6 @@ require("dotenv").config();
const INFURA_ID = process.env.INFURA_ID;
assert.ok(INFURA_ID, "no Infura ID in process.env");
const INSTA_MASTER = "0xfCD22438AD6eD564a1C26151Df73F6B33B817B56";
// ================================= CONFIG =========================================
module.exports = {
defaultNetwork: "ganache",
@ -19,21 +17,21 @@ module.exports = {
// Standard config
url: "http://localhost:8545",
fork: `https://mainnet.infura.io/v3/${INFURA_ID}`,
unlocked_accounts: [INSTA_MASTER],
// Custom
GelatoCore: "0x1d681d76ce96E4d70a88A00EBbcfc1E47808d0b8",
InstaMaster: INSTA_MASTER,
InstaIndex: "0x2971AdFa57b20E5a416aE5a708A8655A9c74f723",
InstaList: "0x4c8a1BEb8a87765788946D6B19C6C6355194AbEb",
InstaConnectors: "0xD6A602C01a023B98Ecfb29Df02FBA380d3B21E0c",
InstaAccount: "0x939Daad09fC4A9B8f8A9352A485DAb2df4F4B3F8",
ConnectAuth: "0xd1aFf9f2aCf800C876c409100D6F39AEa93Fc3D9",
ConnectBasic: "0x6a31c5982C5Bc5533432913cf06a66b6D3333a95",
ConnectGelato: "0x37A7009d424951dd5D5F155fA588D9a03C455163",
ConnectMaker: "0xac02030d8a8F49eD04b2f52C394D3F901A10F8A9",
ConnectCompound: "0x07F81230d73a78f63F0c2A3403AD281b067d28F8",
DAI: "0x6b175474e89094c44da98b954eedeac495271d0f",
DAI_UNISWAP: "0x2a1530C4C41db0B0b2bB646CB5Eb1A67b7158667",
CDAI: "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643",
ProviderModuleDSA: "0x0C25452d20cdFeEd2983fa9b9b9Cf4E81D6f2fE2",
},
},
solc: {

View File

@ -1,231 +0,0 @@
// "SPDX-License-Identifier: UNLICENSED"
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import {
IGelatoCore,
Provider,
Task,
TaskReceipt
} from "@gelatonetwork/core/contracts/gelato_core/interfaces/IGelatoCore.sol";
import {
IGelatoProviders,
TaskSpec
} from "@gelatonetwork/core/contracts/gelato_core/interfaces/IGelatoProviders.sol";
import {
IGelatoProviderModule
} from "@gelatonetwork/core/contracts/provider_modules/IGelatoProviderModule.sol";
import {Address} from "@gelatonetwork/core/contracts/external/Address.sol";
import {SafeMath} from "@gelatonetwork/core/contracts/external/SafeMath.sol";
import {Stores} from "./instadapp/Stores.sol";
interface ConnectorInterface {
function name() external pure returns (string memory);
}
/// @title ConnectGelato
/// @notice Allows InstaDapp DSA to enter and exit Gelato Network
/// @dev Check out https://github.com/gelatodigital/gelato-kyber#how-gelato-works for an explanation
/// @author gitpusha
contract ConnectGelato is ConnectorInterface, Stores {
using Address for address payable;
using SafeMath for uint256;
string constant public override name = "ConnectGelato-v1";
address public immutable connectGelatoAddress;
uint256 public immutable id;
address public immutable gelatoCore;
constructor(uint256 _id, address _gelatoCore) public payable {
connectGelatoAddress = address(this);
id = _id;
gelatoCore = _gelatoCore;
}
/// @dev needed for unproviding funds from GelatoCore
receive() external payable {
require(msg.sender == gelatoCore, "ConnectGelato.receive");
}
/// @dev _id must be InstaConnectors.connectorLength+1
function connectorID() public view override returns(uint _type, uint _id) {
(_type, _id) = (1, id);
}
modifier delegatecallOnly(string memory _tracingInfo) {
require(
connectGelatoAddress != address(this),
string(abi.encodePacked(_tracingInfo, ":delegatecallOnly"))
);
_;
}
// ===== Gelato ENTRY APIs ======
/**
* @dev Enables first time users to pre-fund eth, whitelist an executor & register the
* ProviderModuleDSA.sol to be able to use Gelato
* @param _executor address of single execot node or gelato'S decentralized execution market
* @param _taskSpecs enables external providers to whitelist TaskSpecs on gelato
* @param _modules address of ProviderModuleDSA
* @param _ethToDeposit amount of eth to deposit on Gelato, only for self-providers
*/
function multiProvide(
address _executor,
TaskSpec[] calldata _taskSpecs,
IGelatoProviderModule[] calldata _modules,
uint256 _ethToDeposit
)
public
payable
delegatecallOnly("ConnectGelato.multiProvide")
{
try IGelatoProviders(gelatoCore).multiProvide{value: _ethToDeposit}(
_executor,
_taskSpecs,
_modules
) {
} catch Error(string memory error) {
revert(string(abi.encodePacked("ConnectGelato.multiProvide:", error)));
} catch {
revert("ConnectGelato.multiProvide: unknown error");
}
}
/**
* @dev Submits a single, one-time task to Gelato
* @param _provider Consists of proxy module address (DSA) and provider address ()
* who will pay for the transaction execution
* @param _task Task specifying the condition and the action connectors
* @param _expiryDate Default 0, othweise timestamp after which the task expires
*/
function submitTask(
Provider calldata _provider,
Task calldata _task,
uint256 _expiryDate
)
public
delegatecallOnly("ConnectGelato.submitTask")
{
try IGelatoCore(gelatoCore).submitTask(_provider, _task, _expiryDate) {
} catch Error(string memory error) {
revert(string(abi.encodePacked("ConnectGelato.submitTask:", error)));
} catch {
revert("ConnectGelato.submitTask: unknown error");
}
}
/**
* @dev Submits single or mulitple Task Sequences to Gelato
* @param _provider Consists of proxy module address (DSA) and provider address ()
* who will pay for the transaction execution
* @param _tasks A sequence of Tasks, can be a single or multiples
* @param _expiryDate Default 0, othweise timestamp after which the task expires
* @param _cycles How often the Task List should be executed, e.g. 5 times
*/
function submitTaskCycle(
Provider calldata _provider,
Task[] memory _tasks,
uint256 _expiryDate,
uint256 _cycles
)
public
delegatecallOnly("ConnectGelato.submitTaskCycle")
{
try IGelatoCore(gelatoCore).submitTaskCycle(
_provider,
_tasks,
_expiryDate,
_cycles
) {
} catch Error(string memory error) {
revert(string(abi.encodePacked("ConnectGelato.submitTaskCycle:", error)));
} catch {
revert("ConnectGelato.submitTaskCycle: unknown error");
}
}
/**
* @dev Submits single or mulitple Task Chains to Gelato
* @param _provider Consists of proxy module address (DSA) and provider address ()
* who will pay for the transaction execution
* @param _tasks A sequence of Tasks, can be a single or multiples
* @param _expiryDate Default 0, othweise timestamp after which the task expires
* @param _sumOfRequestedTaskSubmits The TOTAL number of Task auto-submits
* that should have occured once the cycle is complete
*/
function submitTaskChain(
Provider calldata _provider,
Task[] memory _tasks,
uint256 _expiryDate,
uint256 _sumOfRequestedTaskSubmits
)
public
delegatecallOnly("ConnectGelato.submitTaskChain")
{
try IGelatoCore(gelatoCore).submitTaskChain(
_provider,
_tasks,
_expiryDate,
_sumOfRequestedTaskSubmits
) {
} catch Error(string memory error) {
revert(string(abi.encodePacked("ConnectGelato.submitTaskChain:", error)));
} catch {
revert("ConnectGelato.submitTaskChain: unknown error");
}
}
// ===== Gelato EXIT APIs ======
/**
* @dev Withdraws funds from Gelato, de-whitelists TaskSpecs and Provider Modules
* in one tx
* @param _withdrawAmount Amount of ETH to withdraw from Gelato
* @param _taskSpecs List of Task Specs to de-whitelist, default empty []
* @param _modules List of Provider Modules to de-whitelist, default empty []
*/
function multiUnprovide(
uint256 _withdrawAmount,
TaskSpec[] memory _taskSpecs,
IGelatoProviderModule[] memory _modules,
uint256 _setId
)
external
delegatecallOnly("ConnectGelato.multiUnprovide")
{
uint256 balanceBefore = address(this).balance;
try IGelatoProviders(gelatoCore).multiUnprovide(
_withdrawAmount,
_taskSpecs,
_modules
) {
setUint(_setId, address(this).balance.sub(balanceBefore));
} catch Error(string memory error) {
revert(string(abi.encodePacked("ConnectGelato.multiUnprovide:", error)));
} catch {
revert("ConnectGelato.multiUnprovide: unknown error");
}
}
/**
* @dev Cancels outstanding Tasks
* @param _taskReceipts List of Task Receipts to cancel
*/
function multiCancelTasks(TaskReceipt[] calldata _taskReceipts)
external
delegatecallOnly("ConnectGelato.multiCancelTasks")
{
try IGelatoCore(gelatoCore).multiCancelTasks(_taskReceipts) {
} catch Error(string memory error) {
revert(string(abi.encodePacked("ConnectGelato.multiCancelTasks:", error)));
} catch {
revert("ConnectGelato.multiCancelTasks: unknown error");
}
}
}

View File

@ -1,106 +0,0 @@
// "SPDX-License-Identifier: UNLICENSED"
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import {
GelatoProviderModuleStandard
} from "@gelatonetwork/core/contracts/provider_modules/GelatoProviderModuleStandard.sol";
import {Task} from "@gelatonetwork/core/contracts/gelato_core/interfaces/IGelatoCore.sol";
/// @dev InstaDapp Index
interface IndexInterface {
function connectors(uint version) external view returns (address);
function list() external view returns (address);
}
/// @dev InstaDapp List
interface ListInterface {
function accountID(address _account) external view returns (uint64);
}
/// @dev InstaDapp Connectors
interface ConnectorsInterface {
function isConnector(address[] calldata logicAddr) external view returns (bool);
function isStaticConnector(address[] calldata logicAddr) external view returns (bool);
}
/// @dev InstaDapp Defi Smart Account wallet
interface AccountInterface {
function version() external view returns (uint);
function isAuth(address user) external view returns (bool);
function shield() external view returns (bool);
function cast(address[] calldata _targets, bytes[] calldata _datas, address _origin)
external
payable
returns (bytes32[] memory responses);
}
contract ProviderModuleDSA is GelatoProviderModuleStandard {
IndexInterface public immutable index;
address public immutable gelatoCore;
constructor(IndexInterface _index, address _gelatoCore) public {
index = _index;
gelatoCore = _gelatoCore;
}
// ================= GELATO PROVIDER MODULE STANDARD ================
function isProvided(address _userProxy, address, Task calldata _task)
external
view
override
returns(string memory)
{
// Verify InstaDapp account identity
if (ListInterface(index.list()).accountID(_userProxy) == 0)
return "ProviderModuleDSA.isProvided:InvalidUserProxy";
// Is GelatoCore authorized
if (!AccountInterface(_userProxy).isAuth(gelatoCore))
return "ProviderModuleDSA.isProvided:GelatoCoreNotAuth";
// @dev commented out for gas savings
// // Is connector valid
// ConnectorsInterface connectors = ConnectorsInterface(index.connectors(
// AccountInterface(_userProxy).version()
// ));
// address[] memory targets = new address[](_task.actions.length);
// for (uint i = 0; i < _task.actions.length; i++)
// targets[i] = _task.actions[i].addr;
// bool isShield = AccountInterface(_userProxy).shield();
// if (isShield)
// if (!connectors.isStaticConnector(targets))
// return "ProviderModuleDSA.isProvided:not-static-connector";
// else
// if (!connectors.isConnector(targets))
// return "ProviderModuleDSA.isProvided:not-connector";
return OK;
}
/// @dev DS PROXY ONLY ALLOWS DELEGATE CALL for single actions, that's why we also use multisend
function execPayload(uint256, address, address, Task calldata _task, uint256)
external
view
override
returns(bytes memory payload, bool)
{
address[] memory targets = new address[](_task.actions.length);
for (uint i = 0; i < _task.actions.length; i++)
targets[i] = _task.actions[i].addr;
bytes[] memory datas = new bytes[](_task.actions.length);
for (uint i = 0; i < _task.actions.length; i++)
datas[i] = _task.actions[i].data;
payload = abi.encodeWithSelector(
AccountInterface.cast.selector,
targets,
datas,
gelatoCore
);
}
}

View File

@ -8,14 +8,14 @@
"scripts": {},
"devDependencies": {
"@gelatonetwork/core": "0.5.3",
"@nomiclabs/buidler": "1.4.3",
"@nomiclabs/buidler": "1.4.7",
"@nomiclabs/buidler-ethers": "2.0.0",
"@nomiclabs/buidler-ganache": "^1.3.3",
"@nomiclabs/buidler-waffle": "2.0.0",
"@nomiclabs/buidler-waffle": "2.1.0",
"chai": "^4.2.0",
"dotenv": "8.2.0",
"ethereum-waffle": "3.0.2",
"ethers": "5.0.8",
"ethereum-waffle": "3.1.0",
"ethers": "5.0.14",
"prettier": "2.0.5"
},
"dependencies": {}

View File

@ -0,0 +1,934 @@
[
{
"anonymous": false,
"inputs": [
{
"components": [
{ "internalType": "uint256", "name": "id", "type": "uint256" },
{ "internalType": "address", "name": "userProxy", "type": "address" },
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"internalType": "struct Provider",
"name": "provider",
"type": "tuple"
},
{ "internalType": "uint256", "name": "index", "type": "uint256" },
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "inst",
"type": "address"
},
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bool",
"name": "termsOkCheck",
"type": "bool"
}
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct Task[]",
"name": "tasks",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "expiryDate",
"type": "uint256"
},
{ "internalType": "uint256", "name": "cycleId", "type": "uint256" },
{
"internalType": "uint256",
"name": "submissionsLeft",
"type": "uint256"
}
],
"indexed": true,
"internalType": "struct TaskReceipt[]",
"name": "taskReceipt",
"type": "tuple[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "getId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "setId",
"type": "uint256"
}
],
"name": "LogMultiCancelTasks",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "executor",
"type": "address"
},
{
"components": [
{
"internalType": "address[]",
"name": "conditions",
"type": "address[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "gasPriceCeil",
"type": "uint256"
}
],
"indexed": true,
"internalType": "struct TaskSpec[]",
"name": "taskspecs",
"type": "tuple[]"
},
{
"indexed": true,
"internalType": "address[]",
"name": "modules",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "ethToDeposit",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "getId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "setId",
"type": "uint256"
}
],
"name": "LogMultiProvide",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "address[]",
"name": "conditions",
"type": "address[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "gasPriceCeil",
"type": "uint256"
}
],
"indexed": true,
"internalType": "struct TaskSpec[]",
"name": "taskspecs",
"type": "tuple[]"
},
{
"indexed": true,
"internalType": "address[]",
"name": "modules",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "ethToWithdraw",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "getId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "setId",
"type": "uint256"
}
],
"name": "LogMultiUnprovide",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"indexed": true,
"internalType": "struct Provider",
"name": "provider",
"type": "tuple"
},
{
"components": [
{
"components": [
{ "internalType": "address", "name": "inst", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"indexed": true,
"internalType": "struct Task",
"name": "task",
"type": "tuple"
},
{
"indexed": true,
"internalType": "uint256",
"name": "expiryDate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "getId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "setId",
"type": "uint256"
}
],
"name": "LogSubmitTask",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"indexed": true,
"internalType": "struct Provider",
"name": "provider",
"type": "tuple"
},
{
"components": [
{
"components": [
{ "internalType": "address", "name": "inst", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"indexed": true,
"internalType": "struct Task[]",
"name": "tasks",
"type": "tuple[]"
},
{
"indexed": true,
"internalType": "uint256",
"name": "expiryDate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "getId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "setId",
"type": "uint256"
}
],
"name": "LogSubmitTaskChain",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"indexed": true,
"internalType": "struct Provider",
"name": "provider",
"type": "tuple"
},
{
"components": [
{
"components": [
{ "internalType": "address", "name": "inst", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"indexed": true,
"internalType": "struct Task[]",
"name": "tasks",
"type": "tuple[]"
},
{
"indexed": true,
"internalType": "uint256",
"name": "expiryDate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "getId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "setId",
"type": "uint256"
}
],
"name": "LogSubmitTaskCycle",
"type": "event"
},
{
"inputs": [],
"name": "connectorID",
"outputs": [
{ "internalType": "uint256", "name": "_type", "type": "uint256" },
{ "internalType": "uint256", "name": "_id", "type": "uint256" }
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{ "internalType": "uint256", "name": "id", "type": "uint256" },
{ "internalType": "address", "name": "userProxy", "type": "address" },
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"internalType": "struct Provider",
"name": "provider",
"type": "tuple"
},
{ "internalType": "uint256", "name": "index", "type": "uint256" },
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "inst",
"type": "address"
},
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bool",
"name": "termsOkCheck",
"type": "bool"
}
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct Task[]",
"name": "tasks",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "expiryDate",
"type": "uint256"
},
{ "internalType": "uint256", "name": "cycleId", "type": "uint256" },
{
"internalType": "uint256",
"name": "submissionsLeft",
"type": "uint256"
}
],
"internalType": "struct TaskReceipt[]",
"name": "_taskReceipts",
"type": "tuple[]"
}
],
"name": "multiCancelTasks",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{ "internalType": "address", "name": "_executor", "type": "address" },
{
"components": [
{
"internalType": "address[]",
"name": "conditions",
"type": "address[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "gasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct TaskSpec[]",
"name": "_taskSpecs",
"type": "tuple[]"
},
{ "internalType": "address[]", "name": "_modules", "type": "address[]" },
{ "internalType": "uint256", "name": "_ethToDeposit", "type": "uint256" },
{ "internalType": "uint256", "name": "_getId", "type": "uint256" },
{ "internalType": "uint256", "name": "_setId", "type": "uint256" }
],
"name": "multiProvide",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_withdrawAmount",
"type": "uint256"
},
{
"components": [
{
"internalType": "address[]",
"name": "conditions",
"type": "address[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "gasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct TaskSpec[]",
"name": "_taskSpecs",
"type": "tuple[]"
},
{ "internalType": "address[]", "name": "_modules", "type": "address[]" },
{ "internalType": "uint256", "name": "_getId", "type": "uint256" },
{ "internalType": "uint256", "name": "_setId", "type": "uint256" }
],
"name": "multiUnprovide",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"internalType": "struct Provider",
"name": "_provider",
"type": "tuple"
},
{
"components": [
{
"components": [
{ "internalType": "address", "name": "inst", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct Task",
"name": "_task",
"type": "tuple"
},
{ "internalType": "uint256", "name": "_expiryDate", "type": "uint256" }
],
"name": "submitTask",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"internalType": "struct Provider",
"name": "_provider",
"type": "tuple"
},
{
"components": [
{
"components": [
{ "internalType": "address", "name": "inst", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct Task[]",
"name": "_tasks",
"type": "tuple[]"
},
{ "internalType": "uint256", "name": "_expiryDate", "type": "uint256" },
{
"internalType": "uint256",
"name": "_sumOfRequestedTaskSubmits",
"type": "uint256"
}
],
"name": "submitTaskChain",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "address", "name": "module", "type": "address" }
],
"internalType": "struct Provider",
"name": "_provider",
"type": "tuple"
},
{
"components": [
{
"components": [
{ "internalType": "address", "name": "inst", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct Task[]",
"name": "_tasks",
"type": "tuple[]"
},
{ "internalType": "uint256", "name": "_expiryDate", "type": "uint256" },
{ "internalType": "uint256", "name": "_cycles", "type": "uint256" }
],
"name": "submitTaskCycle",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
]

View File

@ -0,0 +1,168 @@
[
{
"inputs": [
{
"internalType": "contract IndexInterface",
"name": "_index",
"type": "address"
},
{ "internalType": "address", "name": "_gelatoCore", "type": "address" }
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{ "internalType": "uint256", "name": "", "type": "uint256" },
{ "internalType": "address", "name": "", "type": "address" },
{ "internalType": "address", "name": "", "type": "address" },
{
"components": [
{
"components": [
{
"internalType": "contract IGelatoCondition",
"name": "inst",
"type": "address"
},
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct Task",
"name": "_task",
"type": "tuple"
},
{ "internalType": "uint256", "name": "", "type": "uint256" }
],
"name": "execPayload",
"outputs": [
{ "internalType": "bytes", "name": "payload", "type": "bytes" },
{ "internalType": "bool", "name": "", "type": "bool" }
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
"name": "execRevertCheck",
"outputs": [],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "gelatoCore",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "index",
"outputs": [
{
"internalType": "contract IndexInterface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{ "internalType": "address", "name": "_userProxy", "type": "address" },
{ "internalType": "address", "name": "", "type": "address" },
{
"components": [
{
"components": [
{
"internalType": "contract IGelatoCondition",
"name": "inst",
"type": "address"
},
{ "internalType": "bytes", "name": "data", "type": "bytes" }
],
"internalType": "struct Condition[]",
"name": "conditions",
"type": "tuple[]"
},
{
"components": [
{ "internalType": "address", "name": "addr", "type": "address" },
{ "internalType": "bytes", "name": "data", "type": "bytes" },
{
"internalType": "enum Operation",
"name": "operation",
"type": "uint8"
},
{
"internalType": "enum DataFlow",
"name": "dataFlow",
"type": "uint8"
},
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "bool", "name": "termsOkCheck", "type": "bool" }
],
"internalType": "struct Action[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "selfProviderGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "selfProviderGasPriceCeil",
"type": "uint256"
}
],
"internalType": "struct Task",
"name": "",
"type": "tuple"
}
],
"name": "isProvided",
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
"stateMutability": "view",
"type": "function"
}
]

View File

@ -7,7 +7,6 @@ const GelatoCoreLib = require("@gelatonetwork/core");
const { sleep } = GelatoCoreLib;
// Constants
const INSTA_MASTER = "0xfCD22438AD6eD564a1C26151Df73F6B33B817B56";
const ETH = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
// Contracts
@ -17,6 +16,7 @@ const InstaConnectors = require("../pre-compiles/InstaConnectors.json");
const InstaAccount = require("../pre-compiles/InstaAccount.json");
const ConnectAuth = require("../pre-compiles/ConnectAuth.json");
const ConnectBasic = require("../pre-compiles/ConnectBasic.json");
const ProviderModuleDSA_ABI = require("../pre-compiles/ProviderModuleDSA_ABI.json");
describe("DSA setup with Gelato Tests", function () {
this.timeout(50000);
@ -29,7 +29,6 @@ describe("DSA setup with Gelato Tests", function () {
let userWallet;
let userAddress;
let dsaAddress;
let instaMaster;
// Deployed instances
let instaIndex;
@ -37,11 +36,10 @@ describe("DSA setup with Gelato Tests", function () {
let instaConnectors;
let instaAccount;
let gelatoCore;
let providerModuleDSA;
// Contracts to deploy and use for local testing
let dsa;
let providerModuleDSA;
let connectGelato;
// Other variables
let dsaVersion;
@ -51,7 +49,6 @@ describe("DSA setup with Gelato Tests", function () {
// Get Test Wallet for local testnet
[userWallet] = await ethers.getSigners();
userAddress = await userWallet.getAddress();
instaMaster = await ethers.provider.getSigner(INSTA_MASTER);
// ===== DSA LOCAL SETUP ==================
instaIndex = await ethers.getContractAt(
@ -91,25 +88,10 @@ describe("DSA setup with Gelato Tests", function () {
GelatoCoreLib.GelatoCore.abi,
bre.network.config.GelatoCore
);
// Deploy ConnectGelato to local testnet
// first query the correct connectorID
const connectorLength = await instaConnectors.connectorLength();
const connectorId = connectorLength.add(1);
const ConnectGelato = await ethers.getContractFactory("ConnectGelato");
connectGelato = await ConnectGelato.deploy(connectorId, gelatoCore.address);
await connectGelato.deployed();
// Deploy ProviderModuleDSA to local testnet
const ProviderModuleDSA = await ethers.getContractFactory(
"ProviderModuleDSA"
providerModuleDSA = await ethers.getContractAt(
ProviderModuleDSA_ABI,
bre.network.config.ProviderModuleDSA
);
providerModuleDSA = await ProviderModuleDSA.deploy(
instaIndex.address,
gelatoCore.address
);
await providerModuleDSA.deployed();
});
it("#1: Forks InstaDapp Mainnet config", async function () {
@ -195,25 +177,10 @@ describe("DSA setup with Gelato Tests", function () {
expect(await dsa.isAuth(gelatoCore.address)).to.be.true;
});
it("#5: Allows unlocked InstaDapp master to enable Gelato connector", async function () {
expect(await instaConnectors.isConnector([connectGelato.address])).to.be
.false;
// Send some ETH to the InstaMaster multi_sig
await userWallet.sendTransaction({
to: INSTA_MASTER,
value: ethers.utils.parseEther("0.1"),
});
// Enable ConnectGelato on InstaConnectors via InstaMaster multisig
await expect(
instaConnectors.connect(instaMaster).enable(connectGelato.address)
)
.to.emit(instaConnectors, "LogEnable")
.withArgs(connectGelato.address);
expect(await instaConnectors.isConnector([connectGelato.address])).to.be
.true;
it("#5: ConnectGelato is deployed and whitelisted on mainnet", async function () {
expect(
await instaConnectors.isConnector([bre.network.config.ConnectGelato])
).to.be.true;
});
it("#6: Gelato ProviderModuleDSA returns correct execPayload", async function () {

View File

@ -7,7 +7,6 @@ const GelatoCoreLib = require("@gelatonetwork/core");
const { sleep } = GelatoCoreLib;
// Constants
const INSTA_MASTER = "0xfCD22438AD6eD564a1C26151Df73F6B33B817B56";
const DAI_100 = ethers.utils.parseUnits("100", 18);
const APY_2_PERCENT_IN_SECONDS = ethers.BigNumber.from(
"1000000000627937192491029810"
@ -15,10 +14,10 @@ const APY_2_PERCENT_IN_SECONDS = ethers.BigNumber.from(
// Contracts
const InstaIndex = require("../pre-compiles/InstaIndex.json");
const InstaConnectors = require("../pre-compiles/InstaConnectors.json");
const InstaList = require("../pre-compiles/InstaList.json");
const InstaAccount = require("../pre-compiles/InstaAccount.json");
const ConnectAuth = require("../pre-compiles/ConnectAuth.json");
const ConnectGelato_ABI = require("../pre-compiles/ConnectGelato_ABI.json");
const ConnectMaker = require("../pre-compiles/ConnectMaker.json");
const ConnectCompound = require("../pre-compiles/ConnectCompound.json");
const IERC20 = require("../pre-compiles/IERC20.json");
@ -47,13 +46,11 @@ describe("Move DAI lending from DSR to Compound", function () {
let mockDSR;
let mockCDAI;
let conditionCompareUints;
let connectGelato;
before(async function () {
// Get Test Wallet for local testnet
[userWallet] = await ethers.getSigners();
userAddress = await userWallet.getAddress();
const instaMaster = await ethers.provider.getSigner(INSTA_MASTER);
// Ganache default accounts prefilled with 100 ETH
expect(await userWallet.getBalance()).to.be.gt(
@ -69,10 +66,6 @@ describe("Move DAI lending from DSR to Compound", function () {
InstaList.abi,
bre.network.config.InstaList
);
const instaConnectors = await ethers.getContractAt(
InstaConnectors.abi,
bre.network.config.InstaConnectors
);
connectMaker = await ethers.getContractAt(
ConnectMaker.abi,
bre.network.config.ConnectMaker
@ -114,36 +107,6 @@ describe("Move DAI lending from DSR to Compound", function () {
);
expect(await dsa.isAuth(gelatoCore.address)).to.be.true;
// Deploy ConnectGelato to local testnet
// first query the correct connectorID
const connectorLength = await instaConnectors.connectorLength();
const connectorId = connectorLength.add(1);
const ConnectGelato = await ethers.getContractFactory("ConnectGelato");
connectGelato = await ConnectGelato.deploy(connectorId, gelatoCore.address);
await connectGelato.deployed();
// Enable ConnectGelato on InstaConnectors via InstaMaster multisig
// Send some ETH to the InstaMaster multi_sig
await userWallet.sendTransaction({
to: INSTA_MASTER,
value: ethers.utils.parseEther("0.1"),
});
await instaConnectors.connect(instaMaster).enable(connectGelato.address);
expect(
await instaConnectors.isConnector([connectGelato.address])
).to.be.true;
// Deploy ProviderModuleDSA to local testnet
const ProviderModuleDSA = await ethers.getContractFactory(
"ProviderModuleDSA"
);
providerModuleDSA = await ProviderModuleDSA.deploy(
instaIndex.address,
gelatoCore.address
);
await providerModuleDSA.deployed();
// Deploy Mocks for Testing
const MockCDAI = await ethers.getContractFactory("MockCDAI");
mockCDAI = await MockCDAI.deploy(APY_2_PERCENT_IN_SECONDS);
@ -277,7 +240,7 @@ describe("Move DAI lending from DSR to Compound", function () {
// protocol. Check out ./contracts/ProviderModuleDSA.sol to see what it does.
const gelatoSelfProvider = new GelatoCoreLib.GelatoProvider({
addr: dsa.address,
module: providerModuleDSA.address,
module: bre.network.config.ProviderModuleDSA,
});
// ======= Executor Setup =========
@ -300,16 +263,18 @@ describe("Move DAI lending from DSR to Compound", function () {
GAS_PRICE_CEIL
);
await dsa.cast(
[connectGelato.address], // targets
[bre.network.config.ConnectGelato], // targets
[
await bre.run("abi-encode-withselector", {
abi: require("../artifacts/ConnectGelato.json").abi,
abi: ConnectGelato_ABI,
functionname: "multiProvide",
inputs: [
userAddress,
[],
[providerModuleDSA.address],
[bre.network.config.ProviderModuleDSA],
TASK_AUTOMATION_FUNDS,
0, // _getId
0, // _setId
],
}),
], // datas
@ -329,7 +294,10 @@ describe("Move DAI lending from DSR to Compound", function () {
userAddress
);
expect(
await gelatoCore.isModuleProvided(dsa.address, providerModuleDSA.address)
await gelatoCore.isModuleProvided(
dsa.address,
bre.network.config.ProviderModuleDSA
)
).to.be.true;
// ======= 📣 TASK SUBMISSION 📣 =========
@ -338,10 +306,10 @@ describe("Move DAI lending from DSR to Compound", function () {
const expiryDate = 0;
await expect(
dsa.cast(
[connectGelato.address], // targets
[bre.network.config.ConnectGelato], // targets
[
await bre.run("abi-encode-withselector", {
abi: require("../artifacts/ConnectGelato.json").abi,
abi: ConnectGelato_ABI,
functionname: "submitTask",
inputs: [
gelatoSelfProvider,

558
yarn.lock
View File

@ -18,18 +18,18 @@
resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89"
integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==
"@ethereum-waffle/chai@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.0.2.tgz#5492398abbf2b64ec2524deac78777ee62d02d08"
integrity sha512-aXE6KqHmCX0aaSGqeaZP0EvhPou4Ii9g/x7u0oIuj7sYchDk09/TTeuMdFs4EKgdTc7nUpQSdpJ6GuO7pLoNbA==
"@ethereum-waffle/chai@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.1.0.tgz#af88fb2167826f0581bb67ab71d41250a5f83cf6"
integrity sha512-erBoZoseFXZPEEbv9GHqJKjGAG4u1m/NzTRvXUGFDngdZYsBzMDTVU63vIrGVlVu3Cu7Wd5KfdhYib+/iH2xcQ==
dependencies:
"@ethereum-waffle/provider" "^3.0.2"
"@ethereum-waffle/provider" "^3.1.0"
ethers "^5.0.0"
"@ethereum-waffle/compiler@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.0.2.tgz#26dd7e63369e3c2ba458d6a26c43afe98e1e200e"
integrity sha512-PV6vtaX9szv4aFd5lXqGgfEbWFOkk2975AUDYHZQERWd9e4oerb1FNjQeXBDlYUjBX2UQ1tLlQFkqud2jcBYBg==
"@ethereum-waffle/compiler@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.1.0.tgz#088a3780807fd7614638da805ee1c3081bb3e7c6"
integrity sha512-qFwy9OHbbvltns4tz12mpbSryg8rCpATsdjM+PtSSXSJ7s04fcDlKWJgFERE3jsxE7GMGH8mfr4e7Jqncxxh7w==
dependencies:
"@resolver-engine/imports" "^0.3.3"
"@resolver-engine/imports-fs" "^0.3.3"
@ -40,31 +40,33 @@
node-fetch "^2.6.0"
solc "^0.6.3"
"@ethereum-waffle/ens@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.0.2.tgz#0ace2f5efbcba79a763697830bf16260c0bd7460"
integrity sha512-XkOVIbUvMt5hl6ZHgceqI7smWUercCV0LQtUjXgXPTUfONsB6JSPqAE2H6cc4sXqn82Q3cPThderLvT5QNTyRA==
"@ethereum-waffle/ens@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.1.0.tgz#d2d1173b7aad351360479a4dbe2626e9b960ba72"
integrity sha512-Q0/MUBJQsiPseZv0Sv/GFOVdWGn0wRChWtUd30r94qlcM7OqmXLdx4YQSMGu7BhRPdp2DQE2CYMFTKjiznfRkA==
dependencies:
"@ensdomains/ens" "^0.4.4"
"@ensdomains/resolver" "^0.2.4"
ethers "^5.0.1"
"@ethereum-waffle/mock-contract@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.0.2.tgz#ba0ecdd872c1eedb75a223c20d3afbea32d843f6"
integrity sha512-a3THe64cR24TxgwU2Tmk8uwZDWGv9QCKUpEhKVVArxRIF800AKMZfhIF61liXMkSVQDgivtYsayNniYxM8M11Q==
"@ethereum-waffle/mock-contract@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.1.0.tgz#64a6f8ba4e18b9b22305f0ef9e673848e1fb2c6a"
integrity sha512-mhvyb9P5aM7D2qHmaAH2ONbR95L7pVveRR9s7zfcxYdzJP0KCjy2IZfPmhOZDe/lW1tXuM3m/OL+oHfKTRYbdw==
dependencies:
"@ethersproject/abi" "^5.0.1"
ethers "^5.0.1"
"@ethereum-waffle/provider@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.0.2.tgz#2416237ca97c1f7d8dfca990fe85c9f27d921f4d"
integrity sha512-jIbaW4mSBZmzIRUxBSuutwucdxXWOp5e3m16ds6PRnMBNd8civ9LwPM6RqwxC8pNTq/APMf6bFqLJo4UVW3PIg==
"@ethereum-waffle/provider@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.1.0.tgz#f8f668501db163b99d6c653083faa07eb28b5324"
integrity sha512-MPlmtYWVEjObSrneZQKHprRe00Da768IdT1+hyWq5x6uXluYdqo5hZc9LVNTd2f9WfHasZ8YWZLUC/wsEb86ig==
dependencies:
"@ethereum-waffle/ens" "^3.0.2"
"@ethereum-waffle/ens" "^3.1.0"
ethers "^5.0.1"
ganache-core "^2.10.2"
patch-package "^6.2.2"
postinstall-postinstall "^2.1.0"
"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.1":
version "5.0.2"
@ -81,6 +83,21 @@
"@ethersproject/properties" "^5.0.0"
"@ethersproject/strings" "^5.0.0"
"@ethersproject/abi@^5.0.5":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.5.tgz#6e7bbf9d014791334233ba18da85331327354aa1"
integrity sha512-FNx6UMm0LnmCMFzN3urohFwZpjbUHPvc/O60h4qkF4yiJxLJ/G7QOSPjkHQ/q/QibagR4S7OKQawRy0NcvWa9w==
dependencies:
"@ethersproject/address" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/hash" "^5.0.4"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/abstract-provider@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.2.tgz#9b4e8f4870f0691463e8d5b092c95dd5275c635d"
@ -94,6 +111,19 @@
"@ethersproject/transactions" "^5.0.0"
"@ethersproject/web" "^5.0.0"
"@ethersproject/abstract-provider@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.4.tgz#ef12df8cb5e66d0d47b567ad6ed642d682043773"
integrity sha512-EOCHUTS8jOE3WZlA1pq9b/vQwKDyDzMy4gXeAv0wZecH1kwUkD0++x8avxeSYoWI+aJn62P1FVV9B6r9pM56kQ==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/networks" "^5.0.3"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/web" "^5.0.6"
"@ethersproject/abstract-signer@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.2.tgz#5776f888fda816de1d08ddb0e74778ecb9590f69"
@ -105,6 +135,17 @@
"@ethersproject/logger" "^5.0.0"
"@ethersproject/properties" "^5.0.0"
"@ethersproject/abstract-signer@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.5.tgz#d1cdea6b0b82fb8e4a83f6899ba84d3dc3bb6e66"
integrity sha512-nwSZKtCTKhJADlW42c+a//lWxQlnA7jYLTnabJ3YCfgGU6ic9jnT9nRDlAyT1U3kCMeqPL7fTcKbdWCVrM0xsw==
dependencies:
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/address@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.2.tgz#80d0ddfb7d4bd0d32657747fa4bdd2defef2e00a"
@ -117,6 +158,18 @@
"@ethersproject/rlp" "^5.0.0"
bn.js "^4.4.0"
"@ethersproject/address@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.4.tgz#8669bcbd02f4b64f4cede0a10e84df6d964ec9d3"
integrity sha512-CIjAeG6zNehbpJTi0sgwUvaH2ZICiAV9XkCBaFy5tjuEVFpQNeqd6f+B7RowcNO7Eut+QbhcQ5CVLkmP5zhL9A==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/rlp" "^5.0.3"
bn.js "^4.4.0"
"@ethersproject/base64@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.2.tgz#48b3bb8d640a963bd8ee196cfeacd592155a0ca8"
@ -124,6 +177,13 @@
dependencies:
"@ethersproject/bytes" "^5.0.0"
"@ethersproject/base64@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.3.tgz#d0aaa32c9ab08e2d62a6238581607ab6e929297e"
integrity sha512-sFq+/UwGCQsLxMvp7yO7yGWni87QXoV3C3IfjqUSY2BHkbZbCDm+PxZviUkiKf+edYZ2Glp0XnY7CgKSYUN9qw==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/basex@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.2.tgz#13029ce0ad63674f4d4dbebf6763181fb22f0e6d"
@ -132,6 +192,14 @@
"@ethersproject/bytes" "^5.0.0"
"@ethersproject/properties" "^5.0.0"
"@ethersproject/basex@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.3.tgz#f8c9bc449a089131f52cfa8698cf77bc22e27e32"
integrity sha512-EvoER+OXsMAZlvbC0M/9UTxjvbBvTccYCI+uCAhXw+eS1+SUdD4v7ekAFpVX78rPLrLZB1vChKMm6vPHIu3WRA==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/bignumber@^5.0.0":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.5.tgz#31bd7e75aad46ace345fae69b1f5bb120906af1b"
@ -141,6 +209,15 @@
"@ethersproject/logger" "^5.0.0"
bn.js "^4.4.0"
"@ethersproject/bignumber@^5.0.7":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.7.tgz#720b3e3df3e125a99669ee869478106d0afe7b76"
integrity sha512-wwKgDJ+KA7IpgJwc8Fc0AjKIRuDskKA2cque29/+SgII9/1K/38JpqVNPKIovkLwTC2DDofIyzHcxeaKpMFouQ==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
bn.js "^4.4.0"
"@ethersproject/bytes@^5.0.0":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.3.tgz#b3769963ae0188a35713d343890a903bda20af9c"
@ -148,6 +225,13 @@
dependencies:
"@ethersproject/logger" "^5.0.0"
"@ethersproject/bytes@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.4.tgz#328d9d929a3e970964ecf5d62e12568a187189f1"
integrity sha512-9R6A6l9JN8x1U4s1dJCR+9h3MZTT3xQofr/Xx8wbDvj6NnY4CbBB0o8ZgHXvR74yV90pY2EzCekpkMBJnRzkSw==
dependencies:
"@ethersproject/logger" "^5.0.5"
"@ethersproject/constants@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.2.tgz#f7ac0b320e2bbec1a5950da075015f8bc4e8fed1"
@ -155,6 +239,13 @@
dependencies:
"@ethersproject/bignumber" "^5.0.0"
"@ethersproject/constants@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.4.tgz#9ddaa5f3c738a94e5adc4b3f71b36206fa5cdf88"
integrity sha512-Df32lcXDHPgZRPgp1dgmByNbNe4Ki1QoXR+wU61on5nggQGTqWR1Bb7pp9VtI5Go9kyE/JflFc4Te6o9MvYt8A==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/contracts@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.2.tgz#f19ed8335ceeb6abb60f5d45641f0a2a62b6fbc5"
@ -170,6 +261,21 @@
"@ethersproject/logger" "^5.0.0"
"@ethersproject/properties" "^5.0.0"
"@ethersproject/contracts@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.4.tgz#27a2d7e3a7eef9bd8d006824ac2a74157b523988"
integrity sha512-gfOZNgLiO9e1D/hmQ4sEyqoolw6jDFVfqirGJv3zyFKNyX+lAXLN7YAZnnWVmp4GU1jiMtSqQKjpWp7r6ihs3Q==
dependencies:
"@ethersproject/abi" "^5.0.5"
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/address" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/hash@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.2.tgz#6d69558786961836d530b8b4a8714eac5388aec7"
@ -180,6 +286,16 @@
"@ethersproject/logger" "^5.0.0"
"@ethersproject/strings" "^5.0.0"
"@ethersproject/hash@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.4.tgz#385642786405d236f3d2f1acdfaf250ab519cdac"
integrity sha512-VCs/bFBU8AQFhHcT1cQH6x7a4zjulR6fJmAOcPxUgrN7bxOQ7QkpBKF+YCDJhFtkLdaljIsr/r831TuWU4Ysfg==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/hdnode@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.2.tgz#c4f2152590a64822d0c0feb90f09cc247af657e0"
@ -198,6 +314,24 @@
"@ethersproject/transactions" "^5.0.0"
"@ethersproject/wordlists" "^5.0.0"
"@ethersproject/hdnode@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.4.tgz#9c07a87781b24b9cae3507fe9404361c5870f1b7"
integrity sha512-eHmpNLvasfB4xbmQUvKXOsGF4ekjIKJH/eZm7fc6nIdMci9u5ERooSSRLjs9Dsa5QuJf6YD4DbqeJsT71n47iw==
dependencies:
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/basex" "^5.0.3"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/pbkdf2" "^5.0.3"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/signing-key" "^5.0.4"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/wordlists" "^5.0.4"
"@ethersproject/json-wallets@^5.0.0":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.4.tgz#e09bf2d34279c6dd2b4a4d4c44db65471bacc68b"
@ -217,6 +351,25 @@
aes-js "3.0.0"
scrypt-js "3.0.1"
"@ethersproject/json-wallets@^5.0.6":
version "5.0.6"
resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.6.tgz#c6c1818dcab18ecf3f37fa59ca504b9bc162d559"
integrity sha512-BPCfyGdwOUSp6+xA59IaZ/2pUWrUOL5Z9HuCh8YLsJzkuyBJQN0j+z/PmhIiZ7X8ilhuE+pRUwXb42U/R39fig==
dependencies:
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/address" "^5.0.4"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/hdnode" "^5.0.4"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/pbkdf2" "^5.0.3"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/random" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/transactions" "^5.0.5"
aes-js "3.0.0"
scrypt-js "3.0.1"
"@ethersproject/keccak256@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.2.tgz#7ed4a95bb45ee502cf4532223833740a83602797"
@ -225,11 +378,24 @@
"@ethersproject/bytes" "^5.0.0"
js-sha3 "0.5.7"
"@ethersproject/keccak256@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.3.tgz#f094a8fca3bb913c044593c4f382be424292e588"
integrity sha512-VhW3mgZMBZlETV6AyOmjNeNG+Pg68igiKkPpat8/FZl0CKnfgQ+KZQZ/ee1vT+X0IUM8/djqnei6btmtbA27Ug==
dependencies:
"@ethersproject/bytes" "^5.0.4"
js-sha3 "0.5.7"
"@ethersproject/logger@^5.0.0":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.4.tgz#09fa4765b5691233e3afb6617cb38a700f9dd2e4"
integrity sha512-alA2LiAy1LdQ/L1SA9ajUC7MvGAEQLsICEfKK4erX5qhkXE1LwLSPIzobtOWFsMHf2yrXGKBLnnpuVHprI3sAw==
"@ethersproject/logger@^5.0.5":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.5.tgz#e3ba3d0bcf9f5be4da5f043b1e328eb98b80002f"
integrity sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w==
"@ethersproject/networks@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.2.tgz#a49e82cf071e3618e87e3c5d69fdbcf54dc6766c"
@ -237,6 +403,13 @@
dependencies:
"@ethersproject/logger" "^5.0.0"
"@ethersproject/networks@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.3.tgz#c4ebe56e79ca399247382627e50a022aa68ece55"
integrity sha512-Gjpejul6XFetJXyvHCd37IiCC00203kYGU9sMaRMZcAcYKszCkbOeo/Q7Mmdr/fS7YBbB5iTOahDJWiRLu/b7A==
dependencies:
"@ethersproject/logger" "^5.0.5"
"@ethersproject/pbkdf2@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.2.tgz#d12c5f434bbdf6f52401eddb7d753a713dd9e4ea"
@ -245,6 +418,14 @@
"@ethersproject/bytes" "^5.0.0"
"@ethersproject/sha2" "^5.0.0"
"@ethersproject/pbkdf2@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.3.tgz#f9eca284a458cd11179d407884c595412d8d2775"
integrity sha512-asc+YgJn7v7GKWYXGz3GM1d9XYI2HvdCw1cLEow2niEC9BfYA29rr1exz100zISk95GIU1YP2zV//zHsMtWE5Q==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/properties@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.2.tgz#2facb62d2f2d968c7b3d0befa5bcc884cc565d3b"
@ -252,6 +433,13 @@
dependencies:
"@ethersproject/logger" "^5.0.0"
"@ethersproject/properties@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.3.tgz#991aef39a5f87d4645cee76cec4df868bfb08be6"
integrity sha512-wLCSrbywkQgTO6tIF9ZdKsH9AIxPEqAJF/z5xcPkz1DK4mMAZgAXRNw1MrKYhyb+7CqNHbj3vxenNKFavGY/IA==
dependencies:
"@ethersproject/logger" "^5.0.5"
"@ethersproject/providers@^5.0.0":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.5.tgz#fa28498ce9683d1d99f6cb11e1a7fe8d4886e0ce"
@ -274,6 +462,31 @@
"@ethersproject/web" "^5.0.0"
ws "7.2.3"
"@ethersproject/providers@^5.0.8":
version "5.0.9"
resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.9.tgz#88b48596dcfb0848a89da3160d2e2a055fc899f6"
integrity sha512-UtGrlJxekFNV7lriPOxQbnYminyiwTgjHMPX83pG7N/W/t+PekQK8V9rdlvMr2bRyGgafHml0ZZMaTV4FxiBYg==
dependencies:
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/address" "^5.0.4"
"@ethersproject/basex" "^5.0.3"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/hash" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/networks" "^5.0.3"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/random" "^5.0.3"
"@ethersproject/rlp" "^5.0.3"
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/web" "^5.0.6"
bech32 "1.1.4"
ws "7.2.3"
"@ethersproject/random@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.2.tgz#bb58aca69a85e8de506686117f050d03dac69023"
@ -282,6 +495,14 @@
"@ethersproject/bytes" "^5.0.0"
"@ethersproject/logger" "^5.0.0"
"@ethersproject/random@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.3.tgz#ec16546fffdc10b9082f1207bd3a09f54cbcf5e6"
integrity sha512-pEhWRbgNeAY1oYk4nIsEtCTh9TtLsivIDbOX11n+DLZLYM3c8qCLxThXtsHwVsMs1JHClZr5auYC4YxtVVzO/A==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/rlp@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.2.tgz#d6b550a2ac5e484f15f0f63337e522004d2e78cd"
@ -290,6 +511,14 @@
"@ethersproject/bytes" "^5.0.0"
"@ethersproject/logger" "^5.0.0"
"@ethersproject/rlp@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.3.tgz#841a5edfdf725f92155fe74424f5510c9043c13a"
integrity sha512-Hz4yyA/ilGafASAqtTlLWkA/YqwhQmhbDAq2LSIp1AJNx+wtbKWFAKSckpeZ+WG/xZmT+fw5OFKK7a5IZ4DR5g==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/sha2@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.2.tgz#baefc78c071be8729b180759eb29267129314252"
@ -299,6 +528,15 @@
"@ethersproject/logger" "^5.0.0"
hash.js "1.1.3"
"@ethersproject/sha2@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.3.tgz#52c16edc1135d0ec7d242d88eed035dae72800c0"
integrity sha512-B1U9UkgxhUlC1J4sFUL2GwTo33bM2i/aaD3aiYdTh1FEXtGfqYA89KN1DJ83n+Em8iuvyiBRk6u30VmgqlHeHA==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
hash.js "1.1.3"
"@ethersproject/signing-key@^5.0.0":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.3.tgz#adb84360e147bfd336cb2fe114100120732dc10a"
@ -309,6 +547,16 @@
"@ethersproject/properties" "^5.0.0"
elliptic "6.5.3"
"@ethersproject/signing-key@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.4.tgz#a5334ce8a52d4e9736dc8fb6ecc384704ecf8783"
integrity sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
elliptic "6.5.3"
"@ethersproject/solidity@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.2.tgz#431cee341ec51e022bd897b93fef04521f414756"
@ -320,6 +568,17 @@
"@ethersproject/sha2" "^5.0.0"
"@ethersproject/strings" "^5.0.0"
"@ethersproject/solidity@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.4.tgz#67022cbfb50cb73b72d1739178537a9e798945bf"
integrity sha512-cUq1l8A+AgRkIItRoztC98Qx7b0bMNMzKX817fszDuGNsT2POAyP5knvuEt4Fx4IBcJREXoOjsGYFfjyK5Sa+w==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/strings@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.2.tgz#1753408c3c889813fd0992abd76393e3e47a2619"
@ -329,6 +588,15 @@
"@ethersproject/constants" "^5.0.0"
"@ethersproject/logger" "^5.0.0"
"@ethersproject/strings@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.4.tgz#67cda604eee3ffcc004cb9f3bd03516e1c7b09a0"
integrity sha512-azXFHaNkDXzefhr4LVVzzDMFwj3kH9EOKlATu51HjxabQafuUyVLPFgmxRFmCynnAi0Bmmp7nr+qK1pVDgRDLQ==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/transactions@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.2.tgz#590ede71fc87b45be7bd46002e18ae52246a2347"
@ -344,6 +612,21 @@
"@ethersproject/rlp" "^5.0.0"
"@ethersproject/signing-key" "^5.0.0"
"@ethersproject/transactions@^5.0.5":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.5.tgz#9a966f9ef4817b1752265d4efee0f1e9fd6aeaad"
integrity sha512-1Ga/QmbcB74DItggP8/DK1tggu4ErEvwTkIwIlUXUcvIAuRNXXE7kgQhlp+w1xA/SAQFhv56SqCoyqPiiLCvVA==
dependencies:
"@ethersproject/address" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/rlp" "^5.0.3"
"@ethersproject/signing-key" "^5.0.4"
"@ethersproject/units@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.2.tgz#de1461ff3ad2587e57bf367d056b6b72cfceda78"
@ -353,6 +636,15 @@
"@ethersproject/constants" "^5.0.0"
"@ethersproject/logger" "^5.0.0"
"@ethersproject/units@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.4.tgz#e08876b54e1f6b362a841dcd986496a425875735"
integrity sha512-80d6skjDgiHLdbKOA9FVpzyMEPwbif40PbGd970JvcecVf48VjB09fUu37d6duG8DhRVyefRdX8nuVQLzcGGPw==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/wallet@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.2.tgz#714ca8324c1b3b66e51b9b4e0358c882e88caf1d"
@ -374,6 +666,27 @@
"@ethersproject/transactions" "^5.0.0"
"@ethersproject/wordlists" "^5.0.0"
"@ethersproject/wallet@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.4.tgz#b414ae2870fc0ea10808330f0ab3c5a1ac9e34e1"
integrity sha512-h/3mdy6HZVketHbs6ZP/WjHDz+rtTIE3qZrko2MVeafjgDcYWaHcVmhsPq4LGqxginhr191a4dkJDNeQrQZWOw==
dependencies:
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/address" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/hash" "^5.0.4"
"@ethersproject/hdnode" "^5.0.4"
"@ethersproject/json-wallets" "^5.0.6"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/random" "^5.0.3"
"@ethersproject/signing-key" "^5.0.4"
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/wordlists" "^5.0.4"
"@ethersproject/web@^5.0.0":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.3.tgz#f5673923009bb855302f0296ddb932da8e42f0a1"
@ -385,6 +698,17 @@
"@ethersproject/properties" "^5.0.0"
"@ethersproject/strings" "^5.0.0"
"@ethersproject/web@^5.0.6":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.7.tgz#ab8ccffa9cee9469a8b49af8b8fee30e384e59d8"
integrity sha512-BM8FdGrzdcULYaOIyMXDKvxv+qOwGne8FKpPxUrifZIWAWPrq/y+oBOZlzadIKsP3wvYbAcMN2CgOLO1E3yIfw==
dependencies:
"@ethersproject/base64" "^5.0.3"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/wordlists@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.2.tgz#eded47314509c8608373fc2b22879ee2b71b7c7c"
@ -396,6 +720,17 @@
"@ethersproject/properties" "^5.0.0"
"@ethersproject/strings" "^5.0.0"
"@ethersproject/wordlists@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.4.tgz#76a7e1dfd95aea645f6be2c1932b3f89b7f0c4ce"
integrity sha512-z/NsGqdYFvpeG6vPLxuD0pYNR5lLhQAy+oLVqg6G0o1c/OoL5J/a0iDOAFvnacQphc3lMP52d1LEX3YGoy2oBQ==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/hash" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@gelatonetwork/core@0.5.3":
version "0.5.3"
resolved "https://registry.yarnpkg.com/@gelatonetwork/core/-/core-0.5.3.tgz#8193c25cc4a91aca08c4cdb4d6fc38459902065d"
@ -416,18 +751,18 @@
ts-essentials "^2.0.7"
ts-interface-checker "^0.1.9"
"@nomiclabs/buidler-waffle@2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@nomiclabs/buidler-waffle/-/buidler-waffle-2.0.0.tgz#425dd952898e63494b696f9556896975603684ff"
integrity sha512-slGUjMmooIFehk1EMz+gSD07x6RVhp9aEHCmjk5MDm9FuV0+1IhPrk0DDl9ZKYlb5dgTRSWOqzIOXLXhnjmt0A==
"@nomiclabs/buidler-waffle@2.1.0":
version "2.1.0"
resolved "https://registry.yarnpkg.com/@nomiclabs/buidler-waffle/-/buidler-waffle-2.1.0.tgz#9869ac829162eb57ac4e4096f0a02bd7ef54a71a"
integrity sha512-Z1SJOGrRCcSu9E87mFaBHi4QimNxP9ZTYtJwLZCcyszS1fi0XLgp4syzTH3QXrQUBOP2P5oQMD6uCp0gNNS3hw==
dependencies:
"@types/sinon-chai" "^3.2.3"
"@types/web3" "1.0.19"
"@nomiclabs/buidler@1.4.3":
version "1.4.3"
resolved "https://registry.yarnpkg.com/@nomiclabs/buidler/-/buidler-1.4.3.tgz#4ac50d82830bd660fbd3b25ffd08e1d649da172e"
integrity sha512-EcUurzBFN9yJxoAzeKW+72NCyWa2WIe1pC0AOIapoUsIhElFy8OpIKERK28EWB2yuQlIxhI98hg5ieAWVg3qJw==
"@nomiclabs/buidler@1.4.7":
version "1.4.7"
resolved "https://registry.yarnpkg.com/@nomiclabs/buidler/-/buidler-1.4.7.tgz#88436ba53e0e830d37c16601df59da4dbffde524"
integrity sha512-TyJKwKyKwu82uYPneqLf5HKFr96QX7cHDT7O7Ro93zmk1b84+EH9tn3zNIO/+96DMGISp8cCRwZhct89OwblRA==
dependencies:
"@nomiclabs/ethereumjs-vm" "^4.1.1"
"@sentry/node" "^5.18.1"
@ -443,6 +778,7 @@
deepmerge "^2.1.0"
download "^7.1.0"
enquirer "^2.3.0"
env-paths "^2.2.0"
eth-sig-util "^2.5.2"
ethereum-cryptography "^0.1.2"
ethereumjs-abi "^0.6.8"
@ -751,6 +1087,11 @@
typedarray-to-buffer "^3.1.5"
yaeti "^0.0.6"
"@yarnpkg/lockfile@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
abort-controller@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
@ -1687,6 +2028,11 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
bech32@1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
bignumber.js@*:
version "9.0.0"
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075"
@ -2430,6 +2776,17 @@ cross-fetch@^2.1.0, cross-fetch@^2.1.1:
node-fetch "2.1.2"
whatwg-fetch "2.0.4"
cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
nice-try "^1.0.4"
path-key "^2.0.1"
semver "^5.5.0"
shebang-command "^1.2.0"
which "^1.2.9"
crypto-browserify@3.12.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@ -2842,6 +3199,11 @@ enquirer@^2.3.0:
dependencies:
ansi-colors "^4.1.1"
env-paths@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
errno@~0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
@ -3127,15 +3489,15 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3:
secp256k1 "^4.0.1"
setimmediate "^1.0.5"
ethereum-waffle@3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.0.2.tgz#3d68f04e61dd01d67633e3c93ed15810b7743b88"
integrity sha512-VJQTL9oBbHIQRxQFuh1NBXoFXSlTIY6DrkPpO7CvevXRI9ixxq01nSc6hPYUIVy7s+U03sp4ply497O6mD3gsQ==
ethereum-waffle@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.1.0.tgz#ae6a006fd859c97694e9c7248aa8c7623113b932"
integrity sha512-QSEzYhxBAjJAgVXZcR1lMB4Px1lAtf8M3QQPIflasNwHpw/VZWaYqN4o2fl615iPtOc3FFtMu1JSEbiuYojk/w==
dependencies:
"@ethereum-waffle/chai" "^3.0.2"
"@ethereum-waffle/compiler" "^3.0.2"
"@ethereum-waffle/mock-contract" "^3.0.2"
"@ethereum-waffle/provider" "^3.0.2"
"@ethereum-waffle/chai" "^3.1.0"
"@ethereum-waffle/compiler" "^3.1.0"
"@ethereum-waffle/mock-contract" "^3.1.0"
"@ethereum-waffle/provider" "^3.1.0"
ethers "^5.0.1"
ethereumjs-abi@0.6.5:
@ -3382,7 +3744,43 @@ ethers@4.0.0-beta.3:
uuid "2.0.1"
xmlhttprequest "1.8.0"
ethers@5.0.8, ethers@^5.0.0, ethers@^5.0.1:
ethers@5.0.14:
version "5.0.14"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.14.tgz#fc33613ff3c1eb04c481f32083f2be315079e2a2"
integrity sha512-6WkoYwAURTr/4JiSZlrMJ9mm3pBv/bWrOu7sVXdLGw9QU4cp/GDZVrKKnh5GafMTzanuNBJoaEanPCjsbe4Mig==
dependencies:
"@ethersproject/abi" "^5.0.5"
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/address" "^5.0.4"
"@ethersproject/base64" "^5.0.3"
"@ethersproject/basex" "^5.0.3"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/contracts" "^5.0.4"
"@ethersproject/hash" "^5.0.4"
"@ethersproject/hdnode" "^5.0.4"
"@ethersproject/json-wallets" "^5.0.6"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/networks" "^5.0.3"
"@ethersproject/pbkdf2" "^5.0.3"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/providers" "^5.0.8"
"@ethersproject/random" "^5.0.3"
"@ethersproject/rlp" "^5.0.3"
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/signing-key" "^5.0.4"
"@ethersproject/solidity" "^5.0.4"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/units" "^5.0.4"
"@ethersproject/wallet" "^5.0.4"
"@ethersproject/web" "^5.0.6"
"@ethersproject/wordlists" "^5.0.4"
ethers@^5.0.0, ethers@^5.0.1:
version "5.0.8"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.8.tgz#c13d0fdf5e66db8085e2036d3309ed2f8a17ed89"
integrity sha512-of/rPgJ7E3yyBADUv5A7Gtkd7EB8ta/T9NS5CCG9tj9cifnXcI3KIdYQ7d8AS+9vm38pR1g6S5I+Q/mRnlQZlg==
@ -3721,6 +4119,14 @@ find-up@^2.1.0:
dependencies:
locate-path "^2.0.0"
find-yarn-workspace-root@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db"
integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==
dependencies:
fs-extra "^4.0.3"
micromatch "^3.1.4"
findup-sync@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
@ -3870,7 +4276,7 @@ fs-extra@^0.30.0:
path-is-absolute "^1.0.0"
rimraf "^2.2.8"
fs-extra@^4.0.2:
fs-extra@^4.0.2, fs-extra@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
@ -4617,6 +5023,13 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.0:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
dependencies:
ci-info "^2.0.0"
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@ -5080,6 +5493,13 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
klaw-sync@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
dependencies:
graceful-fs "^4.1.11"
klaw@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
@ -5569,7 +5989,7 @@ minimatch@3.0.4, minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.5, minimist@~1.2.5:
minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
@ -5708,6 +6128,11 @@ next-tick@~1.0.0:
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-addon-api@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32"
@ -6094,6 +6519,24 @@ pascalcase@^0.1.1:
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
patch-package@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39"
integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==
dependencies:
"@yarnpkg/lockfile" "^1.1.0"
chalk "^2.4.2"
cross-spawn "^6.0.5"
find-yarn-workspace-root "^1.2.1"
fs-extra "^7.0.1"
is-ci "^2.0.0"
klaw-sync "^6.0.0"
minimist "^1.2.0"
rimraf "^2.6.3"
semver "^5.6.0"
slash "^2.0.0"
tmp "^0.0.33"
path-browserify@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
@ -6126,6 +6569,11 @@ path-is-inside@^1.0.2:
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
@ -6215,6 +6663,11 @@ posix-character-classes@^0.1.0:
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
postinstall-postinstall@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3"
integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==
precond@0.2:
version "0.2.3"
resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac"
@ -6896,7 +7349,7 @@ semver-greatest-satisfied-range@^1.1.0:
dependencies:
sver-compat "^1.5.0"
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.7.0:
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@ -6994,6 +7447,18 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
dependencies:
shebang-regex "^1.0.0"
shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
simple-concat@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
@ -7013,6 +7478,11 @@ slash@^1.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
slash@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
@ -7508,7 +7978,7 @@ timed-out@^4.0.0, timed-out@^4.0.1:
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
tmp@0.0.33:
tmp@0.0.33, tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
@ -8274,7 +8744,7 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
which@1.3.1, which@^1.2.14:
which@1.3.1, which@^1.2.14, which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==