@1inch/solidity-utils 2.1.0 → 2.1.2

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.
Files changed (421) hide show
  1. package/README.md +62 -2
  2. package/contracts/GasChecker.sol +3 -1
  3. package/contracts/OnlyWethReceiver.sol +1 -1
  4. package/contracts/interfaces/IDaiLikePermit.sol +10 -2
  5. package/contracts/interfaces/IERC20MetadataUppercase.sol +3 -3
  6. package/contracts/interfaces/IWETH.sol +1 -1
  7. package/contracts/libraries/AddressArray.sol +27 -12
  8. package/contracts/libraries/AddressSet.sol +20 -6
  9. package/contracts/libraries/ECDSA.sol +82 -16
  10. package/contracts/libraries/RevertReasonForwarder.sol +2 -0
  11. package/contracts/libraries/RevertReasonParser.sol +9 -8
  12. package/contracts/libraries/SafeERC20.sol +66 -19
  13. package/contracts/libraries/StringUtil.sol +8 -6
  14. package/contracts/libraries/UniERC20.sol +45 -16
  15. package/contracts/mocks/TokenCustomDecimalsMock.sol +7 -2
  16. package/contracts/mocks/TokenMock.sol +0 -1
  17. package/dist/src/hardhat.config.d.ts +6 -0
  18. package/dist/src/hardhat.config.js +31 -0
  19. package/dist/src/hardhat.config.js.map +1 -0
  20. package/dist/src/hardhat.networks.d.ts +3 -0
  21. package/dist/src/hardhat.networks.js +31 -0
  22. package/dist/src/hardhat.networks.js.map +1 -0
  23. package/dist/src/src/asserts.d.ts +1 -0
  24. package/dist/src/src/asserts.js +26 -0
  25. package/dist/src/src/asserts.js.map +1 -0
  26. package/dist/src/{index.d.ts → src/index.d.ts} +0 -0
  27. package/dist/src/{index.js → src/index.js} +0 -0
  28. package/dist/src/src/index.js.map +1 -0
  29. package/dist/src/{permit.d.ts → src/permit.d.ts} +8 -23
  30. package/dist/src/{permit.js → src/permit.js} +28 -26
  31. package/dist/src/src/permit.js.map +1 -0
  32. package/dist/src/src/prelude.d.ts +14 -0
  33. package/dist/src/{prelude.js → src/prelude.js} +10 -23
  34. package/dist/src/src/prelude.js.map +1 -0
  35. package/dist/src/{profileEVM.d.ts → src/profileEVM.d.ts} +0 -0
  36. package/dist/src/{profileEVM.js → src/profileEVM.js} +30 -38
  37. package/dist/src/src/profileEVM.js.map +1 -0
  38. package/dist/src/src/utils.d.ts +12 -0
  39. package/dist/src/{utils.js → src/utils.js} +12 -20
  40. package/dist/src/src/utils.js.map +1 -0
  41. package/dist/src/typechain-types/@openzeppelin/contracts/access/Ownable.d.ts +89 -0
  42. package/dist/src/typechain-types/@openzeppelin/contracts/access/Ownable.js +3 -0
  43. package/dist/src/typechain-types/@openzeppelin/contracts/access/Ownable.js.map +1 -0
  44. package/dist/src/typechain-types/@openzeppelin/contracts/access/index.d.ts +1 -0
  45. package/dist/src/typechain-types/@openzeppelin/contracts/access/index.js +3 -0
  46. package/dist/src/typechain-types/@openzeppelin/contracts/access/index.js.map +1 -0
  47. package/dist/src/typechain-types/@openzeppelin/contracts/index.d.ts +6 -0
  48. package/dist/src/typechain-types/@openzeppelin/contracts/index.js +3 -0
  49. package/dist/src/typechain-types/@openzeppelin/contracts/index.js.map +1 -0
  50. package/dist/src/typechain-types/@openzeppelin/contracts/interfaces/IERC1271.d.ts +44 -0
  51. package/dist/src/typechain-types/@openzeppelin/contracts/interfaces/IERC1271.js +3 -0
  52. package/dist/src/typechain-types/@openzeppelin/contracts/interfaces/IERC1271.js.map +1 -0
  53. package/dist/src/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
  54. package/dist/src/typechain-types/@openzeppelin/contracts/interfaces/index.js +3 -0
  55. package/dist/src/typechain-types/@openzeppelin/contracts/interfaces/index.js.map +1 -0
  56. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.d.ts +198 -0
  57. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.js +3 -0
  58. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.js.map +1 -0
  59. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.d.ts +142 -0
  60. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.js +3 -0
  61. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.js.map +1 -0
  62. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.d.ts +166 -0
  63. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.js +3 -0
  64. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.js.map +1 -0
  65. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/ERC20Permit.d.ts +238 -0
  66. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/ERC20Permit.js +3 -0
  67. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/ERC20Permit.js.map +1 -0
  68. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/index.d.ts +1 -0
  69. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/index.js +3 -0
  70. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/index.js.map +1 -0
  71. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.d.ts +74 -0
  72. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.js +3 -0
  73. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.js.map +1 -0
  74. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.d.ts +1 -0
  75. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.js +3 -0
  76. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.js.map +1 -0
  77. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +5 -0
  78. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.js +3 -0
  79. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.js.map +1 -0
  80. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/index.d.ts +4 -0
  81. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/index.js +3 -0
  82. package/dist/src/typechain-types/@openzeppelin/contracts/token/ERC20/index.js.map +1 -0
  83. package/dist/src/typechain-types/@openzeppelin/contracts/token/index.d.ts +2 -0
  84. package/dist/src/typechain-types/@openzeppelin/contracts/token/index.js +3 -0
  85. package/dist/src/typechain-types/@openzeppelin/contracts/token/index.js.map +1 -0
  86. package/dist/src/typechain-types/@openzeppelin/index.d.ts +2 -0
  87. package/dist/src/typechain-types/@openzeppelin/index.js +3 -0
  88. package/dist/src/typechain-types/@openzeppelin/index.js.map +1 -0
  89. package/dist/src/typechain-types/common.d.ts +22 -0
  90. package/dist/src/typechain-types/common.js +3 -0
  91. package/dist/src/typechain-types/common.js.map +1 -0
  92. package/dist/src/typechain-types/contracts/EthReceiver.d.ts +27 -0
  93. package/dist/src/typechain-types/contracts/EthReceiver.js +3 -0
  94. package/dist/src/typechain-types/contracts/EthReceiver.js.map +1 -0
  95. package/dist/src/typechain-types/contracts/GasChecker.d.ts +27 -0
  96. package/dist/src/typechain-types/contracts/GasChecker.js +3 -0
  97. package/dist/src/typechain-types/contracts/GasChecker.js.map +1 -0
  98. package/dist/src/typechain-types/contracts/OnlyWethReceiver.d.ts +27 -0
  99. package/dist/src/typechain-types/contracts/OnlyWethReceiver.js +3 -0
  100. package/dist/src/typechain-types/contracts/OnlyWethReceiver.js.map +1 -0
  101. package/dist/src/typechain-types/contracts/index.d.ts +11 -0
  102. package/dist/src/typechain-types/contracts/index.js +3 -0
  103. package/dist/src/typechain-types/contracts/index.js.map +1 -0
  104. package/dist/src/typechain-types/contracts/interfaces/IDaiLikePermit.d.ts +59 -0
  105. package/dist/src/typechain-types/contracts/interfaces/IDaiLikePermit.js +3 -0
  106. package/dist/src/typechain-types/contracts/interfaces/IDaiLikePermit.js.map +1 -0
  107. package/dist/src/typechain-types/contracts/interfaces/IERC20MetadataUppercase.d.ts +50 -0
  108. package/dist/src/typechain-types/contracts/interfaces/IERC20MetadataUppercase.js +3 -0
  109. package/dist/src/typechain-types/contracts/interfaces/IERC20MetadataUppercase.js.map +1 -0
  110. package/dist/src/typechain-types/contracts/interfaces/IWETH.d.ts +174 -0
  111. package/dist/src/typechain-types/contracts/interfaces/IWETH.js +3 -0
  112. package/dist/src/typechain-types/contracts/interfaces/IWETH.js.map +1 -0
  113. package/dist/src/typechain-types/contracts/interfaces/index.d.ts +3 -0
  114. package/dist/src/typechain-types/contracts/interfaces/index.js +3 -0
  115. package/dist/src/typechain-types/contracts/interfaces/index.js.map +1 -0
  116. package/dist/src/typechain-types/contracts/libraries/AddressArray.d.ts +27 -0
  117. package/dist/src/typechain-types/contracts/libraries/AddressArray.js +3 -0
  118. package/dist/src/typechain-types/contracts/libraries/AddressArray.js.map +1 -0
  119. package/dist/src/typechain-types/contracts/libraries/RevertReasonParser.d.ts +27 -0
  120. package/dist/src/typechain-types/contracts/libraries/RevertReasonParser.js +3 -0
  121. package/dist/src/typechain-types/contracts/libraries/RevertReasonParser.js.map +1 -0
  122. package/dist/src/typechain-types/contracts/libraries/SafeERC20.d.ts +27 -0
  123. package/dist/src/typechain-types/contracts/libraries/SafeERC20.js +3 -0
  124. package/dist/src/typechain-types/contracts/libraries/SafeERC20.js.map +1 -0
  125. package/dist/src/typechain-types/contracts/libraries/UniERC20.d.ts +27 -0
  126. package/dist/src/typechain-types/contracts/libraries/UniERC20.js +3 -0
  127. package/dist/src/typechain-types/contracts/libraries/UniERC20.js.map +1 -0
  128. package/dist/src/typechain-types/contracts/libraries/index.d.ts +4 -0
  129. package/dist/src/typechain-types/contracts/libraries/index.js +3 -0
  130. package/dist/src/typechain-types/contracts/libraries/index.js.map +1 -0
  131. package/dist/src/typechain-types/contracts/mocks/ERC20PermitMock.d.ts +238 -0
  132. package/dist/src/typechain-types/contracts/mocks/ERC20PermitMock.js +3 -0
  133. package/dist/src/typechain-types/contracts/mocks/ERC20PermitMock.js.map +1 -0
  134. package/dist/src/typechain-types/contracts/mocks/TokenCustomDecimalsMock.d.ts +331 -0
  135. package/dist/src/typechain-types/contracts/mocks/TokenCustomDecimalsMock.js +3 -0
  136. package/dist/src/typechain-types/contracts/mocks/TokenCustomDecimalsMock.js.map +1 -0
  137. package/dist/src/typechain-types/contracts/mocks/TokenMock.d.ts +283 -0
  138. package/dist/src/typechain-types/contracts/mocks/TokenMock.js +3 -0
  139. package/dist/src/typechain-types/contracts/mocks/TokenMock.js.map +1 -0
  140. package/dist/src/typechain-types/contracts/mocks/index.d.ts +3 -0
  141. package/dist/src/typechain-types/contracts/mocks/index.js +3 -0
  142. package/dist/src/typechain-types/contracts/mocks/index.js.map +1 -0
  143. package/dist/src/typechain-types/contracts/tests/ECDSATest.d.ts +213 -0
  144. package/dist/src/typechain-types/contracts/tests/ECDSATest.js +3 -0
  145. package/dist/src/typechain-types/contracts/tests/ECDSATest.js.map +1 -0
  146. package/dist/src/typechain-types/contracts/tests/RevertReasonParserTest.d.ts +138 -0
  147. package/dist/src/typechain-types/contracts/tests/RevertReasonParserTest.js +3 -0
  148. package/dist/src/typechain-types/contracts/tests/RevertReasonParserTest.js.map +1 -0
  149. package/dist/src/typechain-types/contracts/tests/StringUtilTest.d.ts +66 -0
  150. package/dist/src/typechain-types/contracts/tests/StringUtilTest.js +3 -0
  151. package/dist/src/typechain-types/contracts/tests/StringUtilTest.js.map +1 -0
  152. package/dist/src/typechain-types/contracts/tests/index.d.ts +5 -0
  153. package/dist/src/typechain-types/contracts/tests/index.js +3 -0
  154. package/dist/src/typechain-types/contracts/tests/index.js.map +1 -0
  155. package/dist/src/typechain-types/contracts/tests/mocks/AddressArrayMock.d.ts +108 -0
  156. package/dist/src/typechain-types/contracts/tests/mocks/AddressArrayMock.js +3 -0
  157. package/dist/src/typechain-types/contracts/tests/mocks/AddressArrayMock.js.map +1 -0
  158. package/dist/src/typechain-types/contracts/tests/mocks/AddressSetMock.d.ts +90 -0
  159. package/dist/src/typechain-types/contracts/tests/mocks/AddressSetMock.js +3 -0
  160. package/dist/src/typechain-types/contracts/tests/mocks/AddressSetMock.js.map +1 -0
  161. package/dist/src/typechain-types/contracts/tests/mocks/DaiLikePermitMock.d.ts +271 -0
  162. package/dist/src/typechain-types/contracts/tests/mocks/DaiLikePermitMock.js +3 -0
  163. package/dist/src/typechain-types/contracts/tests/mocks/DaiLikePermitMock.js.map +1 -0
  164. package/dist/src/typechain-types/contracts/tests/mocks/ERC1271WalletMock.d.ts +99 -0
  165. package/dist/src/typechain-types/contracts/tests/mocks/ERC1271WalletMock.js +3 -0
  166. package/dist/src/typechain-types/contracts/tests/mocks/ERC1271WalletMock.js.map +1 -0
  167. package/dist/src/typechain-types/contracts/tests/mocks/EthReceiverMock.d.ts +27 -0
  168. package/dist/src/typechain-types/contracts/tests/mocks/EthReceiverMock.js +3 -0
  169. package/dist/src/typechain-types/contracts/tests/mocks/EthReceiverMock.js.map +1 -0
  170. package/dist/src/typechain-types/contracts/tests/mocks/EthSenderMock.d.ts +50 -0
  171. package/dist/src/typechain-types/contracts/tests/mocks/EthSenderMock.js +3 -0
  172. package/dist/src/typechain-types/contracts/tests/mocks/EthSenderMock.js.map +1 -0
  173. package/dist/src/typechain-types/contracts/tests/mocks/PermitableMock.d.ts +50 -0
  174. package/dist/src/typechain-types/contracts/tests/mocks/PermitableMock.js +3 -0
  175. package/dist/src/typechain-types/contracts/tests/mocks/PermitableMock.js.map +1 -0
  176. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock.d.ts +110 -0
  177. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock.js +3 -0
  178. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock.js.map +1 -0
  179. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock.d.ts +270 -0
  180. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock.js +3 -0
  181. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock.js.map +1 -0
  182. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock.d.ts +94 -0
  183. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock.js +3 -0
  184. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock.js.map +1 -0
  185. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock.d.ts +110 -0
  186. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock.js +3 -0
  187. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock.js.map +1 -0
  188. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove.d.ts +58 -0
  189. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove.js +3 -0
  190. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove.js.map +1 -0
  191. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper.d.ts +162 -0
  192. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper.js +3 -0
  193. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper.js.map +1 -0
  194. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/index.d.ts +6 -0
  195. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/index.js +3 -0
  196. package/dist/src/typechain-types/contracts/tests/mocks/SafeERC20Helper.sol/index.js.map +1 -0
  197. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals.d.ts +50 -0
  198. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals.js +3 -0
  199. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals.js.map +1 -0
  200. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32.d.ts +50 -0
  201. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32.js +3 -0
  202. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32.js.map +1 -0
  203. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals.d.ts +50 -0
  204. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals.js +3 -0
  205. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals.js.map +1 -0
  206. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver.d.ts +50 -0
  207. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver.js +3 -0
  208. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver.js.map +1 -0
  209. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/IUniERC20Wrapper.d.ts +54 -0
  210. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/IUniERC20Wrapper.js +3 -0
  211. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/IUniERC20Wrapper.js.map +1 -0
  212. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper.d.ts +118 -0
  213. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper.js +3 -0
  214. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper.js.map +1 -0
  215. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/index.d.ts +6 -0
  216. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/index.js +3 -0
  217. package/dist/src/typechain-types/contracts/tests/mocks/UniERC20Helper.sol/index.js.map +1 -0
  218. package/dist/src/typechain-types/contracts/tests/mocks/WethReceiverMock.d.ts +27 -0
  219. package/dist/src/typechain-types/contracts/tests/mocks/WethReceiverMock.js +3 -0
  220. package/dist/src/typechain-types/contracts/tests/mocks/WethReceiverMock.js.map +1 -0
  221. package/dist/src/typechain-types/contracts/tests/mocks/index.d.ts +12 -0
  222. package/dist/src/typechain-types/contracts/tests/mocks/index.js +3 -0
  223. package/dist/src/typechain-types/contracts/tests/mocks/index.js.map +1 -0
  224. package/dist/src/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.d.ts +42 -0
  225. package/dist/src/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.js +72 -0
  226. package/dist/src/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.js.map +1 -0
  227. package/dist/src/typechain-types/factories/@openzeppelin/contracts/access/index.d.ts +1 -0
  228. package/dist/src/typechain-types/factories/@openzeppelin/contracts/access/index.js +9 -0
  229. package/dist/src/typechain-types/factories/@openzeppelin/contracts/access/index.js.map +1 -0
  230. package/dist/src/typechain-types/factories/@openzeppelin/contracts/index.d.ts +3 -0
  231. package/dist/src/typechain-types/factories/@openzeppelin/contracts/index.js +11 -0
  232. package/dist/src/typechain-types/factories/@openzeppelin/contracts/index.js.map +1 -0
  233. package/dist/src/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1271__factory.d.ts +22 -0
  234. package/dist/src/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1271__factory.js +44 -0
  235. package/dist/src/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1271__factory.js.map +1 -0
  236. package/dist/src/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
  237. package/dist/src/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js +9 -0
  238. package/dist/src/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js.map +1 -0
  239. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.d.ts +59 -0
  240. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.js +329 -0
  241. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.js.map +1 -0
  242. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.d.ts +35 -0
  243. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.js +203 -0
  244. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.js.map +1 -0
  245. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.d.ts +35 -0
  246. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.js +242 -0
  247. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.js.map +1 -0
  248. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/ERC20Permit__factory.d.ts +35 -0
  249. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/ERC20Permit__factory.js +365 -0
  250. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/ERC20Permit__factory.js.map +1 -0
  251. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/index.d.ts +1 -0
  252. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/index.js +9 -0
  253. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol/index.js.map +1 -0
  254. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.d.ts +22 -0
  255. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.js +95 -0
  256. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.js.map +1 -0
  257. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.d.ts +1 -0
  258. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.js +9 -0
  259. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.js.map +1 -0
  260. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +3 -0
  261. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js +12 -0
  262. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js.map +1 -0
  263. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.d.ts +3 -0
  264. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.js +13 -0
  265. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.js.map +1 -0
  266. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/index.d.ts +1 -0
  267. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/index.js +9 -0
  268. package/dist/src/typechain-types/factories/@openzeppelin/contracts/token/index.js.map +1 -0
  269. package/dist/src/typechain-types/factories/@openzeppelin/index.d.ts +1 -0
  270. package/dist/src/typechain-types/factories/@openzeppelin/index.js +9 -0
  271. package/dist/src/typechain-types/factories/@openzeppelin/index.js.map +1 -0
  272. package/dist/src/typechain-types/factories/contracts/EthReceiver__factory.d.ts +18 -0
  273. package/dist/src/typechain-types/factories/contracts/EthReceiver__factory.js +29 -0
  274. package/dist/src/typechain-types/factories/contracts/EthReceiver__factory.js.map +1 -0
  275. package/dist/src/typechain-types/factories/contracts/GasChecker__factory.d.ts +29 -0
  276. package/dist/src/typechain-types/factories/contracts/GasChecker__factory.js +59 -0
  277. package/dist/src/typechain-types/factories/contracts/GasChecker__factory.js.map +1 -0
  278. package/dist/src/typechain-types/factories/contracts/OnlyWethReceiver__factory.d.ts +18 -0
  279. package/dist/src/typechain-types/factories/contracts/OnlyWethReceiver__factory.js +29 -0
  280. package/dist/src/typechain-types/factories/contracts/OnlyWethReceiver__factory.js.map +1 -0
  281. package/dist/src/typechain-types/factories/contracts/index.d.ts +7 -0
  282. package/dist/src/typechain-types/factories/contracts/index.js +18 -0
  283. package/dist/src/typechain-types/factories/contracts/index.js.map +1 -0
  284. package/dist/src/typechain-types/factories/contracts/interfaces/IDaiLikePermit__factory.d.ts +18 -0
  285. package/dist/src/typechain-types/factories/contracts/interfaces/IDaiLikePermit__factory.js +68 -0
  286. package/dist/src/typechain-types/factories/contracts/interfaces/IDaiLikePermit__factory.js.map +1 -0
  287. package/dist/src/typechain-types/factories/contracts/interfaces/IERC20MetadataUppercase__factory.d.ts +18 -0
  288. package/dist/src/typechain-types/factories/contracts/interfaces/IERC20MetadataUppercase__factory.js +46 -0
  289. package/dist/src/typechain-types/factories/contracts/interfaces/IERC20MetadataUppercase__factory.js.map +1 -0
  290. package/dist/src/typechain-types/factories/contracts/interfaces/IWETH__factory.d.ts +35 -0
  291. package/dist/src/typechain-types/factories/contracts/interfaces/IWETH__factory.js +223 -0
  292. package/dist/src/typechain-types/factories/contracts/interfaces/IWETH__factory.js.map +1 -0
  293. package/dist/src/typechain-types/factories/contracts/interfaces/index.d.ts +3 -0
  294. package/dist/src/typechain-types/factories/contracts/interfaces/index.js +13 -0
  295. package/dist/src/typechain-types/factories/contracts/interfaces/index.js.map +1 -0
  296. package/dist/src/typechain-types/factories/contracts/libraries/AddressArray__factory.d.ts +25 -0
  297. package/dist/src/typechain-types/factories/contracts/libraries/AddressArray__factory.js +58 -0
  298. package/dist/src/typechain-types/factories/contracts/libraries/AddressArray__factory.js.map +1 -0
  299. package/dist/src/typechain-types/factories/contracts/libraries/RevertReasonParser__factory.d.ts +25 -0
  300. package/dist/src/typechain-types/factories/contracts/libraries/RevertReasonParser__factory.js +48 -0
  301. package/dist/src/typechain-types/factories/contracts/libraries/RevertReasonParser__factory.js.map +1 -0
  302. package/dist/src/typechain-types/factories/contracts/libraries/SafeERC20__factory.d.ts +25 -0
  303. package/dist/src/typechain-types/factories/contracts/libraries/SafeERC20__factory.js +73 -0
  304. package/dist/src/typechain-types/factories/contracts/libraries/SafeERC20__factory.js.map +1 -0
  305. package/dist/src/typechain-types/factories/contracts/libraries/UniERC20__factory.d.ts +25 -0
  306. package/dist/src/typechain-types/factories/contracts/libraries/UniERC20__factory.js +73 -0
  307. package/dist/src/typechain-types/factories/contracts/libraries/UniERC20__factory.js.map +1 -0
  308. package/dist/src/typechain-types/factories/contracts/libraries/index.d.ts +4 -0
  309. package/dist/src/typechain-types/factories/contracts/libraries/index.js +15 -0
  310. package/dist/src/typechain-types/factories/contracts/libraries/index.js.map +1 -0
  311. package/dist/src/typechain-types/factories/contracts/mocks/ERC20PermitMock__factory.d.ts +59 -0
  312. package/dist/src/typechain-types/factories/contracts/mocks/ERC20PermitMock__factory.js +414 -0
  313. package/dist/src/typechain-types/factories/contracts/mocks/ERC20PermitMock__factory.js.map +1 -0
  314. package/dist/src/typechain-types/factories/contracts/mocks/TokenCustomDecimalsMock__factory.d.ts +59 -0
  315. package/dist/src/typechain-types/factories/contracts/mocks/TokenCustomDecimalsMock__factory.js +515 -0
  316. package/dist/src/typechain-types/factories/contracts/mocks/TokenCustomDecimalsMock__factory.js.map +1 -0
  317. package/dist/src/typechain-types/factories/contracts/mocks/TokenMock__factory.d.ts +59 -0
  318. package/dist/src/typechain-types/factories/contracts/mocks/TokenMock__factory.js +417 -0
  319. package/dist/src/typechain-types/factories/contracts/mocks/TokenMock__factory.js.map +1 -0
  320. package/dist/src/typechain-types/factories/contracts/mocks/index.d.ts +3 -0
  321. package/dist/src/typechain-types/factories/contracts/mocks/index.js +13 -0
  322. package/dist/src/typechain-types/factories/contracts/mocks/index.js.map +1 -0
  323. package/dist/src/typechain-types/factories/contracts/tests/ECDSATest__factory.d.ts +35 -0
  324. package/dist/src/typechain-types/factories/contracts/tests/ECDSATest__factory.js +445 -0
  325. package/dist/src/typechain-types/factories/contracts/tests/ECDSATest__factory.js.map +1 -0
  326. package/dist/src/typechain-types/factories/contracts/tests/RevertReasonParserTest__factory.d.ts +33 -0
  327. package/dist/src/typechain-types/factories/contracts/tests/RevertReasonParserTest__factory.js +139 -0
  328. package/dist/src/typechain-types/factories/contracts/tests/RevertReasonParserTest__factory.js.map +1 -0
  329. package/dist/src/typechain-types/factories/contracts/tests/StringUtilTest__factory.d.ts +45 -0
  330. package/dist/src/typechain-types/factories/contracts/tests/StringUtilTest__factory.js +155 -0
  331. package/dist/src/typechain-types/factories/contracts/tests/StringUtilTest__factory.js.map +1 -0
  332. package/dist/src/typechain-types/factories/contracts/tests/index.d.ts +4 -0
  333. package/dist/src/typechain-types/factories/contracts/tests/index.js +15 -0
  334. package/dist/src/typechain-types/factories/contracts/tests/index.js.map +1 -0
  335. package/dist/src/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.d.ts +41 -0
  336. package/dist/src/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js +147 -0
  337. package/dist/src/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js.map +1 -0
  338. package/dist/src/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.d.ts +41 -0
  339. package/dist/src/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js +142 -0
  340. package/dist/src/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js.map +1 -0
  341. package/dist/src/typechain-types/factories/contracts/tests/mocks/DaiLikePermitMock__factory.d.ts +59 -0
  342. package/dist/src/typechain-types/factories/contracts/tests/mocks/DaiLikePermitMock__factory.js +475 -0
  343. package/dist/src/typechain-types/factories/contracts/tests/mocks/DaiLikePermitMock__factory.js.map +1 -0
  344. package/dist/src/typechain-types/factories/contracts/tests/mocks/ERC1271WalletMock__factory.d.ts +59 -0
  345. package/dist/src/typechain-types/factories/contracts/tests/mocks/ERC1271WalletMock__factory.js +130 -0
  346. package/dist/src/typechain-types/factories/contracts/tests/mocks/ERC1271WalletMock__factory.js.map +1 -0
  347. package/dist/src/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.d.ts +36 -0
  348. package/dist/src/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.js +57 -0
  349. package/dist/src/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.js.map +1 -0
  350. package/dist/src/typechain-types/factories/contracts/tests/mocks/EthSenderMock__factory.d.ts +31 -0
  351. package/dist/src/typechain-types/factories/contracts/tests/mocks/EthSenderMock__factory.js +56 -0
  352. package/dist/src/typechain-types/factories/contracts/tests/mocks/EthSenderMock__factory.js.map +1 -0
  353. package/dist/src/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.d.ts +37 -0
  354. package/dist/src/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js +66 -0
  355. package/dist/src/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js.map +1 -0
  356. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.d.ts +35 -0
  357. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.js +139 -0
  358. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.js.map +1 -0
  359. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.d.ts +48 -0
  360. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.js +444 -0
  361. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.js.map +1 -0
  362. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.d.ts +35 -0
  363. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.js +144 -0
  364. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.js.map +1 -0
  365. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.d.ts +35 -0
  366. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.js +157 -0
  367. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.js.map +1 -0
  368. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.d.ts +41 -0
  369. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.js +90 -0
  370. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.js.map +1 -0
  371. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.d.ts +57 -0
  372. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js +206 -0
  373. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js.map +1 -0
  374. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/index.d.ts +6 -0
  375. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/index.js +19 -0
  376. package/dist/src/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/index.js.map +1 -0
  377. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.d.ts +41 -0
  378. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.js +85 -0
  379. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.js.map +1 -0
  380. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.d.ts +41 -0
  381. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.js +85 -0
  382. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.js.map +1 -0
  383. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.d.ts +41 -0
  384. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.js +85 -0
  385. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.js.map +1 -0
  386. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.d.ts +47 -0
  387. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.js +81 -0
  388. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.js.map +1 -0
  389. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/IUniERC20Wrapper__factory.d.ts +18 -0
  390. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/IUniERC20Wrapper__factory.js +43 -0
  391. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/IUniERC20Wrapper__factory.js.map +1 -0
  392. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.d.ts +51 -0
  393. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.js +216 -0
  394. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.js.map +1 -0
  395. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/index.d.ts +6 -0
  396. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/index.js +19 -0
  397. package/dist/src/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/index.js.map +1 -0
  398. package/dist/src/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.d.ts +40 -0
  399. package/dist/src/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.js +63 -0
  400. package/dist/src/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.js.map +1 -0
  401. package/dist/src/typechain-types/factories/contracts/tests/mocks/index.d.ts +10 -0
  402. package/dist/src/typechain-types/factories/contracts/tests/mocks/index.js +26 -0
  403. package/dist/src/typechain-types/factories/contracts/tests/mocks/index.js.map +1 -0
  404. package/dist/src/typechain-types/factories/index.d.ts +2 -0
  405. package/dist/src/typechain-types/factories/index.js +10 -0
  406. package/dist/src/typechain-types/factories/index.js.map +1 -0
  407. package/dist/src/typechain-types/index.d.ts +91 -0
  408. package/dist/src/typechain-types/index.js +92 -0
  409. package/dist/src/typechain-types/index.js.map +1 -0
  410. package/package.json +31 -29
  411. package/utils/file-dependencies.js +203 -0
  412. package/dist/src/asserts.d.ts +0 -3
  413. package/dist/src/asserts.js +0 -33
  414. package/dist/src/asserts.js.map +0 -1
  415. package/dist/src/index.js.map +0 -1
  416. package/dist/src/permit.js.map +0 -1
  417. package/dist/src/prelude.d.ts +0 -20
  418. package/dist/src/prelude.js.map +0 -1
  419. package/dist/src/profileEVM.js.map +0 -1
  420. package/dist/src/utils.d.ts +0 -14
  421. package/dist/src/utils.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <div align="center">
2
- <img src="https://github.com/1inch/farming/blob/master/.github/1inch_github_w.svg#gh-light-mode-only">
3
- <img src="https://github.com/1inch/farming/blob/master/.github/1inch_github_b.svg#gh-dark-mode-only">
2
+ <img src="https://github.com/1inch/solidity-utils/blob/master/.github/1inch_github_w.svg#gh-light-mode-only">
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
  # Utils library for contracts and tests
@@ -65,6 +65,66 @@ Add to `package.json` file solidity compiler version and shortcut to run command
65
65
 
66
66
  ...
67
67
 
68
+ #### Dependencies list (imports-list)
69
+
70
+ Lists all imports recursively for the given solidity contract file.
71
+
72
+ ##### Usage
73
+ ```
74
+ npx imports-list -i <solidity file> [-a <alias list>]
75
+ ```
76
+
77
+ Available parameters
78
+ ```
79
+ Options:
80
+ -i, --input <input> file to get dependencies for
81
+ -a, --alias [alias...] projects alias list
82
+ -h, --help display help for command
83
+ ```
84
+ Aliases are used to provide source code for third-party projects.
85
+ For example, your contract uses imports from your other project and import is defined as
86
+ ```
87
+ import "@1inch/otherproject/contracts/dependency.sol";
88
+ ```
89
+ 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.
90
+ If there are several dependencies they should be provided using space as separator.
91
+
92
+ ##### Example
93
+ File imports
94
+ ```Solidity
95
+ #rootFile.sol
96
+ import '@1inch/otherproject/contracts/dependency.sol'
97
+
98
+ #@1inch/otherproject/contracts/dependency.sol
99
+ import 'helpers/helper.sol'
100
+ ```
101
+ File and folder structure
102
+ ```
103
+ rootFolder/
104
+
105
+ -- mainProject/
106
+ ---- contracts/
107
+ ------ rootFile.sol
108
+
109
+ -- dependencyProject/
110
+ ---- helpers/
111
+ ------ helper.sol
112
+ ---- dependency.sol
113
+ ```
114
+ Command
115
+ ```
116
+ rootFolder/mainProject % npx imports-list -i './contracts/rootFile.sol' -a '@1inch/otherproject' '../dependencyProject'
117
+ ```
118
+ Output
119
+ ```
120
+ Project => root
121
+ not set
122
+
123
+ Project => @1inch/otherproject
124
+ ../otherproject/contracts/dependency.sol
125
+ ../otherproject/contracts/helpers/helper.sol
126
+ ```
127
+
68
128
  #### Test documentation generator (test-docgen)
69
129
  Script generates documentation for tests in markdown format.
70
130
  Give descriptions for `describe` and `it` sections and build documentation using these descriptions.
@@ -9,7 +9,9 @@ contract GasChecker {
9
9
  modifier checkGasCost(uint256 expected) {
10
10
  uint256 gas = gasleft();
11
11
  _;
12
- unchecked { gas -= gasleft(); }
12
+ unchecked {
13
+ gas -= gasleft();
14
+ }
13
15
  if (expected > 0 && gas != expected) revert GasCostDiffers(expected, gas);
14
16
  }
15
17
  }
@@ -6,7 +6,7 @@ pragma abicoder v1;
6
6
  import "./EthReceiver.sol";
7
7
 
8
8
  abstract contract OnlyWethReceiver is EthReceiver {
9
- address private immutable _WETH; // solhint-disable-line var-name-mixedcase
9
+ address private immutable _WETH; // solhint-disable-line var-name-mixedcase
10
10
 
11
11
  constructor(address weth) {
12
12
  _WETH = address(weth);
@@ -3,7 +3,15 @@
3
3
  pragma solidity ^0.8.0;
4
4
  pragma abicoder v1;
5
5
 
6
-
7
6
  interface IDaiLikePermit {
8
- function permit(address holder, address spender, uint256 nonce, uint256 expiry, bool allowed, uint8 v, bytes32 r, bytes32 s) external;
7
+ function permit(
8
+ address holder,
9
+ address spender,
10
+ uint256 nonce,
11
+ uint256 expiry,
12
+ bool allowed,
13
+ uint8 v,
14
+ bytes32 r,
15
+ bytes32 s
16
+ ) external;
9
17
  }
@@ -3,8 +3,8 @@
3
3
  pragma solidity ^0.8.0;
4
4
  pragma abicoder v1;
5
5
 
6
-
7
6
  interface IERC20MetadataUppercase {
8
- function NAME() external view returns (string memory); // solhint-disable-line func-name-mixedcase
9
- function SYMBOL() external view returns (string memory); // solhint-disable-line func-name-mixedcase
7
+ function NAME() external view returns (string memory); // solhint-disable-line func-name-mixedcase
8
+
9
+ function SYMBOL() external view returns (string memory); // solhint-disable-line func-name-mixedcase
10
10
  }
@@ -5,8 +5,8 @@ pragma abicoder v1;
5
5
 
6
6
  import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
7
7
 
8
-
9
8
  interface IWETH is IERC20 {
10
9
  function deposit() external payable;
10
+
11
11
  function withdraw(uint256 amount) external;
12
12
  }
@@ -3,40 +3,50 @@
3
3
  pragma solidity ^0.8.0;
4
4
  pragma abicoder v1;
5
5
 
6
+ /// @title Library that implements address array on mapping, stores array length at 0 index.
6
7
  library AddressArray {
7
8
  error IndexOutOfBounds();
8
9
  error PopFromEmptyArray();
9
10
  error OutputArrayTooSmall();
10
11
 
12
+ /// @dev Data struct containing raw mapping.
11
13
  struct Data {
12
14
  mapping(uint256 => uint256) _raw;
13
15
  }
14
16
 
15
- function length(Data storage self) internal view returns(uint256) {
17
+ /// @dev Length of array.
18
+ function length(Data storage self) internal view returns (uint256) {
16
19
  return self._raw[0] >> 160;
17
20
  }
18
21
 
19
- function at(Data storage self, uint i) internal view returns(address) {
22
+ /// @dev Returns data item from `self` storage at `i`.
23
+ function at(Data storage self, uint256 i) internal view returns (address) {
20
24
  return address(uint160(self._raw[i]));
21
25
  }
22
26
 
23
- function get(Data storage self) internal view returns(address[] memory arr) {
27
+ /// @dev Returns list of addresses from storage `self`.
28
+ function get(Data storage self) internal view returns (address[] memory arr) {
24
29
  uint256 lengthAndFirst = self._raw[0];
25
30
  arr = new address[](lengthAndFirst >> 160);
26
31
  _get(self, arr, lengthAndFirst);
27
32
  }
28
33
 
29
- function get(Data storage self, address[] memory output) internal view returns(address[] memory) {
34
+ /// @dev Puts list of addresses from `self` storage into `output` array.
35
+ function get(Data storage self, address[] memory output) internal view returns (address[] memory) {
30
36
  return _get(self, output, self._raw[0]);
31
37
  }
32
38
 
33
- function _get(Data storage self, address[] memory output, uint256 lengthAndFirst) private view returns(address[] memory) {
39
+ function _get(
40
+ Data storage self,
41
+ address[] memory output,
42
+ uint256 lengthAndFirst
43
+ ) private view returns (address[] memory) {
34
44
  uint256 len = lengthAndFirst >> 160;
35
45
  if (len > output.length) revert OutputArrayTooSmall();
36
46
  if (len > 0) {
37
47
  output[0] = address(uint160(lengthAndFirst));
38
48
  unchecked {
39
- for (uint i = 1; i < len; i++) {
49
+ for (uint256 i = 1; i < len; i++) {
40
50
  output[i] = address(uint160(self._raw[i]));
41
51
  }
42
52
  }
@@ -44,14 +54,14 @@ library AddressArray {
44
54
  return output;
45
55
  }
46
56
 
47
- function push(Data storage self, address account) internal returns(uint256) {
57
+ /// @dev Array push back `account` operation on storage `self`.
58
+ function push(Data storage self, address account) internal returns (uint256) {
48
59
  unchecked {
49
60
  uint256 lengthAndFirst = self._raw[0];
50
61
  uint256 len = lengthAndFirst >> 160;
51
62
  if (len == 0) {
52
63
  self._raw[0] = (1 << 160) + uint160(account);
53
- }
54
- else {
64
+ } else {
55
65
  self._raw[0] = lengthAndFirst + (1 << 160);
56
66
  self._raw[len] = uint160(account);
57
67
  }
@@ -59,6 +69,7 @@ library AddressArray {
59
69
  }
60
70
  }
61
71
 
72
+ /// @dev Array pop back operation for storage `self`.
62
73
  function pop(Data storage self) internal {
63
74
  unchecked {
64
75
  uint256 lengthAndFirst = self._raw[0];
@@ -71,14 +82,18 @@ library AddressArray {
71
82
  }
72
83
  }
73
84
 
74
- function set(Data storage self, uint256 index, address account) internal {
85
+ /// @dev Set element for storage `self` at `index` to `account`.
86
+ function set(
87
+ Data storage self,
88
+ uint256 index,
89
+ address account
90
+ ) internal {
75
91
  uint256 len = length(self);
76
92
  if (index >= len) revert IndexOutOfBounds();
77
93
 
78
94
  if (index == 0) {
79
95
  self._raw[0] = (len << 160) | uint160(account);
80
- }
81
- else {
96
+ } else {
82
97
  self._raw[index] = uint160(account);
83
98
  }
84
99
  }
@@ -5,27 +5,40 @@ pragma abicoder v1;
5
5
 
6
6
  import "./AddressArray.sol";
7
7
 
8
+ /** @title Library that is using AddressArray library for AddressArray.Data
9
+ * and allows Set operations on address storage data:
10
+ * 1. add
11
+ * 2. remove
12
+ * 3. contains
13
+ */
8
14
  library AddressSet {
9
15
  using AddressArray for AddressArray.Data;
10
16
 
17
+ /** @dev Data struct from AddressArray.Data items
18
+ * and lookup mapping address => index in data array.
19
+ */
11
20
  struct Data {
12
21
  AddressArray.Data items;
13
22
  mapping(address => uint256) lookup;
14
23
  }
15
24
 
16
- function length(Data storage s) internal view returns(uint) {
25
+ /// @dev Length of data storage.
26
+ function length(Data storage s) internal view returns (uint256) {
17
27
  return s.items.length();
18
28
  }
19
29
 
20
- function at(Data storage s, uint index) internal view returns(address) {
30
+ /// @dev Returns data item from `s` storage at `index`.
31
+ function at(Data storage s, uint256 index) internal view returns (address) {
21
32
  return s.items.at(index);
22
33
  }
23
34
 
24
- function contains(Data storage s, address item) internal view returns(bool) {
35
+ /// @dev Returns true if storage `s` has `item`.
36
+ function contains(Data storage s, address item) internal view returns (bool) {
25
37
  return s.lookup[item] != 0;
26
38
  }
27
39
 
28
- function add(Data storage s, address item) internal returns(bool) {
40
+ /// @dev Adds `item` into storage `s` and returns true if successful.
41
+ function add(Data storage s, address item) internal returns (bool) {
29
42
  if (s.lookup[item] > 0) {
30
43
  return false;
31
44
  }
@@ -33,8 +46,9 @@ library AddressSet {
33
46
  return true;
34
47
  }
35
48
 
36
- function remove(Data storage s, address item) internal returns(bool) {
37
- uint index = s.lookup[item];
49
+ /// @dev Removes `item` from storage `s` and returns true if successful.
50
+ function remove(Data storage s, address item) internal returns (bool) {
51
+ uint256 index = s.lookup[item];
38
52
  if (index == 0) {
39
53
  return false;
40
54
  }
@@ -19,7 +19,12 @@ library ECDSA {
19
19
  uint256 private constant _COMPACT_S_MASK = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
20
20
  uint256 private constant _COMPACT_V_SHIFT = 255;
21
21
 
22
- function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal view returns(address signer) {
22
+ function recover(
23
+ bytes32 hash,
24
+ uint8 v,
25
+ bytes32 r,
26
+ bytes32 s
27
+ ) internal view returns (address signer) {
23
28
  /// @solidity memory-safe-assembly
24
29
  assembly { // solhint-disable-line no-inline-assembly
25
30
  if lt(s, _S_BOUNDARY) {
@@ -36,7 +41,11 @@ library ECDSA {
36
41
  }
37
42
  }
38
43
 
39
- function recover(bytes32 hash, bytes32 r, bytes32 vs) internal view returns(address signer) {
44
+ function recover(
45
+ bytes32 hash,
46
+ bytes32 r,
47
+ bytes32 vs
48
+ ) internal view returns (address signer) {
40
49
  /// @solidity memory-safe-assembly
41
50
  assembly { // solhint-disable-line no-inline-assembly
42
51
  let s := and(vs, _COMPACT_S_MASK)
@@ -54,20 +63,37 @@ library ECDSA {
54
63
  }
55
64
  }
56
65
 
57
- /// @dev only compact signatures are supported see EIP-2098
58
- function recover(bytes32 hash, bytes calldata signature) internal view returns(address signer) {
66
+ /// @dev WARNING!!!
67
+ /// There is a known signature malleability issue with two representations of signatures!
68
+ /// Even though this function is able to verify both standard 65-byte and compact 64-byte EIP-2098 signatures
69
+ /// one should never use raw signatures for any kind of invalidation logic in their code.
70
+ /// As the standard and compact representations are interchangeable any invalidation logic that relies on
71
+ /// signature uniqueness will get rekt.
72
+ /// More info: https://github.com/OpenZeppelin/openzeppelin-contracts/security/advisories/GHSA-4h98-2769-gh6h
73
+ function recover(bytes32 hash, bytes calldata signature) internal view returns (address signer) {
59
74
  /// @solidity memory-safe-assembly
60
75
  assembly { // solhint-disable-line no-inline-assembly
61
- // memory[ptr:ptr+0x80] = (hash, v, r, s)
62
- if eq(signature.length, 64) {
63
- let ptr := mload(0x40)
76
+ let ptr := mload(0x40)
64
77
 
78
+ // memory[ptr:ptr+0x80] = (hash, v, r, s)
79
+ switch signature.length
80
+ case 65 {
81
+ // memory[ptr+0x20:ptr+0x80] = (v, r, s)
82
+ mstore(add(ptr, 0x20), byte(0, calldataload(add(signature.offset, 0x40))))
83
+ calldatacopy(add(ptr, 0x40), signature.offset, 0x40)
84
+ }
85
+ case 64 {
65
86
  // memory[ptr+0x20:ptr+0x80] = (v, r, s)
66
87
  let vs := calldataload(add(signature.offset, 0x20))
67
88
  mstore(add(ptr, 0x20), add(27, shr(_COMPACT_V_SHIFT, vs)))
68
89
  calldatacopy(add(ptr, 0x40), signature.offset, 0x20)
69
90
  mstore(add(ptr, 0x60), and(vs, _COMPACT_S_MASK))
91
+ }
92
+ default {
93
+ ptr := 0
94
+ }
70
95
 
96
+ if ptr {
71
97
  if lt(mload(add(ptr, 0x60)), _S_BOUNDARY) {
72
98
  // memory[ptr:ptr+0x20] = (hash)
73
99
  mstore(ptr, hash)
@@ -80,15 +106,25 @@ library ECDSA {
80
106
  }
81
107
  }
82
108
 
83
- function recoverOrIsValidSignature(address signer, bytes32 hash, bytes calldata signature) internal view returns(bool success) {
109
+ function recoverOrIsValidSignature(
110
+ address signer,
111
+ bytes32 hash,
112
+ bytes calldata signature
113
+ ) internal view returns (bool success) {
84
114
  if (signer == address(0)) return false;
85
- if (signature.length == 64 && recover(hash, signature) == signer) {
115
+ if ((signature.length == 64 || signature.length == 65) && recover(hash, signature) == signer) {
86
116
  return true;
87
117
  }
88
118
  return isValidSignature(signer, hash, signature);
89
119
  }
90
120
 
91
- function recoverOrIsValidSignature(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal view returns(bool success) {
121
+ function recoverOrIsValidSignature(
122
+ address signer,
123
+ bytes32 hash,
124
+ uint8 v,
125
+ bytes32 r,
126
+ bytes32 s
127
+ ) internal view returns (bool success) {
92
128
  if (signer == address(0)) return false;
93
129
  if (recover(hash, v, r, s) == signer) {
94
130
  return true;
@@ -96,7 +132,12 @@ library ECDSA {
96
132
  return isValidSignature(signer, hash, v, r, s);
97
133
  }
98
134
 
99
- function recoverOrIsValidSignature(address signer, bytes32 hash, bytes32 r, bytes32 vs) internal view returns(bool success) {
135
+ function recoverOrIsValidSignature(
136
+ address signer,
137
+ bytes32 hash,
138
+ bytes32 r,
139
+ bytes32 vs
140
+ ) internal view returns (bool success) {
100
141
  if (signer == address(0)) return false;
101
142
  if (recover(hash, r, vs) == signer) {
102
143
  return true;
@@ -104,7 +145,12 @@ library ECDSA {
104
145
  return isValidSignature(signer, hash, r, vs);
105
146
  }
106
147
 
107
- function recoverOrIsValidSignature65(address signer, bytes32 hash, bytes32 r, bytes32 vs) internal view returns(bool success) {
148
+ function recoverOrIsValidSignature65(
149
+ address signer,
150
+ bytes32 hash,
151
+ bytes32 r,
152
+ bytes32 vs
153
+ ) internal view returns (bool success) {
108
154
  if (signer == address(0)) return false;
109
155
  if (recover(hash, r, vs) == signer) {
110
156
  return true;
@@ -112,7 +158,11 @@ library ECDSA {
112
158
  return isValidSignature65(signer, hash, r, vs);
113
159
  }
114
160
 
115
- function isValidSignature(address signer, bytes32 hash, bytes calldata signature) internal view returns(bool success) {
161
+ function isValidSignature(
162
+ address signer,
163
+ bytes32 hash,
164
+ bytes calldata signature
165
+ ) internal view returns (bool success) {
116
166
  // (bool success, bytes memory data) = signer.staticcall(abi.encodeWithSelector(IERC1271.isValidSignature.selector, hash, signature));
117
167
  // return success && data.length >= 4 && abi.decode(data, (bytes4)) == IERC1271.isValidSignature.selector;
118
168
  bytes4 selector = IERC1271.isValidSignature.selector;
@@ -131,7 +181,13 @@ library ECDSA {
131
181
  }
132
182
  }
133
183
 
134
- function isValidSignature(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal view returns(bool success) {
184
+ function isValidSignature(
185
+ address signer,
186
+ bytes32 hash,
187
+ uint8 v,
188
+ bytes32 r,
189
+ bytes32 s
190
+ ) internal view returns (bool success) {
135
191
  bytes4 selector = IERC1271.isValidSignature.selector;
136
192
  /// @solidity memory-safe-assembly
137
193
  assembly { // solhint-disable-line no-inline-assembly
@@ -150,7 +206,12 @@ library ECDSA {
150
206
  }
151
207
  }
152
208
 
153
- function isValidSignature(address signer, bytes32 hash, bytes32 r, bytes32 vs) internal view returns(bool success) {
209
+ function isValidSignature(
210
+ address signer,
211
+ bytes32 hash,
212
+ bytes32 r,
213
+ bytes32 vs
214
+ ) internal view returns (bool success) {
154
215
  // (bool success, bytes memory data) = signer.staticcall(abi.encodeWithSelector(IERC1271.isValidSignature.selector, hash, abi.encodePacked(r, vs)));
155
216
  // return success && data.length >= 4 && abi.decode(data, (bytes4)) == IERC1271.isValidSignature.selector;
156
217
  bytes4 selector = IERC1271.isValidSignature.selector;
@@ -170,7 +231,12 @@ library ECDSA {
170
231
  }
171
232
  }
172
233
 
173
- function isValidSignature65(address signer, bytes32 hash, bytes32 r, bytes32 vs) internal view returns(bool success) {
234
+ function isValidSignature65(
235
+ address signer,
236
+ bytes32 hash,
237
+ bytes32 r,
238
+ bytes32 vs
239
+ ) internal view returns (bool success) {
174
240
  // (bool success, bytes memory data) = signer.staticcall(abi.encodeWithSelector(IERC1271.isValidSignature.selector, hash, abi.encodePacked(r, vs & ~uint256(1 << 255), uint8(vs >> 255))));
175
241
  // return success && data.length >= 4 && abi.decode(data, (bytes4)) == IERC1271.isValidSignature.selector;
176
242
  bytes4 selector = IERC1271.isValidSignature.selector;
@@ -3,7 +3,9 @@
3
3
  pragma solidity ^0.8.0;
4
4
  pragma abicoder v1;
5
5
 
6
+ /// @title Revert reason forwarder.
6
7
  library RevertReasonForwarder {
8
+ /// @dev Forwards latest externall call revert.
7
9
  function reRevert() internal pure {
8
10
  // bubble up revert reason from latest external call
9
11
  /// @solidity memory-safe-assembly
@@ -6,21 +6,22 @@ pragma abicoder v1;
6
6
  import "./StringUtil.sol";
7
7
 
8
8
  /** @title Library that allows to parse unsuccessful arbitrary calls revert reasons.
9
- * See https://solidity.readthedocs.io/en/latest/control-structures.html#revert for details.
10
- * Note that we assume revert reason being abi-encoded as Error(string) so it may fail to parse reason
11
- * if structured reverts appear in the future.
12
- *
13
- * All unsuccessful parsings get encoded as Unknown(data) string
14
- */
9
+ * See https://solidity.readthedocs.io/en/latest/control-structures.html#revert for details.
10
+ * Note that we assume revert reason being abi-encoded as Error(string) so it may fail to parse reason
11
+ * if structured reverts appear in the future.
12
+ *
13
+ * All unsuccessful parsings get encoded as Unknown(data) string
14
+ */
15
15
  library RevertReasonParser {
16
16
  using StringUtil for uint256;
17
17
  using StringUtil for bytes;
18
18
 
19
19
  error InvalidRevertReason();
20
20
 
21
- bytes4 constant private _ERROR_SELECTOR = bytes4(keccak256("Error(string)"));
22
- bytes4 constant private _PANIC_SELECTOR = bytes4(keccak256("Panic(uint256)"));
21
+ bytes4 private constant _ERROR_SELECTOR = bytes4(keccak256("Error(string)"));
22
+ bytes4 private constant _PANIC_SELECTOR = bytes4(keccak256("Panic(uint256)"));
23
23
 
24
+ /// @dev Parses error `data` and returns actual with `prefix`.
24
25
  function parse(bytes memory data, string memory prefix) internal pure returns (string memory) {
25
26
  // https://solidity.readthedocs.io/en/latest/control-structures.html#revert
26
27
  // We assume that revert reason is abi-encoded as Error(string)