// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {IRegistry} from "./IRegistry.sol"; import {IVotes} from "@openzeppelin/contracts/governance/utils/IVotes.sol"; interface INFTStaker is IVotes { event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function getStakedBalance(address who) external view returns (uint256); function registry() external view returns (IRegistry); function stake(uint256 _tokenId) external; function isStaked(uint256 _tokenId) external view returns (bool); function _stakeFromLock(uint256 _tokenId) external; function unstake(uint256 _tokenId) external; event StakeNFT( address indexed who, address indexed owner, uint256 tokenId, uint256 amount ); event UnstakeNFT( address indexed who, address indexed owner, uint256 tokenId, uint256 amount ); }