/// @notice Handles Nafta flashloan to Extract UniswapV3 fees
/// @dev This function is called by Nafta contract.
/// @dev Nafta gives you the NFT and expects it back, so we need to approve it.
/// @dev Also it expects feeInWeth fee paid - so should also be approved.
/// @param nftAddress The address of NFT contract
/// @param nftId The address of NFT contract
/// @param msgSender address of the account calling the contract
/// @param data optional calldata passed into the function optional
/// @return returns a boolean true on success
function executeOperation(
) external override returns (bool) {
emit ExecuteCalled(nftAddress, nftId, feeInWeth, msgSender, data);
require(nftAddress == address(this), "Only Wrapped UNIV3 NFTs are supported");
// do the uniswap fee extraction thing
this.extractUniswapFees(nftId, msgSender);
// Approve NFT back to Nafta to return it
this.approve(msg.sender, nftId);