From ca01507eb67bde557bd1c4d843e00ab23e785c82 Mon Sep 17 00:00:00 2001 From: Tina Zheng Date: Mon, 27 Nov 2023 19:54:36 -0500 Subject: [PATCH] move custom errors inside contract + inherit from ILockCallback --- contracts/NonfungiblePositionManagerV4.sol | 14 +++++++++----- .../interfaces/INonfungiblePositionManagerV4.sol | 3 ++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/contracts/NonfungiblePositionManagerV4.sol b/contracts/NonfungiblePositionManagerV4.sol index 53c4ff31..cd10dd87 100644 --- a/contracts/NonfungiblePositionManagerV4.sol +++ b/contracts/NonfungiblePositionManagerV4.sol @@ -15,11 +15,6 @@ import {PeripheryPayments} from "./base/PeripheryPayments.sol"; import {SelfPermit} from "./base/SelfPermit.sol"; import {Multicall} from "./base/Multicall.sol"; -error InvalidTokenID(); -error NotApproved(); -error NotCleared(); -error NonexistentToken(); - contract NonfungiblePositionManagerV4 is INonfungiblePositionManagerV4, ERC721, @@ -30,6 +25,11 @@ contract NonfungiblePositionManagerV4 is { IPoolManager public immutable poolManager; + error InvalidTokenID(); + error NotApproved(); + error NotCleared(); + error NonexistentToken(); + // details about the Uniswap position struct Position { // the nonce for permits @@ -111,6 +111,10 @@ contract NonfungiblePositionManagerV4 is ); } + function lockAcquired(bytes calldata rawData) external returns (bytes memory) { + // TODO: implement this + } + /// @inheritdoc INonfungiblePositionManagerV4 function createAndInitializePoolIfNecessary(PoolKey memory poolkey, uint160 sqrtPriceX96, bytes memory initData) external diff --git a/contracts/interfaces/INonfungiblePositionManagerV4.sol b/contracts/interfaces/INonfungiblePositionManagerV4.sol index d263fc51..624e84b1 100644 --- a/contracts/interfaces/INonfungiblePositionManagerV4.sol +++ b/contracts/interfaces/INonfungiblePositionManagerV4.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.19; import {IERC721Metadata} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol"; import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; +import {ILockCallback} from "@uniswap/v4-core/contracts/interfaces/callback//ILockCallback.sol"; import {PoolKey} from "@uniswap/v4-core/contracts/types/PoolKey.sol"; import {Currency} from "@uniswap/v4-core/contracts/types/Currency.sol"; @@ -11,7 +12,7 @@ import {IPeripheryPayments} from "./IPeripheryPayments.sol"; /// @title Non-fungible token for positions /// @notice Wraps Uniswap V4 positions in a non-fungible token interface which allows for them to be transferred /// and authorized. -interface INonfungiblePositionManagerV4 is IPeripheryPayments, IERC721Metadata, IERC721Enumerable { +interface INonfungiblePositionManagerV4 is ILockCallback, IPeripheryPayments, IERC721Metadata, IERC721Enumerable { /// @notice Emitted when liquidity is increased for a position NFT /// @dev Also emitted when a token is minted /// @param tokenId The ID of the token for which liquidity was increased