From 856da07def67857e1bf6b32fcb13fcf3f7b82877 Mon Sep 17 00:00:00 2001 From: PedroCailleret Date: Wed, 23 Nov 2022 19:46:29 -0300 Subject: [PATCH] perf: smart Contract Performance Improvement :zap: --- .gitignore | 1 - .../access/Ownable.sol/Ownable.dbg.json | 4 - .../token/ERC20/ERC20.sol/ERC20.dbg.json | 4 - .../token/ERC20/ERC20.sol/ERC20.json | 297 ---------- .../token/ERC20/IERC20.sol/IERC20.dbg.json | 4 - .../token/ERC20/IERC20.sol/IERC20.json | 194 ------- .../IERC20Metadata.dbg.json | 4 - .../utils/Context.sol/Context.dbg.json | 4 - .../contracts/utils/Context.sol/Context.json | 10 - .../utils/Counters.sol/Counters.dbg.json | 4 - .../DataTypes.sol/DataTypes.dbg.json | 4 + .../DataTypes.json} | 4 +- .../EventAndErrors.dbg.json | 4 + .../EventAndErrors.sol/EventAndErrors.json | 225 ++++++++ .../lib/auth/Owned.sol/Owned.dbg.json | 4 + .../auth/Owned.sol/Owned.json} | 17 +- .../lib/mock/mockToken.sol/MockToken.dbg.json | 4 + .../lib/mock/mockToken.sol/MockToken.json | 319 +++++++++++ .../lib/tokens/ERC20.sol/ERC20.dbg.json | 4 + .../tokens/ERC20.sol/ERC20.json} | 89 ++- .../lib/utils/Counters.sol/Counters.dbg.json | 4 + .../lib/utils/Counters.sol/Counters.json | 16 + .../ReentrancyGuard.dbg.json | 4 + .../ReentrancyGuard.sol/ReentrancyGuard.json | 16 + .../SafeTransferLib.dbg.json | 4 + .../SafeTransferLib.sol/SafeTransferLib.json | 10 + .../mockToken.sol/MockToken.dbg.json | 4 - .../contracts/mockToken.sol/MockToken.json | 292 ---------- artifacts/contracts/p2pix.sol/P2PIX.dbg.json | 2 +- artifacts/contracts/p2pix.sol/P2PIX.json | 192 ++++++- .../contracts/access/Ownable.sol | 96 ---- .../contracts/token/ERC20/ERC20.sol | 479 ---------------- .../contracts/token/ERC20/IERC20.sol | 101 ---- .../token/ERC20/extensions/IERC20Metadata.sol | 28 - .../@openzeppelin/contracts/utils/Context.sol | 34 -- .../contracts/utils/Counters.sol | 45 -- contracts/DataTypes.sol | 32 ++ contracts/EventAndErrors.sol | 72 +++ contracts/lib/auth/Owned.sol | 49 ++ contracts/lib/mock/mockToken.sol | 10 + contracts/lib/tokens/ERC20.sol | 250 +++++++++ contracts/lib/utils/Counters.sol | 52 ++ contracts/lib/utils/ReentrancyGuard.sol | 34 ++ contracts/lib/utils/SafeTransferLib.sol | 159 ++++++ contracts/mockToken.sol | 10 - contracts/p2pix.sol | 514 ++++++++++++------ src/types/@openzeppelin/contracts/index.ts | 7 - .../contracts/token/ERC20/IERC20.ts | 342 ------------ .../token/ERC20/extensions/IERC20Metadata.ts | 384 ------------- .../contracts/token/ERC20/extensions/index.ts | 4 - .../contracts/token/ERC20/index.ts | 7 - .../@openzeppelin/contracts/token/index.ts | 5 - src/types/EventAndErrors.ts | 232 ++++++++ .../@openzeppelin/contracts/access/index.ts | 4 - .../@openzeppelin/contracts/index.ts | 5 - .../contracts/token/ERC20/ERC20__factory.ts | 350 ------------ .../contracts/token/ERC20/IERC20__factory.ts | 206 ------- .../contracts/token/ERC20/extensions/index.ts | 4 - .../contracts/token/ERC20/index.ts | 6 - .../factories/EventAndErrors__factory.ts | 240 ++++++++ src/types/factories/index.ts | 4 +- .../auth/Owned__factory.ts} | 31 +- src/types/factories/lib/auth/index.ts | 4 + src/types/factories/lib/index.ts | 7 + .../{@openzeppelin => lib/mock}/index.ts | 2 +- .../mock/mockToken.sol/MockToken__factory.ts | 380 +++++++++++++ .../{ => lib/mock}/mockToken.sol/index.ts | 0 .../tokens/ERC20__factory.ts} | 103 +++- src/types/factories/lib/tokens/index.ts | 4 + .../factories/lib/utils/Counters__factory.ts | 65 +++ .../lib/utils/ReentrancyGuard__factory.ts | 31 ++ src/types/factories/lib/utils/index.ts | 5 + .../mockToken.sol/MockToken__factory.ts | 353 ------------ .../factories/p2pix.sol/P2PIX__factory.ts | 196 ++++++- src/types/hardhat.d.ts | 51 +- src/types/index.ts | 28 +- .../access/Ownable.ts => lib/auth/Owned.ts} | 85 +-- .../contracts/token => lib/auth}/index.ts | 2 +- src/types/lib/index.ts | 11 + .../{@openzeppelin => lib/mock}/index.ts | 4 +- .../{ => lib/mock}/mockToken.sol/MockToken.ts | 246 +++++---- .../{ => lib/mock}/mockToken.sol/index.ts | 0 .../token/ERC20 => lib/tokens}/ERC20.ts | 246 +++++---- .../contracts/access => lib/tokens}/index.ts | 2 +- src/types/lib/utils/Counters.ts | 56 ++ src/types/lib/utils/ReentrancyGuard.ts | 56 ++ src/types/lib/utils/index.ts | 5 + src/types/p2pix.sol/P2PIX.ts | 298 +++++++--- test/1-deposit.test.ts | 7 +- test/2-lock-release.test.ts | 37 +- test/utils/errors.ts | 11 + 91 files changed, 3862 insertions(+), 3973 deletions(-) delete mode 100644 artifacts/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.json delete mode 100644 artifacts/contracts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json create mode 100644 artifacts/contracts/DataTypes.sol/DataTypes.dbg.json rename artifacts/contracts/{@openzeppelin/contracts/utils/Counters.sol/Counters.json => DataTypes.sol/DataTypes.json} (81%) create mode 100644 artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json create mode 100644 artifacts/contracts/EventAndErrors.sol/EventAndErrors.json create mode 100644 artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json rename artifacts/contracts/{@openzeppelin/contracts/access/Ownable.sol/Ownable.json => lib/auth/Owned.sol/Owned.json} (73%) create mode 100644 artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json create mode 100644 artifacts/contracts/lib/mock/mockToken.sol/MockToken.json create mode 100644 artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json rename artifacts/contracts/{@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json => lib/tokens/ERC20.sol/ERC20.json} (73%) create mode 100644 artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json create mode 100644 artifacts/contracts/lib/utils/Counters.sol/Counters.json create mode 100644 artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json create mode 100644 artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.json create mode 100644 artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json create mode 100644 artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.json delete mode 100644 artifacts/contracts/mockToken.sol/MockToken.dbg.json delete mode 100644 artifacts/contracts/mockToken.sol/MockToken.json delete mode 100644 contracts/@openzeppelin/contracts/access/Ownable.sol delete mode 100644 contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol delete mode 100644 contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol delete mode 100644 contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol delete mode 100644 contracts/@openzeppelin/contracts/utils/Context.sol delete mode 100644 contracts/@openzeppelin/contracts/utils/Counters.sol create mode 100644 contracts/DataTypes.sol create mode 100644 contracts/EventAndErrors.sol create mode 100644 contracts/lib/auth/Owned.sol create mode 100644 contracts/lib/mock/mockToken.sol create mode 100644 contracts/lib/tokens/ERC20.sol create mode 100644 contracts/lib/utils/Counters.sol create mode 100644 contracts/lib/utils/ReentrancyGuard.sol create mode 100644 contracts/lib/utils/SafeTransferLib.sol delete mode 100644 contracts/mockToken.sol delete mode 100644 src/types/@openzeppelin/contracts/index.ts delete mode 100644 src/types/@openzeppelin/contracts/token/ERC20/IERC20.ts delete mode 100644 src/types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts delete mode 100644 src/types/@openzeppelin/contracts/token/ERC20/extensions/index.ts delete mode 100644 src/types/@openzeppelin/contracts/token/ERC20/index.ts delete mode 100644 src/types/@openzeppelin/contracts/token/index.ts create mode 100644 src/types/EventAndErrors.ts delete mode 100644 src/types/factories/@openzeppelin/contracts/access/index.ts delete mode 100644 src/types/factories/@openzeppelin/contracts/index.ts delete mode 100644 src/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts delete mode 100644 src/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts delete mode 100644 src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts delete mode 100644 src/types/factories/@openzeppelin/contracts/token/ERC20/index.ts create mode 100644 src/types/factories/EventAndErrors__factory.ts rename src/types/factories/{@openzeppelin/contracts/access/Ownable__factory.ts => lib/auth/Owned__factory.ts} (60%) create mode 100644 src/types/factories/lib/auth/index.ts create mode 100644 src/types/factories/lib/index.ts rename src/types/factories/{@openzeppelin => lib/mock}/index.ts (64%) create mode 100644 src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts rename src/types/factories/{ => lib/mock}/mockToken.sol/index.ts (100%) rename src/types/factories/{@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts => lib/tokens/ERC20__factory.ts} (70%) create mode 100644 src/types/factories/lib/tokens/index.ts create mode 100644 src/types/factories/lib/utils/Counters__factory.ts create mode 100644 src/types/factories/lib/utils/ReentrancyGuard__factory.ts create mode 100644 src/types/factories/lib/utils/index.ts delete mode 100644 src/types/factories/mockToken.sol/MockToken__factory.ts rename src/types/{@openzeppelin/contracts/access/Ownable.ts => lib/auth/Owned.ts} (57%) rename src/types/{factories/@openzeppelin/contracts/token => lib/auth}/index.ts (70%) create mode 100644 src/types/lib/index.ts rename src/types/{@openzeppelin => lib/mock}/index.ts (51%) rename src/types/{ => lib/mock}/mockToken.sol/MockToken.ts (76%) rename src/types/{ => lib/mock}/mockToken.sol/index.ts (100%) rename src/types/{@openzeppelin/contracts/token/ERC20 => lib/tokens}/ERC20.ts (76%) rename src/types/{@openzeppelin/contracts/access => lib/tokens}/index.ts (68%) create mode 100644 src/types/lib/utils/Counters.ts create mode 100644 src/types/lib/utils/ReentrancyGuard.ts create mode 100644 src/types/lib/utils/index.ts create mode 100644 test/utils/errors.ts diff --git a/.gitignore b/.gitignore index 60a3af2..58d28cd 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ !.yarn/sdks !.yarn/versions # **/artifacts -artifacts/@openzeppelin artifacts/build-info **/build **/ref diff --git a/artifacts/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json b/artifacts/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json deleted file mode 100644 index 08f792d..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" -} diff --git a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json b/artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json deleted file mode 100644 index 8499eeb..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" -} diff --git a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json b/artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json deleted file mode 100644 index 7b6b796..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC20", - "sourceName": "contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "name_", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol_", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162000b7438038062000b748339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b6108e280620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e39190610748565b60405180910390f35b6100ff6100fa3660046107b9565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107e3565b610290565b604051601281526020016100e3565b6100ff6101513660046107b9565b6102b4565b61011361016436600461081f565b6001600160a01b031660009081526020819052604090205490565b6100d66102f3565b6100ff6101953660046107b9565b610302565b6100ff6101a83660046107b9565b6103b1565b6101136101bb366004610841565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f590610874565b80601f016020809104026020016040519081016040528092919081815260200182805461022190610874565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103bf565b5060019392505050565b60003361029e8582856104e3565b6102a9858585610575565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102ee9087906108af565b6103bf565b6060600480546101f590610874565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102a982868684036103bf565b600033610286818585610575565b6001600160a01b0383166104215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039b565b6001600160a01b0382166104825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461056f57818110156105625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039b565b61056f84848484036103bf565b50505050565b6001600160a01b0383166105f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166106535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039b565b6001600160a01b038316600090815260208190526040902054818110156106e25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361056f565b600060208083528351808285015260005b8181101561077557858101830151858201604001528201610759565b81811115610787576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b457600080fd5b919050565b600080604083850312156107cc57600080fd5b6107d58361079d565b946020939093013593505050565b6000806000606084860312156107f857600080fd5b6108018461079d565b925061080f6020850161079d565b9150604084013590509250925092565b60006020828403121561083157600080fd5b61083a8261079d565b9392505050565b6000806040838503121561085457600080fd5b61085d8361079d565b915061086b6020840161079d565b90509250929050565b600181811c9082168061088857607f821691505b602082108114156108a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d057634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c6343000809000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e39190610748565b60405180910390f35b6100ff6100fa3660046107b9565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107e3565b610290565b604051601281526020016100e3565b6100ff6101513660046107b9565b6102b4565b61011361016436600461081f565b6001600160a01b031660009081526020819052604090205490565b6100d66102f3565b6100ff6101953660046107b9565b610302565b6100ff6101a83660046107b9565b6103b1565b6101136101bb366004610841565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f590610874565b80601f016020809104026020016040519081016040528092919081815260200182805461022190610874565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103bf565b5060019392505050565b60003361029e8582856104e3565b6102a9858585610575565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102ee9087906108af565b6103bf565b6060600480546101f590610874565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102a982868684036103bf565b600033610286818585610575565b6001600160a01b0383166104215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039b565b6001600160a01b0382166104825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461056f57818110156105625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039b565b61056f84848484036103bf565b50505050565b6001600160a01b0383166105f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166106535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039b565b6001600160a01b038316600090815260208190526040902054818110156106e25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361056f565b600060208083528351808285015260005b8181101561077557858101830151858201604001528201610759565b81811115610787576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b457600080fd5b919050565b600080604083850312156107cc57600080fd5b6107d58361079d565b946020939093013593505050565b6000806000606084860312156107f857600080fd5b6108018461079d565b925061080f6020850161079d565b9150604084013590509250925092565b60006020828403121561083157600080fd5b61083a8261079d565b9392505050565b6000806040838503121561085457600080fd5b61085d8361079d565b915061086b6020840161079d565b90509250929050565b600181811c9082168061088857607f821691505b602082108114156108a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d057634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json deleted file mode 100644 index 8499eeb..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" -} diff --git a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json b/artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json deleted file mode 100644 index 7548e72..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC20", - "sourceName": "contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json b/artifacts/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json deleted file mode 100644 index 1a356ff..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" -} diff --git a/artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json b/artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json deleted file mode 100644 index 08f792d..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" -} diff --git a/artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.json b/artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.json deleted file mode 100644 index c48fced..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/utils/Context.sol/Context.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Context", - "sourceName": "contracts/@openzeppelin/contracts/utils/Context.sol", - "abi": [], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json b/artifacts/contracts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json deleted file mode 100644 index 08f792d..0000000 --- a/artifacts/contracts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" -} diff --git a/artifacts/contracts/DataTypes.sol/DataTypes.dbg.json b/artifacts/contracts/DataTypes.sol/DataTypes.dbg.json new file mode 100644 index 0000000..7e60a1d --- /dev/null +++ b/artifacts/contracts/DataTypes.sol/DataTypes.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/@openzeppelin/contracts/utils/Counters.sol/Counters.json b/artifacts/contracts/DataTypes.sol/DataTypes.json similarity index 81% rename from artifacts/contracts/@openzeppelin/contracts/utils/Counters.sol/Counters.json rename to artifacts/contracts/DataTypes.sol/DataTypes.json index 46dedf7..219fbbb 100644 --- a/artifacts/contracts/@openzeppelin/contracts/utils/Counters.sol/Counters.json +++ b/artifacts/contracts/DataTypes.sol/DataTypes.json @@ -1,7 +1,7 @@ { "_format": "hh-sol-artifact-1", - "contractName": "Counters", - "sourceName": "contracts/@openzeppelin/contracts/utils/Counters.sol", + "contractName": "DataTypes", + "sourceName": "contracts/DataTypes.sol", "abi": [], "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a", diff --git a/artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json b/artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json new file mode 100644 index 0000000..7e60a1d --- /dev/null +++ b/artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/EventAndErrors.sol/EventAndErrors.json b/artifacts/contracts/EventAndErrors.sol/EventAndErrors.json new file mode 100644 index 0000000..e83bc5f --- /dev/null +++ b/artifacts/contracts/EventAndErrors.sol/EventAndErrors.json @@ -0,0 +1,225 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EventAndErrors", + "sourceName": "contracts/EventAndErrors.sol", + "abi": [ + { + "inputs": [], + "name": "AlreadyReleased", + "type": "error" + }, + { + "inputs": [], + "name": "DepositAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidDeposit", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSigner", + "type": "error" + }, + { + "inputs": [], + "name": "LoopOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughTokens", + "type": "error" + }, + { + "inputs": [], + "name": "NotExpired", + "type": "error" + }, + { + "inputs": [], + "name": "OnlySeller", + "type": "error" + }, + { + "inputs": [], + "name": "TxAlreadyUsed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "depositID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "premium", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "DepositAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "depositID", + "type": "uint256" + } + ], + "name": "DepositClosed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "depositID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "DepositWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "lockID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "depositID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LockAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "lockId", + "type": "bytes32" + } + ], + "name": "LockReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "lockId", + "type": "bytes32" + } + ], + "name": "LockReturned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PremiumsWithdrawn", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json b/artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json new file mode 100644 index 0000000..1ee4b84 --- /dev/null +++ b/artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json b/artifacts/contracts/lib/auth/Owned.sol/Owned.json similarity index 73% rename from artifacts/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json rename to artifacts/contracts/lib/auth/Owned.sol/Owned.json index 5ee5e8c..ce19504 100644 --- a/artifacts/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +++ b/artifacts/contracts/lib/auth/Owned.sol/Owned.json @@ -1,7 +1,7 @@ { "_format": "hh-sol-artifact-1", - "contractName": "Ownable", - "sourceName": "contracts/@openzeppelin/contracts/access/Ownable.sol", + "contractName": "Owned", + "sourceName": "contracts/lib/auth/Owned.sol", "abi": [ { "anonymous": false, @@ -9,7 +9,7 @@ { "indexed": true, "internalType": "address", - "name": "previousOwner", + "name": "user", "type": "address" }, { @@ -19,7 +19,7 @@ "type": "address" } ], - "name": "OwnershipTransferred", + "name": "OwnerUpdated", "type": "event" }, { @@ -35,13 +35,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -50,7 +43,7 @@ "type": "address" } ], - "name": "transferOwnership", + "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" diff --git a/artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json new file mode 100644 index 0000000..1ee4b84 --- /dev/null +++ b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/lib/mock/mockToken.sol/MockToken.json b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.json new file mode 100644 index 0000000..52181f5 --- /dev/null +++ b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.json @@ -0,0 +1,319 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockToken", + "sourceName": "contracts/lib/mock/mockToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60e06040523480156200001157600080fd5b5060405162000e5138038062000e51833981016040819052620000349162000279565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b908401528151919291601291620000839160009190620001d3565b50815162000099906001906020850190620001d3565b5060ff81166080524660a052620000af620000ca565b60c05250620000c391503390508262000166565b506200039b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000fe9190620002d0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546200017a919062000374565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620001e19062000293565b90600052602060002090601f01602090048101928262000205576000855562000250565b82601f106200022057805160ff191683800117855562000250565b8280016001018555821562000250579182015b828111156200025057825182559160200191906001019062000233565b506200025e92915062000262565b5090565b5b808211156200025e576000815560010162000263565b6000602082840312156200028c57600080fd5b5051919050565b600181811c90821680620002a857607f821691505b60208210811415620002ca57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002ed57607f831692505b60208084108214156200030e57634e487b7160e01b86526022600452602486fd5b818015620003255760018114620003375762000366565b60ff1986168952848901965062000366565b60008a81526020902060005b868110156200035e5781548b82015290850190830162000343565b505084890196505b509498975050505050505050565b600082198211156200039657634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c051610a86620003cb600039600061044501526000610410015260006101490152610a866000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806370a0823111610081578063a9059cbb1161005b578063a9059cbb146101cd578063d505accf146101e0578063dd62ed3e146101f557600080fd5b806370a08231146101855780637ecebe00146101a557806395d89b41146101c557600080fd5b806323b872dd116100b257806323b872dd14610131578063313ce567146101445780633644e5151461017d57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd1461011a575b600080fd5b6100e1610220565b6040516100ee91906107de565b60405180910390f35b61010a61010536600461084f565b6102ae565b60405190151581526020016100ee565b61012360025481565b6040519081526020016100ee565b61010a61013f366004610879565b61031a565b61016b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100ee565b61012361040c565b6101236101933660046108b5565b60036020526000908152604090205481565b6101236101b33660046108b5565b60056020526000908152604090205481565b6100e1610467565b61010a6101db36600461084f565b610474565b6101f36101ee3660046108d7565b6104ec565b005b61012361020336600461094a565b600460209081526000928352604080842090915290825290205481565b6000805461022d9061097d565b80601f01602080910402602001604051908101604052809291908181526020018280546102599061097d565b80156102a65780601f1061027b576101008083540402835291602001916102a6565b820191906000526020600020905b81548152906001019060200180831161028957829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103099086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103765761035183826109b8565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061039e9084906109b8565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103f99087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104425761043d610744565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461022d9061097d565b336000908152600360205260408120805483919083906104959084906109b8565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103099086815260200190565b428410156105415760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161054d61040c565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610659573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061068f5750876001600160a01b0316816001600160a01b0316145b6106db5760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610538565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161077691906109dd565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600060208083528351808285015260005b8181101561080b578581018301518582016040015282016107ef565b8181111561081d576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461084a57600080fd5b919050565b6000806040838503121561086257600080fd5b61086b83610833565b946020939093013593505050565b60008060006060848603121561088e57600080fd5b61089784610833565b92506108a560208501610833565b9150604084013590509250925092565b6000602082840312156108c757600080fd5b6108d082610833565b9392505050565b600080600080600080600060e0888a0312156108f257600080fd5b6108fb88610833565b965061090960208901610833565b95506040880135945060608801359350608088013560ff8116811461092d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561095d57600080fd5b61096683610833565b915061097460208401610833565b90509250929050565b600181811c9082168061099157607f821691505b602082108114156109b257634e487b7160e01b600052602260045260246000fd5b50919050565b6000828210156109d857634e487b7160e01b600052601160045260246000fd5b500390565b600080835481600182811c9150808316806109f957607f831692505b6020808410821415610a1957634e487b7160e01b86526022600452602486fd5b818015610a2d5760018114610a3e57610a6b565b60ff19861689528489019650610a6b565b60008a81526020902060005b86811015610a635781548b820152908501908301610a4a565b505084890196505b50949897505050505050505056fea164736f6c6343000809000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806370a0823111610081578063a9059cbb1161005b578063a9059cbb146101cd578063d505accf146101e0578063dd62ed3e146101f557600080fd5b806370a08231146101855780637ecebe00146101a557806395d89b41146101c557600080fd5b806323b872dd116100b257806323b872dd14610131578063313ce567146101445780633644e5151461017d57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd1461011a575b600080fd5b6100e1610220565b6040516100ee91906107de565b60405180910390f35b61010a61010536600461084f565b6102ae565b60405190151581526020016100ee565b61012360025481565b6040519081526020016100ee565b61010a61013f366004610879565b61031a565b61016b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100ee565b61012361040c565b6101236101933660046108b5565b60036020526000908152604090205481565b6101236101b33660046108b5565b60056020526000908152604090205481565b6100e1610467565b61010a6101db36600461084f565b610474565b6101f36101ee3660046108d7565b6104ec565b005b61012361020336600461094a565b600460209081526000928352604080842090915290825290205481565b6000805461022d9061097d565b80601f01602080910402602001604051908101604052809291908181526020018280546102599061097d565b80156102a65780601f1061027b576101008083540402835291602001916102a6565b820191906000526020600020905b81548152906001019060200180831161028957829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103099086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103765761035183826109b8565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061039e9084906109b8565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103f99087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104425761043d610744565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461022d9061097d565b336000908152600360205260408120805483919083906104959084906109b8565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103099086815260200190565b428410156105415760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161054d61040c565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610659573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061068f5750876001600160a01b0316816001600160a01b0316145b6106db5760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610538565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161077691906109dd565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600060208083528351808285015260005b8181101561080b578581018301518582016040015282016107ef565b8181111561081d576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461084a57600080fd5b919050565b6000806040838503121561086257600080fd5b61086b83610833565b946020939093013593505050565b60008060006060848603121561088e57600080fd5b61089784610833565b92506108a560208501610833565b9150604084013590509250925092565b6000602082840312156108c757600080fd5b6108d082610833565b9392505050565b600080600080600080600060e0888a0312156108f257600080fd5b6108fb88610833565b965061090960208901610833565b95506040880135945060608801359350608088013560ff8116811461092d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561095d57600080fd5b61096683610833565b915061097460208401610833565b90509250929050565b600181811c9082168061099157607f821691505b602082108114156109b257634e487b7160e01b600052602260045260246000fd5b50919050565b6000828210156109d857634e487b7160e01b600052601160045260246000fd5b500390565b600080835481600182811c9150808316806109f957607f831692505b6020808410821415610a1957634e487b7160e01b86526022600452602486fd5b818015610a2d5760018114610a3e57610a6b565b60ff19861689528489019650610a6b565b60008a81526020902060005b86811015610a635781548b820152908501908301610a4a565b505084890196505b50949897505050505050505056fea164736f6c6343000809000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json b/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json new file mode 100644 index 0000000..1ee4b84 --- /dev/null +++ b/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json b/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.json similarity index 73% rename from artifacts/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json rename to artifacts/contracts/lib/tokens/ERC20.sol/ERC20.json index b7267b7..67bab53 100644 --- a/artifacts/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +++ b/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.json @@ -1,7 +1,7 @@ { "_format": "hh-sol-artifact-1", - "contractName": "IERC20Metadata", - "sourceName": "contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "contractName": "ERC20", + "sourceName": "contracts/lib/tokens/ERC20.sol", "abi": [ { "anonymous": false, @@ -21,7 +21,7 @@ { "indexed": false, "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], @@ -46,23 +46,36 @@ { "indexed": false, "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "internalType": "address", - "name": "owner", + "name": "", "type": "address" }, { "internalType": "address", - "name": "spender", + "name": "", "type": "address" } ], @@ -105,7 +118,7 @@ "inputs": [ { "internalType": "address", - "name": "account", + "name": "", "type": "address" } ], @@ -146,6 +159,68 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "symbol", diff --git a/artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json b/artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json new file mode 100644 index 0000000..1ee4b84 --- /dev/null +++ b/artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/lib/utils/Counters.sol/Counters.json b/artifacts/contracts/lib/utils/Counters.sol/Counters.json new file mode 100644 index 0000000..586b482 --- /dev/null +++ b/artifacts/contracts/lib/utils/Counters.sol/Counters.json @@ -0,0 +1,16 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Counters", + "sourceName": "contracts/lib/utils/Counters.sol", + "abi": [ + { + "inputs": [], + "name": "DecOverflow", + "type": "error" + } + ], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json b/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json new file mode 100644 index 0000000..1ee4b84 --- /dev/null +++ b/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.json b/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.json new file mode 100644 index 0000000..a757f6d --- /dev/null +++ b/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.json @@ -0,0 +1,16 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReentrancyGuard", + "sourceName": "contracts/lib/utils/ReentrancyGuard.sol", + "abi": [ + { + "inputs": [], + "name": "Reentrancy", + "type": "error" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json b/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json new file mode 100644 index 0000000..1ee4b84 --- /dev/null +++ b/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" +} diff --git a/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.json b/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.json new file mode 100644 index 0000000..e11ceea --- /dev/null +++ b/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeTransferLib", + "sourceName": "contracts/lib/utils/SafeTransferLib.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/mockToken.sol/MockToken.dbg.json b/artifacts/contracts/mockToken.sol/MockToken.dbg.json deleted file mode 100644 index 75fc57d..0000000 --- a/artifacts/contracts/mockToken.sol/MockToken.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" -} diff --git a/artifacts/contracts/mockToken.sol/MockToken.json b/artifacts/contracts/mockToken.sol/MockToken.json deleted file mode 100644 index 086e148..0000000 --- a/artifacts/contracts/mockToken.sol/MockToken.json +++ /dev/null @@ -1,292 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "MockToken", - "sourceName": "contracts/mockToken.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "supply", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162000b8d38038062000b8d83398101604081905262000034916200021d565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b9084015281519192916200007f9160039162000177565b5080516200009590600490602084019062000177565b505050620000aa3382620000b160201b60201c565b506200029b565b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000120919062000237565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805462000185906200025e565b90600052602060002090601f016020900481019282620001a95760008555620001f4565b82601f10620001c457805160ff1916838001178555620001f4565b82800160010185558215620001f4579182015b82811115620001f4578251825591602001919060010190620001d7565b506200020292915062000206565b5090565b5b8082111562000202576000815560010162000207565b6000602082840312156200023057600080fd5b5051919050565b600082198211156200025957634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200027357607f821691505b602082108114156200029557634e487b7160e01b600052602260045260246000fd5b50919050565b6108e280620002ab6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e39190610748565b60405180910390f35b6100ff6100fa3660046107b9565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107e3565b610290565b604051601281526020016100e3565b6100ff6101513660046107b9565b6102b4565b61011361016436600461081f565b6001600160a01b031660009081526020819052604090205490565b6100d66102f3565b6100ff6101953660046107b9565b610302565b6100ff6101a83660046107b9565b6103b1565b6101136101bb366004610841565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f590610874565b80601f016020809104026020016040519081016040528092919081815260200182805461022190610874565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103bf565b5060019392505050565b60003361029e8582856104e3565b6102a9858585610575565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102ee9087906108af565b6103bf565b6060600480546101f590610874565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102a982868684036103bf565b600033610286818585610575565b6001600160a01b0383166104215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039b565b6001600160a01b0382166104825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461056f57818110156105625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039b565b61056f84848484036103bf565b50505050565b6001600160a01b0383166105f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166106535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039b565b6001600160a01b038316600090815260208190526040902054818110156106e25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361056f565b600060208083528351808285015260005b8181101561077557858101830151858201604001528201610759565b81811115610787576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b457600080fd5b919050565b600080604083850312156107cc57600080fd5b6107d58361079d565b946020939093013593505050565b6000806000606084860312156107f857600080fd5b6108018461079d565b925061080f6020850161079d565b9150604084013590509250925092565b60006020828403121561083157600080fd5b61083a8261079d565b9392505050565b6000806040838503121561085457600080fd5b61085d8361079d565b915061086b6020840161079d565b90509250929050565b600181811c9082168061088857607f821691505b602082108114156108a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d057634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c6343000809000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e39190610748565b60405180910390f35b6100ff6100fa3660046107b9565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107e3565b610290565b604051601281526020016100e3565b6100ff6101513660046107b9565b6102b4565b61011361016436600461081f565b6001600160a01b031660009081526020819052604090205490565b6100d66102f3565b6100ff6101953660046107b9565b610302565b6100ff6101a83660046107b9565b6103b1565b6101136101bb366004610841565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f590610874565b80601f016020809104026020016040519081016040528092919081815260200182805461022190610874565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103bf565b5060019392505050565b60003361029e8582856104e3565b6102a9858585610575565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102ee9087906108af565b6103bf565b6060600480546101f590610874565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102a982868684036103bf565b600033610286818585610575565b6001600160a01b0383166104215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039b565b6001600160a01b0382166104825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461056f57818110156105625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039b565b61056f84848484036103bf565b50505050565b6001600160a01b0383166105f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166106535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039b565b6001600160a01b038316600090815260208190526040902054818110156106e25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361056f565b600060208083528351808285015260005b8181101561077557858101830151858201604001528201610759565b81811115610787576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b457600080fd5b919050565b600080604083850312156107cc57600080fd5b6107d58361079d565b946020939093013593505050565b6000806000606084860312156107f857600080fd5b6108018461079d565b925061080f6020850161079d565b9150604084013590509250925092565b60006020828403121561083157600080fd5b61083a8261079d565b9392505050565b6000806040838503121561085457600080fd5b61085d8361079d565b915061086b6020840161079d565b90509250929050565b600181811c9082168061088857607f821691505b602082108114156108a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d057634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/p2pix.sol/P2PIX.dbg.json b/artifacts/contracts/p2pix.sol/P2PIX.dbg.json index 75fc57d..7e60a1d 100644 --- a/artifacts/contracts/p2pix.sol/P2PIX.dbg.json +++ b/artifacts/contracts/p2pix.sol/P2PIX.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/dbb5a55867d7e81ad1b5b45703a00001.json" + "buildInfo": "../../build-info/6c9bcd31e56d59a208be7520d57707e6.json" } diff --git a/artifacts/contracts/p2pix.sol/P2PIX.json b/artifacts/contracts/p2pix.sol/P2PIX.json index aaeaabc..04d915b 100644 --- a/artifacts/contracts/p2pix.sol/P2PIX.json +++ b/artifacts/contracts/p2pix.sol/P2PIX.json @@ -16,9 +16,59 @@ "type": "address[]" } ], - "stateMutability": "nonpayable", + "stateMutability": "payable", "type": "constructor" }, + { + "inputs": [], + "name": "AlreadyReleased", + "type": "error" + }, + { + "inputs": [], + "name": "DepositAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidDeposit", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSigner", + "type": "error" + }, + { + "inputs": [], + "name": "LoopOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughTokens", + "type": "error" + }, + { + "inputs": [], + "name": "NotExpired", + "type": "error" + }, + { + "inputs": [], + "name": "OnlySeller", + "type": "error" + }, + { + "inputs": [], + "name": "Reentrancy", + "type": "error" + }, + { + "inputs": [], + "name": "TxAlreadyUsed", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -175,7 +225,7 @@ { "indexed": true, "internalType": "address", - "name": "previousOwner", + "name": "user", "type": "address" }, { @@ -185,7 +235,7 @@ "type": "address" } ], - "name": "OwnershipTransferred", + "name": "OwnerUpdated", "type": "event" }, { @@ -207,6 +257,25 @@ "name": "PremiumsWithdrawn", "type": "event" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_addr", + "type": "address" + } + ], + "name": "_castAddrToKey", + "outputs": [ + { + "internalType": "uint256", + "name": "_key", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [ { @@ -268,7 +337,7 @@ "outputs": [ { "internalType": "uint256", - "name": "_value", + "name": "_val", "type": "uint256" } ], @@ -279,27 +348,27 @@ "inputs": [ { "internalType": "uint256", - "name": "depositID", + "name": "_depositID", "type": "uint256" }, { "internalType": "address", - "name": "targetAddress", + "name": "_targetAddress", "type": "address" }, { "internalType": "address", - "name": "relayerAddress", + "name": "_relayerAddress", "type": "address" }, { "internalType": "uint256", - "name": "relayerPremium", + "name": "_relayerPremium", "type": "uint256" }, { "internalType": "uint256", - "name": "amount", + "name": "_amount", "type": "uint256" }, { @@ -319,6 +388,94 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapDeposits", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "premium", + "type": "uint256" + }, + { + "internalType": "string", + "name": "pixTarget", + "type": "string" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bool", + "name": "valid", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "mapLocks", + "outputs": [ + { + "internalType": "uint256", + "name": "depositID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "relayerPremium", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirationBlock", + "type": "uint256" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "relayerAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "owner", @@ -365,13 +522,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -380,7 +530,7 @@ "type": "address" } ], - "name": "transferOwnership", + "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -401,9 +551,9 @@ { "inputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "name": "validBacenSigners", @@ -443,8 +593,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200197238038062001972833981016040819052620000349162000145565b6200003f33620000c2565b600282905560005b81518160ff161015620000b957600160036000848460ff168151811062000072576200007262000225565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000b0816200023b565b91505062000047565b5050506200026a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200014057600080fd5b919050565b600080604083850312156200015957600080fd5b8251602080850151919350906001600160401b03808211156200017b57600080fd5b818601915086601f8301126200019057600080fd5b815181811115620001a557620001a562000112565b8060051b604051601f19603f83011681018181108582111715620001cd57620001cd62000112565b604052918252848201925083810185019189831115620001ec57600080fd5b938501935b828510156200021557620002058562000128565b84529385019392850192620001f1565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8114156200026157634e487b7160e01b600052601160045260246000fd5b60010192915050565b6116f8806200027a6000396000f3fe6080604052600436106100d25760003560e01c806372fada5c1161007f5780639872dbfe116100595780639872dbfe146101f5578063b93bd7d41461020b578063bfe07da61461024b578063f2fde38b1461025e57600080fd5b806372fada5c1461018d5780638da5cb5b146101ad5780638e2749d6146101d557600080fd5b80634e1389ed116100b05780634e1389ed146101435780636193cdfb14610163578063715018a61461017857600080fd5b806303aaf306146100d75780632dfdf0b51461010a5780633631797214610121575b600080fd5b3480156100e357600080fd5b506100f76100f2366004611345565b61027e565b6040519081526020015b60405180910390f35b34801561011657600080fd5b506001546100f79081565b34801561012d57600080fd5b5061014161013c3660046113c7565b610573565b005b34801561014f57600080fd5b5061014161015e366004611413565b610701565b34801561016f57600080fd5b50610141610b7c565b34801561018457600080fd5b50610141610bf0565b34801561019957600080fd5b506101416101a8366004611466565b610c04565b3480156101b957600080fd5b506000546040516001600160a01b039091168152602001610101565b3480156101e157600080fd5b506101416101f036600461147f565b610ce0565b34801561020157600080fd5b506100f760025481565b34801561021757600080fd5b5061023b6102263660046114c1565b60036020526000908152604090205460ff1681565b6040519015158152602001610101565b6100f76102593660046114e3565b610e62565b34801561026a57600080fd5b506101416102793660046114c1565b6110fd565b600061028a8383610ce0565b60008881526004602081905260409091209081015460ff166102f35760405162461bcd60e51b815260206004820181905260248201527f50325049583a204465706f736974206e6f742076616c696420616e796d6f726560448201526064015b60405180910390fd5b848160020154101561036d5760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204e6f7420656e6f75676820746f6b656e2072656d61696e696e60448201527f67206f6e206465706f736974000000000000000000000000000000000000000060648201526084016102ea565b60408051602081018b9052908101869052606089811b6bffffffffffffffffffffffff1916908201526074016040516020818303038152906040528051906020012091504360056000848152602001908152602001600020600501541061043c5760405162461bcd60e51b815260206004820152603360248201527f50325049583a20416e6f74686572206c6f636b20776974682073616d6520494460448201527f206973206e6f742065787069726564207965740000000000000000000000000060648201526084016102ea565b60006040518060c001604052808b81526020018a6001600160a01b03168152602001896001600160a01b03168152602001888152602001878152602001600254436104879190611580565b9052600084815260056020818152604080842085518155918501516001830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915591860151600280850180549290931691909316179055606085015160038301556080850151600483015560a0850151919092015584018054929350889290919061051b908490611598565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a35050979650505050505050565b60008381526004602052604090205483906001600160a01b031633146105f05760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204f6e6c792073656c6c657220636f756c642063616c6c20746860448201526b34b990333ab731ba34b7b71760a11b60648201526084016102ea565b6105fa8383610ce0565b60008481526004602081905260409091209081015460ff16156106205761062085610c04565b60018101548154600283015460405163a9059cbb60e01b81526001600160a01b0392831660048201526024810191909152911690819063a9059cbb90604401602060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b191906115af565b506002820180546000909155604080518881526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505050505050565b60008581526005602081905260409091209081015443108015610728575060008160040154115b61079a5760405162461bcd60e51b815260206004820152602860248201527f50325049583a204c6f636b20616c72656164792072656c6561736564206f722060448201527f72657475726e656400000000000000000000000000000000000000000000000060648201526084016102ea565b805460009081526004602081815260408084209285015490519293926107c8926005860192918b910161160c565b60405160208183030381529060405280519060200120905060008160405160200161081f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600690935291205490915060ff16156108bd5760405162461bcd60e51b815260206004820152603160248201527f50325049583a205472616e73616374696f6e20616c726561647920757365642060448201527f746f20756e6c6f636b207061796d656e7400000000000000000000000000000060648201526084016102ea565b6040805160008082526020820180845284905260ff881692820192909252606081018990526080810188905260019060a0016020604051602081039080840390855afa158015610911573d6000803e3d6000fd5b505060408051601f1901516001600160a01b03811660009081526003602052919091205490925060ff1690506109955760405162461bcd60e51b815260206004820152602360248201527f50325049583a205369676e6572206973206e6f7420612076616c6964207369676044820152623732b960e91b60648201526084016102ea565b60018085015490860154600387015460048801546001600160a01b0393841693849363a9059cbb939116916109ca9190611598565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906115af565b50600386015415610afb576002860154600387015460405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529082169063a9059cbb90604401602060405180830381600087803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af991906115af565b505b600060048701819055600587018190558481526006602052604090819020805460ff1916600190811790915587015490516001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d90610b67908e815260200190565b60405180910390a25050505050505050505050565b610b8461118d565b6040514790339082156108fc029083906000818181858888f19350505050158015610bb3573d6000803e3d6000fd5b5060408051338152602081018390527fbf0d92faf65e256806eefa1a0d281d4873cc3c80d1ed25b8ae6f7cc66fc918ef910160405180910390a150565b610bf861118d565b610c0260006111e7565b565b60008181526004602052604090205481906001600160a01b03163314610c815760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204f6e6c792073656c6c657220636f756c642063616c6c20746860448201526b34b990333ab731ba34b7b71760a11b60648201526084016102ea565b600082815260046020818152604092839020918201805460ff19169055905491518481526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a25050565b8060005b818161ffff161015610e5c5760006005600086868561ffff16818110610d0c57610d0c6116b3565b9050602002013581526020019081526020016000209050438160050154108015610d3a575060008160040154115b610dac5760405162461bcd60e51b815260206004820152602b60248201527f50325049583a204c6f636b206e6f742065787069726564206f7220616c72656160448201527f64792072656c656173656400000000000000000000000000000000000000000060648201526084016102ea565b806004015460046000836000015481526020019081526020016000206002016000828254610dda9190611580565b90915550506000600482015560018101546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff868661ffff8616818110610e2b57610e2b6116b3565b90506020020135604051610e4191815260200190565b60405180910390a25080610e54816116c9565b915050610ce4565b50505050565b6000610e6d60015490565b6000818152600460208190526040909120015490915060ff1615610ef95760405162461bcd60e51b815260206004820152603260248201527f50325049583a204465706f73697420616c726561647920657869737420616e6460448201527f206974206973207374696c6c2076616c6964000000000000000000000000000060648201526084016102ea565b6040516323b872dd60e01b81523360048201523060248201526044810185905285906001600160a01b038216906323b872dd90606401602060405180830381600087803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8191906115af565b5060006040518060c00160405280336001600160a01b03168152602001886001600160a01b0316815260200187815260200134815260200160011515815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505085815260046020818152604092839020855181546001600160a01b0391821673ffffffffffffffffffffffffffffffffffffffff1991821617835583880151600184018054919093169116179055928501516002840155606085015160038401556080850151918301805492151560ff199093169290921790915560a0840151805194955085949293506110979260058501929190910190611244565b5050600180548101905550604080518481526001600160a01b0389166020820152348183015260608101889052905133917fe0cfbec12278e314697ee34bb7a1ba4d704e84c438680672f7c1175f287e5910919081900360800190a25050949350505050565b61110561118d565b6001600160a01b0381166111815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102ea565b61118a816111e7565b50565b6000546001600160a01b03163314610c025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ea565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054611250906115d1565b90600052602060002090601f01602090048101928261127257600085556112b8565b82601f1061128b57805160ff19168380011785556112b8565b828001600101855582156112b8579182015b828111156112b857825182559160200191906001019061129d565b506112c49291506112c8565b5090565b5b808211156112c457600081556001016112c9565b80356001600160a01b03811681146112f457600080fd5b919050565b60008083601f84011261130b57600080fd5b50813567ffffffffffffffff81111561132357600080fd5b6020830191508360208260051b850101111561133e57600080fd5b9250929050565b600080600080600080600060c0888a03121561136057600080fd5b87359650611370602089016112dd565b955061137e604089016112dd565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156113a857600080fd5b6113b48a828b016112f9565b989b979a50959850939692959293505050565b6000806000604084860312156113dc57600080fd5b83359250602084013567ffffffffffffffff8111156113fa57600080fd5b611406868287016112f9565b9497909650939450505050565b600080600080600060a0868803121561142b57600080fd5b85359450602086013593506040860135925060608601359150608086013560ff8116811461145857600080fd5b809150509295509295909350565b60006020828403121561147857600080fd5b5035919050565b6000806020838503121561149257600080fd5b823567ffffffffffffffff8111156114a957600080fd5b6114b5858286016112f9565b90969095509350505050565b6000602082840312156114d357600080fd5b6114dc826112dd565b9392505050565b600080600080606085870312156114f957600080fd5b611502856112dd565b935060208501359250604085013567ffffffffffffffff8082111561152657600080fd5b818701915087601f83011261153a57600080fd5b81358181111561154957600080fd5b88602082850101111561155b57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156115935761159361156a565b500190565b6000828210156115aa576115aa61156a565b500390565b6000602082840312156115c157600080fd5b815180151581146114dc57600080fd5b600181811c908216806115e557607f821691505b6020821081141561160657634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061162857607f831692505b602080841082141561164857634e487b7160e01b86526022600452602486fd5b81801561165c576001811461166d5761169a565b60ff1986168952848901965061169a565b60008c81526020902060005b868110156116925781548b820152908501908301611679565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818114156116e1576116e161156a565b600101939250505056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106100d25760003560e01c806372fada5c1161007f5780639872dbfe116100595780639872dbfe146101f5578063b93bd7d41461020b578063bfe07da61461024b578063f2fde38b1461025e57600080fd5b806372fada5c1461018d5780638da5cb5b146101ad5780638e2749d6146101d557600080fd5b80634e1389ed116100b05780634e1389ed146101435780636193cdfb14610163578063715018a61461017857600080fd5b806303aaf306146100d75780632dfdf0b51461010a5780633631797214610121575b600080fd5b3480156100e357600080fd5b506100f76100f2366004611345565b61027e565b6040519081526020015b60405180910390f35b34801561011657600080fd5b506001546100f79081565b34801561012d57600080fd5b5061014161013c3660046113c7565b610573565b005b34801561014f57600080fd5b5061014161015e366004611413565b610701565b34801561016f57600080fd5b50610141610b7c565b34801561018457600080fd5b50610141610bf0565b34801561019957600080fd5b506101416101a8366004611466565b610c04565b3480156101b957600080fd5b506000546040516001600160a01b039091168152602001610101565b3480156101e157600080fd5b506101416101f036600461147f565b610ce0565b34801561020157600080fd5b506100f760025481565b34801561021757600080fd5b5061023b6102263660046114c1565b60036020526000908152604090205460ff1681565b6040519015158152602001610101565b6100f76102593660046114e3565b610e62565b34801561026a57600080fd5b506101416102793660046114c1565b6110fd565b600061028a8383610ce0565b60008881526004602081905260409091209081015460ff166102f35760405162461bcd60e51b815260206004820181905260248201527f50325049583a204465706f736974206e6f742076616c696420616e796d6f726560448201526064015b60405180910390fd5b848160020154101561036d5760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204e6f7420656e6f75676820746f6b656e2072656d61696e696e60448201527f67206f6e206465706f736974000000000000000000000000000000000000000060648201526084016102ea565b60408051602081018b9052908101869052606089811b6bffffffffffffffffffffffff1916908201526074016040516020818303038152906040528051906020012091504360056000848152602001908152602001600020600501541061043c5760405162461bcd60e51b815260206004820152603360248201527f50325049583a20416e6f74686572206c6f636b20776974682073616d6520494460448201527f206973206e6f742065787069726564207965740000000000000000000000000060648201526084016102ea565b60006040518060c001604052808b81526020018a6001600160a01b03168152602001896001600160a01b03168152602001888152602001878152602001600254436104879190611580565b9052600084815260056020818152604080842085518155918501516001830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915591860151600280850180549290931691909316179055606085015160038301556080850151600483015560a0850151919092015584018054929350889290919061051b908490611598565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a35050979650505050505050565b60008381526004602052604090205483906001600160a01b031633146105f05760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204f6e6c792073656c6c657220636f756c642063616c6c20746860448201526b34b990333ab731ba34b7b71760a11b60648201526084016102ea565b6105fa8383610ce0565b60008481526004602081905260409091209081015460ff16156106205761062085610c04565b60018101548154600283015460405163a9059cbb60e01b81526001600160a01b0392831660048201526024810191909152911690819063a9059cbb90604401602060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b191906115af565b506002820180546000909155604080518881526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505050505050565b60008581526005602081905260409091209081015443108015610728575060008160040154115b61079a5760405162461bcd60e51b815260206004820152602860248201527f50325049583a204c6f636b20616c72656164792072656c6561736564206f722060448201527f72657475726e656400000000000000000000000000000000000000000000000060648201526084016102ea565b805460009081526004602081815260408084209285015490519293926107c8926005860192918b910161160c565b60405160208183030381529060405280519060200120905060008160405160200161081f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600690935291205490915060ff16156108bd5760405162461bcd60e51b815260206004820152603160248201527f50325049583a205472616e73616374696f6e20616c726561647920757365642060448201527f746f20756e6c6f636b207061796d656e7400000000000000000000000000000060648201526084016102ea565b6040805160008082526020820180845284905260ff881692820192909252606081018990526080810188905260019060a0016020604051602081039080840390855afa158015610911573d6000803e3d6000fd5b505060408051601f1901516001600160a01b03811660009081526003602052919091205490925060ff1690506109955760405162461bcd60e51b815260206004820152602360248201527f50325049583a205369676e6572206973206e6f7420612076616c6964207369676044820152623732b960e91b60648201526084016102ea565b60018085015490860154600387015460048801546001600160a01b0393841693849363a9059cbb939116916109ca9190611598565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906115af565b50600386015415610afb576002860154600387015460405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529082169063a9059cbb90604401602060405180830381600087803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af991906115af565b505b600060048701819055600587018190558481526006602052604090819020805460ff1916600190811790915587015490516001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d90610b67908e815260200190565b60405180910390a25050505050505050505050565b610b8461118d565b6040514790339082156108fc029083906000818181858888f19350505050158015610bb3573d6000803e3d6000fd5b5060408051338152602081018390527fbf0d92faf65e256806eefa1a0d281d4873cc3c80d1ed25b8ae6f7cc66fc918ef910160405180910390a150565b610bf861118d565b610c0260006111e7565b565b60008181526004602052604090205481906001600160a01b03163314610c815760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204f6e6c792073656c6c657220636f756c642063616c6c20746860448201526b34b990333ab731ba34b7b71760a11b60648201526084016102ea565b600082815260046020818152604092839020918201805460ff19169055905491518481526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a25050565b8060005b818161ffff161015610e5c5760006005600086868561ffff16818110610d0c57610d0c6116b3565b9050602002013581526020019081526020016000209050438160050154108015610d3a575060008160040154115b610dac5760405162461bcd60e51b815260206004820152602b60248201527f50325049583a204c6f636b206e6f742065787069726564206f7220616c72656160448201527f64792072656c656173656400000000000000000000000000000000000000000060648201526084016102ea565b806004015460046000836000015481526020019081526020016000206002016000828254610dda9190611580565b90915550506000600482015560018101546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff868661ffff8616818110610e2b57610e2b6116b3565b90506020020135604051610e4191815260200190565b60405180910390a25080610e54816116c9565b915050610ce4565b50505050565b6000610e6d60015490565b6000818152600460208190526040909120015490915060ff1615610ef95760405162461bcd60e51b815260206004820152603260248201527f50325049583a204465706f73697420616c726561647920657869737420616e6460448201527f206974206973207374696c6c2076616c6964000000000000000000000000000060648201526084016102ea565b6040516323b872dd60e01b81523360048201523060248201526044810185905285906001600160a01b038216906323b872dd90606401602060405180830381600087803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8191906115af565b5060006040518060c00160405280336001600160a01b03168152602001886001600160a01b0316815260200187815260200134815260200160011515815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505085815260046020818152604092839020855181546001600160a01b0391821673ffffffffffffffffffffffffffffffffffffffff1991821617835583880151600184018054919093169116179055928501516002840155606085015160038401556080850151918301805492151560ff199093169290921790915560a0840151805194955085949293506110979260058501929190910190611244565b5050600180548101905550604080518481526001600160a01b0389166020820152348183015260608101889052905133917fe0cfbec12278e314697ee34bb7a1ba4d704e84c438680672f7c1175f287e5910919081900360800190a25050949350505050565b61110561118d565b6001600160a01b0381166111815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102ea565b61118a816111e7565b50565b6000546001600160a01b03163314610c025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ea565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054611250906115d1565b90600052602060002090601f01602090048101928261127257600085556112b8565b82601f1061128b57805160ff19168380011785556112b8565b828001600101855582156112b8579182015b828111156112b857825182559160200191906001019061129d565b506112c49291506112c8565b5090565b5b808211156112c457600081556001016112c9565b80356001600160a01b03811681146112f457600080fd5b919050565b60008083601f84011261130b57600080fd5b50813567ffffffffffffffff81111561132357600080fd5b6020830191508360208260051b850101111561133e57600080fd5b9250929050565b600080600080600080600060c0888a03121561136057600080fd5b87359650611370602089016112dd565b955061137e604089016112dd565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156113a857600080fd5b6113b48a828b016112f9565b989b979a50959850939692959293505050565b6000806000604084860312156113dc57600080fd5b83359250602084013567ffffffffffffffff8111156113fa57600080fd5b611406868287016112f9565b9497909650939450505050565b600080600080600060a0868803121561142b57600080fd5b85359450602086013593506040860135925060608601359150608086013560ff8116811461145857600080fd5b809150509295509295909350565b60006020828403121561147857600080fd5b5035919050565b6000806020838503121561149257600080fd5b823567ffffffffffffffff8111156114a957600080fd5b6114b5858286016112f9565b90969095509350505050565b6000602082840312156114d357600080fd5b6114dc826112dd565b9392505050565b600080600080606085870312156114f957600080fd5b611502856112dd565b935060208501359250604085013567ffffffffffffffff8082111561152657600080fd5b818701915087601f83011261153a57600080fd5b81358181111561154957600080fd5b88602082850101111561155b57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156115935761159361156a565b500190565b6000828210156115aa576115aa61156a565b500390565b6000602082840312156115c157600080fd5b815180151581146114dc57600080fd5b600181811c908216806115e557607f821691505b6020821081141561160657634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061162857607f831692505b602080841082141561164857634e487b7160e01b86526022600452602486fd5b81801561165c576001811461166d5761169a565b60ff1986168952848901965061169a565b60008c81526020902060005b868110156116925781548b820152908501908301611679565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818114156116e1576116e161156a565b600101939250505056fea164736f6c6343000809000a", + "bytecode": "0x60806040526001805560405162001806380380620018068339810160408190526200002a9162000123565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350600382905580516000905b80821015620000d6576000620000ae8484815181106200009a576200009a62000203565b6020026020010151620000e060201b60201c565b6000908152600460205260409020805460ff1916600190811790915592909201915062000076565b5050505062000219565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200011e57600080fd5b919050565b600080604083850312156200013757600080fd5b8251602080850151919350906001600160401b03808211156200015957600080fd5b818601915086601f8301126200016e57600080fd5b815181811115620001835762000183620000f0565b8060051b604051601f19603f83011681018181108582111715620001ab57620001ab620000f0565b604052918252848201925083810185019189831115620001ca57600080fd5b938501935b82851015620001f357620001e38562000106565b84529385019392850192620001cf565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6115dd80620002296000396000f3fe6080604052600436106100e85760003560e01c80636193cdfb1161008a5780638e2a3d36116100595780638e2a3d36146102f55780639872dbfe1461032757806398a268711461033d578063bfe07da61461037d57600080fd5b80636193cdfb1461026857806372fada5c1461027d5780638da5cb5b1461029d5780638e2749d6146102d557600080fd5b80632dfdf0b5116100c65780632dfdf0b5146101d857806336317972146101ef5780634b2ae9801461020f5780634e1389ed1461024857600080fd5b806303aaf306146100ed57806313af40351461012057806316d7224014610142575b600080fd5b3480156100f957600080fd5b5061010d6101083660046111e7565b610390565b6040519081526020015b60405180910390f35b34801561012c57600080fd5b5061014061013b366004611269565b61053a565b005b34801561014e57600080fd5b5061019f61015d366004611284565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03918216911686565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610117565b3480156101e457600080fd5b5060025461010d9081565b3480156101fb57600080fd5b5061014061020a36600461129d565b6105e0565b34801561021b57600080fd5b5061010d61022a366004611269565b600c1b750ffffffffffffffffffffffffffffffffffffffff0001690565b34801561025457600080fd5b506101406102633660046112e9565b6106a0565b34801561027457600080fd5b50610140610962565b34801561028957600080fd5b50610140610298366004611284565b6109f2565b3480156102a957600080fd5b506000546102bd906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b3480156102e157600080fd5b506101406102f036600461133c565b610a7a565b34801561030157600080fd5b50610315610310366004611284565b610b76565b6040516101179695949392919061137e565b34801561033357600080fd5b5061010d60035481565b34801561034957600080fd5b5061036d610358366004611284565b60046020526000908152604090205460ff1681565b6040519015158152602001610117565b61010d61038b36600461140c565b610c46565b600061039a610e00565b6103a48383610a7a565b60008881526005602052604090206004810154600160a01b900460ff166103de57604051635972996f60e11b815260040160405180910390fd5b8054851115610400576040516308aeed0f60e21b815260040160405180910390fd5b61040b89868a610e2b565b915060006040518060c001604052808b81526020018881526020018781526020016003544361043a91906114a9565b81526001600160a01b03808c166020808401919091528b82166040938401526000878152600682528381208551815591850151600183015592840151600282015560608401516003820155608084015160048201805491841673ffffffffffffffffffffffffffffffffffffffff1992831617905560a085015160059092018054929093169116179055835491925087918491906104d99084906114c1565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505061052f60018055565b979650505050505050565b6000546001600160a01b031633146105885760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6105e8610e00565b6105f183610eaf565b6105fb8282610a7a565b60008381526005602052604090206004810154600160a01b900460ff1615156001141561062b5761062b846109f2565b600481015481546000835560038301546001600160a01b03928316926106549184911683610eec565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505061069b60018055565b505050565b6106a8610e00565b6000858152600660205260409020600381015443108015906106cc57506002810154155b156106ea576040516331da482760e11b815260040160405180910390fd5b80546000908152600560209081526040808320600280860154925191949361071893918601928b9101611513565b60405160208183030381529060405280519060200120905060008160405160200161076f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600790935291205490915060ff161515600114156107bd57604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff881692820192909252606081018990526080810188905261083f9060019060a0016020604051602081039080840390855afa158015610815573d6000803e3d6000fd5b5050604051601f190151600c1b750ffffffffffffffffffffffffffffffffffffffff00016919050565b60008181526004602052604090205490915060ff1661087157604051632057875960e21b815260040160405180910390fd5b6004840154600186015460028701546001600160a01b0390921691600091610898916114c1565b60006002890181905560038901819055868152600760205260409020805460ff1916600117905560048801549091506108dc9083906001600160a01b031683610eec565b60018701541561090757600587015460018801546109079184916001600160a01b0390911690610eec565b60048701546040518d81526001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d9060200160405180910390a25050505050505061095b60018055565b5050505050565b6000546001600160a01b031633146109ab5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161057f565b476109b63382610f78565b60408051338152602081018390527fbf0d92faf65e256806eefa1a0d281d4873cc3c80d1ed25b8ae6f7cc66fc918ef910160405180910390a150565b6109fb81610eaf565b6000818152600560209081526040918290206004810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556003015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b6000815b80821015610b5a57600060066000868686818110610a9e57610a9e6115ba565b9050602002013581526020019081526020016000209050610abe81610fd3565b6002810154815460009081526005602052604081208054909190610ae39084906114a9565b90915550506000600282015560048101546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff868686818110610b3057610b306115ba565b90506020020135604051610b4691815260200190565b60405180910390a282600101925050610a7e565b80821015610b705763dfb035c96000526004601cfd5b50505050565b60056020526000908152604090208054600182015460028301805492939192610b9e906114d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca906114d8565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b50505050600383015460049093015491926001600160a01b03908116929081169150600160a01b900460ff1686565b6000610c50611006565b9050600085905060006040518060c0016040528087815260200134815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038916604082015260016060909101529050610cd0610e00565b60008381526005602090815260409182902083518155818401516001820155918301518051849392610d099260028501929101906110e6565b50606082015160038201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392831617905560808301516004909201805460a090940151929091167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217600160a01b91151591909102179055600280546001019055610d9c82333089611056565b610da560018055565b604080518481526001600160a01b0389166020820152348183015260608101889052905133917fe0cfbec12278e314697ee34bb7a1ba4d704e84c438680672f7c1175f287e5910919081900360800190a25050949350505050565b60015460021415610e245760405163558a1e0360e11b815260040160405180910390fd5b6002600155565b6040805160208101859052908101839052606082811b6bffffffffffffffffffffffff19169082015260009060740160405160208183030381529060405280519060200120905043600660008381526020019081526020016000206003015410610ea85760405163d0404f8560e01b815260040160405180910390fd5b9392505050565b6000818152600560205260409020600301546001600160a01b03163314610ee9576040516342e8fb9360e11b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d1160016000511416171691506000606052806040525080610b705760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161057f565b600080600080600085875af190508061069b5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161057f565b438160030154101580610fe857506002810154155b15610ee95760405163d0404f8560e01b815260040160405180910390fd5b600061101160025490565b600081815260056020526040902060040154909150600160a01b900460ff161515600114156110535760405163c44bd76560e01b815260040160405180910390fd5b90565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061095b5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161057f565b8280546110f2906114d8565b90600052602060002090601f016020900481019282611114576000855561115a565b82601f1061112d57805160ff191683800117855561115a565b8280016001018555821561115a579182015b8281111561115a57825182559160200191906001019061113f565b5061116692915061116a565b5090565b5b80821115611166576000815560010161116b565b80356001600160a01b038116811461119657600080fd5b919050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208260051b85010111156111e057600080fd5b9250929050565b600080600080600080600060c0888a03121561120257600080fd5b873596506112126020890161117f565b95506112206040890161117f565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561124a57600080fd5b6112568a828b0161119b565b989b979a50959850939692959293505050565b60006020828403121561127b57600080fd5b610ea88261117f565b60006020828403121561129657600080fd5b5035919050565b6000806000604084860312156112b257600080fd5b83359250602084013567ffffffffffffffff8111156112d057600080fd5b6112dc8682870161119b565b9497909650939450505050565b600080600080600060a0868803121561130157600080fd5b85359450602086013593506040860135925060608601359150608086013560ff8116811461132e57600080fd5b809150509295509295909350565b6000806020838503121561134f57600080fd5b823567ffffffffffffffff81111561136657600080fd5b6113728582860161119b565b90969095509350505050565b86815260006020878184015260c0604084015286518060c085015260005b818110156113b85788810183015185820160e00152820161139c565b818111156113ca57600060e083870101525b50601f01601f1916830160e00191506113f0905060608301866001600160a01b03169052565b6001600160a01b038416608083015282151560a083015261052f565b6000806000806060858703121561142257600080fd5b61142b8561117f565b935060208501359250604085013567ffffffffffffffff8082111561144f57600080fd5b818701915087601f83011261146357600080fd5b81358181111561147257600080fd5b88602082850101111561148457600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156114bc576114bc611493565b500190565b6000828210156114d3576114d3611493565b500390565b600181811c908216806114ec57607f821691505b6020821081141561150d57634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061152f57607f831692505b602080841082141561154f57634e487b7160e01b86526022600452602486fd5b8180156115635760018114611574576115a1565b60ff198616895284890196506115a1565b60008c81526020902060005b868110156115995781548b820152908501908301611580565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052603260045260246000fdfea164736f6c6343000809000a", + "deployedBytecode": "0x6080604052600436106100e85760003560e01c80636193cdfb1161008a5780638e2a3d36116100595780638e2a3d36146102f55780639872dbfe1461032757806398a268711461033d578063bfe07da61461037d57600080fd5b80636193cdfb1461026857806372fada5c1461027d5780638da5cb5b1461029d5780638e2749d6146102d557600080fd5b80632dfdf0b5116100c65780632dfdf0b5146101d857806336317972146101ef5780634b2ae9801461020f5780634e1389ed1461024857600080fd5b806303aaf306146100ed57806313af40351461012057806316d7224014610142575b600080fd5b3480156100f957600080fd5b5061010d6101083660046111e7565b610390565b6040519081526020015b60405180910390f35b34801561012c57600080fd5b5061014061013b366004611269565b61053a565b005b34801561014e57600080fd5b5061019f61015d366004611284565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03918216911686565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610117565b3480156101e457600080fd5b5060025461010d9081565b3480156101fb57600080fd5b5061014061020a36600461129d565b6105e0565b34801561021b57600080fd5b5061010d61022a366004611269565b600c1b750ffffffffffffffffffffffffffffffffffffffff0001690565b34801561025457600080fd5b506101406102633660046112e9565b6106a0565b34801561027457600080fd5b50610140610962565b34801561028957600080fd5b50610140610298366004611284565b6109f2565b3480156102a957600080fd5b506000546102bd906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b3480156102e157600080fd5b506101406102f036600461133c565b610a7a565b34801561030157600080fd5b50610315610310366004611284565b610b76565b6040516101179695949392919061137e565b34801561033357600080fd5b5061010d60035481565b34801561034957600080fd5b5061036d610358366004611284565b60046020526000908152604090205460ff1681565b6040519015158152602001610117565b61010d61038b36600461140c565b610c46565b600061039a610e00565b6103a48383610a7a565b60008881526005602052604090206004810154600160a01b900460ff166103de57604051635972996f60e11b815260040160405180910390fd5b8054851115610400576040516308aeed0f60e21b815260040160405180910390fd5b61040b89868a610e2b565b915060006040518060c001604052808b81526020018881526020018781526020016003544361043a91906114a9565b81526001600160a01b03808c166020808401919091528b82166040938401526000878152600682528381208551815591850151600183015592840151600282015560608401516003820155608084015160048201805491841673ffffffffffffffffffffffffffffffffffffffff1992831617905560a085015160059092018054929093169116179055835491925087918491906104d99084906114c1565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505061052f60018055565b979650505050505050565b6000546001600160a01b031633146105885760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6105e8610e00565b6105f183610eaf565b6105fb8282610a7a565b60008381526005602052604090206004810154600160a01b900460ff1615156001141561062b5761062b846109f2565b600481015481546000835560038301546001600160a01b03928316926106549184911683610eec565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505061069b60018055565b505050565b6106a8610e00565b6000858152600660205260409020600381015443108015906106cc57506002810154155b156106ea576040516331da482760e11b815260040160405180910390fd5b80546000908152600560209081526040808320600280860154925191949361071893918601928b9101611513565b60405160208183030381529060405280519060200120905060008160405160200161076f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600790935291205490915060ff161515600114156107bd57604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff881692820192909252606081018990526080810188905261083f9060019060a0016020604051602081039080840390855afa158015610815573d6000803e3d6000fd5b5050604051601f190151600c1b750ffffffffffffffffffffffffffffffffffffffff00016919050565b60008181526004602052604090205490915060ff1661087157604051632057875960e21b815260040160405180910390fd5b6004840154600186015460028701546001600160a01b0390921691600091610898916114c1565b60006002890181905560038901819055868152600760205260409020805460ff1916600117905560048801549091506108dc9083906001600160a01b031683610eec565b60018701541561090757600587015460018801546109079184916001600160a01b0390911690610eec565b60048701546040518d81526001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d9060200160405180910390a25050505050505061095b60018055565b5050505050565b6000546001600160a01b031633146109ab5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161057f565b476109b63382610f78565b60408051338152602081018390527fbf0d92faf65e256806eefa1a0d281d4873cc3c80d1ed25b8ae6f7cc66fc918ef910160405180910390a150565b6109fb81610eaf565b6000818152600560209081526040918290206004810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556003015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b6000815b80821015610b5a57600060066000868686818110610a9e57610a9e6115ba565b9050602002013581526020019081526020016000209050610abe81610fd3565b6002810154815460009081526005602052604081208054909190610ae39084906114a9565b90915550506000600282015560048101546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff868686818110610b3057610b306115ba565b90506020020135604051610b4691815260200190565b60405180910390a282600101925050610a7e565b80821015610b705763dfb035c96000526004601cfd5b50505050565b60056020526000908152604090208054600182015460028301805492939192610b9e906114d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca906114d8565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b50505050600383015460049093015491926001600160a01b03908116929081169150600160a01b900460ff1686565b6000610c50611006565b9050600085905060006040518060c0016040528087815260200134815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038916604082015260016060909101529050610cd0610e00565b60008381526005602090815260409182902083518155818401516001820155918301518051849392610d099260028501929101906110e6565b50606082015160038201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392831617905560808301516004909201805460a090940151929091167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217600160a01b91151591909102179055600280546001019055610d9c82333089611056565b610da560018055565b604080518481526001600160a01b0389166020820152348183015260608101889052905133917fe0cfbec12278e314697ee34bb7a1ba4d704e84c438680672f7c1175f287e5910919081900360800190a25050949350505050565b60015460021415610e245760405163558a1e0360e11b815260040160405180910390fd5b6002600155565b6040805160208101859052908101839052606082811b6bffffffffffffffffffffffff19169082015260009060740160405160208183030381529060405280519060200120905043600660008381526020019081526020016000206003015410610ea85760405163d0404f8560e01b815260040160405180910390fd5b9392505050565b6000818152600560205260409020600301546001600160a01b03163314610ee9576040516342e8fb9360e11b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d1160016000511416171691506000606052806040525080610b705760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161057f565b600080600080600085875af190508061069b5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161057f565b438160030154101580610fe857506002810154155b15610ee95760405163d0404f8560e01b815260040160405180910390fd5b600061101160025490565b600081815260056020526040902060040154909150600160a01b900460ff161515600114156110535760405163c44bd76560e01b815260040160405180910390fd5b90565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061095b5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161057f565b8280546110f2906114d8565b90600052602060002090601f016020900481019282611114576000855561115a565b82601f1061112d57805160ff191683800117855561115a565b8280016001018555821561115a579182015b8281111561115a57825182559160200191906001019061113f565b5061116692915061116a565b5090565b5b80821115611166576000815560010161116b565b80356001600160a01b038116811461119657600080fd5b919050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208260051b85010111156111e057600080fd5b9250929050565b600080600080600080600060c0888a03121561120257600080fd5b873596506112126020890161117f565b95506112206040890161117f565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561124a57600080fd5b6112568a828b0161119b565b989b979a50959850939692959293505050565b60006020828403121561127b57600080fd5b610ea88261117f565b60006020828403121561129657600080fd5b5035919050565b6000806000604084860312156112b257600080fd5b83359250602084013567ffffffffffffffff8111156112d057600080fd5b6112dc8682870161119b565b9497909650939450505050565b600080600080600060a0868803121561130157600080fd5b85359450602086013593506040860135925060608601359150608086013560ff8116811461132e57600080fd5b809150509295509295909350565b6000806020838503121561134f57600080fd5b823567ffffffffffffffff81111561136657600080fd5b6113728582860161119b565b90969095509350505050565b86815260006020878184015260c0604084015286518060c085015260005b818110156113b85788810183015185820160e00152820161139c565b818111156113ca57600060e083870101525b50601f01601f1916830160e00191506113f0905060608301866001600160a01b03169052565b6001600160a01b038416608083015282151560a083015261052f565b6000806000806060858703121561142257600080fd5b61142b8561117f565b935060208501359250604085013567ffffffffffffffff8082111561144f57600080fd5b818701915087601f83011261146357600080fd5b81358181111561147257600080fd5b88602082850101111561148457600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156114bc576114bc611493565b500190565b6000828210156114d3576114d3611493565b500390565b600181811c908216806114ec57607f821691505b6020821081141561150d57634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061152f57607f831692505b602080841082141561154f57634e487b7160e01b86526022600452602486fd5b8180156115635760018114611574576115a1565b60ff198616895284890196506115a1565b60008c81526020902060005b868110156115995781548b820152908501908301611580565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052603260045260246000fdfea164736f6c6343000809000a", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/@openzeppelin/contracts/access/Ownable.sol b/contracts/@openzeppelin/contracts/access/Ownable.sol deleted file mode 100644 index 991f98a..0000000 --- a/contracts/@openzeppelin/contracts/access/Ownable.sol +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) - -pragma solidity ^0.8.0; - -import "../utils/Context.sol"; - -/** - * @dev Contract module which provides a basic access control mechanism, where - * there is an account (an owner) that can be granted exclusive access to - * specific functions. - * - * By default, the owner account will be the one that deploys the contract. This - * can later be changed with {transferOwnership}. - * - * This module is used through inheritance. It will make available the modifier - * `onlyOwner`, which can be applied to your functions to restrict their use to - * the owner. - */ -abstract contract Ownable is Context { - address private _owner; - - event OwnershipTransferred( - address indexed previousOwner, - address indexed newOwner - ); - - /** - * @dev Initializes the contract setting the deployer as the initial owner. - */ - constructor() { - _transferOwnership(_msgSender()); - } - - /** - * @dev Throws if called by any account other than the owner. - */ - modifier onlyOwner() { - _checkOwner(); - _; - } - - /** - * @dev Returns the address of the current owner. - */ - function owner() public view virtual returns (address) { - return _owner; - } - - /** - * @dev Throws if the sender is not the owner. - */ - function _checkOwner() internal view virtual { - require( - owner() == _msgSender(), - "Ownable: caller is not the owner" - ); - } - - /** - * @dev 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. - */ - function renounceOwnership() public virtual onlyOwner { - _transferOwnership(address(0)); - } - - /** - * @dev Transfers ownership of the contract to a new account (`newOwner`). - * Can only be called by the current owner. - */ - function transferOwnership( - address newOwner - ) public virtual onlyOwner { - require( - newOwner != address(0), - "Ownable: new owner is the zero address" - ); - _transferOwnership(newOwner); - } - - /** - * @dev Transfers ownership of the contract to a new account (`newOwner`). - * Internal function without access restriction. - */ - function _transferOwnership( - address newOwner - ) internal virtual { - address oldOwner = _owner; - _owner = newOwner; - emit OwnershipTransferred(oldOwner, newOwner); - } -} diff --git a/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol b/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol deleted file mode 100644 index fe7bdec..0000000 --- a/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol +++ /dev/null @@ -1,479 +0,0 @@ -// SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) - -pragma solidity ^0.8.0; - -import "./IERC20.sol"; -import "./extensions/IERC20Metadata.sol"; -import "../../utils/Context.sol"; - -/** - * @dev Implementation of the {IERC20} interface. - * - * This implementation is agnostic to the way tokens are created. This means - * that a supply mechanism has to be added in a derived contract using {_mint}. - * For a generic mechanism see {ERC20PresetMinterPauser}. - * - * TIP: For a detailed writeup see our guide - * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How - * to implement supply mechanisms]. - * - * We have followed general OpenZeppelin Contracts guidelines: functions revert - * instead returning `false` on failure. This behavior is nonetheless - * conventional and does not conflict with the expectations of ERC20 - * applications. - * - * Additionally, an {Approval} event is emitted on calls to {transferFrom}. - * This allows applications to reconstruct the allowance for all accounts just - * by listening to said events. Other implementations of the EIP may not emit - * these events, as it isn't required by the specification. - * - * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} - * functions have been added to mitigate the well-known issues around setting - * allowances. See {IERC20-approve}. - */ -contract ERC20 is Context, IERC20, IERC20Metadata { - mapping(address => uint256) private _balances; - - mapping(address => mapping(address => uint256)) - private _allowances; - - uint256 private _totalSupply; - - string private _name; - string private _symbol; - - /** - * @dev Sets the values for {name} and {symbol}. - * - * The default value of {decimals} is 18. To select a different value for - * {decimals} you should overload it. - * - * All two of these values are immutable: they can only be set once during - * construction. - */ - constructor(string memory name_, string memory symbol_) { - _name = name_; - _symbol = symbol_; - } - - /** - * @dev Returns the name of the token. - */ - function name() - public - view - virtual - override - returns (string memory) - { - return _name; - } - - /** - * @dev Returns the symbol of the token, usually a shorter version of the - * name. - */ - function symbol() - public - view - virtual - override - returns (string memory) - { - return _symbol; - } - - /** - * @dev Returns the number of decimals used to get its user representation. - * For example, if `decimals` equals `2`, a balance of `505` tokens should - * be displayed to a user as `5.05` (`505 / 10 ** 2`). - * - * Tokens usually opt for a value of 18, imitating the relationship between - * Ether and Wei. This is the value {ERC20} uses, unless this function is - * overridden; - * - * NOTE: This information is only used for _display_ purposes: it in - * no way affects any of the arithmetic of the contract, including - * {IERC20-balanceOf} and {IERC20-transfer}. - */ - function decimals() - public - view - virtual - override - returns (uint8) - { - return 18; - } - - /** - * @dev See {IERC20-totalSupply}. - */ - function totalSupply() - public - view - virtual - override - returns (uint256) - { - return _totalSupply; - } - - /** - * @dev See {IERC20-balanceOf}. - */ - function balanceOf( - address account - ) public view virtual override returns (uint256) { - return _balances[account]; - } - - /** - * @dev See {IERC20-transfer}. - * - * Requirements: - * - * - `to` cannot be the zero address. - * - the caller must have a balance of at least `amount`. - */ - function transfer( - address to, - uint256 amount - ) public virtual override returns (bool) { - address owner = _msgSender(); - _transfer(owner, to, amount); - return true; - } - - /** - * @dev See {IERC20-allowance}. - */ - function allowance( - address owner, - address spender - ) public view virtual override returns (uint256) { - return _allowances[owner][spender]; - } - - /** - * @dev See {IERC20-approve}. - * - * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on - * `transferFrom`. This is semantically equivalent to an infinite approval. - * - * Requirements: - * - * - `spender` cannot be the zero address. - */ - function approve( - address spender, - uint256 amount - ) public virtual override returns (bool) { - address owner = _msgSender(); - _approve(owner, spender, amount); - return true; - } - - /** - * @dev See {IERC20-transferFrom}. - * - * Emits an {Approval} event indicating the updated allowance. This is not - * required by the EIP. See the note at the beginning of {ERC20}. - * - * NOTE: Does not update the allowance if the current allowance - * is the maximum `uint256`. - * - * Requirements: - * - * - `from` and `to` cannot be the zero address. - * - `from` must have a balance of at least `amount`. - * - the caller must have allowance for ``from``'s tokens of at least - * `amount`. - */ - function transferFrom( - address from, - address to, - uint256 amount - ) public virtual override returns (bool) { - address spender = _msgSender(); - _spendAllowance(from, spender, amount); - _transfer(from, to, amount); - return true; - } - - /** - * @dev Atomically increases the allowance granted to `spender` by the caller. - * - * This is an alternative to {approve} that can be used as a mitigation for - * problems described in {IERC20-approve}. - * - * Emits an {Approval} event indicating the updated allowance. - * - * Requirements: - * - * - `spender` cannot be the zero address. - */ - function increaseAllowance( - address spender, - uint256 addedValue - ) public virtual returns (bool) { - address owner = _msgSender(); - _approve( - owner, - spender, - allowance(owner, spender) + addedValue - ); - return true; - } - - /** - * @dev Atomically decreases the allowance granted to `spender` by the caller. - * - * This is an alternative to {approve} that can be used as a mitigation for - * problems described in {IERC20-approve}. - * - * Emits an {Approval} event indicating the updated allowance. - * - * Requirements: - * - * - `spender` cannot be the zero address. - * - `spender` must have allowance for the caller of at least - * `subtractedValue`. - */ - function decreaseAllowance( - address spender, - uint256 subtractedValue - ) public virtual returns (bool) { - address owner = _msgSender(); - uint256 currentAllowance = allowance(owner, spender); - require( - currentAllowance >= subtractedValue, - "ERC20: decreased allowance below zero" - ); - unchecked { - _approve( - owner, - spender, - currentAllowance - subtractedValue - ); - } - - return true; - } - - /** - * @dev Moves `amount` of tokens from `from` to `to`. - * - * This internal function is equivalent to {transfer}, and can be used to - * e.g. implement automatic token fees, slashing mechanisms, etc. - * - * Emits a {Transfer} event. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `from` must have a balance of at least `amount`. - */ - function _transfer( - address from, - address to, - uint256 amount - ) internal virtual { - require( - from != address(0), - "ERC20: transfer from the zero address" - ); - require( - to != address(0), - "ERC20: transfer to the zero address" - ); - - _beforeTokenTransfer(from, to, amount); - - uint256 fromBalance = _balances[from]; - require( - fromBalance >= amount, - "ERC20: transfer amount exceeds balance" - ); - unchecked { - _balances[from] = fromBalance - amount; - // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by - // decrementing then incrementing. - _balances[to] += amount; - } - - emit Transfer(from, to, amount); - - _afterTokenTransfer(from, to, amount); - } - - /** @dev Creates `amount` tokens and assigns them to `account`, increasing - * the total supply. - * - * Emits a {Transfer} event with `from` set to the zero address. - * - * Requirements: - * - * - `account` cannot be the zero address. - */ - function _mint( - address account, - uint256 amount - ) internal virtual { - require( - account != address(0), - "ERC20: mint to the zero address" - ); - - _beforeTokenTransfer(address(0), account, amount); - - _totalSupply += amount; - unchecked { - // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. - _balances[account] += amount; - } - emit Transfer(address(0), account, amount); - - _afterTokenTransfer(address(0), account, amount); - } - - /** - * @dev Destroys `amount` tokens from `account`, reducing the - * total supply. - * - * Emits a {Transfer} event with `to` set to the zero address. - * - * Requirements: - * - * - `account` cannot be the zero address. - * - `account` must have at least `amount` tokens. - */ - function _burn( - address account, - uint256 amount - ) internal virtual { - require( - account != address(0), - "ERC20: burn from the zero address" - ); - - _beforeTokenTransfer(account, address(0), amount); - - uint256 accountBalance = _balances[account]; - require( - accountBalance >= amount, - "ERC20: burn amount exceeds balance" - ); - unchecked { - _balances[account] = accountBalance - amount; - // Overflow not possible: amount <= accountBalance <= totalSupply. - _totalSupply -= amount; - } - - emit Transfer(account, address(0), amount); - - _afterTokenTransfer(account, address(0), amount); - } - - /** - * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. - * - * This internal function is equivalent to `approve`, and can be used to - * e.g. set automatic allowances for certain subsystems, etc. - * - * Emits an {Approval} event. - * - * Requirements: - * - * - `owner` cannot be the zero address. - * - `spender` cannot be the zero address. - */ - function _approve( - address owner, - address spender, - uint256 amount - ) internal virtual { - require( - owner != address(0), - "ERC20: approve from the zero address" - ); - require( - spender != address(0), - "ERC20: approve to the zero address" - ); - - _allowances[owner][spender] = amount; - emit Approval(owner, spender, amount); - } - - /** - * @dev Updates `owner` s allowance for `spender` based on spent `amount`. - * - * Does not update the allowance amount in case of infinite allowance. - * Revert if not enough allowance is available. - * - * Might emit an {Approval} event. - */ - function _spendAllowance( - address owner, - address spender, - uint256 amount - ) internal virtual { - uint256 currentAllowance = allowance(owner, spender); - if (currentAllowance != type(uint256).max) { - require( - currentAllowance >= amount, - "ERC20: insufficient allowance" - ); - unchecked { - _approve( - owner, - spender, - currentAllowance - amount - ); - } - } - } - - /** - * @dev Hook that is called before any transfer of tokens. This includes - * minting and burning. - * - * Calling conditions: - * - * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens - * will be transferred to `to`. - * - when `from` is zero, `amount` tokens will be minted for `to`. - * - when `to` is zero, `amount` of ``from``'s tokens will be burned. - * - `from` and `to` are never both zero. - * - * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. - */ - function _beforeTokenTransfer( - address from, - address to, - uint256 amount - ) internal virtual {} - - /** - * @dev Hook that is called after any transfer of tokens. This includes - * minting and burning. - * - * Calling conditions: - * - * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens - * has been transferred to `to`. - * - when `from` is zero, `amount` tokens have been minted for `to`. - * - when `to` is zero, `amount` of ``from``'s tokens have been burned. - * - `from` and `to` are never both zero. - * - * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. - */ - function _afterTokenTransfer( - address from, - address to, - uint256 amount - ) internal virtual {} -} diff --git a/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol b/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol deleted file mode 100644 index 7c4821c..0000000 --- a/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol +++ /dev/null @@ -1,101 +0,0 @@ -// SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) - -pragma solidity ^0.8.0; - -/** - * @dev Interface of the ERC20 standard as defined in the EIP. - */ -interface IERC20 { - /** - * @dev Emitted when `value` tokens are moved from one account (`from`) to - * another (`to`). - * - * Note that `value` may be zero. - */ - event Transfer( - address indexed from, - address indexed to, - uint256 value - ); - - /** - * @dev Emitted when the allowance of a `spender` for an `owner` is set by - * a call to {approve}. `value` is the new allowance. - */ - event Approval( - address indexed owner, - address indexed spender, - uint256 value - ); - - /** - * @dev Returns the amount of tokens in existence. - */ - function totalSupply() external view returns (uint256); - - /** - * @dev Returns the amount of tokens owned by `account`. - */ - function balanceOf( - address account - ) external view returns (uint256); - - /** - * @dev Moves `amount` tokens from the caller's account to `to`. - * - * Returns a boolean value indicating whether the operation succeeded. - * - * Emits a {Transfer} event. - */ - function transfer( - address to, - uint256 amount - ) external returns (bool); - - /** - * @dev Returns the remaining number of tokens that `spender` will be - * allowed to spend on behalf of `owner` through {transferFrom}. This is - * zero by default. - * - * This value changes when {approve} or {transferFrom} are called. - */ - function allowance( - address owner, - address spender - ) external view returns (uint256); - - /** - * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. - * - * Returns a boolean value indicating whether the operation succeeded. - * - * IMPORTANT: Beware that changing an allowance with this method brings the risk - * that someone may use both the old and the new allowance by unfortunate - * transaction ordering. One possible solution to mitigate this race - * condition is to first reduce the spender's allowance to 0 and set the - * desired value afterwards: - * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - * - * Emits an {Approval} event. - */ - function approve( - address spender, - uint256 amount - ) external returns (bool); - - /** - * @dev Moves `amount` tokens from `from` to `to` using the - * allowance mechanism. `amount` is then deducted from the caller's - * allowance. - * - * Returns a boolean value indicating whether the operation succeeded. - * - * Emits a {Transfer} event. - */ - function transferFrom( - address from, - address to, - uint256 amount - ) external returns (bool); -} diff --git a/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol b/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol deleted file mode 100644 index 83ba6ac..0000000 --- a/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) - -pragma solidity ^0.8.0; - -import "../IERC20.sol"; - -/** - * @dev Interface for the optional metadata functions from the ERC20 standard. - * - * _Available since v4.1._ - */ -interface IERC20Metadata is IERC20 { - /** - * @dev Returns the name of the token. - */ - function name() external view returns (string memory); - - /** - * @dev Returns the symbol of the token. - */ - function symbol() external view returns (string memory); - - /** - * @dev Returns the decimals places of the token. - */ - function decimals() external view returns (uint8); -} diff --git a/contracts/@openzeppelin/contracts/utils/Context.sol b/contracts/@openzeppelin/contracts/utils/Context.sol deleted file mode 100644 index 96b4132..0000000 --- a/contracts/@openzeppelin/contracts/utils/Context.sol +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/Context.sol) - -pragma solidity ^0.8.0; - -/** - * @dev Provides information about the current execution context, including the - * sender of the transaction and its data. While these are generally available - * via msg.sender and msg.data, they should not be accessed in such a direct - * manner, since when dealing with meta-transactions the account sending and - * paying for execution may not be the actual sender (as far as an application - * is concerned). - * - * This contract is only required for intermediate, library-like contracts. - */ -abstract contract Context { - function _msgSender() - internal - view - virtual - returns (address) - { - return msg.sender; - } - - function _msgData() - internal - view - virtual - returns (bytes calldata) - { - return msg.data; - } -} diff --git a/contracts/@openzeppelin/contracts/utils/Counters.sol b/contracts/@openzeppelin/contracts/utils/Counters.sol deleted file mode 100644 index 19c169e..0000000 --- a/contracts/@openzeppelin/contracts/utils/Counters.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) - -pragma solidity ^0.8.0; - -/** - * @title Counters - * @author Matt Condon (@shrugs) - * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number - * of elements in a mapping, issuing ERC721 ids, or counting request ids. - * - * Include with `using Counters for Counters.Counter;` - */ -library Counters { - struct Counter { - // This variable should never be directly accessed by users of the library: interactions must be restricted to - // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add - // this feature: see https://github.com/ethereum/solidity/issues/4637 - uint256 _value; // default: 0 - } - - function current( - Counter storage counter - ) internal view returns (uint256) { - return counter._value; - } - - function increment(Counter storage counter) internal { - unchecked { - counter._value += 1; - } - } - - function decrement(Counter storage counter) internal { - uint256 value = counter._value; - require(value > 0, "Counter: decrement overflow"); - unchecked { - counter._value = value - 1; - } - } - - function reset(Counter storage counter) internal { - counter._value = 0; - } -} diff --git a/contracts/DataTypes.sol b/contracts/DataTypes.sol new file mode 100644 index 0000000..1add8ba --- /dev/null +++ b/contracts/DataTypes.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.9; + +library DataTypes { + struct Deposit { + /// @dev Remaining tokens available. + uint256 remaining; + /// @dev Premium paid in ETH for priority. + uint256 premium; + /// @dev The PIX account for the seller receive transactions. + string pixTarget; + address seller; + /// @dev ERC20 stable token address. + address token; + /// @dev Could be invalidated by the seller. + bool valid; + } + + struct Lock { + uint256 depositID; + /// @dev Amount to be paid for relayer. + uint256 relayerPremium; + /// @dev Amount to be tranfered via PIX. + uint256 amount; + /// @dev If not paid at this block will be expired. + uint256 expirationBlock; + /// @dev Where goes the tokens when validated. + address targetAddress; + /// @dev Relayer address that facilitated this transaction. + address relayerAddress; + } +} diff --git a/contracts/EventAndErrors.sol b/contracts/EventAndErrors.sol new file mode 100644 index 0000000..5810826 --- /dev/null +++ b/contracts/EventAndErrors.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.9; + +interface EventAndErrors { + + /// ███ Events ████████████████████████████████████████████████████████████ + + event DepositAdded( + address indexed seller, + uint256 depositID, + address token, + uint256 premium, + uint256 amount + ); + event DepositClosed( + address indexed seller, + uint256 depositID + ); + event DepositWithdrawn( + address indexed seller, + uint256 depositID, + uint256 amount + ); + event LockAdded( + address indexed buyer, + bytes32 indexed lockID, + uint256 depositID, + uint256 amount + ); + event LockReleased( + address indexed buyer, + bytes32 lockId + ); + event LockReturned( + address indexed buyer, + bytes32 lockId + ); + event PremiumsWithdrawn( + address owner, + uint256 amount + ); + + /// ███ Errors ████████████████████████████████████████████████████████████ + + /// @dev Deposit already exist and it is still valid. + /// @dev 0xc44bd765 + error DepositAlreadyExists(); + /// @dev Only seller could call this function. + /// @dev 0x85d1f726 + error OnlySeller(); + /// @dev Lock not expired or already released. + /// @dev 0xd0404f85 + error NotExpired(); + /// @dev Loop bounds have overflowed. + /// @dev 0xdfb035c9 + error LoopOverflow(); + /// @dev Deposit not valid anymore. + /// @dev 0xb2e532de + error InvalidDeposit(); + /// @dev Not enough token remaining on deposit. + /// @dev 0x22bbb43c + error NotEnoughTokens(); + /// @dev Lock already released or returned. + /// @dev 0x63b4904e + error AlreadyReleased(); + /// @dev Transaction already used to unlock payment + /// @dev 0xf490a6ea + error TxAlreadyUsed(); + /// @dev Signer is not a valid signer. + /// @dev 0x815e1d64 + error InvalidSigner(); +} diff --git a/contracts/lib/auth/Owned.sol b/contracts/lib/auth/Owned.sol new file mode 100644 index 0000000..5217f90 --- /dev/null +++ b/contracts/lib/auth/Owned.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.4; + +/// @notice Simple single owner authorization mixin. +/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Owned.sol) +abstract contract Owned { + /*////////////////////////////////////////////////////////////// + EVENTS + //////////////////////////////////////////////////////////////*/ + + event OwnerUpdated( + address indexed user, + address indexed newOwner + ); + + /*////////////////////////////////////////////////////////////// + OWNERSHIP STORAGE + //////////////////////////////////////////////////////////////*/ + + address public owner; + + modifier onlyOwner() virtual { + require(msg.sender == owner, "UNAUTHORIZED"); + + _; + } + + /*////////////////////////////////////////////////////////////// + CONSTRUCTOR + //////////////////////////////////////////////////////////////*/ + + constructor(address _owner) { + owner = _owner; + + emit OwnerUpdated(address(0), _owner); + } + + /*////////////////////////////////////////////////////////////// + OWNERSHIP LOGIC + //////////////////////////////////////////////////////////////*/ + + function setOwner( + address newOwner + ) public virtual onlyOwner { + owner = newOwner; + + emit OwnerUpdated(msg.sender, newOwner); + } +} diff --git a/contracts/lib/mock/mockToken.sol b/contracts/lib/mock/mockToken.sol new file mode 100644 index 0000000..c59b3bc --- /dev/null +++ b/contracts/lib/mock/mockToken.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.9; + +import { ERC20 } from "../tokens/ERC20.sol"; + +contract MockToken is ERC20 { + constructor(uint256 supply) ERC20("MockBRL", "MBRL", 18) { + _mint(msg.sender, supply); + } +} diff --git a/contracts/lib/tokens/ERC20.sol b/contracts/lib/tokens/ERC20.sol new file mode 100644 index 0000000..bb4a7db --- /dev/null +++ b/contracts/lib/tokens/ERC20.sol @@ -0,0 +1,250 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.4; + +/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. +/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol) +/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) +/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it. +abstract contract ERC20 { + /*////////////////////////////////////////////////////////////// + EVENTS + //////////////////////////////////////////////////////////////*/ + + event Transfer( + address indexed from, + address indexed to, + uint256 amount + ); + + event Approval( + address indexed owner, + address indexed spender, + uint256 amount + ); + + /*////////////////////////////////////////////////////////////// + METADATA STORAGE + //////////////////////////////////////////////////////////////*/ + + string public name; + + string public symbol; + + uint8 public immutable decimals; + + /*////////////////////////////////////////////////////////////// + ERC20 STORAGE + //////////////////////////////////////////////////////////////*/ + + uint256 public totalSupply; + + mapping(address => uint256) public balanceOf; + + mapping(address => mapping(address => uint256)) + public allowance; + + /*////////////////////////////////////////////////////////////// + EIP-2612 STORAGE + //////////////////////////////////////////////////////////////*/ + + uint256 internal immutable INITIAL_CHAIN_ID; + + bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR; + + mapping(address => uint256) public nonces; + + /*////////////////////////////////////////////////////////////// + CONSTRUCTOR + //////////////////////////////////////////////////////////////*/ + + constructor( + string memory _name, + string memory _symbol, + uint8 _decimals + ) { + name = _name; + symbol = _symbol; + decimals = _decimals; + + INITIAL_CHAIN_ID = block.chainid; + INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); + } + + /*////////////////////////////////////////////////////////////// + ERC20 LOGIC + //////////////////////////////////////////////////////////////*/ + + function approve( + address spender, + uint256 amount + ) public virtual returns (bool) { + allowance[msg.sender][spender] = amount; + + emit Approval(msg.sender, spender, amount); + + return true; + } + + function transfer( + address to, + uint256 amount + ) public virtual returns (bool) { + balanceOf[msg.sender] -= amount; + + // Cannot overflow because the sum of all user + // balances can't exceed the max uint256 value. + unchecked { + balanceOf[to] += amount; + } + + emit Transfer(msg.sender, to, amount); + + return true; + } + + function transferFrom( + address from, + address to, + uint256 amount + ) public virtual returns (bool) { + uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. + + if (allowed != type(uint256).max) + allowance[from][msg.sender] = allowed - amount; + + balanceOf[from] -= amount; + + // Cannot overflow because the sum of all user + // balances can't exceed the max uint256 value. + unchecked { + balanceOf[to] += amount; + } + + emit Transfer(from, to, amount); + + return true; + } + + /*////////////////////////////////////////////////////////////// + EIP-2612 LOGIC + //////////////////////////////////////////////////////////////*/ + + function permit( + address owner, + address spender, + uint256 value, + uint256 deadline, + uint8 v, + bytes32 r, + bytes32 s + ) public virtual { + require( + deadline >= block.timestamp, + "PERMIT_DEADLINE_EXPIRED" + ); + + // Unchecked because the only math done is incrementing + // the owner's nonce which cannot realistically overflow. + unchecked { + address recoveredAddress = ecrecover( + keccak256( + abi.encodePacked( + "\x19\x01", + DOMAIN_SEPARATOR(), + keccak256( + abi.encode( + keccak256( + "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" + ), + owner, + spender, + value, + nonces[owner]++, + deadline + ) + ) + ) + ), + v, + r, + s + ); + + require( + recoveredAddress != address(0) && + recoveredAddress == owner, + "INVALID_SIGNER" + ); + + allowance[recoveredAddress][spender] = value; + } + + emit Approval(owner, spender, value); + } + + function DOMAIN_SEPARATOR() + public + view + virtual + returns (bytes32) + { + return + block.chainid == INITIAL_CHAIN_ID + ? INITIAL_DOMAIN_SEPARATOR + : computeDomainSeparator(); + } + + function computeDomainSeparator() + internal + view + virtual + returns (bytes32) + { + return + keccak256( + abi.encode( + keccak256( + "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + ), + keccak256(bytes(name)), + keccak256("1"), + block.chainid, + address(this) + ) + ); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL MINT/BURN LOGIC + //////////////////////////////////////////////////////////////*/ + + function _mint( + address to, + uint256 amount + ) internal virtual { + totalSupply += amount; + + // Cannot overflow because the sum of all user + // balances can't exceed the max uint256 value. + unchecked { + balanceOf[to] += amount; + } + + emit Transfer(address(0), to, amount); + } + + function _burn( + address from, + uint256 amount + ) internal virtual { + balanceOf[from] -= amount; + + // Cannot underflow because a user's balance + // will never be larger than the total supply. + unchecked { + totalSupply -= amount; + } + + emit Transfer(from, address(0), amount); + } +} diff --git a/contracts/lib/utils/Counters.sol b/contracts/lib/utils/Counters.sol new file mode 100644 index 0000000..a3f8751 --- /dev/null +++ b/contracts/lib/utils/Counters.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: AGPL-3.0-only + +pragma solidity >=0.8.4; + +/// @title Counters +/// @author buf0t9 +/// @author Modified from OpenZeppelin Contracts +/// (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Counters.sol) +/// @notice Provides counters that can only be incremented, decrementedor reset. +/// @dev Include with `using Counters for Counters.Counter;` +library Counters { + // solhint-disable no-inline-assembly + struct Counter { + /// @dev Interactions must be restricted to the library's function. + uint256 _val; // := 0 + } + + /// @dev 0xce3a3d37 + error DecOverflow(); + + function current( + Counter storage counter + ) internal view returns (uint256 _val) { + assembly { + _val := sload(counter.slot) + } + } + + function increment(Counter storage counter) internal { + assembly { + let _val := sload(counter.slot) + sstore(counter.slot, add(_val, 0x01)) + } + } + + function decrement(Counter storage counter) internal { + assembly { + let _val := sload(counter.slot) + if or(iszero(_val), lt(_val, 0x00)) { + mstore(0x00, 0xce3a3d37) + revert(0x1c, 0x04) + } + sstore(counter.slot, sub(_val, 0x01)) + } + } + + function reset(Counter storage counter) internal { + assembly { + sstore(counter.slot, 0) + } + } +} diff --git a/contracts/lib/utils/ReentrancyGuard.sol b/contracts/lib/utils/ReentrancyGuard.sol new file mode 100644 index 0000000..0e14c7b --- /dev/null +++ b/contracts/lib/utils/ReentrancyGuard.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.4; + +/// @notice Reentrancy protection for smart contracts. +/// @author z0r0z.eth +/// @author Modified from Seaport +/// (https://github.com/ProjectOpenSea/seaport/blob/main/contracts/lib/ReentrancyGuard.sol) +/// @author Modified from Solmate +/// (https://github.com/Rari-Capital/solmate/blob/main/src/utils/ReentrancyGuard.sol) +abstract contract ReentrancyGuard { + error Reentrancy(); + + uint256 private guard = 1; + + modifier nonReentrant() virtual { + setReentrancyGuard(); + + _; + + clearReentrancyGuard(); + } + + /// @dev Check guard sentinel value and set it. + function setReentrancyGuard() internal virtual { + if (guard == 2) revert Reentrancy(); + + guard = 2; + } + + /// @dev Unset sentinel value. + function clearReentrancyGuard() internal virtual { + guard = 1; + } +} \ No newline at end of file diff --git a/contracts/lib/utils/SafeTransferLib.sol b/contracts/lib/utils/SafeTransferLib.sol new file mode 100644 index 0000000..a1f3f5d --- /dev/null +++ b/contracts/lib/utils/SafeTransferLib.sol @@ -0,0 +1,159 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.4; + +import { ERC20 } from "../tokens/ERC20.sol"; + +/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. +/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/SafeTransferLib.sol) +/// @dev Caution! This library won't check that a token has code, responsibility is delegated to the caller. +library SafeTransferLib { + /*////////////////////////////////////////////////////////////// + ETH OPERATIONS + //////////////////////////////////////////////////////////////*/ + + function safeTransferETH( + address to, + uint256 amount + ) internal { + bool success; + + assembly { + // Transfer the ETH and store if it succeeded or not. + success := call(gas(), to, amount, 0, 0, 0, 0) + } + + require(success, "ETH_TRANSFER_FAILED"); + } + + /*////////////////////////////////////////////////////////////// + ERC20 OPERATIONS + //////////////////////////////////////////////////////////////*/ + + function safeTransferFrom( + ERC20 token, + address from, + address to, + uint256 amount + ) internal { + bool success; + + assembly { + // We'll write our calldata to this slot below, but restore it later. + let memPointer := mload(0x40) + + // Write the abi-encoded calldata into memory, beginning with the function selector. + mstore( + 0, + 0x23b872dd00000000000000000000000000000000000000000000000000000000 + ) + mstore(4, from) // Append the "from" argument. + mstore(36, to) // Append the "to" argument. + mstore(68, amount) // Append the "amount" argument. + + success := and( + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or( + and( + eq(mload(0), 1), + gt(returndatasize(), 31) + ), + iszero(returndatasize()) + ), + // We use 100 because that's the total length of our calldata (4 + 32 * 3) + // Counterintuitively, this call() must be positioned after the or() in the + // surrounding and() because and() evaluates its arguments from right to left. + call(gas(), token, 0, 0, 100, 0, 32) + ) + + mstore(0x60, 0) // Restore the zero slot to zero. + mstore(0x40, memPointer) // Restore the memPointer. + } + + require(success, "TRANSFER_FROM_FAILED"); + } + + function safeTransfer( + ERC20 token, + address to, + uint256 amount + ) internal { + bool success; + + assembly { + // We'll write our calldata to this slot below, but restore it later. + let memPointer := mload(0x40) + + // Write the abi-encoded calldata into memory, beginning with the function selector. + mstore( + 0, + 0xa9059cbb00000000000000000000000000000000000000000000000000000000 + ) + mstore(4, to) // Append the "to" argument. + mstore(36, amount) // Append the "amount" argument. + + success := and( + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or( + and( + eq(mload(0), 1), + gt(returndatasize(), 31) + ), + iszero(returndatasize()) + ), + // We use 68 because that's the total length of our calldata (4 + 32 * 2) + // Counterintuitively, this call() must be positioned after the or() in the + // surrounding and() because and() evaluates its arguments from right to left. + call(gas(), token, 0, 0, 68, 0, 32) + ) + + mstore(0x60, 0) // Restore the zero slot to zero. + mstore(0x40, memPointer) // Restore the memPointer. + } + + require(success, "TRANSFER_FAILED"); + } + + function safeApprove( + ERC20 token, + address to, + uint256 amount + ) internal { + bool success; + + assembly { + // We'll write our calldata to this slot below, but restore it later. + let memPointer := mload(0x40) + + // Write the abi-encoded calldata into memory, beginning with the function selector. + mstore( + 0, + 0x095ea7b300000000000000000000000000000000000000000000000000000000 + ) + mstore(4, to) // Append the "to" argument. + mstore(36, amount) // Append the "amount" argument. + + success := and( + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or( + and( + eq(mload(0), 1), + gt(returndatasize(), 31) + ), + iszero(returndatasize()) + ), + // We use 68 because that's the total length of our calldata (4 + 32 * 2) + // Counterintuitively, this call() must be positioned after the or() in the + // surrounding and() because and() evaluates its arguments from right to left. + call(gas(), token, 0, 0, 68, 0, 32) + ) + + mstore(0x60, 0) // Restore the zero slot to zero. + mstore(0x40, memPointer) // Restore the memPointer. + } + + require(success, "APPROVE_FAILED"); + } +} diff --git a/contracts/mockToken.sol b/contracts/mockToken.sol deleted file mode 100644 index aecad4e..0000000 --- a/contracts/mockToken.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.9; - -import "./@openzeppelin/contracts/token/ERC20/ERC20.sol"; - -contract MockToken is ERC20 { - constructor(uint256 supply) ERC20("MockBRL", "MBRL") { - _mint(msg.sender, supply); - } -} diff --git a/contracts/p2pix.sol b/contracts/p2pix.sol index d8a34af..19eb99d 100644 --- a/contracts/p2pix.sol +++ b/contracts/p2pix.sol @@ -1,112 +1,108 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.9; +pragma solidity 0.8.9; -import "./@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "./@openzeppelin/contracts/access/Ownable.sol"; -import "./@openzeppelin/contracts/utils/Counters.sol"; +/// ______ __ +/// .-----.|__ |.-----.|__|.--.--. +/// | _ || __|| _ || ||_ _| +/// | __||______|| __||__||__.__| +/// |__| |__| +/// + +import { Owned } from "./lib/auth/Owned.sol"; +import { Counters } from "./lib/utils/Counters.sol"; +import { ERC20, SafeTransferLib } from "./lib/utils/SafeTransferLib.sol"; +import { ReentrancyGuard } from "./lib/utils/ReentrancyGuard.sol"; +import { EventAndErrors } from "./EventAndErrors.sol"; +import { DataTypes as DT } from "./DataTypes.sol"; + +contract P2PIX is + EventAndErrors, + Owned(msg.sender), + ReentrancyGuard +{ + // solhint-disable use-forbidden-name + // solhint-disable no-inline-assembly -contract P2PIX is Ownable { using Counters for Counters.Counter; + using DT for DT.Deposit; + using DT for DT.Lock; - event DepositAdded( - address indexed seller, - uint256 depositID, - address token, - uint256 premium, - uint256 amount - ); - event DepositClosed( - address indexed seller, - uint256 depositID - ); - event DepositWithdrawn( - address indexed seller, - uint256 depositID, - uint256 amount - ); - event LockAdded( - address indexed buyer, - bytes32 indexed lockID, - uint256 depositID, - uint256 amount - ); - event LockReleased(address indexed buyer, bytes32 lockId); - event LockReturned(address indexed buyer, bytes32 lockId); - // Events - event PremiumsWithdrawn(address owner, uint256 amount); - - struct Deposit { - address seller; - address token; // ERC20 stable token address - uint256 remaining; // Remaining tokens available - uint256 premium; // Premium paid in ETH for priority - bool valid; // Could be invalidated by the seller - string pixTarget; // The PIX account for the seller receive transactions - } - - struct Lock { - uint256 depositID; - address targetAddress; // Where goes the tokens when validated - address relayerAddress; // Relayer address that facilitated this transaction - uint256 relayerPremium; // Amount to be paid for relayer - uint256 amount; // Amount to be tranfered via PIX - uint256 expirationBlock; // If not paid at this block will be expired - } + /// ███ Storage ████████████████████████████████████████████████████████████ Counters.Counter public depositCount; - // Default blocks that lock will hold tokens + + /// @dev Default blocks that lock will hold tokens. uint256 public defaultLockBlocks; - // List of valid Bacen signature addresses - mapping(address => bool) public validBacenSigners; - // Seller list of deposits - mapping(uint256 => Deposit) mapDeposits; - // List of Locks - mapping(bytes32 => Lock) mapLocks; - // List of Pix transactions already signed - mapping(bytes32 => bool) usedTransactions; - modifier onlySeller(uint256 depositID) { - require( - mapDeposits[depositID].seller == msg.sender, - "P2PIX: Only seller could call this function." - ); - _; - } + /// @dev List of valid Bacen signature addresses + mapping(uint256 => bool) public validBacenSigners; + /// @dev Seller list of deposits + mapping(uint256 => DT.Deposit) public mapDeposits; + /// @dev List of Locks. + mapping(bytes32 => DT.Lock) public mapLocks; + /// @dev List of Pix transactions already signed. + mapping(bytes32 => bool) private usedTransactions; + + /// ███ Constructor ████████████████████████████████████████████████████████ constructor( uint256 defaultBlocks, address[] memory validSigners - ) Ownable() { - defaultLockBlocks = defaultBlocks; - for (uint8 i = 0; i < validSigners.length; i++) { - validBacenSigners[validSigners[i]] = true; + ) payable { + assembly { + sstore(defaultLockBlocks.slot, defaultBlocks) + } + unchecked { + uint256 i; + uint256 len = validSigners.length; + for (i; i < len; ) { + uint256 key = _castAddrToKey(validSigners[i]); + validBacenSigners[key] = true; + ++i; + } } } + /// ███ Public FX ██████████████████████████████████████████████████████████ + // Vendedor precisa mandar token para o smart contract + chave PIX destino. Retorna um DepositID. function deposit( address token, uint256 amount, string calldata pixTarget - ) public payable returns (uint256 depositID) { - depositID = depositCount.current(); - require( - !mapDeposits[depositID].valid, - "P2PIX: Deposit already exist and it is still valid" - ); - IERC20 t = IERC20(token); - t.transferFrom(msg.sender, address(this), amount); - Deposit memory d = Deposit( - msg.sender, - token, - amount, - msg.value, - true, - pixTarget - ); + ) + public + payable + returns (uint256 depositID) + { + (depositID) = _encodeDepositID(); + ERC20 t = ERC20(token); + + DT.Deposit memory d = + DT.Deposit({ + remaining: amount, + premium: msg.value, + pixTarget: pixTarget, + seller: msg.sender, + token: token, + valid: true + }); + + setReentrancyGuard(); + mapDeposits[depositID] = d; depositCount.increment(); + + SafeTransferLib.safeTransferFrom( + t, + msg.sender, + address(this), + amount + ); + + clearReentrancyGuard(); + emit DepositAdded( msg.sender, depositID, @@ -116,10 +112,12 @@ contract P2PIX is Ownable { ); } - // Vendedor pode invalidar da ordem de venda impedindo novos locks na mesma (isso não afeta nenhum lock que esteja ativo). + // Vendedor pode invalidar da ordem de venda impedindo novos + // locks na mesma (isso não afeta nenhum lock que esteja ativo). function cancelDeposit( uint256 depositID - ) public onlySeller(depositID) { + ) public { + _onlySeller(depositID); mapDeposits[depositID].valid = false; emit DepositClosed( mapDeposits[depositID].seller, @@ -134,64 +132,80 @@ contract P2PIX is Ownable { // Essa etapa pode ser feita pelo vendedor conjuntamente com a parte 1. // Retorna um LockID. function lock( - uint256 depositID, - address targetAddress, - address relayerAddress, - uint256 relayerPremium, - uint256 amount, + uint256 _depositID, + address _targetAddress, + address _relayerAddress, + uint256 _relayerPremium, + uint256 _amount, bytes32[] calldata expiredLocks - ) public returns (bytes32 lockID) { + ) + public + nonReentrant + returns (bytes32 lockID) + { unlockExpired(expiredLocks); - Deposit storage d = mapDeposits[depositID]; - require(d.valid, "P2PIX: Deposit not valid anymore"); - require( - d.remaining >= amount, - "P2PIX: Not enough token remaining on deposit" - ); - lockID = keccak256( - abi.encodePacked(depositID, amount, targetAddress) - ); - require( - mapLocks[lockID].expirationBlock < block.number, - "P2PIX: Another lock with same ID is not expired yet" - ); - Lock memory l = Lock( - depositID, - targetAddress, - relayerAddress, - relayerPremium, - amount, - block.number + defaultLockBlocks - ); + DT.Deposit storage d = + mapDeposits[_depositID]; + + if(!d.valid) + revert InvalidDeposit(); + if(d.remaining < _amount) + revert NotEnoughTokens(); + (lockID) = + _encodeLockID( + _depositID, + _amount, + _targetAddress + ); + + DT.Lock memory l = + DT.Lock + ({ + depositID: _depositID, + relayerPremium: _relayerPremium, + amount: _amount, + expirationBlock: (block.number + defaultLockBlocks), + targetAddress: _targetAddress, + relayerAddress: _relayerAddress + }); + mapLocks[lockID] = l; - d.remaining -= amount; + d.remaining -= _amount; + emit LockAdded( - targetAddress, + _targetAddress, lockID, - depositID, - amount + _depositID, + _amount ); } // Relayer interage com o smart contract, colocando no calldata o comprovante do PIX realizado. - // Smart contract valida o comprovante, manda os tokens para o endereço do pagador, e reembolsa o custo do gás para o endereço do relayer especificado na parte (2). + // Smart contract valida o comprovante, manda os tokens para o endereço do pagador, + // e reembolsa o custo do gás para o endereço do relayer especificado na parte (2). function release( bytes32 lockID, uint256 pixTimestamp, bytes32 r, bytes32 s, uint8 v - ) public { + ) + public + nonReentrant + { // TODO **Prevenir que um Pix não relacionado ao APP seja usado pois tem o mesmo destino - Lock storage l = mapLocks[lockID]; - require( - l.expirationBlock > block.number && l.amount > 0, - "P2PIX: Lock already released or returned" - ); - Deposit storage d = mapDeposits[l.depositID]; + DT.Lock storage l = mapLocks[lockID]; + + if( + l.expirationBlock <= block.number + && l.amount <= 0 + ) revert + AlreadyReleased(); + + DT.Deposit storage d = mapDeposits[l.depositID]; bytes32 message = keccak256( abi.encodePacked( - mapDeposits[l.depositID].pixTarget, + d.pixTarget, l.amount, pixTimestamp ) @@ -202,43 +216,94 @@ contract P2PIX is Ownable { message ) ); - require( - !usedTransactions[message], - "P2PIX: Transaction already used to unlock payment" - ); - address signer = ecrecover(messageDigest, v, r, s); - require( - validBacenSigners[signer], - "P2PIX: Signer is not a valid signer" - ); - IERC20 t = IERC20(d.token); - t.transfer( - l.targetAddress, - l.amount - l.relayerPremium - ); - if (l.relayerPremium > 0) - t.transfer(l.relayerAddress, l.relayerPremium); + + if( + usedTransactions[message] + == true + ) revert + TxAlreadyUsed(); + + uint256 signer = _castAddrToKey( + ecrecover( + messageDigest, + v, + r, + s + )); + + if(!validBacenSigners[signer]) + revert InvalidSigner(); + + ERC20 t = ERC20(d.token); + + // We cache values before zeroing them out. + uint256 totalAmount = (l.amount - l.relayerPremium); + l.amount = 0; l.expirationBlock = 0; usedTransactions[message] = true; - emit LockReleased(l.targetAddress, lockID); + + SafeTransferLib.safeTransfer( + t, + l.targetAddress, + totalAmount + ); + + if (l.relayerPremium != 0) { + SafeTransferLib.safeTransfer( + t, + l.relayerAddress, + l.relayerPremium + ); + } + + emit LockReleased( + l.targetAddress, + lockID + ); } + // Unlock expired locks function unlockExpired( bytes32[] calldata lockIDs ) public { - uint256 locksSize = lockIDs.length; - for (uint16 i = 0; i < locksSize; i++) { - Lock storage l = mapLocks[lockIDs[i]]; - require( - l.expirationBlock < block.number && - l.amount > 0, - "P2PIX: Lock not expired or already released" - ); - mapDeposits[l.depositID].remaining += l.amount; + uint256 i; + uint256 locksSize = + lockIDs.length; + + for (i; i < locksSize;) + { + DT.Lock storage l = mapLocks[lockIDs[i]]; + + _notExpired(l); + + mapDeposits[l.depositID].remaining + += l.amount; l.amount = 0; - emit LockReturned(l.targetAddress, lockIDs[i]); + + emit LockReturned( + l.targetAddress, + lockIDs[i] + ); + + unchecked { + ++i; + } + } + + assembly { + if lt(i, locksSize) { + // LoopOverflow() + mstore( + 0x00, + 0xdfb035c9 + ) + revert( + 0x1c, + 0x04 + ) + } } } @@ -246,22 +311,145 @@ contract P2PIX is Ownable { function withdraw( uint256 depositID, bytes32[] calldata expiredLocks - ) public onlySeller(depositID) { + ) + public + nonReentrant + { + _onlySeller(depositID); unlockExpired(expiredLocks); - Deposit storage d = mapDeposits[depositID]; - if (d.valid) cancelDeposit(depositID); - IERC20 token = IERC20(d.token); + + DT.Deposit storage d = + mapDeposits[depositID]; + + if (d.valid == true) { + cancelDeposit(depositID); + } + + ERC20 token = ERC20(d.token); + // Withdraw remaining tokens from mapDeposit[depositID] - token.transfer(d.seller, d.remaining); uint256 amount = d.remaining; d.remaining = 0; - emit DepositWithdrawn(msg.sender, depositID, amount); + + // safeTransfer tokens to seller + SafeTransferLib.safeTransfer( + token, + d.seller, + amount + ); + + emit DepositWithdrawn( + msg.sender, + depositID, + amount + ); } + /// ███ Owner Only █████████████████████████████████████████████████████████ + // O dono do contrato pode sacar os premiums pagos function withdrawPremiums() external onlyOwner { - uint256 balance = address(this).balance; - payable(msg.sender).transfer(balance); - emit PremiumsWithdrawn(msg.sender, balance); + uint256 balance = + address(this).balance; + SafeTransferLib.safeTransferETH( + msg.sender, + balance + ); + emit PremiumsWithdrawn( + msg.sender, + balance + ); + } + + /// ███ Helper FX ██████████████████████████████████████████████████████████ + + function _onlySeller(uint256 _depositID) + private + view + { + if ( + mapDeposits[_depositID].seller + != msg.sender + ) revert + OnlySeller(); + } + + function _notExpired(DT.Lock storage _l) + private + view + { + // Custom Error Solidity Impl + if + ( + _l.expirationBlock >= block.number || + _l.amount <= 0 + ) revert + NotExpired(); + + // Custom Error Yul Impl + // assembly { + // if iszero(iszero( + // or( + // or( + // lt(number(), sload(add(_l.slot, 3))), + // eq(sload(add(_l.slot, 3)), number()) + // ), + // iszero(sload(add(_l.slot, 2))) + // ))) + // { + // mstore(0x00, 0xd0404f85) + // revert(0x1c, 0x04) + // } + // } + + // Require Error Solidity Impl + // require( + // _l.expirationBlock < block.number && + // _l.amount > 0, + // "P2PIX: Lock not expired or already released" + // ); + } + + function _encodeDepositID() + internal + view + returns (uint256 _depositID) + { + (_depositID) = depositCount.current(); + if ( + mapDeposits[_depositID].valid + == true + ) revert + DepositAlreadyExists(); + } + + function _encodeLockID( + uint256 _depositID, + uint256 _amount, + address _targetAddress) + private + view + returns (bytes32 _lockID) + { + _lockID = keccak256( + abi.encodePacked(_depositID, _amount, _targetAddress) + ); + if ( + mapLocks[_lockID].expirationBlock + >= block.number + ) revert + NotExpired(); + } + + function _castAddrToKey(address _addr) + public + pure + returns (uint256 _key) + { + _key = uint256( + uint160( + address( + _addr + ))) << 12; } } diff --git a/src/types/@openzeppelin/contracts/index.ts b/src/types/@openzeppelin/contracts/index.ts deleted file mode 100644 index e0b6b66..0000000 --- a/src/types/@openzeppelin/contracts/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as access from "./access"; -export type { access }; -import type * as token from "./token"; -export type { token }; diff --git a/src/types/@openzeppelin/contracts/token/ERC20/IERC20.ts b/src/types/@openzeppelin/contracts/token/ERC20/IERC20.ts deleted file mode 100644 index e99e80b..0000000 --- a/src/types/@openzeppelin/contracts/token/ERC20/IERC20.ts +++ /dev/null @@ -1,342 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IERC20Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "approve" - | "balanceOf" - | "totalSupply" - | "transfer" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/src/types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts b/src/types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts deleted file mode 100644 index 7a94b72..0000000 --- a/src/types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +++ /dev/null @@ -1,384 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../../common"; - -export interface IERC20MetadataInterface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "approve" - | "balanceOf" - | "decimals" - | "name" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC20Metadata extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20MetadataInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/src/types/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/src/types/@openzeppelin/contracts/token/ERC20/extensions/index.ts deleted file mode 100644 index 6044cde..0000000 --- a/src/types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IERC20Metadata } from "./IERC20Metadata"; diff --git a/src/types/@openzeppelin/contracts/token/ERC20/index.ts b/src/types/@openzeppelin/contracts/token/ERC20/index.ts deleted file mode 100644 index cc19697..0000000 --- a/src/types/@openzeppelin/contracts/token/ERC20/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as extensions from "./extensions"; -export type { extensions }; -export type { ERC20 } from "./ERC20"; -export type { IERC20 } from "./IERC20"; diff --git a/src/types/@openzeppelin/contracts/token/index.ts b/src/types/@openzeppelin/contracts/token/index.ts deleted file mode 100644 index 5c4062a..0000000 --- a/src/types/@openzeppelin/contracts/token/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as erc20 from "./ERC20"; -export type { erc20 }; diff --git a/src/types/EventAndErrors.ts b/src/types/EventAndErrors.ts new file mode 100644 index 0000000..24b5a79 --- /dev/null +++ b/src/types/EventAndErrors.ts @@ -0,0 +1,232 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, BigNumber, BytesLike, Signer, utils } from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface EventAndErrorsInterface extends utils.Interface { + functions: {}; + + events: { + "DepositAdded(address,uint256,address,uint256,uint256)": EventFragment; + "DepositClosed(address,uint256)": EventFragment; + "DepositWithdrawn(address,uint256,uint256)": EventFragment; + "LockAdded(address,bytes32,uint256,uint256)": EventFragment; + "LockReleased(address,bytes32)": EventFragment; + "LockReturned(address,bytes32)": EventFragment; + "PremiumsWithdrawn(address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DepositAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "DepositClosed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "DepositWithdrawn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "LockAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "LockReleased"): EventFragment; + getEvent(nameOrSignatureOrTopic: "LockReturned"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PremiumsWithdrawn"): EventFragment; +} + +export interface DepositAddedEventObject { + seller: string; + depositID: BigNumber; + token: string; + premium: BigNumber; + amount: BigNumber; +} +export type DepositAddedEvent = TypedEvent< + [string, BigNumber, string, BigNumber, BigNumber], + DepositAddedEventObject +>; + +export type DepositAddedEventFilter = TypedEventFilter; + +export interface DepositClosedEventObject { + seller: string; + depositID: BigNumber; +} +export type DepositClosedEvent = TypedEvent< + [string, BigNumber], + DepositClosedEventObject +>; + +export type DepositClosedEventFilter = TypedEventFilter; + +export interface DepositWithdrawnEventObject { + seller: string; + depositID: BigNumber; + amount: BigNumber; +} +export type DepositWithdrawnEvent = TypedEvent< + [string, BigNumber, BigNumber], + DepositWithdrawnEventObject +>; + +export type DepositWithdrawnEventFilter = + TypedEventFilter; + +export interface LockAddedEventObject { + buyer: string; + lockID: string; + depositID: BigNumber; + amount: BigNumber; +} +export type LockAddedEvent = TypedEvent< + [string, string, BigNumber, BigNumber], + LockAddedEventObject +>; + +export type LockAddedEventFilter = TypedEventFilter; + +export interface LockReleasedEventObject { + buyer: string; + lockId: string; +} +export type LockReleasedEvent = TypedEvent< + [string, string], + LockReleasedEventObject +>; + +export type LockReleasedEventFilter = TypedEventFilter; + +export interface LockReturnedEventObject { + buyer: string; + lockId: string; +} +export type LockReturnedEvent = TypedEvent< + [string, string], + LockReturnedEventObject +>; + +export type LockReturnedEventFilter = TypedEventFilter; + +export interface PremiumsWithdrawnEventObject { + owner: string; + amount: BigNumber; +} +export type PremiumsWithdrawnEvent = TypedEvent< + [string, BigNumber], + PremiumsWithdrawnEventObject +>; + +export type PremiumsWithdrawnEventFilter = + TypedEventFilter; + +export interface EventAndErrors extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: EventAndErrorsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: { + "DepositAdded(address,uint256,address,uint256,uint256)"( + seller?: PromiseOrValue | null, + depositID?: null, + token?: null, + premium?: null, + amount?: null + ): DepositAddedEventFilter; + DepositAdded( + seller?: PromiseOrValue | null, + depositID?: null, + token?: null, + premium?: null, + amount?: null + ): DepositAddedEventFilter; + + "DepositClosed(address,uint256)"( + seller?: PromiseOrValue | null, + depositID?: null + ): DepositClosedEventFilter; + DepositClosed( + seller?: PromiseOrValue | null, + depositID?: null + ): DepositClosedEventFilter; + + "DepositWithdrawn(address,uint256,uint256)"( + seller?: PromiseOrValue | null, + depositID?: null, + amount?: null + ): DepositWithdrawnEventFilter; + DepositWithdrawn( + seller?: PromiseOrValue | null, + depositID?: null, + amount?: null + ): DepositWithdrawnEventFilter; + + "LockAdded(address,bytes32,uint256,uint256)"( + buyer?: PromiseOrValue | null, + lockID?: PromiseOrValue | null, + depositID?: null, + amount?: null + ): LockAddedEventFilter; + LockAdded( + buyer?: PromiseOrValue | null, + lockID?: PromiseOrValue | null, + depositID?: null, + amount?: null + ): LockAddedEventFilter; + + "LockReleased(address,bytes32)"( + buyer?: PromiseOrValue | null, + lockId?: null + ): LockReleasedEventFilter; + LockReleased( + buyer?: PromiseOrValue | null, + lockId?: null + ): LockReleasedEventFilter; + + "LockReturned(address,bytes32)"( + buyer?: PromiseOrValue | null, + lockId?: null + ): LockReturnedEventFilter; + LockReturned( + buyer?: PromiseOrValue | null, + lockId?: null + ): LockReturnedEventFilter; + + "PremiumsWithdrawn(address,uint256)"( + owner?: null, + amount?: null + ): PremiumsWithdrawnEventFilter; + PremiumsWithdrawn( + owner?: null, + amount?: null + ): PremiumsWithdrawnEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/src/types/factories/@openzeppelin/contracts/access/index.ts b/src/types/factories/@openzeppelin/contracts/access/index.ts deleted file mode 100644 index e332ae3..0000000 --- a/src/types/factories/@openzeppelin/contracts/access/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { Ownable__factory } from "./Ownable__factory"; diff --git a/src/types/factories/@openzeppelin/contracts/index.ts b/src/types/factories/@openzeppelin/contracts/index.ts deleted file mode 100644 index 3063f57..0000000 --- a/src/types/factories/@openzeppelin/contracts/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as access from "./access"; -export * as token from "./token"; diff --git a/src/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts b/src/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts deleted file mode 100644 index 355b1fe..0000000 --- a/src/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +++ /dev/null @@ -1,350 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - ERC20, - ERC20Interface, -} from "../../../../../@openzeppelin/contracts/token/ERC20/ERC20"; - -const _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name_", - type: "string", - }, - { - internalType: "string", - name: "symbol_", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "subtractedValue", - type: "uint256", - }, - ], - name: "decreaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "addedValue", - type: "uint256", - }, - ], - name: "increaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162000b7438038062000b748339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b6108e280620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e39190610748565b60405180910390f35b6100ff6100fa3660046107b9565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107e3565b610290565b604051601281526020016100e3565b6100ff6101513660046107b9565b6102b4565b61011361016436600461081f565b6001600160a01b031660009081526020819052604090205490565b6100d66102f3565b6100ff6101953660046107b9565b610302565b6100ff6101a83660046107b9565b6103b1565b6101136101bb366004610841565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f590610874565b80601f016020809104026020016040519081016040528092919081815260200182805461022190610874565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103bf565b5060019392505050565b60003361029e8582856104e3565b6102a9858585610575565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102ee9087906108af565b6103bf565b6060600480546101f590610874565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102a982868684036103bf565b600033610286818585610575565b6001600160a01b0383166104215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039b565b6001600160a01b0382166104825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461056f57818110156105625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039b565b61056f84848484036103bf565b50505050565b6001600160a01b0383166105f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166106535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039b565b6001600160a01b038316600090815260208190526040902054818110156106e25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361056f565b600060208083528351808285015260005b8181101561077557858101830151858201604001528201610759565b81811115610787576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b457600080fd5b919050565b600080604083850312156107cc57600080fd5b6107d58361079d565b946020939093013593505050565b6000806000606084860312156107f857600080fd5b6108018461079d565b925061080f6020850161079d565b9150604084013590509250925092565b60006020828403121561083157600080fd5b61083a8261079d565b9392505050565b6000806040838503121561085457600080fd5b61085d8361079d565b915061086b6020840161079d565b90509250929050565b600181811c9082168061088857607f821691505b602082108114156108a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d057634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c6343000809000a"; - -type ERC20ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20__factory extends ContractFactory { - constructor(...args: ERC20ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(name_, symbol_, overrides || {}) as Promise; - } - override getDeployTransaction( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(name_, symbol_, overrides || {}); - } - override attach(address: string): ERC20 { - return super.attach(address) as ERC20; - } - override connect(signer: Signer): ERC20__factory { - return super.connect(signer) as ERC20__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20Interface { - return new utils.Interface(_abi) as ERC20Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): ERC20 { - return new Contract(address, _abi, signerOrProvider) as ERC20; - } -} diff --git a/src/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts b/src/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts deleted file mode 100644 index 52ad5a1..0000000 --- a/src/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +++ /dev/null @@ -1,206 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20, - IERC20Interface, -} from "../../../../../@openzeppelin/contracts/token/ERC20/IERC20"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC20__factory { - static readonly abi = _abi; - static createInterface(): IERC20Interface { - return new utils.Interface(_abi) as IERC20Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): IERC20 { - return new Contract(address, _abi, signerOrProvider) as IERC20; - } -} diff --git a/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts deleted file mode 100644 index b9477f8..0000000 --- a/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IERC20Metadata__factory } from "./IERC20Metadata__factory"; diff --git a/src/types/factories/@openzeppelin/contracts/token/ERC20/index.ts b/src/types/factories/@openzeppelin/contracts/token/ERC20/index.ts deleted file mode 100644 index 3523dc7..0000000 --- a/src/types/factories/@openzeppelin/contracts/token/ERC20/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as extensions from "./extensions"; -export { ERC20__factory } from "./ERC20__factory"; -export { IERC20__factory } from "./IERC20__factory"; diff --git a/src/types/factories/EventAndErrors__factory.ts b/src/types/factories/EventAndErrors__factory.ts new file mode 100644 index 0000000..31943e7 --- /dev/null +++ b/src/types/factories/EventAndErrors__factory.ts @@ -0,0 +1,240 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + EventAndErrors, + EventAndErrorsInterface, +} from "../EventAndErrors"; + +const _abi = [ + { + inputs: [], + name: "AlreadyReleased", + type: "error", + }, + { + inputs: [], + name: "DepositAlreadyExists", + type: "error", + }, + { + inputs: [], + name: "InvalidDeposit", + type: "error", + }, + { + inputs: [], + name: "InvalidSigner", + type: "error", + }, + { + inputs: [], + name: "LoopOverflow", + type: "error", + }, + { + inputs: [], + name: "NotEnoughTokens", + type: "error", + }, + { + inputs: [], + name: "NotExpired", + type: "error", + }, + { + inputs: [], + name: "OnlySeller", + type: "error", + }, + { + inputs: [], + name: "TxAlreadyUsed", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "seller", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "depositID", + type: "uint256", + }, + { + indexed: false, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "premium", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "DepositAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "seller", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "depositID", + type: "uint256", + }, + ], + name: "DepositClosed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "seller", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "depositID", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "DepositWithdrawn", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "buyer", + type: "address", + }, + { + indexed: true, + internalType: "bytes32", + name: "lockID", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "depositID", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "LockAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "buyer", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "lockId", + type: "bytes32", + }, + ], + name: "LockReleased", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "buyer", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "lockId", + type: "bytes32", + }, + ], + name: "LockReturned", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "PremiumsWithdrawn", + type: "event", + }, +]; + +export class EventAndErrors__factory { + static readonly abi = _abi; + static createInterface(): EventAndErrorsInterface { + return new utils.Interface(_abi) as EventAndErrorsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): EventAndErrors { + return new Contract(address, _abi, signerOrProvider) as EventAndErrors; + } +} diff --git a/src/types/factories/index.ts b/src/types/factories/index.ts index dcdae4d..3e9c20b 100644 --- a/src/types/factories/index.ts +++ b/src/types/factories/index.ts @@ -1,6 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as openzeppelin from "./@openzeppelin"; -export * as mockTokenSol from "./mockToken.sol"; +export * as lib from "./lib"; export * as p2PixSol from "./p2pix.sol"; +export { EventAndErrors__factory } from "./EventAndErrors__factory"; diff --git a/src/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts b/src/types/factories/lib/auth/Owned__factory.ts similarity index 60% rename from src/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts rename to src/types/factories/lib/auth/Owned__factory.ts index 32f8cfe..8b260c7 100644 --- a/src/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +++ b/src/types/factories/lib/auth/Owned__factory.ts @@ -4,10 +4,7 @@ import { Contract, Signer, utils } from "ethers"; import type { Provider } from "@ethersproject/providers"; -import type { - Ownable, - OwnableInterface, -} from "../../../../@openzeppelin/contracts/access/Ownable"; +import type { Owned, OwnedInterface } from "../../../lib/auth/Owned"; const _abi = [ { @@ -16,7 +13,7 @@ const _abi = [ { indexed: true, internalType: "address", - name: "previousOwner", + name: "user", type: "address", }, { @@ -26,7 +23,7 @@ const _abi = [ type: "address", }, ], - name: "OwnershipTransferred", + name: "OwnerUpdated", type: "event", }, { @@ -42,13 +39,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -57,22 +47,19 @@ const _abi = [ type: "address", }, ], - name: "transferOwnership", + name: "setOwner", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; -export class Ownable__factory { +export class Owned__factory { static readonly abi = _abi; - static createInterface(): OwnableInterface { - return new utils.Interface(_abi) as OwnableInterface; + static createInterface(): OwnedInterface { + return new utils.Interface(_abi) as OwnedInterface; } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Ownable { - return new Contract(address, _abi, signerOrProvider) as Ownable; + static connect(address: string, signerOrProvider: Signer | Provider): Owned { + return new Contract(address, _abi, signerOrProvider) as Owned; } } diff --git a/src/types/factories/lib/auth/index.ts b/src/types/factories/lib/auth/index.ts new file mode 100644 index 0000000..1869675 --- /dev/null +++ b/src/types/factories/lib/auth/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Owned__factory } from "./Owned__factory"; diff --git a/src/types/factories/lib/index.ts b/src/types/factories/lib/index.ts new file mode 100644 index 0000000..a8a695b --- /dev/null +++ b/src/types/factories/lib/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as auth from "./auth"; +export * as mock from "./mock"; +export * as tokens from "./tokens"; +export * as utils from "./utils"; diff --git a/src/types/factories/@openzeppelin/index.ts b/src/types/factories/lib/mock/index.ts similarity index 64% rename from src/types/factories/@openzeppelin/index.ts rename to src/types/factories/lib/mock/index.ts index 6397da0..9d69d6e 100644 --- a/src/types/factories/@openzeppelin/index.ts +++ b/src/types/factories/lib/mock/index.ts @@ -1,4 +1,4 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as contracts from "./contracts"; +export * as mockTokenSol from "./mockToken.sol"; diff --git a/src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts b/src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts new file mode 100644 index 0000000..81b11dc --- /dev/null +++ b/src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts @@ -0,0 +1,380 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + MockToken, + MockTokenInterface, +} from "../../../../lib/mock/mockToken.sol/MockToken"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "supply", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "permit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60e06040523480156200001157600080fd5b5060405162000e5138038062000e51833981016040819052620000349162000279565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b908401528151919291601291620000839160009190620001d3565b50815162000099906001906020850190620001d3565b5060ff81166080524660a052620000af620000ca565b60c05250620000c391503390508262000166565b506200039b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000fe9190620002d0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546200017a919062000374565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620001e19062000293565b90600052602060002090601f01602090048101928262000205576000855562000250565b82601f106200022057805160ff191683800117855562000250565b8280016001018555821562000250579182015b828111156200025057825182559160200191906001019062000233565b506200025e92915062000262565b5090565b5b808211156200025e576000815560010162000263565b6000602082840312156200028c57600080fd5b5051919050565b600181811c90821680620002a857607f821691505b60208210811415620002ca57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002ed57607f831692505b60208084108214156200030e57634e487b7160e01b86526022600452602486fd5b818015620003255760018114620003375762000366565b60ff1986168952848901965062000366565b60008a81526020902060005b868110156200035e5781548b82015290850190830162000343565b505084890196505b509498975050505050505050565b600082198211156200039657634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c051610a86620003cb600039600061044501526000610410015260006101490152610a866000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806370a0823111610081578063a9059cbb1161005b578063a9059cbb146101cd578063d505accf146101e0578063dd62ed3e146101f557600080fd5b806370a08231146101855780637ecebe00146101a557806395d89b41146101c557600080fd5b806323b872dd116100b257806323b872dd14610131578063313ce567146101445780633644e5151461017d57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd1461011a575b600080fd5b6100e1610220565b6040516100ee91906107de565b60405180910390f35b61010a61010536600461084f565b6102ae565b60405190151581526020016100ee565b61012360025481565b6040519081526020016100ee565b61010a61013f366004610879565b61031a565b61016b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100ee565b61012361040c565b6101236101933660046108b5565b60036020526000908152604090205481565b6101236101b33660046108b5565b60056020526000908152604090205481565b6100e1610467565b61010a6101db36600461084f565b610474565b6101f36101ee3660046108d7565b6104ec565b005b61012361020336600461094a565b600460209081526000928352604080842090915290825290205481565b6000805461022d9061097d565b80601f01602080910402602001604051908101604052809291908181526020018280546102599061097d565b80156102a65780601f1061027b576101008083540402835291602001916102a6565b820191906000526020600020905b81548152906001019060200180831161028957829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103099086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103765761035183826109b8565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061039e9084906109b8565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103f99087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104425761043d610744565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461022d9061097d565b336000908152600360205260408120805483919083906104959084906109b8565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103099086815260200190565b428410156105415760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161054d61040c565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610659573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061068f5750876001600160a01b0316816001600160a01b0316145b6106db5760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610538565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161077691906109dd565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600060208083528351808285015260005b8181101561080b578581018301518582016040015282016107ef565b8181111561081d576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461084a57600080fd5b919050565b6000806040838503121561086257600080fd5b61086b83610833565b946020939093013593505050565b60008060006060848603121561088e57600080fd5b61089784610833565b92506108a560208501610833565b9150604084013590509250925092565b6000602082840312156108c757600080fd5b6108d082610833565b9392505050565b600080600080600080600060e0888a0312156108f257600080fd5b6108fb88610833565b965061090960208901610833565b95506040880135945060608801359350608088013560ff8116811461092d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561095d57600080fd5b61096683610833565b915061097460208401610833565b90509250929050565b600181811c9082168061099157607f821691505b602082108114156109b257634e487b7160e01b600052602260045260246000fd5b50919050565b6000828210156109d857634e487b7160e01b600052601160045260246000fd5b500390565b600080835481600182811c9150808316806109f957607f831692505b6020808410821415610a1957634e487b7160e01b86526022600452602486fd5b818015610a2d5760018114610a3e57610a6b565b60ff19861689528489019650610a6b565b60008a81526020902060005b86811015610a635781548b820152908501908301610a4a565b505084890196505b50949897505050505050505056fea164736f6c6343000809000a"; + +type MockTokenConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MockTokenConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class MockToken__factory extends ContractFactory { + constructor(...args: MockTokenConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + supply: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(supply, overrides || {}) as Promise; + } + override getDeployTransaction( + supply: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(supply, overrides || {}); + } + override attach(address: string): MockToken { + return super.attach(address) as MockToken; + } + override connect(signer: Signer): MockToken__factory { + return super.connect(signer) as MockToken__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MockTokenInterface { + return new utils.Interface(_abi) as MockTokenInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): MockToken { + return new Contract(address, _abi, signerOrProvider) as MockToken; + } +} diff --git a/src/types/factories/mockToken.sol/index.ts b/src/types/factories/lib/mock/mockToken.sol/index.ts similarity index 100% rename from src/types/factories/mockToken.sol/index.ts rename to src/types/factories/lib/mock/mockToken.sol/index.ts diff --git a/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts b/src/types/factories/lib/tokens/ERC20__factory.ts similarity index 70% rename from src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts rename to src/types/factories/lib/tokens/ERC20__factory.ts index a9ab743..4da82b8 100644 --- a/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +++ b/src/types/factories/lib/tokens/ERC20__factory.ts @@ -4,10 +4,7 @@ import { Contract, Signer, utils } from "ethers"; import type { Provider } from "@ethersproject/providers"; -import type { - IERC20Metadata, - IERC20MetadataInterface, -} from "../../../../../../@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata"; +import type { ERC20, ERC20Interface } from "../../../lib/tokens/ERC20"; const _abi = [ { @@ -28,7 +25,7 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "value", + name: "amount", type: "uint256", }, ], @@ -53,23 +50,36 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "value", + name: "amount", type: "uint256", }, ], name: "Transfer", type: "event", }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { internalType: "address", - name: "owner", + name: "", type: "address", }, { internalType: "address", - name: "spender", + name: "", type: "address", }, ], @@ -112,7 +122,7 @@ const _abi = [ inputs: [ { internalType: "address", - name: "account", + name: "", type: "address", }, ], @@ -153,6 +163,68 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "permit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [], name: "symbol", @@ -234,15 +306,12 @@ const _abi = [ }, ]; -export class IERC20Metadata__factory { +export class ERC20__factory { static readonly abi = _abi; - static createInterface(): IERC20MetadataInterface { - return new utils.Interface(_abi) as IERC20MetadataInterface; + static createInterface(): ERC20Interface { + return new utils.Interface(_abi) as ERC20Interface; } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC20Metadata { - return new Contract(address, _abi, signerOrProvider) as IERC20Metadata; + static connect(address: string, signerOrProvider: Signer | Provider): ERC20 { + return new Contract(address, _abi, signerOrProvider) as ERC20; } } diff --git a/src/types/factories/lib/tokens/index.ts b/src/types/factories/lib/tokens/index.ts new file mode 100644 index 0000000..4a39ead --- /dev/null +++ b/src/types/factories/lib/tokens/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ERC20__factory } from "./ERC20__factory"; diff --git a/src/types/factories/lib/utils/Counters__factory.ts b/src/types/factories/lib/utils/Counters__factory.ts new file mode 100644 index 0000000..462a466 --- /dev/null +++ b/src/types/factories/lib/utils/Counters__factory.ts @@ -0,0 +1,65 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { Counters, CountersInterface } from "../../../lib/utils/Counters"; + +const _abi = [ + { + inputs: [], + name: "DecOverflow", + type: "error", + }, +]; + +const _bytecode = + "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a"; + +type CountersConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: CountersConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Counters__factory extends ContractFactory { + constructor(...args: CountersConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Counters { + return super.attach(address) as Counters; + } + override connect(signer: Signer): Counters__factory { + return super.connect(signer) as Counters__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): CountersInterface { + return new utils.Interface(_abi) as CountersInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Counters { + return new Contract(address, _abi, signerOrProvider) as Counters; + } +} diff --git a/src/types/factories/lib/utils/ReentrancyGuard__factory.ts b/src/types/factories/lib/utils/ReentrancyGuard__factory.ts new file mode 100644 index 0000000..5bd2b14 --- /dev/null +++ b/src/types/factories/lib/utils/ReentrancyGuard__factory.ts @@ -0,0 +1,31 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ReentrancyGuard, + ReentrancyGuardInterface, +} from "../../../lib/utils/ReentrancyGuard"; + +const _abi = [ + { + inputs: [], + name: "Reentrancy", + type: "error", + }, +]; + +export class ReentrancyGuard__factory { + static readonly abi = _abi; + static createInterface(): ReentrancyGuardInterface { + return new utils.Interface(_abi) as ReentrancyGuardInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ReentrancyGuard { + return new Contract(address, _abi, signerOrProvider) as ReentrancyGuard; + } +} diff --git a/src/types/factories/lib/utils/index.ts b/src/types/factories/lib/utils/index.ts new file mode 100644 index 0000000..457edaa --- /dev/null +++ b/src/types/factories/lib/utils/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Counters__factory } from "./Counters__factory"; +export { ReentrancyGuard__factory } from "./ReentrancyGuard__factory"; diff --git a/src/types/factories/mockToken.sol/MockToken__factory.ts b/src/types/factories/mockToken.sol/MockToken__factory.ts deleted file mode 100644 index 98a1b7e..0000000 --- a/src/types/factories/mockToken.sol/MockToken__factory.ts +++ /dev/null @@ -1,353 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; -import type { - MockToken, - MockTokenInterface, -} from "../../mockToken.sol/MockToken"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "supply", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "subtractedValue", - type: "uint256", - }, - ], - name: "decreaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "addedValue", - type: "uint256", - }, - ], - name: "increaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162000b8d38038062000b8d83398101604081905262000034916200021d565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b9084015281519192916200007f9160039162000177565b5080516200009590600490602084019062000177565b505050620000aa3382620000b160201b60201c565b506200029b565b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000120919062000237565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805462000185906200025e565b90600052602060002090601f016020900481019282620001a95760008555620001f4565b82601f10620001c457805160ff1916838001178555620001f4565b82800160010185558215620001f4579182015b82811115620001f4578251825591602001919060010190620001d7565b506200020292915062000206565b5090565b5b8082111562000202576000815560010162000207565b6000602082840312156200023057600080fd5b5051919050565b600082198211156200025957634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200027357607f821691505b602082108114156200029557634e487b7160e01b600052602260045260246000fd5b50919050565b6108e280620002ab6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e39190610748565b60405180910390f35b6100ff6100fa3660046107b9565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107e3565b610290565b604051601281526020016100e3565b6100ff6101513660046107b9565b6102b4565b61011361016436600461081f565b6001600160a01b031660009081526020819052604090205490565b6100d66102f3565b6100ff6101953660046107b9565b610302565b6100ff6101a83660046107b9565b6103b1565b6101136101bb366004610841565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f590610874565b80601f016020809104026020016040519081016040528092919081815260200182805461022190610874565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103bf565b5060019392505050565b60003361029e8582856104e3565b6102a9858585610575565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102ee9087906108af565b6103bf565b6060600480546101f590610874565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102a982868684036103bf565b600033610286818585610575565b6001600160a01b0383166104215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039b565b6001600160a01b0382166104825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461056f57818110156105625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039b565b61056f84848484036103bf565b50505050565b6001600160a01b0383166105f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166106535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039b565b6001600160a01b038316600090815260208190526040902054818110156106e25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361056f565b600060208083528351808285015260005b8181101561077557858101830151858201604001528201610759565b81811115610787576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b457600080fd5b919050565b600080604083850312156107cc57600080fd5b6107d58361079d565b946020939093013593505050565b6000806000606084860312156107f857600080fd5b6108018461079d565b925061080f6020850161079d565b9150604084013590509250925092565b60006020828403121561083157600080fd5b61083a8261079d565b9392505050565b6000806040838503121561085457600080fd5b61085d8361079d565b915061086b6020840161079d565b90509250929050565b600181811c9082168061088857607f821691505b602082108114156108a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d057634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c6343000809000a"; - -type MockTokenConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockTokenConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class MockToken__factory extends ContractFactory { - constructor(...args: MockTokenConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - supply: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(supply, overrides || {}) as Promise; - } - override getDeployTransaction( - supply: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(supply, overrides || {}); - } - override attach(address: string): MockToken { - return super.attach(address) as MockToken; - } - override connect(signer: Signer): MockToken__factory { - return super.connect(signer) as MockToken__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockTokenInterface { - return new utils.Interface(_abi) as MockTokenInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): MockToken { - return new Contract(address, _abi, signerOrProvider) as MockToken; - } -} diff --git a/src/types/factories/p2pix.sol/P2PIX__factory.ts b/src/types/factories/p2pix.sol/P2PIX__factory.ts index d008cb7..b43b139 100644 --- a/src/types/factories/p2pix.sol/P2PIX__factory.ts +++ b/src/types/factories/p2pix.sol/P2PIX__factory.ts @@ -6,8 +6,8 @@ import { utils, Contract, ContractFactory, + PayableOverrides, BigNumberish, - Overrides, } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; import type { PromiseOrValue } from "../../common"; @@ -27,9 +27,59 @@ const _abi = [ type: "address[]", }, ], - stateMutability: "nonpayable", + stateMutability: "payable", type: "constructor", }, + { + inputs: [], + name: "AlreadyReleased", + type: "error", + }, + { + inputs: [], + name: "DepositAlreadyExists", + type: "error", + }, + { + inputs: [], + name: "InvalidDeposit", + type: "error", + }, + { + inputs: [], + name: "InvalidSigner", + type: "error", + }, + { + inputs: [], + name: "LoopOverflow", + type: "error", + }, + { + inputs: [], + name: "NotEnoughTokens", + type: "error", + }, + { + inputs: [], + name: "NotExpired", + type: "error", + }, + { + inputs: [], + name: "OnlySeller", + type: "error", + }, + { + inputs: [], + name: "Reentrancy", + type: "error", + }, + { + inputs: [], + name: "TxAlreadyUsed", + type: "error", + }, { anonymous: false, inputs: [ @@ -186,7 +236,7 @@ const _abi = [ { indexed: true, internalType: "address", - name: "previousOwner", + name: "user", type: "address", }, { @@ -196,7 +246,7 @@ const _abi = [ type: "address", }, ], - name: "OwnershipTransferred", + name: "OwnerUpdated", type: "event", }, { @@ -218,6 +268,25 @@ const _abi = [ name: "PremiumsWithdrawn", type: "event", }, + { + inputs: [ + { + internalType: "address", + name: "_addr", + type: "address", + }, + ], + name: "_castAddrToKey", + outputs: [ + { + internalType: "uint256", + name: "_key", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -279,7 +348,7 @@ const _abi = [ outputs: [ { internalType: "uint256", - name: "_value", + name: "_val", type: "uint256", }, ], @@ -290,27 +359,27 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "depositID", + name: "_depositID", type: "uint256", }, { internalType: "address", - name: "targetAddress", + name: "_targetAddress", type: "address", }, { internalType: "address", - name: "relayerAddress", + name: "_relayerAddress", type: "address", }, { internalType: "uint256", - name: "relayerPremium", + name: "_relayerPremium", type: "uint256", }, { internalType: "uint256", - name: "amount", + name: "_amount", type: "uint256", }, { @@ -330,6 +399,94 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mapDeposits", + outputs: [ + { + internalType: "uint256", + name: "remaining", + type: "uint256", + }, + { + internalType: "uint256", + name: "premium", + type: "uint256", + }, + { + internalType: "string", + name: "pixTarget", + type: "string", + }, + { + internalType: "address", + name: "seller", + type: "address", + }, + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "bool", + name: "valid", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "mapLocks", + outputs: [ + { + internalType: "uint256", + name: "depositID", + type: "uint256", + }, + { + internalType: "uint256", + name: "relayerPremium", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "uint256", + name: "expirationBlock", + type: "uint256", + }, + { + internalType: "address", + name: "targetAddress", + type: "address", + }, + { + internalType: "address", + name: "relayerAddress", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "owner", @@ -376,13 +533,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -391,7 +541,7 @@ const _abi = [ type: "address", }, ], - name: "transferOwnership", + name: "setOwner", outputs: [], stateMutability: "nonpayable", type: "function", @@ -412,9 +562,9 @@ const _abi = [ { inputs: [ { - internalType: "address", + internalType: "uint256", name: "", - type: "address", + type: "uint256", }, ], name: "validBacenSigners", @@ -456,7 +606,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200197238038062001972833981016040819052620000349162000145565b6200003f33620000c2565b600282905560005b81518160ff161015620000b957600160036000848460ff168151811062000072576200007262000225565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000b0816200023b565b91505062000047565b5050506200026a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200014057600080fd5b919050565b600080604083850312156200015957600080fd5b8251602080850151919350906001600160401b03808211156200017b57600080fd5b818601915086601f8301126200019057600080fd5b815181811115620001a557620001a562000112565b8060051b604051601f19603f83011681018181108582111715620001cd57620001cd62000112565b604052918252848201925083810185019189831115620001ec57600080fd5b938501935b828510156200021557620002058562000128565b84529385019392850192620001f1565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8114156200026157634e487b7160e01b600052601160045260246000fd5b60010192915050565b6116f8806200027a6000396000f3fe6080604052600436106100d25760003560e01c806372fada5c1161007f5780639872dbfe116100595780639872dbfe146101f5578063b93bd7d41461020b578063bfe07da61461024b578063f2fde38b1461025e57600080fd5b806372fada5c1461018d5780638da5cb5b146101ad5780638e2749d6146101d557600080fd5b80634e1389ed116100b05780634e1389ed146101435780636193cdfb14610163578063715018a61461017857600080fd5b806303aaf306146100d75780632dfdf0b51461010a5780633631797214610121575b600080fd5b3480156100e357600080fd5b506100f76100f2366004611345565b61027e565b6040519081526020015b60405180910390f35b34801561011657600080fd5b506001546100f79081565b34801561012d57600080fd5b5061014161013c3660046113c7565b610573565b005b34801561014f57600080fd5b5061014161015e366004611413565b610701565b34801561016f57600080fd5b50610141610b7c565b34801561018457600080fd5b50610141610bf0565b34801561019957600080fd5b506101416101a8366004611466565b610c04565b3480156101b957600080fd5b506000546040516001600160a01b039091168152602001610101565b3480156101e157600080fd5b506101416101f036600461147f565b610ce0565b34801561020157600080fd5b506100f760025481565b34801561021757600080fd5b5061023b6102263660046114c1565b60036020526000908152604090205460ff1681565b6040519015158152602001610101565b6100f76102593660046114e3565b610e62565b34801561026a57600080fd5b506101416102793660046114c1565b6110fd565b600061028a8383610ce0565b60008881526004602081905260409091209081015460ff166102f35760405162461bcd60e51b815260206004820181905260248201527f50325049583a204465706f736974206e6f742076616c696420616e796d6f726560448201526064015b60405180910390fd5b848160020154101561036d5760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204e6f7420656e6f75676820746f6b656e2072656d61696e696e60448201527f67206f6e206465706f736974000000000000000000000000000000000000000060648201526084016102ea565b60408051602081018b9052908101869052606089811b6bffffffffffffffffffffffff1916908201526074016040516020818303038152906040528051906020012091504360056000848152602001908152602001600020600501541061043c5760405162461bcd60e51b815260206004820152603360248201527f50325049583a20416e6f74686572206c6f636b20776974682073616d6520494460448201527f206973206e6f742065787069726564207965740000000000000000000000000060648201526084016102ea565b60006040518060c001604052808b81526020018a6001600160a01b03168152602001896001600160a01b03168152602001888152602001878152602001600254436104879190611580565b9052600084815260056020818152604080842085518155918501516001830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915591860151600280850180549290931691909316179055606085015160038301556080850151600483015560a0850151919092015584018054929350889290919061051b908490611598565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a35050979650505050505050565b60008381526004602052604090205483906001600160a01b031633146105f05760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204f6e6c792073656c6c657220636f756c642063616c6c20746860448201526b34b990333ab731ba34b7b71760a11b60648201526084016102ea565b6105fa8383610ce0565b60008481526004602081905260409091209081015460ff16156106205761062085610c04565b60018101548154600283015460405163a9059cbb60e01b81526001600160a01b0392831660048201526024810191909152911690819063a9059cbb90604401602060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b191906115af565b506002820180546000909155604080518881526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505050505050565b60008581526005602081905260409091209081015443108015610728575060008160040154115b61079a5760405162461bcd60e51b815260206004820152602860248201527f50325049583a204c6f636b20616c72656164792072656c6561736564206f722060448201527f72657475726e656400000000000000000000000000000000000000000000000060648201526084016102ea565b805460009081526004602081815260408084209285015490519293926107c8926005860192918b910161160c565b60405160208183030381529060405280519060200120905060008160405160200161081f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600690935291205490915060ff16156108bd5760405162461bcd60e51b815260206004820152603160248201527f50325049583a205472616e73616374696f6e20616c726561647920757365642060448201527f746f20756e6c6f636b207061796d656e7400000000000000000000000000000060648201526084016102ea565b6040805160008082526020820180845284905260ff881692820192909252606081018990526080810188905260019060a0016020604051602081039080840390855afa158015610911573d6000803e3d6000fd5b505060408051601f1901516001600160a01b03811660009081526003602052919091205490925060ff1690506109955760405162461bcd60e51b815260206004820152602360248201527f50325049583a205369676e6572206973206e6f7420612076616c6964207369676044820152623732b960e91b60648201526084016102ea565b60018085015490860154600387015460048801546001600160a01b0393841693849363a9059cbb939116916109ca9190611598565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906115af565b50600386015415610afb576002860154600387015460405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529082169063a9059cbb90604401602060405180830381600087803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af991906115af565b505b600060048701819055600587018190558481526006602052604090819020805460ff1916600190811790915587015490516001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d90610b67908e815260200190565b60405180910390a25050505050505050505050565b610b8461118d565b6040514790339082156108fc029083906000818181858888f19350505050158015610bb3573d6000803e3d6000fd5b5060408051338152602081018390527fbf0d92faf65e256806eefa1a0d281d4873cc3c80d1ed25b8ae6f7cc66fc918ef910160405180910390a150565b610bf861118d565b610c0260006111e7565b565b60008181526004602052604090205481906001600160a01b03163314610c815760405162461bcd60e51b815260206004820152602c60248201527f50325049583a204f6e6c792073656c6c657220636f756c642063616c6c20746860448201526b34b990333ab731ba34b7b71760a11b60648201526084016102ea565b600082815260046020818152604092839020918201805460ff19169055905491518481526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a25050565b8060005b818161ffff161015610e5c5760006005600086868561ffff16818110610d0c57610d0c6116b3565b9050602002013581526020019081526020016000209050438160050154108015610d3a575060008160040154115b610dac5760405162461bcd60e51b815260206004820152602b60248201527f50325049583a204c6f636b206e6f742065787069726564206f7220616c72656160448201527f64792072656c656173656400000000000000000000000000000000000000000060648201526084016102ea565b806004015460046000836000015481526020019081526020016000206002016000828254610dda9190611580565b90915550506000600482015560018101546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff868661ffff8616818110610e2b57610e2b6116b3565b90506020020135604051610e4191815260200190565b60405180910390a25080610e54816116c9565b915050610ce4565b50505050565b6000610e6d60015490565b6000818152600460208190526040909120015490915060ff1615610ef95760405162461bcd60e51b815260206004820152603260248201527f50325049583a204465706f73697420616c726561647920657869737420616e6460448201527f206974206973207374696c6c2076616c6964000000000000000000000000000060648201526084016102ea565b6040516323b872dd60e01b81523360048201523060248201526044810185905285906001600160a01b038216906323b872dd90606401602060405180830381600087803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8191906115af565b5060006040518060c00160405280336001600160a01b03168152602001886001600160a01b0316815260200187815260200134815260200160011515815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505085815260046020818152604092839020855181546001600160a01b0391821673ffffffffffffffffffffffffffffffffffffffff1991821617835583880151600184018054919093169116179055928501516002840155606085015160038401556080850151918301805492151560ff199093169290921790915560a0840151805194955085949293506110979260058501929190910190611244565b5050600180548101905550604080518481526001600160a01b0389166020820152348183015260608101889052905133917fe0cfbec12278e314697ee34bb7a1ba4d704e84c438680672f7c1175f287e5910919081900360800190a25050949350505050565b61110561118d565b6001600160a01b0381166111815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102ea565b61118a816111e7565b50565b6000546001600160a01b03163314610c025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ea565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054611250906115d1565b90600052602060002090601f01602090048101928261127257600085556112b8565b82601f1061128b57805160ff19168380011785556112b8565b828001600101855582156112b8579182015b828111156112b857825182559160200191906001019061129d565b506112c49291506112c8565b5090565b5b808211156112c457600081556001016112c9565b80356001600160a01b03811681146112f457600080fd5b919050565b60008083601f84011261130b57600080fd5b50813567ffffffffffffffff81111561132357600080fd5b6020830191508360208260051b850101111561133e57600080fd5b9250929050565b600080600080600080600060c0888a03121561136057600080fd5b87359650611370602089016112dd565b955061137e604089016112dd565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156113a857600080fd5b6113b48a828b016112f9565b989b979a50959850939692959293505050565b6000806000604084860312156113dc57600080fd5b83359250602084013567ffffffffffffffff8111156113fa57600080fd5b611406868287016112f9565b9497909650939450505050565b600080600080600060a0868803121561142b57600080fd5b85359450602086013593506040860135925060608601359150608086013560ff8116811461145857600080fd5b809150509295509295909350565b60006020828403121561147857600080fd5b5035919050565b6000806020838503121561149257600080fd5b823567ffffffffffffffff8111156114a957600080fd5b6114b5858286016112f9565b90969095509350505050565b6000602082840312156114d357600080fd5b6114dc826112dd565b9392505050565b600080600080606085870312156114f957600080fd5b611502856112dd565b935060208501359250604085013567ffffffffffffffff8082111561152657600080fd5b818701915087601f83011261153a57600080fd5b81358181111561154957600080fd5b88602082850101111561155b57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156115935761159361156a565b500190565b6000828210156115aa576115aa61156a565b500390565b6000602082840312156115c157600080fd5b815180151581146114dc57600080fd5b600181811c908216806115e557607f821691505b6020821081141561160657634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061162857607f831692505b602080841082141561164857634e487b7160e01b86526022600452602486fd5b81801561165c576001811461166d5761169a565b60ff1986168952848901965061169a565b60008c81526020902060005b868110156116925781548b820152908501908301611679565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818114156116e1576116e161156a565b600101939250505056fea164736f6c6343000809000a"; + "0x60806040526001805560405162001806380380620018068339810160408190526200002a9162000123565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350600382905580516000905b80821015620000d6576000620000ae8484815181106200009a576200009a62000203565b6020026020010151620000e060201b60201c565b6000908152600460205260409020805460ff1916600190811790915592909201915062000076565b5050505062000219565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200011e57600080fd5b919050565b600080604083850312156200013757600080fd5b8251602080850151919350906001600160401b03808211156200015957600080fd5b818601915086601f8301126200016e57600080fd5b815181811115620001835762000183620000f0565b8060051b604051601f19603f83011681018181108582111715620001ab57620001ab620000f0565b604052918252848201925083810185019189831115620001ca57600080fd5b938501935b82851015620001f357620001e38562000106565b84529385019392850192620001cf565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6115dd80620002296000396000f3fe6080604052600436106100e85760003560e01c80636193cdfb1161008a5780638e2a3d36116100595780638e2a3d36146102f55780639872dbfe1461032757806398a268711461033d578063bfe07da61461037d57600080fd5b80636193cdfb1461026857806372fada5c1461027d5780638da5cb5b1461029d5780638e2749d6146102d557600080fd5b80632dfdf0b5116100c65780632dfdf0b5146101d857806336317972146101ef5780634b2ae9801461020f5780634e1389ed1461024857600080fd5b806303aaf306146100ed57806313af40351461012057806316d7224014610142575b600080fd5b3480156100f957600080fd5b5061010d6101083660046111e7565b610390565b6040519081526020015b60405180910390f35b34801561012c57600080fd5b5061014061013b366004611269565b61053a565b005b34801561014e57600080fd5b5061019f61015d366004611284565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03918216911686565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610117565b3480156101e457600080fd5b5060025461010d9081565b3480156101fb57600080fd5b5061014061020a36600461129d565b6105e0565b34801561021b57600080fd5b5061010d61022a366004611269565b600c1b750ffffffffffffffffffffffffffffffffffffffff0001690565b34801561025457600080fd5b506101406102633660046112e9565b6106a0565b34801561027457600080fd5b50610140610962565b34801561028957600080fd5b50610140610298366004611284565b6109f2565b3480156102a957600080fd5b506000546102bd906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b3480156102e157600080fd5b506101406102f036600461133c565b610a7a565b34801561030157600080fd5b50610315610310366004611284565b610b76565b6040516101179695949392919061137e565b34801561033357600080fd5b5061010d60035481565b34801561034957600080fd5b5061036d610358366004611284565b60046020526000908152604090205460ff1681565b6040519015158152602001610117565b61010d61038b36600461140c565b610c46565b600061039a610e00565b6103a48383610a7a565b60008881526005602052604090206004810154600160a01b900460ff166103de57604051635972996f60e11b815260040160405180910390fd5b8054851115610400576040516308aeed0f60e21b815260040160405180910390fd5b61040b89868a610e2b565b915060006040518060c001604052808b81526020018881526020018781526020016003544361043a91906114a9565b81526001600160a01b03808c166020808401919091528b82166040938401526000878152600682528381208551815591850151600183015592840151600282015560608401516003820155608084015160048201805491841673ffffffffffffffffffffffffffffffffffffffff1992831617905560a085015160059092018054929093169116179055835491925087918491906104d99084906114c1565b9091555050604080518b81526020810188905284916001600160a01b038c16917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505061052f60018055565b979650505050505050565b6000546001600160a01b031633146105885760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6105e8610e00565b6105f183610eaf565b6105fb8282610a7a565b60008381526005602052604090206004810154600160a01b900460ff1615156001141561062b5761062b846109f2565b600481015481546000835560038301546001600160a01b03928316926106549184911683610eec565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a250505061069b60018055565b505050565b6106a8610e00565b6000858152600660205260409020600381015443108015906106cc57506002810154155b156106ea576040516331da482760e11b815260040160405180910390fd5b80546000908152600560209081526040808320600280860154925191949361071893918601928b9101611513565b60405160208183030381529060405280519060200120905060008160405160200161076f91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600790935291205490915060ff161515600114156107bd57604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff881692820192909252606081018990526080810188905261083f9060019060a0016020604051602081039080840390855afa158015610815573d6000803e3d6000fd5b5050604051601f190151600c1b750ffffffffffffffffffffffffffffffffffffffff00016919050565b60008181526004602052604090205490915060ff1661087157604051632057875960e21b815260040160405180910390fd5b6004840154600186015460028701546001600160a01b0390921691600091610898916114c1565b60006002890181905560038901819055868152600760205260409020805460ff1916600117905560048801549091506108dc9083906001600160a01b031683610eec565b60018701541561090757600587015460018801546109079184916001600160a01b0390911690610eec565b60048701546040518d81526001600160a01b03909116907f5e420822d2f7281fdc4b763c62c8b7874bf22108a35efe93144d79296aacc67d9060200160405180910390a25050505050505061095b60018055565b5050505050565b6000546001600160a01b031633146109ab5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161057f565b476109b63382610f78565b60408051338152602081018390527fbf0d92faf65e256806eefa1a0d281d4873cc3c80d1ed25b8ae6f7cc66fc918ef910160405180910390a150565b6109fb81610eaf565b6000818152600560209081526040918290206004810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556003015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b6000815b80821015610b5a57600060066000868686818110610a9e57610a9e6115ba565b9050602002013581526020019081526020016000209050610abe81610fd3565b6002810154815460009081526005602052604081208054909190610ae39084906114a9565b90915550506000600282015560048101546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff868686818110610b3057610b306115ba565b90506020020135604051610b4691815260200190565b60405180910390a282600101925050610a7e565b80821015610b705763dfb035c96000526004601cfd5b50505050565b60056020526000908152604090208054600182015460028301805492939192610b9e906114d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca906114d8565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b50505050600383015460049093015491926001600160a01b03908116929081169150600160a01b900460ff1686565b6000610c50611006565b9050600085905060006040518060c0016040528087815260200134815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038916604082015260016060909101529050610cd0610e00565b60008381526005602090815260409182902083518155818401516001820155918301518051849392610d099260028501929101906110e6565b50606082015160038201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392831617905560808301516004909201805460a090940151929091167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217600160a01b91151591909102179055600280546001019055610d9c82333089611056565b610da560018055565b604080518481526001600160a01b0389166020820152348183015260608101889052905133917fe0cfbec12278e314697ee34bb7a1ba4d704e84c438680672f7c1175f287e5910919081900360800190a25050949350505050565b60015460021415610e245760405163558a1e0360e11b815260040160405180910390fd5b6002600155565b6040805160208101859052908101839052606082811b6bffffffffffffffffffffffff19169082015260009060740160405160208183030381529060405280519060200120905043600660008381526020019081526020016000206003015410610ea85760405163d0404f8560e01b815260040160405180910390fd5b9392505050565b6000818152600560205260409020600301546001600160a01b03163314610ee9576040516342e8fb9360e11b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d1160016000511416171691506000606052806040525080610b705760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161057f565b600080600080600085875af190508061069b5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161057f565b438160030154101580610fe857506002810154155b15610ee95760405163d0404f8560e01b815260040160405180910390fd5b600061101160025490565b600081815260056020526040902060040154909150600160a01b900460ff161515600114156110535760405163c44bd76560e01b815260040160405180910390fd5b90565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061095b5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161057f565b8280546110f2906114d8565b90600052602060002090601f016020900481019282611114576000855561115a565b82601f1061112d57805160ff191683800117855561115a565b8280016001018555821561115a579182015b8281111561115a57825182559160200191906001019061113f565b5061116692915061116a565b5090565b5b80821115611166576000815560010161116b565b80356001600160a01b038116811461119657600080fd5b919050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208260051b85010111156111e057600080fd5b9250929050565b600080600080600080600060c0888a03121561120257600080fd5b873596506112126020890161117f565b95506112206040890161117f565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561124a57600080fd5b6112568a828b0161119b565b989b979a50959850939692959293505050565b60006020828403121561127b57600080fd5b610ea88261117f565b60006020828403121561129657600080fd5b5035919050565b6000806000604084860312156112b257600080fd5b83359250602084013567ffffffffffffffff8111156112d057600080fd5b6112dc8682870161119b565b9497909650939450505050565b600080600080600060a0868803121561130157600080fd5b85359450602086013593506040860135925060608601359150608086013560ff8116811461132e57600080fd5b809150509295509295909350565b6000806020838503121561134f57600080fd5b823567ffffffffffffffff81111561136657600080fd5b6113728582860161119b565b90969095509350505050565b86815260006020878184015260c0604084015286518060c085015260005b818110156113b85788810183015185820160e00152820161139c565b818111156113ca57600060e083870101525b50601f01601f1916830160e00191506113f0905060608301866001600160a01b03169052565b6001600160a01b038416608083015282151560a083015261052f565b6000806000806060858703121561142257600080fd5b61142b8561117f565b935060208501359250604085013567ffffffffffffffff8082111561144f57600080fd5b818701915087601f83011261146357600080fd5b81358181111561147257600080fd5b88602082850101111561148457600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156114bc576114bc611493565b500190565b6000828210156114d3576114d3611493565b500390565b600181811c908216806114ec57607f821691505b6020821081141561150d57634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061152f57607f831692505b602080841082141561154f57634e487b7160e01b86526022600452602486fd5b8180156115635760018114611574576115a1565b60ff198616895284890196506115a1565b60008c81526020902060005b868110156115995781548b820152908501908301611580565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052603260045260246000fdfea164736f6c6343000809000a"; type P2PIXConstructorParams = | [signer?: Signer] @@ -478,7 +628,7 @@ export class P2PIX__factory extends ContractFactory { override deploy( defaultBlocks: PromiseOrValue, validSigners: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } + overrides?: PayableOverrides & { from?: PromiseOrValue } ): Promise { return super.deploy( defaultBlocks, @@ -489,7 +639,7 @@ export class P2PIX__factory extends ContractFactory { override getDeployTransaction( defaultBlocks: PromiseOrValue, validSigners: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } + overrides?: PayableOverrides & { from?: PromiseOrValue } ): TransactionRequest { return super.getDeployTransaction( defaultBlocks, diff --git a/src/types/hardhat.d.ts b/src/types/hardhat.d.ts index 5df2506..501692a 100644 --- a/src/types/hardhat.d.ts +++ b/src/types/hardhat.d.ts @@ -13,55 +13,64 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { getContractFactory( - name: "Ownable", + name: "EventAndErrors", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; + getContractFactory( + name: "Owned", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "MockToken", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC20", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "IERC20Metadata", + name: "Counters", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "IERC20", + name: "ReentrancyGuard", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "MockToken", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "P2PIX", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractAt( - name: "Ownable", + name: "EventAndErrors", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; + getContractAt( + name: "Owned", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "MockToken", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC20", address: string, signer?: ethers.Signer ): Promise; getContractAt( - name: "IERC20Metadata", + name: "Counters", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "IERC20", + name: "ReentrancyGuard", address: string, signer?: ethers.Signer - ): Promise; - getContractAt( - name: "MockToken", - address: string, - signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "P2PIX", address: string, diff --git a/src/types/index.ts b/src/types/index.ts index bf6d22e..29412f6 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,22 +1,22 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type * as openzeppelin from "./@openzeppelin"; -export type { openzeppelin }; -import type * as mockTokenSol from "./mockToken.sol"; -export type { mockTokenSol }; +import type * as lib from "./lib"; +export type { lib }; import type * as p2PixSol from "./p2pix.sol"; export type { p2PixSol }; +export type { EventAndErrors } from "./EventAndErrors"; export * as factories from "./factories"; -export type { Ownable } from "./@openzeppelin/contracts/access/Ownable"; -export { Ownable__factory } from "./factories/@openzeppelin/contracts/access/Ownable__factory"; -export type { ERC20 } from "./@openzeppelin/contracts/token/ERC20/ERC20"; -export { ERC20__factory } from "./factories/@openzeppelin/contracts/token/ERC20/ERC20__factory"; -export type { IERC20Metadata } from "./@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata"; -export { IERC20Metadata__factory } from "./factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory"; -export type { IERC20 } from "./@openzeppelin/contracts/token/ERC20/IERC20"; -export { IERC20__factory } from "./factories/@openzeppelin/contracts/token/ERC20/IERC20__factory"; -export type { MockToken } from "./mockToken.sol/MockToken"; -export { MockToken__factory } from "./factories/mockToken.sol/MockToken__factory"; +export { EventAndErrors__factory } from "./factories/EventAndErrors__factory"; +export type { Owned } from "./lib/auth/Owned"; +export { Owned__factory } from "./factories/lib/auth/Owned__factory"; +export type { MockToken } from "./lib/mock/mockToken.sol/MockToken"; +export { MockToken__factory } from "./factories/lib/mock/mockToken.sol/MockToken__factory"; +export type { ERC20 } from "./lib/tokens/ERC20"; +export { ERC20__factory } from "./factories/lib/tokens/ERC20__factory"; +export type { Counters } from "./lib/utils/Counters"; +export { Counters__factory } from "./factories/lib/utils/Counters__factory"; +export type { ReentrancyGuard } from "./lib/utils/ReentrancyGuard"; +export { ReentrancyGuard__factory } from "./factories/lib/utils/ReentrancyGuard__factory"; export type { P2PIX } from "./p2pix.sol/P2PIX"; export { P2PIX__factory } from "./factories/p2pix.sol/P2PIX__factory"; diff --git a/src/types/@openzeppelin/contracts/access/Ownable.ts b/src/types/lib/auth/Owned.ts similarity index 57% rename from src/types/@openzeppelin/contracts/access/Ownable.ts rename to src/types/lib/auth/Owned.ts index aaf0fb4..ac766c4 100644 --- a/src/types/@openzeppelin/contracts/access/Ownable.ts +++ b/src/types/lib/auth/Owned.ts @@ -24,64 +24,49 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../../../common"; +} from "../../common"; -export interface OwnableInterface extends utils.Interface { +export interface OwnedInterface extends utils.Interface { functions: { "owner()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; + "setOwner(address)": FunctionFragment; }; - getFunction( - nameOrSignatureOrTopic: "owner" | "renounceOwnership" | "transferOwnership" - ): FunctionFragment; + getFunction(nameOrSignatureOrTopic: "owner" | "setOwner"): FunctionFragment; encodeFunctionData(functionFragment: "owner", values?: undefined): string; encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", + functionFragment: "setOwner", values: [PromiseOrValue] ): string; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; events: { - "OwnershipTransferred(address,address)": EventFragment; + "OwnerUpdated(address,address)": EventFragment; }; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnerUpdated"): EventFragment; } -export interface OwnershipTransferredEventObject { - previousOwner: string; +export interface OwnerUpdatedEventObject { + user: string; newOwner: string; } -export type OwnershipTransferredEvent = TypedEvent< +export type OwnerUpdatedEvent = TypedEvent< [string, string], - OwnershipTransferredEventObject + OwnerUpdatedEventObject >; -export type OwnershipTransferredEventFilter = - TypedEventFilter; +export type OwnerUpdatedEventFilter = TypedEventFilter; -export interface Ownable extends BaseContract { +export interface Owned extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: OwnableInterface; + interface: OwnedInterface; queryFilter( event: TypedEventFilter, @@ -105,11 +90,7 @@ export interface Ownable extends BaseContract { functions: { owner(overrides?: CallOverrides): Promise<[string]>; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -117,11 +98,7 @@ export interface Ownable extends BaseContract { owner(overrides?: CallOverrides): Promise; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -129,33 +106,27 @@ export interface Ownable extends BaseContract { callStatic: { owner(overrides?: CallOverrides): Promise; - renounceOwnership(overrides?: CallOverrides): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: CallOverrides ): Promise; }; filters: { - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, + "OwnerUpdated(address,address)"( + user?: PromiseOrValue | null, newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, + ): OwnerUpdatedEventFilter; + OwnerUpdated( + user?: PromiseOrValue | null, newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; + ): OwnerUpdatedEventFilter; }; estimateGas: { owner(overrides?: CallOverrides): Promise; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -164,11 +135,7 @@ export interface Ownable extends BaseContract { populateTransaction: { owner(overrides?: CallOverrides): Promise; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/src/types/factories/@openzeppelin/contracts/token/index.ts b/src/types/lib/auth/index.ts similarity index 70% rename from src/types/factories/@openzeppelin/contracts/token/index.ts rename to src/types/lib/auth/index.ts index da1e061..5f3bf7e 100644 --- a/src/types/factories/@openzeppelin/contracts/token/index.ts +++ b/src/types/lib/auth/index.ts @@ -1,4 +1,4 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as erc20 from "./ERC20"; +export type { Owned } from "./Owned"; diff --git a/src/types/lib/index.ts b/src/types/lib/index.ts new file mode 100644 index 0000000..6b4539f --- /dev/null +++ b/src/types/lib/index.ts @@ -0,0 +1,11 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as auth from "./auth"; +export type { auth }; +import type * as mock from "./mock"; +export type { mock }; +import type * as tokens from "./tokens"; +export type { tokens }; +import type * as utils from "./utils"; +export type { utils }; diff --git a/src/types/@openzeppelin/index.ts b/src/types/lib/mock/index.ts similarity index 51% rename from src/types/@openzeppelin/index.ts rename to src/types/lib/mock/index.ts index a11e4ca..8b3e0d5 100644 --- a/src/types/@openzeppelin/index.ts +++ b/src/types/lib/mock/index.ts @@ -1,5 +1,5 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type * as contracts from "./contracts"; -export type { contracts }; +import type * as mockTokenSol from "./mockToken.sol"; +export type { mockTokenSol }; diff --git a/src/types/mockToken.sol/MockToken.ts b/src/types/lib/mock/mockToken.sol/MockToken.ts similarity index 76% rename from src/types/mockToken.sol/MockToken.ts rename to src/types/lib/mock/mockToken.sol/MockToken.ts index e91a902..5acfaa9 100644 --- a/src/types/mockToken.sol/MockToken.ts +++ b/src/types/lib/mock/mockToken.sol/MockToken.ts @@ -25,17 +25,18 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../common"; +} from "../../../common"; export interface MockTokenInterface extends utils.Interface { functions: { + "DOMAIN_SEPARATOR()": FunctionFragment; "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; + "nonces(address)": FunctionFragment; + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; @@ -44,19 +45,24 @@ export interface MockTokenInterface extends utils.Interface { getFunction( nameOrSignatureOrTopic: + | "DOMAIN_SEPARATOR" | "allowance" | "approve" | "balanceOf" | "decimals" - | "decreaseAllowance" - | "increaseAllowance" | "name" + | "nonces" + | "permit" | "symbol" | "totalSupply" | "transfer" | "transferFrom" ): FunctionFragment; + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR", + values?: undefined + ): string; encodeFunctionData( functionFragment: "allowance", values: [PromiseOrValue, PromiseOrValue] @@ -70,15 +76,23 @@ export interface MockTokenInterface extends utils.Interface { values: [PromiseOrValue] ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "nonces", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "permit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -97,19 +111,17 @@ export interface MockTokenInterface extends utils.Interface { ] ): string; + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -133,7 +145,7 @@ export interface MockTokenInterface extends utils.Interface { export interface ApprovalEventObject { owner: string; spender: string; - value: BigNumber; + amount: BigNumber; } export type ApprovalEvent = TypedEvent< [string, string, BigNumber], @@ -145,7 +157,7 @@ export type ApprovalEventFilter = TypedEventFilter; export interface TransferEventObject { from: string; to: string; - value: BigNumber; + amount: BigNumber; } export type TransferEvent = TypedEvent< [string, string, BigNumber], @@ -181,9 +193,11 @@ export interface MockToken extends BaseContract { removeListener: OnEvent; functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise<[BigNumber]>; @@ -194,26 +208,30 @@ export interface MockToken extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise<[BigNumber]>; decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise<[string]>; totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -232,9 +250,11 @@ export interface MockToken extends BaseContract { ): Promise; }; + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -245,26 +265,30 @@ export interface MockToken extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -283,9 +307,11 @@ export interface MockToken extends BaseContract { ): Promise; callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -296,26 +322,30 @@ export interface MockToken extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -338,30 +368,32 @@ export interface MockToken extends BaseContract { "Approval(address,address,uint256)"( owner?: PromiseOrValue | null, spender?: PromiseOrValue | null, - value?: null + amount?: null ): ApprovalEventFilter; Approval( owner?: PromiseOrValue | null, spender?: PromiseOrValue | null, - value?: null + amount?: null ): ApprovalEventFilter; "Transfer(address,address,uint256)"( from?: PromiseOrValue | null, to?: PromiseOrValue | null, - value?: null + amount?: null ): TransferEventFilter; Transfer( from?: PromiseOrValue | null, to?: PromiseOrValue | null, - value?: null + amount?: null ): TransferEventFilter; }; estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -372,26 +404,30 @@ export interface MockToken extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -411,9 +447,11 @@ export interface MockToken extends BaseContract { }; populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -424,26 +462,30 @@ export interface MockToken extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; diff --git a/src/types/mockToken.sol/index.ts b/src/types/lib/mock/mockToken.sol/index.ts similarity index 100% rename from src/types/mockToken.sol/index.ts rename to src/types/lib/mock/mockToken.sol/index.ts diff --git a/src/types/@openzeppelin/contracts/token/ERC20/ERC20.ts b/src/types/lib/tokens/ERC20.ts similarity index 76% rename from src/types/@openzeppelin/contracts/token/ERC20/ERC20.ts rename to src/types/lib/tokens/ERC20.ts index 682e3cf..757e254 100644 --- a/src/types/@openzeppelin/contracts/token/ERC20/ERC20.ts +++ b/src/types/lib/tokens/ERC20.ts @@ -25,17 +25,18 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../../../../common"; +} from "../../common"; export interface ERC20Interface extends utils.Interface { functions: { + "DOMAIN_SEPARATOR()": FunctionFragment; "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; + "nonces(address)": FunctionFragment; + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; @@ -44,19 +45,24 @@ export interface ERC20Interface extends utils.Interface { getFunction( nameOrSignatureOrTopic: + | "DOMAIN_SEPARATOR" | "allowance" | "approve" | "balanceOf" | "decimals" - | "decreaseAllowance" - | "increaseAllowance" | "name" + | "nonces" + | "permit" | "symbol" | "totalSupply" | "transfer" | "transferFrom" ): FunctionFragment; + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR", + values?: undefined + ): string; encodeFunctionData( functionFragment: "allowance", values: [PromiseOrValue, PromiseOrValue] @@ -70,15 +76,23 @@ export interface ERC20Interface extends utils.Interface { values: [PromiseOrValue] ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "nonces", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "permit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -97,19 +111,17 @@ export interface ERC20Interface extends utils.Interface { ] ): string; + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -133,7 +145,7 @@ export interface ERC20Interface extends utils.Interface { export interface ApprovalEventObject { owner: string; spender: string; - value: BigNumber; + amount: BigNumber; } export type ApprovalEvent = TypedEvent< [string, string, BigNumber], @@ -145,7 +157,7 @@ export type ApprovalEventFilter = TypedEventFilter; export interface TransferEventObject { from: string; to: string; - value: BigNumber; + amount: BigNumber; } export type TransferEvent = TypedEvent< [string, string, BigNumber], @@ -181,9 +193,11 @@ export interface ERC20 extends BaseContract { removeListener: OnEvent; functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise<[BigNumber]>; @@ -194,26 +208,30 @@ export interface ERC20 extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise<[BigNumber]>; decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise<[string]>; totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -232,9 +250,11 @@ export interface ERC20 extends BaseContract { ): Promise; }; + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -245,26 +265,30 @@ export interface ERC20 extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -283,9 +307,11 @@ export interface ERC20 extends BaseContract { ): Promise; callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -296,26 +322,30 @@ export interface ERC20 extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -338,30 +368,32 @@ export interface ERC20 extends BaseContract { "Approval(address,address,uint256)"( owner?: PromiseOrValue | null, spender?: PromiseOrValue | null, - value?: null + amount?: null ): ApprovalEventFilter; Approval( owner?: PromiseOrValue | null, spender?: PromiseOrValue | null, - value?: null + amount?: null ): ApprovalEventFilter; "Transfer(address,address,uint256)"( from?: PromiseOrValue | null, to?: PromiseOrValue | null, - value?: null + amount?: null ): TransferEventFilter; Transfer( from?: PromiseOrValue | null, to?: PromiseOrValue | null, - value?: null + amount?: null ): TransferEventFilter; }; estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -372,26 +404,30 @@ export interface ERC20 extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -411,9 +447,11 @@ export interface ERC20 extends BaseContract { }; populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, + arg0: PromiseOrValue, + arg1: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -424,26 +462,30 @@ export interface ERC20 extends BaseContract { ): Promise; balanceOf( - account: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; diff --git a/src/types/@openzeppelin/contracts/access/index.ts b/src/types/lib/tokens/index.ts similarity index 68% rename from src/types/@openzeppelin/contracts/access/index.ts rename to src/types/lib/tokens/index.ts index 999bcc7..063d2fb 100644 --- a/src/types/@openzeppelin/contracts/access/index.ts +++ b/src/types/lib/tokens/index.ts @@ -1,4 +1,4 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { Ownable } from "./Ownable"; +export type { ERC20 } from "./ERC20"; diff --git a/src/types/lib/utils/Counters.ts b/src/types/lib/utils/Counters.ts new file mode 100644 index 0000000..5179af4 --- /dev/null +++ b/src/types/lib/utils/Counters.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface CountersInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface Counters extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: CountersInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/src/types/lib/utils/ReentrancyGuard.ts b/src/types/lib/utils/ReentrancyGuard.ts new file mode 100644 index 0000000..d85e863 --- /dev/null +++ b/src/types/lib/utils/ReentrancyGuard.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface ReentrancyGuardInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface ReentrancyGuard extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ReentrancyGuardInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/src/types/lib/utils/index.ts b/src/types/lib/utils/index.ts new file mode 100644 index 0000000..3d0c435 --- /dev/null +++ b/src/types/lib/utils/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Counters } from "./Counters"; +export type { ReentrancyGuard } from "./ReentrancyGuard"; diff --git a/src/types/p2pix.sol/P2PIX.ts b/src/types/p2pix.sol/P2PIX.ts index 15cf82a..fb44a2e 100644 --- a/src/types/p2pix.sol/P2PIX.ts +++ b/src/types/p2pix.sol/P2PIX.ts @@ -30,38 +30,46 @@ import type { export interface P2PIXInterface extends utils.Interface { functions: { + "_castAddrToKey(address)": FunctionFragment; "cancelDeposit(uint256)": FunctionFragment; "defaultLockBlocks()": FunctionFragment; "deposit(address,uint256,string)": FunctionFragment; "depositCount()": FunctionFragment; "lock(uint256,address,address,uint256,uint256,bytes32[])": FunctionFragment; + "mapDeposits(uint256)": FunctionFragment; + "mapLocks(bytes32)": FunctionFragment; "owner()": FunctionFragment; "release(bytes32,uint256,bytes32,bytes32,uint8)": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; + "setOwner(address)": FunctionFragment; "unlockExpired(bytes32[])": FunctionFragment; - "validBacenSigners(address)": FunctionFragment; + "validBacenSigners(uint256)": FunctionFragment; "withdraw(uint256,bytes32[])": FunctionFragment; "withdrawPremiums()": FunctionFragment; }; getFunction( nameOrSignatureOrTopic: + | "_castAddrToKey" | "cancelDeposit" | "defaultLockBlocks" | "deposit" | "depositCount" | "lock" + | "mapDeposits" + | "mapLocks" | "owner" | "release" - | "renounceOwnership" - | "transferOwnership" + | "setOwner" | "unlockExpired" | "validBacenSigners" | "withdraw" | "withdrawPremiums" ): FunctionFragment; + encodeFunctionData( + functionFragment: "_castAddrToKey", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "cancelDeposit", values: [PromiseOrValue] @@ -93,6 +101,14 @@ export interface P2PIXInterface extends utils.Interface { PromiseOrValue[] ] ): string; + encodeFunctionData( + functionFragment: "mapDeposits", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mapLocks", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "owner", values?: undefined): string; encodeFunctionData( functionFragment: "release", @@ -105,11 +121,7 @@ export interface P2PIXInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", + functionFragment: "setOwner", values: [PromiseOrValue] ): string; encodeFunctionData( @@ -118,7 +130,7 @@ export interface P2PIXInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "validBacenSigners", - values: [PromiseOrValue] + values: [PromiseOrValue] ): string; encodeFunctionData( functionFragment: "withdraw", @@ -129,6 +141,10 @@ export interface P2PIXInterface extends utils.Interface { values?: undefined ): string; + decodeFunctionResult( + functionFragment: "_castAddrToKey", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "cancelDeposit", data: BytesLike @@ -143,16 +159,14 @@ export interface P2PIXInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "lock", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mapDeposits", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mapLocks", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; decodeFunctionResult(functionFragment: "release", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; decodeFunctionResult( functionFragment: "unlockExpired", data: BytesLike @@ -174,7 +188,7 @@ export interface P2PIXInterface extends utils.Interface { "LockAdded(address,bytes32,uint256,uint256)": EventFragment; "LockReleased(address,bytes32)": EventFragment; "LockReturned(address,bytes32)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; + "OwnerUpdated(address,address)": EventFragment; "PremiumsWithdrawn(address,uint256)": EventFragment; }; @@ -184,7 +198,7 @@ export interface P2PIXInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "LockAdded"): EventFragment; getEvent(nameOrSignatureOrTopic: "LockReleased"): EventFragment; getEvent(nameOrSignatureOrTopic: "LockReturned"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnerUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "PremiumsWithdrawn"): EventFragment; } @@ -261,17 +275,16 @@ export type LockReturnedEvent = TypedEvent< export type LockReturnedEventFilter = TypedEventFilter; -export interface OwnershipTransferredEventObject { - previousOwner: string; +export interface OwnerUpdatedEventObject { + user: string; newOwner: string; } -export type OwnershipTransferredEvent = TypedEvent< +export type OwnerUpdatedEvent = TypedEvent< [string, string], - OwnershipTransferredEventObject + OwnerUpdatedEventObject >; -export type OwnershipTransferredEventFilter = - TypedEventFilter; +export type OwnerUpdatedEventFilter = TypedEventFilter; export interface PremiumsWithdrawnEventObject { owner: string; @@ -312,6 +325,11 @@ export interface P2PIX extends BaseContract { removeListener: OnEvent; functions: { + _castAddrToKey( + _addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { _key: BigNumber }>; + cancelDeposit( depositID: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -328,18 +346,46 @@ export interface P2PIX extends BaseContract { depositCount( overrides?: CallOverrides - ): Promise<[BigNumber] & { _value: BigNumber }>; + ): Promise<[BigNumber] & { _val: BigNumber }>; lock( - depositID: PromiseOrValue, - targetAddress: PromiseOrValue, - relayerAddress: PromiseOrValue, - relayerPremium: PromiseOrValue, - amount: PromiseOrValue, + _depositID: PromiseOrValue, + _targetAddress: PromiseOrValue, + _relayerAddress: PromiseOrValue, + _relayerPremium: PromiseOrValue, + _amount: PromiseOrValue, expiredLocks: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + mapDeposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, string, string, string, boolean] & { + remaining: BigNumber; + premium: BigNumber; + pixTarget: string; + seller: string; + token: string; + valid: boolean; + } + >; + + mapLocks( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, string, string] & { + depositID: BigNumber; + relayerPremium: BigNumber; + amount: BigNumber; + expirationBlock: BigNumber; + targetAddress: string; + relayerAddress: string; + } + >; + owner(overrides?: CallOverrides): Promise<[string]>; release( @@ -351,11 +397,7 @@ export interface P2PIX extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -366,7 +408,7 @@ export interface P2PIX extends BaseContract { ): Promise; validBacenSigners( - arg0: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise<[boolean]>; @@ -381,6 +423,11 @@ export interface P2PIX extends BaseContract { ): Promise; }; + _castAddrToKey( + _addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + cancelDeposit( depositID: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -398,15 +445,43 @@ export interface P2PIX extends BaseContract { depositCount(overrides?: CallOverrides): Promise; lock( - depositID: PromiseOrValue, - targetAddress: PromiseOrValue, - relayerAddress: PromiseOrValue, - relayerPremium: PromiseOrValue, - amount: PromiseOrValue, + _depositID: PromiseOrValue, + _targetAddress: PromiseOrValue, + _relayerAddress: PromiseOrValue, + _relayerPremium: PromiseOrValue, + _amount: PromiseOrValue, expiredLocks: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + mapDeposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, string, string, string, boolean] & { + remaining: BigNumber; + premium: BigNumber; + pixTarget: string; + seller: string; + token: string; + valid: boolean; + } + >; + + mapLocks( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, string, string] & { + depositID: BigNumber; + relayerPremium: BigNumber; + amount: BigNumber; + expirationBlock: BigNumber; + targetAddress: string; + relayerAddress: string; + } + >; + owner(overrides?: CallOverrides): Promise; release( @@ -418,11 +493,7 @@ export interface P2PIX extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -433,7 +504,7 @@ export interface P2PIX extends BaseContract { ): Promise; validBacenSigners( - arg0: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -448,6 +519,11 @@ export interface P2PIX extends BaseContract { ): Promise; callStatic: { + _castAddrToKey( + _addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + cancelDeposit( depositID: PromiseOrValue, overrides?: CallOverrides @@ -465,15 +541,43 @@ export interface P2PIX extends BaseContract { depositCount(overrides?: CallOverrides): Promise; lock( - depositID: PromiseOrValue, - targetAddress: PromiseOrValue, - relayerAddress: PromiseOrValue, - relayerPremium: PromiseOrValue, - amount: PromiseOrValue, + _depositID: PromiseOrValue, + _targetAddress: PromiseOrValue, + _relayerAddress: PromiseOrValue, + _relayerPremium: PromiseOrValue, + _amount: PromiseOrValue, expiredLocks: PromiseOrValue[], overrides?: CallOverrides ): Promise; + mapDeposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, string, string, string, boolean] & { + remaining: BigNumber; + premium: BigNumber; + pixTarget: string; + seller: string; + token: string; + valid: boolean; + } + >; + + mapLocks( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, string, string] & { + depositID: BigNumber; + relayerPremium: BigNumber; + amount: BigNumber; + expirationBlock: BigNumber; + targetAddress: string; + relayerAddress: string; + } + >; + owner(overrides?: CallOverrides): Promise; release( @@ -485,9 +589,7 @@ export interface P2PIX extends BaseContract { overrides?: CallOverrides ): Promise; - renounceOwnership(overrides?: CallOverrides): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -498,7 +600,7 @@ export interface P2PIX extends BaseContract { ): Promise; validBacenSigners( - arg0: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -578,14 +680,14 @@ export interface P2PIX extends BaseContract { lockId?: null ): LockReturnedEventFilter; - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, + "OwnerUpdated(address,address)"( + user?: PromiseOrValue | null, newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, + ): OwnerUpdatedEventFilter; + OwnerUpdated( + user?: PromiseOrValue | null, newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; + ): OwnerUpdatedEventFilter; "PremiumsWithdrawn(address,uint256)"( owner?: null, @@ -598,6 +700,11 @@ export interface P2PIX extends BaseContract { }; estimateGas: { + _castAddrToKey( + _addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + cancelDeposit( depositID: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -615,15 +722,25 @@ export interface P2PIX extends BaseContract { depositCount(overrides?: CallOverrides): Promise; lock( - depositID: PromiseOrValue, - targetAddress: PromiseOrValue, - relayerAddress: PromiseOrValue, - relayerPremium: PromiseOrValue, - amount: PromiseOrValue, + _depositID: PromiseOrValue, + _targetAddress: PromiseOrValue, + _relayerAddress: PromiseOrValue, + _relayerPremium: PromiseOrValue, + _amount: PromiseOrValue, expiredLocks: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + mapDeposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mapLocks( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + owner(overrides?: CallOverrides): Promise; release( @@ -635,11 +752,7 @@ export interface P2PIX extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -650,7 +763,7 @@ export interface P2PIX extends BaseContract { ): Promise; validBacenSigners( - arg0: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -666,6 +779,11 @@ export interface P2PIX extends BaseContract { }; populateTransaction: { + _castAddrToKey( + _addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + cancelDeposit( depositID: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } @@ -683,15 +801,25 @@ export interface P2PIX extends BaseContract { depositCount(overrides?: CallOverrides): Promise; lock( - depositID: PromiseOrValue, - targetAddress: PromiseOrValue, - relayerAddress: PromiseOrValue, - relayerPremium: PromiseOrValue, - amount: PromiseOrValue, + _depositID: PromiseOrValue, + _targetAddress: PromiseOrValue, + _relayerAddress: PromiseOrValue, + _relayerPremium: PromiseOrValue, + _amount: PromiseOrValue, expiredLocks: PromiseOrValue[], overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + mapDeposits( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mapLocks( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + owner(overrides?: CallOverrides): Promise; release( @@ -703,11 +831,7 @@ export interface P2PIX extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( + setOwner( newOwner: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -718,7 +842,7 @@ export interface P2PIX extends BaseContract { ): Promise; validBacenSigners( - arg0: PromiseOrValue, + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; diff --git a/test/1-deposit.test.ts b/test/1-deposit.test.ts index 6eb0d85..2001eca 100644 --- a/test/1-deposit.test.ts +++ b/test/1-deposit.test.ts @@ -36,12 +36,15 @@ describe("P2PIX deposit test", () => { ]); await p2pix.deployed(); + const ownerKey = await p2pix._castAddrToKey(owner.address); + const wallet2Key = await p2pix._castAddrToKey(wallet2.address); + // Verify values at deployment expect( - await p2pix.validBacenSigners(owner.address), + await p2pix.callStatic.validBacenSigners(ownerKey), ).to.equal(true); expect( - await p2pix.validBacenSigners(wallet2.address), + await p2pix.validBacenSigners(wallet2Key), ).to.equal(true); }); diff --git a/test/2-lock-release.test.ts b/test/2-lock-release.test.ts index 32495f5..a484feb 100644 --- a/test/2-lock-release.test.ts +++ b/test/2-lock-release.test.ts @@ -1,6 +1,7 @@ import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; import { expect } from "chai"; import { ethers, network } from "hardhat"; +import { P2PixErrors } from "./utils/errors"; import { MockToken, P2PIX } from "../src/types"; @@ -37,15 +38,19 @@ describe("P2PIX deposit test", () => { ]); await p2pix.deployed(); + const ownerKey = await p2pix._castAddrToKey(owner.address); + const wallet2key = await p2pix._castAddrToKey(wallet2.address); + const wallet3key = await p2pix._castAddrToKey(wallet3.address); + // Verify values at deployment expect( - await p2pix.validBacenSigners(owner.address), + await p2pix.validBacenSigners(ownerKey), ).to.equal(true); expect( - await p2pix.validBacenSigners(wallet2.address), + await p2pix.validBacenSigners(wallet2key), ).to.equal(true); expect( - await p2pix.validBacenSigners(wallet3.address), + await p2pix.validBacenSigners(wallet3key), ).to.equal(false); }); @@ -189,9 +194,7 @@ describe("P2PIX deposit test", () => { ethers.utils.parseEther("100"), [], ), - ).to.be.revertedWith( - "P2PIX: Another lock with same ID is not expired yet", - ); + ).to.be.revertedWithCustomError(p2pix, P2PixErrors.NotExpired); }); it("Should release the locked amount to the buyer", async () => { @@ -234,9 +237,7 @@ describe("P2PIX deposit test", () => { p2pix .connect(wallet3) .release(lockID, endtoendID, sig.r, sig.s, sig.v), - ).to.be.revertedWith( - "P2PIX: Lock already released or returned", - ); + ).to.be.revertedWithCustomError(p2pix, P2PixErrors.AlreadyReleased); }); it("Should prevent create a 900 lock", async () => { @@ -251,9 +252,8 @@ describe("P2PIX deposit test", () => { ethers.utils.parseEther("900"), [], ), - ).to.be.revertedWith( - "P2PIX: Not enough token remaining on deposit", - ); + ).to.be.revertedWithCustomError( + p2pix, P2PixErrors.NotEnoughTokens); }); it("Should allow recreate same lock again", async () => { @@ -284,9 +284,9 @@ describe("P2PIX deposit test", () => { it("Should allow unlock expired lock", async () => { await expect( p2pix.unlockExpired([lockID]), - ).to.be.revertedWith( - "P2PIX: Lock not expired or already released", - ); + ).to.be.revertedWithCustomError( + p2pix, P2PixErrors.NotExpired); + await network.provider.send("evm_mine"); await network.provider.send("evm_mine"); await network.provider.send("evm_mine"); @@ -299,8 +299,7 @@ describe("P2PIX deposit test", () => { it("Should prevent unlock again", async () => { await expect( p2pix.unlockExpired([lockID]), - ).to.be.revertedWith( - "P2PIX: Lock not expired or already released", - ); + ).to.be.revertedWithCustomError( + p2pix, P2PixErrors.NotExpired); }); -}); +}); \ No newline at end of file diff --git a/test/utils/errors.ts b/test/utils/errors.ts new file mode 100644 index 0000000..764a875 --- /dev/null +++ b/test/utils/errors.ts @@ -0,0 +1,11 @@ +export enum P2PixErrors { + DepositAlreadyExists = "DepositAlreadyExists", + OnlySeller = "OnlySeller", + NotExpired = "NotExpired", + LoopOverflow = "LoopOverflow", + InvalidDeposit = "InvalidDeposit", + NotEnoughTokens = "NotEnoughTokens", + AlreadyReleased = "AlreadyReleased", + TxAlreadyUsed = "TxAlreadyUsed", + InvalidSigner = "InvalidSigner", +} \ No newline at end of file