From abeb14337a43d9e84ea1871416e6f8faeb0cde3b Mon Sep 17 00:00:00 2001 From: Lint Action Date: Tue, 1 Feb 2022 02:17:09 +0000 Subject: [PATCH] Fix code style issues with Prettier --- deployments/rinkeby/DefaultProxyAdmin.json | 6 ++---- deployments/rinkeby/LaunchEvent.json | 2 +- deployments/rinkeby/LaunchEventLens.json | 6 ++---- deployments/rinkeby/RocketJoeFactory.json | 2 +- deployments/rinkeby/RocketJoeFactory_Implementation.json | 2 +- deployments/rinkeby/RocketJoeFactory_Proxy.json | 2 +- deployments/rinkeby/RocketJoeStaking.json | 2 +- deployments/rinkeby/RocketJoeStaking_Implementation.json | 2 +- deployments/rinkeby/RocketJoeStaking_Proxy.json | 2 +- deployments/rinkeby/RocketJoeToken.json | 2 +- .../solcInputs/1635d55d57a0a2552952c0d22586ed23.json | 6 ++---- .../solcInputs/5ed1f6f116bb3c8aee1bab0267059162.json | 6 ++---- .../solcInputs/6ec54884a1a0bdebb26ec72150c78ba5.json | 6 ++---- 13 files changed, 18 insertions(+), 28 deletions(-) diff --git a/deployments/rinkeby/DefaultProxyAdmin.json b/deployments/rinkeby/DefaultProxyAdmin.json index 66a3ef68..9d8b9df5 100644 --- a/deployments/rinkeby/DefaultProxyAdmin.json +++ b/deployments/rinkeby/DefaultProxyAdmin.json @@ -193,9 +193,7 @@ "status": 1, "byzantium": true }, - "args": [ - "0x1d9D82344E76769EB727521822D1EacB834A9024" - ], + "args": ["0x1d9D82344E76769EB727521822D1EacB834A9024"], "numDeployments": 1, "solcInputHash": "1635d55d57a0a2552952c0d22586ed23", "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\",\"kind\":\"dev\",\"methods\":{\"changeProxyAdmin(address,address)\":{\"details\":\"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`.\"},\"getProxyAdmin(address)\":{\"details\":\"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"getProxyImplementation(address)\":{\"details\":\"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgrade(address,address)\":{\"details\":\"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`.\"},\"upgradeAndCall(address,address,bytes)\":{\"details\":\"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.7/openzeppelin/proxy/ProxyAdmin.sol\":\"ProxyAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.7/openzeppelin/GSN/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with GSN meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address payable) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes memory) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0x910a2e625b71168563edf9eeef55a50d6d699acfe27ceba3921f291829a8f938\",\"license\":\"MIT\"},\"solc_0.7/openzeppelin/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\nimport \\\"../GSN/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\ncontract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor (address initialOwner) {\\n _owner = initialOwner;\\n emit OwnershipTransferred(address(0), initialOwner);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(_owner == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = address(0);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\\n\",\"keccak256\":\"0x85eb3b8575f16937ed27e36fae8b617d9e3e7a7e49f04e10d52dad66d0fa9e75\",\"license\":\"MIT\"},\"solc_0.7/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n * \\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n * \\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n * \\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal {\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 { revert(0, returndatasize()) }\\n default { return(0, returndatasize()) }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal virtual view returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n * \\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback () payable external {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive () payable external {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n * \\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {\\n }\\n}\\n\",\"keccak256\":\"0xc33f9858a67e34c77831163d5611d21fc627dfd2c303806a98a6c9db5a01b034\",\"license\":\"MIT\"},\"solc_0.7/openzeppelin/proxy/ProxyAdmin.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\nimport \\\"../access/Ownable.sol\\\";\\nimport \\\"./TransparentUpgradeableProxy.sol\\\";\\n\\n/**\\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\\n */\\ncontract ProxyAdmin is Ownable {\\n\\n constructor(address owner) Ownable(owner) {}\\n\\n /**\\n * @dev Returns the current implementation of `proxy`.\\n *\\n * Requirements:\\n *\\n * - This contract must be the admin of `proxy`.\\n */\\n function getProxyImplementation(TransparentUpgradeableProxy proxy) public view returns (address) {\\n // We need to manually run the static call since the getter cannot be flagged as view\\n // bytes4(keccak256(\\\"implementation()\\\")) == 0x5c60da1b\\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\\\"5c60da1b\\\");\\n require(success);\\n return abi.decode(returndata, (address));\\n }\\n\\n /**\\n * @dev Returns the current admin of `proxy`.\\n *\\n * Requirements:\\n *\\n * - This contract must be the admin of `proxy`.\\n */\\n function getProxyAdmin(TransparentUpgradeableProxy proxy) public view returns (address) {\\n // We need to manually run the static call since the getter cannot be flagged as view\\n // bytes4(keccak256(\\\"admin()\\\")) == 0xf851a440\\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\\\"f851a440\\\");\\n require(success);\\n return abi.decode(returndata, (address));\\n }\\n\\n /**\\n * @dev Changes the admin of `proxy` to `newAdmin`.\\n *\\n * Requirements:\\n *\\n * - This contract must be the current admin of `proxy`.\\n */\\n function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public onlyOwner {\\n proxy.changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\\n *\\n * Requirements:\\n *\\n * - This contract must be the admin of `proxy`.\\n */\\n function upgrade(TransparentUpgradeableProxy proxy, address implementation) public onlyOwner {\\n proxy.upgradeTo(implementation);\\n }\\n\\n /**\\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\\n *\\n * Requirements:\\n *\\n * - This contract must be the admin of `proxy`.\\n */\\n function upgradeAndCall(TransparentUpgradeableProxy proxy, address implementation, bytes memory data) public payable onlyOwner {\\n proxy.upgradeToAndCall{value: msg.value}(implementation, data);\\n }\\n}\\n\",\"keccak256\":\"0xae77885dd899a14e94f172e4e9ec7ef4b2ced0472904626c59b46150a26b5714\",\"license\":\"MIT\"},\"solc_0.7/openzeppelin/proxy/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\nimport \\\"./UpgradeableProxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n * \\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n * \\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n * \\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n * \\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative inerface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is UpgradeableProxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {UpgradeableProxy-constructor}.\\n */\\n constructor(address initialLogic, address initialAdmin, bytes memory _data) payable UpgradeableProxy(initialLogic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _setAdmin(initialAdmin);\\n }\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _admin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n * \\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n * \\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address) {\\n return _admin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n * \\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n * \\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address) {\\n return _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n * \\n * Emits an {AdminChanged} event.\\n * \\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external ifAdmin {\\n require(newAdmin != address(0), \\\"TransparentUpgradeableProxy: new admin is the zero address\\\");\\n emit AdminChanged(_admin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n * \\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeTo(newImplementation);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n * \\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeTo(newImplementation);\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success,) = newImplementation.delegatecall(data);\\n require(success);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view returns (address adm) {\\n bytes32 slot = _ADMIN_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n adm := sload(slot)\\n }\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n bytes32 slot = _ADMIN_SLOT;\\n\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, newAdmin)\\n }\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal override virtual {\\n require(msg.sender != _admin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n}\\n\",\"keccak256\":\"0xd6cecbe00dc78355aff1a16d83487bb73c54701004d61a2e48cdb81e2bcacc26\",\"license\":\"MIT\"},\"solc_0.7/openzeppelin/proxy/UpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\nimport \\\"./Proxy.sol\\\";\\nimport \\\"../utils/Address.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n * \\n * Upgradeability is only provided internally through {_upgradeTo}. For an externally upgradeable proxy see\\n * {TransparentUpgradeableProxy}.\\n */\\ncontract UpgradeableProxy is Proxy {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n * \\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _setImplementation(_logic);\\n if(_data.length > 0) {\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success,) = _logic.delegatecall(_data);\\n require(success);\\n }\\n }\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal override view returns (address impl) {\\n bytes32 slot = _IMPLEMENTATION_SLOT;\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n impl := sload(slot)\\n }\\n }\\n\\n /**\\n * @dev Upgrades the proxy to a new implementation.\\n * \\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"UpgradeableProxy: new implementation is not a contract\\\");\\n\\n bytes32 slot = _IMPLEMENTATION_SLOT;\\n\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n sstore(slot, newImplementation)\\n }\\n }\\n}\\n\",\"keccak256\":\"0xd68f4c11941712db79a61b9dca81a5db663cfacec3d7bb19f8d2c23bb1ab8afe\",\"license\":\"MIT\"},\"solc_0.7/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain`call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n return _functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n return _functionCallWithValue(target, data, value, errorMessage);\\n }\\n\\n function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x698f929f1097637d051976b322a2d532c27df022b09010e8d091e2888a5ebdf8\",\"license\":\"MIT\"}},\"version\":1}", @@ -256,4 +254,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/LaunchEvent.json b/deployments/rinkeby/LaunchEvent.json index ffeb4c27..e6bbe424 100644 --- a/deployments/rinkeby/LaunchEvent.json +++ b/deployments/rinkeby/LaunchEvent.json @@ -1321,4 +1321,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/LaunchEventLens.json b/deployments/rinkeby/LaunchEventLens.json index c2349443..406e0caa 100644 --- a/deployments/rinkeby/LaunchEventLens.json +++ b/deployments/rinkeby/LaunchEventLens.json @@ -694,9 +694,7 @@ "status": 1, "byzantium": true }, - "args": [ - "0xb40C42Cec9C68059A09529352834B752cfB1941C" - ], + "args": ["0xb40C42Cec9C68059A09529352834B752cfB1941C"], "numDeployments": 1, "solcInputHash": "6ec54884a1a0bdebb26ec72150c78ba5", "metadata": "{\"compiler\":{\"version\":\"0.8.6+commit.11564f7e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rocketJoeFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"getAllLaunchEvents\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"auctionStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"floorPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"incentives\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issuerTimelock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAllocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWithdrawPenalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pairBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneNoFeeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseTwoDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rJoePerAvax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenDecimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenIncentivesPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"userTimelock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"id\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnPair\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnIncentives\",\"type\":\"bool\"}],\"internalType\":\"struct ILaunchEvent.UserInfo\",\"name\":\"userInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct LaunchEventLens.LaunchEventData[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getAllLaunchEventsWithUser\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"auctionStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"floorPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"incentives\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issuerTimelock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAllocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWithdrawPenalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pairBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneNoFeeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseTwoDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rJoePerAvax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenDecimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenIncentivesPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"userTimelock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"id\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnPair\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnIncentives\",\"type\":\"bool\"}],\"internalType\":\"struct ILaunchEvent.UserInfo\",\"name\":\"userInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct LaunchEventLens.LaunchEventData[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILaunchEvent\",\"name\":\"_launchEvent\",\"type\":\"address\"}],\"name\":\"getLaunchEventData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"auctionStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"floorPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"incentives\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issuerTimelock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAllocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWithdrawPenalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pairBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneNoFeeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseTwoDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rJoePerAvax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenDecimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenIncentivesPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"userTimelock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"id\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnPair\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnIncentives\",\"type\":\"bool\"}],\"internalType\":\"struct ILaunchEvent.UserInfo\",\"name\":\"userInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct LaunchEventLens.LaunchEventData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILaunchEvent\",\"name\":\"_launchEvent\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserLaunchEventData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"auctionStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"avaxReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"floorPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"incentives\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issuerTimelock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAllocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWithdrawPenalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pairBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseOneNoFeeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"phaseTwoDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rJoePerAvax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenDecimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenIncentivesPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"userTimelock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"id\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnPair\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"hasWithdrawnIncentives\",\"type\":\"bool\"}],\"internalType\":\"struct ILaunchEvent.UserInfo\",\"name\":\"userInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct LaunchEventLens.LaunchEventData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rocketJoeFactory\",\"outputs\":[{\"internalType\":\"contract IRocketJoeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Joe\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_rocketJoeFactory\":\"Address of the RocketJoeFactory\"}},\"getAllLaunchEvents(uint256,uint256)\":{\"params\":{\"_limit\":\"Maximum number of launch event datas to return\",\"_offset\":\"Index to start at when looking up launch events\"},\"returns\":{\"_0\":\"Array of all launch event datas\"}},\"getAllLaunchEventsWithUser(uint256,uint256,address)\":{\"params\":{\"_limit\":\"Maximum number of launch event datas to return\",\"_offset\":\"Index to start at when looking up launch events\",\"_user\":\"User to lookup\"},\"returns\":{\"_0\":\"Array of all launch event datas with user info\"}},\"getLaunchEventData(address)\":{\"params\":{\"_launchEvent\":\"Launch event to lookup\"},\"returns\":{\"_0\":\"Launch event data for the given `_launchEvent`\"}},\"getUserLaunchEventData(address,address)\":{\"params\":{\"_launchEvent\":\"Launch event to lookup\",\"_user\":\"User to look up\"},\"returns\":{\"_0\":\"Launch event data for the given `_launchEvent` and `_user`\"}}},\"title\":\"Launch Event Lens\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Create a new instance with required parameters\"},\"getAllLaunchEvents(uint256,uint256)\":{\"notice\":\"Get all launch event datas\"},\"getAllLaunchEventsWithUser(uint256,uint256,address)\":{\"notice\":\"Get all launch event datas with a given `_user`\"},\"getLaunchEventData(address)\":{\"notice\":\"Get launch event data for a given launch event\"},\"getUserLaunchEventData(address,address)\":{\"notice\":\"Get launch event data for a given launch event and user\"}},\"notice\":\"Helper contract to fetch launch event data\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/LaunchEventLens.sol\":\"LaunchEventLens\"},\"evmVersion\":\"berlin\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address sender,\\n address recipient,\\n uint256 amount\\n ) external returns (bool);\\n\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x61437cb513a887a1bbad006e7b1c8b414478427d33de47c5600af3c748f108da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"contracts/LaunchEventLens.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.6;\\n\\nimport \\\"./interfaces/ILaunchEvent.sol\\\";\\nimport \\\"./interfaces/IRocketJoeFactory.sol\\\";\\n\\n/// @title Launch Event Lens\\n/// @author Trader Joe\\n/// @notice Helper contract to fetch launch event data\\ncontract LaunchEventLens {\\n struct LaunchEventData {\\n uint256 auctionStart;\\n uint256 avaxAllocated;\\n uint256 avaxReserve;\\n uint256 floorPrice;\\n uint256 incentives;\\n uint256 issuerTimelock;\\n uint256 maxAllocation;\\n uint256 maxWithdrawPenalty;\\n uint256 pairBalance;\\n uint256 penalty;\\n uint256 phaseOneDuration;\\n uint256 phaseOneNoFeeDuration;\\n uint256 phaseTwoDuration;\\n uint256 rJoePerAvax;\\n uint256 tokenAllocated;\\n uint256 tokenDecimals;\\n uint256 tokenIncentivesPercent;\\n uint256 tokenReserve;\\n uint256 userTimelock;\\n address id;\\n address token;\\n address pair;\\n ILaunchEvent.UserInfo userInfo;\\n }\\n\\n IRocketJoeFactory public rocketJoeFactory;\\n\\n /// @notice Create a new instance with required parameters\\n /// @param _rocketJoeFactory Address of the RocketJoeFactory\\n constructor(address _rocketJoeFactory) {\\n rocketJoeFactory = IRocketJoeFactory(_rocketJoeFactory);\\n }\\n\\n /// @notice Get all launch event datas\\n /// @param _offset Index to start at when looking up launch events\\n /// @param _limit Maximum number of launch event datas to return\\n /// @return Array of all launch event datas\\n function getAllLaunchEvents(uint256 _offset, uint256 _limit)\\n external\\n view\\n returns (LaunchEventData[] memory)\\n {\\n LaunchEventData[] memory launchEventDatas;\\n uint256 numLaunchEvents = rocketJoeFactory.numLaunchEvents();\\n\\n if (_offset >= numLaunchEvents || _limit == 0) {\\n return launchEventDatas;\\n }\\n\\n uint256 end = _offset + _limit > numLaunchEvents\\n ? numLaunchEvents\\n : _offset + _limit;\\n launchEventDatas = new LaunchEventData[](end - _offset);\\n\\n for (uint256 i = _offset; i < end; i++) {\\n address launchEventAddr = rocketJoeFactory.allRJLaunchEvents(i);\\n ILaunchEvent launchEvent = ILaunchEvent(launchEventAddr);\\n launchEventDatas[i] = getLaunchEventData(launchEvent);\\n }\\n\\n return launchEventDatas;\\n }\\n\\n /// @notice Get all launch event datas with a given `_user`\\n /// @param _offset Index to start at when looking up launch events\\n /// @param _limit Maximum number of launch event datas to return\\n /// @param _user User to lookup\\n /// @return Array of all launch event datas with user info\\n function getAllLaunchEventsWithUser(\\n uint256 _offset,\\n uint256 _limit,\\n address _user\\n ) external view returns (LaunchEventData[] memory) {\\n LaunchEventData[] memory launchEventDatas;\\n uint256 numLaunchEvents = rocketJoeFactory.numLaunchEvents();\\n\\n if (_offset >= numLaunchEvents || _limit == 0) {\\n return launchEventDatas;\\n }\\n\\n uint256 end = _offset + _limit > numLaunchEvents\\n ? numLaunchEvents\\n : _offset + _limit;\\n launchEventDatas = new LaunchEventData[](end - _offset);\\n\\n for (uint256 i = _offset; i < end; i++) {\\n address launchEventAddr = rocketJoeFactory.allRJLaunchEvents(i);\\n ILaunchEvent launchEvent = ILaunchEvent(launchEventAddr);\\n launchEventDatas[i] = getUserLaunchEventData(launchEvent, _user);\\n }\\n\\n return launchEventDatas;\\n }\\n\\n /// @notice Get launch event data for a given launch event and user\\n /// @param _launchEvent Launch event to lookup\\n /// @param _user User to look up\\n /// @return Launch event data for the given `_launchEvent` and `_user`\\n function getUserLaunchEventData(ILaunchEvent _launchEvent, address _user)\\n public\\n view\\n returns (LaunchEventData memory)\\n {\\n LaunchEventData memory launchEventData = getLaunchEventData(\\n _launchEvent\\n );\\n launchEventData.incentives = _launchEvent.getIncentives(_user);\\n launchEventData.pairBalance = _launchEvent.pairBalance(_user);\\n launchEventData.userInfo = _launchEvent.getUserInfo(_user);\\n return launchEventData;\\n }\\n\\n /// @notice Get launch event data for a given launch event\\n /// @param _launchEvent Launch event to lookup\\n /// @return Launch event data for the given `_launchEvent`\\n function getLaunchEventData(ILaunchEvent _launchEvent)\\n public\\n view\\n returns (LaunchEventData memory)\\n {\\n (uint256 avaxReserve, uint256 tokenReserve) = _launchEvent\\n .getReserves();\\n IERC20Metadata token = _launchEvent.token();\\n\\n return\\n LaunchEventData({\\n auctionStart: _launchEvent.auctionStart(),\\n avaxAllocated: _launchEvent.avaxAllocated(),\\n avaxReserve: avaxReserve,\\n floorPrice: _launchEvent.floorPrice(),\\n incentives: 0,\\n issuerTimelock: _launchEvent.issuerTimelock(),\\n maxAllocation: _launchEvent.maxAllocation(),\\n maxWithdrawPenalty: _launchEvent.maxWithdrawPenalty(),\\n penalty: _launchEvent.getPenalty(),\\n pairBalance: 0,\\n phaseOneDuration: _launchEvent.phaseOneDuration(),\\n phaseOneNoFeeDuration: _launchEvent.phaseOneNoFeeDuration(),\\n phaseTwoDuration: _launchEvent.phaseTwoDuration(),\\n rJoePerAvax: _launchEvent.rJoePerAvax(),\\n tokenAllocated: _launchEvent.tokenAllocated(),\\n tokenDecimals: token.decimals(),\\n tokenIncentivesPercent: _launchEvent.tokenIncentivesPercent(),\\n tokenReserve: tokenReserve,\\n userTimelock: _launchEvent.userTimelock(),\\n id: address(_launchEvent),\\n token: address(token),\\n pair: address(_launchEvent.pair()),\\n userInfo: ILaunchEvent.UserInfo({\\n allocation: 0,\\n balance: 0,\\n hasWithdrawnPair: false,\\n hasWithdrawnIncentives: false\\n })\\n });\\n }\\n}\\n\",\"keccak256\":\"0x7cfa6fa82a03276e83d55bf7bfce03f37e182b152b57ba2e1c37d747e196784c\",\"license\":\"MIT\"},\"contracts/interfaces/IJoePair.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0\\n\\npragma solidity 0.8.6;\\n\\ninterface IJoePair {\\n event Approval(\\n address indexed owner,\\n address indexed spender,\\n uint256 value\\n );\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n function name() external pure returns (string memory);\\n\\n function symbol() external pure returns (string memory);\\n\\n function decimals() external pure returns (uint8);\\n\\n function totalSupply() external view returns (uint256);\\n\\n function balanceOf(address owner) external view returns (uint256);\\n\\n function allowance(address owner, address spender)\\n external\\n view\\n returns (uint256);\\n\\n function approve(address spender, uint256 value) external returns (bool);\\n\\n function transfer(address to, uint256 value) external returns (bool);\\n\\n function transferFrom(\\n address from,\\n address to,\\n uint256 value\\n ) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n\\n function nonces(address owner) external view returns (uint256);\\n\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n event Mint(address indexed sender, uint256 amount0, uint256 amount1);\\n event Burn(\\n address indexed sender,\\n uint256 amount0,\\n uint256 amount1,\\n address indexed to\\n );\\n event Swap(\\n address indexed sender,\\n uint256 amount0In,\\n uint256 amount1In,\\n uint256 amount0Out,\\n uint256 amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint256);\\n\\n function factory() external view returns (address);\\n\\n function token0() external view returns (address);\\n\\n function token1() external view returns (address);\\n\\n function getReserves()\\n external\\n view\\n returns (\\n uint112 reserve0,\\n uint112 reserve1,\\n uint32 blockTimestampLast\\n );\\n\\n function price0CumulativeLast() external view returns (uint256);\\n\\n function price1CumulativeLast() external view returns (uint256);\\n\\n function kLast() external view returns (uint256);\\n\\n function mint(address to) external returns (uint256 liquidity);\\n\\n function burn(address to)\\n external\\n returns (uint256 amount0, uint256 amount1);\\n\\n function swap(\\n uint256 amount0Out,\\n uint256 amount1Out,\\n address to,\\n bytes calldata data\\n ) external;\\n\\n function skim(address to) external;\\n\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\",\"keccak256\":\"0x4d31be5dfc1c2dc8b1d6e22e4620e0163df2032077ed40622fb384becd7aeb42\",\"license\":\"GPL-3.0\"},\"contracts/interfaces/ILaunchEvent.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.6;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\nimport \\\"./IJoePair.sol\\\";\\n\\ninterface ILaunchEvent {\\n struct UserInfo {\\n uint256 allocation;\\n uint256 balance;\\n bool hasWithdrawnPair;\\n bool hasWithdrawnIncentives;\\n }\\n\\n function initialize(\\n address _issuer,\\n uint256 _phaseOne,\\n address _token,\\n uint256 _tokenIncentivesPercent,\\n uint256 _floorPrice,\\n uint256 _maxWithdrawPenalty,\\n uint256 _fixedWithdrawPenalty,\\n uint256 _maxAllocation,\\n uint256 _userTimelock,\\n uint256 _issuerTimelock\\n ) external;\\n\\n function auctionStart() external view returns (uint256);\\n\\n function phaseOneDuration() external view returns (uint256);\\n\\n function phaseOneNoFeeDuration() external view returns (uint256);\\n\\n function phaseTwoDuration() external view returns (uint256);\\n\\n function tokenIncentivesPercent() external view returns (uint256);\\n\\n function floorPrice() external view returns (uint256);\\n\\n function userTimelock() external view returns (uint256);\\n\\n function issuerTimelock() external view returns (uint256);\\n\\n function maxAllocation() external view returns (uint256);\\n\\n function maxWithdrawPenalty() external view returns (uint256);\\n\\n function fixedWithdrawPenalty() external view returns (uint256);\\n\\n function rJoePerAvax() external view returns (uint256);\\n\\n function getReserves() external view returns (uint256, uint256);\\n\\n function token() external view returns (IERC20Metadata);\\n\\n function pair() external view returns (IJoePair);\\n\\n function avaxAllocated() external view returns (uint256);\\n\\n function tokenAllocated() external view returns (uint256);\\n\\n function pairBalance(address) external view returns (uint256);\\n\\n function getUserInfo(address) external view returns (UserInfo memory);\\n\\n function getPenalty() external view returns (uint256);\\n\\n function getIncentives(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xdcfa58c190b21f014e20621bba561f5776d71629fd591af3b602e3d70035a934\",\"license\":\"MIT\"},\"contracts/interfaces/IRocketJoeFactory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.6;\\n\\ninterface IRocketJoeFactory {\\n event RJLaunchEventCreated(\\n address indexed launchEvent,\\n address indexed issuer,\\n address indexed token,\\n uint256 phaseOneStartTime,\\n uint256 phaseTwoStartTime,\\n uint256 phaseThreeStartTime,\\n address rJoe,\\n uint256 rJoePerAvax\\n );\\n event SetRJoe(address indexed token);\\n event SetPenaltyCollector(address indexed collector);\\n event SetRouter(address indexed router);\\n event SetFactory(address indexed factory);\\n event SetRJoePerAvax(uint256 rJoePerAvax);\\n event SetEventImplementation(address indexed implementation);\\n event IssuingTokenDeposited(address indexed token, uint256 amount);\\n event PhaseDurationChanged(uint256 phase, uint256 duration);\\n event NoFeeDurationChanged(uint256 duration);\\n\\n function eventImplementation() external view returns (address);\\n\\n function penaltyCollector() external view returns (address);\\n\\n function wavax() external view returns (address);\\n\\n function rJoePerAvax() external view returns (uint256);\\n\\n function router() external view returns (address);\\n\\n function factory() external view returns (address);\\n\\n function rJoe() external view returns (address);\\n\\n function phaseOneDuration() external view returns (uint256);\\n\\n function phaseOneNoFeeDuration() external view returns (uint256);\\n\\n function phaseTwoDuration() external view returns (uint256);\\n\\n function getRJLaunchEvent(address token)\\n external\\n view\\n returns (address launchEvent);\\n\\n function isRJLaunchEvent(address token) external view returns (bool);\\n\\n function allRJLaunchEvents(uint256) external view returns (address pair);\\n\\n function numLaunchEvents() external view returns (uint256);\\n\\n function createRJLaunchEvent(\\n address _issuer,\\n uint256 _phaseOneStartTime,\\n address _token,\\n uint256 _tokenAmount,\\n uint256 _tokenIncentivesPercent,\\n uint256 _floorPrice,\\n uint256 _maxWithdrawPenalty,\\n uint256 _fixedWithdrawPenalty,\\n uint256 _maxAllocation,\\n uint256 _userTimelock,\\n uint256 _issuerTimelock\\n ) external returns (address pair);\\n\\n function setPenaltyCollector(address) external;\\n\\n function setRouter(address) external;\\n\\n function setFactory(address) external;\\n\\n function setRJoePerAvax(uint256) external;\\n\\n function setPhaseDuration(uint256, uint256) external;\\n\\n function setPhaseOneNoFeeDuration(uint256) external;\\n\\n function setEventImplementation(address) external;\\n}\\n\",\"keccak256\":\"0x466e3bfe3d6c426662c153f4f6f123694ad32d67abc4fb2628fbc223f967af74\",\"license\":\"MIT\"}},\"version\":1}", @@ -792,4 +790,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/RocketJoeFactory.json b/deployments/rinkeby/RocketJoeFactory.json index cf07dac5..e7a9f44d 100644 --- a/deployments/rinkeby/RocketJoeFactory.json +++ b/deployments/rinkeby/RocketJoeFactory.json @@ -869,4 +869,4 @@ "storage": [], "types": null } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/RocketJoeFactory_Implementation.json b/deployments/rinkeby/RocketJoeFactory_Implementation.json index 04897b0e..8b09778a 100644 --- a/deployments/rinkeby/RocketJoeFactory_Implementation.json +++ b/deployments/rinkeby/RocketJoeFactory_Implementation.json @@ -982,4 +982,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/RocketJoeFactory_Proxy.json b/deployments/rinkeby/RocketJoeFactory_Proxy.json index 7d5fce3f..c5882276 100644 --- a/deployments/rinkeby/RocketJoeFactory_Proxy.json +++ b/deployments/rinkeby/RocketJoeFactory_Proxy.json @@ -218,4 +218,4 @@ "storage": [], "types": null } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/RocketJoeStaking.json b/deployments/rinkeby/RocketJoeStaking.json index 4ae94e4a..8a316849 100644 --- a/deployments/rinkeby/RocketJoeStaking.json +++ b/deployments/rinkeby/RocketJoeStaking.json @@ -574,4 +574,4 @@ "storage": [], "types": null } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/RocketJoeStaking_Implementation.json b/deployments/rinkeby/RocketJoeStaking_Implementation.json index c374b13d..c13a3cf0 100644 --- a/deployments/rinkeby/RocketJoeStaking_Implementation.json +++ b/deployments/rinkeby/RocketJoeStaking_Implementation.json @@ -642,4 +642,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/RocketJoeStaking_Proxy.json b/deployments/rinkeby/RocketJoeStaking_Proxy.json index a1357042..8e7a2918 100644 --- a/deployments/rinkeby/RocketJoeStaking_Proxy.json +++ b/deployments/rinkeby/RocketJoeStaking_Proxy.json @@ -218,4 +218,4 @@ "storage": [], "types": null } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/RocketJoeToken.json b/deployments/rinkeby/RocketJoeToken.json index 0787244c..ad8e25ef 100644 --- a/deployments/rinkeby/RocketJoeToken.json +++ b/deployments/rinkeby/RocketJoeToken.json @@ -587,4 +587,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/solcInputs/1635d55d57a0a2552952c0d22586ed23.json b/deployments/rinkeby/solcInputs/1635d55d57a0a2552952c0d22586ed23.json index 20732985..6272d8cb 100644 --- a/deployments/rinkeby/solcInputs/1635d55d57a0a2552952c0d22586ed23.json +++ b/deployments/rinkeby/solcInputs/1635d55d57a0a2552952c0d22586ed23.json @@ -44,13 +44,11 @@ "storageLayout", "evm.gasEstimates" ], - "": [ - "ast" - ] + "": ["ast"] } }, "metadata": { "useLiteralContent": true } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/solcInputs/5ed1f6f116bb3c8aee1bab0267059162.json b/deployments/rinkeby/solcInputs/5ed1f6f116bb3c8aee1bab0267059162.json index 95d92a0f..5e06d94f 100644 --- a/deployments/rinkeby/solcInputs/5ed1f6f116bb3c8aee1bab0267059162.json +++ b/deployments/rinkeby/solcInputs/5ed1f6f116bb3c8aee1bab0267059162.json @@ -86,13 +86,11 @@ "storageLayout", "evm.gasEstimates" ], - "": [ - "ast" - ] + "": ["ast"] } }, "metadata": { "useLiteralContent": true } } -} \ No newline at end of file +} diff --git a/deployments/rinkeby/solcInputs/6ec54884a1a0bdebb26ec72150c78ba5.json b/deployments/rinkeby/solcInputs/6ec54884a1a0bdebb26ec72150c78ba5.json index 856261d5..a51d5a09 100644 --- a/deployments/rinkeby/solcInputs/6ec54884a1a0bdebb26ec72150c78ba5.json +++ b/deployments/rinkeby/solcInputs/6ec54884a1a0bdebb26ec72150c78ba5.json @@ -110,13 +110,11 @@ "storageLayout", "evm.gasEstimates" ], - "": [ - "ast" - ] + "": ["ast"] } }, "metadata": { "useLiteralContent": true } } -} \ No newline at end of file +}