Uniswap V3 Staker Contract Below is the technical reference for the staker contract, UniswapV3Staker.sol
Functions  stakes     function   stakes (      uint256  tokenId ,      bytes32  incentiveId    )   public   view  override  returns   ( uint160  secondsPerLiquidityInsideInitialX128 ,   uint128  liquidity ) Copy Returns information about a staked liquidity NFT
Parameters:  Name Type Description tokenIduint256 The ID of the staked token incentiveIdbytes32 The ID of the incentive for which the token is staked 
Return Values:  Name Type Description secondsPerLiquidityInsideInitialX128uint160 secondsPerLiquidity represented as a UQ32.128 liquiditybytes32 The amount of liquidity in the NFT as of the last time the rewards were computed 
constructor     function   constructor (      contract   IUniswapV3Factory  _factory ,      contract   INonfungiblePositionManager  _nonfungiblePositionManager ,      uint256  _maxIncentiveStartLeadTime ,      uint256  _maxIncentiveDuration    )   public Copy Parameters:  Name Type Description _factorycontract IUniswapV3Factory the Uniswap V3 factory _nonfungiblePositionManagercontract INonfungiblePositionManager the NFT position manager contract address _maxIncentiveStartLeadTimeuint256 the max duration of an incentive in seconds _maxIncentiveDurationuint256 the max amount of seconds into the future the incentive startTime can be set 
createIncentive     function   createIncentive (      struct   IUniswapV3Staker . IncentiveKey key ,      uint256  reward    )   external Copy Creates a new liquidity mining incentive program
Parameters:  Name Type Description keystruct IUniswapV3Staker.IncentiveKey Details of the incentive to create rewarduint256 The amount of reward tokens to be distributed 
endIncentive     function   endIncentive (      struct   IUniswapV3Staker . IncentiveKey key    )   external   returns   ( uint256  refund ) Copy Ends an incentive after the incentive end time has passed and all stakes have been withdrawn
Parameters:  Name Type Description keystruct IUniswapV3Staker.IncentiveKey Details of the incentive to end 
Return Values:  Name Type Description refunduint256 The remaining reward tokens when the incentive is ended 
onERC721Received     function   onERC721Received (    )   external   returns   ( bytes4 ) Copy Upon receiving a Uniswap V3 ERC721, creates the token deposit setting owner to from. Also stakes token
in one or more incentives if properly formatted data has a length > 0.
Whenever an {IERC721} tokenId token is transferred to this contract via {IERC721-safeTransferFrom}
by operator from from, this function is called.
It must return its Solidity selector to confirm the token transfer.
If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
The selector can be obtained in Solidity with IERC721.onERC721Received.selector.
transferDeposit     function   transferDeposit (      uint256  tokenId ,      address  to    )   external Copy Transfers ownership of a deposit from the sender to the given recipient
Parameters:  Name Type Description tokenIduint256 The ID of the token (and the deposit) to transfer toaddress The new owner of the deposit 
withdrawToken     function   withdrawToken (      uint256  tokenId ,      address  to ,      bytes  data    )   external Copy Withdraws a Uniswap V3 LP token tokenId from this contract to the recipient to
Parameters:  Name Type Description tokenIduint256 The unique identifier of an Uniswap V3 LP token toaddress The address where the LP token will be sent databytes An optional data array that will be passed along to the to address via the NFT safeTransferFrom 
stakeToken     function   stakeToken (      struct   IUniswapV3Staker . IncentiveKey key ,      uint256  tokenId    )   external Copy Stakes a Uniswap V3 LP token
Parameters:  Name Type Description keystruct IUniswapV3Staker.IncentiveKey The key of the incentive for which to stake the NFT tokenIduint256 The ID of the token to stake 
unstakeToken     function   unstakeToken (      struct   IUniswapV3Staker . IncentiveKey key ,      uint256  tokenId    )   external Copy Unstakes a Uniswap V3 LP token
Parameters:  Name Type Description keystruct IUniswapV3Staker.IncentiveKey The key of the incentive for which to unstake the NFT tokenIduint256 The ID of the token to unstake 
claimReward     function   claimReward (      contract   IERC20Minimal  rewardToken ,      address  to ,      uint256  amountRequested    )   external  override  returns   ( uint256  reward ) Copy Transfers amountRequested of accrued rewardToken rewards from the contract to the recipient to
Parameters:  Name Type Description rewardTokencontract IERC20Minimal The token being distributed as a reward toaddress The address where claimed rewards will be sent to amountRequesteduint256 The amount of reward tokens to claim. Claims entire reward amount if set to 0. 
Return Values:  Name Type Description rewarduint256 The amount of reward tokens claimed 
getRewardInfo     function   getRewardInfo (      struct   IUniswapV3Staker . IncentiveKey key ,      uint256  tokenId    )   external   view  override  returns   ( uint256  reward ,   uint160  secondsInsideX128 ) Copy Calculates the reward amount that will be received for the given stake
Parameters:  Name Type Description keystruct IUniswapV3Staker.IncentiveKey The key of the incentive tokenIduint256 The ID of the token 
Return Values:  Name Type Description rewarduint256 The reward accrued to the NFT for the given incentive thus far secondsInsideX128uint160 The seconds inside the tick range