Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gasless flow Permit2Proxy (v1.0.0) [Permit2Proxy v1.0.0] #782

Merged
merged 84 commits into from
Nov 28, 2024
Merged
Show file tree
Hide file tree
Changes from 73 commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
e4c5947
Add Permit2Proxy
ezynda3 Aug 22, 2024
797e772
Add Permit2Proxy
ezynda3 Aug 22, 2024
48b9703
forge install: Permit2
ezynda3 Aug 22, 2024
9795b16
Get basic test working...
ezynda3 Aug 23, 2024
745c5c7
Add more basic tests
ezynda3 Aug 26, 2024
e186436
Remove superfluous receiver param
ezynda3 Aug 26, 2024
143d4c2
Add utility method for getting a valid and working msgHash to sign
ezynda3 Aug 26, 2024
779bd8b
Change name to be more specific
ezynda3 Aug 26, 2024
f36a67e
Add Permit "v1" functionality
ezynda3 Aug 26, 2024
48de477
Add Permit "v1" tests
ezynda3 Aug 26, 2024
d119ca9
Add missing comments
ezynda3 Aug 26, 2024
484c918
Flesh out demo script
ezynda3 Aug 26, 2024
f582cbc
Finish demo script
ezynda3 Aug 27, 2024
9785369
Cleanup and comments
ezynda3 Aug 27, 2024
4cd03e0
Fix log
ezynda3 Aug 27, 2024
f18dab6
Remove extra files
ezynda3 Aug 27, 2024
0eaa7c8
Remove extra remapping
ezynda3 Aug 27, 2024
a3e6f5d
Remove unneeded lib
ezynda3 Aug 27, 2024
cfd1977
Add official Permit2 addresses
ezynda3 Aug 27, 2024
db2f0ff
Merge branch 'main' into gasless-revisited
ezynda3 Aug 28, 2024
e7395b2
Allow only signer to call using EIP2612
ezynda3 Aug 29, 2024
8364ac7
Merge branch 'gasless-revisited' of github.com:lifinance/contracts in…
ezynda3 Aug 29, 2024
5d772b0
Bind Permit2Proxy to a single diamond
ezynda3 Aug 29, 2024
2f8e953
Update deploy script
ezynda3 Aug 29, 2024
3d39c31
Implement non-gasless Permit2 flow
ezynda3 Aug 29, 2024
af38e51
Redeploy to staging and update demo script
ezynda3 Aug 29, 2024
056a8c2
Update comments and remove unneeded events/errors
ezynda3 Aug 30, 2024
1755f86
Add utility methods for determining the next valid nonce
ezynda3 Aug 30, 2024
17e5da3
Redeploy and update demo script
ezynda3 Aug 30, 2024
476ba04
Add documentation
ezynda3 Aug 30, 2024
10b6204
Fixes
ezynda3 Sep 2, 2024
f5f566d
Change witness type to be consistent with the rest of the codebase
ezynda3 Sep 3, 2024
be50801
Remove unneeded whitelist
ezynda3 Sep 3, 2024
671c048
Fixes
ezynda3 Sep 4, 2024
54ece21
Fixes
ezynda3 Sep 4, 2024
f277666
Boost test coverage
ezynda3 Sep 4, 2024
e40f49a
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Sep 6, 2024
010c923
More fixes
ezynda3 Sep 6, 2024
4397f59
More fixes
ezynda3 Sep 6, 2024
0e3debb
Merge branch 'main' into gasless-revisited
0xDEnYO Sep 9, 2024
5e64b4c
Merge branch 'gasless-revisited' of github.com:lifinance/contracts in…
0xDEnYO Sep 9, 2024
a9cb08a
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Sep 19, 2024
3eaf8ba
removes unused imports (audit issue#2)
0xDEnYO Sep 19, 2024
2ad55fa
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Sep 26, 2024
c3ad6f5
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Sep 30, 2024
976966d
adds WithdrawablePeriphery base contract to token withdrawals
0xDEnYO Sep 30, 2024
4a6e336
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Oct 7, 2024
b1ebb1c
audit report added
0xDEnYO Oct 7, 2024
59a356c
Update src/Periphery/Permit2Proxy.sol
0xDEnYO Oct 7, 2024
a40f709
Update src/Periphery/Permit2Proxy.sol
0xDEnYO Oct 7, 2024
9772ba1
rename test file to match naming convention
0xDEnYO Oct 10, 2024
b03e658
adds WithdrawablePeriphery base contract for token withdrawals
0xDEnYO Oct 10, 2024
bcf24aa
fix test
0xDEnYO Oct 10, 2024
40bf7ee
adds version tag to contract
0xDEnYO Oct 10, 2024
233a703
Merge branch 'withdrawable-periphery' into gasless-revisited
0xDEnYO Oct 10, 2024
552a080
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Oct 13, 2024
6200a1b
target state updated
0xDEnYO Oct 13, 2024
d95e58f
deploy script fixed
0xDEnYO Oct 13, 2024
959e1c9
deployed to PROD (arb, opt, pol)
0xDEnYO Oct 13, 2024
0565895
fix test
0xDEnYO Oct 14, 2024
6ab55d4
Update Witness Type Hash to match convention
ezynda3 Oct 15, 2024
2d8537e
Deploy update to staging
ezynda3 Oct 16, 2024
7c2ab14
update audit report (incl fixed typehash issue)
0xDEnYO Oct 18, 2024
369e8a2
Fix stype string as well
ezynda3 Oct 21, 2024
2da847b
Redeploy to staging
ezynda3 Oct 21, 2024
426807e
Update Permit2Proxy.t.sol
ezynda3 Nov 1, 2024
6b9c642
add demo for permit2 flow without witness
maxklenk Nov 4, 2024
b0b4bda
clean permit2 generation
maxklenk Nov 4, 2024
181566e
simplify signature generation
maxklenk Nov 9, 2024
8b6f059
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Nov 25, 2024
6113466
remove old openzeppelin lib
0xDEnYO Nov 25, 2024
f07b9a1
forge install: openzeppelin-contracts
0xDEnYO Nov 25, 2024
39aee6b
update audit log and report
0xDEnYO Nov 25, 2024
47c77d2
target state updated
0xDEnYO Nov 25, 2024
9c6f37b
deployed to various PROD networks (excl zksync)
0xDEnYO Nov 25, 2024
4e02a15
verified Permit2Proxy on base
0xDEnYO Nov 25, 2024
3794dbe
deploy to zksync
ezynda3 Nov 25, 2024
30e9704
diamond logs updated
0xDEnYO Nov 25, 2024
ec97ef2
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Nov 26, 2024
78a702b
bugfix in fixAuditLabel action
0xDEnYO Nov 26, 2024
c803f2d
fix logs
ezynda3 Nov 26, 2024
4bdfa05
fix test
ezynda3 Nov 26, 2024
1cf74ca
Merge branch 'main' of github.com:lifinance/contracts into gasless-re…
0xDEnYO Nov 28, 2024
ddfb557
Merge branch 'gasless-revisited' of github.com:lifinance/contracts in…
0xDEnYO Nov 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@
[submodule "lib/solady"]
path = lib/solady
url = https://github.com/Vectorized/solady
[submodule "lib/Permit2"]
path = lib/Permit2
url = https://github.com/Uniswap/Permit2
18 changes: 14 additions & 4 deletions audit/auditLog.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,29 @@
"auditorGitHandle": "sujithsomraaj",
"auditReportPath": "./audit/reports/2024.11.05_EmergencyPauseFacet_ReAudit.pdf",
"auditCommitHash": "da61880ba3847c07c35b64a78b957ff845ec18ac"
},
"audit20241122": {
"auditCompletedOn": "22.11.2024",
"auditedBy": "Sujith Somraaj (individual security researcher)",
"auditorGitHandle": "sujithsomraaj",
"auditReportPath": "./audit/reports/2024.11.22_Permit2Proxy.pdf",
"auditCommitHash": "0e3debb78abcdf9a9f934115338b611e16b039a0"
}
},
"auditedContracts": {
"EmergencyPauseFacet": {
"1.0.0": ["audit20240913"],
"1.0.1": ["audit20241105"]
},
"AcrossFacetV3": {
"1.0.0": ["audit20241007"]
},
"AcrossFacetPackedV3": {
"1.0.0": ["audit20241007"]
},
"EmergencyPauseFacet": {
"1.0.0": ["audit20240913"],
"1.0.1": ["audit20241105"]
},
"Permit2Proxy": {
"1.0.0": ["audit20241122"]
},
"ReceiverAcrossV3": {
"1.0.0": ["audit20241007"]
},
Expand Down
Binary file added audit/reports/2024.11.22_Permit2Proxy.pdf
Binary file not shown.
31 changes: 31 additions & 0 deletions config/permit2Proxy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"mainnet": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"arbitrum": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"aurora": "",
"avalanche": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"base": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"blast": "0x000000000022d473030f116ddee9f6b43ac78ba3",
"boba": "",
"bsc": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"celo": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"fantom": "",
"fraxtal": "",
"fuse": "",
"gnosis": "",
"gravity": "",
"immutablezkevm": "",
"linea": "",
"mantle": "",
"metis": "",
"mode": "",
"moonbeam": "",
"moonriver": "",
"optimism": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"polygon": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"polygonzkevm": "",
"rootstock": "",
"scroll": "",
"sei": "",
"taiko": "",
"zksync": "0x0000000000225e31d15943971f47ad3022f714fa"
}
68 changes: 68 additions & 0 deletions deployments/_deployments_log_file.json
Original file line number Diff line number Diff line change
Expand Up @@ -24602,5 +24602,73 @@
]
}
}
},
"Permit2Proxy": {
"arbitrum": {
"staging": {
"1.0.0": [
{
"ADDRESS": "0x6FC01BC9Ff6Cdab694Ec8Ca41B21a2F04C8c37E5",
"OPTIMIZER_RUNS": "1000000",
"TIMESTAMP": "2024-10-21 09:31:13",
"CONSTRUCTOR_ARGS": "0x000000000000000000000000d3b2b0ac0afdd0d166a495f5e9fca4ecc715a782000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000009e606d0d2bba344b911e2f4eab95d9235a83fe15",
"SALT": "",
"VERIFIED": "true"
}
]
},
"production": {
"1.0.0": [
{
"ADDRESS": "0x5c6e208468213999CB0Be4bAB6d1492c3139A4EE",
"OPTIMIZER_RUNS": "1000000",
"TIMESTAMP": "2024-10-14 06:57:18",
"CONSTRUCTOR_ARGS": "0x0000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000009e606d0d2bba344b911e2f4eab95d9235a83fe15",
"SALT": "",
"VERIFIED": "true"
}
]
}
},
"polygon": {
"production": {
"1.0.0": [
{
"ADDRESS": "0x5c6e208468213999CB0Be4bAB6d1492c3139A4EE",
"OPTIMIZER_RUNS": "1000000",
"TIMESTAMP": "2024-10-14 06:55:51",
"CONSTRUCTOR_ARGS": "0x0000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000008bcc385948c73736423d38cc567cfede0f1826a3",
"SALT": "",
"VERIFIED": "true"
}
]
},
"staging": {
"1.0.0": [
{
"ADDRESS": "0x6FC01BC9Ff6Cdab694Ec8Ca41B21a2F04C8c37E5",
"OPTIMIZER_RUNS": "1000000",
"TIMESTAMP": "2024-10-21 09:32:45",
"CONSTRUCTOR_ARGS": "0x000000000000000000000000d3b2b0ac0afdd0d166a495f5e9fca4ecc715a782000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000008bcc385948c73736423d38cc567cfede0f1826a3",
"SALT": "",
"VERIFIED": "true"
}
]
}
},
"optimism": {
"production": {
"1.0.0": [
{
"ADDRESS": "0x5c6e208468213999CB0Be4bAB6d1492c3139A4EE",
"OPTIMIZER_RUNS": "1000000",
"TIMESTAMP": "2024-10-14 06:58:45",
"CONSTRUCTOR_ARGS": "0x0000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000a8892ea3fddef2aa8afb1e3643a3284f978a5114",
"SALT": "",
"VERIFIED": "true"
}
]
}
}
}
}
2 changes: 1 addition & 1 deletion deployments/arbitrum.diamond.json
Original file line number Diff line number Diff line change
Expand Up @@ -159,4 +159,4 @@
"TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
}
}
}
}
1 change: 1 addition & 0 deletions deployments/arbitrum.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
"ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
"LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc",
"Permit2Proxy": "0x5c6e208468213999CB0Be4bAB6d1492c3139A4EE",
"EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61",
"AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7",
"ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072",
Expand Down
1 change: 1 addition & 0 deletions deployments/arbitrum.staging.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"LiFuelFeeCollector": "0x94EA56D8049e93E0308B9c7d1418Baf6A7C68280",
"TokenWrapper": "0xF63b27AE2Dc887b88f82E2Cc597d07fBB2E78E70",
"EmergencyPauseFacet": "0x17Bb203F42d8e404ac7E8dB6ff972B7E8473850b",
"Permit2Proxy": "0x6FC01BC9Ff6Cdab694Ec8Ca41B21a2F04C8c37E5",
"AcrossFacetV3": "0x6124C65B6264bE13f059b7C3A891a5b77DA8Bd95",
"ReceiverAcrossV3": "0x3877f47B560819E96BBD7e7700a02dfACe36D696",
"AcrossFacetPackedV3": "0x4352459F6BE1C7D1278F8c34Bb598b0feeB50f8b"
Expand Down
5 changes: 3 additions & 2 deletions deployments/optimism.diamond.json
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,8 @@
"ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072",
"ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
"RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97",
"TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
"TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d",
"Permit2Proxy": "0x5c6e208468213999CB0Be4bAB6d1492c3139A4EE"
}
}
}
}
1 change: 1 addition & 0 deletions deployments/optimism.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
"ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
"LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc",
"Permit2Proxy": "0x5c6e208468213999CB0Be4bAB6d1492c3139A4EE",
"EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61",
"AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7",
"ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072",
Expand Down
2 changes: 1 addition & 1 deletion deployments/polygon.diamond.json
Original file line number Diff line number Diff line change
Expand Up @@ -159,4 +159,4 @@
"TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
}
}
}
}
2 changes: 1 addition & 1 deletion deployments/polygon.diamond.staging.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,4 +136,4 @@
"TokenWrapper": "0xF63b27AE2Dc887b88f82E2Cc597d07fBB2E78E70"
}
}
}
}
3 changes: 2 additions & 1 deletion deployments/polygon.staging.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,6 @@
"CelerCircleBridgeFacet": "0x371E073f6A09DCBEE1D2Ac56E940F878a0Ba9DAE",
"HopFacetOptimized": "0xf82135385765f1324257ffF74489F16382EBBb8A",
"SymbiosisFacet": "0x21571D628B0bCBeb954D5933A604eCac35bAF2c7",
"AcrossFacetV3": "0xe2e5428F972d9C0a5Ba433e0c402752b472dB248"
"AcrossFacetV3": "0xe2e5428F972d9C0a5Ba433e0c402752b472dB248",
"Permit2Proxy": "0x6FC01BC9Ff6Cdab694Ec8Ca41B21a2F04C8c37E5"
}
126 changes: 126 additions & 0 deletions docs/Permit2Proxy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# Permit2 Proxy

## Description

Periphery contract which enables gasless and semi-gasless transaction flows
enabled through ERC20 Permit and Uniswap's Permit2

## How To Use

The contract has a number of methods for making gasless and semi-gasless calls
as well as a few helpful utility methods.

The following methods are available:

This method is used to execute a transaction where the approval is granted
using an ERC20 Permit signature. It can only be called by the signer in order
to prevent front-running attacks.

```solidity
/// @notice Allows to bridge tokens through a LI.FI diamond contract using
/// an EIP2612 gasless permit (only works with tokenAddresses that
/// implement EIP2612) (in contrast to Permit2, calldata and diamondAddress
/// are not signed by the user and could therefore be replaced by the user)
/// Can only be called by the permit signer to prevent front-running.
/// @param tokenAddress Address of the token to be bridged
/// @param amount Amount of tokens to be bridged
/// @param deadline Transaction must be completed before this timestamp
/// @param v User signature (recovery ID)
/// @param r User signature (ECDSA output)
/// @param s User signature (ECDSA output)
/// @param diamondCalldata Address of the token to be bridged
function callDiamondWithEIP2612Signature(
address tokenAddress,
uint256 amount,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s,
bytes calldata diamondCalldata
) public payable
````
ezynda3 marked this conversation as resolved.
Show resolved Hide resolved

This method is used to execute a transaction where the approval is granted via
Uniswap's Permit2 contract. It can only be called by the signer in order to
prevent front-running attacks.

```solidity
/// @notice Allows to bridge tokens of one type through a LI.FI diamond
/// contract using Uniswap's Permit2 contract and a user signature
/// that verifies allowance. The calldata can be changed by the
/// user. Can only be called by the permit signer to prevent
/// front-running.
/// @param _diamondCalldata the calldata to execute
/// @param _permit the Uniswap Permit2 parameters
/// @param _signature the signature giving approval to transfer tokens
function callDiamondWithPermit2(
bytes calldata _diamondCalldata,
ISignatureTransfer.PermitTransferFrom calldata _permit,
bytes calldata _signature
) external payable
```
ezynda3 marked this conversation as resolved.
Show resolved Hide resolved

This method enables a gasless flow by allowing a user to sign a Uniswap Permit2
message hash which includes a "witness" type. This extra type restricts which
calldata can be called during execution and cannot be changed. Anyone with the
signature can execute the transaction on behalf of the signer.

```solidity
/// @notice Allows to bridge tokens of one type through a LI.FI diamond
/// contract using Uniswap's Permit2 contract and a user signature
/// that verifies allowance, diamondAddress and diamondCalldata
/// @param _diamondCalldata the calldata to execute
/// @param _signer the signer giving permission to transfer tokens
/// @param _permit the Uniswap Permit2 parameters
/// @param _signature the signature giving approval to transfer tokens
function callDiamondWithPermit2Witness(
bytes calldata _diamondCalldata,
address _signer,
ISignatureTransfer.PermitTransferFrom calldata _permit,
bytes calldata _signature
) external payable
```

There are a few utility methods to make it easier to generate the necessary
signature for the gasless flow.

Calling this method will return a valid message hash that can then be signed
in order to be executed later by another wallet.

```solidity
/// @notice utitlity method for constructing a valid Permit2 message hash
/// @param _diamondCalldata the calldata to execute
/// @param _assetId the address of the token to approve
/// @param _amount amount of tokens to approve
/// @param _nonce the nonce to use
/// @param _deadline the expiration deadline
function getPermit2MsgHash(
bytes calldata _diamondCalldata,
address _assetId,
uint256 _amount,
uint256 _nonce,
uint256 _deadline
) external view returns (bytes32 msgHash)
```
ezynda3 marked this conversation as resolved.
Show resolved Hide resolved

Permit2 nonces are non-sequential and are a bit complicated to work with. The
following utility methods allow you to fetch the next valid nonce or sequence
of nonces for use when generating Permit2 signatures.

```solidity
/// @notice Finds the next valid nonce for a user, starting from 0.
/// @param owner The owner of the nonces
/// @return nonce The first valid nonce starting from 0
function nextNonce(address owner) external view returns (uint256 nonce)

/// @notice Finds the next valid nonce for a user, after from a given nonce.
/// @dev This can be helpful if you're signing multiple nonces in a row and
/// need the next nonce to sign but the start one is still valid.
/// @param owner The owner of the nonces
/// @param start The nonce to start from
/// @return nonce The first valid nonce after the given nonce
function nextNonceAfter(
address owner,
uint256 start
) external view returns (uint256 nonce)
```
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@
- [Receiver](./Receiver.md)
- [ReceiverStargateV2](./ReceiverStargateV2.md)
- [RelayerCelerIM](./RelayerCelerIM.md)
- [Permit2Proxy](./Permit2Proxy.md)
1 change: 1 addition & 0 deletions lib/Permit2
Submodule Permit2 added at cc56ad
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"@safe-global/safe-apps-sdk": "^9.0.0",
"@safe-global/safe-core-sdk-types": "^4.1.0",
"@uma/sdk": "^0.22.1",
"@uniswap/permit2-sdk": "^1.3.0",
"@uniswap/sdk": "^3.0.3",
"chalk": "4.1.2",
"citty": "^0.1.6",
Expand Down
2 changes: 1 addition & 1 deletion remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ celer-network/=lib/sgn-v2-contracts/
create3-factory/=lib/create3-factory/src/
solmate/=lib/solmate/src/
solady/=lib/solady/src/

permit2/=lib/Permit2/src/
ds-test/=lib/ds-test/src/
forge-std/=lib/forge-std/src/

Expand Down
Loading
Loading