event NewLoanToken(address palPool, address indexed owner, address indexed palLoan, uint256 indexed tokenId);
event BurnLoanToken(address palPool, address indexed owner, address indexed palLoan, uint256 indexed tokenId);
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
function name() public view returns(string);
function symbol() public view returns(string);
function controller() public view returns(address);
function burnedToken() public view returns(address);
function balanceOf(address owner) external view returns (uint256 balance);
function ownerOf(uint256 tokenId) external view returns (address owner);
function allOwnerOf(uint256 tokenId) external view returns(address);
function loanOf(uint256 tokenId) external view returns(address);
function poolOf(uint256 tokenId) external view returns(address);
function loansOf(address owner) external view returns(address[] memory);
function tokensOf(address owner) external view returns(uint256[] memory);
function loansOfForPool(address owner, address palPool) external view returns(address[] memory);
function allTokensOf(address owner) external view returns(uint256[] memory);
function allLoansOf(address owner) external view returns(address[] memory);
function allLoansOfForPool(address owner, address palPool) external view returns(address[] memory);
function isBurned(uint256 tokenId) external view returns(bool);
function getApproved(uint256 tokenId) external view returns (address operator);
function isApprovedForAll(address owner, address operator) external view returns (bool);
function approve(address to, uint256 tokenId) external;
function setApprovalForAll(address operator, bool _approved) external;
function transferFrom(address from, address to, uint256 tokenId) external;
function safeTransferFrom(address from, address to, uint256 tokenId) external;
event NewBurnedLoanToken(address indexed to, uint256 indexed tokenId);
function name() public view returns(string);
function symbol() public view returns(string);
function minter() public view returns(address);
function totalSupply() public view returns(uint256);
function balanceOf(address owner) external view returns (uint256 balance);
function ownerOf(uint256 tokenId) external view returns (address owner);
function tokensOf(address owner) external view returns(uint256[] memory);