Skip to content

Commit 6c91122

Browse files
authored
update v4-periphery, change remapping, and update deploy test (#361)
* update v4-periphery, change remapping, and update deploy test * make immutables public * little fixes * last one * make only migrator immutables public
1 parent cc0e7c0 commit 6c91122

28 files changed

+70
-64
lines changed

contracts/base/Dispatcher.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {V3ToV4Migrator} from '../modules/V3ToV4Migrator.sol';
1010
import {Callbacks} from '../base/Callbacks.sol';
1111
import {Commands} from '../libraries/Commands.sol';
1212
import {LockAndMsgSender} from './LockAndMsgSender.sol';
13-
import {ERC20} from 'solmate/tokens/ERC20.sol';
13+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
1414
import {IAllowanceTransfer} from 'permit2/src/interfaces/IAllowanceTransfer.sol';
1515
import {IERC721Permit} from '@uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol';
1616
import {Constants} from '../libraries/Constants.sol';

contracts/modules/MigratorImmutables.sol

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ struct MigratorParameters {
1111

1212
contract MigratorImmutables {
1313
/// @notice v3PositionManager address
14-
INonfungiblePositionManager internal immutable V3_POSITION_MANAGER;
15-
IPositionManager internal immutable V4_POSITION_MANAGER;
14+
INonfungiblePositionManager public immutable V3_POSITION_MANAGER;
15+
/// @notice v4PositionManager address
16+
IPositionManager public immutable V4_POSITION_MANAGER;
1617

1718
constructor(MigratorParameters memory params) {
1819
V3_POSITION_MANAGER = INonfungiblePositionManager(params.v3PositionManager);

contracts/modules/Payments.sol

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ pragma solidity ^0.8.24;
33

44
import {Constants} from '../libraries/Constants.sol';
55
import {PaymentsImmutables} from '../modules/PaymentsImmutables.sol';
6-
import {SafeTransferLib} from 'solmate/utils/SafeTransferLib.sol';
7-
import {ERC20} from 'solmate/tokens/ERC20.sol';
6+
import {SafeTransferLib} from 'solmate/src/utils/SafeTransferLib.sol';
7+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
88

99
/// @title Payments contract
1010
/// @notice Performs various operations around the payment of ETH and tokens

contracts/modules/uniswap/UniswapImmutables.sol

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ struct UniswapParameters {
99
}
1010

1111
contract UniswapImmutables {
12-
/// @dev The address of UniswapV2Factory
12+
/// @notice The address of UniswapV2Factory
1313
address internal immutable UNISWAP_V2_FACTORY;
1414

15-
/// @dev The UniswapV2Pair initcodehash
15+
/// @notice The UniswapV2Pair initcodehash
1616
bytes32 internal immutable UNISWAP_V2_PAIR_INIT_CODE_HASH;
1717

18-
/// @dev The address of UniswapV3Factory
18+
/// @notice The address of UniswapV3Factory
1919
address internal immutable UNISWAP_V3_FACTORY;
2020

21-
/// @dev The UniswapV3Pool initcodehash
21+
/// @notice The UniswapV3Pool initcodehash
2222
bytes32 internal immutable UNISWAP_V3_POOL_INIT_CODE_HASH;
2323

2424
constructor(UniswapParameters memory params) {

contracts/modules/uniswap/v2/V2SwapRouter.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {UniswapImmutables} from '../UniswapImmutables.sol';
77
import {Payments} from '../../Payments.sol';
88
import {Permit2Payments} from '../../Permit2Payments.sol';
99
import {Constants} from '../../../libraries/Constants.sol';
10-
import {ERC20} from 'solmate/tokens/ERC20.sol';
10+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
1111

1212
/// @title Router for Uniswap v2 Trades
1313
abstract contract V2SwapRouter is UniswapImmutables, Permit2Payments {

contracts/modules/uniswap/v3/V3SwapRouter.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {Constants} from '../../../libraries/Constants.sol';
1010
import {Permit2Payments} from '../../Permit2Payments.sol';
1111
import {UniswapImmutables} from '../UniswapImmutables.sol';
1212
import {Constants} from '../../../libraries/Constants.sol';
13-
import {ERC20} from 'solmate/tokens/ERC20.sol';
13+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
1414

1515
/// @title Router for Uniswap v3 Trades
1616
abstract contract V3SwapRouter is UniswapImmutables, Permit2Payments, IUniswapV3SwapCallback {

contracts/test/ImportsForTypechain.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ pragma solidity ^0.8.17;
33

44
import {PositionManager} from '@uniswap/v4-periphery/src/PositionManager.sol';
55
import {PoolManager} from '@uniswap/v4-core/src/PoolManager.sol';
6-
import {ERC721} from 'solmate/tokens/ERC721.sol';
6+
import {ERC721} from 'solmate/src/tokens/ERC721.sol';
77
import {ERC6909} from '@uniswap/v4-core/src/ERC6909.sol';
88

99
// this contract only exists to pull PositionManager and PoolManager into the hardhat build pipeline

contracts/test/MintableERC20.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: GPL-3.0-or-later
22
pragma solidity ^0.8.15;
33

4-
import {ERC20} from 'solmate/tokens/ERC20.sol';
4+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
55

66
contract MintableERC20 is ERC20 {
77
constructor(uint256 amountToMint) ERC20('test', 'TEST', 18) {

contracts/test/ReenteringWETH.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: GPL-3.0-or-later
22
pragma solidity ^0.8.15;
33

4-
import {ERC20} from 'solmate/tokens/ERC20.sol';
4+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
55

66
contract ReenteringWETH is ERC20 {
77
error NotAllowedReenter();

lib/v4-periphery

Submodule v4-periphery updated 71 files

remappings.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
solmate/=lib/solmate/src/
1+
solmate/=lib/solmate/
22
permit2/=lib/permit2/
33
forge-std/=lib/forge-std/src/
44
@openzeppelin/contracts=node_modules/@openzeppelin/contracts

test/foundry-tests/UniswapV2.t.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ pragma solidity ^0.8.15;
33

44
import 'forge-std/Test.sol';
55
import {IPermit2} from 'permit2/src/interfaces/IPermit2.sol';
6-
import {ERC20} from 'solmate/tokens/ERC20.sol';
6+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
77
import {IUniswapV2Factory} from '@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol';
88
import {IUniswapV2Pair} from '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
99
import {UniversalRouter} from '../../contracts/UniversalRouter.sol';

test/foundry-tests/UniversalRouter.t.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {MockERC20} from './mock/MockERC20.sol';
1010
import {Callbacks} from '../../contracts/base/Callbacks.sol';
1111
import {ExampleModule} from '../../contracts/test/ExampleModule.sol';
1212
import {RouterParameters} from '../../contracts/base/RouterImmutables.sol';
13-
import {ERC20} from 'solmate/tokens/ERC20.sol';
13+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
1414
import 'permit2/src/interfaces/IAllowanceTransfer.sol';
1515
import {IERC165} from '@openzeppelin/contracts/utils/introspection/IERC165.sol';
1616

test/foundry-tests/mock/MockERC20.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.24;
33

4-
import {ERC20} from 'solmate/tokens/ERC20.sol';
4+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
55

66
contract MockERC20 is ERC20 {
77
constructor() ERC20('TEST', 'test', 18) {}

test/foundry-tests/uniswapTokens/v2DaiWeth.t.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.8.15;
33

44
import 'forge-std/Test.sol';
5-
import {ERC20} from 'solmate/tokens/ERC20.sol';
5+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
66
import {UniswapV2Test} from '../UniswapV2.t.sol';
77

88
contract V2DaiWeth is UniswapV2Test {

test/foundry-tests/uniswapTokens/v2WethApe.t.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.8.15;
33

44
import 'forge-std/Test.sol';
5-
import {ERC20} from 'solmate/tokens/ERC20.sol';
5+
import {ERC20} from 'solmate/src/tokens/ERC20.sol';
66
import {UniswapV2Test} from '../UniswapV2.t.sol';
77

88
contract V2WethApe is UniswapV2Test {

test/integration-tests/CheckOwnership.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import hre from 'hardhat'
88
import deployUniversalRouter from './shared/deployUniversalRouter'
99
import { findCustomErrorSelector } from './shared/parseEvents'
1010
import { BigNumber, Contract } from 'ethers'
11-
import { abi as TOKEN_ABI } from '../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
11+
import { abi as TOKEN_ABI } from '../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
1212
const { ethers } = hre
1313

1414
describe('Check Ownership', () => {

test/integration-tests/Uniswap.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Pair } from '@uniswap/v2-sdk'
33
import { expect } from './shared/expect'
44
import { BigNumber, BigNumberish } from 'ethers'
55
import { IPermit2, UniversalRouter } from '../../typechain'
6-
import { abi as TOKEN_ABI } from '../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
6+
import { abi as TOKEN_ABI } from '../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
77
import { resetFork, WETH, DAI, USDC, USDT, PERMIT2 } from './shared/mainnetForkHelpers'
88
import {
99
ADDRESS_THIS,

test/integration-tests/UniversalRouter.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { UniversalRouter, ERC20, IWETH9, IPermit2 } from '../../typechain'
22
import { Pair } from '@uniswap/v2-sdk'
33
import { expect } from './shared/expect'
44
import { abi as ROUTER_ABI } from '../../artifacts/contracts/UniversalRouter.sol/UniversalRouter.json'
5-
import { abi as TOKEN_ABI } from '../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
5+
import { abi as TOKEN_ABI } from '../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
66
import { abi as WETH_ABI } from '../../artifacts/contracts/interfaces/external/IWETH9.sol/IWETH9.json'
77

88
import deployUniversalRouter from './shared/deployUniversalRouter'

test/integration-tests/V3ToV4Migration.test.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { Contract } from '@ethersproject/contracts'
22
import { expect } from './shared/expect'
33
import { BigNumber } from 'ethers'
4-
import { UniversalRouter, INonfungiblePositionManager } from '../../typechain'
5-
import { abi as TOKEN_ABI } from '../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
4+
import { UniversalRouter, INonfungiblePositionManager, PositionManager } from '../../typechain'
5+
import { abi as TOKEN_ABI } from '../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
66
import { resetFork, WETH, DAI, USDC, V3_NFT_POSITION_MANAGER } from './shared/mainnetForkHelpers'
77
import { ZERO_ADDRESS, ALICE_ADDRESS, MAX_UINT, MAX_UINT128 } from './shared/constants'
88
import { expandTo18DecimalsBN, expandTo6DecimalsBN } from './shared/helpers'
@@ -26,6 +26,8 @@ describe('V3 to V4 Migration Tests:', () => {
2626
let usdcContract: Contract
2727
let planner: RoutePlanner
2828
let v3NFTPositionManager: INonfungiblePositionManager
29+
let v4PositionManagerAddress: string
30+
let v4PositionManager: PositionManager
2931

3032
let tokenIdv3: BigNumber
3133

@@ -43,6 +45,9 @@ describe('V3 to V4 Migration Tests:', () => {
4345
usdcContract = new ethers.Contract(USDC.address, TOKEN_ABI, bob)
4446
v3NFTPositionManager = V3_NFT_POSITION_MANAGER.connect(bob) as INonfungiblePositionManager
4547
router = (await deployUniversalRouter()) as UniversalRouter
48+
v4PositionManagerAddress = await router.V4_POSITION_MANAGER()
49+
v4PositionManager = (await ethers.getContractAt('PositionManager', v4PositionManagerAddress)) as PositionManager
50+
4651
planner = new RoutePlanner()
4752

4853
// alice gives bob some tokens

test/integration-tests/gas-tests/CheckOwnership.gas.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { ALICE_ADDRESS, DEADLINE } from './../shared/constants'
66
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'
77
import hre from 'hardhat'
88
import deployUniversalRouter from './../shared/deployUniversalRouter'
9-
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
9+
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
1010
const { ethers } = hre
1111

1212
describe('Check Ownership Gas', () => {

test/integration-tests/gas-tests/Payments.gas.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { Contract } from '@ethersproject/contracts'
2-
import { UniversalRouter } from '../../../typechain'
3-
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
2+
import { UniversalRouter, PositionManager } from '../../../typechain'
3+
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
44
import { resetFork, DAI, WETH } from '../shared/mainnetForkHelpers'
55
import { ALICE_ADDRESS, DEADLINE, ETH_ADDRESS, ONE_PERCENT_BIPS } from '../shared/constants'
66
import { expandTo18DecimalsBN } from '../shared/helpers'

test/integration-tests/gas-tests/Uniswap.gas.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
} from '../shared/swapRouter02Helpers'
2020
import { BigNumber, BigNumberish } from 'ethers'
2121
import { IPermit2, UniversalRouter } from '../../../typechain'
22-
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
22+
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
2323
import { approveAndExecuteSwapRouter02, resetFork, WETH, DAI, USDC, USDT, PERMIT2 } from '../shared/mainnetForkHelpers'
2424
import {
2525
ADDRESS_THIS,

test/integration-tests/gas-tests/UniversalRouter.gas.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { UniversalRouter, IWETH9, ERC20 } from '../../../typechain'
22
import { expect } from '../shared/expect'
33
import { ALICE_ADDRESS } from '../shared/constants'
4-
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
4+
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
55
import { abi as WETH_ABI } from '../../../artifacts/contracts/interfaces/external/IWETH9.sol/IWETH9.json'
66
import { resetFork, WETH, DAI } from '../shared/mainnetForkHelpers'
77
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'

test/integration-tests/gas-tests/V3ToV4Migration.gas.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import snapshotGasCost from '@uniswap/snapshot-gas-cost'
33
import deployUniversalRouter from '../shared/deployUniversalRouter'
44
import { BigNumber } from 'ethers'
55
import { UniversalRouter, INonfungiblePositionManager } from '../../../typechain'
6-
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/tokens/ERC20.sol/ERC20.json'
6+
import { abi as TOKEN_ABI } from '../../../artifacts/solmate/src/tokens/ERC20.sol/ERC20.json'
77
import { resetFork, WETH, DAI, USDC, V3_NFT_POSITION_MANAGER } from '../shared/mainnetForkHelpers'
88
import { ALICE_ADDRESS, DEADLINE, MAX_UINT, MAX_UINT128 } from '../shared/constants'
99
import { expandTo18DecimalsBN, expandTo6DecimalsBN } from '../shared/helpers'

0 commit comments

Comments
 (0)