@1inch/solidity-utils 3.8.3 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -208
- package/contracts/interfaces/ICreate3Deployer.sol +16 -0
- package/contracts/interfaces/IDaiLikePermit.sol +13 -0
- package/contracts/interfaces/IERC20MetadataUppercase.sol +12 -0
- package/contracts/interfaces/IERC7597Permit.sol +13 -0
- package/contracts/interfaces/IPermit2.sol +45 -12
- package/contracts/interfaces/IWETH.sol +17 -0
- package/contracts/libraries/AddressArray.sol +190 -61
- package/contracts/libraries/AddressLib.sol +2 -1
- package/contracts/libraries/AddressSet.sol +82 -18
- package/contracts/libraries/BySigTraits.sol +46 -0
- package/contracts/libraries/BytesMemory.sol +2 -1
- package/contracts/libraries/BytesStorage.sol +2 -1
- package/contracts/libraries/ECDSA.sol +111 -0
- package/contracts/libraries/RevertReasonForwarder.sol +13 -3
- package/contracts/libraries/RevertReasonParser.sol +11 -2
- package/contracts/libraries/SafeERC20.sol +7 -3
- package/contracts/libraries/StringUtil.sol +21 -3
- package/contracts/libraries/UniERC20.sol +57 -12
- package/contracts/mocks/ERC20PermitMock.sol +12 -0
- package/contracts/mocks/SelfdestructEthSenderMock.sol +17 -0
- package/contracts/mocks/TokenCustomDecimalsMock.sol +25 -4
- package/contracts/mocks/TokenMock.sol +19 -0
- package/dist/hardhat-setup/networks.d.ts +23 -0
- package/dist/hardhat-setup/networks.js +22 -0
- package/dist/hardhat-setup/networks.js.map +1 -1
- package/dist/src/expect.d.ts +12 -0
- package/dist/src/expect.js +12 -0
- package/dist/src/expect.js.map +1 -1
- package/dist/src/permit.d.ts +120 -1
- package/dist/src/permit.js +124 -8
- package/dist/src/permit.js.map +1 -1
- package/dist/src/prelude.d.ts +6 -0
- package/dist/src/prelude.js +6 -0
- package/dist/src/prelude.js.map +1 -1
- package/dist/src/profileEVM.d.ts +26 -0
- package/dist/src/profileEVM.js +30 -3
- package/dist/src/profileEVM.js.map +1 -1
- package/dist/src/utils.d.ts +79 -0
- package/dist/src/utils.js +92 -1
- package/dist/src/utils.js.map +1 -1
- package/dist/typechain-types/@openzeppelin/contracts/utils/Address.d.ts +20 -0
- package/dist/typechain-types/@openzeppelin/contracts/utils/Address.js +3 -0
- package/dist/typechain-types/@openzeppelin/contracts/utils/Address.js.map +1 -0
- package/dist/typechain-types/@openzeppelin/contracts/utils/index.d.ts +1 -0
- package/dist/typechain-types/contracts/index.d.ts +2 -3
- package/dist/typechain-types/contracts/interfaces/IERC7597Permit.d.ts +41 -0
- package/dist/typechain-types/contracts/interfaces/IERC7597Permit.js +3 -0
- package/dist/typechain-types/contracts/interfaces/IERC7597Permit.js.map +1 -0
- package/dist/typechain-types/contracts/interfaces/index.d.ts +1 -0
- package/dist/typechain-types/contracts/libraries/BySigTraits.d.ts +20 -0
- package/dist/typechain-types/contracts/libraries/BySigTraits.js +3 -0
- package/dist/typechain-types/contracts/libraries/BySigTraits.js.map +1 -0
- package/dist/typechain-types/contracts/libraries/index.d.ts +1 -0
- package/dist/typechain-types/contracts/mixins/BySig.d.ts +214 -0
- package/dist/typechain-types/contracts/mixins/BySig.js +3 -0
- package/dist/typechain-types/contracts/mixins/BySig.js.map +1 -0
- package/dist/typechain-types/contracts/{EthReceiver.d.ts → mixins/EthReceiver.d.ts} +1 -1
- package/dist/typechain-types/contracts/mixins/EthReceiver.js.map +1 -0
- package/dist/typechain-types/contracts/{OnlyWethReceiver.d.ts → mixins/OnlyWethReceiver.d.ts} +1 -1
- package/dist/typechain-types/contracts/mixins/OnlyWethReceiver.js.map +1 -0
- package/dist/typechain-types/contracts/{PermitAndCall.d.ts → mixins/PermitAndCall.d.ts} +1 -1
- package/dist/typechain-types/contracts/mixins/PermitAndCall.js.map +1 -0
- package/dist/typechain-types/contracts/mixins/SelfdestructEthSender.d.ts +29 -0
- package/dist/typechain-types/contracts/mixins/SelfdestructEthSender.js +3 -0
- package/dist/typechain-types/contracts/mixins/SelfdestructEthSender.js.map +1 -0
- package/dist/typechain-types/contracts/mixins/index.d.ts +5 -0
- package/dist/typechain-types/contracts/mixins/index.js +3 -0
- package/dist/typechain-types/contracts/mixins/index.js.map +1 -0
- package/dist/typechain-types/contracts/mocks/SelfdestructEthSenderMock.d.ts +37 -0
- package/dist/typechain-types/contracts/mocks/SelfdestructEthSenderMock.js +3 -0
- package/dist/typechain-types/contracts/mocks/SelfdestructEthSenderMock.js.map +1 -0
- package/dist/typechain-types/contracts/mocks/TokenCustomDecimalsMock.d.ts +1 -5
- package/dist/typechain-types/contracts/mocks/index.d.ts +1 -0
- package/dist/typechain-types/contracts/tests/mocks/AddressSetMock.d.ts +5 -1
- package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.d.ts +47 -0
- package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.d.ts +422 -0
- package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.d.ts +260 -0
- package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/index.d.ts +3 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +42 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js +67 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js.map +1 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.d.ts +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.js +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.d.ts +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.js +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.d.ts +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.js +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +1 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.js +3 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.js.map +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/math/Math__factory.d.ts +1 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/math/Math__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/index.d.ts +1 -3
- package/dist/typechain-types/factories/contracts/index.js +2 -7
- package/dist/typechain-types/factories/contracts/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.d.ts +33 -0
- package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.js +53 -0
- package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/interfaces/index.d.ts +1 -0
- package/dist/typechain-types/factories/contracts/interfaces/index.js +3 -1
- package/dist/typechain-types/factories/contracts/interfaces/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/libraries/AddressArray__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/AddressArray__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.d.ts +26 -0
- package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.js +45 -0
- package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/libraries/BytesMemory__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/BytesMemory__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/BytesStorage__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/BytesStorage__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/RevertReasonParser__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/RevertReasonParser__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/SafeERC20__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/SafeERC20__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/UniERC20__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/UniERC20__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/index.d.ts +1 -0
- package/dist/typechain-types/factories/contracts/libraries/index.js +3 -1
- package/dist/typechain-types/factories/contracts/libraries/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/mixins/BySig__factory.d.ts +286 -0
- package/dist/typechain-types/factories/contracts/mixins/BySig__factory.js +385 -0
- package/dist/typechain-types/factories/contracts/mixins/BySig__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/{EthReceiver__factory.d.ts → mixins/EthReceiver__factory.d.ts} +1 -1
- package/dist/typechain-types/factories/contracts/mixins/EthReceiver__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/{OnlyWethReceiver__factory.d.ts → mixins/OnlyWethReceiver__factory.d.ts} +1 -1
- package/dist/typechain-types/factories/contracts/mixins/OnlyWethReceiver__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/{PermitAndCall__factory.d.ts → mixins/PermitAndCall__factory.d.ts} +1 -1
- package/dist/typechain-types/factories/contracts/mixins/PermitAndCall__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/mixins/SelfdestructEthSender__factory.d.ts +17 -0
- package/dist/typechain-types/factories/contracts/mixins/SelfdestructEthSender__factory.js +33 -0
- package/dist/typechain-types/factories/contracts/mixins/SelfdestructEthSender__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/mixins/index.d.ts +5 -0
- package/dist/typechain-types/factories/contracts/mixins/index.js +17 -0
- package/dist/typechain-types/factories/contracts/mixins/index.js.map +1 -0
- package/dist/typechain-types/factories/contracts/mocks/ERC20PermitMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/mocks/ERC20PermitMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/mocks/ERC20PermitMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/mocks/SelfdestructEthSenderMock__factory.d.ts +49 -0
- package/dist/typechain-types/factories/contracts/mocks/SelfdestructEthSenderMock__factory.js +75 -0
- package/dist/typechain-types/factories/contracts/mocks/SelfdestructEthSenderMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/mocks/TokenCustomDecimalsMock__factory.d.ts +1 -11
- package/dist/typechain-types/factories/contracts/mocks/TokenCustomDecimalsMock__factory.js +1 -14
- package/dist/typechain-types/factories/contracts/mocks/TokenCustomDecimalsMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/mocks/TokenMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/mocks/TokenMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/mocks/TokenMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/mocks/index.d.ts +1 -0
- package/dist/typechain-types/factories/contracts/mocks/index.js +3 -1
- package/dist/typechain-types/factories/contracts/mocks/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/ECDSATest__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/ECDSATest__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/ECDSATest__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/RevertReasonParserTest__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/RevertReasonParserTest__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/RevertReasonParserTest__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/StringUtilTest__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/StringUtilTest__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/StringUtilTest__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.d.ts +1 -5
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js +1 -6
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressLibMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressLibMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressLibMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.d.ts +11 -5
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js +14 -6
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.d.ts +86 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.js +126 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesMemoryMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesMemoryMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesMemoryMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesStorageMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesStorageMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesStorageMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/DaiLikePermitMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/DaiLikePermitMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/DaiLikePermitMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/ERC1271WalletMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/ERC1271WalletMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/ERC1271WalletMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/EthSenderMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/EthSenderMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/EthSenderMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20WithSafeBalance__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20WithSafeBalance__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20WithSafeBalance__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/Permit2ReturnTrueMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/Permit2ReturnTrueMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/Permit2ReturnTrueMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeWETHWrapper__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeWETHWrapper__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeWETHWrapper__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.d.ts +675 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.js +893 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.d.ts +481 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.js +640 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WETH__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WETH__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WETH__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/index.d.ts +3 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/index.js +7 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/index.js.map +1 -1
- package/dist/typechain-types/index.d.ts +24 -6
- package/dist/typechain-types/index.js +26 -8
- package/dist/typechain-types/index.js.map +1 -1
- package/package.json +23 -18
- package/utils/README.md +180 -0
- package/utils/docify.utils.js +3 -3
- package/utils/file-dependencies.js +0 -0
- package/utils/test-docgen.js +0 -0
- package/contracts/EthReceiver.sol +0 -16
- package/contracts/OnlyWethReceiver.sol +0 -17
- package/contracts/PermitAndCall.sol +0 -28
- package/dist/typechain-types/contracts/EthReceiver.js.map +0 -1
- package/dist/typechain-types/contracts/OnlyWethReceiver.js.map +0 -1
- package/dist/typechain-types/contracts/PermitAndCall.js.map +0 -1
- package/dist/typechain-types/factories/contracts/EthReceiver__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/OnlyWethReceiver__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/PermitAndCall__factory.js.map +0 -1
- /package/dist/typechain-types/contracts/{EthReceiver.js → mixins/EthReceiver.js} +0 -0
- /package/dist/typechain-types/contracts/{OnlyWethReceiver.js → mixins/OnlyWethReceiver.js} +0 -0
- /package/dist/typechain-types/contracts/{PermitAndCall.js → mixins/PermitAndCall.js} +0 -0
- /package/dist/typechain-types/factories/contracts/{EthReceiver__factory.js → mixins/EthReceiver__factory.js} +0 -0
- /package/dist/typechain-types/factories/contracts/{OnlyWethReceiver__factory.js → mixins/OnlyWethReceiver__factory.js} +0 -0
- /package/dist/typechain-types/factories/contracts/{PermitAndCall__factory.js → mixins/PermitAndCall__factory.js} +0 -0
package/README.md
CHANGED
|
@@ -3,223 +3,24 @@
|
|
|
3
3
|
<img src="https://github.com/1inch/solidity-utils/blob/master/.github/1inch_github_b.svg#gh-dark-mode-only">
|
|
4
4
|
</div>
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Utility Library for Smart Contracts and Testing
|
|
7
7
|
|
|
8
8
|
[](https://github.com/1inch/solidity-utils/actions)
|
|
9
9
|
[](https://codecov.io/gh/1inch/solidity-utils)
|
|
10
10
|
[](https://www.npmjs.org/package/@1inch/solidity-utils)
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
This repository is a comprehensive toolkit designed to streamline and optimize the development, tests and management of smart contracts. This repository serves as a one-stop resource for developers working on Ethereum and EVM-compatible blockchain projects, offering a blend of Solidity contracts with various utilities and optimizations, alongside JavaScript tools for testing, documentation, and project management.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## Features
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
- **[Development and Testing](https://github.com/1inch/solidity-utils/blob/master/docs/js/modules/src.md)**: The tools and utilities provided in this section are designed to aid in the development and testing of smart contracts. They help avoid the duplication of helper methods across different repositories by centralizing commonly used functions and scripts. This not only streamlines the development process but also ensures that the latest versions of these helpers are readily available and consistently used throughout your projects. Leveraging these utilities can significantly enhance efficiency and maintainability of your smart contract code.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|--|--|--|
|
|
20
|
-
|contracts|`EthReceiver`||
|
|
21
|
-
|contracts|`Permitable`||
|
|
22
|
-
|contracts|`GasChecker`||
|
|
23
|
-
|contracts/interfaces|`IDaiLikePermit`|Interface of token which has `permit` method like DAI token|
|
|
24
|
-
|contracts/interfaces|`IWETH`|WETH token interface|
|
|
25
|
-
|contracts/libraries|`AddressArray`|library for work with array of addresses|
|
|
26
|
-
|contracts/libraries|`AddressSet`|library for work with set of addresses|
|
|
27
|
-
|contracts/libraries|`RevertReasonParser`|library parse the message from reverted method to readble format|
|
|
28
|
-
|contracts/libraries|`StringUtil`|optimized methods to convert data to hex|
|
|
29
|
-
|contracts/libraries|`UniERC20`||
|
|
18
|
+
- **[Documentation and Utilities](https://github.com/1inch/solidity-utils/blob/master/utils/README.md)**: A suite of functionalities for generating documentation and additional utilities to enhance development workflow.
|
|
30
19
|
|
|
31
|
-
|
|
20
|
+
- **[Configuration and Management](https://github.com/1inch/solidity-utils/blob/master/docs/js/modules/hardhat_setup.md)**: Tools for setting up Hardhat network configurations and managing project settings efficiently.
|
|
32
21
|
|
|
33
|
-
|
|
34
|
-
|--|--|--|
|
|
35
|
-
|asserts|`assertThrowsAsync(action, msg)`|checks the async function `action()` thrown with message `msg`|
|
|
36
|
-
|asserts|`assertRoughlyEqualValues(expected, actual, relativeDiff)`|checks the `expected` value is equal to `actual` value with `relativeDiff` precision|
|
|
37
|
-
|utils|`timeIncreaseTo(seconds)`|increases blockchain time to `seconds` sec|
|
|
38
|
-
|utils|`trackReceivedToken(token, wallet, txPromise, ...args)`|returns amount of `token` which recieved the `wallet` in async method `txPromise` with arguments `args`|
|
|
39
|
-
|utils|`trackReceivedTokenAndTx(token, wallet, txPromise, ...args)`|returns transaction info and amount of `token` which recieved the `wallet` in async method `txPromise` with arguments `args`|
|
|
40
|
-
|utils|`fixSignature(signature)`|patchs ganache's signature to geth's version|
|
|
41
|
-
|utils|`signMessage(signer, messageHex) `|signs `messageHex` with `signer` and patchs ganache's signature to geth's version|
|
|
42
|
-
|utils|`countInstructions(txHash, instruction)`|counts amount of `instruction` in transaction with `txHash` hash|
|
|
43
|
-
|utils|`deployAndGetContract(contractName, constructorArgs, deployments, deployer, deploymentName, skipVerify, skipIfAlreadyDeployed, gasPrice, maxPriorityFeePerGas, maxFeePerGas, log, waitConfirmations)`|deploys contract `contractName` as `deploymentName` if not `skipIfAlreadyDeployed` with `constructorArgs` from `deployer` using `hardhat-deploy` `deployments` with additional gas options `gasPrice`, `maxPriorityFeePerGas` and `maxFeePerGas` and outputs results to the console if `log`. Tries to verify it after `waitConfirmations` on Etherscan if not `skipVerify`.|
|
|
44
|
-
|profileEVM|`profileEVM(txHash, instruction, optionalTraceFile)`|the same as the `countInstructions()` with option of writing all trace to `optionalTraceFile`|
|
|
45
|
-
|profileEVM|`gasspectEVM(txHash, options, optionalTraceFile)`|returns all used operations in `txHash` transaction with `options` and their costs with option of writing all trace to `optionalTraceFile`|
|
|
22
|
+
- **[Solidity Contracts and Libraries](https://github.com/1inch/solidity-utils/blob/master/docs/contracts/SUMMARY.md)**: Frequently used smart contracts, libraries, and interfaces aimed at providing reusable code for common use cases, alongside optimizations to improve contract efficiency.
|
|
46
23
|
|
|
47
|
-
|
|
24
|
+
## Contributing
|
|
48
25
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Generates documentation in markdown format from natspec docs
|
|
52
|
-
|
|
53
|
-
##### Usage
|
|
54
|
-
Add to `package.json` file solidity compiler version and shortcut to run command
|
|
55
|
-
|
|
56
|
-
`devDependencies` section
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
"solc": "0.8.12",
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
`scripts` section
|
|
63
|
-
```
|
|
64
|
-
"docify": "npx solidity-utils-docify"
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
You can set output directory with ENV variable:
|
|
68
|
-
```
|
|
69
|
-
"docify": "DOCGEN_OUTPUT_DIR=./docs npx solidity-utils-docify"
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
...
|
|
73
|
-
|
|
74
|
-
#### Dependencies list (imports-list)
|
|
75
|
-
|
|
76
|
-
Lists all imports recursively for the given solidity contract file.
|
|
77
|
-
|
|
78
|
-
##### Usage
|
|
79
|
-
```
|
|
80
|
-
npx imports-list -i <solidity file> [-a <alias list>]
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Available parameters
|
|
84
|
-
```
|
|
85
|
-
Options:
|
|
86
|
-
-i, --input <input> file to get dependencies for
|
|
87
|
-
-a, --alias [alias...] projects alias list
|
|
88
|
-
-h, --help display help for command
|
|
89
|
-
```
|
|
90
|
-
Aliases are used to provide source code for third-party projects.
|
|
91
|
-
For example, your contract uses imports from your other project and import is defined as
|
|
92
|
-
```
|
|
93
|
-
import "@1inch/otherproject/contracts/dependency.sol";
|
|
94
|
-
```
|
|
95
|
-
and you've got source code for `@1inch/otherproject` locally. Then you provide local path for the project to rip dependencies from `dependency.sol` as well.
|
|
96
|
-
If there are several dependencies they should be provided using space as separator.
|
|
97
|
-
|
|
98
|
-
##### Example
|
|
99
|
-
File imports
|
|
100
|
-
```Solidity
|
|
101
|
-
#rootFile.sol
|
|
102
|
-
import '@1inch/otherproject/contracts/dependency.sol'
|
|
103
|
-
|
|
104
|
-
#@1inch/otherproject/contracts/dependency.sol
|
|
105
|
-
import 'helpers/helper.sol'
|
|
106
|
-
```
|
|
107
|
-
File and folder structure
|
|
108
|
-
```
|
|
109
|
-
rootFolder/
|
|
110
|
-
|
|
111
|
-
-- mainProject/
|
|
112
|
-
---- contracts/
|
|
113
|
-
------ rootFile.sol
|
|
114
|
-
|
|
115
|
-
-- dependencyProject/
|
|
116
|
-
---- helpers/
|
|
117
|
-
------ helper.sol
|
|
118
|
-
---- dependency.sol
|
|
119
|
-
```
|
|
120
|
-
Command
|
|
121
|
-
```
|
|
122
|
-
rootFolder/mainProject % npx imports-list -i './contracts/rootFile.sol' -a '@1inch/otherproject' '../dependencyProject'
|
|
123
|
-
```
|
|
124
|
-
Output
|
|
125
|
-
```
|
|
126
|
-
Project => root
|
|
127
|
-
not set
|
|
128
|
-
|
|
129
|
-
Project => @1inch/otherproject
|
|
130
|
-
../otherproject/contracts/dependency.sol
|
|
131
|
-
../otherproject/contracts/helpers/helper.sol
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
#### Test documentation generator (test-docgen)
|
|
135
|
-
Script generates documentation for tests in markdown format.
|
|
136
|
-
Give descriptions for `describe` and `it` sections and build documentation using these descriptions.
|
|
137
|
-
|
|
138
|
-
##### Example
|
|
139
|
-
Test described as shown below
|
|
140
|
-
|
|
141
|
-
```JavaScript
|
|
142
|
-
// Test suite
|
|
143
|
-
describe('My feature', function() {
|
|
144
|
-
// Nested test suite
|
|
145
|
-
describe("My subfeature", function() {
|
|
146
|
-
/*
|
|
147
|
-
**Test case 1**
|
|
148
|
-
Test case should work
|
|
149
|
-
*/
|
|
150
|
-
it("My case", function() {
|
|
151
|
-
// code here
|
|
152
|
-
})
|
|
153
|
-
})
|
|
154
|
-
})
|
|
155
|
-
```
|
|
156
|
-
will generated the following output
|
|
157
|
-
```Markdown
|
|
158
|
-
|
|
159
|
-
# My feature
|
|
160
|
-
|
|
161
|
-
Test suite
|
|
162
|
-
|
|
163
|
-
## My subfeature
|
|
164
|
-
|
|
165
|
-
Nested test suite
|
|
166
|
-
|
|
167
|
-
### My case
|
|
168
|
-
|
|
169
|
-
**Test case 1**
|
|
170
|
-
Test case should work
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
##### Installation
|
|
174
|
-
- Before use install documentation parser
|
|
175
|
-
```
|
|
176
|
-
yarn add acquit --dev
|
|
177
|
-
```
|
|
178
|
-
- Optionally configure script for default usage. Add to `script` section in `package.json`
|
|
179
|
-
```
|
|
180
|
-
"test:docs": "npx test-docgen"
|
|
181
|
-
```
|
|
182
|
-
- Optionally configure script for generating test list only. Add to `script` section in `package.json`
|
|
183
|
-
```
|
|
184
|
-
"test:docs": "npx test-docgen -l"
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
##### Usage
|
|
188
|
-
If script configured
|
|
189
|
-
```
|
|
190
|
-
yarn test:docs
|
|
191
|
-
```
|
|
192
|
-
or
|
|
193
|
-
```
|
|
194
|
-
npx test-docgen
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
Available parameters
|
|
198
|
-
```
|
|
199
|
-
Options:
|
|
200
|
-
-i, --input <input> tests directory (default: "test")
|
|
201
|
-
-x, --exclude [exclude] exclude directories and files. omit argument to exclude all subdirectories (default: false)
|
|
202
|
-
-o, --output <output> file to write output (default: "TESTS.md")
|
|
203
|
-
-c, --code include code (default: false)
|
|
204
|
-
-l, --list list tests only, do not include description (default: false)
|
|
205
|
-
-d, --debug debug mode (default: false)
|
|
206
|
-
-h, --help display help for command
|
|
207
|
-
```
|
|
208
|
-
##### Examples
|
|
209
|
-
Generate docs with default input and output
|
|
210
|
-
```
|
|
211
|
-
npx test-docgen
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
Generate docs for files in folders `tests/mocks` and `tests/utils`
|
|
215
|
-
```
|
|
216
|
-
npx test-docgen -i "tests/mocks;tests/utils"
|
|
217
|
-
```
|
|
218
|
-
Exclude from docs file `test/mock-exclude.js` and `test/utils folder`
|
|
219
|
-
```
|
|
220
|
-
npx test-docgen -x "tests/mock-exclude.js;tests/utils"
|
|
221
|
-
```
|
|
222
|
-
Generate list of tests only
|
|
223
|
-
```
|
|
224
|
-
npx test-docgen -l
|
|
225
|
-
```
|
|
26
|
+
Contributions are welcome! If you have a suggestion that would make this repository better, or if you have any questions, please feel free to fork the repo and create a pull request. You can also simply open an issue with your suggestion or question.
|
|
@@ -2,7 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
pragma solidity ^0.8.0;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @title ICreate3Deployer
|
|
7
|
+
* @dev Interface for deploying contracts with deterministic addresses via CREATE3.
|
|
8
|
+
*/
|
|
5
9
|
interface ICreate3Deployer {
|
|
10
|
+
/**
|
|
11
|
+
* @notice Deploys a contract using CREATE3 with a given salt and bytecode.
|
|
12
|
+
* @param salt Unique value to create deterministic address.
|
|
13
|
+
* @param code Contract bytecode to deploy.
|
|
14
|
+
* @return Address of the deployed contract.
|
|
15
|
+
*/
|
|
6
16
|
function deploy(bytes32 salt, bytes calldata code) external returns (address);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @notice Computes the address of a contract deployed with the given salt.
|
|
20
|
+
* @param salt Unique value used during deployment.
|
|
21
|
+
* @return Address of the contract.
|
|
22
|
+
*/
|
|
7
23
|
function addressOf(bytes32 salt) external view returns (address);
|
|
8
24
|
}
|
|
@@ -2,7 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
pragma solidity ^0.8.0;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @title IDaiLikePermit
|
|
7
|
+
* @dev Interface for Dai-like permit function allowing token spending via signatures.
|
|
8
|
+
*/
|
|
5
9
|
interface IDaiLikePermit {
|
|
10
|
+
/**
|
|
11
|
+
* @notice Approves spending of tokens via off-chain signatures.
|
|
12
|
+
* @param holder Token holder's address.
|
|
13
|
+
* @param spender Spender's address.
|
|
14
|
+
* @param nonce Current nonce of the holder.
|
|
15
|
+
* @param expiry Time when the permit expires.
|
|
16
|
+
* @param allowed True to allow, false to disallow spending.
|
|
17
|
+
* @param v, r, s Signature components.
|
|
18
|
+
*/
|
|
6
19
|
function permit(
|
|
7
20
|
address holder,
|
|
8
21
|
address spender,
|
|
@@ -2,8 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
pragma solidity ^0.8.0;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @title IERC20MetadataUppercase
|
|
7
|
+
* @dev Interface for ERC20 token metadata with uppercase naming convention.
|
|
8
|
+
*/
|
|
5
9
|
interface IERC20MetadataUppercase {
|
|
10
|
+
/**
|
|
11
|
+
* @notice Gets the token name.
|
|
12
|
+
* @return Token name.
|
|
13
|
+
*/
|
|
6
14
|
function NAME() external view returns (string memory); // solhint-disable-line func-name-mixedcase
|
|
7
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @notice Gets the token symbol.
|
|
18
|
+
* @return Token symbol.
|
|
19
|
+
*/
|
|
8
20
|
function SYMBOL() external view returns (string memory); // solhint-disable-line func-name-mixedcase
|
|
9
21
|
}
|
|
@@ -2,39 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
pragma solidity ^0.8.0;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @title IPermit2
|
|
7
|
+
* @dev Interface for a flexible permit system that extends ERC20 tokens to support permits in tokens lacking native permit functionality.
|
|
8
|
+
*/
|
|
5
9
|
interface IPermit2 {
|
|
10
|
+
/**
|
|
11
|
+
* @dev Struct for holding permit details.
|
|
12
|
+
* @param token ERC20 token address for which the permit is issued.
|
|
13
|
+
* @param amount The maximum amount allowed to spend.
|
|
14
|
+
* @param expiration Timestamp until which the permit is valid.
|
|
15
|
+
* @param nonce An incrementing value for each signature, unique per owner, token, and spender.
|
|
16
|
+
*/
|
|
6
17
|
struct PermitDetails {
|
|
7
|
-
// ERC20 token address
|
|
8
18
|
address token;
|
|
9
|
-
// the maximum amount allowed to spend
|
|
10
19
|
uint160 amount;
|
|
11
|
-
// timestamp at which a spender's token allowances become invalid
|
|
12
20
|
uint48 expiration;
|
|
13
|
-
// an incrementing value indexed per owner,token,and spender for each signature
|
|
14
21
|
uint48 nonce;
|
|
15
22
|
}
|
|
16
|
-
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @dev Struct for a single token allowance permit.
|
|
26
|
+
* @param details Permit details including token, amount, expiration, and nonce.
|
|
27
|
+
* @param spender Address authorized to spend the tokens.
|
|
28
|
+
* @param sigDeadline Deadline for the permit signature, ensuring timeliness of the permit.
|
|
29
|
+
*/
|
|
17
30
|
struct PermitSingle {
|
|
18
|
-
// the permit data for a single token alownce
|
|
19
31
|
PermitDetails details;
|
|
20
|
-
// address permissioned on the allowed tokens
|
|
21
32
|
address spender;
|
|
22
|
-
// deadline on the permit signature
|
|
23
33
|
uint256 sigDeadline;
|
|
24
34
|
}
|
|
25
|
-
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @dev Struct for packed allowance data to optimize storage.
|
|
38
|
+
* @param amount Amount allowed.
|
|
39
|
+
* @param expiration Permission expiry timestamp.
|
|
40
|
+
* @param nonce Unique incrementing value for tracking allowances.
|
|
41
|
+
*/
|
|
26
42
|
struct PackedAllowance {
|
|
27
|
-
// amount allowed
|
|
28
43
|
uint160 amount;
|
|
29
|
-
// permission expiry
|
|
30
44
|
uint48 expiration;
|
|
31
|
-
// an incrementing value indexed per owner,token,and spender for each signature
|
|
32
45
|
uint48 nonce;
|
|
33
46
|
}
|
|
34
47
|
|
|
48
|
+
/**
|
|
49
|
+
* @notice Executes a token transfer from one address to another.
|
|
50
|
+
* @param user The token owner's address.
|
|
51
|
+
* @param spender The address authorized to spend the tokens.
|
|
52
|
+
* @param amount The amount of tokens to transfer.
|
|
53
|
+
* @param token The address of the token being transferred.
|
|
54
|
+
*/
|
|
35
55
|
function transferFrom(address user, address spender, uint160 amount, address token) external;
|
|
36
56
|
|
|
57
|
+
/**
|
|
58
|
+
* @notice Issues a permit for spending tokens via a signed authorization.
|
|
59
|
+
* @param owner The token owner's address.
|
|
60
|
+
* @param permitSingle Struct containing the permit details.
|
|
61
|
+
* @param signature The signature proving the owner authorized the permit.
|
|
62
|
+
*/
|
|
37
63
|
function permit(address owner, PermitSingle memory permitSingle, bytes calldata signature) external;
|
|
38
64
|
|
|
65
|
+
/**
|
|
66
|
+
* @notice Retrieves the allowance details between a token owner and spender.
|
|
67
|
+
* @param user The token owner's address.
|
|
68
|
+
* @param token The token address.
|
|
69
|
+
* @param spender The spender's address.
|
|
70
|
+
* @return The packed allowance details.
|
|
71
|
+
*/
|
|
39
72
|
function allowance(address user, address token, address spender) external view returns (PackedAllowance memory);
|
|
40
73
|
}
|
|
@@ -4,12 +4,29 @@ pragma solidity ^0.8.0;
|
|
|
4
4
|
|
|
5
5
|
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @title IWETH
|
|
9
|
+
* @dev Interface for wrapper as WETH-like token.
|
|
10
|
+
*/
|
|
7
11
|
interface IWETH is IERC20 {
|
|
12
|
+
/**
|
|
13
|
+
* @notice Emitted when Ether is deposited to get wrapper tokens.
|
|
14
|
+
*/
|
|
8
15
|
event Deposit(address indexed dst, uint256 wad);
|
|
9
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @notice Emitted when wrapper tokens is withdrawn as Ether.
|
|
19
|
+
*/
|
|
10
20
|
event Withdrawal(address indexed src, uint256 wad);
|
|
11
21
|
|
|
22
|
+
/**
|
|
23
|
+
* @notice Deposit Ether to get wrapper tokens.
|
|
24
|
+
*/
|
|
12
25
|
function deposit() external payable;
|
|
13
26
|
|
|
27
|
+
/**
|
|
28
|
+
* @notice Withdraw wrapped tokens as Ether.
|
|
29
|
+
* @param amount Amount of wrapped tokens to withdraw.
|
|
30
|
+
*/
|
|
14
31
|
function withdraw(uint256 amount) external;
|
|
15
32
|
}
|