Skip to content

Commit

Permalink
Merge branch 'main' into refactor/shoter-relative-path
Browse files Browse the repository at this point in the history
  • Loading branch information
marktoda committed Sep 29, 2023
2 parents 7100692 + 7341410 commit 687b37c
Show file tree
Hide file tree
Showing 29 changed files with 198 additions and 193 deletions.
2 changes: 1 addition & 1 deletion .forge-snapshots/batchTransferFrom.snap
Original file line number Diff line number Diff line change
@@ -1 +1 @@
61806
61797
224 changes: 112 additions & 112 deletions .gas-snapshot
Original file line number Diff line number Diff line change
@@ -1,115 +1,115 @@
AllowanceTransferInvariants:invariant_balanceEqualsSpent() (runs: 256, calls: 3840, reverts: 886)
AllowanceTransferInvariants:invariant_permit2NeverHoldsBalance() (runs: 256, calls: 3840, reverts: 886)
AllowanceTransferInvariants:invariant_spendNeverExceedsPermit() (runs: 256, calls: 3840, reverts: 886)
AllowanceTransferTest:testApprove() (gas: 47561)
AllowanceTransferTest:testBatchTransferFrom() (gas: 159268)
AllowanceTransferTest:testBatchTransferFromDifferentOwners() (gas: 235508)
AllowanceTransferTest:testBatchTransferFromMultiToken() (gas: 231828)
AllowanceTransferTest:testBatchTransferFromWithGasSnapshot() (gas: 159818)
AllowanceTransferTest:testExcessiveInvalidation() (gas: 64136)
AllowanceTransferTest:testInvalidateMultipleNonces() (gas: 83139)
AllowanceTransferTest:testInvalidateNonces() (gas: 62679)
AllowanceTransferTest:testInvalidateNoncesInvalid() (gas: 16261)
AllowanceTransferTest:testLockdown() (gas: 145952)
AllowanceTransferTest:testLockdownEvent() (gas: 117758)
AllowanceTransferTest:testMaxAllowance() (gas: 134993)
AllowanceTransferTest:testMaxAllowanceDirtyWrite() (gas: 117582)
AllowanceTransferTest:testPartialAllowance() (gas: 105067)
AllowanceTransferTest:testReuseOrderedNonceInvalid() (gas: 69095)
AllowanceTransferTest:testSetAllowance() (gas: 89583)
AllowanceTransferTest:testSetAllowanceBatch() (gas: 133608)
AllowanceTransferTest:testSetAllowanceBatchDifferentNonces() (gas: 118583)
AllowanceTransferTest:testSetAllowanceBatchDirtyWrite() (gas: 99144)
AllowanceTransferTest:testSetAllowanceBatchEvent() (gas: 115892)
AllowanceTransferTest:testSetAllowanceCompactSig() (gas: 89543)
AllowanceTransferTest:testSetAllowanceDeadlinePassed() (gas: 56500)
AllowanceTransferInvariants:invariant_balanceEqualsSpent() (runs: 256, calls: 3840, reverts: 879)
AllowanceTransferInvariants:invariant_permit2NeverHoldsBalance() (runs: 256, calls: 3840, reverts: 878)
AllowanceTransferInvariants:invariant_spendNeverExceedsPermit() (runs: 256, calls: 3840, reverts: 881)
AllowanceTransferTest:testApprove() (gas: 47570)
AllowanceTransferTest:testBatchTransferFrom() (gas: 159197)
AllowanceTransferTest:testBatchTransferFromDifferentOwners() (gas: 235094)
AllowanceTransferTest:testBatchTransferFromMultiToken() (gas: 231841)
AllowanceTransferTest:testBatchTransferFromWithGasSnapshot() (gas: 159857)
AllowanceTransferTest:testExcessiveInvalidation() (gas: 64205)
AllowanceTransferTest:testInvalidateMultipleNonces() (gas: 83150)
AllowanceTransferTest:testInvalidateNonces() (gas: 62847)
AllowanceTransferTest:testInvalidateNoncesInvalid() (gas: 16327)
AllowanceTransferTest:testLockdown() (gas: 145984)
AllowanceTransferTest:testLockdownEvent() (gas: 117749)
AllowanceTransferTest:testMaxAllowance() (gas: 134888)
AllowanceTransferTest:testMaxAllowanceDirtyWrite() (gas: 117455)
AllowanceTransferTest:testPartialAllowance() (gas: 105140)
AllowanceTransferTest:testReuseOrderedNonceInvalid() (gas: 69154)
AllowanceTransferTest:testSetAllowance() (gas: 89627)
AllowanceTransferTest:testSetAllowanceBatch() (gas: 133740)
AllowanceTransferTest:testSetAllowanceBatchDifferentNonces() (gas: 118603)
AllowanceTransferTest:testSetAllowanceBatchDirtyWrite() (gas: 99210)
AllowanceTransferTest:testSetAllowanceBatchEvent() (gas: 116049)
AllowanceTransferTest:testSetAllowanceCompactSig() (gas: 89587)
AllowanceTransferTest:testSetAllowanceDeadlinePassed() (gas: 56512)
AllowanceTransferTest:testSetAllowanceDirtyWrite() (gas: 72175)
AllowanceTransferTest:testSetAllowanceIncorrectSigLength() (gas: 29157)
AllowanceTransferTest:testSetAllowanceInvalidSignature() (gas: 64071)
AllowanceTransferTest:testSetAllowanceTransfer() (gas: 103161)
AllowanceTransferTest:testSetAllowanceTransferDirtyNonceDirtyTransfer() (gas: 97432)
AllowanceTransferTest:testTransferFromWithGasSnapshot() (gas: 133004)
AllowanceUnitTest:testPackAndUnpack(uint160,uint48,uint48) (runs: 256, μ: 38998, ~: 39076)
AllowanceUnitTest:testUpdateAllRandomly(uint160,uint48,uint48) (runs: 256, μ: 40222, ~: 40223)
AllowanceUnitTest:testUpdateAmountExpirationRandomly(uint160,uint48) (runs: 256, μ: 39224, ~: 39225)
CompactSignature:testCompactSignature27() (gas: 253)
CompactSignature:testCompactSignature28() (gas: 141)
DeployPermit2Test:testAllowanceTransferSanityCheck() (gas: 101958)
DeployPermit2Test:testDeployPermit2() (gas: 4337486)
DeployPermit2Test:testSignatureTransferSanityCheck() (gas: 92819)
EIP712Test:testDomainSeparator() (gas: 5804)
EIP712Test:testDomainSeparatorAfterFork() (gas: 10787)
MockPermit2Lib:testPermit2Code(address):(bool) (runs: 256, μ: 3016, ~: 3016)
NonceBitmapTest:testHighNonces() (gas: 36186)
NonceBitmapTest:testInvalidateFullWord() (gas: 63125)
NonceBitmapTest:testInvalidateNoncesRandomly(uint248,uint256) (runs: 256, μ: 30308, ~: 31008)
NonceBitmapTest:testInvalidateNonzeroWord() (gas: 85665)
NonceBitmapTest:testInvalidateTwoNoncesRandomly(uint248,uint256,uint256) (runs: 256, μ: 39187, ~: 39187)
NonceBitmapTest:testLowNonces() (gas: 41004)
NonceBitmapTest:testNonceWordBoundary() (gas: 42203)
NonceBitmapTest:testUseTwoRandomNonces(uint256,uint256) (runs: 256, μ: 49205, ~: 51640)
NonceBitmapTest:testUsingNonceTwiceFails(uint256) (runs: 256, μ: 21866, ~: 21889)
Permit2LibTest:testOZSafePermit() (gas: 24553)
Permit2LibTest:testOZSafePermitPlusOZSafeTransferFrom() (gas: 129219)
Permit2LibTest:testOZSafeTransferFrom() (gas: 38941)
Permit2LibTest:testPermit2() (gas: 22834)
Permit2LibTest:testPermit2DSLessToken() (gas: 7033)
Permit2LibTest:testPermit2DSMore32Token() (gas: 7120)
Permit2LibTest:testPermit2DSMoreToken() (gas: 6979)
Permit2LibTest:testPermit2Full() (gas: 42293)
Permit2LibTest:testPermit2InvalidAmount() (gas: 20860)
Permit2LibTest:testPermit2LargerDS() (gas: 51338)
Permit2LibTest:testPermit2LargerDSRevert() (gas: 32778)
Permit2LibTest:testPermit2NonPermitFallback() (gas: 37138)
Permit2LibTest:testPermit2NonPermitToken() (gas: 32101)
Permit2LibTest:testPermit2PlusTransferFrom2() (gas: 126951)
Permit2LibTest:testPermit2PlusTransferFrom2WithNonPermit() (gas: 148111)
Permit2LibTest:testPermit2PlusTransferFrom2WithNonPermitFallback() (gas: 174727)
Permit2LibTest:testPermit2PlusTransferFrom2WithWETH9Mainnet() (gas: 147802)
Permit2LibTest:testPermit2SmallerDS() (gas: 77694)
Permit2LibTest:testPermit2SmallerDSNoRevert() (gas: 59305)
Permit2LibTest:testPermit2WETH9Mainnet() (gas: 28777)
Permit2LibTest:testSimplePermit2() (gas: 29010)
Permit2LibTest:testSimplePermit2InvalidAmount() (gas: 16925)
Permit2LibTest:testSimplePermit2PlusTransferFrom2WithNonPermit() (gas: 148309)
Permit2LibTest:testStandardPermit() (gas: 22384)
AllowanceTransferTest:testSetAllowanceIncorrectSigLength() (gas: 29198)
AllowanceTransferTest:testSetAllowanceInvalidSignature() (gas: 64065)
AllowanceTransferTest:testSetAllowanceTransfer() (gas: 103115)
AllowanceTransferTest:testSetAllowanceTransferDirtyNonceDirtyTransfer() (gas: 97194)
AllowanceTransferTest:testTransferFromWithGasSnapshot() (gas: 132867)
AllowanceUnitTest:testPackAndUnpack(uint160,uint48,uint48) (runs: 256, μ: 39025, ~: 39103)
AllowanceUnitTest:testUpdateAllRandomly(uint160,uint48,uint48) (runs: 256, μ: 40243, ~: 40244)
AllowanceUnitTest:testUpdateAmountExpirationRandomly(uint160,uint48) (runs: 256, μ: 39169, ~: 39170)
CompactSignature:testCompactSignature27() (gas: 300)
CompactSignature:testCompactSignature28() (gas: 144)
DeployPermit2Test:testAllowanceTransferSanityCheck() (gas: 101876)
DeployPermit2Test:testDeployPermit2() (gas: 4337527)
DeployPermit2Test:testSignatureTransferSanityCheck() (gas: 92792)
EIP712Test:testDomainSeparator() (gas: 5881)
EIP712Test:testDomainSeparatorAfterFork() (gas: 10830)
MockPermit2Lib:testPermit2Code(address):(bool) (runs: 256, μ: 3003, ~: 3016)
NonceBitmapTest:testHighNonces() (gas: 36305)
NonceBitmapTest:testInvalidateFullWord() (gas: 63061)
NonceBitmapTest:testInvalidateNoncesRandomly(uint248,uint256) (runs: 256, μ: 30439, ~: 31139)
NonceBitmapTest:testInvalidateNonzeroWord() (gas: 85642)
NonceBitmapTest:testInvalidateTwoNoncesRandomly(uint248,uint256,uint256) (runs: 256, μ: 39182, ~: 39182)
NonceBitmapTest:testLowNonces() (gas: 41041)
NonceBitmapTest:testNonceWordBoundary() (gas: 42284)
NonceBitmapTest:testUseTwoRandomNonces(uint256,uint256) (runs: 256, μ: 49190, ~: 51625)
NonceBitmapTest:testUsingNonceTwiceFails(uint256) (runs: 256, μ: 21935, ~: 21960)
Permit2LibTest:testOZSafePermit() (gas: 24682)
Permit2LibTest:testOZSafePermitPlusOZSafeTransferFrom() (gas: 129329)
Permit2LibTest:testOZSafeTransferFrom() (gas: 39007)
Permit2LibTest:testPermit2() (gas: 22941)
Permit2LibTest:testPermit2DSLessToken() (gas: 7143)
Permit2LibTest:testPermit2DSMore32Token() (gas: 7252)
Permit2LibTest:testPermit2DSMoreToken() (gas: 7023)
Permit2LibTest:testPermit2Full() (gas: 42356)
Permit2LibTest:testPermit2InvalidAmount() (gas: 21011)
Permit2LibTest:testPermit2LargerDS() (gas: 51464)
Permit2LibTest:testPermit2LargerDSRevert() (gas: 32841)
Permit2LibTest:testPermit2NonPermitFallback() (gas: 37245)
Permit2LibTest:testPermit2NonPermitToken() (gas: 32164)
Permit2LibTest:testPermit2PlusTransferFrom2() (gas: 126995)
Permit2LibTest:testPermit2PlusTransferFrom2WithNonPermit() (gas: 148221)
Permit2LibTest:testPermit2PlusTransferFrom2WithNonPermitFallback() (gas: 174749)
Permit2LibTest:testPermit2PlusTransferFrom2WithWETH9Mainnet() (gas: 147934)
Permit2LibTest:testPermit2SmallerDS() (gas: 77688)
Permit2LibTest:testPermit2SmallerDSNoRevert() (gas: 59324)
Permit2LibTest:testPermit2WETH9Mainnet() (gas: 28774)
Permit2LibTest:testSimplePermit2() (gas: 29117)
Permit2LibTest:testSimplePermit2InvalidAmount() (gas: 16944)
Permit2LibTest:testSimplePermit2PlusTransferFrom2WithNonPermit() (gas: 148463)
Permit2LibTest:testStandardPermit() (gas: 22535)
Permit2LibTest:testStandardTransferFrom() (gas: 38143)
Permit2LibTest:testTransferFrom2() (gas: 38624)
Permit2LibTest:testTransferFrom2Full() (gas: 53280)
Permit2LibTest:testTransferFrom2InvalidAmount() (gas: 12710)
Permit2LibTest:testTransferFrom2NonPermitToken() (gas: 53126)
SignatureTransferTest:testCorrectWitnessTypehashes() (gas: 3075)
SignatureTransferTest:testGasMultiplePermitBatchTransferFrom() (gas: 270919)
SignatureTransferTest:testGasSinglePermitBatchTransferFrom() (gas: 186316)
SignatureTransferTest:testGasSinglePermitTransferFrom() (gas: 123850)
SignatureTransferTest:testInvalidateUnorderedNonces() (gas: 41268)
SignatureTransferTest:testPermitBatchMultiPermitSingleTransfer() (gas: 133644)
SignatureTransferTest:testPermitBatchTransferFrom() (gas: 162010)
SignatureTransferTest:testPermitBatchTransferFromSingleRecipient() (gas: 190319)
SignatureTransferTest:testPermitBatchTransferFromTypedWitness() (gas: 239854)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidType() (gas: 84467)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidTypeHash() (gas: 85864)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidWitness() (gas: 85688)
SignatureTransferTest:testPermitBatchTransferInvalidAmountsLengthMismatch() (gas: 43967)
SignatureTransferTest:testPermitBatchTransferMultiAddr() (gas: 160406)
SignatureTransferTest:testPermitBatchTransferSingleRecipientManyTokens() (gas: 211834)
SignatureTransferTest:testPermitTransferFrom() (gas: 93012)
SignatureTransferTest:testPermitTransferFromCompactSig() (gas: 123927)
SignatureTransferTest:testPermitTransferFromIncorrectSigLength() (gas: 51327)
SignatureTransferTest:testPermitTransferFromInvalidNonce() (gas: 72799)
SignatureTransferTest:testPermitTransferFromRandomNonceAndAmount(uint256,uint128) (runs: 256, μ: 95754, ~: 96730)
SignatureTransferTest:testPermitTransferFromToSpender() (gas: 93342)
SignatureTransferTest:testPermitTransferFromTypedWitness() (gas: 125271)
SignatureTransferTest:testPermitTransferFromTypedWitnessInvalidType() (gas: 55906)
SignatureTransferTest:testPermitTransferFromTypedWitnessInvalidTypehash() (gas: 56794)
SignatureTransferTest:testPermitTransferSpendLessThanFull(uint256,uint128) (runs: 256, μ: 97989, ~: 99707)
TypehashGeneration:testPermitBatch() (gas: 40493)
TypehashGeneration:testPermitBatchTransferFrom() (gas: 49854)
TypehashGeneration:testPermitBatchTransferFromWithWitness() (gas: 56587)
Permit2LibTest:testTransferFrom2() (gas: 38734)
Permit2LibTest:testTransferFrom2Full() (gas: 53368)
Permit2LibTest:testTransferFrom2InvalidAmount() (gas: 12732)
Permit2LibTest:testTransferFrom2NonPermitToken() (gas: 53170)
SignatureTransferTest:testCorrectWitnessTypehashes() (gas: 3091)
SignatureTransferTest:testGasMultiplePermitBatchTransferFrom() (gas: 270972)
SignatureTransferTest:testGasSinglePermitBatchTransferFrom() (gas: 183860)
SignatureTransferTest:testGasSinglePermitTransferFrom() (gas: 123854)
SignatureTransferTest:testInvalidateUnorderedNonces() (gas: 41396)
SignatureTransferTest:testPermitBatchMultiPermitSingleTransfer() (gas: 133675)
SignatureTransferTest:testPermitBatchTransferFrom() (gas: 162019)
SignatureTransferTest:testPermitBatchTransferFromSingleRecipient() (gas: 187957)
SignatureTransferTest:testPermitBatchTransferFromTypedWitness() (gas: 239926)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidType() (gas: 84489)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidTypeHash() (gas: 86007)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidWitness() (gas: 85751)
SignatureTransferTest:testPermitBatchTransferInvalidAmountsLengthMismatch() (gas: 41574)
SignatureTransferTest:testPermitBatchTransferMultiAddr() (gas: 160547)
SignatureTransferTest:testPermitBatchTransferSingleRecipientManyTokens() (gas: 209422)
SignatureTransferTest:testPermitTransferFrom() (gas: 92909)
SignatureTransferTest:testPermitTransferFromCompactSig() (gas: 124059)
SignatureTransferTest:testPermitTransferFromIncorrectSigLength() (gas: 51346)
SignatureTransferTest:testPermitTransferFromInvalidNonce() (gas: 72928)
SignatureTransferTest:testPermitTransferFromRandomNonceAndAmount(uint256,uint128) (runs: 256, μ: 95752, ~: 96728)
SignatureTransferTest:testPermitTransferFromToSpender() (gas: 93283)
SignatureTransferTest:testPermitTransferFromTypedWitness() (gas: 125159)
SignatureTransferTest:testPermitTransferFromTypedWitnessInvalidType() (gas: 55947)
SignatureTransferTest:testPermitTransferFromTypedWitnessInvalidTypehash() (gas: 56879)
SignatureTransferTest:testPermitTransferSpendLessThanFull(uint256,uint128) (runs: 256, μ: 97604, ~: 99733)
TypehashGeneration:testPermitBatch() (gas: 40473)
TypehashGeneration:testPermitBatchTransferFrom() (gas: 49837)
TypehashGeneration:testPermitBatchTransferFromWithWitness() (gas: 56621)
TypehashGeneration:testPermitBatchTransferFromWithWitnessIncorrectPermitData() (gas: 56744)
TypehashGeneration:testPermitBatchTransferFromWithWitnessIncorrectTypehashStub() (gas: 57229)
TypehashGeneration:testPermitSingle() (gas: 28117)
TypehashGeneration:testPermitTransferFrom() (gas: 36520)
TypehashGeneration:testPermitTransferFromWithWitness() (gas: 43369)
TypehashGeneration:testPermitTransferFromWithWitnessIncorrectPermitData() (gas: 43430)
TypehashGeneration:testPermitTransferFromWithWitnessIncorrectTypehashStub() (gas: 43833)
TypehashGeneration:testPermitBatchTransferFromWithWitnessIncorrectTypehashStub() (gas: 57353)
TypehashGeneration:testPermitSingle() (gas: 28138)
TypehashGeneration:testPermitTransferFrom() (gas: 36511)
TypehashGeneration:testPermitTransferFromWithWitness() (gas: 43469)
TypehashGeneration:testPermitTransferFromWithWitnessIncorrectPermitData() (gas: 43436)
TypehashGeneration:testPermitTransferFromWithWitnessIncorrectTypehashStub() (gas: 43956)
2 changes: 1 addition & 1 deletion lib/forge-std
Submodule forge-std updated 48 files
+92 −0 .github/workflows/ci.yml
+29 −0 .github/workflows/sync.yml
+0 −26 .github/workflows/tests.yml
+1 −1 .gitignore
+1 −1 LICENSE-APACHE
+1 −1 LICENSE-MIT
+8 −4 README.md
+21 −0 foundry.toml
+1 −1 lib/ds-test
+16 −0 package.json
+35 −0 src/Base.sol
+20 −33 src/Script.sol
+376 −0 src/StdAssertions.sol
+231 −0 src/StdChains.sol
+675 −0 src/StdCheats.sol
+15 −0 src/StdError.sol
+92 −0 src/StdInvariant.sol
+179 −0 src/StdJson.sol
+43 −0 src/StdMath.sol
+327 −0 src/StdStorage.sol
+333 −0 src/StdStyle.sol
+198 −0 src/StdUtils.sol
+30 −765 src/Test.sol
+466 −129 src/Vm.sol
+406 −386 src/console2.sol
+105 −0 src/interfaces/IERC1155.sol
+12 −0 src/interfaces/IERC165.sol
+43 −0 src/interfaces/IERC20.sol
+190 −0 src/interfaces/IERC4626.sol
+164 −0 src/interfaces/IERC721.sol
+73 −0 src/interfaces/IMulticall3.sol
+13,248 −0 src/safeconsole.sol
+0 −12 src/test/Script.t.sol
+0 −213 src/test/StdCheats.t.sol
+0 −200 src/test/StdMath.t.sol
+463 −63 test/StdAssertions.t.sol
+160 −0 test/StdChains.t.sol
+507 −0 test/StdCheats.t.sol
+5 −11 test/StdError.t.sol
+197 −0 test/StdMath.t.sol
+46 −84 test/StdStorage.t.sol
+110 −0 test/StdStyle.t.sol
+312 −0 test/StdUtils.t.sol
+10 −0 test/compilation/CompilationScript.sol
+10 −0 test/compilation/CompilationScriptBase.sol
+10 −0 test/compilation/CompilationTest.sol
+10 −0 test/compilation/CompilationTestBase.sol
+187 −0 test/fixtures/broadcast.log.json
16 changes: 16 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "@uniswap/permit2",
"description": "Low-overhead, next generation token approval/meta-tx system to make token approvals easier, more secure, and more consistent across applications",
"version": "1.0.0",
"bugs": "https://github.com/Uniswap/permit2/issues",
"keywords": [
"ethereum",
"permit2",
"uniswap"
],
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/Uniswap/permit2.git"
}
}
6 changes: 4 additions & 2 deletions src/EIP712.sol
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import {IEIP712} from "./interfaces/IEIP712.sol";

/// @notice EIP712 helpers for permit2
/// @dev Maintains cross-chain replay protection in the event of a fork
/// @dev Reference: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol
contract EIP712 {
contract EIP712 is IEIP712 {
// Cache the domain separator as an immutable value, but also store the chain id that it
// corresponds to, in order to invalidate the cached domain separator if the chain id changes.
bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
Expand All @@ -21,7 +23,7 @@ contract EIP712 {

/// @notice Returns the domain separator for the current chain.
/// @dev Uses cached version if chainid and address are unchanged from construction.
function DOMAIN_SEPARATOR() public view returns (bytes32) {
function DOMAIN_SEPARATOR() public view override returns (bytes32) {
return block.chainid == _CACHED_CHAIN_ID
? _CACHED_DOMAIN_SEPARATOR
: _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME);
Expand Down
6 changes: 4 additions & 2 deletions src/interfaces/IAllowanceTransfer.sol
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
pragma solidity ^0.8.0;

import {IEIP712} from "./IEIP712.sol";

/// @title AllowanceTransfer
/// @notice Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts
/// @dev Requires user's token approval on the Permit2 contract
interface IAllowanceTransfer {
interface IAllowanceTransfer is IEIP712 {
/// @notice Thrown when an allowance on a token has expired.
/// @param deadline The timestamp at which the allowed amount is no longer valid
error AllowanceExpired(uint256 deadline);
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/IDAIPermit.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
pragma solidity ^0.8.0;

interface IDAIPermit {
/// @param holder The address of the token owner.
Expand Down
6 changes: 6 additions & 0 deletions src/interfaces/IEIP712.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IEIP712 {
function DOMAIN_SEPARATOR() external view returns (bytes32);
}
2 changes: 1 addition & 1 deletion src/interfaces/IERC1271.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
pragma solidity ^0.8.0;

interface IERC1271 {
/// @dev Should return whether the signature provided is valid for the provided data
Expand Down
11 changes: 11 additions & 0 deletions src/interfaces/IPermit2.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {ISignatureTransfer} from "./ISignatureTransfer.sol";
import {IAllowanceTransfer} from "./IAllowanceTransfer.sol";

/// @notice Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.
/// @dev Users must approve Permit2 before calling any of the transfer functions.
interface IPermit2 is ISignatureTransfer, IAllowanceTransfer {
// IPermit2 unifies the two interfaces so users have maximal flexibility with their approval.
}
6 changes: 4 additions & 2 deletions src/interfaces/ISignatureTransfer.sol
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
pragma solidity ^0.8.0;

import {IEIP712} from "./IEIP712.sol";

/// @title SignatureTransfer
/// @notice Handles ERC20 token transfers through signature based actions
/// @dev Requires user's token approval on the Permit2 contract
interface ISignatureTransfer {
interface ISignatureTransfer is IEIP712 {
/// @notice Thrown when the requested amount for a transfer is larger than the permissioned amount
/// @param maxAmount The maximum amount a spender can request to transfer
error InvalidAmount(uint256 maxAmount);
Expand Down
Loading

0 comments on commit 687b37c

Please sign in to comment.