@1inch/solidity-utils 3.8.2 → 4.0.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.
Files changed (162) hide show
  1. package/LICENSE.md +3 -1
  2. package/README.md +5 -0
  3. package/contracts/interfaces/IERC7597Permit.sol +13 -0
  4. package/contracts/libraries/AddressArray.sol +133 -52
  5. package/contracts/libraries/AddressSet.sol +36 -10
  6. package/contracts/libraries/BySigTraits.sol +46 -0
  7. package/contracts/libraries/SafeERC20.sol +7 -3
  8. package/dist/src/permit.d.ts +3 -1
  9. package/dist/src/permit.js +12 -1
  10. package/dist/src/permit.js.map +1 -1
  11. package/dist/typechain-types/@openzeppelin/contracts/utils/Address.d.ts +20 -0
  12. package/dist/typechain-types/@openzeppelin/contracts/utils/Address.js +3 -0
  13. package/dist/typechain-types/@openzeppelin/contracts/utils/Address.js.map +1 -0
  14. package/dist/typechain-types/@openzeppelin/contracts/utils/index.d.ts +1 -0
  15. package/dist/typechain-types/contracts/index.d.ts +2 -3
  16. package/dist/typechain-types/contracts/interfaces/IERC7597Permit.d.ts +41 -0
  17. package/dist/typechain-types/contracts/interfaces/IERC7597Permit.js +3 -0
  18. package/dist/typechain-types/contracts/interfaces/IERC7597Permit.js.map +1 -0
  19. package/dist/typechain-types/contracts/interfaces/index.d.ts +1 -0
  20. package/dist/typechain-types/contracts/libraries/BySigTraits.d.ts +20 -0
  21. package/dist/typechain-types/contracts/libraries/BySigTraits.js +3 -0
  22. package/dist/typechain-types/contracts/libraries/BySigTraits.js.map +1 -0
  23. package/dist/typechain-types/contracts/libraries/index.d.ts +1 -0
  24. package/dist/typechain-types/contracts/mixins/BySig.d.ts +214 -0
  25. package/dist/typechain-types/contracts/mixins/BySig.js +3 -0
  26. package/dist/typechain-types/contracts/mixins/BySig.js.map +1 -0
  27. package/dist/typechain-types/contracts/{EthReceiver.d.ts → mixins/EthReceiver.d.ts} +1 -1
  28. package/dist/typechain-types/contracts/mixins/EthReceiver.js.map +1 -0
  29. package/dist/typechain-types/contracts/{OnlyWethReceiver.d.ts → mixins/OnlyWethReceiver.d.ts} +1 -1
  30. package/dist/typechain-types/contracts/mixins/OnlyWethReceiver.js.map +1 -0
  31. package/dist/typechain-types/contracts/{PermitAndCall.d.ts → mixins/PermitAndCall.d.ts} +1 -1
  32. package/dist/typechain-types/contracts/mixins/PermitAndCall.js.map +1 -0
  33. package/dist/typechain-types/contracts/mixins/index.d.ts +4 -0
  34. package/dist/typechain-types/contracts/mixins/index.js +3 -0
  35. package/dist/typechain-types/contracts/mixins/index.js.map +1 -0
  36. package/dist/typechain-types/contracts/tests/mocks/AddressSetMock.d.ts +5 -1
  37. package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.d.ts +47 -0
  38. package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.js +3 -0
  39. package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.js.map +1 -0
  40. package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.d.ts +422 -0
  41. package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.js +3 -0
  42. package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.js.map +1 -0
  43. package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.d.ts +260 -0
  44. package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.js +3 -0
  45. package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.js.map +1 -0
  46. package/dist/typechain-types/contracts/tests/mocks/index.d.ts +3 -0
  47. package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +42 -0
  48. package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js +67 -0
  49. package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js.map +1 -0
  50. package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +1 -0
  51. package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.js +3 -1
  52. package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.js.map +1 -1
  53. package/dist/typechain-types/factories/contracts/index.d.ts +1 -3
  54. package/dist/typechain-types/factories/contracts/index.js +2 -7
  55. package/dist/typechain-types/factories/contracts/index.js.map +1 -1
  56. package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.d.ts +33 -0
  57. package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.js +53 -0
  58. package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.js.map +1 -0
  59. package/dist/typechain-types/factories/contracts/interfaces/index.d.ts +1 -0
  60. package/dist/typechain-types/factories/contracts/interfaces/index.js +3 -1
  61. package/dist/typechain-types/factories/contracts/interfaces/index.js.map +1 -1
  62. package/dist/typechain-types/factories/contracts/libraries/AddressArray__factory.d.ts +1 -1
  63. package/dist/typechain-types/factories/contracts/libraries/AddressArray__factory.js +1 -1
  64. package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.d.ts +26 -0
  65. package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.js +45 -0
  66. package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.js.map +1 -0
  67. package/dist/typechain-types/factories/contracts/libraries/SafeERC20__factory.d.ts +1 -1
  68. package/dist/typechain-types/factories/contracts/libraries/SafeERC20__factory.js +1 -1
  69. package/dist/typechain-types/factories/contracts/libraries/UniERC20__factory.d.ts +1 -1
  70. package/dist/typechain-types/factories/contracts/libraries/UniERC20__factory.js +1 -1
  71. package/dist/typechain-types/factories/contracts/libraries/index.d.ts +1 -0
  72. package/dist/typechain-types/factories/contracts/libraries/index.js +3 -1
  73. package/dist/typechain-types/factories/contracts/libraries/index.js.map +1 -1
  74. package/dist/typechain-types/factories/contracts/mixins/BySig__factory.d.ts +286 -0
  75. package/dist/typechain-types/factories/contracts/mixins/BySig__factory.js +385 -0
  76. package/dist/typechain-types/factories/contracts/mixins/BySig__factory.js.map +1 -0
  77. package/dist/typechain-types/factories/contracts/{EthReceiver__factory.d.ts → mixins/EthReceiver__factory.d.ts} +1 -1
  78. package/dist/typechain-types/factories/contracts/mixins/EthReceiver__factory.js.map +1 -0
  79. package/dist/typechain-types/factories/contracts/{OnlyWethReceiver__factory.d.ts → mixins/OnlyWethReceiver__factory.d.ts} +1 -1
  80. package/dist/typechain-types/factories/contracts/mixins/OnlyWethReceiver__factory.js.map +1 -0
  81. package/dist/typechain-types/factories/contracts/{PermitAndCall__factory.d.ts → mixins/PermitAndCall__factory.d.ts} +1 -1
  82. package/dist/typechain-types/factories/contracts/mixins/PermitAndCall__factory.js.map +1 -0
  83. package/dist/typechain-types/factories/contracts/mixins/index.d.ts +4 -0
  84. package/dist/typechain-types/factories/contracts/mixins/index.js +15 -0
  85. package/dist/typechain-types/factories/contracts/mixins/index.js.map +1 -0
  86. package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.d.ts +1 -5
  87. package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js +1 -6
  88. package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js.map +1 -1
  89. package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.d.ts +11 -5
  90. package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js +14 -6
  91. package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js.map +1 -1
  92. package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.d.ts +86 -0
  93. package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.js +126 -0
  94. package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.js.map +1 -0
  95. package/dist/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.d.ts +1 -1
  96. package/dist/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.js +1 -1
  97. package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.d.ts +1 -1
  98. package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js +1 -1
  99. package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js.map +1 -1
  100. package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.d.ts +1 -1
  101. package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js +1 -1
  102. package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js.map +1 -1
  103. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.d.ts +1 -1
  104. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.js +1 -1
  105. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.d.ts +1 -1
  106. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.js +1 -1
  107. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.d.ts +1 -1
  108. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.js +1 -1
  109. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.d.ts +1 -1
  110. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.js +1 -1
  111. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.d.ts +1 -1
  112. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.js +1 -1
  113. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20WithSafeBalance__factory.d.ts +1 -1
  114. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20WithSafeBalance__factory.js +1 -1
  115. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/Permit2ReturnTrueMock__factory.d.ts +1 -1
  116. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/Permit2ReturnTrueMock__factory.js +1 -1
  117. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.d.ts +1 -1
  118. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js +1 -1
  119. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js.map +1 -1
  120. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeWETHWrapper__factory.d.ts +1 -1
  121. package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeWETHWrapper__factory.js +1 -1
  122. package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.d.ts +675 -0
  123. package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.js +893 -0
  124. package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.js.map +1 -0
  125. package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.d.ts +481 -0
  126. package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.js +640 -0
  127. package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.js.map +1 -0
  128. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.d.ts +1 -1
  129. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.js +1 -1
  130. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.d.ts +1 -1
  131. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.js +1 -1
  132. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.d.ts +1 -1
  133. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.js +1 -1
  134. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.d.ts +1 -1
  135. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.js +1 -1
  136. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.d.ts +1 -1
  137. package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.js +1 -1
  138. package/dist/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.d.ts +1 -1
  139. package/dist/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.js +1 -1
  140. package/dist/typechain-types/factories/contracts/tests/mocks/index.d.ts +3 -0
  141. package/dist/typechain-types/factories/contracts/tests/mocks/index.js +7 -1
  142. package/dist/typechain-types/factories/contracts/tests/mocks/index.js.map +1 -1
  143. package/dist/typechain-types/index.d.ts +20 -6
  144. package/dist/typechain-types/index.js +22 -8
  145. package/dist/typechain-types/index.js.map +1 -1
  146. package/package.json +1 -1
  147. package/utils/docify.utils.js +1 -1
  148. package/contracts/EthReceiver.sol +0 -16
  149. package/contracts/OnlyWethReceiver.sol +0 -17
  150. package/contracts/PermitAndCall.sol +0 -28
  151. package/dist/typechain-types/contracts/EthReceiver.js.map +0 -1
  152. package/dist/typechain-types/contracts/OnlyWethReceiver.js.map +0 -1
  153. package/dist/typechain-types/contracts/PermitAndCall.js.map +0 -1
  154. package/dist/typechain-types/factories/contracts/EthReceiver__factory.js.map +0 -1
  155. package/dist/typechain-types/factories/contracts/OnlyWethReceiver__factory.js.map +0 -1
  156. package/dist/typechain-types/factories/contracts/PermitAndCall__factory.js.map +0 -1
  157. /package/dist/typechain-types/contracts/{EthReceiver.js → mixins/EthReceiver.js} +0 -0
  158. /package/dist/typechain-types/contracts/{OnlyWethReceiver.js → mixins/OnlyWethReceiver.js} +0 -0
  159. /package/dist/typechain-types/contracts/{PermitAndCall.js → mixins/PermitAndCall.js} +0 -0
  160. /package/dist/typechain-types/factories/contracts/{EthReceiver__factory.js → mixins/EthReceiver__factory.js} +0 -0
  161. /package/dist/typechain-types/factories/contracts/{OnlyWethReceiver__factory.js → mixins/OnlyWethReceiver__factory.js} +0 -0
  162. /package/dist/typechain-types/factories/contracts/{PermitAndCall__factory.js → mixins/PermitAndCall__factory.js} +0 -0
package/LICENSE.md CHANGED
@@ -1,4 +1,6 @@
1
- Copyright (c) 2019-2023 1inch
1
+ MIT License
2
+
3
+ © 2019, 1inch. All rights reserved.
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
6
 
package/README.md CHANGED
@@ -64,6 +64,11 @@ Add to `package.json` file solidity compiler version and shortcut to run command
64
64
  "docify": "npx solidity-utils-docify"
65
65
  ```
66
66
 
67
+ You can set output directory with ENV variable:
68
+ ```
69
+ "docify": "DOCGEN_OUTPUT_DIR=./docs npx solidity-utils-docify"
70
+ ```
71
+
67
72
  ...
68
73
 
69
74
  #### Dependencies list (imports-list)
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity ^0.8.0;
4
+
5
+ interface IERC7597Permit {
6
+ function permit(
7
+ address owner,
8
+ address spender,
9
+ uint256 value,
10
+ uint256 deadline,
11
+ bytes memory signature
12
+ ) external;
13
+ }
@@ -8,92 +8,173 @@ library AddressArray {
8
8
  error PopFromEmptyArray();
9
9
  error OutputArrayTooSmall();
10
10
 
11
+ uint256 internal constant _ZERO_ADDRESS = 0x8000000000000000000000000000000000000000000000000000000000000000; // Next tx gas optimization
12
+ uint256 internal constant _LENGTH_MASK = 0x0000000000000000ffffffff0000000000000000000000000000000000000000;
13
+ uint256 internal constant _ADDRESS_MASK = 0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff;
14
+ uint256 internal constant _ONE_LENGTH = 0x0000000000000000000000010000000000000000000000000000000000000000;
15
+ uint256 internal constant _LENGTH_OFFSET = 160;
16
+
11
17
  /// @dev Data struct containing raw mapping.
12
18
  struct Data {
13
- mapping(uint256 => uint256) _raw;
19
+ uint256[1 << 32] _raw;
14
20
  }
15
21
 
16
22
  /// @dev Length of array.
17
23
  function length(Data storage self) internal view returns (uint256) {
18
- return self._raw[0] >> 160;
24
+ return (self._raw[0] & _LENGTH_MASK) >> _LENGTH_OFFSET;
19
25
  }
20
26
 
21
27
  /// @dev Returns data item from `self` storage at `i`.
22
28
  function at(Data storage self, uint256 i) internal view returns (address) {
23
- return address(uint160(self._raw[i]));
29
+ if (i >= 1 << 32) revert IndexOutOfBounds();
30
+ return address(uint160(self._raw[i] & _ADDRESS_MASK));
24
31
  }
25
32
 
26
33
  /// @dev Returns list of addresses from storage `self`.
27
- function get(Data storage self) internal view returns (address[] memory arr) {
28
- uint256 lengthAndFirst = self._raw[0];
29
- arr = new address[](lengthAndFirst >> 160);
30
- _get(self, arr, lengthAndFirst);
34
+ function get(Data storage self) internal view returns (address[] memory output) {
35
+ /// @solidity memory-safe-assembly
36
+ assembly { // solhint-disable-line no-inline-assembly
37
+ let lengthAndFirst := sload(self.slot)
38
+ let len := shr(_LENGTH_OFFSET, and(lengthAndFirst, _LENGTH_MASK))
39
+ let fst := and(lengthAndFirst, _ADDRESS_MASK)
40
+
41
+ // Allocate array
42
+ output := mload(0x40)
43
+ mstore(0x40, add(output, mul(0x20, add(1, len))))
44
+ mstore(output, len)
45
+
46
+ if len {
47
+ // Copy first element and then the rest in a loop
48
+ let ptr := add(output, 0x20)
49
+ mstore(ptr, fst)
50
+ for { let i := 1 } lt(i, len) { i:= add(i, 1) } {
51
+ let item := and(sload(add(self.slot, i)), _ADDRESS_MASK)
52
+ mstore(add(ptr, mul(0x20, i)), item)
53
+ }
54
+ }
55
+ }
31
56
  }
32
57
 
33
58
  /// @dev Puts list of addresses from `self` storage into `output` array.
34
- function get(Data storage self, address[] memory output) internal view returns (address[] memory) {
35
- return _get(self, output, self._raw[0]);
36
- }
59
+ function get(Data storage self, address[] memory input) internal view returns (address[] memory output) {
60
+ output = input;
61
+ bytes4 err = OutputArrayTooSmall.selector;
62
+ /// @solidity memory-safe-assembly
63
+ assembly { // solhint-disable-line no-inline-assembly
64
+ let lengthAndFirst := sload(self.slot)
65
+ let len := shr(_LENGTH_OFFSET, and(lengthAndFirst, _LENGTH_MASK))
66
+ let fst := and(lengthAndFirst, _ADDRESS_MASK)
37
67
 
38
- function _get(
39
- Data storage self,
40
- address[] memory output,
41
- uint256 lengthAndFirst
42
- ) private view returns (address[] memory) {
43
- uint256 len = lengthAndFirst >> 160;
44
- if (len > output.length) revert OutputArrayTooSmall();
45
- if (len > 0) {
46
- output[0] = address(uint160(lengthAndFirst));
47
- unchecked {
48
- for (uint256 i = 1; i < len; i++) {
49
- output[i] = address(uint160(self._raw[i]));
68
+ if gt(len, mload(input)) {
69
+ mstore(0, err)
70
+ revert(0, 4)
71
+ }
72
+ if len {
73
+ // Copy first element and then the rest in a loop
74
+ let ptr := add(output, 0x20)
75
+ mstore(ptr, fst)
76
+ for { let i := 1 } lt(i, len) { i:= add(i, 1) } {
77
+ let item := and(sload(add(self.slot, i)), _ADDRESS_MASK)
78
+ mstore(add(ptr, mul(0x20, i)), item)
50
79
  }
51
80
  }
52
81
  }
53
- return output;
54
82
  }
55
83
 
56
84
  /// @dev Array push back `account` operation on storage `self`.
57
- function push(Data storage self, address account) internal returns (uint256) {
58
- unchecked {
59
- uint256 lengthAndFirst = self._raw[0];
60
- uint256 len = lengthAndFirst >> 160;
61
- if (len == 0) {
62
- self._raw[0] = (1 << 160) + uint160(account);
63
- } else {
64
- self._raw[0] = lengthAndFirst + (1 << 160);
65
- self._raw[len] = uint160(account);
85
+ function push(Data storage self, address account) internal returns (uint256 res) {
86
+ /// @solidity memory-safe-assembly
87
+ assembly { // solhint-disable-line no-inline-assembly
88
+ let lengthAndFirst := sload(self.slot)
89
+ let len := shr(_LENGTH_OFFSET, and(lengthAndFirst, _LENGTH_MASK))
90
+
91
+ switch len
92
+ case 0 {
93
+ sstore(self.slot, or(account, _ONE_LENGTH))
66
94
  }
67
- return len + 1;
95
+ default {
96
+ sstore(self.slot, add(lengthAndFirst, _ONE_LENGTH))
97
+ sstore(add(self.slot, len), or(account, _ZERO_ADDRESS))
98
+ }
99
+ res := add(len, 1)
68
100
  }
69
101
  }
70
102
 
71
103
  /// @dev Array pop back operation for storage `self`.
72
104
  function pop(Data storage self) internal {
73
- unchecked {
74
- uint256 lengthAndFirst = self._raw[0];
75
- uint256 len = lengthAndFirst >> 160;
76
- if (len == 0) revert PopFromEmptyArray();
77
- self._raw[len - 1] = 0;
78
- if (len > 1) {
79
- self._raw[0] = lengthAndFirst - (1 << 160);
105
+ bytes4 err = PopFromEmptyArray.selector;
106
+ /// @solidity memory-safe-assembly
107
+ assembly { // solhint-disable-line no-inline-assembly
108
+ let lengthAndFirst := sload(self.slot)
109
+ let len := shr(_LENGTH_OFFSET, and(lengthAndFirst, _LENGTH_MASK))
110
+
111
+ switch len
112
+ case 0 {
113
+ mstore(0, err)
114
+ revert(0, 4)
115
+ }
116
+ case 1 {
117
+ sstore(self.slot, _ZERO_ADDRESS)
118
+ }
119
+ default {
120
+ sstore(self.slot, sub(lengthAndFirst, _ONE_LENGTH))
121
+ }
122
+ }
123
+ }
124
+
125
+ /// @dev Array pop back operation for storage `self` that returns popped element.
126
+ function popGet(Data storage self) internal returns(address res) {
127
+ bytes4 err = PopFromEmptyArray.selector;
128
+ /// @solidity memory-safe-assembly
129
+ assembly { // solhint-disable-line no-inline-assembly
130
+ let lengthAndFirst := sload(self.slot)
131
+ let len := shr(_LENGTH_OFFSET, and(lengthAndFirst, _LENGTH_MASK))
132
+
133
+ switch len
134
+ case 0 {
135
+ mstore(0, err)
136
+ revert(0, 4)
137
+ }
138
+ case 1 {
139
+ res := and(lengthAndFirst, _ADDRESS_MASK)
140
+ sstore(self.slot, _ZERO_ADDRESS)
141
+ }
142
+ default {
143
+ res := and(sload(add(self.slot, sub(len, 1))), _ADDRESS_MASK)
144
+ sstore(self.slot, sub(lengthAndFirst, _ONE_LENGTH))
80
145
  }
81
146
  }
82
147
  }
83
148
 
84
149
  /// @dev Set element for storage `self` at `index` to `account`.
85
- function set(
86
- Data storage self,
87
- uint256 index,
88
- address account
89
- ) internal {
90
- uint256 len = length(self);
91
- if (index >= len) revert IndexOutOfBounds();
92
-
93
- if (index == 0) {
94
- self._raw[0] = (len << 160) | uint160(account);
95
- } else {
96
- self._raw[index] = uint160(account);
150
+ function set(Data storage self, uint256 index, address account) internal {
151
+ bytes4 err = IndexOutOfBounds.selector;
152
+ /// @solidity memory-safe-assembly
153
+ assembly { // solhint-disable-line no-inline-assembly
154
+ let lengthAndFirst := sload(self.slot)
155
+ let len := shr(_LENGTH_OFFSET, and(lengthAndFirst, _LENGTH_MASK))
156
+ let fst := and(lengthAndFirst, _ADDRESS_MASK)
157
+
158
+ if iszero(lt(index, len)) {
159
+ mstore(0, err)
160
+ revert(0, 4)
161
+ }
162
+
163
+ switch index
164
+ case 0 {
165
+ sstore(self.slot, or(xor(lengthAndFirst, fst), account))
166
+ }
167
+ default {
168
+ sstore(add(self.slot, index), or(account, _ZERO_ADDRESS))
169
+ }
170
+ }
171
+ }
172
+
173
+ /// @dev Erase length of the array
174
+ function erase(Data storage self) internal {
175
+ /// @solidity memory-safe-assembly
176
+ assembly { // solhint-disable-line no-inline-assembly
177
+ sstore(self.slot, _ADDRESS_MASK)
97
178
  }
98
179
  }
99
180
  }
@@ -13,9 +13,9 @@ import "./AddressArray.sol";
13
13
  library AddressSet {
14
14
  using AddressArray for AddressArray.Data;
15
15
 
16
- /** @dev Data struct from AddressArray.Data items
17
- * and lookup mapping address => index in data array.
18
- */
16
+ uint256 internal constant _NULL_INDEX = type(uint256).max;
17
+
18
+ /// @dev Data struct from AddressArray.Data items and lookup mapping address => index in data array.
19
19
  struct Data {
20
20
  AddressArray.Data items;
21
21
  mapping(address => uint256) lookup;
@@ -33,12 +33,24 @@ library AddressSet {
33
33
 
34
34
  /// @dev Returns true if storage `s` has `item`.
35
35
  function contains(Data storage s, address item) internal view returns (bool) {
36
- return s.lookup[item] != 0;
36
+ uint256 index = s.lookup[item];
37
+ return index != 0 && index != _NULL_INDEX;
38
+ }
39
+
40
+ /// @dev Returns list of addresses from storage `s`.
41
+ function get(Data storage s) internal view returns (address[] memory) {
42
+ return s.items.get();
43
+ }
44
+
45
+ /// @dev Puts list of addresses from `s` storage into `output` array.
46
+ function get(Data storage s, address[] memory input) internal view returns (address[] memory) {
47
+ return s.items.get(input);
37
48
  }
38
49
 
39
50
  /// @dev Adds `item` into storage `s` and returns true if successful.
40
51
  function add(Data storage s, address item) internal returns (bool) {
41
- if (s.lookup[item] > 0) {
52
+ uint256 index = s.lookup[item];
53
+ if (index != 0 && index != _NULL_INDEX) {
42
54
  return false;
43
55
  }
44
56
  s.lookup[item] = s.items.push(item);
@@ -48,18 +60,32 @@ library AddressSet {
48
60
  /// @dev Removes `item` from storage `s` and returns true if successful.
49
61
  function remove(Data storage s, address item) internal returns (bool) {
50
62
  uint256 index = s.lookup[item];
51
- if (index == 0) {
63
+ s.lookup[item] = _NULL_INDEX;
64
+ if (index == 0 || index == _NULL_INDEX) {
52
65
  return false;
53
66
  }
54
- if (index < s.items.length()) {
67
+
68
+ address lastItem = s.items.popGet();
69
+ if (lastItem != item) {
55
70
  unchecked {
56
- address lastItem = s.items.at(s.items.length() - 1);
57
71
  s.items.set(index - 1, lastItem);
58
72
  s.lookup[lastItem] = index;
59
73
  }
60
74
  }
61
- s.items.pop();
62
- delete s.lookup[item];
63
75
  return true;
64
76
  }
77
+
78
+ /// @dev Erases set from storage `s` and returns all removed items
79
+ function erase(Data storage s) internal returns(address[] memory items) {
80
+ items = s.items.get();
81
+ uint256 len = items.length;
82
+ if (len > 0) {
83
+ s.items.erase();
84
+ unchecked {
85
+ for (uint256 i = 0; i < len; i++) {
86
+ s.lookup[items[i]] = _NULL_INDEX;
87
+ }
88
+ }
89
+ }
90
+ }
65
91
  }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity ^0.8.0;
4
+
5
+ library BySigTraits {
6
+ error WrongNonceType();
7
+
8
+ // 2 bits for type
9
+ // 6 bits reserved for future use
10
+ // 40 bits for deadline
11
+ // 80 bits for relayer address lower bits
12
+ // 128 bits for nonce value
13
+ type Value is uint256;
14
+
15
+ enum NonceType {
16
+ Account,
17
+ Selector,
18
+ Unique
19
+ }
20
+
21
+ uint256 constant internal TYPE_BIT_SHIFT = 254;
22
+ uint256 constant internal DEADLINE_BIT_SHIFT = 208;
23
+ uint256 constant internal DEADLINE_BIT_MASK = (1 << 40) - 1;
24
+ uint256 constant internal RELAYER_BIT_SHIFT = 128;
25
+ uint256 constant internal RELAYER_BIT_MASK = (1 << 80) - 1;
26
+ uint256 constant internal NONCE_MASK = (1 << 128) - 1;
27
+
28
+ function nonceType(Value traits) internal pure returns(NonceType) {
29
+ uint256 _type = Value.unwrap(traits) >> TYPE_BIT_SHIFT;
30
+ if (_type > uint256(NonceType.Unique)) revert WrongNonceType();
31
+ return NonceType(_type);
32
+ }
33
+
34
+ function deadline(Value traits) internal pure returns(uint256) {
35
+ return (Value.unwrap(traits) >> DEADLINE_BIT_SHIFT) & DEADLINE_BIT_MASK;
36
+ }
37
+
38
+ function isRelayerAllowed(Value traits, address relayer) internal pure returns(bool) {
39
+ uint256 relayerBits = (Value.unwrap(traits) >> RELAYER_BIT_SHIFT) & RELAYER_BIT_MASK;
40
+ return relayerBits == 0 || (uint160(relayer) & RELAYER_BIT_MASK) == relayerBits;
41
+ }
42
+
43
+ function nonce(Value traits) internal pure returns(uint256) {
44
+ return Value.unwrap(traits) & NONCE_MASK;
45
+ }
46
+ }
@@ -6,6 +6,7 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6
6
  import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol";
7
7
  import "../interfaces/IDaiLikePermit.sol";
8
8
  import "../interfaces/IPermit2.sol";
9
+ import "../interfaces/IERC7597Permit.sol";
9
10
  import "../interfaces/IWETH.sol";
10
11
  import "../libraries/RevertReasonForwarder.sol";
11
12
 
@@ -301,6 +302,7 @@ library SafeERC20 {
301
302
  bytes4 permitSelector = IERC20Permit.permit.selector;
302
303
  bytes4 daiPermitSelector = IDaiLikePermit.permit.selector;
303
304
  bytes4 permit2Selector = IPermit2.permit.selector;
305
+ bytes4 erc7597PermitSelector = IERC7597Permit.permit.selector;
304
306
  assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
305
307
  let ptr := mload(0x40)
306
308
 
@@ -389,10 +391,12 @@ library SafeERC20 {
389
391
  // IPermit2.permit(address owner, PermitSingle calldata permitSingle, bytes calldata signature)
390
392
  success := call(gas(), _PERMIT2, 0, ptr, 0x164, 0, 0)
391
393
  }
392
- // Unknown
394
+ // Dynamic length
393
395
  default {
394
- mstore(ptr, _PERMIT_LENGTH_ERROR)
395
- revert(ptr, 4)
396
+ mstore(ptr, erc7597PermitSelector)
397
+ calldatacopy(add(ptr, 0x04), permit.offset, permit.length) // copy permit calldata
398
+ // IERC7597Permit.permit(address owner, address spender, uint256 value, uint256 deadline, bytes memory signature)
399
+ success := call(gas(), token, 0, ptr, add(permit.length, 4), 0, 0)
396
400
  }
397
401
  }
398
402
  }
@@ -2,7 +2,7 @@ import { SignTypedDataVersion } from '@metamask/eth-sig-util';
2
2
  import { Wallet } from 'ethers';
3
3
  import '@nomicfoundation/hardhat-ethers';
4
4
  import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
5
- import { DaiLikePermitMock, ERC20Permit } from '../typechain-types';
5
+ import { DaiLikePermitMock, ERC20Permit, USDCLikePermitMock } from '../typechain-types';
6
6
  export declare const TypedDataVersion = SignTypedDataVersion.V4;
7
7
  export declare const defaultDeadline: bigint;
8
8
  export declare const defaultDeadlinePermit2: bigint;
@@ -67,6 +67,8 @@ export declare function permit2Contract(): Promise<import("ethers").Contract>;
67
67
  export declare function getPermit(owner: Wallet | SignerWithAddress, permitContract: ERC20Permit, tokenVersion: string, chainId: number, spender: string, value: string, deadline?: string, compact?: boolean): Promise<string>;
68
68
  export declare function getPermit2(owner: Wallet | SignerWithAddress, token: string, chainId: number, spender: string, amount: bigint, compact?: boolean, expiration?: bigint, sigDeadline?: bigint): Promise<string>;
69
69
  export declare function getPermitLikeDai(holder: Wallet | SignerWithAddress, permitContract: DaiLikePermitMock, tokenVersion: string, chainId: number, spender: string, allowed: boolean, expiry?: string, compact?: boolean): Promise<string>;
70
+ export declare function getPermitLikeUSDC(owner: string, // contract with isValidSignature function
71
+ signer: Wallet | SignerWithAddress, permitContract: USDCLikePermitMock, tokenVersion: string, chainId: number, spender: string, value: string, deadline?: string): Promise<string>;
70
72
  export declare function withTarget(target: bigint | string, data: bigint | string): string;
71
73
  export declare function compressPermit(permit: string): string;
72
74
  export declare function decompressPermit(permit: string, token: string, owner: string, spender: string): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decompressPermit = exports.compressPermit = exports.withTarget = exports.getPermitLikeDai = exports.getPermit2 = exports.getPermit = exports.permit2Contract = exports.buildDataLikeDai = exports.buildData = exports.domainSeparator = exports.cutSelector = exports.trim0x = exports.DaiLikePermit = exports.Permit = exports.EIP712Domain = exports.defaultDeadlinePermit2 = exports.defaultDeadline = exports.TypedDataVersion = void 0;
3
+ exports.decompressPermit = exports.compressPermit = exports.withTarget = exports.getPermitLikeUSDC = exports.getPermitLikeDai = exports.getPermit2 = exports.getPermit = exports.permit2Contract = exports.buildDataLikeDai = exports.buildData = exports.domainSeparator = exports.cutSelector = exports.trim0x = exports.DaiLikePermit = exports.Permit = exports.EIP712Domain = exports.defaultDeadlinePermit2 = exports.defaultDeadline = exports.TypedDataVersion = void 0;
4
4
  const eth_sig_util_1 = require("@metamask/eth-sig-util");
5
5
  const prelude_1 = require("./prelude");
6
6
  const ethers_1 = require("ethers");
@@ -121,6 +121,17 @@ async function getPermitLikeDai(holder, permitContract, tokenVersion, chainId, s
121
121
  return compact ? compressPermit(permitCall) : decompressPermit(compressPermit(permitCall), prelude_1.constants.ZERO_ADDRESS, holder.address, spender);
122
122
  }
123
123
  exports.getPermitLikeDai = getPermitLikeDai;
124
+ async function getPermitLikeUSDC(owner, // contract with isValidSignature function
125
+ signer, permitContract, tokenVersion, chainId, spender, value, deadline = exports.defaultDeadline.toString()) {
126
+ const nonce = await permitContract.nonces(owner);
127
+ const name = await permitContract.name();
128
+ const data = buildData(name, tokenVersion, chainId, await permitContract.getAddress(), owner, spender, value, nonce.toString(), deadline);
129
+ const signature = await signer.signTypedData(data.domain, data.types, data.message);
130
+ const { v, r, s } = ethers_1.Signature.from(signature);
131
+ const signatureBytes = hardhat_1.ethers.solidityPacked(['bytes32', 'bytes32', 'uint8'], [r, s, v]);
132
+ return cutSelector(permitContract.interface.encodeFunctionData('permit(address,address,uint256,uint256,bytes)', [owner, spender, value, deadline, signatureBytes]));
133
+ }
134
+ exports.getPermitLikeUSDC = getPermitLikeUSDC;
124
135
  function withTarget(target, data) {
125
136
  return target.toString() + trim0x(data);
126
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"permit.js","sourceRoot":"","sources":["../../src/permit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permit.js","sourceRoot":"","sources":["../../src/permit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { BaseContract, FunctionFragment, Interface, ContractRunner, ContractMethod, Listener } from "ethers";
2
+ import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener } from "../../../common";
3
+ export interface AddressInterface extends Interface {
4
+ }
5
+ export interface Address extends BaseContract {
6
+ connect(runner?: ContractRunner | null): Address;
7
+ waitForDeployment(): Promise<this>;
8
+ interface: AddressInterface;
9
+ queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
10
+ queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
11
+ on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
12
+ on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
13
+ once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
14
+ once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
15
+ listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
16
+ listeners(eventName?: string): Promise<Array<Listener>>;
17
+ removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
18
+ getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
19
+ filters: {};
20
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Address.js","sourceRoot":"","sources":["../../../../../typechain-types/@openzeppelin/contracts/utils/Address.ts"],"names":[],"mappings":""}
@@ -2,6 +2,7 @@ import type * as cryptography from "./cryptography";
2
2
  export type { cryptography };
3
3
  import type * as math from "./math";
4
4
  export type { math };
5
+ export type { Address } from "./Address";
5
6
  export type { Nonces } from "./Nonces";
6
7
  export type { ShortStrings } from "./ShortStrings";
7
8
  export type { Strings } from "./Strings";
@@ -2,10 +2,9 @@ import type * as interfaces from "./interfaces";
2
2
  export type { interfaces };
3
3
  import type * as libraries from "./libraries";
4
4
  export type { libraries };
5
+ import type * as mixins from "./mixins";
6
+ export type { mixins };
5
7
  import type * as mocks from "./mocks";
6
8
  export type { mocks };
7
9
  import type * as tests from "./tests";
8
10
  export type { tests };
9
- export type { EthReceiver } from "./EthReceiver";
10
- export type { OnlyWethReceiver } from "./OnlyWethReceiver";
11
- export type { PermitAndCall } from "./PermitAndCall";
@@ -0,0 +1,41 @@
1
+ import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
2
+ import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../common";
3
+ export interface IERC7597PermitInterface extends Interface {
4
+ getFunction(nameOrSignature: "permit"): FunctionFragment;
5
+ encodeFunctionData(functionFragment: "permit", values: [AddressLike, AddressLike, BigNumberish, BigNumberish, BytesLike]): string;
6
+ decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result;
7
+ }
8
+ export interface IERC7597Permit extends BaseContract {
9
+ connect(runner?: ContractRunner | null): IERC7597Permit;
10
+ waitForDeployment(): Promise<this>;
11
+ interface: IERC7597PermitInterface;
12
+ queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
13
+ queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
14
+ on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
15
+ on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
16
+ once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
17
+ once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
18
+ listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
19
+ listeners(eventName?: string): Promise<Array<Listener>>;
20
+ removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
21
+ permit: TypedContractMethod<[
22
+ owner: AddressLike,
23
+ spender: AddressLike,
24
+ value: BigNumberish,
25
+ deadline: BigNumberish,
26
+ signature: BytesLike
27
+ ], [
28
+ void
29
+ ], "nonpayable">;
30
+ getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
31
+ getFunction(nameOrSignature: "permit"): TypedContractMethod<[
32
+ owner: AddressLike,
33
+ spender: AddressLike,
34
+ value: BigNumberish,
35
+ deadline: BigNumberish,
36
+ signature: BytesLike
37
+ ], [
38
+ void
39
+ ], "nonpayable">;
40
+ filters: {};
41
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IERC7597Permit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IERC7597Permit.js","sourceRoot":"","sources":["../../../../typechain-types/contracts/interfaces/IERC7597Permit.ts"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  export type { ICreate3Deployer } from "./ICreate3Deployer";
2
2
  export type { IDaiLikePermit } from "./IDaiLikePermit";
3
3
  export type { IERC20MetadataUppercase } from "./IERC20MetadataUppercase";
4
+ export type { IERC7597Permit } from "./IERC7597Permit";
4
5
  export type { IPermit2 } from "./IPermit2";
5
6
  export type { IWETH } from "./IWETH";